Edit: Sorunu özetledim.
(MOV(c,1,s)>MOV(c,3,s)) and (c<MOV(h,1,s))
(MOV(c,1,s)<MOV(c,3,s)) and (c>MOV(l,1,s))
şeklindeki matriks formülümü iq'da;
using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using System.Windows.Media;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
namespace Matriks.Lean.Algotrader
{
public class btc_test2 : MatriksAlgo
{
[SymbolParameter("XBT_USD_BMEX")]
public string Symbol;
[Parameter(SymbolPeriod.Min)]
public SymbolPeriod SymbolPeriod;
[Parameter(100)]
public decimal Lot;
[Parameter(1)]
public int Pm1;
[Parameter(3)]
public int Pm2;
[Parameter(1)]
public int Pm3;
SMA m1, m2, m3, m4;
public override void OnInit()
{
m1 = SMAIndicator(Symbol, SymbolPeriod, OHLCType.Close, Pm1);
m2 = SMAIndicator(Symbol, SymbolPeriod, OHLCType.Close, Pm2);
m3 = SMAIndicator(Symbol, SymbolPeriod, OHLCType.High, Pm3);
m4 = SMAIndicator(Symbol, SymbolPeriod, OHLCType.Low, Pm3);
AddSymbol(Symbol, SymbolPeriod);
WorkWithPermanentSignal(true); //Sadece kalıcı sinyallerde işlem yap
SendOrderSequential(true);//Bir al bir sat kuralı
}
public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
{
var bardata = GetBarData();
var close = bardata.Close[barDataCurrentValues.LastUpdate.BarDataIndex-1];
if (m1.CurrentValue>m2.CurrentValue && close<m3.CurrentValue)
{
SendMarketOrder(Symbol, Lot, OrderSide.Buy, ChartIcon.Buy);
}
if (m1.CurrentValue<m2.CurrentValue && close>m4.CurrentValue)
{
SendMarketOrder(Symbol, Lot, OrderSide.Sell, ChartIcon.Sell);
}
}
}
}
şeklinde yazdım. Ancak canlı işlemde emir yerleri farklı geliyor. Kodda nasıl bir değişiklik yapmam lazım yardımcı olabilir misiniz?