merhaba, öncelikli olarak belirteyim bende sizin gibi yeni ve öğrenmeye çalışan bir kullanıcıyım. hazır üstatlar yokken çakma matriks iq destekçisi olarak devreye gireyim :))
yapmak istediğiniz şey sanırım son 3 barın da en yüksek değerlerinin Bollinger Üst bandının altında kaldığı yerleri tespit etmek. en azından ben öyle anladım. 3 gün için veya hangi periyodsa tek tek bakacağınıza, tek seferde son 3 günün en yükseğine bakın ve onu kıyaslayın. Daha zahmetsiz olur :)
Ref(close-1) vs böyle bir mevzu yok, varsa da ben bilmiyorum. matrikste kaldı onlar Ref(C,-1) falandı herhalde. Ben kodu bırakıyorum ekte. indikatör adını dstk2 yapın yoksa çalışmaz.
Eğer istediğiniz son 3 günün en yüksek kapanış değeri ise OHLCType.Close yapın. İndikatör Son 3 günün en yüksek High değeri BBand Up altındaysa 1 çalışır değilse 0 değerini çizdirir. Saygılarımla
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("dstk2", IndicatorDrawingArea.NewWindow)]
[IndicatorLineInformationAttribute(new []
{
"dstk2(0)"
})]
public class dstk2 : MatriksIndicator
{
[DefaultValue(5)]
public int Period
{
get; set;
}
public int res
{
get; set;
}
BOLLINGER bollinger;
public sealed override void OnInit()
{
bollinger = BollingerIndicator(Symbol, SymbolPeriod, OHLCType.Close, 20, 2, MovMethod.Simple);
}
public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
{
SetLine(currentBar,0);
var BarData = GetBarData();
decimal uli = bollinger.Bollingerup.CurrentValue;
decimal k =HighestHigh(BarData, OHLCType.High,3);
if ( currentBar> 0)
{
if(k<uli)
res=1;
else res=0;
SetLine(currentBar,res);
}
}
}
}
İlginiz için teşekkürler.
Alper Bey'e bir kaç not.
Lütfen, denemeler yapmadan ilerlemeyiniz. Acele etmeyiniz.
Bir de, bollinger üst bandın altında kalmış olma koşulu çok da anlamlı değil? Hemen hemen her yerde doğru çıkacaktır.
Ne oluşturmak istediğinizi bir daha düşünün lütfen.
egitim@matriksdata.com adresine görsellerle destekleyerek sorabilirsiniz.
İyi çalışmalar