Cette stratégie est basée sur un système de base de mobilité uniforme, optimisé pour les points d’entrée spécifiques après l’émission du signal.
La logique principale est la suivante:
Calculer une moyenne mobile d’une période donnée (par exemple 20 jours)
Un signal de plus est généré lorsque le prix monte et un signal de moins lorsque le prix descend.
Il n’y a pas d’interruption immédiate après avoir reçu le signal, mais il faut attendre un meilleur prix.
Si un prix plus avantageux apparaît dans un nombre de jours spécifié (par exemple, 3 jours), l’entrée
Si ce n’est pas le cas, vous pouvez vous inscrire au cours de clôture le 5ème jour pour ne pas manquer.
Cette stratégie consiste à ne pas se précipiter après le signal, mais à chercher des opportunités de reprise de tendance après la correction, ce qui permet d’établir une position à un meilleur prix.
Optimisation de l’entrée pour obtenir de meilleurs points d’entrée
Réglez le nombre maximum de jours d’attente pour ne pas manquer
Les règles sont simples, claires et faciles à appliquer
Les temps d’attente et les seuils nécessitent des tests répétés et une optimisation
Peut-être avez-vous raté une partie de la courte ligne de tendance
La double condition de temps et de prix
La stratégie est optimisée pour obtenir de meilleurs points d’entrée en optimisant simplement l’entrée, mais l’optimisation des temps d’attente et des conditions d’entrée est essentielle à l’efficacité de la stratégie.
/*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')