Stratégie de sniper universelle

Auteur:ChaoZhang est là., Date: 2023-12-20 11h04 et 15 min
Les étiquettes:

img

Résumé

Cette stratégie adopte une combinaison de multiples indicateurs techniques pour mettre en œuvre une stratégie de trading à court terme polyvalente.

Principe de stratégie

  1. La stratégie utilise d'abord l'indicateur du canal du corps de la bougie, combiné avec le canal de prix le plus élevé et le plus bas, pour déterminer la direction et la force de la tendance actuelle.

  2. Il utilise ensuite l'indicateur EMA commun pour déterminer la direction de la tendance à moyen et à long terme.

  3. Ensuite, la stratégie utilise l'indicateur Hull MA pour déterminer si le prix actuel est suracheté ou survendu.

  4. Enfin, la stratégie utilise la fonction de sécurité pour ouvrir un cycle supérieur afin de déterminer la direction de la tendance du grand cycle et générer des signaux de trading.

La combinaison de plusieurs sous-stratégies permet à la stratégie de capturer les tendances des cycles intermédiaires tout en jugeant la direction générale de la tendance sur la base de cycles plus longs, réalisant ainsi une stratégie de négociation universelle polyvalente.

Analyse des avantages

Le plus grand avantage de cette stratégie est qu'elle combine plusieurs indicateurs techniques pour le trading de portefeuille, qui peuvent simultanément réaliser le suivi de tendance, le trading de réversion moyenne, le trading de rupture et d'autres méthodes de trading, ce qui est très polyvalent et s'adapte à la plupart des environnements de marché.

Les principaux avantages de cette stratégie sont les suivants:

  1. L'utilisation de l'indicateur du canal du corps de la bougie pour déterminer l'évasion de l'entité peut identifier efficacement les signaux d'évasion.

  2. L'utilisation de combinaisons EMA doubles pour filtrer les faux signaux améliore la précision du signal.

  3. L'utilisation de l'indicateur Hull MA pour déterminer les zones de surachat et de survente permet de déterminer plus précisément les points tournants.

  4. L'adoption du croisement des prix d'ouverture et de clôture des lignes K du cycle supérieur pour générer des signaux peut éviter d'être induit en erreur par le bruit.

  5. La combinaison de plusieurs méthodes de négociation rend la stratégie plus polyvalente et universelle.

Analyse des risques

Bien que la stratégie combine plusieurs indicateurs pour réaliser une stratégie de trading polyvalente, il existe encore certains risques dans le trading, principalement:

  1. Le trading de breakout est sujet à être induit en erreur par de faux breakouts et génère de faux signaux.

  2. Les transactions de réversion moyenne ont tendance à entraîner des pertes sur les marchés à fourchette.

  3. La capacité de filtrage de la combinaison double EMA est encore limitée, ce qui peut filtrer les signaux normaux.

  4. L'indicateur MA de la coque manque encore de précision dans les courbes d'ajustement.

En réponse aux risques susmentionnés, des optimisations peuvent être apportées dans les aspects suivants:

  1. Utilisez des indicateurs plus stables pour aider à juger et éviter les fausses éruptions.

  2. Augmenter les stratégies de stop loss pour contrôler les pertes uniques.

  3. Ajustez les deux paramètres EMA pour trouver la combinaison optimale.

  4. Essayez d'intégrer plus d'indicateurs pour déterminer les conditions de surachat et de survente.

Directions d'optimisation

Selon l'analyse ci-dessus, la stratégie peut être principalement optimisée dans les directions suivantes:

  1. Utiliser des combinaisons d'indicateurs plus courantes et plus stables comme jugement auxiliaire, telles que les lignes de Kalman, les bandes de Bollinger, etc.

  2. Augmenter les stratégies de stop loss pour contrôler strictement les pertes uniques.

  3. Optimisation des paramètres pour trouver la combinaison optimale de paramètres.

  4. Améliorer le jugement des modèles d'apprentissage automatique pour utiliser l'IA pour déterminer les zones surachetées et survendues.

  5. Améliorer le jugement logique adaptatif pour ajuster dynamiquement les méthodes de stratégie en fonction des différents environnements du marché.

Résumé

La stratégie combine plusieurs indicateurs pour le trading de portefeuille, réalisant une intégration organique de plusieurs méthodes de trading telles que le suivi des tendances, le trading de rupture et le trading de réversion moyenne. C'est une stratégie de trading à court terme très polyvalente et universelle. Le plus grand avantage de cette stratégie est sa large applicabilité à la plupart des environnements de marché. Elle appartient à une idée de stratégie plus universelle. Bien sûr, il y a encore certains risques dans le trading. Nous pouvons optimiser la stratégie en introduisant des indicateurs plus stables, en augmentant le stop loss, en optimisant les paramètres, en appliquant l'apprentissage automatique et de nombreux autres aspects pour améliorer davantage la performance de la stratégie. En général, il s'agit d'une stratégie de trading à court terme universelle très utile à consulter et à apprendre.


/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//╭╮╱╱╭╮╭╮╱╱╭╮
//┃╰╮╭╯┃┃┃╱╱┃┃
//╰╮┃┃╭┻╯┣╮╭┫╰━┳╮╭┳━━╮
//╱┃╰╯┃╭╮┃┃┃┃╭╮┃┃┃┃━━┫
//╱╰╮╭┫╰╯┃╰╯┃╰╯┃╰╯┣━━┃
//╱╱╰╯╰━━┻━━┻━━┻━━┻━━╯
//╭━━━┳╮╱╱╱╱╱╱╱╭╮
//┃╭━╮┃┃╱╱╱╱╱╱╱┃┃
//┃┃╱╰┫╰━┳━━┳━╮╭━╮╭━━┫┃
//┃┃╱╭┫╭╮┃╭╮┃╭╮┫╭╮┫┃━┫┃
//┃╰━╯┃┃┃┃╭╮┃┃┃┃┃┃┃┃━┫╰╮
//╰━━━┻╯╰┻╯╰┻╯╰┻╯╰┻━━┻━╯
//━╯
// http://www.vdubus.co.uk/
strategy(title='Vdub FX SniperVX3 / Strategy  v3', shorttitle='Vdub_FX_SniperVX3_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Piriod=input('720')
ch1 = request.security(syminfo.tickerid, Piriod, open)
ch2 = request.security(syminfo.tickerid, Piriod, close)
longCondition = crossover(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////

Plus de