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

Basit bir İndikator  ve Explorer yazdım ama explorer listesinde yazdığım indikatör değer almıyor. Kaynak kodları aşağıda ki gibi

using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using Matriks.Data.Identifiers;
using Matriks.Data.Symbol;
using Matriks.Engines;
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
{
	//Ilk parametre indikatörün adı, sınıfın adıyla aynı olmalıdır.
	//Ikinci parametre indikatörün Dataserisinin üzerine mi yeni pencereye mi ekleneceğini belirtir. Yeni pencere için ->IndicatorDrawingArea.NewWindow , Data Serisi için IndicatorDrawingArea.OnDataSeries
	[IndicatorInformationAttribute("BasitIndikator", IndicatorDrawingArea.OnDataSeries)]
	//Indikatörün çizgilerinin isimleri
	[IndicatorLineInformationAttribute(new []
		{
			"BasitIndikator(0)"
		})]

	public class BasitIndikator : MatriksIndicator
	{

		//Indicator opsiyon panelinde değerleri değiştirebildiğimiz parametreler. Int, Bool, Decimal ve Enum değerleri alabilir.Tüm değişken tiplerini DefaultValue ile tanımlarız. 
		[DefaultValue(5)]
			public int Period
		{
			get; set;
		}

		EMA ema;

		public sealed override void OnInit()
		{
			ema = EMAIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period);
		}

		/// <summary>
		/// Seçilen sembolün bardata'ları güncellendikçe bu fonksiyon tetiklenir. 
		/// </summary>
		/// <param name="currentBar">Güncellenen bardata'nın indexteki sırası</param>
		/// <param name="inputValue">Seçilen OHLC tipine göre gelen bardata'nın o anki değeri</param>
		/// <param name="barDateTime">Bardata'ya gelen güncelleme zamanı</param>
		public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
		{
			SetLine(currentBar, ema.CurrentValue);
		}


	}
}

Explorer

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Indicators;


namespace Matriks.Lean.Algotrader
{
	public class BasitExplorer : Explorer
	{
		MatriksIndicator BasitIndikator;
		public override void OnInit()
		{
			BasitIndikator = new BasitIndikator();
	        BasitIndikator.SetIndicatorParameters("Period",5);
			RegisterUserIndicator(BasitIndikator,Symbol, SymbolPeriod, OHLCType.Close,5);

			
			AddColumns(2);
			SetColumnText(0, "Mov1");
			SetColumnText(1, "BasitIndicator");

		}

		public override bool OnExplorer(List<BarDataEventArgs> bardatas)
		{
			var bardata=bardatas.FirstOrDefault();
			SetColumn(0, bardata.LastPrice);
			SetColumn(1, BasitIndikator.CurrentValue);
//			if (CrossAbove(mov, mov2))
//				return true;
			return true;
		}
	}
}

 

İndikator kategorisinde (229 puan) tarafından | 734 kez görüntülendi
0 0
Bu indikatöre dışarıdan bar dizisi falan mı yüklemek gerekiyor
0 0
Bu konu önemli bir sorun, lütfen konuya bakabilir misiniz.

1 cevap

1 beğenilme 0 beğenilmeme
Merhaba.

Arkadaşlar baktılar ve sizin dışınızda bir sorun olduğu görüldü.

Lütfen versiyon çıkana kadar bekleyiniz.

Sabrınız için teşekkürler.

İyi çalışmalar
(12,830 puan) tarafından
1 0
Bu arada,

Versiyon inşallah bu hafta sonu çıkacak.
0 0
Elinize sağlık çok hızlısınız. Cevaplarda hemen veriliyor.
0 0
Yeni versiyonda(4.0.7) yazdığım indikatör Explorer içinde çalışıyor  ama eskiye dönük hesaplama yapmıyor.  100-200 bar önceden hesaplayarak gelse sorun çözülecek.  Strateji içinde  backtestler de düzgün çalışıyor ama gerçek datada denemedim eğer  orada eskiden gelen değerleri almıyorsa sıkıntı var.
1 0
Merhaba.

Yazdığınız indikatörü ve sorunu e posta ile gönderirseniz, inceleyelim.

iqdestek@matriksdata.com

İyi çalışmalar
0 0
Sanırım kodlamada yanlışlık yapmışım, biraz düzenleme yapınca düzgün çalışmaya başladı.  ilginiz için teşekkürler.
7,571 soru
7,573 cevap
4,423 yorum
9,835 kullanıcı