La dernière N bougie stratégie de logique inverse

Auteur:ChaoZhang est là., Date: le 26-12-2023 à 11h29
Les étiquettes:

img

Résumé

L'idée principale de cette stratégie est de déterminer long ou court en fonction de la couleur des dernières bougies N. Si les dernières bougies N sont vertes, allez long; si les dernières bougies N sont rouges, allez court. La partie unique est l'ajout d'un paramètre de logique inverse qui peut inverser la logique d'origine. Lorsque le paramètre de logique inverse est vrai, les dernières bougies vertes N seront courtes et les dernières bougies rouges N seront longues.

Principe de stratégie

Cette stratégie repose principalement sur les paramètres importants suivants:

  1. numCandlesToCheck: Utilisé pour spécifier le nombre de bougies à vérifier
  2. numCandlesToExit: spécifie le nombre de bougies après la position d'ouverture qui doit sortir
  3. inverseLogic: le paramètre de logique inverse.

La logique clé est de traverser les dernières bougies numCandlesToCheck à travers une boucle for et de compter les bougies vertes et rouges consécutives en temps réel. Si les bougies rouges consécutives ≥numCandlesToCheck, marquez lastNCandlesRed comme vrai. Si les bougies vertes consécutives ≥numCandlesToCheck, marquez lastNCandlesGreen comme vrai.

Lorsque lastNCandlesGreen est vrai, aller long si inverseLogic est faux, sinon aller court.

Qu'il soit long ou court, le compteur barsSinceEntry sera réinitialisé à 0 après l'ouverture de la position.

Analyse des avantages

Il s'agit d'une stratégie intéressante qui utilise la couleur des bougies pour prendre des décisions, avec un paramètre logique inverse qui peut régler de manière flexible la logique longue et courte.

  1. L'idée est nouvelle et peut constituer un investissement inverse contre la logique commune du marché
  2. Le code est clair et concis, facile à comprendre et à modifier
  3. Peut trouver la combinaison optimale de paramètres en ajustant les paramètres
  4. Quelle que soit la situation du marché, cette stratégie peut continuer à fonctionner et générer des signaux

Analyse des risques

Il y a aussi quelques risques à prendre en compte pour cette stratégie:

  1. La couleur de la bougie ne peut pas représenter pleinement les conditions du marché, il existe un risque de suivi du signal incorrect
  2. Impossible de déterminer la valeur optimale pour numCandlesToCheck
  3. Impossible de déterminer la valeur optimale pour numCandlesToExit
  4. Un paramètre de logique inverse incorrect peut amplifier les pertes
  5. Incapacité de contrôler efficacement les pertes à arrêt unique

Pour lutter contre ces risques, les mesures suivantes peuvent être adoptées pour les contrôler et les optimiser:

  1. Augmenter les autres filtres pour éviter les signaux incorrects, par exemple pour déterminer la tendance sur une période plus longue
  2. Traversez différentes valeurs de paramètres pour trouver la combinaison optimale de paramètres
  3. Ajouter un mécanisme de stop-loss pour contrôler une seule perte
  4. Vérifier l'efficacité du paramètre de logique inverse

Directions d'optimisation

Les principales orientations d'optimisation de cette stratégie sont les suivantes:

  1. Augmenter la condition du carnet de commandes pour éviter d'être pris au piège
  2. Optimiser les valeurs de numCandlesToCheck et numCandlesToExit
  3. Ajouter l'indicateur de tendance sur une période plus longue pour filtrer le faux signal
  4. Ajoutez le stop loss et le profit
  5. Test de retour sur différents produits pour vérifier l'efficacité
  6. Comparer le retour entre la logique originale et inverse

Conclusion

L'idée générale de cette stratégie est claire et facile à comprendre, générant des signaux de trading simplement basés sur la détermination de la couleur des bougies. L'ajustement des paramètres peut former de riches variations de combinaisons pour l'optimisation ciblant différents environnements et produits du marché. Il faut également prêter attention à certains risques potentiels et prendre les mesures nécessaires pour les contrôler. En enrichissant continuellement le contenu de la stratégie, cette stratégie peut devenir précieuse pour continuer à optimiser pour le trading à long terme.


/*backtest
start: 2022-12-25 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Last Number of  Candles", overlay=true)

// Define the condition for a green candle
isGreenCandle(candle) =>
    close[candle] > open[candle]

// Define the condition for a red candle
isRedCandle(candle) =>
    close[candle] < open[candle]

// Input to specify the number of candles to check
numCandlesToCheck = input(5, title="Number of Candles to Check")
numCandlesToExit = input(2, title="Number of Candles To Exit")  // Corrected the input title

// Initialize variables to count consecutive green and red candles
var int consecutiveGreenCandles = 0
var int consecutiveRedCandles = 0

// Initialize barsSinceEntry outside the loop
var int barsSinceEntry = 0

// Loop through the last "numCandlesToCheck" candles
for i = 0 to numCandlesToCheck - 1
    if isGreenCandle(i)
        consecutiveGreenCandles := consecutiveGreenCandles + 1
        consecutiveRedCandles := 0 // Reset the count for consecutive red candles
    else if isRedCandle(i)
        consecutiveRedCandles := consecutiveRedCandles + 1
        consecutiveGreenCandles := 0 // Reset the count for consecutive green candles

// Check if the last "numCandlesToCheck" candles are green or red
lastNCandlesGreen = consecutiveGreenCandles >= numCandlesToCheck
lastNCandlesRed = consecutiveRedCandles >= numCandlesToCheck

// Calculate the quantity based on the investment value and current asset price
investmentValue = input(10000, title="Investment Value")
var assetPrice = close
var quantity = investmentValue / assetPrice


inverseLogic = input(false, title="inverseLogic")

// Entry condition: Open a buy order if the last "numCandlesToCheck" candles are green
if lastNCandlesGreen
    if inverseLogic
        strategy.entry("Short", strategy.long, qty = quantity)
    else 
        strategy.entry("Buy", strategy.long, qty = quantity)// Reset barsSinceEntry when entering a trade
    barsSinceEntry := 0

// Entry condition: Open a short order if the last "numCandlesToCheck" candles are red
if lastNCandlesRed
    if inverseLogic
        strategy.entry("Buy", strategy.long, qty = quantity)

    else 
        strategy.entry("Short", strategy.short, qty = quantity)
    // Reset barsSinceEntry when entering a trade
    barsSinceEntry := 0

// Increment barsSinceEntry
barsSinceEntry := barsSinceEntry + 1

// Exit condition: Close the position after 2 bars
if barsSinceEntry >= numCandlesToExit
    strategy.close("Buy")
    strategy.close("Short")


Plus de