0 beğenilme 0 beğenilmeme
334 kez görüntülendi

Merhabalar, bu stratejiyi portföyümde örneğin long pozisyonunda olan bir enstrümanda çalıştırmak istediğimde al ile başla olduğu için pozisyonum long da olsa alım yapıyor.. Stratejiye Yön Kontrolü ekleyebilirmiyiz yani long pozisyonu olan enstrümanda çalışmaya başladığında long sinyalinde alım yapmayacak short sinyali geldiğinde short açacak, aynı şekilde short pozisyonu olan enstrümanda çalışmaya başladığında short sinyalinde alım yapmayacak long sinyali geldiğinde long açacak.. bununla ilgili sorulmuş bir soru var ancak denedim çalıştıramadım bi türlü...

Şimdiden teşekkürler..

 

 

 

using System; using System.Collections.Generic; using System.Linq; 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; namespace Matriks.Lean.Algotrader { public class SablonAcigaSatisVadeli1 : MatriksAlgo { [SymbolParameter("FGARAN")] public string Symbol; [Parameter(SymbolPeriod.Min5)] public SymbolPeriod SymbolPeriod; [Parameter(5)] public decimal BuyOrderQuantity; [Parameter(5)] public decimal SellOrderQuantity; [Parameter(40)] public int TOTTPeriod; [Parameter(1)] public decimal TOTTOpt; [Parameter(0.001d)] public decimal TwinOttCoef; [Parameter(MovMethod.Variable)] public MovMethod TottMovMethod; [Parameter(3)] public int KaldiracOrani; TOTT tott; public override void OnDataUpdate(BarDataEventArgs barData) { if (CrossAbove(tott.Mov, tott.OttUp)) { FX_Alis(); } if (CrossBelow(tott.Mov, tott.OttDown)) { FX_Satis(); } } public override void OnInit() { AddSymbol(Symbol, SymbolPeriod); tott = TOTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, TOTTPeriod, TOTTOpt, TwinOttCoef, TottMovMethod); // Gerekli WorkWithPermanentSignal(true); if (AcigaSatisYapilsin) { SendOrderSequential(true, Side.Buy); SendOrderSequentialForShort(true, Side.All); }else { SendOrderSequential(true, Side.Buy); } // #Gerekli // kaldıraç oranı SetLeverage(Symbol, KaldiracOrani); // kaldıraç tipi – true isolated, false cross SetLeverageType(Symbol, false); // Gerekli } [Parameter(false)] public bool AcigaSatisYapilsin; [Parameter(false)] public bool AksamSeansiniDahilEt; List<string> orderIDList = new List<string>(); public void FX_Alis() { string _orderID = string.Empty; ; decimal _quantity = 0; if (LastOrderSide.Obj != Side.Buy) { if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin) { _orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt); _quantity = BuyOrderQuantity; }else { if (LastOrderSideForShort.Obj == Side.All) { _orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt); _quantity = BuyOrderQuantity; }else { _orderID = SendMarketOrder(Symbol, BuyOrderQuantity * 2, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt); _quantity = BuyOrderQuantity * 2; } } if (_orderID != string.Empty && _quantity != 0) { orderIDList.Add(_orderID); Debug("Alış emri gönderildi.[ " + _quantity + " adet ]"); LastOrderSide.Obj = Side.Buy; LastOrderSideForShort.Obj = Side.Buy; } } } public void FX_Satis() { string _orderID = string.Empty; ; decimal _quantity = 0; if (LastOrderSide.Obj != Side.Sell) { if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin) { _orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt); _quantity = SellOrderQuantity; }else { if (LastOrderSideForShort.Obj == Side.All) { _orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt); _quantity = SellOrderQuantity; }else { _orderID = SendMarketOrder(Symbol, SellOrderQuantity * 2, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt); _quantity = SellOrderQuantity * 2; } } if (_orderID != string.Empty && _quantity != 0) { orderIDList.Add(_orderID); Debug("Satış emri gönderildi.[ " + _quantity + " adet ]"); LastOrderSide.Obj = Side.Sell; LastOrderSideForShort.Obj = Side.Sell; } } } public override void OnOrderUpdate(IOrder order) { if (order.OrdStatus.Obj == OrdStatus.Filled) { // Senntetik emirler tanımlanıyor // StopLoss(Symbol, SyntheticOrderPriceType.Percent, 1); // TakeProfit(Symbol, SyntheticOrderPriceType.Percent, 1); if (!orderIDList.Contains(order.CliOrdID) && AcigaSatisYapilsin) { LastOrderSideForShort.Obj = Side.All; Debug("Sentetik emir tetiklendi"); } } } // #Gerekli } }

 

Algoritmik Trading kategorisinde (24 puan) tarafından | 334 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba,

Yazılar iç içe girmiş okunaklı değil.

Strateji listesinde düzenle butonuna tıkladıktan sonra çıkan içeriği kopyalayıp gönderiniz ya da dosya (mtxiq uzantılı) olarak iqdestek@matriksdata.com adresine mail gönderebilirsiniz.

iyi çalışmalar.

 

(15,892 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.



8,636 soru
8,590 cevap
4,821 yorum
19,786 kullanıcı