0 beğenilme 0 beğenilmeme
138 kez görüntülendi

Merhaba,

Aşağıdaki şekilde test amaçlı yazdığımı bir kod mevcut. Backtest optimizasyonunda indikatörün farklı zaman dilimlerinden değerlerini kullanmak istiyorum yalnız sadece Gün periyodunda backtest gerçekleşiyor. Diğer zaman dilimlerinin herhangi birine sıra geldiğinde optimizasyon sonlanıyor. Yorumlarınızı rica ederim;

 

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
using Matriks.Data.Tick;
using Matriks.Enumeration;
using Matriks.IntermediaryInstitutionAnalysis.Enums;
using Newtonsoft.Json;

namespace Matriks.Lean.Algotrader
{

	public class Strateji1 : MatriksAlgo
	{
		[SymbolParameter("GARAN")]
		public string Symbol;
		
		[Parameter(SymbolPeriod.Day)]
		public SymbolPeriod SymbolPeriod;
		
		[Parameter(1)]
		public decimal BuyOrderQuantity;
		
		[Parameter(SymbolPeriod.Day)]
		public SymbolPeriod ATTimePeriod;

		[Parameter(14)]
		public int ATPeriod;

		[Parameter(1)]
		public decimal ATCoeff;
		
		public bool IsATActive
		{
			get; set;
		}

		public override void OnInit()
		{
			
			alphaTrend = AlphaTrendIndicator(Symbol, ATTimePeriod, OHLCType.Close, ATPeriod, ATCoeff, Momentum.MFI);
			IsATActive = false;
			
			AddSymbol(Symbol, SymbolPeriod);

			WorkWithPermanentSignal(true);
		}
		
		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			IsATActive = CrossAbove(alphaTrend, alphaTrend, 1, 0) ? true: IsATActive;
			IsATActive = CrossBelow(alphaTrend, alphaTrend, 1, 0) ? false: IsATActive;
			
			if(IsATActive)
			{
				//Code...
			}
			else
			{
				//Code...
			}
		}

	}
}

 

 

 

Algoritmik Trading kategorisinde (34 puan) tarafından | 138 kez görüntülendi

1 cevap

0 beğenilme 1 beğenilmeme

Merhabalar,
Aşağıdaki kod bloklarını ekleyip test edebilirsiniz.

iyi çalışmalar dileriz.

AlphaTrend alphaTrend;

if (CrossAbove(alphaTrend, alphaTrend, 1, 0))
{
	SendMarketOrder(Symbol, 1, OrderSide.Buy);
}
if (CrossBelow(alphaTrend, alphaTrend, 1, 0))
{
	SendMarketOrder(Symbol, 1, OrderSide.Sell);
}

 

(4,955 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.



9,430 soru
9,385 cevap
5,096 yorum
37,539 kullanıcı