Merhabalar,
Algoritma Sihirbazında kripto para seçimi yapıp sistem oluşturduğunuzda Kar Al ve Zarar Durdur emir tipleri görünmez.
Bizlerde bunun yerine herhangi bir BIST sembolü seçip bütün sistemi buna göre hazırlamanızı tavsiye ediyoruz.
Çünkü sonrasında (backtest yaparken ya da sistemi çalıştırırken) sembol ismini değiştirebiliyorsunuz.
Size Kar Al ve Zarar Durdur ekleyebileceğiniz yeri ve kodunuzun bu iki fonksiyon ile yazılmış halini aşağıya bırakıyorum, inceleyebilirsiniz.
Sisteminizde herhangi bir değişiklik yapmadım.
Yalnızca alış koşulunun altına Kar Al ve Zarar Durdur satırlarını ekledim.
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;
namespace Matriks.Lean.Algotrader
{
public class RSI_34_8 : MatriksAlgo
{
[SymbolParameter("BTC_USDT_BIN")]
public string Symbol;
[Parameter(SymbolPeriod.Min60)]
public SymbolPeriod SymbolPeriod;
[Parameter(0.005)]
public decimal BuyOrderQuantity;
[Parameter(0.005)]
public decimal SellOrderQuantity;
[Parameter(1.04)]
public decimal TakeProfitPercentage;
[Parameter(0.98)]
public decimal StopLossPercentage;
[Parameter(8)]
public int RSIPeriodS;
[Parameter(34)]
public int RSIPeriodL;
RSI rsil;
RSI rsis;
public override void OnInit()
{
AddSymbol(Symbol, SymbolPeriod);
rsil = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, RSIPeriodL);
rsis = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, RSIPeriodS);
WorkWithPermanentSignal(true);
SendOrderSequential(true);
}
public override void OnInitCompleted()
{
}
public override void OnDataUpdate(BarDataEventArgs barData)
{
if (CrossAbove(rsis, rsil) && LastOrderSide.Obj != Side.Buy)
{
SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
TakeProfit(Symbol, SyntheticOrderPriceType.Percent, TakeProfitPercentage);
StopLoss(Symbol, SyntheticOrderPriceType.Percent, StopLossPercentage);
}
}
public override void OnOrderUpdate(IOrder order)
{
if (order.OrdStatus.Obj == OrdStatus.Filled)
{
}
}
public override void OnStopped()
{
}
}
}
Birde bunlara ek olarak sentetik emir fonksiyonlarının doğru çalışabilmesi için alış koşulunuz içerisine yön kontrolü ekledim.
Bunun detayı içinse aşağıdaki linki lütfen inceleyiniz.
https://destek.matriksdata.com/?qa=12386/matriks-iq-kar-al-y%C3%BCzdelik
İyi çalışmalar.