23.07.2024
0
0
0
0
Grid Trading botları için yatay ve volatil sembolleri belirlemeye yardımcı olur.



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 YatayVeVolatilTarama : Explorer
	{
		[Parameter(20)]
			public decimal AdxValue;
		[Parameter(0.3)]
			public decimal nAtrPercent;
		ATR atrDK, atr5DK, atr60DK, atr240DK, atrDAY, atrWEEK;
		ADX adxDK, adx5DK, adx60DK, adx240DK, adxDAY, adxWEEK;
		public override void OnInit()
		{
			atrDK = ATRIndicator(Symbol, SymbolPeriod, OHLCType.Close, 14);
			adxDK = ADXIndicator(Symbol, SymbolPeriod, OHLCType.Close, 14);
			atr5DK = ATRIndicator(Symbol, SymbolPeriod.Min5, OHLCType.Close, 14);
			adx5DK = ADXIndicator(Symbol, SymbolPeriod.Min5, OHLCType.Close, 14);
			atr60DK = ATRIndicator(Symbol, SymbolPeriod.Min60, OHLCType.Close, 14);
			adx60DK = ADXIndicator(Symbol, SymbolPeriod.Min60, OHLCType.Close, 14);
			atr240DK = ATRIndicator(Symbol, SymbolPeriod.Min240, OHLCType.Close, 14);
			adx240DK = ADXIndicator(Symbol, SymbolPeriod.Min240, OHLCType.Close, 14);
			atrDAY = ATRIndicator(Symbol, SymbolPeriod.Day, OHLCType.Close, 14);
			adxDAY = ADXIndicator(Symbol, SymbolPeriod.Day, OHLCType.Close, 14);
			atrWEEK = ATRIndicator(Symbol, SymbolPeriod.Week, OHLCType.Close, 14);
			adxWEEK = ADXIndicator(Symbol, SymbolPeriod.Week, OHLCType.Close, 14);

			AddColumns(13);
			
			SetColumnText(0, "  Fiyat  ");
			SetColumnText(1, "nATR - Period");
			SetColumnText(2, "ATR - Period");
			SetColumnText(3, "nATR - 5DK");
			SetColumnText(4, "ATR - 5DK");
			SetColumnText(5, "nATR - 60DK");
			SetColumnText(6, "ATR - 60DK");
			SetColumnText(7, "nATR - 240DK");
			SetColumnText(8, "ATR - 240DK");
			SetColumnText(9, "nATR - DAY");
			SetColumnText(10, "ATR - DAY");
			SetColumnText(11, "nATR - WEEK");
			SetColumnText(12, "ATR - WEEK");
		}
		public override bool OnExplorer(List<BarDataEventArgs> bardatas)
		{
			var cDK = GetSelectedValueFromBarData(GetBarData(Symbol, SymbolPeriod), OHLCType.Close);
			var c5DK = GetSelectedValueFromBarData(GetBarData(Symbol, SymbolPeriod.Min5), OHLCType.Close);
			var c60DK = GetSelectedValueFromBarData(GetBarData(Symbol, SymbolPeriod.Min60), OHLCType.Close);
			var c240DK = GetSelectedValueFromBarData(GetBarData(Symbol, SymbolPeriod.Min240), OHLCType.Close);
			var cDAY = GetSelectedValueFromBarData(GetBarData(Symbol, SymbolPeriod.Day), OHLCType.Close);
			var cWEEK = GetSelectedValueFromBarData(GetBarData(Symbol, SymbolPeriod.Week), OHLCType.Close);

			var nAtrDK = ((atrDK.CurrentValue / cDK) * 100m);
			var nAtr5DK = ((atr5DK.CurrentValue / c5DK) * 100m);
			var nAtr60DK = ((atr60DK.CurrentValue / c60DK) * 100m);
			var nAtr240DK = ((atr240DK.CurrentValue / c240DK) * 100m);
			var nAtrGUN = ((atrDAY.CurrentValue / cDAY) * 100m);
			var nAtrWEEK = ((atrWEEK.CurrentValue / cWEEK) * 100m);

			SetColumn(0, cDK);
			SetColumn(1, nAtrDK);
			SetColumn(2, atrDK.CurrentValue);
			SetColumn(3, nAtr5DK);
			SetColumn(4, atr5DK.CurrentValue);
			SetColumn(5, nAtr60DK);
			SetColumn(6, atr60DK.CurrentValue);
			SetColumn(7, nAtr240DK);
			SetColumn(8, atr240DK.CurrentValue);
			SetColumn(9, nAtrGUN);
			SetColumn(10, atrDAY.CurrentValue);
			SetColumn(11, nAtrWEEK);
			SetColumn(12, atrWEEK.CurrentValue);

			if (adxDK.Value[0][adxDK.CurrentIndex] < AdxValue && nAtrDK >= nAtrPercent)
			{
				return true;
			}
			return false;


		}
	}
}

0 Yorum