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 pmaxaccalsatdeneme : 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("DOGE_TRY_BIN")] public string Symbol1; [Parameter(SymbolPeriod.Min5)] public SymbolPeriod SymbolPeriod1; [Parameter(10)] public int AccbandsPeriod1; [Parameter(0.0005)] public decimal AccbandsFactor1; [Parameter(10)] public int PmaxindicatorAtrPeriod1; [Parameter(8)] public int PmaxindicatorMovPeriod1; [Parameter(2)] public decimal PmaxindicatorCoeff1; [Parameter(MovMethod.E)] public MovMethod PmaxindicatorMovMethod1; [Parameter(1000)] public decimal OrderQuantity1; [Parameter(1000)] public decimal OrderQuantity2; ACCBands accBands; PMaxIndicator pmaxIndicator; public override void OnInit() { accBands = ACCBandsIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, AccbandsPeriod1, AccbandsFactor1); pmaxIndicator = PMaxIndicators(Symbol1, SymbolPeriod1, PmaxindicatorAtrPeriod1, PmaxindicatorMovPeriod1, PmaxindicatorCoeff1, PmaxindicatorMovMethod1); SendOrderSequential(true, Side.Buy); WorkWithPermanentSignal(true); //Alttaki fonksiyon açıldıktan sonra parametre olarak verilen saniyede bir OnTimer fonksiyonu tetiklenir. // SetTimerInterval(3600); //Alttaki fonksiyon ile tanımlanan sembol ile ilgili haber geldiğinde OnNewsReceived fonksiyonu tetiklenir. //AddNewsSymbol(Symbol); //Alttaki fonksiyon ile tanımlanan anahtar kelime ile ilgili haber geldiğinde OnNewsReceived fonksiyonu tetiklenir. //AddNewsKeyword("KAP"); } /// /// Init islemleri tamamlaninca, bardatalar kullanmaya hazir hale gelince bu fonksiyon tetiklenir. Data uzerinde bir defa yapilacak islemler icin kullanilir /// public override void OnInitComplated() { } /// /// SetTimerInterval fonksiyonu ile belirtilen sürede bir bu fonksiyon tetiklenir. /// public override void OnTimer() { } /// /// AddNewsSymbol ve AddNewsKeyword ile haberlere kayit olunmuşsa bu fonksiyon tetiklenir. /// /// Gelen haberin id'si /// Gelen haberin ilişkili sembolleri public override void OnNewsReceived(int newsId, List relatedSymbols) { } /// /// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir. /// /// Bardata ve hesaplanan gerçekleşen işleme ait detaylar public override void OnDataUpdate(BarDataEventArgs barData) { var barData1 = GetBarData(Symbol1, SymbolPeriod1); if (CrossAbove(pmaxIndicator, pmaxIndicator, 1, 0)) { SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy, includeAfterSession:false); } if (CrossAbove(accBands, barData1, OHLCType.Close, 1)) { SendMarketOrder(Symbol1, OrderQuantity2, OrderSide.Sell, includeAfterSession:false); } } /// /// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir. /// /// Emrin son durumu public override void OnOrderUpdate(IOrder order) { } } }