0 beğenilme 0 beğenilmeme
1,564 kez görüntülendi

Merhaba. Macd üzerinde oluşan pozitif ve negatif uyumsuzları stratejime nasıl dahil edebilirim ? Örneğin pozitif uyumsuzluk oluştuğunda doğrudan alıma girsin, negatif uyumsuzluk oluştuğunda ise doğrudan satış yapsın gibi... Veya bunu BURADA cevap olarak verilen (Strateji Örneğine) stratejiye nasıl ekleyebilirim ?

Algoritmik Trading kategorisinde (156 puan) tarafından | 1,564 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

Macd için pozitif ve negatif uyumsuzluk tarama kodları aşağıdadır. 

İyi çalışmalar

Macd Pozitif Uyumsuzluk:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Indicators;

namespace Matriks.Lean.Algotrader
{
	public class RsiPU : Explorer
	{
		[Parameter(26)]
		public int LongPeriod;

		[Parameter(12)]
		public int ShortPeriod;

		[Parameter(9)]
		public int TriggerPeriod;

		[Parameter(50)]
		public int BarSayısı;

		MACD macd;

		public override void OnInit()
		{
			macd = MACDIndicator(Symbol, SymbolPeriod, OHLCType.Close, LongPeriod, ShortPeriod, TriggerPeriod);

			AddColumns(5);
			SetColumnText(0, "Bar Count");
			SetColumnText(1, "Ref Low");
			SetColumnText(2, "Close");
			SetColumnText(3, "LLV(Macd)");
			SetColumnText(4, "Macd");

		}

		public override bool OnExplorer(List<BarDataEventArgs> bardatas)
		{

			var bardata = GetBarData();
			var BarDataIndex = bardatas.FirstOrDefault().BarDataIndex;
			var LLV = LowestLow(macd, BarSayısı);

			if (LLV < macd.CurrentValue)
			{
				for (int i = 1; i <= BarSayısı; i++)
				{
					int index = Ref(macd, i) == LLV? i:0;
					if (index>1)
					{
						var refLow = bardata.Low[BarDataIndex - index];
						var close = bardata.Close[BarDataIndex];
						if (refLow >close)
						{
							SetColumn(0, index);
							SetColumn(1, refLow);
							SetColumn(2, close);
							SetColumn(3, Math.Round(LLV, 2));
							SetColumn(4, Math.Round(macd.CurrentValue, 2));
							return true;
						}
					}
				}
			}
			return false;
		}
	}
}

Macd Negatif Uyumsuzluk:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Indicators;

namespace Matriks.Lean.Algotrader
{
	public class MacdNU : Explorer
	{
		[Parameter(26)]
		public int LongPeriod;
		
		[Parameter(12)]
		public int ShortPeriod;
		
		[Parameter(9)]
		public int TriggerPeriod;

		[Parameter(50)]
		public int BarSayısı;

		MACD macd;

		public override void OnInit()
		{
			macd = MACDIndicator(Symbol, SymbolPeriod, OHLCType.Close, LongPeriod, ShortPeriod, TriggerPeriod);

			AddColumns(5);
			SetColumnText(0, "Bar Count");
			SetColumnText(1, "Ref High");
			SetColumnText(2, "Close");
			SetColumnText(3, "HHV(Macd)");
			SetColumnText(4, "Macd");

		}

		public override bool OnExplorer(List<BarDataEventArgs> bardatas)
		{

			var bardata = GetBarData();
			var BarDataIndex = bardatas.FirstOrDefault().BarDataIndex;
			var HHV = HighestHigh(macd, BarSayısı);

			if (HHV > macd.Macd.CurrentValue)
			{
				for (int i = 1; i <= BarSayısı; i++)
				{
					int index = Ref(macd, i) == HHV? i:0;
					if (index>1)
					{
						var refHigh = bardata.High[BarDataIndex - index];
						var close = bardata.Close[BarDataIndex];
						if (refHigh <close)
						{
							SetColumn(0, index);
							SetColumn(1, refHigh);
							SetColumn(2, close);
							SetColumn(3, Math.Round(HHV, 2));
							SetColumn(4, Math.Round(macd.Macd.CurrentValue, 2));
							return true;
						}
					}
				}
			}
			return false;
		}
	}
}
(4,555 puan) tarafından
0 0
merhabalar hisseleri her zaman aralığında taratıyorum herhangi bir hisse çıkmıyor(illa çıkacak diye bişey yok biliyorum) az önce rsı uyumsuzluklarını da tarattım yine bulamadı hisse ekstra başka bişey yapmaya gerek yok değil mi
1 0
Merhaba,

Örnek olarak bar sayısı 50 yi 20 yaparak denediğimde epeyce senet geldi.

Bir deneyiniz lütfen.

İyi çalışmalar.
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,635 soru
8,589 cevap
4,821 yorum
19,781 kullanıcı