using System;
using System.Collections.Generic;
using System.Linq;
using Matriks;
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 SOTT_ciftyon : MatriksAlgo
{
[SymbolParameter("FSISE")]
public string Symbol;
[Parameter(SymbolPeriod.Min)]
public SymbolPeriod SymbolPeriod1;
[Parameter(500)]
public int SOTTPeriod;
[Parameter(200)]
public int SOTTOpt;
[Parameter(20)]
public int OTTPeriod;
[Parameter(0.00d)]
public decimal OTTOpt;
[Parameter(MovMethod.VAR)]
public MovMethod SottMovMethod;
[Parameter(5000)]
public decimal BuyOrderQuantity;
[Parameter(5000)]
public decimal SellOrderQuantity;
[Parameter(5000)]
public decimal StopLevel1;
[Parameter(5000)]
public decimal StopLevel2;
SOTT sott;
public override void OnInit()
{
sott = SOTTIndicator(Symbol, SymbolPeriod1, OHLCType.Close, SOTTPeriod, SOTTOpt, OTTPeriod, OTTOpt, SottMovMethod, SottMovMethod);
AddSymbol(Symbol, SymbolPeriod1);
WorkWithPermanentSignal(true);
SendOrderSequential(true, HangiIslemleBaslasin);
}
public override void OnDataUpdate(BarDataEventArgs barData)
{
if (CrossAbove(sott, sott, 0, 1))
{
FX_Alis(Symbol, BuyOrderQuantity);
}
if (CrossBelow(sott, sott, 0, 1))
{
FX_Satis(Symbol, SellOrderQuantity);
}
}
[Parameter(true)]
public bool AcigaSatisYapilsin;
[Parameter(Side.All)]
public Side HangiIslemleBaslasin;
public bool FX_Alis(string sembol, decimal quantity)
{
bool sonuc = false;
if (LastOrderSide.Obj != Side.Buy)
{
var _quantity = (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin) ? quantity:(LastOrderSideForShort.Obj == Side.All) ? quantity:quantity * 2;
SendMarketOrder(sembol, _quantity, OrderSide.Buy);
TakeProfit(Symbol, SyntheticOrderPriceType.PricePoint, StopLevel1, includeAfterSession:false);
Debug("Alış emri gönderildi.[ " + _quantity + " adet ]");
LastOrderSideForShort = LastOrderSide;
sentetikEmirdenMI = false;
sonuc = true;
}
return sonuc;
}
public bool FX_Satis(string sembol, decimal quantity)
{
bool sonuc = false;
if (LastOrderSide.Obj != Side.Sell)
{
var _quantity = (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin) ? quantity:(LastOrderSideForShort.Obj == Side.All) ? quantity:quantity * 2;
SendMarketOrder(sembol, _quantity, OrderSide.Sell);
TakeProfit(Symbol, SyntheticOrderPriceType.PricePoint, StopLevel1, includeAfterSession:false);
Debug("Satış emri gönderildi.[ " + _quantity + " adet ]");
LastOrderSideForShort = LastOrderSide;
sentetikEmirdenMI = false;
sonuc = true;
}
return sonuc;
}
bool sentetikEmirdenMI = false;
public override void OnSyntheticOrderTriggered(SyntheticAlgoOrder sOrder)
{
if (sOrder.EnableOrderSending)
{
if (AcigaSatisYapilsin)
{
LastOrderSide.Obj = Side.All;
sentetikEmirdenMI = true;
}
Debug("Sentetik emir tetiklendi");
}
}
}
}
kaldıraç dan kastınızı bilemiyorum.