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

stratejiye stop ekleme

Soruldu
Görüntülenme
649 görüntülenme
Durum
Cevaplandı
Selamlar,

aşağıdaki stratejiye stoploss ekleyebilirmisiniz.

 

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;

using Matriks.AI;

using Matriks.AI.AiParameters;

using Matriks.AI.Data;

using Matriks.Trader.Core.TraderModels;

 

namespace Matriks.Lean.Algotrader

{

public class SOTT2 : MatriksAlgo

{

// Strateji çalıştırılırken kullanacağımız parametreler. Eğer sembolle ilgili bir parametre ise,

// "SymbolParameter" ile, değilse "Parameter" ile tanımlama yaparız. Parantez içindeki değerler default değerleridir.

 

 

[SymbolParameter("GARAN")]

public string Symbol;

 

 

[Parameter(SymbolPeriod.Day)]

public SymbolPeriod SymbolPeriod;

 

 

[Parameter(500)]

public int PeriodK;

 

[Parameter(200)]

public int PeriodSlowK;

 

[Parameter(MovMethod.VAR)]

public MovMethod StosKMethod;

 

[Parameter(2)]

public int OttPeriod;

 

[Parameter(0.5)]

public decimal OttOpt;

 

[Parameter(MovMethod.VAR)]

public MovMethod OttMethod;

 

[Parameter(1)]

public decimal BuyOrderQuantity;

 

[Parameter(1)]

public decimal SellOrderQuantity;

 

MatriksIndicator SOTT_IQ;

 

public override void OnInit()

{

AddSymbol(Symbol, SymbolPeriod);

SOTT_IQ = new SOTT_IQ();

 

SOTT_IQ.SetIndicatorParameters("PeriodK", PeriodK);

SOTT_IQ.SetIndicatorParameters("PeriodSlowK", PeriodSlowK);

SOTT_IQ.SetIndicatorParameters("StosKMethod", StosKMethod);

SOTT_IQ.SetIndicatorParameters("OttPeriod", OttPeriod);

SOTT_IQ.SetIndicatorParameters("OttOpt", OttOpt);

SOTT_IQ.SetIndicatorParameters("OttMethod", OttMethod);

RegisterUserIndicator(SOTT_IQ, Symbol, SymbolPeriod, OHLCType.Close, 5);

 

 

// Gerekli

WorkWithPermanentSignal(true);

 

if (AcigaSatisYapilsin)

{

SendOrderSequential(true, Side.All);

SendOrderSequentialForShort(true, Side.All);

}else

{

SendOrderSequential(true, Side.Buy);

}

// #Gerekli

}

 

// Gerekli

[Parameter(true)]

public bool AcigaSatisYapilsin;

 

[Parameter(false)]

public bool AksamSeansiniDahilEt;

 

List<string> orderIDList = new List<string>();

 

string orderID;

 

public override void OnInitComplated()

{

FX_PiyasaTipi();

}

 

public void FX_Alis()

{

if (LastOrderSide.Obj != Side.Buy)

{

if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin)

{

orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

Debug("Alış emri gönderildi.[ " + BuyOrderQuantity + " adet ]");

}else

{

if (piyasaTipleri == PiyasaTipleri.BISTPP)

{

// Açık pozisyonu kapat

orderID = SendMarketCloseShortOrder(Symbol, BuyOrderQuantity);

orderIDList.Add(orderID);

Debug("Açık pozisyonlar kapatıldı.[ " + BuyOrderQuantity + " adet ]");

 

// Al

orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

Debug("Alış emri gönderildi.[ " + BuyOrderQuantity + " adet ]");

}else

{

// pozsiyon kapat ve al

orderID = SendMarketOrder(Symbol, BuyOrderQuantity * 2, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

Debug("Alış emri gönderildi.[ " + (BuyOrderQuantity * 2) + " adet ]");

}

}

LastOrderSide.Obj = Side.Buy;

}

}

 

public void FX_Satis()

{

if (LastOrderSide.Obj != Side.Sell)

{

if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin)

{

if (piyasaTipleri == PiyasaTipleri.BISTPP)

{

if (AcigaSatisYapilsin)

{

orderID = SendShortSaleMarketOrder(Symbol, SellOrderQuantity);

orderIDList.Add(orderID);

Debug("Açığa satış yapıldı.[ " + (SellOrderQuantity) + " adet ]");

}else

{

orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

Debug("Satış emri gönderildi.[ " + (SellOrderQuantity) + " adet ]");

}

}else

{

orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

Debug("Satış emri gönderildi.[ " + (SellOrderQuantity) + " adet ]");

}

 

}else

{

if (piyasaTipleri == PiyasaTipleri.BISTPP)

{

orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

Debug("Satış emri gönderildi.[ " + (SellOrderQuantity) + " adet ]");

 

orderID = SendShortSaleMarketOrder(Symbol, SellOrderQuantity);

orderIDList.Add(orderID);

Debug("Açığa satış yapıldı.[ " + (SellOrderQuantity) + " adet ]");

}else

{

orderID = SendMarketOrder(Symbol, SellOrderQuantity * 2, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

Debug("Satış emri gönderildi.[ " + (SellOrderQuantity * 2) + " adet ]");

}

}

LastOrderSide.Obj = Side.Sell;

}

}

 

[Output]

public string Sembol1 = "";

 

[Output]

public string Sembol2 = "";

 

enum PiyasaTipleri

{

BISTPP,

BISTVIOP,

KRIPTOBINANCE,

KRIPTOBINANCEFUTURE,

KRIPTOBITMEX,

KRIPTOBTCTURK

}

 

PiyasaTipleri piyasaTipleri = PiyasaTipleri.BISTPP;

 

public void FX_PiyasaTipi()

{

Sembol1 = Symbol;

Sembol2 = Symbol;

 

var SymbolDetail = GetSymbolDetail(Symbol);

 

if (SymbolDetail.ExchangeDetail.ExchangeCode == PiyasaTipleri.BISTPP.ToString())

{

piyasaTipleri = PiyasaTipleri.BISTPP;

}else if (SymbolDetail.ExchangeDetail.ExchangeCode == PiyasaTipleri.BISTVIOP.ToString())

{

piyasaTipleri = PiyasaTipleri.BISTVIOP;

}else if (SymbolDetail.ExchangeDetail.ExchangeCode == "")

{

Sembol1 = Symbol.Split('_')[0];

Sembol2 = Symbol.Split('_')[1];

 

var _split = Symbol.Split('_');

 

if (_split.Count() == 3)

{

if (Symbol.Split('_')[2].Contains("BIN"))

{

piyasaTipleri = PiyasaTipleri.KRIPTOBINANCE;

} else if (Symbol.Split('_')[2].Contains("FBIN"))

{

piyasaTipleri = PiyasaTipleri.KRIPTOBINANCEFUTURE;

Sembol1 = Symbol;

Sembol2 = Symbol;

 

}else if (Symbol.Split('_')[2].Contains("BMEX"))

{

piyasaTipleri = PiyasaTipleri.KRIPTOBITMEX;

}

}else

{

piyasaTipleri = PiyasaTipleri.KRIPTOBTCTURK;

}

 

}

}

 

 

 

public override void OnDataUpdate(BarDataEventArgs barData)

{

if (CrossAbove(SOTT_IQ, SOTT_IQ, 0, 1))

{

FX_Alis();

}

if (CrossBelow(SOTT_IQ, SOTT_IQ, 0, 1))

{

FX_Satis();

}

 

}

 

 

public override void OnOrderUpdate(IOrder order)

{

if (order.OrdStatus.Obj == OrdStatus.Filled && !orderIDList.Contains(order.CliOrdID) && AcigaSatisYapilsin)

{

if (order.Side.Obj == Side.Buy)

{

Debug("Sentetik emir tetiklendi ");

LastOrderSide.Obj = Side.Sell;

 

orderID = SendMarketOrder(Symbol, order.OrderQty, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

LastOrderSide.Obj = Side.Buy;

 

Debug("Sentetik emrin kalan kısmı için alış emri gönderildi.[ " + order.OrderQty + " adet ]");

 

}else

{

Debug("Sentetik emir tetiklendi ");

LastOrderSide.Obj = Side.Buy;

 

if (piyasaTipleri == PiyasaTipleri.BISTPP)

{

orderID = SendShortSaleMarketOrder(Symbol, order.OrderQty);

orderIDList.Add(orderID);

}else

{

orderID = SendMarketOrder(Symbol, order.OrderQty, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);

orderIDList.Add(orderID);

}

LastOrderSide.Obj = Side.Sell;

 

Debug("Sentetik emrin kalan kısmı için satış emri gönderildi.[ " + order.OrderQty + " adet ]");

}

}

}

 

}

}
Paylaş

1 Cevap

Cevabınız

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