Stratégie de rupture de prix de clôture de renversement avec stop loss oscillant

Auteur:ChaoZhang est là., Date: 2023-12-11 11:44:49 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie utilise les signaux de rupture de prix et le mécanisme d'arrêt de perte oscillant pour la gestion des risques. Il va long lorsque le prix dépasse la résistance et court lorsque le prix dépasse le support. Dans le même temps, des arrêts d'arrêt de perte oscillant et de prise de profit sont appliqués pour un meilleur contrôle des risques.

La logique de la stratégie

La stratégie repose sur les points clés suivants:

  1. Utilisation de MA pour déterminer la direction de la tendance: les MA rapides et lents sont tracés, les MA rapides qui traversent au-dessus de la tendance de la MA lente indiquent une tendance haussière, tandis que les MA rapides qui traversent au-dessous des signaux indiquent une tendance baissière.

  2. Lorsque le prix grimpe et dépasse le sommet récent, il est considéré comme franchissant le niveau de résistance, en allant long.

  3. Lorsque le prix chute et dépasse le niveau le plus bas récent, il est considéré comme brisant le niveau de support, en short.

  4. Après l'entrée, la ligne de stop loss est définie et s'ajuste en fonction des fluctuations de prix, formant un mécanisme de stop loss oscillant.

  5. Arrêtez la perte et prenez la sortie de profit.

En particulier, il utilise la moyenne des prix élevés et bas comme source, trace des EMA rapides et lents pour déterminer les tendances. Lorsque l'EMA rapide dépasse l'EMA lente et qu'un signal de rupture de résistance émerge, il va long. Lorsque l'EMA rapide tombe en dessous de l'EMA lente et qu'une rupture de support apparaît, il court. Après l'entrée, le prix le plus bas dans certaines périodes est défini comme la ligne de stop loss, s'ajuste à mesure que le prix augmente.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Rentabilité constante: suivre les tendances peut générer des gains stables sur les tendances à long terme.

  2. L'arrêt oscillant et l'arrêt protecteur réduisent rapidement les pertes.

  3. Les signaux de résistance long et de soutien court sont fiables.

  4. Les indications et les signaux sont simples et faciles à suivre.

  5. Adaptable au marché, fonctionne bien sur différents produits et conditions de marché.

Analyse des risques

Quelques risques à noter pour cette stratégie:

  1. Risque d'échec de la rupture. Le prix peut avoir un rebond ou un retrait après la rupture initiale, déclenchant un stop loss.

  2. Le risque d'optimisation des paramètres. Un mauvais réglage des paramètres conduit à trop ou trop peu de signaux. L'optimisation nécessite de la prudence.

  3. Dans des conditions extrêmes, les EMA peuvent cesser de fonctionner ou être en retard par rapport au prix.

  4. Risque d'inversion de tendance: la détention d'une position contre tendance entraîne des pertes accumulées lorsque la tendance s'inverse.

Un réglage approprié des paramètres, une grande perte d'arrêt, le strict respect des règles peuvent atténuer largement les risques ci-dessus.

Directions d'optimisation

La stratégie peut être encore améliorée par les aspects suivants:

  1. Optimisation des délais, ajustement des périodes de calcul des MAs et des tendances des prix, recherche des meilleures combinaisons.

  2. Optimisation de l'adaptabilité, réglage des paramètres pour différents produits.

  3. Optimisation de la perte d'arrêt. Testez des méthodes d'arrêt de perte plus avancées comme l'arrêt de trail, l'arrêt Chandelier.

  4. Prenez l'optimisation des profits. Adoptez des sorties adaptatives ou exponentielles pour une meilleure récompense.

  5. Ajoutez des filtres pour éviter les fausses fuites.

  6. Améliorer les signaux d'entrée, combiner plus d'indicateurs ou de modèles pour confirmer les entrées.

Conclusion

Il s'agit d'une stratégie de rupture efficace avec un bon contrôle des risques, un modèle de profit stable et un flux logique simple.


