0 beğenilme 0 beğenilmeme
663 kez görüntülendi
Merhaba ,
Bir tarama formülü oluşturmak istiyorum son 5 barda most al vermiş ve aynı zaman d+ d- yi yukarı keserek al verenlerin taramasını oluşturmak istiyorum. Kendi oluşturduğum formülde ikiside ayrı ayrı oluyor . Yardımcı olursanız sevinirim.
Algoritmik Trading kategorisinde (12 puan) tarafından | 663 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

İstemiş olduğunuz tarama hem most'un hem de di2nin son beş barda al vermesi ise,

Lütfen 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 omerbor_ : 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(14)]
			public int DiPeriod1;

		[Parameter(3)]
			public int MostPeriod1;

		[Parameter(2)]
			public decimal MostPercentage1;

		[Parameter(MovMethod.E)]
			public MovMethod MostMovMethod1;

		[Parameter(3)]
			public int BarSayisi;

		DI di;
		MOST most;



		public override void OnInit()
		{
			di = DIIndicator(Symbol, SymbolPeriod, OHLCType.Close, DiPeriod1);
			most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, MostPeriod1, MostPercentage1, MostMovMethod1);

		}


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

			var bardata = bardatas.FirstOrDefault() ? .BarData;

			for (int i = 1; i<BarSayisi; i++)
			{
				if (most.Value[1][most.CurrentIndex - i] > most.Value[0][most.CurrentIndex - i]
					&& most.Value[0][most.CurrentIndex - (i + 1)] > most.Value[1][most.CurrentIndex - (i + 1)]
					&& di.Value[0][di.CurrentIndex - i] > di.Value[1][di.CurrentIndex - i]
					&& di.Value[1][di.CurrentIndex - (i + 1)] > di.Value[0][di.CurrentIndex - (i + 1)])
					
					
					//CrossAbove(di, di, 0, 1))
				{
					return true;
				}
			}


			return false;


		}
	}
}

 

Fakat most'un son beş barda al vermesi ve di'nin son barda al vermesi ise,

Lütfen 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 omerbor : 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(14)]
			public int DiPeriod1;

		[Parameter(3)]
			public int MostPeriod1;

		[Parameter(2)]
			public decimal MostPercentage1;

		[Parameter(MovMethod.E)]
			public MovMethod MostMovMethod1;
		
				[Parameter(3)]
			public int BarSayisi;

		DI di;
		MOST most;



		public override void OnInit()
		{
			di = DIIndicator(Symbol, SymbolPeriod, OHLCType.Close, DiPeriod1);
			most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, MostPeriod1, MostPercentage1, MostMovMethod1);

		}


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

			var bardata = bardatas.FirstOrDefault() ? .BarData;

			for (int i = 1; i<BarSayisi; i++)
			{
				if (most.Value[1][most.CurrentIndex - i] > most.Value[0][most.CurrentIndex - i]
					&& most.Value[0][most.CurrentIndex - (i + 1)] > most.Value[1][most.CurrentIndex - (i + 1)] 
					&& CrossAbove(di, di, 0, 1))
				{
					return true;
				}
			}
				
		
			return false;


		}
	}
}

İyi çalışmalar.

(11,069 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,632 soru
7,636 cevap
4,448 yorum
10,801 kullanıcı