Matriks Destek ve Yardım Platformu

Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.

0

SUM yamasının İQ'da yazılması

Soruldu
Görüntülenme
955 görüntülenme
Durum
Çözüldü
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
Paylaş

1 Cevap

1

Kabul edilen 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.

BağlantıBayrakladüzenlendi · PythiusasiyangMatriks Destek11.113

Cevabınız

Cevap yazmak için giriş yapın.Giriş yapKayıt ol