Merhaba, aşağıda sizler için bir örnek hazırladım.
Bu örneği deneme hesabında uzun bir müddet test edin.
Gerçek hesapta da test ediniz, doğru çalıştığına emin olana kadar.
Doğru çalıştığına emin olamadan lütfen gerçek hesapta kullanmayınız.
Bir sorunuz olursa iqdestek@matriksdata.com mail adresine sorularınızı iletebilirsiniz.
using System;
using System.Collections.Generic;
using System.Linq;
using Matriks;
using Matriks.Data.Symbol;
using Matriks.Data.Tick;
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;
using Matriks.Enumeration;
using Matriks.IntermediaryInstitutionAnalysis.Enums;
namespace Matriks.Lean.Algotrader
{
public class sdf : MatriksAlgo
{
[SymbolParameter("THYAO")]
public string Symbol1;
[Parameter(SymbolPeriod.Min15)]
public SymbolPeriod SymbolPeriod1;
[Parameter(Side.Buy)]
public Side orderSide;
[Parameter(22)]
public int EmaPeriod1;
[Parameter(72)]
public int EmaPeriod2;
[Parameter(1)]
public decimal OrderQuantity1;
[Parameter(1)]
public decimal izsurenstopSeviyesi;
[Parameter(1)]
public decimal OrderQuantity3;
EMA ema;
EMA ema2;
public override void OnInit()
{
ema = EMAIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, EmaPeriod1);
ema2 = EMAIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, EmaPeriod2);
SendOrderSequential(true, orderSide);
WorkWithPermanentSignal(true);
}
public override void OnDataUpdate(BarDataEventArgs barData)
{
var barData1 = GetBarData(Symbol1, SymbolPeriod1);
var ohlcData1 = GetSelectedValueFromBarData(barData1, OHLCType.Close);
if (CrossAbove(ema, ema2, 0, 0))
{
SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy, includeAfterSession:false);
TakeProfit(Symbol1,SyntheticOrderPriceType.Percent,izsurenstopSeviyesi,false);
}
if (CrossBelow(ema, ema2, 0, 0))
{
SendMarketOrder(Symbol1, OrderQuantity3, OrderSide.Sell, includeAfterSession:false);
}
}
public override void OnSyntheticOrderTriggered(SyntheticAlgoOrder sOrder){
if(!sOrder.EnableOrderSending){
if(sOrder.SyntheticAlgoOrderType==SyntheticAlgoOrderType.TakeProfit){
TrailingStopLoss(Symbol1,SyntheticOrderPriceType.Percent,izsurenstopSeviyesi,true);
}
}
}
}
}