0 beğenilme 0 beğenilmeme
470 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 | 470 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,892 puan) tarafından
0 0
Çok teşekkür ederim, dediğiniz şekilde yaptım ve oldu.
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.



8,636 soru
8,590 cevap
4,821 yorum
19,792 kullanıcı