Merhaba Explorer da Alpha trend indikatörün 2-5-15-60 dakikalık periyotlardaki değişimini % olarak saniyelik artıp çıktığını explorerda listelemek istiyorum ve düşeni kıranlar olarak 5-15-60 dakikada düşeni kırmış mı bunu nasıl yapabilirim
bar data değişimine göre explorerda gelen yüzdeler de saniyelik olarak değişecek şekilde ben yazmaya çalıştım ama
kripto için
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;
using System.Timers;
namespace Matriks.Lean.Algotrader
{
public class AlphaTarama : 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(16)]
public int AlphatrendPeriod1;
[Parameter(3)]
public decimal AlphatrendCoeff1;
[Parameter(Momentum.RSI)]
public Momentum AlphatrendMomentum1;
AlphaTrend alphaTrend;
AlphaTrend alphaTrendScan;
AlphaTrend alphaTrend5Min;
AlphaTrend alphaTrend15Min;
AlphaTrend alphaTrend60Min;
public override void OnInit()
{
alphaTrendScan = AlphaTrendIndicator(Symbol, SymbolPeriod, OHLCType.Close, AlphatrendPeriod1, AlphatrendCoeff1, AlphatrendMomentum1);
alphaTrend = AlphaTrendIndicator(Symbol, SymbolPeriod.Min, OHLCType.Close, AlphatrendPeriod1, AlphatrendCoeff1, AlphatrendMomentum1);
alphaTrend5Min = AlphaTrendIndicator(Symbol, SymbolPeriod.Min5, OHLCType.Close, AlphatrendPeriod1, AlphatrendCoeff1, AlphatrendMomentum1);
alphaTrend15Min = AlphaTrendIndicator(Symbol, SymbolPeriod.Min15, OHLCType.Close, AlphatrendPeriod1, AlphatrendCoeff1, AlphatrendMomentum1);
alphaTrend60Min = AlphaTrendIndicator(Symbol, SymbolPeriod.Min60, OHLCType.Close, AlphatrendPeriod1, AlphatrendCoeff1, AlphatrendMomentum1);
AddColumns(6);
SetColumnText(0, "S1");
SetColumnText(1, "S5");
SetColumnText(2, "S15");
SetColumnText(3, "S60");
}
public override bool OnExplorer(List<BarDataEventArgs> bardatas)
{
//dusenı Kıran
// trending degeri null ise dusen trendin bulunamadigi anlamina geliyor.
//Scan
var barData1S = GetBarData(Symbol, SymbolPeriod);
var ohlcData1S = GetSelectedValueFromBarData(barData1S, OHLCType.WClose);
//1 dakika
var barData1Min = GetBarData(Symbol, SymbolPeriod.Min);
var ohlcData1 = GetSelectedValueFromBarData(barData1Min, OHLCType.WClose);
//5 dakika
var barData5Min = GetBarData(Symbol, SymbolPeriod.Min5);
var ohlcData5 = GetSelectedValueFromBarData(barData5Min, OHLCType.WClose);
//15 dakika
var barData15Min = GetBarData(Symbol, SymbolPeriod.Min15);
var ohlcData15 = GetSelectedValueFromBarData(barData15Min, OHLCType.WClose);
// 60 Dk
var barData60Min = GetBarData(Symbol, SymbolPeriod.Min60);
var ohlcData60 = GetSelectedValueFromBarData(barData60Min, OHLCType.WClose);
var bardata = bardatas.FirstOrDefault() ? .BarData;
var alphaValue = alphaTrend.Value[1][alphaTrend.CurrentIndex];
var preValue = alphaTrend.Value[0][alphaTrend.CurrentIndex];
var percentage = ((alphaValue - preValue) / preValue) * 100;
var alphaValue5 = alphaTrend5Min.Value[1][alphaTrend5Min.CurrentIndex];
var preValue5 = alphaTrend5Min.Value[0][alphaTrend5Min.CurrentIndex];
var percentage5 = ((alphaValue5 - preValue5) / preValue5) * 100;
var alphaValue15 = alphaTrend15Min.Value[1][alphaTrend15Min.CurrentIndex];
var preValue15 = alphaTrend15Min.Value[0][alphaTrend15Min.CurrentIndex];
var percentage15 = ((alphaValue15 - preValue15) / preValue15) * 100;
var alphaValue60 = alphaTrend60Min.Value[1][alphaTrend60Min.CurrentIndex];
var preValue60 = alphaTrend60Min.Value[0][alphaTrend60Min.CurrentIndex];
var percentage60 = ((alphaValue60 - preValue60) / preValue60) * 100;
if (CrossAbove(alphaTrendScan, alphaTrendScan, 1, 0) && alphaTrendScan.Value[1][alphaTrendScan.CurrentIndex] < ohlcData1S)
{
SetColumn(0, Math.Round(percentage, 4));
SetColumn(1, Math.Round(percentage5, 4));
SetColumn(2, Math.Round(percentage15, 4));
SetColumn(3, Math.Round(percentage60, 4));
return true;
}
return false;
}
/// <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>
}
}