0 beğenilme 0 beğenilmeme
366 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 (227 puan) tarafından
tarafından düzenlendi | 366 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);
		}
.
.
.
.

 

(3,025 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.
(340 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.



6,846 soru
6,857 cevap
4,123 yorum
5,384 kullanıcı