0 beğenilme 0 beğenilmeme
456 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 | 456 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,648 soru
8,602 cevap
4,828 yorum
19,882 kullanıcı