0 beğenilme 0 beğenilmeme
600 kez görüntülendi

Stratejimde SendOrderSequential(true) olarak kullanıyorum. Satış emir şartlarının içine alış fiyatından yüksek olması şartını koymaya çalışıyorum bir türlü beceremedim. Aşağıdaki gibi bir şeyler yapmaya çalıştım ama çalıştıramadım. Alış fiyatını sadece aldığı dk için hatırlıyor. Sonraki dakikalarda satım yapana kadar hatırlamasını ve ona göre satım işlerini yapmak istiyorum. Yardımcı olabilirseniz süper olur.

if (inrange)
			{
				if (....)
				{
					SendLimitOrder(Symbol, Alissayisi, OrderSide.Buy, close - Fiyatadimcarpimi);
					decimal Alimfiyati = close - Fiyatadimcarpimi;
					Debug(Alimfiyati);


				}
				if (..... && Alimfiyati < close + Fiyatadimcarpimi)
				{
					SendLimitOrder(Symbol, Satissayisi, OrderSide.Sell, close + Fiyatadimcarpimi);
					decimal Satimfiyati = close + Fiyatadimcarpimi;
					Debug(Satimfiyati);

				}
				else
				{
                    Debug(Alimfiyati);
                    Debug(Satimfiyati);
					}
				}
			

 

Algoritmik Trading kategorisinde (250 puan) tarafından
tarafından düzenlendi | 600 kez görüntülendi

2 Cevaplar

1 beğenilme 0 beğenilmeme
En İyi Cevap

Merhabalar, istediğiniz işlem için değişkeninizi global olarak tanımlamanız gerekiyor. Yani herhangi bir fonksiyondan, methoddan koşuldan bağımsız olmalıdır. Aşağıda belirttiğim yerde tanımlarsanız sorununuz çözülür.

public class strateji: MatriksAlgo
	{
		// Strateji çalıştırılırken kullanacağımız parametreler. Eğer sembolle ilgili bir parametre ise,
		// "SymbolParameter" ile, değilse "Parameter" ile tanımlama yaparız. Parantez içindeki değerler default değerleridir.

		[SymbolParameter("GARAN")]
		public string Symbol;

		[Parameter(SymbolPeriod.Min5)]
		public SymbolPeriod SymbolPeriod;

		/*
			Global değişkeni burada tanımlayın....
		*/
		decimal Alimfiyati = 0;

		/// <summary>
		/// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri,
		/// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır. 
		/// </summary>
		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);

			//Eger backtestte emri bir al bir sat seklinde gonderilmesi isteniyor bu true set edilir. 
			//Alttaki satırı silerek veya false geçerek emirlerin sirayla gönderilmesini engelleyebilirsiniz. 
			SendOrderSequential(true);
		}
.
.
.
.

 

(4,555 puan) tarafından
tarafından seçilmiş
2 beğenilme 0 beğenilmeme
alım fiyatı değişkenini yukarda parametreleri tanımladığımız yerde tanımlarsanız unutmaz.
örneğin Yukarda
Decimal alımFiyati =0;

dersiniz sonra fonksiyonun içerisinde istediğinize eşitlersiniz.

alimFiyati =  close - Fiyatadimcarpimi;  gibi

iyi çalışmalar.
(390 puan) tarafından
0 0
Cevabınız için teşekkürler ama bu şekilde de yeni bar açılışında (eğer alım yapmazsa) Alimfiyati değişkenini hep sıfıra eşitliyor. Hatırlamıyor yani.
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.



8,636 soru
8,590 cevap
4,821 yorum
19,800 kullanıcı