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;
}
}
}