BİR STRATEJİYE STOP EKLEMEK
Merhaba,
Var olan bir stratejiye stop eklemek için, ilk olarak aşağıdaki stop komutlarını bilmemiz gerekir.
// %5 zarar durdur
// StopLoss(Symbol, SyntheticOrderPriceType.Percent, 5);
// %5 kar al
// TakeProfit(Symbol, SyntheticOrderPriceType.Percent, 5);
// %5 izsürenstop
TrailingStopLoss(Symbol, SyntheticOrderPriceType.Percent, 5);
Yüzde olarak değil de, miktar olarak tanımlamak istersek,
SyntheticOrderPriceType.Percent
Yerine,
SyntheticOrderPriceType.PricePoint
Gelmelidir.
Mesela,
StopLoss(Symbol, SyntheticOrderPriceType.PricePoint, 0.20);
Gibi. Tabii bu durumda, yazacağımız rakam da puan olmalıdır. Yukarıdaki ifadede, stop seviyesi 0.2 puandır.
İpucu: Normal şartlar altında, stop seviyelerinin yüzde olarak uygulanması, genelde kullanmak açısından daha doğrudur.
Bilgi: Program içinde, hazır stratejilerden SMA_Bitmex_TPSL stratejisi stop uygulaması içermektedir.
**
Stop ifadesinin genel şablonu şu şekildedir:
TakeProfit( string symbol, SyntheticOrderPriceType SyntheticOrderPriceType, decimal stopLevel )
Genellikle şöyle ifade edilir:
StopLoss(Symbol, SyntheticOrderPriceType.Percent, Zarar_Durdur_Yuzdesi);
StopLoss(Symbol, SyntheticOrderPriceType.Percent, 1);
Yukarıda 2. Satırda olduğu gibi, sabit bir rakam yazabiliriz. Bu durumda, strateji bu rakamı baz alarak çalışacak, çalıştırma esnasında bize bir şey sormayacaktır.
Bu, normalde tercih edeceğimiz bir durum olmayacaktır.
Bu sebeple, öncesinde bir değişken tanımlamayı tercih ederiz.
Public class bölümünde şu şekilde değişken tanımlayabiliriz:
//Burdaki değer ile yüzdeli stoploss kurulur.
[Parameter(1)]
public decimal Zarar_Durdur_Yuzdesi;
Yukarıdaki tanımlamayı yapıp, daha sonra aşağıdaki kod satırını:
StopLoss(Symbol, SyntheticOrderPriceType.Percent, Zarar_Durdur_Yuzdesi);
AL ya da, Açığa Sat emir gönderim satırının altına eklemeliyiz.
**
Örnek:
Kodun içinde değişken tanımlama kısmına geliyorum.
Son değişkeni kopyalayıp, aynısını altına yapıştırıyorum.
Sonra, eklediğim değişkende, hedefime uygun olarak düzenlemeyi yapıyorum.
Rakamların karışmaması için, 2 rakamını 1.5 yaptım. Değişken olarak tanımladığım için backtest veya çalıştırma aşamasında zaten göreceğim.
İsmini de yukarıda göreceğiniz şekilde değiştirdim.
Sonra, Alış satırının altına stop emir kodunu ekliyorum.
Debug fonksiyonun işlevi ayrıdır. Kendimizi bilgilendirmek için kullanırız. Ayrıca anlatılacaktır.
Dilersek, stoploss kodumuzun altına da, debug ekleyerek kendimize çıktılar kısmında, bilgilendirme alabiliriz.
Önemli Bir Detay: Yukarıdaki resimde, emir gönderim satırı içinde sembol tanımının Synbol olduğunu görüyoruz. Bazen orada, farklı olarak Symbol1 ya da daha farklı bir tanım olabilir.
Bu durumda, bizim de, stop komutumuzun içinde yer alan Symbol ifadesini aynı şekilde değiştirmemiz gerekir.
Değiştirmez isek, kodun içeriğine göre, ya hata mesajı alırız, bunu fark edip düzeltmek kolay olacaktır.
Ya da yanlış bir sembole emir gönderilmesine sebep olabiliriz. Dikkat edelim lütfen.
İşlem tamamlandı. Kodu derle yapabiliriz.
*
Backtest yapmayı denersek, karşımıza çıkacak pencerede ilgili stop seçeneğini de görebiliriz.
Benzer biçimde, diğer stopları da ekleyebiliriz.
DİKKAT: Stop ifadesinin AL koşulu altına eklenmesi, sadece AL pozisyonuna uygulanmasını garanti etmez. Oraya eklememiz, görsel / işlevsel bir kolaylık içindir.
Esasen, stop ifadesi, pozisyon açtığını var saydığı her emre uygulanır.
Bu sebeple, stopların doğru çalışması için: Stratejinin AL ile başlaması ve emirlerin sıralı gönderilmesi gerekir.
AL ile başlatmadığımız strateji SAT emrini açığa sat olarak algılar. Ve stop buna göre devreye girer.
Sıralı gönder seçmediğimiz takdirde de, stop gerçekleşmesine rağmen SAT emrinin tekrar gönderilmesi gibi sorunlarla kaşılaşabiliriz.
Eğer daha serbest olarak kullanmak istiyorsanız, kodun içine ayrıca pozisyon kontrolü vb. koymalıyız.
Bu konuda ayrıca bir çalışma yapacağız.
**
Dilersek, peş peşe Kar Al – Zarar Durdur ve İz süren stop emirleri de girebiliriz. Hangisi önce gerçekleşirse, o çalışacaktır.
Hayırlı kazançlar dileriz.