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

Merhaba 
Hazır Exp. listesinde PMAX_Bull veya PMAX_Bear ile tarama yapıyorum. Gelen sonuçlar örneğin PMAX_Bull ile tüm AL pozisyonunda olanları gösteriyor. Halbuki ben "Son Bar" da AL pozisyonuna geçeni yada "SAT"  pozisyonuna geçeni görmek istiyorum. Pozisyonun içinde olanı görmek istemiyorum.

Şurada bu konuyu tartışmıştık. İQ güncellenmeden önce Pmax i import edip bir şekilde desteğinizle çalıştırmıştık.  Şimdi bu konunun sonundaki kodlarda çalışmyor. Sanırım kodların güncellenmesi gerek.

Şöyle birşey denedim. Kodlar hata vermiyor ama yukarıdaki tanıma uygun şekilde de çalışmıyor. 
Desteğinizi rica ederim.

Amacımız : Son barda AL veya SAT pozisyonuna geçenleri görmek, sonrasında taramayı örneğin 30 dakikada tekrarla şeklinde takip edebilmek. 
 

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 PmaxNev : Explorer
	{
	    [Parameter(10)]
        public int ATRPeriod;
        [Parameter(10)]
        public int MovPeriod;
        [Parameter(3)]
        public decimal Coefficient;
        [Parameter(MovMethod.E)]
        public MovMethod MovMethod;

        PMaxIndicator pmaxIndicator;

        public override void OnInit()
        {
            pmaxIndicator = PMaxIndicators(Symbol, SymbolPeriod, ATRPeriod, MovPeriod, Coefficient, MovMethod);

            AddColumns(2);
            SetColumnText(0, "PMAX_ST");
            SetColumnText(1, "PMAX_KLine");
			SetColumnText(2, "EmirYönü");
        }

        public override bool OnExplorer(List<BarDataEventArgs> bardatas)
        {
			var currentBar = bardatas.Last().BarDataIndex;
			
            SetColumn(0, Math.Round(pmaxIndicator.StLine.CurrentValue, 4));
            SetColumn(1, Math.Round(pmaxIndicator.KLine.CurrentValue, 4));
			
			
            if (pmaxIndicator.KLine.CurrentValue > pmaxIndicator.StLine.CurrentValue)
                return true;
            return false;
			
			
			if (pmaxIndicator.Value[1][currentBar - 1] < pmaxIndicator.Value[0][currentBar - 1] && pmaxIndicator.Value[1][currentBar] > pmaxIndicator.Value[0][currentBar])
			{
				SetColumn(2, "AL");
				return true;
			}
			
			else if (pmaxIndicator.Value[0][currentBar - 1] < pmaxIndicator.Value[1][currentBar - 1] && pmaxIndicator.Value[0][currentBar] > pmaxIndicator.Value[1][currentBar])
			{
				SetColumn(2, "SAT");
				return true;
				}
			
			
        }
		
		
		
	}
	
}

 

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

1 cevap

1 beğenilme 0 beğenilmeme

Merhaba,

Linkte belirtiğiniz konudaki explorer örneğini düzenledim.

Yukarıda yazdığınız örnekte Kline >STLine büyük olan ve kesişim olan sembolleri raporlayacaktır.

ilk if bloğunu kaldırıp ikinci if bloğunun sonuna else ekleyip içine return false; yazıp deneyebilirsiniz.

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 PmaxCrossExp : Explorer
	{
		[Parameter(10)]
		public int AtrPeriod;

		[Parameter(10)]
		public int MovPeriod;

		[Parameter(3)]
		public decimal Coeff;

		PMaxIndicator pmax;
		public override void OnInit()
		{
			pmax = PMaxIndicators(Symbol, SymbolPeriod, AtrPeriod, MovPeriod, Coeff, MovMethod.E);

			AddColumns(3);
			SetColumnText(0, "ST");
			SetColumnText(1, "K");
			SetColumnText(2, "EmirYönü");
		}

		public override bool OnExplorer(List<BarDataEventArgs> bardatas)
		{
			SetColumn(0, Math.Round(pmax.StLine.CurrentValue, 4));
			SetColumn(1, Math.Round(pmax.KLine.CurrentValue, 4));

			if (CrossAbove(pmax.KLine, pmax.StLine))
			{
				SetColumn(2, "AL");
				return true;
			}else if (CrossBelow(pmax.KLine, pmax.StLine))
			{
				SetColumn(2, "SAT");
				return true;
			}else
			{
				return false;
			}
		}
	}
}

 

(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,633 soru
7,639 cevap
4,448 yorum
10,858 kullanıcı