0 beğenilme 0 beğenilmeme
121 kez görüntülendi
Merhaba, SendLimitOrder ile alış emri verdiğim bir stratejide, TrailingStopLoss çalışmadı, bunun sebebi ne olabilir.

kod böyle:

SendLimitOrder(Symbol1, al_sat_miktari, OrderSide.Buy, son_fiyat, includeAfterSession:false);

TrailingStopLoss(Symbol1, SyntheticOrderPriceType.Percent, 3, includeAfterSession:false);
Algoritmik Trading kategorisinde (20 puan) tarafından | 121 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba, sizler için bir örnek hazırladım. 

Lütfen bu örneği önce deneme hesabında çalıştırınız. 

Doğru çalıştığına emin olduktan sonra gerçek hesapta ufak miktarlarla test ediniz.

Doğru çalıştığına emin olmadan kullanmayınız.

Aşağıda ki linkten indirebilirsiniz.

https://destek.matriksdata.com/?qa=blob&qa_blobid=11470271315381105455

Kod örneği aşağıdadır.

İyi çalışmalar. Kolay gelsin.

 

using System;

using System.Collections.Generic;

using System.Linq;

using Matriks;

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 limit_emir_sentetik : MatriksAlgo

{

[SymbolParameter("THYAO")]

public string Symbol1;

 

[Parameter(SymbolPeriod.Min)]

public SymbolPeriod SymbolPeriod1;

 

[Parameter(3)]

public int MostPeriod1;

 

[Parameter(2)]

public decimal MostPercentage1;

 

[Parameter(MovMethod.E)]

public MovMethod MostMovMethod1;

 

[Parameter(1)]

public decimal adet;

 

[Parameter(3)]

public decimal iz_suren_stop;

 

MOST most;

 

public override void OnInit()

{

most = MOSTIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, MostPeriod1, MostPercentage1, MostMovMethod1);

 

SendOrderSequential(true, Side.Buy);

WorkWithPermanentSignal(true);

}

 

public override void OnDataUpdate(BarDataEventArgs barData)

{

var barData1 = GetBarData(Symbol1, SymbolPeriod1);

var son_fiyat = GetSelectedValueFromBarData(barData1, OHLCType.Close);

// " LastOrderSide.Obj != Side.Buy " Bir önceki işlem alış değilse demektir bu.

// " LastOrderSide.Obj != Side.Sell " Bir önceki işlem satış değilse demektir bu.

// Bu sayede koşul devamlı tetiklenmez ve sentetik emirleriniz düzgün çalışır

if (CrossAbove(most, most, 1, 0) && LastOrderSide.Obj != Side.Buy)

{

SendLimitOrder(Symbol1, adet, OrderSide.Buy, son_fiyat, includeAfterSession:false);

}

if (CrossBelow(most, most, 1, 0) & LastOrderSide.Obj != Side.Sell)

{

SendLimitOrder(Symbol1, adet, OrderSide.Sell, son_fiyat, includeAfterSession:false);

}

 

}

 

public override void OnOrderUpdate(IOrder order)

{

if (order.OrdStatus.Obj == OrdStatus.Filled)

{

if (order.Side.Obj == Side.Buy) // alış emri gerçekleştiyse.

{

TakeProfit(Symbol1, SyntheticOrderPriceType.Percent, iz_suren_stop, includeAfterSession:false);

StopLoss(Symbol1, SyntheticOrderPriceType.Percent, iz_suren_stop, includeAfterSession:false);

}

if (order.Side.Obj == Side.Sell) // satış emri gerçekleştiyse.

{

TakeProfit(Symbol1, SyntheticOrderPriceType.Percent, iz_suren_stop, includeAfterSession:false);

StopLoss(Symbol1, SyntheticOrderPriceType.Percent, iz_suren_stop, includeAfterSession:false);

}

}

}

}

}

 

(490 puan) tarafından
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. 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.



7,645 soru
7,642 cevap
4,448 yorum
11,097 kullanıcı