Merhabalar,
İstemiş olduğunuz tarama hem most'un hem de di2nin son beş barda al vermesi ise,
Lütfen inceleyiniz.
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 omerbor_ : 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(14)]
public int DiPeriod1;
[Parameter(3)]
public int MostPeriod1;
[Parameter(2)]
public decimal MostPercentage1;
[Parameter(MovMethod.E)]
public MovMethod MostMovMethod1;
[Parameter(3)]
public int BarSayisi;
DI di;
MOST most;
public override void OnInit()
{
di = DIIndicator(Symbol, SymbolPeriod, OHLCType.Close, DiPeriod1);
most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, MostPeriod1, MostPercentage1, MostMovMethod1);
}
/// <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>
public override bool OnExplorer(List<BarDataEventArgs> bardatas)
{
var bardata = bardatas.FirstOrDefault() ? .BarData;
for (int i = 1; i<BarSayisi; i++)
{
if (most.Value[1][most.CurrentIndex - i] > most.Value[0][most.CurrentIndex - i]
&& most.Value[0][most.CurrentIndex - (i + 1)] > most.Value[1][most.CurrentIndex - (i + 1)]
&& di.Value[0][di.CurrentIndex - i] > di.Value[1][di.CurrentIndex - i]
&& di.Value[1][di.CurrentIndex - (i + 1)] > di.Value[0][di.CurrentIndex - (i + 1)])
//CrossAbove(di, di, 0, 1))
{
return true;
}
}
return false;
}
}
}
Fakat most'un son beş barda al vermesi ve di'nin son barda al vermesi ise,
Lütfen inceleyiniz.
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 omerbor : 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(14)]
public int DiPeriod1;
[Parameter(3)]
public int MostPeriod1;
[Parameter(2)]
public decimal MostPercentage1;
[Parameter(MovMethod.E)]
public MovMethod MostMovMethod1;
[Parameter(3)]
public int BarSayisi;
DI di;
MOST most;
public override void OnInit()
{
di = DIIndicator(Symbol, SymbolPeriod, OHLCType.Close, DiPeriod1);
most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, MostPeriod1, MostPercentage1, MostMovMethod1);
}
/// <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>
public override bool OnExplorer(List<BarDataEventArgs> bardatas)
{
var bardata = bardatas.FirstOrDefault() ? .BarData;
for (int i = 1; i<BarSayisi; i++)
{
if (most.Value[1][most.CurrentIndex - i] > most.Value[0][most.CurrentIndex - i]
&& most.Value[0][most.CurrentIndex - (i + 1)] > most.Value[1][most.CurrentIndex - (i + 1)]
&& CrossAbove(di, di, 0, 1))
{
return true;
}
}
return false;
}
}
}
İyi çalışmalar.