Matriks Destek ve Yardım Platformu

Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. 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.

0

stratejide TrailingStopLoss çalışmadı

Soruldu
Görüntülenme
435 görüntülenme
Durum
Cevaplandı
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);
Paylaş

1 Cevap

0

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.

/dosya/cbpbo46dem9eptlo6ah0rwwr6/limit_emir_sentetik.mtxiq

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);

}

}

}

}

}

 

BağlantıBayraklamuratkircaModeratör517

Cevabınız

Cevap yazmak için giriş yapın.Giriş yapKayıt ol