0 beğenilme 0 beğenilmeme
584 kez görüntülendi
Merhaba hayırlı günler öncelikle çok özürdilerim programı yeni kullanıyorum bu soruyu sormadan önce uzun süre uğraştım fakat muvaffak olamadım

 

matriks prime daki bu explorer formulünü (hareketli ortalamaları sıkışmış mevcut emtiaları tarama)

direk mex dosyası : https://dosya.co/i2yltjv75020/HO_SIKIŞMASI_TARAMA.mex.html

formulü ;

;yuzde:=5;
K1:=mov(c,20,s);
K2:=mov(c,50,s);
K3:=mov(c,100,s);
K4:=mov(c,200,s);
Max:=max(k1,max(k2,max(k3,k4)));
Min:=min(k1,min(k2,min(k3,k4)));
Yuzde>(max-min)*100/min

 

 

matriks IQ explorer sihirbazında hangi koşulları seçersem doğru bir şekilde  kullanabilirim ?
Algoritmik Trading kategorisinde (18 puan) tarafından | 584 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

İstediğiniz tarama aşağıdaki gibidir. 

Dilerseniz inceleyiniz.

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
using Matriks.AI;
using Matriks.AI.AiParameters;
using Matriks.AI.Data;
using Matriks.Trader.Core.TraderModels;

namespace Matriks.Lean.Algotrader
{
	public class MaxMinExp : Explorer
	{
		// Strateji çalıştırılırken kullanacağımız parametreler. Eğer sembolle ilgili bir parametre ise,
		// "SymbolParameter" ile, değilse "Parameter" ile tanımlama yaparız. Parantez içindeki değerler default değerleridir.



		[Parameter(20)]
			public int MovPeriod1;

		[Parameter(MovMethod.S)]
			public MovMethod MovMovMethod1;

		[Parameter(50)]
			public int MovPeriod2;

		[Parameter(MovMethod.S)]
			public MovMethod MovMovMethod2;

		[Parameter(100)]
			public int MovPeriod3;

		[Parameter(MovMethod.S)]
			public MovMethod MovMovMethod3;

		[Parameter(200)]
			public int MovPeriod4;

		[Parameter(MovMethod.S)]
			public MovMethod MovMovMethod4;

		[Parameter(5)]
			public decimal yuzde;

		MOV mov;
		MOV mov2;
		MOV mov3;
		MOV mov4;



		public override void OnInit()
		{
			mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod1, MovMovMethod1);
			mov2 = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod2, MovMovMethod2);
			mov3 = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod3, MovMovMethod3);
			mov4 = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod4, MovMovMethod4);



			AddColumns(0);
			SetColumnText(0, "max");
			SetColumnText(1, "min");

		}


		decimal max, min;

		/// <summary>
		/// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir. 
		/// </summary>
		/// <param name="barData">Bardata ve hesaplanan gerçekleşen işleme ait detaylar</param>
		public override bool OnExplorer(List<BarDataEventArgs> bardatas)
		{
			/*
			yuzde:=5;
			K1:=mov(c,20,s);
			K2:=mov(c,50,s);
			K3:=mov(c,100,s);
			K4:=mov(c,200,s);
			Max:=max(k1,max(k2,max(k3,k4)));
			Min:=min(k1,min(k2,min(k3,k4)));
			Yuzde>(max-min)*100/min			
			*/
			max = Math.Max(mov.CurrentValue, Math.Max(mov2.CurrentValue, Math.Max(mov3.CurrentValue, mov4.CurrentValue)));
			min = Math.Min(mov.CurrentValue, Math.Min(mov2.CurrentValue, Math.Min(mov3.CurrentValue, mov4.CurrentValue)));

			SetColumn(0, max);
			SetColumn(1, min);

			if (yuzde>(max - min) * 100 / min)
			{

				return true;
			}
			return false;

		}
	}
}

İyi çalışmalar.

(11,069 puan) tarafından
7,627 soru
7,631 cevap
4,446 yorum
10,799 kullanıcı