MatriksIQ Destek
Matriks Destek
Matriks Web Destek
Matriks Mobile Destek
1 beğenilme 0 beğenilmeme
45 kez görüntülendi
Geçmiş bar RSI verisini nasıl alabiliyoruz?
Algoritmik Trading kategorisinde (131 puan) tarafından
tarafından yeniden gösterildi | 45 kez görüntülendi

1 cevap

0 beğenilme 1 beğenilmeme

Merhaba.

Eski bardatalara aşağıdaki örnekte olduğu gibi ulaşabilirsiniz.

İyi çalışmalar

 

public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)

{

// Stratejideki periyotta bardatalarını çağırılıyor.

var bardata=GetBarData();

                                  

// Son Fiyat alınıyor.

var SonFiyat=barDataCurrentValues.LastUpdate.Close;

                                  

// Ref fonksiyonu ile bardatadaki eski datalara ulaşılabilir.

            // OHLCType.Close yerine Open,High,Low yazarak diğer verilere de ulaşabilirsiniz

            // Ref(bardata,OHLCType.Close,1) fonksiyonunun sonuna 1 yazarak bir önceki kapanış değerine ulaşıyoruz.

            // 1 yerine başka sayı girerek daha eski değerlere ulaşabilirsiniz.

var OncekiKapanişDegeri=Ref(bardata,OHLCType.Close,1);                  

}

(1,848 puan) tarafından
0 0
Teşekkürler ama bardatanın nasıl alınacağı bir çok konuda anlatılmış .Aradığım bardata değil geçmiş bar RSI verisi.
1 0

Merhaba,

Ref() fonksiyonu hem bardata hem de indikatörlerin geçmiş verilerine ulaşabilmenizi sağlar.

Kullanımı:

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;

namespace Matriks.Lean.Algotrader
{
	public class prevRsi : 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;

		RSI rsi;

		/// <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()
		{
			rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, 14);

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


		/// <summary>
		/// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir. 
		/// </summary>
		/// <param name="barData">Bardata ve hesaplanan gerçekleşen işleme ait detaylar</param>
		public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
		{
			var prevRsi = Ref(rsi, 1);
			//Buradaki 1 kaç bar önceki rsi ulaşmak istenildiğini belirtir.
			var rsiCurrentValue = rsi.CurrentValue;
			
			Debug("Şu anki rsi değeri : "+rsiCurrentValue);
			Debug("Bir önceki rsi değeri : "+prevRsi+"\n");
		}

	}
}

İyi çalışmalar

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.



538 soru
605 cevap
775 yorum
343 kullanıcı