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

Merhabalar,

Indikator içinden Plot() fonksiyonu kullanımı için bir örnek kod var mı ?

Aşağıdaki kodu çalıştıramadım.

 

// Genel değişken
string ChartName = "Fractal";

public override void OnInit()
{
    AddChart(ChartName);
    AddChartLineName(ChartName, 1, "Fractal");
}


public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
{
    Plot(ChartName, 1, inputValue);
}


İyi çalışmalar,
Bora

Algoritmik Trading kategorisinde (16 puan) tarafından | 504 kez görüntülendi

1 cevap

2 beğenilme 0 beğenilmeme

Merhaba,

Plot() stratejilerde customChart ozelligi icin kullanilan bir fonksiyondur. Indicator builder icin SetLine() fonksiyonu kullanilmaktadir.

Indicator Builder icin bir cok sablon ornegi bulunmaktadir:

Basit bir ornek olarak asagidaki koda da bakabilirsiniz:

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

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

		MOV mov;

		public sealed override void OnInit()
		{
			mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period, MovMethod.Simple);
			//Value[0].StartIndex = Period;

		}

		/// <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 + 1)
			{
				return ;
			}

			var bardata = GetBarData();
			var close = bardata.Close[currentBar];
			decimal diff = 0;
			if (mov.CurrentValue != 0)
			{
				diff = close / mov.CurrentValue;
			}
			else
			{
				diff = 0;
			}

			SetLine(0, currentBar, diff);
			SetLine(1, currentBar, 1);

		}
	}
}


Ilginiz icin tesekkur ederiz.

(8,035 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,590 soru
7,597 cevap
4,441 yorum
10,433 kullanıcı