hocam göndereceğim indikatörden bölüm ve kar al yazan yerleri kaldırabilir misinz
using System; using System.Collections.Generic; using System.Linq; using Matriks.Data.Symbol; using Matriks.Engines; using System.Windows.Media; 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 DOUBLE_ENV_V2 : 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("BTC_USDT_BIN")] public string Symbol; [Parameter(SymbolPeriod.Min)] public SymbolPeriod SymbolPeriod; [Parameter(1)] public decimal OrderQuantity; [Parameter(10)] public int Inside_Period; [Parameter(0.4)] public decimal Inside_Band_Distance; [Parameter(10)] public int Outside_Period; [Parameter(1.5)] public decimal Outside_Band_Distance; [Parameter(2)] public int MovPeriod; [Parameter(10)] public int bolum; [Parameter(20)] public int kar; ENV env_inside; ENV env_outside; MOV mov; bool islemde = false; decimal alisFiyati = 0; /// <summary> /// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri, /// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır. /// </summary> public override void OnInit() { env_inside = EnvelopeIndicator(Symbol, SymbolPeriod, OHLCType.Close, Inside_Period, Inside_Band_Distance, MovMethod.VAR); env_outside = EnvelopeIndicator(Symbol, SymbolPeriod, OHLCType.Close, Outside_Period, Outside_Band_Distance, MovMethod.VAR); mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod, MovMethod.VAR); AddSymbol(Symbol, SymbolPeriod); // Algoritmanın kalıcı veya geçici sinyal ile çalışıp çalışmayacağını belirleyen fonksiyondur. // true geçerseniz algoritma sadece yeni bar açılışlarında çalışır, bu fonksiyonu çağırmazsanız veya false geçerseniz her işlem olduğunda algoritma tetiklenir. WorkWithPermanentSignal(true); //Eger backtestte emri bir al bir sat seklinde gonderilmesi isteniyor bu true set edilir. //Alttaki satırı silerek veya false geçerek emirlerin sirayla gönderilmesini engelleyebilirsiniz. SendOrderSequential(true); } /// <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 barDataModel = GetBarData(); //CustomGraphic(barDataModel); decimal alan = (env_inside.Up.CurrentValue - env_inside.Down.CurrentValue) / bolum; decimal altSeviye = env_inside.Down.CurrentValue + alan; decimal ustSeviye = env_inside.Up.CurrentValue - alan; bool stoploss = barData.BarData.Close< env_outside.Down.CurrentValue ? true:false; //if ((env_inside.Down.CurrentValue < mov.CurrentValue) & (mov.CurrentValue < altSeviye) & !islemde) if ((env_inside.Down.CurrentValue < barData.BarData.Close) & (barData.BarData.Close < altSeviye) & !islemde) { alisFiyati = barData.BarData.Close; buy(barData.BarData.Close); } if ((env_inside.Up.CurrentValue > barData.BarData.Close) & (barData.BarData.Close > ustSeviye) & islemde) //if ((env_inside.Up.CurrentValue > mov.CurrentValue) & (mov.CurrentValue > ustSeviye) & islemde) { if (barData.BarData.Close>(alisFiyati + (alisFiyati * kar / 100))) sell(barData.BarData.Close); } if (islemde & stoploss) { Debug("Zarar Kes Calisti"); sell(barData.BarData.Close); } if (CrossAbove(mov, env_inside.Up)) { if (!islemde) { Debug("ic Envden Yukari Kirdi"); buy(barData.BarData.Close); } } if (CrossBelow(mov, env_inside.Up)) { if (islemde) { sell(barData.BarData.Close); } } } public void buy(decimal close) { SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Buy)); islemde = true; Debug("Alıs emri verildi."); Debug("Env_inside.Up:" + env_inside.Up.CurrentValue); Debug("Close:" + close); Debug("Env_inside.Down:" + env_inside.Down.CurrentValue); } public void sell(decimal close) { SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Sell)); islemde = false; Debug("Satıs emri verildi."); Debug("Env_inside.Up:" + env_inside.Up.CurrentValue); Debug("Close:" + close); Debug("Env_inside.Down:" + env_inside.Down.CurrentValue); } public void CustomGraphic(ISymbolBarData bardatamodel) { //Kripto Tunc... İyi Bayramlar...02/08/2020 } } }