Merhabalar,
İstediğiniz indikatörün kodlaması aşağıda bulunmaktadır.
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("MacdTillson", IndicatorDrawingArea.NewWindow)]
[IndicatorLineInformationAttribute(new []
{
"MACT (0,1,2,3)", "TRIT (0,1,2,3)"
})]
public class MacdTillson : MatriksIndicator
{
[DefaultValue(16)]
public int KisaPeriod
{
get; set;
}
[DefaultValue(0.7)]
public decimal VolumeFactor
{
get; set;
}
[DefaultValue(42)]
public int UzunPeriod
{
get; set;
}
[DefaultValue(5)]
public int TriggerPeriod
{
get; set;
}
TMOV tmov, tmov2, tmov3;
public sealed override void OnInit()
{
tmov = new TMOV(KisaPeriod, VolumeFactor);
tmov2 = new TMOV(UzunPeriod, VolumeFactor);
tmov3 = new TMOV(TriggerPeriod, VolumeFactor);
DrawHorizantal(0);
}
public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
{
var H = Instrument.SymbolBarData.High[currentBar];
var L = Instrument.SymbolBarData.Low[currentBar];
var C = Instrument.SymbolBarData.Close[currentBar];
var data = (H + L + 2 * C) / 4;
tmov.Update(data, currentBar, barDateTime);
var T12 = tmov.CurrentValue;
tmov2.Update(data, currentBar, barDateTime);
var T26 = tmov2.CurrentValue;
var Mact3 = T12 - T26;
tmov3.Update(Mact3, currentBar, barDateTime);
var Trit3 = tmov3.CurrentValue;
if (currentBar < UzunPeriod)
{
SetLine(0, currentBar, 0);
SetLine(1, currentBar, 0);
return ;
}
SetLine(0, currentBar, Mact3);
SetLine(1, currentBar, Trit3);
}
}
}
İyi çalışmalar.