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

Emirlerin sıralı gönderilmediği ve açığa satışın yapıldığı bir stratejide belirli bir fiyata TakeProfit koymak

Soruldu
Görüntülenme
617 görüntülenme
Durum
Çözüldü
Yapmak istediğim şu:

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.)
Paylaş

1 Cevap

1

Kabul edilen cevap

Merhaba,

Elinizdeki pozisyon yönüne göre stop seviyesinden anlık fiyatı yada anlık fiyattan stop seviyesini çıkartıp puan cinsinden kar al tanımlayabilirsiniz. Aşağıdaki yapıyı inceleyebilirisiniz.

bool negatifKontrol = true;

public override void OnDataUpdate(BarDataEventArgs barData)
{
	if (barData.BarData.DiffPercent<0 && negatifKontrol)
	{
		var anlikFiyat = GetSelectedValueFromBarData(GetBarData(), OHLCType.Close);				
				
		var poz = GetPortfolio();
		var adet = poz.ContainsKey(order.Symbol) ? poz[order.Symbol] :0;
		if (adet>0)
		{					
			TakeProfit(order.Symbol, SyntheticOrderPriceType.PricePoint, KarAlSeviyesi_pozitif - anlikFiyat);
		}else if (adet<0)
		{
			TakeProfit(order.Symbol, SyntheticOrderPriceType.PricePoint, anlikFiyat-KarAlSeviyesi_negatif);
		}
				
		negatifKontrol = false;
	}
}

decimal KarAlSeviyesi_pozitif = 70, KarAlSeviyesi_negatif = 60;

public override void OnOrderUpdate(IOrder order)
{
	if (order.OrdStatus.Obj == OrdStatus.Filled)
	{
		var anlikFiyat = GetSelectedValueFromBarData(GetBarData(), OHLCType.Close);				
			
		var poz = GetPortfolio();
		var adet = poz.ContainsKey(order.Symbol) ? poz[order.Symbol] :0;
		if (adet>0)
		{					
			TakeProfit(order.Symbol, SyntheticOrderPriceType.PricePoint, KarAlSeviyesi_pozitif - anlikFiyat);
		}else if (adet<0)
		{
			TakeProfit(order.Symbol, SyntheticOrderPriceType.PricePoint, anlikFiyat-KarAlSeviyesi_negatif);
		}
				
		negatifKontrol = true;
	}
}

 

Unblocked Games offering a wide range of experiences: action, puzzle, platform, racing, clicker mechanics, strategy, sports, even horror.
https://unblocked1games.github.io
BağlantıBayrakladüzenlendi · Emekli68KripexMatriks Destek16.499

Yorumlar (1)

  • ▲0

    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
                }
    }

     

Cevabınız

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