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

Merhaba,

 

Matriks Prime’da aşağıdaki gibi hazırladığım basit bir indikatörü MatriksIQ’da da denemek istedim.

 

Period:=9;

K:=MOV( (H+L+C+C)/4, Period, Var);

K

 

Ancak MOV’un fiyat parametresini (H+L+C+C)/4  şeklinde uygulamak istiyorum.

Nasıl yapılacağı konusunda yardımlarınızı rica ederim.

İndikator kategorisinde (14 puan) tarafından | 916 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba,

aşağıdaki kodu inceleyebilirsiniz.

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 Test : 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.Min)]
		public SymbolPeriod SymbolPeriod;
		
		[Parameter(5)]
		public int Period;

		MOV mov;

		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			
			mov = new MOV(Period, MovMethod.VAR);			

			//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);
			WorkWithPermanentSignal(true);
		}

		decimal _high,_low,_close;		
		public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
		{			
			var bardata=GetBarData();
			
			_high=barDataCurrentValues.LastUpdate.High;
			_low=barDataCurrentValues.LastUpdate.Low;
			_close=barDataCurrentValues.LastUpdate.Close;
			
			var index=barDataCurrentValues.LastUpdate.BarDataIndex;
			
			mov.Update((_high+_low+2*_close),index,barDataCurrentValues.LastUpdate.DTime);

			// cross(mov(h+l+c+c,period,var),c)
			if (CrossAbove(mov, bardata, OHLCType.Close))
			{
				Debug("Şartınız şağlandı");		
			}
		}
	}
}

 

(15,892 puan) tarafından
1 0

Merhaba,

Yapmak istediğim aşağıdaki indikatördü. Teşekkürler.  :)

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
{
	[IndicatorInformationAttribute("YC_Simple_Indicator", IndicatorDrawingArea.OnDataSeries)]

	[IndicatorLineInformationAttribute(new []
		{
			"YC"
		})]

	public class YC_Simple_Indicator : MatriksIndicator
	{
		[DefaultValue(9)]
			public int Periyot
		{
			get; set;
		}

		MOV mov;

		public sealed override void OnInit()
		{
			mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, Periyot, MovMethod.Variable);
		}

		decimal _high, _low, _close;

		public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
		{
			_high = Instrument.SymbolBarData.High[currentBar];
			_low = Instrument.SymbolBarData.Low[currentBar];
			_close = Instrument.SymbolBarData.Close[currentBar];

			mov.Update((_high + _low + 2 * _close) / 4, currentBar, barDateTime);
			SetLine(0, currentBar, mov.CurrentValue);
		}
	}
}

 

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.



8,636 soru
8,590 cevap
4,821 yorum
19,799 kullanıcı