1 - strateji çalıştırdıktan sonra pc kapanması, yanlışlıkla durdurma vb yaşandığında tekrar sıfırdan çalıştırınca mevcut portföydeki pozisyonun yönünü görmesi ve ona göre kaldığı yerden işlemlere devam etmesini istiyorum. forumu felan kurcaladım ama çok iyi c sharpta bilmediğimden yapamadım.
2 - Diğer yandan durdurup geri çalıştırdığında da kar-al/stop kısmı o anki pozisyon için çalışmıyor. açık durduğu zaman bir sonraki pozisyon için çalışıyor. Duraklatmadan sonra çalıştırıncada sentetik emirin o anki pozisyon içinde tetiklenmesin nasıl sağlarım ?
yardımcı olabilirmisiniz.
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 TOTT_kar_al_viop_Kopya : MatriksAlgo
{
// 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.
[SymbolParameter("FGARAN")]
public string Symbol;
[Parameter(SymbolPeriod.Min)]
public SymbolPeriod SymbolPeriod1;
[Parameter(40)]
public int TOTTPeriod;
[Parameter(1)]
public decimal TOTTOpt;
[Parameter(0)]
public decimal TwinOttCoef;
[Parameter(MovMethod.S)]
public MovMethod TottMovMethod;
[Parameter(1)]
public decimal BuyOrderQuantity;
[Parameter(1)]
public decimal SellOrderQuantity;
[Parameter(0)]
public decimal StopLevel1;
[Parameter(0)]
public decimal StopLevel2;
TOTT tott;
public override void OnInit()
{
AddSymbol(Symbol, SymbolPeriod1);
tott = TOTTIndicator(Symbol, SymbolPeriod1, OHLCType.Close, TOTTPeriod, TOTTOpt, TwinOttCoef, TottMovMethod);
// Gerekli başla - Açığa satış
WorkWithPermanentSignal(true);
SendOrderSequential(true, HangiIslemleBaslasin);
// #Gerekli bitti - Açığa satış
}
public override void OnDataUpdate(BarDataEventArgs barData)
{
if (CrossAbove(tott.Mov, tott.OttUp))
{
// Gerekli başla - Açığa satış
FX_Alis(Symbol, BuyOrderQuantity);
// #Gerekli bitti - Açığa satış
}
if (CrossBelow(tott.Mov, tott.OttDown))
{
// Gerekli başla - Açığa satış
FX_Satis(Symbol, SellOrderQuantity);
// #Gerekli bitti - Açığa satış
}
}
// Gerekli başla - Açığa satış
[Parameter(true)]
public bool AcigaSatisYapilsin;
[Parameter(false)]
public bool AksamSeansiniDahilEt;
[Parameter(Side.All)]
public Side HangiIslemleBaslasin;
//yön tayini için
[Parameter(2)]
public int YönAyarı;
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 * YönAyarı;
SendMarketOrder(sembol, _quantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
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 * YönAyarı;
SendMarketOrder(sembol, _quantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
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");
}
}
}
}