0 beğenilme 0 beğenilmeme
377 kez görüntülendi
Kıvabç Bey'in Borfin eğitiminde kullandığı McNMA McNicholl Movıng Average indikatörünün matriks gold için olan aşağıdaki kodunu matriks iq için uyarlamanız mümkün müdür?

period:=20;

alpha:= 2 / (period + 1);

ema1:=mov(c,period,e);

ema2:=mov(ema1,period,e);

MnMa:= ((2 - alpha) * ema1 - ema2) / (1 - alpha);

MA:=MnMa;
İndikator kategorisinde (141 puan) tarafından | 377 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

Lütfen aşağıdaki indikatörü inceleyiniz.

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("MCNMA", IndicatorDrawingArea.NewWindow)]
	//Indikatörün çizgilerinin isimleri
	[IndicatorLineInformationAttribute(new []
		{
			"MCNMA(0)"
		})]

	public class MCNMA : 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(20)]
			public int Period
		{
			get; set;
		}

		MOV mov, ema;
		
		public sealed override void OnInit()
		{
			mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period, MovMethod.Exponential);
			ema = MOVIndicator(mov, Period, MovMethod.Exponential);
		}

		/// <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)
		{


			if (currentBar < Period)
			{
				//SetLine fonksiyonu indikatördeki noktaları kuran fonksiyondur
				//Ilk paramatre indicatordeki hangi çizginin güncelleneceği bilgisidir.
				//Ikinci parametre güncellenecek çizginin hangi indexinin güncelleneceği bilgisidir.
				//Ucüncü parametre güncellenecek çizginin indexinin alacağı değerdir.
				SetLine(0, currentBar, 0);
				return ;
			}

			
			
			var alpha = 2 / (Period + 1);
			var MnMa = ((2 - alpha) * mov.CurrentValue - ema.CurrentValue) / (1 - alpha);

			SetLine(0, currentBar, MnMa);


		}


	}
}

İyi çalışmalar.

(11,059 puan) tarafından
8,643 soru
8,594 cevap
4,826 yorum
19,865 kullanıcı