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.

1

Ara periyodlar oluşturmak - strateji içinde n bar oluşturarak sonuç almak

Soruldu
Görüntülenme
1.029 görüntülenme
Durum
Cevap bekliyor

Merhaba,

Stratejilerde sunulan periyodlar dışında, periyodlara göre sonuç almak isteyebilirsiniz.

Kod içinde gerekli eklemeleri yaparak, N periyod oluşumuna göre sonuç almak mümkündür. 

Aşağıda örnek bir kod içinde, nasıl yapılabileceği gösterilmektedir. 

Kodun devamında, gerekli açıklamalar vardır. 

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
using Matriks.AI;
using Matriks.AI.AiParameters;
using Matriks.AI.Data;
using Matriks.Trader.Core.TraderModels;

namespace Matriks.Lean.Algotrader
{
            public class CustomPeriod : 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(5)]
                                   public int MovPeriod1;

                        [Parameter(MovMethod.S)]
                                   public MovMethod MovMethod1;

                        [Parameter(1)]
                                   public decimal OrderQuantity1;

                        [Parameter(1)]
                                   public decimal OrderQuantity2;

                        MOV mov;

                        int Period = 3;
                        PeriodType PeriodType= PeriodType.Minute;
                        
                        public override void OnInit()
                        {
                                   mov = MOVIndicator(Symbol1, new PeriodInfo(PeriodType, Period), OHLCType.Close, MovPeriod1, MovMethod1);
                                   AddSymbol(Symbol1, new PeriodInfo(PeriodType, Period));

                                   SendOrderSequential(true, Side.Buy);
                                   WorkWithPermanentSignal(true);

                        }

                        /// <summary>
                        /// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir. 
                        /// </summary>
                        /// <param name="barData">Bardata ve hesaplanan gerçekleşen işleme ait detaylar</param>
                        public override void OnDataUpdate(BarDataEventArgs barData)
                        {
                                   var barData1 = GetBarData();
                                   Debug(Ref(barData1,OHLCType.Close,1));
                                   Debug(mov.CurrentValue);
//                                 if (CrossAbove(mov, barData1, OHLCType.Close, 0))
//                                 {
//                                             SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy, includeAfterSession:false);
//                                 }
//                                 if (CrossAbove(mov, barData1, OHLCType.Close, 0))
//                                 {
//                                             SendMarketOrder(Symbol1, OrderQuantity2, OrderSide.Sell, includeAfterSession:false);
//                                 }

                        }
            }
}


Burada yeni bir periyod şu şekilde tanımlanmaktadır.

Bir periyod değişkeni (intPeriod) tanımlıyoruz. Period olarak dakikalık periyodu almışız. Tabii ki, farklı seçebilirdik.

Burada n*minute periyodu oluşturmuş oluyoruz.

mewperiod olarak, dakikalık periyod yanına period değişkenini yazıyoruz.

period 3 olarak tanımlanmış, bu da 3 dakikalık periyodu kullanılacak anlamına gelir. 

Hem sembol periyodu olarak, hem de indikatör periyodu olarak, newperiod kullandığımıza dikkat edelim. 

Hayırlı trade'ler dileriz. 

 

 

 

 

Paylaş
CevaplaBayrakladüzenlendi · ilhan69ilhan69Matriks Destek14.380

Yorumlar (2)

Henüz cevap yok

Cevabınız

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