Diese Strategie optimiert die Einstiegspunkte nach Signalen aus einem grundlegenden gleitenden Durchschnittssystem.
Die Hauptlogik lautet:
Berechnung des gleitenden Durchschnitts über einen Zeitraum (z. B. 20 Tage)
Crossovers erzeugen lange/kurze Signale
Nach dem Signal, nicht sofort eintreten, sondern warten auf bessere Ebenen
Wenn innerhalb bestimmter Tage (z. B. 3 Tage) bessere Niveaus auftreten, werden Trades eingegeben.
Wenn nicht, gehen Sie am 5. Tag zum Schlusskurs ein, um nicht zu verpassen.
Dies soll auf die Wiederaufnahme von Trends nach Konsolidierungen statt auf sofort eingegangene Signale abzielen und Positionen auf verbesserten Niveaus etablieren.
Einstiegsoptimierung für bessere Einstiegsgrade
Maximale Wartezeiten verhindern vollständig fehlende Trades
Einfache und klare Regeln leicht umzusetzen
Wartezeiten und Schwellenwerte müssen optimiert werden
Kann einige kurzfristige Trendchancen verpassen
Notwendigkeit der Überwachung der zeitlichen und preislichen Bedingungen
Diese Strategie zielt darauf ab, durch einfache Einstiegsoptimierung bessere Einstiegsniveaus zu erzielen und gleichzeitig zu gewährleisten, dass Trends nicht verpasst werden.
/*backtest start: 2023-08-14 00:00:00 end: 2023-09-13 00:00:00 period: 1h 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/ // © dongyun //@version=4 strategy("等待一个更好的入场机会", overlay=true) period = input(20,'') maxwait = input(3,'') threshold = input(0.01,'') signal = 0 trend = 0.0 newtrend = 0.0 wait = 0.0 initialentry = 0.0 trend := sma(close,period) signal := nz(signal[1]) if trend > nz(trend[1]) signal := 1 else if trend < nz(trend[1]) signal := -1 wait := nz(wait[1]) initialentry := nz(initialentry[1]) if signal != signal[1] if strategy.position_size > 0 strategy.close('long',comment='trend sell') signal := -1 else if strategy.position_size < 0 strategy.close('short',comment='trend buy') signal := 1 wait := 0 initialentry := close else if signal != 0 and strategy.position_size == 0 wait := wait + 1 // test for better entry if strategy.position_size == 0 if wait >= maxwait if signal > 0 strategy.entry('long',strategy.long, comment='maxtime Long') else if signal < 0 strategy.entry('short',strategy.short, comment='maxtime Short') else if signal > 0 and close < initialentry - threshold strategy.entry('long',strategy.long, comment='delayed Long') else if signal < 0 and close > initialentry + threshold strategy.entry('short',strategy.short, comment='delayed short')