Merhabalar,
Aşağıdaki gibi yapı kullanabilirsiniz.
namespace Matriks.Lean.Algotrader
{
public class test : 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("GARAN")]
public string Symbol1;
[Parameter(SymbolPeriod.Day)]
public SymbolPeriod SymbolPeriod1;
[Parameter(20)]
public int HighesthighPeriod1;
[Parameter(2)]
public int OttPeriod1;
[Parameter(0.5)]
public decimal OttOpt1;
[Parameter(MovMethod.VAR)]
public MovMethod OttMovMethod1;
[Parameter(true)]
public bool OttSupportLine1;
[Parameter(1)]
public decimal OrderQuantity1;
[Parameter(3)]
public int barsayisi;
public int sayac;
HighestHigh highestHigh;
OTT ott;
public override void OnInit()
{
sayac = 0;
highestHigh = HighestHighIndicator(Symbol1, SymbolPeriod1, HighesthighPeriod1);
ott = OTTIndicator(highestHigh, OttPeriod1, OttOpt1, OttMovMethod1, OttSupportLine1);
SendOrderSequential(true, Side.Buy);
WorkWithPermanentSignal(true);
}
List<int> sumList = new List<int>();
public override void OnDataUpdate(BarDataEventArgs barData)
{
var barData1 = GetBarData(Symbol1, SymbolPeriod1);
var ohlcData1 = GetSelectedValueFromBarData(barData1, OHLCType.High);
var tut = ohlcData1 > ott.Value[0][ott.CurrentIndex] ? 1:0;
sumList.Add(tut);
var sayac = sumList.Skip(sumList.Count - barsayisi).Sum();
if (ohlcData1 > ott.Value[0][ott.CurrentIndex]
&& sayac == barsayisi)
{
SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy, includeAfterSession:false);
}
}
public override void OnOrderUpdate(IOrder order)
{
if (order.OrdStatus.Obj == OrdStatus.Filled && LastOrderSide.Obj != Side.Sell)
{
sayac = 0;
Debug("alış sayacları sıfırlandı");
}
}
İyi çalışmalar.