0 beğenilme 0 beğenilmeme
455 kez görüntülendi
Yardımınız için teşekkür ederim. Bu stratejiyi matriksIQ da indikatör olarak yazabilir misiniz?
bir cevap ile ilgili: matriks ıq strateji
Algoritmik Trading kategorisinde (24 puan) tarafından | 455 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

Yazılmış olan indikatör al sinyalinde +1 sat sinyalinde -1 üretiyor.

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

	public class metln07ındex : MatriksIndicator
	{

		[DefaultValue(20)]
			public int OPT1
		{
			get; set;
		}

		[DefaultValue(14)]
			public int OPT2
		{
			get; set;
		}

		[DefaultValue(5)]
			public int OPT3
		{
			get; set;
		}
		ATR atr;
		HighestHigh HHV;
		LowestLow LLV;
		MOV mov;

		public sealed override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);

				mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, 1, MovMethod.Simple);
			HHV = HighestHighIndicator(mov, OPT1);
			LLV = LowestLowIndicator(mov, OPT1);
		
			atr = ATRIndicator(Symbol, SymbolPeriod, OHLCType.Close, OPT2);

		}



		public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
		{
			
			
			var barData1 = GetBarData(Symbol, SymbolPeriod);
			
			var H = HHV.Value[0][HHV.CurrentIndex -1];
			var L = LLV.Value[0][LLV.CurrentIndex -1];
			var _ATR = atr.Value[0][atr.CurrentIndex - 1];
			var _T = (L + _ATR * OPT3);
			var _F = (H - _ATR * OPT3);

			if (CrossAbove(mov, _T, 0))
			{
				SetLine(0, currentBar, 1);
				return ;
			}

			if (CrossBelow(mov, _F, 0))
			{
				SetLine(0, currentBar, -1);
				return ;
			}
			
			SetLine(0, currentBar, 0);
				return ;

		}


	}
}

İyi çalışmalar.

(11,059 puan) tarafından
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,637 soru
8,591 cevap
4,821 yorum
19,805 kullanıcı