3.10 Stratégie de marquage des contours de l'oscillateur


Date de création: 2024-02-18 16:17:26 Dernière modification: 2024-02-18 16:17:26
Copier: 0 Nombre de clics: 750
1
Suivre
1617
Abonnés

3.10 Stratégie de marquage des contours de l’oscillateur

Aperçu

3 10 Stratégie de marquage du contour de l’oscillateur La stratégie de marquage du contour de l’oscillateur consiste à déterminer la force et la faiblesse du marché en calculant la différence entre les moyennes mobiles simples des 3e et 10e jours comme indicateur MACD, combinée à l’analyse du volume des transactions, afin de générer un signal de négociation. Cette stratégie combine à la fois les zones de prix critiques, les caractéristiques du volume des transactions et le renversement de l’indicateur MACD pour confirmer les opportunités d’entrée et de sortie.

Principe de stratégie

L’indicateur central de la stratégie est le MACD, composé d’une moyenne mobile rapide et d’une moyenne mobile lente. La ligne rapide est la moyenne mobile simple à 3 jours et la ligne lente est la moyenne mobile simple à 10 jours. Le différentiel entre eux constitue la ligne colonnade du MACD.

En outre, la stratégie combine le volume d’achat et le volume de vente de chaque ligne K avec la taille de la relation entre le volume d’achat et le volume de vente pour déterminer la force relative du marché. La méthode spécifique est la suivante: volume d’achat = volume d’achat x (prix de clôture - bas prix) ÷ ((le prix le plus élevé - le prix le plus bas); volume de vente = volume d’achat x (prix le plus élevé - prix d’achat) ÷ ((le prix le plus élevé - le prix le plus bas).

En combinant l’indicateur MACD et l’analyse du volume de transactions, la stratégie permet de juger efficacement de la direction de l’offre et de la demande et de la tendance en cours sur le marché. En même temps, la stratégie vérifie si le cours est dans la zone critique, si le MACD est effectivement inversé et si la différence de volume de transactions entre les lots est suffisamment grande pour filtrer le bruit des opérations d’impulsion et assurer une entrée de marché à haute probabilité et à haute efficacité.

Analyse des avantages

  • Utilisation de l’indicateur MACD pour déterminer la direction de la dynamique du marché
  • L’analyse de la différence entre les volumes de transaction détermine la faiblesse du marché
  • Sélection de conditions multiples pour assurer une opération à forte probabilité
  • Une stratégie de stop-loss pour maîtriser les risques

Le plus grand avantage de cette stratégie réside dans la combinaison parfaite des relations d’offre et de demande sur le marché. La courbe MACD permet de déterminer efficacement le rapport entre les forces de négociation et la direction de la dynamique du marché. L’analyse de la différence de volume permet d’identifier clairement les forces dominantes des marchés.

Analyse des risques

  • Risque de défaillance du MACD. Le MACD peut générer de faux signaux lorsque le marché se déplace ou se stabilise.
  • Risque d’échec de la transaction. Il peut y avoir une tendance à la hausse de la transaction sur le marché, ce qui réduit la précision de l’analyse de la transaction.
  • La difficulté d’optimisation des paramètres est élevée. La stratégie contient plusieurs paramètres, la difficulté d’optimisation est élevée et ne convient pas aux investisseurs dont la capacité d’ajustement des paramètres est faible.

Les risques ci-dessus peuvent être évités par les méthodes suivantes: déterminer avec précision les principales tendances du marché, éviter d’utiliser cette stratégie dans un panier de choc; attention à l’information du marché, identifier les situations où le volume de transactions est manipulé; ajuster les paramètres avec prudence, en tenant compte des recommandations des institutions professionnelles.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  • Utiliser des indicateurs tels que KD, les bandes de Brin pour remplacer ou travailler avec MACD pour améliorer la précision de jugement
  • Ajout d’un mécanisme de gestion des positions permettant un ajustement dynamique des paramètres de la stratégie
  • Optimiser le point d’arrêt et de perte pour réaliser des bénéfices plus élevés
  • Fonctionne sur plusieurs cycles de temps, améliore la stabilité

Dans l’ensemble, il est possible d’optimiser la stratégie, et les investisseurs peuvent apporter des ajustements et des améliorations appropriés en fonction de leur situation et de l’environnement du marché, afin d’améliorer l’efficacité de la stratégie.

Résumer

3 10 La stratégie de marquage du contour de l’oscillateur a réussi à intégrer l’analyse MACD, la comparaison du volume d’achat et la vérification du filtrage multiconditionnel. Elle a une forte capacité à déterminer la relation d’offre et de demande et la direction de la dynamique du marché, tout en contrôlant les risques grâce à un mécanisme de freinage intégré.

Code source de la stratégie
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("3 10 Oscillator Profile Flagging", shorttitle="3 10 Oscillator Profile Flagging", overlay=true)

signalBiasValue = input(title="Signal Bias", defval=0.26)
macdBiasValue = input(title="MACD Bias", defval=0.8)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=10)
takeProfit = input( title="Take Profit", defval=0.75)
stopLoss = input( title="Stop Loss", defval=0.5)

fast_ma = ta.sma(close, 3)
slow_ma = ta.sma(close, 10)
macd = fast_ma - slow_ma
signal = ta.sma(macd, 16)
hline(0, "Zero Line", color = color.black)

buyVolume = volume*((close-low)/(high-low))
sellVolume = volume*((high-close)/(high-low))
buyVolSlope = buyVolume - buyVolume[1]
sellVolSlope = sellVolume - sellVolume[1]
signalSlope = ( signal - signal[1] )
macdSlope = ( macd - macd[1] )
//plot(macdSlope, color=color.red, title="Total Volume")
//plot(signalSlope, color=color.green, title="Total Volume")
intrabarRange = high - low

getLookBackSlope(lookBack) => signal - signal[lookBack]
getBuyerVolBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if buyVolume[i] > sellVolume[i]
            j += 1
    j

getSellerVolBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if sellVolume[i] > buyVolume[i]
            j += 1
    j

getVolBias(lookBack) =>
    float b = 0
    float s = 0
    for i = 1 to lookBack
        b += buyVolume[i]
        s += sellVolume[i]
    b > s

getSignalBuyerBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] > signalBiasValue
            j += 1
    j

getSignalSellerBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < ( 0 - signalBiasValue )
            j += 1
    j

getSignalNoBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < signalBiasValue and signal[i] > ( 0 - signalBiasValue )
            j += 1
    j

getPriceRising(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if close[i] > close[i + 1]
            j += 1
    j


getPriceFalling(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if close[i] < close[i + 1] 
            j += 1
    j

getRangeNarrowing(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if intrabarRange[i] < intrabarRange[i + 1] 
            j+= 1
    j

getRangeBroadening(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if intrabarRange[i] > intrabarRange[i + 1] 
            j+= 1
    j

bool isNegativeSignalReversal = signalSlope < 0 and signalSlope[1] > 0
bool isNegativeMacdReversal = macdSlope < 0 and macdSlope[1] > 0

bool isPositiveSignalReversal = signalSlope > 0 and signalSlope[1] < 0
bool isPositiveMacdReversal = macdSlope > 0 and macdSlope[1] < 0

bool hasBearInversion = signalSlope > 0 and macdSlope < 0
bool hasBullInversion = signalSlope < 0 and macdSlope > 0

bool hasSignalBias = math.abs(signal) >= signalBiasValue
bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0 - signalBiasValue )

bool hasSignalBuyerBias = hasSignalBias and signal > 0
bool hasSignalSellerBias = hasSignalBias and signal < 0

bool hasPositiveMACDBias = macd > macdBiasValue
bool hasNegativeMACDBias = macd < ( 0 - macdBiasValue )

bool hasBullAntiPattern = ta.crossunder(macd, signal)
bool hasBearAntiPattern = ta.crossover(macd, signal)

bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 )
bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 )

// 7.48 Profit 52.5% 
if ( hasSignificantBuyerVolBias and getPriceRising(shortLookBack) == shortLookBack  and getBuyerVolBias(shortLookBack) == shortLookBack and hasPositiveMACDBias and hasBullInversion)
    strategy.entry("Short1", strategy.short, qty=10)
strategy.exit("TPS", "Short1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)

// 32.53 Profit 47.91%
if ( getPriceFalling(shortLookBack) and (getVolBias(shortLookBack) == false) and signalSlope < 0 and hasSignalSellerBias)
    strategy.entry("Long1", strategy.long, qty=10)
strategy.exit("TPS", "Long1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)