IQAlgo menüsünden “Yeni İndikatör Tanımla” menü adımıyla kendi indikatörünüzü oluşturabilme imkanı eklendi. Bu pencerede sizlere örnek olması açısından farklı indikatör şablonları eklenmiştir. Bu örnekler üzerinden ilerleyerek daha kolay şekilde indikatör tanımlamaları yapabilirsiniz. Oluşturduğunuz indikatörün kodunu derlediğinizde, editör üzerinde önizleme penceresi açılacaktır. Bu pencereden indikatörünüzü Günlük periyotta izleyerek yazım işlemini tamamlamadan önce kontrol edebilirsiniz. Editör üzerindeki “Grafikte Göster” butonu ile indikatörünüzü grafik üzerine ekleyebilirsiniz.
Yeni indikator'e tikladiktan sonra Indikator ismi olarak KRI girip derleyiniz.
using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using Matriks.Data.Identifiers;
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;
namespace Matriks.Lean.Algotrader
{
[IndicatorInformationAttribute("KRI", IndicatorDrawingArea.NewWindow)]
[IndicatorLineInformationAttribute(new []
{
"KRI(0)"
})]
public class KRI : MatriksIndicator
{
[DefaultValue(14)]
public int Period
{
get; set;
}
MOV mov;
public sealed override void OnInit()
{
mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period, MovMethod.Simple);
}
public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
{
var close = Instrument.SymbolBarData.Close[currentBar];
if (currentBar < Period)
{
SetLine(0, currentBar, 0);
return ;
}
var result = (close - mov.CurrentValue)*100 / mov.CurrentValue;
SetLine(currentBar, result);
}
}
}