Die Strategie basiert auf einem grundlegenden, beweglichen, linearen System, das auf den spezifischen Einstiegspunkten nach dem Signal optimiert ist.
Die Hauptlogik lautet:
Berechnen Sie einen Moving Average für einen bestimmten Zeitraum (z. B. 20 Tage)
Wenn der Preis über die Gleichung geht, erzeugt er ein Mehr-Signal, wenn er untergeht, ein Leersignal.
Wenn Sie ein Signal erhalten, gehen Sie nicht sofort ein, sondern warten Sie auf einen besseren Preis.
Wenn innerhalb einer bestimmten Anzahl von Tagen (z. B. 3 Tage) ein besserer Preis auftritt, wird der Eintritt
Wenn nicht, gehen Sie am fünften Tag zum Schlusskurs ein, um es nicht zu verpassen.
Diese Strategie besteht nicht darin, sich nach dem Signal zu beeilen, sondern nach einer Ausgleichsbewegung die Gelegenheit zu suchen, den Trend neu zu entwickeln, um eine Position zu einem besseren Preis aufzubauen.
Eintritts-Optimierung und bessere Eintrittspunkte
Setzen Sie die maximale Wartezeit, um nicht zu verpassen
Regeln sind einfach, klar und einfach umzusetzen
Wartezeiten und Thresholds müssen wiederholt getestet und optimiert werden.
Möglicherweise verpasst man einige Chancen im Short-Line-Trend
Doppelterfordernisse: Zeit und Preis
Die Strategie wird durch einfache Eintrittsoptimierung verbessert, um bessere Eintrittspunkte zu erhalten, ohne die Trends zu verpassen. Die Optimierung der Wartezeit und der Eintrittsbedingungen ist jedoch entscheidend für die Wirksamkeit der Strategie.
/*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')