0 beğenilme 0 beğenilmeme
245 kez görüntülendi
drawthis = MyTrend(Symbol, SymbolPeriod, new DateTime(2023, 5, 2, 17, 0, 0), 36.09m, new DateTime(2023, 7, 7, 16, 0, 0), 47.57m);

 

yukarıdaki ifadede bulunan trend bilgisini kodu değiştirmeden paramtere olarak nasıl tanımlayabiliriz. yapmak istediğim backtest yapmadan önce parametreleri belirlediğimiz ekrana trend bilgisini kopya yapıştır ile girmek ve sistemin bu trend ile çalışması.
Algoritmik Trading kategorisinde (193 puan) tarafından | 245 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba, aşağıdaki örneği inceleyebilirsiniz.

Fiyat trendin üstündeyse çalışacak bir strateji örneğidir.

Mutlaka önce deneme hesabında test ediniz.

Daha sonra gerçek hesapta ufak miktarlarla deneyiniz.

Doğru çalıştığına emin olmadan kullanmayınız.

Bir sorunuz olursa iqdestek@matriksdata.com adresine mail atabilirsiniz.

İyi çalışmalar. Kolay gelsin.

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks;
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 TrendStratejisi : MatriksAlgo
	{
		[SymbolParameter("EREGL")]
			public string Symbol;

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

		[Parameter(14)]
			public int AlphatrendPeriod1;

		[Parameter(1)]
			public decimal AlphatrendCoeff1;

		[Parameter(Momentum.MFI)]
			public Momentum AlphatrendMomentum1;

		[Parameter(1)]
			public decimal OrderQuantity1;

		[Parameter(1)]
			public decimal OrderQuantity2;

		AlphaTrend alphaTrend;
		ITrend trend;

		public override void OnInit()
		{
			trend = MyTrend(Symbol, SymbolPeriod, new DateTime(2021, 12, 15, 0, 0, 0), 31.5511908802194m, new DateTime(2023, 12, 20, 0, 0, 0), 31.3618670080073m);
			alphaTrend = AlphaTrendIndicator(Symbol, SymbolPeriod, OHLCType.Close, AlphatrendPeriod1, AlphatrendCoeff1, AlphatrendMomentum1);

			SendOrderSequential(true, Side.Buy);
			WorkWithPermanentSignal(true);

			DrawTrend(trend);
		}

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			var BardataModel = GetBarData(Symbol, SymbolPeriod);

			if (barData.BarData.Close > trend.CurrentValue) // Fiyat trendin üstündeyse
			{
				if (CrossAbove(alphaTrend, alphaTrend, 1, 0))
				{
					SendMarketOrder(Symbol, OrderQuantity1, OrderSide.Buy, includeAfterSession:false);
					Debug("Alış emri gönderildi");
				}
				if (CrossBelow(alphaTrend, alphaTrend, 1, 0))
				{
					SendMarketOrder(Symbol, OrderQuantity2, OrderSide.Sell, includeAfterSession:false);
					Debug("Satış emri gönderildi");
				}
			}
		}
	}
}

 

(490 puan) tarafından
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.



7,647 soru
7,642 cevap
4,448 yorum
11,109 kullanıcı