Emirlerin sıralı gönderilmediği ve açığa satışın yapıldığı bir stratejide belirli bir fiyata TakeProfit koymak
- Soruldu
- Kategori
- Algoritmik Trading
- Görüntülenme
- 617 görüntülenme
- Durum
- Çözüldü
Serbest çalışan bir strateji var. Açığa satış da yapıyor.
Emirler sıralı gönderilmiyor. Strateji al veya sat ile başlayabilir ve üst üste al veya sat yapabilir.
OnOrderUpdate içinde OrdStatus.Filled olduktan sonra TakeProfit koymak istiyorum. Mesela fiyat 70 dolara ulaşınca kar alsın. Bu fiyatı da her OnDataUpdate geldiğinde değiştirebilmeliyim. Mesela bir sonraki update gelince eğer OHLCType.DiffPercent negatifse TakeProfiti 60 dolara çekebilmeliyim.
SyntheticOrderPriceType.Percent kullanılmamalı. Sadece PricePoint kullanılmalı.
Yukarıdaki şartları sağlayacak örnek yapı nasıl olmalı? (Denemelerimde Long pozisyon take profit fiyatı: xxxxxxxxxx, Short pozisyon take profit fiyatı: xxxxxxxxx değerlerini bir türlü istediğim fiyata denk getiremedim. %3 takeprofit al deyip de 2 saniye sonra sadece %0.2 uzaktaki fiyattan stop yemek gibi bir sorunum var.)


Benim gibi HEIKIN ASHI kullananlar için sentetik emirlerin doğru çalışmasını sağlayan çok önemli bir detayı öğrendim. Matriks'den gelen cevabı paylaşıyorum. Eğer AddSymbol ilk olarak normal barlar ile çağrılmazsa sentetik emirler doğru uzaklığa ayarlanmıyor (HeikinAshi bar değerlerine göre ayarlanıyor) ve bazı durumlarda anında stop gelebiliyor. AddSymbol hem normal bar hem de HeaikinAshi ile çağrılınca da OnDataUpdate iki defa geliyor. Kodun buna göre yazılması gerekiyor.
----------------
Sentetik emirler tanımlandığı andaki değerleri referans almaktadır
Stratejide Heikenashi kullanılırsa sentetik emirler Heikenashi hesaplamasına göre tanımlanmaktadır.
Sentetik emrin normal barlara göre tanımlanması için OnInit() metodunda ilk olarak normal bar verisine kayıt olunması gerekir.
Aşağıdaki örnekte OnDataUpdate() üst üste 2 sefer tetikleneceği için istenmeyen sinyallerin önüne geçmek için çoklu periyot kontrolü eklemeniz gerekir.
PeriodInfo HeikenAshi; public override void OnInit() { AddSymbol(Symbol,SymbolPeriod); HeikenAshi=GetHeikinAshiPeriodInfo(SymbolPeriod); AddSymbol(Symbol,HeikenAshi); } public override void OnDataUpdate(BarDataEventArgs barData) { if(barData.PeriodInfo==HeikenAshi){ // yapılacaklar } }