0 beğenilme 0 beğenilmeme
241 kez görüntülendi
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>

 

 

 

 

}

}
Explorer kategorisinde (12 puan) tarafından | 241 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

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"

Explorerdaki yapı tarama başladığında tüm veriler bir sefer çekilir ve koşul sağlanması halinde listelenmektedir.

AlphaTrend indikatörünün anlık değişimini takip etmek için Roc() indikatörünü kullanabilirsiniz.

AlphaTrend alphaTrend;

ROC roc;

public override void OnInit()
{
	alphaTrend = AlphaTrendIndicator(Symbol, SymbolPeriod, OHLCType.Close, 14, 1, Momentum.MFI);
	roc = ROCIndicator(alphaTrend, 1);

	AddColumns(1);
	SetColumnText(0, "Değişim");
}

public override bool OnExplorer(List<BarDataEventArgs> bardatas)
{
	SetColumn(0, roc.CurrentValue);
	return true;
}

Hazır explorer listesinde düşeni kıran örneği bulunmaktadır.

 

(15,892 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,632 soru
8,586 cevap
4,819 yorum
19,773 kullanıcı