4 beğenilme 0 beğenilmeme
2,047 kez görüntülendi

Örneğin macd, most vs. indikatörler data serisi üzerine eklendiğinde gelen çizgiler yerine sadece kesişim noktalarında aşağı kesince sat yukarı kesince al şeklinde görmek istiyorum. Bu mümkün mü?

Tradingview de bu şekilde kullanıyorum.

Grafik kategorisinde (337 puan) tarafından | 2,047 kez görüntülendi

2 Cevaplar

4 beğenilme 0 beğenilmeme
En İyi Cevap

Merhabalar,

Yeni versiyonla birlikte bu özelliği kullanıcı indikatörü tanımlama bölümüne ekledik. Diğer indikatörlerinize örnek olması açısından Most indikatörünü yeni indikatör tanımlama kısmından düzenleyerek tekrar oluşturduk. 

Örnek görsel :

Not : Alttaki kodu kopyalayıp "BuySellicon" isimli oluşturacağınız indikatör oluştur penceresine yapıştırarak kullanabilirsiniz.

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
	[IndicatorInformation("BuySellicon", IndicatorDrawingArea.OnDataSeries)]
	//Indikatörün çizgilerinin isimleri
	[IndicatorLineInformation(new []
		{
			"Most (0,1)", "ExMov (0,1)"
		})]
		public class BuySellicon : 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(3)]
			public int Period
		{
			get; set;
		}

		[DefaultValue(2)]
			public decimal Percentage
		{
			get; set;
		}

		[DefaultValue(MovMethod.E)]
			public MovMethod Method
		{
			get; set;
		}

		MOST most;

		//Eklenmek istenen indikatorün imzasını burda belirtiyoruz.
		public ACCBands accBands;

		//Indicator değerleri hesaplanmadan önce yaratılacak indikatörler burda tanımlanıyor.
		public override void OnInit()
		{
			most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period, Percentage, Method);
			PointTitle.Add(0, new Dictionary<int, IIndicatorIcons>());
		}

		/// <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)
		{
			//SetLine, indikatörü grafiğe çizdirdiğimiz fonksiyondur
			SetLine(currentBar, most.CurrentValue);
			SetLine(1, currentBar, most.ExMOV.CurrentValue);
			
			//Seçilen sembolün bardatasına Instrument.SymbolBarData şeklinde ulaşabiliriz.
			var barDataModel = Instrument.SymbolBarData;

			if (CrossAbove(most.ExMOV, most))
			{
				//Grafikte gösterilecek al iconunun konumu
				var iconkonum = barDataModel.Low[currentBar];
				SetPointTitle(0, currentBar, "AL", IconLocation.BelowTheChart, iconkonum, true, "GREEN");
			}
			if (CrossBelow(most.ExMOV, most))
			{
				var iconkonum = barDataModel.High[currentBar];
				SetPointTitle(0, currentBar, "SAT", IconLocation.AboveTheChart, iconkonum, true, "RED");
			}

		}

	}
}

 

(4,555 puan) tarafından
tarafından seçilmiş
4 beğenilme 0 beğenilmeme

İndikatör çizgileri olmadan sadece şartınızı sağlandığı barlarda AL-SAT ikonları görmek için aşağıdaki kullanıcı indikatörü kullanabilirsiniz.

Kullanıcı indikatör adının buysell olmasına dikkat ediniz.

Görsel:

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

		[DefaultValue(2)]
			public decimal Percentage
		{
			get; set;
		}

		[DefaultValue(MovMethod.E)]
			public MovMethod Method
		{
			get; set;
		}

		MOST most;

		//Eklenmek istenen indikatorün imzasını burda belirtiyoruz.
		public ACCBands accBands;

		//Indicator değerleri hesaplanmadan önce yaratılacak indikatörler burda tanımlanıyor.
		public override void OnInit()
		{
			most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period, Percentage, Method);
			PointTitle.Add(0, new Dictionary<int, IIndicatorIcons>());
		}

		/// <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)
		{
			//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;

			if (CrossAbove(most.ExMOV, most))
			{
				//Grafikte gösterilecek al iconunun konumu
				var iconkonum = barDataModel.Low[currentBar];
				SetPointTitle(0, currentBar, "AL", IconLocation.BelowTheChart, iconkonum, true, "GREEN");
			}
			if (CrossBelow(most.ExMOV, most))
			{
				var iconkonum = barDataModel.High[currentBar];
				SetPointTitle(0, currentBar, "SAT", IconLocation.AboveTheChart, iconkonum, true, "RED");
			}

		}

	}
}

 

(15,892 puan) tarafından
0 0
Bu konuda yardımcı olurmusunuz kopyala yapıştır olarak yaptığım tüm intikatörler hata veriyor ve çalışmıyor
0 0
Denedim oldu çok teşekkür ederim.
0 0
Yeni oluşturduğunuz kullanıcı indikatörü ile yukarıdaki kullanıcı indikatörünün aynı adla olması gerekir.

Aldığınız hatanın ekran görüntüsünü atabilirmisiz?
0 0

Teşekkürler adı BuySellicon bu şekilde yaptığımda hata veriyor ama  buysell bu ad ile çalışıyor

0 0
Bir sorum daha olacak  AL - SAT uyarılarına Alarm ayarlaya biliyormuyuz
0 0
evet. indikatör alarmlarından aşağı kesince yukarı kesince olarak alarm kurulabiliyor.
0 0
Programlama dilini hiç bilmeyen birisi olarak bu indikatöre nasıl alarm kurabilirim AL-SAT lar için

şimdi den tşk
0 0
programlama kodlama vs. bilgiye ihtiyacın yok ki bunun için. Alarmlara girdiğinde indikatör alarmları var oradan çok basit alarm oluşturabilirsin
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,639 soru
8,593 cevap
4,826 yorum
19,858 kullanıcı