0 beğenilme 0 beğenilmeme
585 kez görüntülendi
Merhabalar Williams Fractal İndikatörü ile Algoritma sihirbazından nasıl strateji olsuturabilirim. Fractal ve Bollinger band ikilisini kullanmak istiyorum. Bollinger üst bandından Fractal oluştuğunda sat. Alt bantta Fractal olsutugunda al gibi.
Algoritmik Trading kategorisinde (18 puan) tarafından | 585 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

Williams Fractal için Algoritma Sihirbazında oluşturabileceğiniz bir yapı bulunmuyor maalesef. Bununla alakalı aşağıya bir örnek kodlama yapısı ekledik.

Bahsettiğiniz sistemle alakalı ekran görüntüsü paylaşabilirseniz yada senaryonuzu detaylandırıp iqdestek@matriksdata.com adresine iletebilirseniz yardımcı olmaya çalışalım.

Ayrıca aşağıdaki sistemden de faydalanabilirsiniz.

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
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;

/*
Yeşil fractialda  enyüksek değeri tutuyor bu seviyenin üzerine çıktığında alış emri gönderiyor. 
Aynı mnatıkla kırmızı fractialda düşük değer değişkende tutuluyor seviyenin altına düştüğünde satıyor.
*/

namespace Matriks.Lean.Algotrader
{
	public class WilliamFractial1 : MatriksAlgo
	{
		[SymbolParameter("GARAN")]
		public string Symbol;

		[Parameter(SymbolPeriod.Min5)]
		public SymbolPeriod SymbolPeriod;

		[Parameter(2)]
		public int Period;

		[Parameter(1)]
		public decimal BuyOrderQuantity;

		[Parameter(1)]
		public decimal SellOrderQuantity;

		WilliamsFractal williamFractial;

		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);

			williamFractial = WilliamsFractalIndicator(Symbol, SymbolPeriod, Period);

			SendOrderSequential(true, Side.Buy);

			WorkWithPermanentSignal(true);
		}

		decimal highSeviye = decimal.MaxValue, lowSeviye = decimal.MinValue;

		public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
		{
			var barDataModel = GetBarData();

			var fr = williamFractial.Value[0][williamFractial.CurrentIndex - Period];
			var high = barDataCurrentValues.LastUpdate.High;
			var low = barDataCurrentValues.LastUpdate.Low;

			if (fr != 0)
			{
				var prevHigh2 = Ref(barDataModel, OHLCType.High, Period);
				var prevLow2 = Ref(barDataModel, OHLCType.Low, Period);

				if (fr == prevHigh2)
				{
					highSeviye = prevHigh2;
				}

				if (fr == prevLow2)
				{
					lowSeviye = prevLow2;
				}
			}

			if (high>highSeviye && LastOrderSide.Obj != Side.Buy)
			{
				SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
				Debug("Alış emri gönderildi.");
				Debug("High: " + high + " highSeviyessi: " + highSeviye);
				highSeviye = decimal.MaxValue;
				lowSeviye = decimal.MinValue;
			}

			if (lowSeviye>low && LastOrderSide.Obj != Side.Sell)
			{
				SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
				Debug("Satış emri gönderildi.");
				Debug("Low: " + low + " lowSeviyessi: " + lowSeviye);
				highSeviye = decimal.MaxValue;
				lowSeviye = decimal.MinValue;
			}

		}
	}
}

İyi çalışmalar.

(11,059 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.



8,636 soru
8,590 cevap
4,821 yorum
19,799 kullanıcı