0 beğenilme 0 beğenilmeme
346 kez görüntülendi
Merhabalar. Videoları adım adım izleyerek artık algoritma sihirbazında rahatça strateji oluşturabiliyorum. Ancak bir türlü yazdığım stratejiye LONG/SHORT ekleyip o şekilde backtest yapamıyorum. (Demo kullanıyorum)  Burada verilen cevapları da uygulamaya çalıştım, sihirbaz içinde denemeler yaptım. Mümkünse sihirbaz kullanımıyla, değilse script düzenlemede en basit şekilde açıklayabilir misiniz?
Algoritmik Trading kategorisinde (12 puan) tarafından | 346 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba,

Algoritma sihirbazında sembol olarak Bist ya da Viop sembollerinden birini seçiniz Örnek olarak GARAN'ı seçiniz.

Stratejinize uygun al koşulu oluşturup emir ekleme kısmında sırası ile Açığa Satış Kapama ve Alış ekleyip

satış koşulunuza da sırası ile Satış ve Açığa Satış ekleyip strateji oluşturabilirsiniz.

bu stratejiyi kripto sembollerinde de kullanabilirsiniz.

 

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
using Matriks.AI;
using Matriks.AI.AiParameters;
using Matriks.AI.Data;
using Matriks.Trader.Core.TraderModels;

namespace Matriks.Lean.Algotrader
{
	public class deneme : MatriksAlgo
	{
		// Strateji çalıştırılırken kullanacağımız parametreler. Eğer sembolle ilgili bir parametre ise,
		// "SymbolParameter" ile, değilse "Parameter" ile tanımlama yaparız. Parantez içindeki değerler default değerleridir.


		[SymbolParameter("BTC_USDT_FBIN")]
			public string Symbol1;


		[Parameter(SymbolPeriod.Day)]
			public SymbolPeriod SymbolPeriod1;


		[Parameter(3)]
			public int MostPeriod1;

		[Parameter(2)]
			public decimal MostPercentage1;

		[Parameter(MovMethod.E)]
			public MovMethod MostMovMethod1;

		[Parameter(1)]
			public decimal OrderQuantity1;

		[Parameter(1)]
			public decimal OrderQuantity2;

		[Parameter(1)]
			public decimal OrderQuantity3;

		[Parameter(1)]
			public decimal OrderQuantity4;

		MOST most;



		public override void OnInit()
		{

			most = MOSTIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, MostPeriod1, MostPercentage1, MostMovMethod1);


			SendOrderSequential(true, Side.Buy);
			SendOrderSequentialForShort(true, Side.Sell);

			WorkWithPermanentSignal(true);
		}

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			if (CrossAbove(most, most, 1, 0))
			{
				SendMarketCloseShortOrder(Symbol1, OrderQuantity2);
				SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy, includeAfterSession:false);				
			}
			
			if (CrossBelow(most, most, 1, 0))
			{
				SendMarketOrder(Symbol1, OrderQuantity3, OrderSide.Sell, includeAfterSession:false);
				SendShortSaleMarketOrder(Symbol1, OrderQuantity4);
			}

		}		
	}
}

 

(15,682 puan) tarafından
0 0
Çok teşekkür ederim, dediğiniz şekilde yaptım ve oldu.
7,634 soru
7,639 cevap
4,448 yorum
10,826 kullanıcı