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.