Stratégie de changement de structure de marché oscillante et révolutionnaire


Date de création: 2023-12-05 15:17:01 Dernière modification: 2023-12-05 15:17:01
Copier: 0 Nombre de clics: 699
1
Suivre
1619
Abonnés

Stratégie de changement de structure de marché oscillante et révolutionnaire

Aperçu

La stratégie de rupture d’oscillation (Oscillation Breakthrough - Market Structure Shift Strategy) est une stratégie de suivi des tendances qui utilise les relations entre les différentes périodes de temps pour identifier les changements de structure du marché. La stratégie utilise les relations entre les différentes périodes de temps comme signaux de changement de structure du marché pour capturer de nouvelles directions de tendance.

Principe de stratégie

La logique centrale de la stratégie est d’utiliser les formes de déglutition vers le bas et vers le haut des périodes de courte période comme signaux de changement de la structure du marché à moyen et long périodes. Plus précisément, la stratégie surveille simultanément les lignes K des périodes de courte période (comme la ligne de 60 minutes) et de courte période (comme la ligne de 15 minutes).

Une fois dans la direction, la stratégie utilise le prix le plus élevé ou le prix le plus bas de la courte période comme point de perte pour contrôler le risque. Lorsque le prix de clôture de la ligne K de la période moyenne et longue déclenche un point de rupture, la stratégie élimine le point de rupture.

Analyse des forces stratégiques

Cette stratégie présente les avantages suivants:

  1. Signal fiable de changement de structure du marché. Utilisez les relations entre les différents cycles pour juger de la structure du marché et évitez d’être trompé par le bruit d’un seul cycle.

  2. Déterminer automatiquement la direction de la nouvelle tendance. Faire automatiquement des prises de position supplémentaires en cas de changement de structure du marché, sans jugement manuel.

  3. Le contrôle des risques est en place. Le contrôle des risques utilise les prix les plus bas et les plus élevés sur de courtes périodes, ce qui aide à contrôler les pertes individuelles.

  4. Le contrôle des retraits est relativement bon. L’ouverture et la fermeture des positions sont effectuées en utilisant des valeurs maximales de courte période, ce qui permet un certain contrôle des retraits.

Analyse stratégique des risques

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

  1. Risque d’erreur de jugement de la structure du marché. Lorsque le bruit des cycles courts est trop important, les signaux de changement de structure du marché peuvent échouer et les paramètres de cycle doivent être ajustés.

  2. Le risque de renversement de tendance. Lorsque le marché fait un renversement de type V, la stratégie est difficile à contrôler. L’algorithme de stop loss peut être adapté de manière appropriée.

  3. Risque d’incompatibilité des paramètres. Si les paramètres de la période moyenne et courte ne sont pas réglés à ce moment-là, l’effet du signal peut être médiocre et nécessiter des tests d’optimisation répétés.

Orientation de l’optimisation de la stratégie

Cette stratégie peut être optimisée dans les directions suivantes:

  1. Augmenter les indicateurs cumulatifs ou les jugements de tendance pour éviter les signaux erronés lors d’un renversement de tendance

  2. Optimisation de la correspondance des paramètres des cycles longs et courts, amélioration de la qualité du signal.

  3. L’apprentissage automatique et d’autres techniques permettent d’optimiser les algorithmes de stop-loss.

  4. Ajout de filtres conditionnels supplémentaires pour les signaux trompeurs, tels que les jugements de tendance à grande échelle.

  5. Enrichir les types de stratégies, développer des stratégies dérivées et former des portefeuilles de stratégies.

Résumer

La stratégie de rupture de choc-changement de structure du marché est une stratégie de suivi plus fiable dans l’ensemble. Elle peut utiliser les changements de structure du marché pour déterminer automatiquement la direction de la nouvelle tendance, et le contrôle des risques est également bien fait.

