Merhaba.
Akşam seansında piyasa emirleri red edilir.
Kodun içindeki emir gönderim kısımlarında değişiklik yapmanız gerekir.
Aşağıdaki örnek akşam seansına kadar piyasa akşam seansından sonra tavan, tabandan emir göndermekte.
Strateji adının AksamSeansiDahil olmasına dikkat ediniz.
İyi çalışmalar
***STRATEJİLERİ TEST/DENEME ORTAMINDA SINAMADAN VE SİZİN İSTEDİĞİNİZ ŞEKİLDE ÇALIŞTIĞINA EMİN OLMADAN GERÇEK ORTAMDA HİÇBİR ZAMAN ÇALIŞTIRMAYINIZ ***
using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
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;
/*
Strateji gündüz seansında piyasa emir gönderirken,
Akşam seansında taban tavandan emir gönderiyor.
*/
namespace Matriks.Lean.Algotrader
{
public class AksamSeansiDahil : 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("F_XU0301020")]
public string Symbol;
[Parameter(SymbolPeriod.Min)]
public SymbolPeriod SymbolPeriod;
[Parameter(1)]
public decimal Adet;
// Zamanlama
TimeSpan baslangic;
TimeSpan bitis;
public decimal tavan, taban;
/// <summary>
/// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri,
/// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır.
/// </summary>
public override void OnInit()
{
AddSymbol(Symbol, SymbolPeriod);
AddSymbolMarketData(Symbol);
// Akşam seasının başlama saati
baslangic = new TimeSpan(19, 0, 0);
bitis = new TimeSpan(23, 00, 0);
SendOrderSequential(true);
WorkWithPermanentSignal(true);
}
public void FxAlis()
{
tavan = GetMarketData(Symbol, SymbolUpdateField.LimitUp);
SendLimitOrder(Symbol, Adet, OrderSide.Buy, tavan, includeAfterSession:true);
Debug("Tavan fiyattan alış emri gönderildi.");
}
public void FxSatis()
{
taban = GetMarketData(Symbol, SymbolUpdateField.LimitDown);
SendLimitOrder(Symbol, Adet, OrderSide.Sell, taban, includeAfterSession:true);
Debug("Taban fiyattan satış emri gönderildi.");
}
/// <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(BarDataCurrentValues barDataCurrentValues)
{
// bardata verileri çağırılıyor.
var barData = GetBarData();
// Aktif barın open ve close değerleri alınıyor.
var Open = barDataCurrentValues.LastUpdate.Open;
var Close = barDataCurrentValues.LastUpdate.Close;
// ref fonksiyonu ile 2 önceki close değeri alınıyor.
var ClosePrev2 = Ref(barData, OHLCType.Close, 2);
// OnDataUpdate() tetiklendiğindeki saat
TimeSpan sistemSaati = DateTime.Now.TimeOfDay;
tavan = GetMarketData(Symbol, SymbolUpdateField.LimitUp);
taban = GetMarketData(Symbol, SymbolUpdateField.LimitDown);
Debug("tavan: " + tavan + " taban: " + taban);
// Akşam seansına kadar piyasa emir gönder
if (sistemSaati<baslangic)
{
// Alış şartı - son barda kapanış açılıştan büyük ve kapanış 2 bar önceki kapanıştan büyük ise
if (Close>Open && Close>ClosePrev2)
{
SendMarketOrder(Symbol, Adet, OrderSide.Buy);
Debug("Alış emri gönderildi.");
}
// Satış şartı - son barda açılış kapanıştan büyük ve kapanış 2 bar önceki kapanıştan düşük ise
if (Close<Open && Close<ClosePrev2)
{
SendMarketOrder(Symbol, Adet, OrderSide.Sell);
Debug("Satış emri gönderildi.");
}
}else if (sistemSaati >= baslangic && sistemSaati <= bitis)
{
// Alış şartı - son barda kapanış açılıştan büyük ve kapanış 2 bar önceki kapanıştan büyük ise
if (Close>Open && Close>ClosePrev2)
{
FxAlis();
}
// Satış şartı - son barda açılış kapanıştan büyük ve kapanış 2 bar önceki kapanıştan düşük ise
if (Close<Open && Close<ClosePrev2)
{
FxSatis();
}
}
}
}
}