Merhabalar, kodlama ile bir strateji oluşturdum ve BBW belli bir değerden büyüktür koşulu ekledim.
https://destek.matriksdata.com/?qa=6080/pmax-ve-bbw-stratejisinde-bbw-de%C4%9Ferini-optimize-etmek
Yukarıdaki cevaptaki gibi yaptım fakat sonucu görüyorsunuz, 0.061'den büyük olma koşulu vermiş fakat alım yaptığı noktada BBW 0.0281 değeri almış.
BBW değerini nasıl OPT edebilirim?
- Soruldu
- Kategori
- Algoritmik Trading
- Görüntülenme
- 858 görüntülenme
- Durum
- Cevaplandı


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 TMOVRENKBBW : 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("ETH_USDT_BIN")] public string Symbol1; [Parameter(SymbolPeriod.Min10)] public SymbolPeriod SymbolPeriod1; [Parameter(34)] public int TillsonPeriod; [Parameter(0.236)] public decimal TillsonA; [Parameter(21)] public int BbwPeriod1; [Parameter(2)] public decimal BbwStandardDeviation1; [Parameter(MovMethod.E)] public MovMethod BbwMovMethod1; [Parameter(1)] public decimal OrderQuantity1; [Parameter(1)] public decimal OrderQuantity2; [Parameter(0.01)] public decimal BBW; TMOV tmov; BBW bbw; public override void OnInit() { tmov = TMOVIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, TillsonPeriod, TillsonA); bbw = BBWIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, BbwPeriod1, BbwStandardDeviation1, BbwMovMethod1); 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"); } /// <summary> /// Init islemleri tamamlaninca, bardatalar kullanmaya hazir hale gelince bu fonksiyon tetiklenir. Data uzerinde bir defa yapilacak islemler icin kullanilir /// </summary> public override void OnInitCompleted() { } /// <summary> /// SetTimerInterval fonksiyonu ile belirtilen sürede bir bu fonksiyon tetiklenir. /// </summary> public override void OnTimer() { } /// <summary> /// AddNewsSymbol ve AddNewsKeyword ile haberlere kayit olunmuşsa bu fonksiyon tetiklenir. /// </summary> /// <param name="newsId">Gelen haberin id'si</param> /// <param name="relatedSymbols">Gelen haberin ilişkili sembolleri</param> public override void OnNewsReceived(int newsId, List<string> relatedSymbols) { } /// <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 void OnDataUpdate(BarDataEventArgs barData) { var barData1 = GetBarData(Symbol1, SymbolPeriod1); var RefTilson1 = Ref(tmov, -1); var RefTilson2 = Ref(tmov, -2); if (tmov.CurrentValue>RefTilson1 && bbw.Value[0][bbw.CurrentIndex] > 0.01m) { SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy, includeAfterSession:false); } if (tmov.CurrentValue<RefTilson1 && bbw.Value[0][bbw.CurrentIndex] > 0.01m) { SendMarketOrder(Symbol1, OrderQuantity2, OrderSide.Sell, includeAfterSession:false); } } /// <summary> /// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir. /// </summary> /// <param name="barData">Emrin son durumu</param> public override void OnOrderUpdate(IOrder order) { } /// <summary> /// Strateji durdurulduğunda bu fonksiyon tetiklenir. /// </summary> public override void OnStopped() { } } }