
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.
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é.
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.
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.
Cette stratégie peut être optimisée dans les domaines suivants:
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.
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é.
/*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)