0 beğenilme 0 beğenilmeme
248 kez görüntülendi
merhaba;

herhangi bir sebeple iq kapanıp tekrar açıldığında robotları tekrar en baştan başlatmak gerekiyor.Pozisyonda olanları "çalıştırılmış stratejilerden" diğerlerini en baştan açıyorum ancak al pozisyonunda olanlarda trailing stoploss gidiyor sistem stop etmiyor ve Manuel trailing stoploss koymam gerekiyor.Bu durum çok büyük sıkıntı.Buna mutlaka bir çare gerekli.On init içine veya başka bir method içerisine) AL-Sat robotumda veya çift yönlü robotta ..(AL pozisyonundaki)Stratejiyi tekrar çalıştırdığımda pozisyonda olduğumuzda trailing stop veya diğer sentetik stopları ilk açılışta eski haliyle devreye nasıl sokarız.Çünkü bu durumda Trailing stopLoss fonksiyonu kullanılamaz. ?
Algoritmik Trading kategorisinde (16 puan) tarafından | 248 kez görüntülendi

2 Cevaplar

1 beğenilme 0 beğenilmeme

Merhaba,,

Stratejiler durdurulup/duraklatılıp devam ettirildiğinde sentetik emirler silinmektedir.

Şu yapılabilir devam ettirildiğimde elinizde pozisyon varsa sentetik emirleri tekrar o anki fiyata göre tanımlayabilirsiniz.

Aşağıdaki yapıyı inceleyip kendi sisteminize uyarlayabilirsiniz.

public override void OnInitComplated()
{
  var portfoy=GetPortfolio();

  if(portfoy.ContainsKey(Symbol)){
    if(portfoy[Symbol]!=0){
      TakeProfit(Symbol,SyntheticOrderPriceType.Percent,1);
      Debug("pozisyon var sentetik emir eklendi");
    }
  }
}

Not: strateji durdurulup devam ettirildiğinde Strateji durdurulmadan önceki açık pozisyonları dahil et seçeneğinin aktif etmeniz gerekir.( duraklatılıp devam ettirildiğinde varsayılan olarak bu seçenek aktif oluyor)

(15,852 puan) tarafından
1 beğenilme 0 beğenilmeme

stoploss fonksiyonu IQ içerisinde sıkıntıl zaten mesela çoklu periyot kullandığınızda sapıtıyor ben bu durumun üstesinden kendi hareketli stoploss kodumu yazarak geldim. örnek olması açısından aşağıda paylaşıyorum. yeniden başladığında tekrar kaldığı yerden başlaması için syop rakamını diske yazabilir ve açılışta değeri okutabilirsiniz.

public bool ZararKes(decimal close, decimal percent)
		{
			if (close>enYuksekDeger)
			{
				enYuksekDeger = close;
			}
			var temp = enYuksekDeger * ((100 - percent) / 100);
			if (temp>close && enYuksekDeger != 0)
			{
				return true;
			}
			else
			{
				return false;
			}
		}

yüksek değer public ve namespacesin en üstü olmalı. en yüksek değer ontimer içinde devamlı güncellenmesi gerekiyor.

 

public void DegiskenleriDosyayaYaz(string folder, string file)
		{
			if (!System.IO.Directory.Exists(folder))
				Directory.CreateDirectory(folder);

			string fileName = Path.Combine(folder, file + ".txt");

			/*if (!File.Exists(fileName))
			{
				File.AppendAllText(fileName, YON);
			}*/

			//File.WriteAllText(fileName, stopDegeri.ToString());
			File.WriteAllText(fileName, "");
			File.WriteAllText(fileName, YON);
			Debug(YON + " olarak dosya yazıldı");
			//Debug(fileName + " dosyasina yazildi");**
		}

		// Veri Oku
		public void DegiskenleriDosyadanOku()
		{
			if (!System.IO.Directory.Exists(folder))
				Directory.CreateDirectory(folder);

			string fileName = Path.Combine(folder, dosyaadi + ".txt");

			if (!File.Exists(fileName))
			{
				File.AppendAllText(fileName, YON);
				Debug("dosya kontrol edildi");
			}

			// Open the file to read from.
			string readText = File.ReadAllText(fileName);
			YON = readText;
			Debug("dosya okundu " + YON);
			if (YON == "BUY")
			{
				hizliKontrol = false;
			}else
			{
				hizliKontrol = true;
			}
			//stopDegeri = Convert.ToDecimal(readText);
		}

 

(193 puan) tarafından
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. 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.



7,972 soru
7,951 cevap
4,536 yorum
13,101 kullanıcı