Code source de la stratégie
/*backtest
start: 2022-11-28 00:00:00
end: 2023-12-04 00:00:00
period: 1d
basePeriod: 1h
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/
// © jl01794

//@version=5
strategy(title="ICT_MSS[PROTOTYPE]", overlay=true, initial_capital=10000, currency="USD", margin_long=15, margin_short=15, max_lines_count=500)


// INPUTS
Time_Frame  = input.timeframe("60", title="Focused Time Frame")
FTF_LTF = input.timeframe("15", title="Focused Time Frame(LTF)")
//

// SECURITY DATA [FOR ONE TIMEFRAME REFERENCE]

FTF_Close = request.security(syminfo.tickerid, Time_Frame, close)
FTF_Open = request.security(syminfo.tickerid, Time_Frame, open)
FTFLTF_High = request.security(syminfo.tickerid, FTF_LTF, ta.highest(2)) 
FTFLTF_Low = request.security(syminfo.tickerid, FTF_LTF, ta.lowest(2)) 
FTFLTF_Close = request.security(syminfo.tickerid, FTF_LTF, close)
FTFLTF_Open = request.security(syminfo.tickerid, FTF_LTF, open)

// TIME BASED CLOSE AND OPEN
_close = FTF_Close
_open = FTF_Open
_LTFclose = FTFLTF_Close
_LTFopen = FTFLTF_Open

// CANDLE STATE
greenCandle = close > open
redCandle = close < open
LTFgreenCandle = FTFLTF_Close > FTFLTF_Open
LTFredCandle = FTFLTF_Close < FTFLTF_Open

// ENGULFING TIMEFRAME REFERENCE
FTF_greenCandle = request.security(syminfo.tickerid, Time_Frame, greenCandle)
FTF_redCandle = request.security(syminfo.tickerid, Time_Frame, redCandle)
FTFLTF_greenCandle = request.security(syminfo.tickerid, FTF_LTF, LTFgreenCandle)
FTFLTF_redCandle = request.security(syminfo.tickerid, FTF_LTF, LTFredCandle)

//--------------------------------------------------------------------------------------------------------------

//ENGULFING_FTF_LTF
B_EnP_mss = FTFLTF_redCandle[1] and        // 1E PIVOT BUY
     FTFLTF_greenCandle
//


B_EnPs_mss = FTFLTF_greenCandle[1] and        // 1E PIVOT SELL
     FTFLTF_redCandle
//  

//--------------------------------------------------------------------------------------------------------------

display_LTF = timeframe.isintraday and timeframe.multiplier <= 15

//--------------------------------------------------------------------------------------------------------------

// STORED DATAS
var float EH_MSS1 = na
var float EL_MSS1 = na
var bool can_draw = false
var line l1_mss = na
var line l1s_mss = na

//--------------------------------------------------------------------------------------------------------------

// MSS BUY
if (B_EnPs_mss) and (display_LTF)                                                 
    EH_MSS1 := FTFLTF_High 
    can_draw := true                                                            
    l1_mss := line.new(bar_index, EH_MSS1, bar_index -3, EH_MSS1, color=color.purple)     
else
    if (can_draw)
        if (FTFLTF_High > EH_MSS1)                                                    
            can_draw := false                                                  
        else
            line.set_x2(l1_mss, bar_index) 
//

// MSS SELL
if (B_EnP_mss) and (display_LTF)                                                 
    EL_MSS1 := FTFLTF_Low 
    can_draw := true                                                            
    l1s_mss := line.new(bar_index, EL_MSS1, bar_index -3, EL_MSS1, color=color.purple)     
else
    if (can_draw)
        if (FTFLTF_Low < EL_MSS1)                                                    
            can_draw := false                                                  
        else
            line.set_x2(l1s_mss, bar_index) 
          

//--------------------------------------------------------------------------------------------------------------

// ORDER

// BUY
longCondition_mssB = B_EnPs_mss and FTFLTF_High and close and high[1]
openOr = FTFLTF_High 

//SELL
shortCondition_mssS = B_EnP_mss and FTFLTF_Low and close and low[1]
openOrs = FTFLTF_Low 


if (longCondition_mssB) 
    strategy.entry("Buy", strategy.long, 1, stop = openOr, when = longCondition_mssB)
//

if (shortCondition_mssS) 
    strategy.entry("Sell", strategy.short, 1, stop = openOrs, when = shortCondition_mssS)
//

// EXIT 
long_tp = open < FTFLTF_Close[1]
short_tp = open > FTFLTF_Close[1]

//if (long_tp)
    //strategy.close("Buy", qty_percent = 100, when = long_tp)
//

//if (short_tp)
    //strategy.close("Sell", qty_percent = 100, when = short_tp)
//