Cette stratégie optimise les points d'entrée après les signaux d'un système de moyenne mobile de base.
La logique principale est la suivante:
Calculer la moyenne mobile sur une période (par exemple 20 jours)
Les croisements génèrent des signaux long/court
Après les signaux, n'entrez pas immédiatement mais attendez de meilleurs niveaux.
Si des niveaux meilleurs se produisent dans les jours spécifiés (par exemple 3 jours), entrer des transactions
Si ce n'est pas le cas, entrez au prix de clôture le 5ème jour pour éviter de manquer
Il s'agit de capitaliser sur la reprise des tendances après les consolidations plutôt que d'entrer immédiatement dans les signaux.
Optimisation de l'entrée pour de meilleurs niveaux d'entrée
Les jours d'attente maximaux permettent d'éviter de manquer complètement des transactions
Des règles simples et claires faciles à mettre en œuvre
Le temps d'attente et les seuils nécessitent une optimisation
Peut manquer des opportunités de tendance à court terme
Besoin de surveiller les conditions de temps et de prix
Cette stratégie vise à obtenir de meilleurs niveaux d'entrée grâce à une simple optimisation de l'entrée tout en veillant à ne pas manquer les tendances.
/*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')