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

Imverse fisher transform CCI V2 indikatörünün matriks İQ ya eklemek istiyorum. Kodları verebilir misiniz?
Algoritmik Trading kategorisinde (87 puan) tarafından | 986 kez görüntülendi

1 cevap

1 beğenilme 0 beğenilmeme
En İyi Cevap
Arkadaşlar indikatör kodları aşağıdaki gibidir

indikatör adını IFTCCIV2 olarak yazınız.

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

{

//Ilk parametre indikatörün adı, sınıfın adıyla aynı olmalıdır.

//Ikinci parametre indikatörün Dataserisinin üzerine mi yeni pencereye mi ekleneceğini belirtir. Yeni pencere için ->IndicatorDrawingArea.NewWindow , Data Serisi için IndicatorDrawingArea.OnDataSeries

[IndicatorInformation("IFTCCIV2", IndicatorDrawingArea.NewWindow)]

//Indikatörün çizgilerinin isimleri

[IndicatorLineInformation(new []

{

"IFTCCIV2 (0)", "UstSeviye", "AltSeviye"

})]

public class IFTCCIV2 : MatriksIndicator

{

//Indicator opsiyon panelinde değerleri değiştirebildiğimiz parametreler. Int, Bool, Decimal ve Enum değerleri alabilir.Tüm değişken tiplerini DefaultValue ile tanımlarız.

 

[DefaultValue(100)]

public int UpLevel

{

get; set;

}

[DefaultValue(-100)]

public int DownLevel

{

get; set;

}

 

[DefaultValue(14)]

public int CciPeriod

{

get; set;

}

 

[DefaultValue(9)]

public int MovPeriod

{

get; set;

}

 

double IFISH;

decimal VALUE1, VALUE2;

MOV mov;

CCI cci;

 

//buraya kullanılıcak indicator tanımlamaları gelicek

public sealed override void OnInit()

{

mov = new MOV(MovPeriod, MovMethod.W);

cci = CCIIndicator(Symbol, SymbolPeriod, OHLCType.Close, CciPeriod);

}

// Close, High ve Low un ortalaması

private decimal GetTypicalPrice(int barIndex)

{

if (!Instrument.SymbolBarData.Close.ContainsKey(barIndex)) return 0;

return (Instrument.SymbolBarData.Close[barIndex] + Instrument.SymbolBarData.High[barIndex] + Instrument.SymbolBarData.Low[barIndex]) / 3;

}

 

/// <summary>

/// Seçilen sembolün bardata'ları güncellendikçe bu fonksiyon tetiklenir.

/// </summary>

/// <param name="currentBar">Güncellenen bardata'nın indexteki sırası</param>

/// <param name="inputValue">Seçilen OHLC tipine göre gelen bardata'nın o anki değeri</param>

/// <param name="barDateTime">Bardata'ya gelen güncelleme zamanı</param>

public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)

{

//

//VALUE1:= 0.1*(cci(5)/4);

//VALUE2:= Mov(VALUE1,9,w);

//IFISH:=(Exp(2*VALUE2)-1)/(Exp(2*VALUE2)+1);

//IFISH;

 

VALUE1 = 0.1m * (cci.CurrentValue / 4);

 

mov.Update(VALUE1, currentBar, barDateTime);

 

VALUE2 = mov.CurrentValue;

 

IFISH = (Math.Exp((double)(2 * VALUE2)) -1) / (Math.Exp((double)(2 * VALUE2)) + 1);

 

if (currentBar < Period)

{

SetLine(0, currentBar, 0);

SetLine(1, currentBar, 0.5m);

SetLine(2, currentBar, -0.5m);

return ;

}

 

SetLine(0, currentBar, (decimal) IFISH);

SetLine(1, currentBar, 0.5m);

SetLine(2, currentBar, -0.5m);

 

}

 

 

}

}
(87 puan) tarafından
tarafından seçilmiş
8,636 soru
8,590 cevap
4,821 yorum
19,790 kullanıcı