/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 30m
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/
// © EduardoMattje

//@version=4
strategy("Reversal closing price", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)

src = input(hl2, "Price source")
order_direction = input("Both", "Order direction", options=["Both", "Long", "Short"])

// EMA calculation and plot

ema_long_period = input(80, "EMA long period")
ema_short_period = input(8, "EMA short period")
ema_long = ema(src, ema_long_period)
ema_short = ema(src, ema_short_period)
ema_bull = ema_short > ema_long
ema_bear = ema_short < ema_long
plot(ema_long, "EMA long", ema_bull ? color.green : color.red, 3)
plot(ema_short, "EMA short", ema_bull ? color.green : color.red, 3)

// Settings

risk_reward_ratio = input(2.0, "Risk to reward ratio", minval=1.0, step=0.1)
stop_lookback = input(3, "Stoploss candle lookback", minval=1)
ema_cross_stop = input(true, "Close if EMA crosses in oposite direction")
allow_retracing = input(true, "Allow price retracing")

// RCP calculation

rcp_bull = low[0] < low[1] and low[0] < low[2] and close[0] > close[1]
rcp_bear = high[0] > high[1] and high[0] > high[2] and close[0] < close[1]

// Order placement

in_market = strategy.position_size != 0

long_condition = rcp_bull and ema_bull and not in_market and order_direction != "Short"
short_condition = rcp_bear and ema_bear and not in_market and order_direction != "Long"

bought = strategy.position_size[0] > strategy.position_size[1] and strategy.position_size[1] == 0
sold = strategy.position_size[0] < strategy.position_size[1] and strategy.position_size[1] == 0
closed = not in_market and in_market[1]

long_position = strategy.position_size > 0
short_position = strategy.position_size < 0

buy_price = high + syminfo.mintick
sell_price = low - syminfo.mintick

if long_condition
    strategy.entry("Long", true, stop=buy_price)
if short_condition
    strategy.entry("Short", false, stop=sell_price)
    
if allow_retracing
    better_price_long = barssince(closed) > barssince(long_condition) and barssince(long_condition) >= 1 and not in_market and ema_bull and buy_price < valuewhen(long_condition, buy_price, 0) and buy_price[0] < buy_price[1]
    if better_price_long
        strategy.cancel("Long")
        strategy.entry("Long", true, stop=buy_price)
    
    better_price_short = barssince(closed) > barssince(short_condition) and barssince(short_condition) >= 1 and not in_market and ema_bear and sell_price > valuewhen(short_condition, sell_price, 0) and sell_price[0] > sell_price[1]
    if better_price_short
        strategy.cancel("Short")
        strategy.entry("Short", false, stop=sell_price)

// Stoploss orders

stop_price = long_position ? valuewhen(bought, lowest(stop_lookback)[1] - syminfo.mintick, 0) : short_position ? valuewhen(sold, highest(3)[1] + syminfo.mintick, 0) : na
stop_comment = "Stoploss triggered"
strategy.close("Long", low <= stop_price, stop_comment)
strategy.close("Short", high >= stop_price, stop_comment)
plot(stop_price, "Stop price", color.red, 2, plot.style_linebr)

// EMA cross close orders

if ema_cross_stop
    if long_position and ema_bear
        strategy.close("Long", comment=stop_comment)
    if short_position and ema_bull
        strategy.close("Short", comment=stop_comment)

// Take profit orders

stop_ticks = abs(strategy.position_avg_price - stop_price)
take_profit_price = long_position ? valuewhen(bought, strategy.position_avg_price + stop_ticks * risk_reward_ratio, 0) : short_position ? valuewhen(sold, strategy.position_avg_price  - (stop_ticks * risk_reward_ratio), 0) : na
target_comment = "Take profit"
strategy.close("Long", high >= take_profit_price, target_comment)
strategy.close("Short", low <= take_profit_price, target_comment)
plot(take_profit_price, "Target price", color.green, 2, plot.style_linebr)


Plus de