0 beğenilme 0 beğenilmeme
607 kez görüntülendi
RSI indikatörü  ile  x seviyesini son 3 veya 4  barda geçenleri  nasıl araştırabiliriz? Genellikle formüller son barda seviyeyi geçenleri bulduruyor. Ben  formül yazdığımda çıkan sonuçlardan hem bir bar, hem iki bar hem 3 barda seviyeyi geçenkleri bulmak istiyorum. Selamlar.
Explorer kategorisinde (14 puan) tarafından | 607 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

X seviyesini örnek olarak formülde 30 aldık. Aşağıdaki taramayı lütfen inceleyiniz.

Ayrıca siz de >,< olarak kodu düzenleyebilirsiniz.

Bir bar önceki değer, rsi.Value[0][rsi.CurrentIndex-A] şeklinde bulunabilir. Buradaki A yerine kaç bar önceyi görmek istiyorsanız o değeri girebilirsiniz.

İyi çalışmalar.

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

namespace Matriks.Lean.Algotrader
{
	public class RsiBefore3Exp : Explorer
	{
		// 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.



		[Parameter(14)]
			public int RsiPeriod1;

		RSI rsi;



		public override void OnInit()
		{
			rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, RsiPeriod1);


			AddColumns(0);


		}


		/// <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 bool OnExplorer(List<BarDataEventArgs> bardatas)
		{

			var bardata = bardatas.FirstOrDefault() ? .BarData;

			if (rsi.Value[0][rsi.CurrentIndex-3] < 30m && rsi.Value[0][rsi.CurrentIndex-2] < 30m && rsi.Value[0][rsi.CurrentIndex-1] < 30m && rsi.Value[0][rsi.CurrentIndex] < 30m)
			{
				return true;
			}
			return false;


		}
	}
}

 

(11,069 puan) tarafından
7,509 soru
7,511 cevap
4,405 yorum
8,738 kullanıcı