Diese Strategie verwendet langfristige RMA und kurzfristige EMA-Kreuzungen, um die Trendrichtung zu bestimmen.
Verwenden Sie den langfristigen RMA und den kurzfristigen EMA, um den Trend zu bestimmen.
Wenn der Preis über den jüngsten Höchststand über bestimmte Zeiträume bricht, folgen Sie dem höchsten Höchststand als Stop-Loss.
Stellen Sie eine No-Trade-Zone um die RMA ein. Öffnen Sie keine Positionen, wenn der Preis innerhalb der Zone liegt, um Whipsaws zu vermeiden.
Einrichtung des Gewinnpreises für die Ausgangspositionen zu einem Gewinnprozentsatz nach dem Eintritt.
Der Kreuzungsprozess mit einem doppelten gleitenden Durchschnitt bestimmt zuverlässig die Trendrichtung.
Der Stop-Loss bewegt sich mit dem Trend.
Die No-Trade-Zone filtert falsche Ausbruchssignale.
Mit der Strategie Take Profit können profitable Trades aktiv geschlossen werden.
Eine Verzögerung bei der Überschreitung des gleitenden Durchschnitts kann die Verluste erhöhen.
Stopp-Loss zu nahe am Preis kann durch Lärm gestoppt werden.
Eine zu weite No-Trade-Zone kann Chancen verpassen.
Wenn man nicht rechtzeitig aufhört, kann es zu weiteren Verlusten kommen.
Mögliche Lösungen:
Optimierung der gleitenden Durchschnittsparameter zur Verringerung der Verzögerung.
Um eine Überempfindlichkeit zu verhindern, erhöhen Sie den Stop-Loss leicht.
Testen Sie die Anpassung des No-Trade-Zonen-Bereichs, um fehlende Trades zu vermeiden.
Hinzufügen anderer Stop-Loss-Mechanismen, um den maximalen Verlust zu begrenzen.
Testen Sie andere gleitende Durchschnittskombinationen, um eine bessere Passform zu finden.
Um die Stabilität zu verbessern, werden Spread, MACD usw. hinzugefügt.
Verwenden Sie maschinelles Lernen, um die Parameter intelligent zu optimieren.
Verwenden Sie die Trendstärke, um gegentrendische Trades zu vermeiden.
Optimieren Sie das Geldmanagement für eine höhere Gewinnrate.
Diese Strategie verwendet zwei gleitende Durchschnitts-Kreuzungen, um die Trendrichtung zu bestimmen, und kombiniert Trailing Stops und No-Trade-Zonen, um Trendgewinne zu erzielen.
/*backtest start: 2023-08-24 00:00:00 end: 2023-09-12 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © PatrickGwynBuckley //@version=5 //var initialCapital = strategy.equity strategy("PB Trend Scalper", "PB Trend Scalper", overlay = true) shortma = input.int(55, title="quick ma's") longma = input.int(100, title="long ma's") ema55h = ta.ema(high, shortma) ema55l = ta.ema(low, shortma) ema200h = ta.rma(high, longma) ema200l = ta.rma(low, longma) stock = ta.stoch(close, high, low, 14) lev = input.int(3, title="leverage") hhVal = input.int(170, title="Highest high period") llVal = input.int(170, title="Lowest low period") hh = ta.highest(high, hhVal) ll = ta.lowest(low, llVal) //plot(stock) plot(hh, color=color.new(color.green, 50)) plot(ll, color=color.new(color.red, 50)) var float downtrade = 0 p = input.float(3.0, title="no trade zone") l = 3 emadistlong = ema200h + ((ema200h/100)*p) emadistshort = ema200l - ((ema200h/100)*p) plot(ema55h) plot(ema55l) ntl = plot(emadistlong, color=color.new(color.red, 10)) nts = plot(emadistshort, color=color.new(color.red, 10)) fill(ntl, nts, color=color.new(color.red, 90)) //position size EntryPrice = close //positionValue = initialCapital positionSize = (strategy.equity*lev) / EntryPrice //plot(strategy.equity) //standard short if ema55h < ema200l and close[2] < ema55l and close[1] > ema55l and high[1] < ema55h and close < ema55h and ema55h < emadistshort and strategy.opentrades == 0// and stock > 85 strategy.entry("short", strategy.short, qty=positionSize, comment="short") downtrade := 1 //reset count if (ta.crossunder(ema55h, ema200l)) and downtrade == 1 downtrade := 0 //standard long if ema55l > ema200h and close[2] > ema55h and close[1] < ema55h and low[1] > ema55l and close > ema55l and ema55l > emadistlong and strategy.opentrades <= 1// and stock < 15 strategy.entry("long", strategy.long, qty=positionSize, comment="long") downtrade := 0 //RESET COUNT ON MA CROSS if (ta.crossover(ema55l, ema200h)) and downtrade == 0 downtrade := 1 longclose2 = low < ll[1] or low < emadistshort //close < open and open<open[1] and open[2] < open[3] and open[3] < emadistshort//close < ta.lowest(low, 20)// shortclose2 = high > hh[1] or high>emadistlong//close > open and open>open[1] and open[2]>open[3] and open[3] > emadistlong//high > emadistlong//close > ta.highest(high, 20)// sl = 3.5 tp = input.float(6.9, title="take profit %") tp2 = 10 strategy.exit("long exit", "long", profit = (strategy.position_avg_price*(tp)))//, loss = (strategy.position_avg_price*(sl))) strategy.close("long", when = longclose2, comment = "long exit") //strategy.close("long", when = (downtrade == 1), comment = "long exit") //strategy.exit("long exit", "long2", profit = (strategy.position_avg_price*(tp2)))//, loss = (strategy.position_avg_price*(sl))) //strategy.close ("long2", when = longclose2, comment = "long exit") //strategy.close("long", when = (downtrade == 1), comment = "long exit") strategy.exit("short exit", "short", profit = (strategy.position_avg_price*(tp)))//, loss = (strategy.position_avg_price*(sl)))//, loss = 300) strategy.close("short", when = shortclose2, comment = "short exit") //strategy.close("short", when = (downtrade == 0), comment = "short exit") //strategy.exit("short exit", "short2", profit = (strategy.position_avg_price*(tp2)))//, loss = (strategy.position_avg_price*(sl))) //strategy.close ("short2", when = shortclose2, comment = "short exit") //strategy.close("short2", when = (downtrade == 0), comment = "short exit") //if (strategy.exit("long exit", "long")) //downtrade := 1 //else // downtrade := 0