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

Merhaba,

Kullanıcı stratejisi olarak aşağıdaki kodu eklediğimde, kod derleniyor ve backtest yapabiliyorum. Fakat backtest optimizasyonu yapmak istediğimde "Optimizasyon sırasında bir hata oluştu :System.AggregateException..." hatası alıyorum. 

SetIndicatorParameter fonksiyonunda parametreleri değişken değil direkt sayı olarak girsem de aynı hatayı alıyorum. 

 

namespace Matriks.Lean.Algotrader

{

public class FtIfisch : 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_BIN")]

public string Symbol;

 

[Parameter(SymbolPeriod.Min240)]

public SymbolPeriod SymbolPeriod;

 

[Parameter(10)]

public decimal Quantity;

 

[Parameter(10)]

public int Period;

 

[Parameter(10)]

public int Smoothing;

 

MatriksIndicator IFTRSIKripex;

 

 

 

/// <summary>

/// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri,

/// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır. 

/// </summary>

public override void OnInit()

{

IFTRSIKripex = new IFTRSIKripex();

IFTRSIKripex.SetIndicatorParameters("MovPeriod",Period);

IFTRSIKripex.SetIndicatorParameters("RsiPeriod",Smoothing);

 

RegisterUserIndicator(IFTRSIKripex,Symbol, SymbolPeriod, OHLCType.Close,5);

 

AddSymbol(Symbol, SymbolPeriod);

 

WorkWithPermanentSignal(true);

 

//Eger backtestte emri bir al bir sat seklinde gonderilmesi isteniyor bu true set edilir. 

//Alttaki satırı silerek veya false geçerek emirlerin sirayla gönderilmesini engelleyebilirsiniz. 

SendOrderSequential(true);

}

 

/// <summary>

/// Init islemleri tamamlaninca, bardatalar kullanmaya hazir hale gelince bu fonksiyon tetiklenir. Data uzerinde bir defa yapilacak islemler icin kullanilir

/// </summary>

public override void OnInitComplated()

{

 

}

 

/// <summary>

/// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir. 

/// </summary>

/// <param name="barData">Bardata ve hesaplanan gerçekleşen işleme ait detaylar</param>

public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)

{

 

var BarData = GetBarData();

 

 

if (CrossAbove(IFTRSIKripex, -0.5m))

{

Debug(barDataCurrentValues.LastUpdate.LastTickTime.ToLongTimeString() + " tarihinde Alış emri verildi.");

SendMarketOrder(Symbol, Quantity, OrderSide.Buy);

Debug("Close : " + Ref(BarData, OHLCType.Close, 0));

Debug("IFISH : " + Ref(IFTRSIKripex, 0));

}

 

if (CrossBelow(IFTRSIKripex, 0.5m))

{

Debug(barDataCurrentValues.LastUpdate.LastTickTime.ToLongTimeString() + " tarihinde Satış emri verildi.");

SendMarketOrder(Symbol, Quantity, OrderSide.Sell);

Debug("Close : " + Ref(BarData, OHLCType.Close, 0));

Debug("IFISH : " + Ref(IFTRSIKripex, 0));

}

 

}

 

/// <summary>

/// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir.

/// </summary>

/// <param name="barData">Emrin son durumu</param>

public override void OnOrderUpdate(IOrder order)

{

if (order.OrdStatus.Obj == OrdStatus.Filled)

{

 

}

}

}

}

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

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

7,988 soru
7,961 cevap
4,543 yorum
13,285 kullanıcı