Merhaba,
Ott indikatörünü başka indikatörden referans alarak oluştururken SupportLine çizgisinin eklenemediğini gördük. Bu sorun için iş açtık. En kısa zamanda çözülecektir.
Altta paylaştığım kodda ise örnek olması açısından Most indikatörünü, Rsi indikatöründen referans alarak oluşturduk. Genel olarak başka indikatörden referans ile oluşturulan indikatörler kodda paylaştığım şekilde oluşturulur.
Ott indikatöründeki sorunu giderdikten sonra aşağıdaki gibi kolayca oluşturabilirsiniz.
//Hata giderildikten sonra bu şekilde kullanılabilir.
rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, 14);
ott = OTTIndicator(rsi, 2, 1.4m, MovMethod.VAR, true);
İyi çalışmalar
Başka indikatörden referans alarak oluşturulan indikatör için örnek strateji. Kodu kopyaladığınız strateji ile paylaştığım stratejinin adlarının aynı olmasına dikkat ediniz.
using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
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;
namespace Matriks.Lean.Algotrader
{
public class RsiMost : 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 Symbol;
[Parameter(SymbolPeriod.Day)]
public SymbolPeriod SymbolPeriod;
[Parameter(3)]
public int Period;
[Parameter(2)]
public decimal Percentage;
[Parameter(MovMethod.E)]
public MovMethod Method;
RSI rsi;
MOST most;
/// <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()
{
rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, 14);
most = MOSTIndicator(rsi, Period, Percentage, Method);
AddSymbol(Symbol, SymbolPeriod);
//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>
/// 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)
{
Debug("Most line : " + Ref(most, 0));
Debug("ExMov line : " + Ref(most.ExMOV, 0));
}
}
}