0 beğenilme 0 beğenilmeme
845 kez görüntülendi
Merhaba, Üssel iki hateketli ortalamanın 5 ve 21 (aynı zamanda periotlarını değiştirebilceğimiz şekilde) bar data üstünde al ve sat  kesişimlerine göre advisorPmax de yapıldığı gibi AL ve SAT renkli bar olarak gözüken bir kullanıcı indikatör tasarlayabilirmiyiz Çift çizgili tek bir indikatör.

Yardımlarınızı rica ederim. İyi çalışmalar.
Indikator Builder kategorisinde (83 puan) tarafından | 845 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba,

linkteki indikatörü inceleyebilirsiniz.

https://destek.matriksdata.com/?qa=blob&qa_blobid=6050992541059443533

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;
using System.Windows.Media;

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
	[IndicatorInformation("SablonAdvisor", IndicatorDrawingArea.OnDataSeries)]
	//Indikatörün çizgilerinin isimleri
	[IndicatorLineInformation(new []
		{
			"mov(0,1,2,3)"
		})]
		public class SablonAdvisor : MatriksIndicator
	{
		[DefaultValue(5)]
		public int KisaPeriod
		{
			get; set;
		}

		[DefaultValue(MovMethod.Exponential)]
		public MovMethod KisaMethod
		{
			get; set;
		}

		[DefaultValue(21)]
		public int UzunPeriod
		{
			get; set;
		}

		[DefaultValue(MovMethod.Exponential)]
		public MovMethod UzunMethod
		{
			get; set;
		}

		MOV movKisa, movUzun;

		//Indicator değerleri hesaplanmadan önce yaratılacak indikatörler burda tanımlanıyor.
		public override void OnInit()
		{
			movKisa = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, KisaPeriod, KisaMethod);
			movUzun = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, UzunPeriod, UzunMethod);

			PointTitle.Add(0, new Dictionary<int, IIndicatorIcons>());
		}

		public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
		{
			//SetLine, indikatörü grafiğe çizdirdiğimiz fonksiyondur
			SetLine(0, currentBar, 0);

			//Seçilen sembolün bardatasına Instrument.SymbolBarData şeklinde ulaşabiliriz.
			var barDataModel = Instrument.SymbolBarData;

			// Bar Boyama
			if (movKisa.CurrentValue > movUzun.CurrentValue)
			{
				PaintBar(currentBar, Colors.Green.ToString());
			}
			if (movKisa.CurrentValue < movUzun.CurrentValue)
			{
				PaintBar(currentBar, Colors.Red.ToString());
			}

			// Al ikonu
			if (CrossAbove(movKisa, movUzun))
			{
				var iconkonum = barDataModel.Low[currentBar];
				SetPointTitle(0, currentBar, "AL", IconLocation.BelowTheChart, iconkonum, true, "GREEN");
				SetLine(0, currentBar, 1);
			}

			// sat ikonu
			if (CrossBelow(movKisa, movUzun))
			{
				var iconkonum = barDataModel.High[currentBar];
				SetPointTitle(0, currentBar, "SAT", IconLocation.AboveTheChart, iconkonum, true, "RED");
				SetLine(0, currentBar, -1);
			}

		}

	}
}

 

(15,682 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.



7,634 soru
7,639 cevap
4,448 yorum
10,826 kullanıcı