0 beğenilme 0 beğenilmeme
322 kez görüntülendi
Wiliiamfragdal indikatörü ile otomatik  al sat yapılabilirmi.Denemelerimden sonuç alamadım..Teşekkürler..
Algoritmik Trading kategorisinde (47 puan) tarafından | 322 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

WilliamsFractal ile yazılmış örnek bir sistem paylaşıyorum.

Lütfen inceleyiniz.

***STRATEJİLERİ TEST/DENEME ORTAMINDA SINAMADAN VE SİZİN İSTEDİĞİNİZ ŞEKİLDE ÇALIŞTIĞINA EMİN OLMADAN GERÇEK ORTAMDA HİÇBİR ZAMAN ÇALIŞTIRMAYINIZ ***

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 FractialStratejisi : 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
william fragdal......
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,639 soru
8,593 cevap
4,826 yorum
19,854 kullanıcı