0 beğenilme 0 beğenilmeme
1,152 kez görüntülendi

MatriksIQ yardım bölümünden bulup indirdiğim Algo_Trader_IQ.pdf dosyasının 124. sayfasındaki" RSI Indikatörünü MOST İçinde Kullanarak Oluşturulan Strateji" bunu başarılı şekilde çalıştırdım ama formüle baktığımda (bilgim zayıf) RSI ın fonksiyonunu sanki yokmuş gibi geldi. merakım şu;most dan gelen al yada sat emrini  RSI kaç olunca teyit ediyor?

 

[SymbolParameter("GARAN")]
public string Symbol;//Sembol ismi
[Parameter(SymbolPeriod.Day)]
public SymbolPeriod SymbolPeriod;
//Stratejiyi çalıştırmak istediğimiz bar periyodu
[Parameter(100)]
public int BuyOrderCount;
//alım miktarı için kullanacağımız parametre
[Parameter(100)]
public int SellOrderCount;
//satım miktarı için kullanacağımız parametre
[Parameter(14)]
public int periodRsi;
//RSI periyodu için kullanacağımız parametre
[Parameter(3)]
public int periodMost;
//MOST periyodu için kullanacağımız parametre
[Parameter(2)]
public decimal percentage;
//MOST yüzde paremetresi için kullanacağımız parametre
//Kullanacağımız indikatör obje tanımları

RSI rsi;
MOST most;
// 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.
public override void OnInit()
{
//tanımladığımız objelere indikatör tanımlarını ve gerekli değerleri
//atıyoruz
rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, periodRsi);
most = MOSTIndicator(rsi, periodMost, percentage, MovMethod.Exponential);
//Sembol ve periyoduna kayıt
AddSymbol(Symbol, SymbolPeriod);
// Algoritmanın kalıcı veya geçici sinyal ile çalışıp çalışmayacağını
//belirliyoruz. true değer, algoritmanın sadece yeni bar açılışlarında
//çalışmasını sağlar, bu fonksiyonu çağırmazsak veya false olarak
//belirlersek her işlem olduğunda algoritma
//tetiklenecektir.
WorkWithPermanentSignal(true);
//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);
}
// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu
//fonksiyon tetiklenir.
//Dolayısıyla asıl al/sat stratejisini yazacağımız bölümdür
public override void OnDataUpdate(BarDataEventArgs barData)
{
//Bu koşul alım emri içindir. Eğer grafikte MOST'un EXMOV bandı
//most bandını yukarı kırarsa al emri gönderilecek.
if (CrossAbove(most.CurrentValue, most.ExMOV))
{
//Parametrelerde belirlenen sembolden, belirlenen miktarda, piyasa
//fiyatından alış emri gönderir
SendMarketOrder(Symbol, BuyOrderCount, (OrderSide.Buy));

//"" içerisinde bulunan ifadeyi debug penceresine basar
Debug("Alış Emri Gönderildi");
//EXMOV değerini debug penceresine basar
Debug("exmov:" + Math.Round(most.ExMOV.CurrentValue, 2));
//MOST değerini debug penceresine basar
Debug("most:" + Math.Round(most.CurrentValue, 2));
}
//Bu koşul satım emri içindir. Eğer grafikte MOST'un EXMOV bandı
//most bandını aşağı kırarsa sat emri gönderilecek.
if (CrossBelow(most.CurrentValue, most.ExMOV))
{
//Parametrelerde belirlenen sembolden, belirlenen miktarda, piyasa
//fiyatından satış emri gönderir
SendMarketOrder(Symbol, SellOrderCount, (OrderSide.Sell));
//"" içerisinde bulunan ifadeyi debug penceresine basar
Debug("Satış Emri Gönderildi");
//EXMOV değerini debug penceresine basar
Debug("exmov:" + Math.Round(most.ExMOV.CurrentValue, 2));
//MOST değerini debug penceresine basar
Debug("most:" + Math.Round(most.CurrentValue, 2));
}
}
}
}

 

Algoritmik Trading kategorisinde (92 puan) tarafından | 1,152 kez görüntülendi

1 cevap

1 beğenilme 0 beğenilmeme

Merhabalar,

MOST için aşağıdaki yapı kullanılır.

most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period, Percentage, MovMethod.Exponential);

Fakat yukarıda bulunan kodda, 

most = MOSTIndicator(rsi, periodMost, percentage, MovMethod.Exponential);

kullanılmıştır. Yani burada, normal şartlar altında MOST indikatöründe kapanış verisi kullanılırken bu kodda kapanış yerine RSI değerini seçmiş oluyoruz. Dolayısı ile burada RSI için kesin olarak şu değerdedir diye bir şey söylemek doğru olmaz. 

Grafiğinize RSI ekledikten sonra indikatörler kısmına MOST yazdığınızda, Bölge yerine RSI, kapanış yerine RSI seçerseniz, ekranda belirecek olan yeni MOST indikatörü sizin stratejinizde kullandığınız indikatör olacaktır. (Ekran görüntüsü aşağıda mevcuttur.)

Stratejiniz de bu yeni MOST indikatörünün kesişimine göre Al ve Sat sinyali verecektir.

Ayrıca daha sağlıklı sonuç alabilmek için stratejinizi aşağıdaki gibi düzenlemeniz gerekmektedir.

public override void OnDataUpdate(BarDataEventArgs barData)
		{
			//Bu koşul alım emri içindir. Eğer grafikte MOST'un EXMOV bandı
			//most bandını yukarı kırarsa al emri gönderilecek.
			if (CrossAbove(most.ExMOV, most.CurrentValue))
			{
				//Parametrelerde belirlenen sembolden, belirlenen miktarda, piyasa
				//fiyatından alış emri gönderir
				SendMarketOrder(Symbol, BuyOrderCount, (OrderSide.Buy));

				//"" içerisinde bulunan ifadeyi debug penceresine basar
				Debug("Alış Emri Gönderildi");
				//EXMOV değerini debug penceresine basar
				Debug("exmov:" + Math.Round(most.ExMOV.CurrentValue, 2));
				//MOST değerini debug penceresine basar
				Debug("most:" + Math.Round(most.CurrentValue, 2));
			}
			//Bu koşul satım emri içindir. Eğer grafikte MOST'un EXMOV bandı
			//most bandını aşağı kırarsa sat emri gönderilecek.
			if (CrossBelow(most.ExMOV, most.CurrentValue))
			{
				//Parametrelerde belirlenen sembolden, belirlenen miktarda, piyasa
				//fiyatından satış emri gönderir
				SendMarketOrder(Symbol, SellOrderCount, (OrderSide.Sell));
				//"" içerisinde bulunan ifadeyi debug penceresine basar
				Debug("Satış Emri Gönderildi");
				//EXMOV değerini debug penceresine basar
				Debug("exmov:" + Math.Round(most.ExMOV.CurrentValue, 2));
				//MOST değerini debug penceresine basar
				Debug("most:" + Math.Round(most.CurrentValue, 2));
			}
		}

 

İyi çalışmalar.

 

(11,069 puan) tarafından
tarafından yeniden gösterildi
1 0
Hiç böyle düşünmemeiştim :) ilginize teşekkür ederim............
7,518 soru
7,521 cevap
4,406 yorum
8,765 kullanıcı