Les ressources ont été chargées... Je charge...

K bougies consécutives

Auteur:ChaoZhang est là., Date: 2024-05-17 13:54:06 Je vous en prie.
Les étiquettes:Le taux d'intérêtATR

img

Résumé

Cette stratégie détermine les marchés haussiers ou baissiers en fonction du nombre de bougies ascendantes ou descendantes consécutives et effectue des transactions en conséquence. Lorsque le prix de clôture est consécutivement supérieur à celui des bougies précédentes fermées pour un nombre spécifié de fois, il entre dans une position longue; lorsque le prix de clôture est consécutivement inférieur à celui des bougies précédentes fermées pour un nombre spécifié de fois, il entre dans une position courte. Stop loss et take profit sont définis, et un mécanisme de stop trailing est introduit pour protéger les bénéfices.

Principe de stratégie

  1. Enregistrez le nombre de fois où les conditions haussières et baissières consécutives sont remplies. Si la clôture est supérieure à la bougie précédente, le nombre de haussières augmente de 1 et le nombre de baissières est réinitialisé à 0; si la clôture est inférieure, le nombre de baissières augmente de 1 et le nombre de baissières est réinitialisé à 0; sinon, les deux comptes sont réinitialisés à 0.
  2. Lorsque le nombre haussier atteint le nombre spécifié k, entrez dans une position longue avec stop loss et profitez.
  3. Pour les positions longues, enregistrer le prix le plus élevé après l'entrée. Lorsque le prix le plus élevé dépasse le prix d'entrée par unités de variation minimale de prix iTGT et que la clôture descend en dessous du prix le plus élevé de iPcnt%, la position est clôturée.
  4. Lorsque le nombre baissier atteint le nombre spécifié k2, entrez dans une position courte avec stop loss et profitez.
  5. Lorsque le prix le plus bas est inférieur au prix d'entrée par unités de variation minimale de prix iTGT et que le rebond proche est supérieur au prix le plus bas par iPcnt%, fermer la position.

Les avantages de la stratégie

  1. Simple et facile à comprendre, prendre des décisions commerciales basées sur la continuité des bougies avec une logique claire.
  2. Introduit un mécanisme de trailing stop pour protéger activement les bénéfices après que le prix se déplace sur une certaine distance dans la direction favorable.
  3. La mise en place d'un stop loss et d'un take profit peut contrôler efficacement les risques et verrouiller les bénéfices.
  4. Paramètres réglables pour s'adapter aux différents marchés et styles de négociation.

Risques stratégiques

  1. Dans les marchés instables, l'ouverture et la fermeture fréquentes de positions peuvent entraîner des coûts de glissement importants.
  2. Le jugement des numéros de bougies consécutifs est affecté par le bruit du marché, qui peut entraîner des signaux fréquents.
  3. Les niveaux fixes d'arrêt des pertes et de prise de profit peuvent ne pas s'adapter aux changements de volatilité du marché.

Directions d'optimisation de la stratégie

  1. Introduire des indicateurs plus techniques, tels que les moyennes mobiles et la volatilité, pour aider à évaluer la force et la direction des tendances.
  2. Optimiser les conditions de déclenchement de l'arrêt de trail, par exemple en ajustant le pourcentage de retrait en fonction de l'ATR.
  3. Adopter des méthodes de stop loss et de take profit plus dynamiques, telles que les trailing stops et les step take profits.
  4. Optimiser les paramètres afin de trouver la combinaison optimale pour différents marchés et instruments.

Résumé

Cette stratégie capture les tendances haussières et baissières grâce à la continuité des bougies tout en définissant un stop loss et un take profit pour contrôler les risques. L'introduction d'un trailing stop peut mieux protéger les bénéfices. Cependant, elle peut générer des signaux fréquents dans les marchés agités, ce qui nécessite une optimisation supplémentaire de la fiabilité du signal.


/*backtest
start: 2024-04-16 00:00:00
end: 2024-05-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("K Consecutive Candles 數來寶V2", max_bars_back=300, overlay=true)

// 定義用戶輸入
k = input.int(3, title="Number of Consecutive Candles for Long", minval=1)
k2 = input.int(3, title="Number of Consecutive Candles for Short", minval=1)
stopLossTicks = input.int(500, title="Stop Loss (Ticks)")
takeProfitTicks = input.int(500, title="Take Profit (Ticks)")
iTGT = input.int(200,"iTGT")  // 移動停利點
iPcnt = input.int(50,"iPcnt")  // 移動停利%

var float TrailValue = 0
var float TrailExit = 0
var float  vMP = 0

BarsSinceEntry = ta.barssince(strategy.position_size == 0)

vMP := strategy.position_size

// 创建一个包含键值对的字典
addArrayData(type, value) =>
    alert_array = array.new_string()
    array.push(alert_array, '"timenow": ' + str.tostring(timenow))
    array.push(alert_array, '"seqNum": ' + str.tostring(value))
    array.push(alert_array, '"type": "' + type + '"')
    alertstring = '{' + array.join(alert_array,', ') + '}'


// 定義條件變量
var int countLong = 0  // 記錄連續多頭條件成立的次數
var int countShort = 0 // 記錄連續空頭條件成立的次數

// 計算連續大於或小於前一根的收盤價格的次數
if close > close[1]
    countLong += 1
    countShort := 0 // 重置空頭計數
else if close < close[1]
    countShort += 1
    countLong := 0 // 重置多頭計數
else
    countLong := 0
    countShort := 0

// 開設多頭倉位條件
if countLong >= k
    strategy.entry("Long Entry", strategy.long)
    strategy.exit("Exit Long", "Long Entry", loss=stopLossTicks, profit=takeProfitTicks)
    

if vMP>0
    TrailValue := ta.highest(high,BarsSinceEntry)
    TrailExit := TrailValue - iPcnt*0.01*(TrailValue - strategy.position_avg_price)
    if TrailValue > strategy.position_avg_price + iTGT * syminfo.minmove/syminfo.pricescale and close < TrailExit
        
        strategy.close("Long Entry", comment = "Trl_LX"+ str.tostring(close[0]))
// 開設空頭倉位條件
if countShort >= k2
    strategy.entry("Short Entry", strategy.short)
    strategy.exit("Exit Short", "Short Entry", loss=stopLossTicks, profit=takeProfitTicks)

if vMP<0    
    TrailValue := ta.lowest(low,BarsSinceEntry)
    TrailExit := TrailValue - iPcnt*0.01*(TrailValue - strategy.position_avg_price)
    if TrailValue < strategy.position_avg_price - iTGT * syminfo.minmove/syminfo.pricescale and close > TrailExit
        
        strategy.close("short60", comment = "Trl_SX"+ str.tostring(close[0]))






Relationnée

Plus de