0 beğenilme 0 beğenilmeme
242 kez görüntülendi
Merhabalar, Kriptolar icin yazdıgım stratejide aynı anda 2 farklı periyod kullanak istiyorum. Şöyleki,

-karar koşullarım sembolün 4 saatlik barları üzerinde çalışarak karar alacak ve (T-1) barın kapanışına göre kararı alıyor olacağım. Alımı ise bir sonraki aşamada (1 dakikalık bar) 4 saatlik barın kapanış fiyatının üzerine geçince yapacağım.

 

Yardım dokumanlarınızda yer alan sorulardan "Stratejiyi 2 farklı periyotta çalıştırabilir miyim?" cevabına bakarak implement ettiğim kod aşağıdaki hatayı alıyor. Bu kodu calistirabiliyor olursam, aynı sembol icin farklı periyodlarına ait kurallar yazabilecegimi dusundum.

Strateji calistirildi
9/18/2020 10:00:00 AM : System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Matriks.Lean.Algotrader.AlgoBase.MatriksAlgo.GetBarData(String symbol, SymbolPeriod symbolPeriod) in E:\BuildAgentRelease\work\cb8bc45b3237af97\matriks-lean-algotrader\src\AlgoBase\SyntheticAlgoOrder.cs:line 29
   at Matriks.Lean.Algotrader.V_TEST2.OnDataUpdate(BarDataEventArgs barData)
   at Matriks.Lean.Algotrader.AlgoBase.MatriksAlgo.UpdateBarData(BarDataEventArgs e) in E:\BuildAgentRelease\work\cb8bc45b3237af97\matriks-lean-algotrader\src\MatriksIndicator.cs:line 321

 

Yazdığım kodun ilgili kısmını ekliyorum

namespace Matriks.Lean.Algotrader

{

public class V_TEST2 : MatriksAlgo

{

[SymbolParameter("GARAN")]

public string Symbol1;

 

 

[Parameter(SymbolPeriod.Min240)]

public SymbolPeriod SymbolPeriod1;

 

 

[Parameter(50)]

public int MovPeriod1;

 

[Parameter(MovMethod.S)]

public MovMethod MovMethod1;

 

[Parameter(1)]

public decimal OrderQuantity1;

 

MOV mov;

 

public override void OnInit()

{

mov = MOVIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, MovPeriod1, MovMethod1);

 

SendOrderSequential(true, Side.Buy);

WorkWithPermanentSignal(true);

 

}

 

 

public override void OnDataUpdate(BarDataEventArgs barData)

{

var barData1 = GetBarData(Symbol1, SymbolPeriod1);

int symbolid_0 = GetSymbolId(Symbol1);

var barDataModel_0 = GetBarData(Symbol1, SymbolPeriod.Min5);

var barDataModel_1 = GetBarData(Symbol1, SymbolPeriod.Min10);

if (symbolid_0 == barData.SymbolId && barDataModel_0.PeriodInfo == barData.PeriodInfo)

{

decimal Close_0 = barDataModel_0.Close[barData.BarDataIndex-1];

}

if (CrossAbove(mov, barData1, OHLCType.Close, 0))

{

SendPLMOrder(Symbol1, OrderQuantity1, OrderSide.Buy);

}

 

}

 

}

}
Algoritmik Trading kategorisinde (16 puan) tarafından | 242 kez görüntülendi

Bu soruya cevap vermek için lütfen giriş yapınız veya kayıt olunuz.

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,503 soru
7,507 cevap
4,403 yorum
8,665 kullanıcı