Merhaba kar al/zarar durdur fonksiyonlarini kullanabilirsiniz.
TakeProfit(Symbol, SyntheticOrderPriceType.Percent, 3); //Belirtilen sembole bagli mevcut Poz. %3 kara ulastiginda kapatilacaktir.
Kullanim ornegi icin SMA_Bitmex_TPSL hazir stratejisine bakabilirsiniz.
Algo dokumaninda bulunan aciklama:
TakeProfit( string symbol, SyntheticOrderPriceType SyntheticOrderPriceType, decimal stopLevel ): Girdiğiniz sembol için kar al emri tanımlamakta kullanılır. Sembol başına bir adet kar al emri tanımlanabilir. Önceden tanımlı bir kar al emri varsa yenisiyle değiştirilir.
Emir tanımlandığında sembolün güncel fiyatına göre short ve long pozisyon için ayrı stop fiyatları belirlenir. Sembol fiyatı değiştikçe, pozisyonunuzun yönüne göre kullanılacak stop fiyatı seçilir.
Fiyat seçilen stop değerine ulaştığında, pozisyonunuz kadar ve zıt yönde bir market emri gönderilir.
Parametreler:
SyntheticOrderPriceType: Stop noktaları için fiyat hesaplama yöntemini seçmekte kullanılır. SyntheticOrderPriceType.Percent veya SyntheticOrderPriceType.PricePoint seçenekleri ile yöntem, yüzdesel fark veya fiyat farkı olarak seçilir.
stopLevel: Stop değerleri hesaplanırken kullanılacak değeri seçer. SyntheticOrderPriceType parametresi seçimine bağlı olarak yüzde fark veya fiyat farkı değeri olarak kullanılır.
____________________________________________________________________
Onemli nokta TP/SL fonksiyonlari pozisyonun tumu icin calismakta. Pozisyonun belli bir miktari icin islem yapmak istiyorsaniz, manuel olarak kar al emri tanimlayabilirsiniz.
Islem market emri ile gerceklestiriliyorsa anlik kapanis fiyatini kaydedip bu fiyattan %3 yukarida fiyat olusup olusmadigini onDataUpdate icerisinde kontrol edebilirsiniz.
Orn.
...
SendMarketOrder(Symbol, BuyOrderQuantity, (OrderSide.Buy));
LastExecPrice = Close;
if (realposition > 0 && Close >= LastExecPrice * 1.03m)
//anlik fiyatin daha onceden islem yapildiginda kaydettigimiz fiyattan %3 daha fazla olup olmadigini kontrol eder
{
Debug("3% kar hedefine ulasildi, pozisyonun 1/4'u kapatilacaktir");
SendMarketOrder(Symbol, BuyOrderQuantity/4, (OrderSide.Sell));
}