0 beğenilme 0 beğenilmeme
683 kez görüntülendi
Merhaba, Anıl Özekşi'nin sistemlerinde kullanılan ve SUM fonksiyonunu içeren aşağıdaki yamayı İQ için yazabilir misiniz?

SUM(H>OTT(HHV(H,opt1),2,opt2),opt3)=-opt4

Yama aslında HOTT indikatörünün aşağıdaki koşulunun üst üste belirli bir sayıda (opt4 kez) gerçekleşmesi sonucu işlem izni veren bir yapı.

HottLott.Value[0][HottLott.CurrentIndex] < OHLCType.High
Algoritmik Trading kategorisinde (298 puan) tarafından | 683 kez görüntülendi

1 cevap

1 beğenilme 0 beğenilmeme
En İyi Cevap

Merhabalar,

Aşağıdaki gibi yapı kullanabilirsiniz. 

namespace Matriks.Lean.Algotrader
{
    public class test : 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 Symbol1;
 
                        [Parameter(SymbolPeriod.Day)]
                                   public SymbolPeriod SymbolPeriod1;
                        [Parameter(20)]
                                   public int HighesthighPeriod1;
                        [Parameter(2)]
                                   public int OttPeriod1;
                        [Parameter(0.5)]
                                   public decimal OttOpt1;
 
                        [Parameter(MovMethod.VAR)]
                                   public MovMethod OttMovMethod1;
                        [Parameter(true)]
                                   public bool OttSupportLine1;
 
                        [Parameter(1)]
                                   public decimal OrderQuantity1;
                        [Parameter(3)]
                                   public int barsayisi;
 
                        public int sayac;
                        HighestHigh highestHigh;
                        OTT ott;
 
                        public override void OnInit()
                        {
                                   sayac = 0;
                                   highestHigh = HighestHighIndicator(Symbol1, SymbolPeriod1, HighesthighPeriod1);
                                   ott = OTTIndicator(highestHigh, OttPeriod1, OttOpt1, OttMovMethod1, OttSupportLine1);
 
                                   SendOrderSequential(true, Side.Buy);
                                   WorkWithPermanentSignal(true);
                        
                        }
 
                                   List<int> sumList = new List<int>();
 
                        public override void OnDataUpdate(BarDataEventArgs barData)
                        {
                             var barData1 = GetBarData(Symbol1, SymbolPeriod1);
                             var ohlcData1 = GetSelectedValueFromBarData(barData1, OHLCType.High);
 
 
                                   var tut = ohlcData1 > ott.Value[0][ott.CurrentIndex] ? 1:0;
                                   sumList.Add(tut);
                                   var sayac = sumList.Skip(sumList.Count - barsayisi).Sum();
 
                                   if (ohlcData1 > ott.Value[0][ott.CurrentIndex]
                                               && sayac == barsayisi)
                                   {
                                               SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy, includeAfterSession:false);
                                   }
 
                        }
            
                        public override void OnOrderUpdate(IOrder order)
                        {
                                   if (order.OrdStatus.Obj == OrdStatus.Filled && LastOrderSide.Obj != Side.Sell)
                                   {
                                               sayac = 0;
                                               Debug("alış sayacları sıfırlandı");
 
                                   }
                                   
                        }

İyi çalışmalar.

(11,059 puan) tarafından
tarafından seçilmiş
8,636 soru
8,590 cevap
4,821 yorum
19,792 kullanıcı