Merhaba, explorer sihirbazından sizler için bir örnek hazırladım.
Lütfen bu örneği test ediniz.
Aşağıda ki eğitim videolarını da mutlaka inceleyiniz.
EXPLORER SİHİRBAZI İLK ÖRNEK
VIDEO
Algoritma sihirbazı:
VIDEO
https://destek.matriksdata.com/?qa=4438/iq-algoritma-sihirbaz%C4%B1n%C4%B1-nas%C4%B1l-kullan%C4%B1r%C4%B1z
https://destek.matriksdata.com/?qa=4448/algoritma-sihirbaz%C4%B1-kullan%C4%B1m%C4%B1-%C3%B6rnekler-%C3%A7oklu-ko%C5%9Ful-olu%C5%9Fturma
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 saddd : 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(50)]
public int MovPeriod1;
[Parameter(MovMethod.S)]
public MovMethod MovMovMethod1;
[Parameter(200)]
public int MovPeriod2;
[Parameter(MovMethod.S)]
public MovMethod MovMovMethod2;
VOLUME volume;
MOV mov;
MOV mov2;
public override void OnInit()
{
volume = VolumeIndicator(Symbol, SymbolPeriod);
mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod1, MovMovMethod1);
mov2 = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod2, MovMovMethod2);
AddColumns(0);
}
/// <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;
if (volume.Value[0][volume.CurrentIndex - 2] > volume.Value[0][volume.CurrentIndex - 3] && volume.Value[0][volume.CurrentIndex - 1] > volume.Value[0][volume.CurrentIndex - 2] && volume.Value[0][volume.CurrentIndex] > volume.Value[0][volume.CurrentIndex - 1] && CrossAbove(mov, mov2, 0, 0))
{
return true;
}
return false;
}
}
}