Stratégie de logique inverse pour les N derniers chandeliers


Date de création: 2023-12-26 11:00:29 Dernière modification: 2023-12-26 11:00:29
Copier: 1 Nombre de clics: 696
1
Suivre
1623
Abonnés

Stratégie de logique inverse pour les N derniers chandeliers

Aperçu

L’idée principale de cette stratégie est de décider de faire plus ou de faire moins en fonction de la couleur de la dernière N ligne K. Si la dernière N ligne K est verte, faites plus; si la dernière N ligne K est rouge, faites moins. Sa particularité réside dans l’ajout d’un paramètre de codage inverse de la logique de codage, qui peut être inversé par rapport à la logique d’origine.

Principe de stratégie

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

  1. numCandlesToCheck: Utilisé pour spécifier le nombre de lignes K à vérifier
  2. numCandlesToExit: spécifie le nombre de lignes K à quitter après la tenue de position
  3. inverseLogic: paramètre de logique inverse qui inverse en temps réel la logique multivariée d’origine

La logique de base est de parcourir en for seulement les lignes K les plus proches de numCandlesToCheck, et de statistiquer en temps réel le nombre de lignes K vertes et de lignes K rouges qui apparaissent de manière consécutive. Marquez lastNCandlesRed comme vrai si la ligne K rouge est ≥numCandlesToCheck. Marquez lastNCandlesGreen comme vrai si la ligne K verte est ≥numCandlesToCheck.

Lorsque lastNCandlesGreen est vrai, le plus est fait si l’inverseLogic est faux; le moins est fait si c’est vrai. Inversement, lorsque lastNCandlesRed est vrai, le plus est fait si l’inverseLogic est faux; le plus est fait si c’est vrai.

Quel que soit le nombre de prises de position, le compteur barsSinceEntry est réinitialisé à 0 après l’ouverture de la position. Lorsque barsSinceEntry est supérieur ou égal à numCandlesToExit, la position actuelle est levée.

Analyse des avantages

Il s’agit d’une stratégie intéressante qui utilise la décision de la couleur de la ligne K, avec l’ajout d’un paramètre de la colonne de logique inverse de la colonne, permettant de modifier de manière flexible la logique de la multiplication des blanchiment. Les principaux avantages sont:

  1. Une nouvelle façon de penser, qui peut être contraire à la logique générale du marché
  2. Le code est clair, concis, facile à comprendre et à modifier.
  3. On peut trouver la combinaison optimale en ajustant les paramètres
  4. La stratégie peut fonctionner de manière continue et générer des signaux quelles que soient les circonstances.

Analyse des risques

Cette stratégie comporte également des risques à prendre en compte:

  1. Les couleurs de la ligne K ne sont pas représentatives de la situation et suivent la probabilité d’un signal erroné.
  2. Impossible de déterminer la valeur maximale du paramètre numCandlesToCheck
  3. Impossible de déterminer la valeur maximale du paramètre numCandlesToExit
  4. Une mauvaise configuration des paramètres de logique inverse peut entraîner des pertes accrues
  5. L’incapacité à contrôler efficacement les pertes individuelles

Les mesures suivantes peuvent être prises pour contrôler et optimiser ces risques:

  1. Ajout d’autres filtres pour éviter les faux signaux, comme l’augmentation des niveaux de jugement de tendance
  2. Parcourir les différents paramètres pour trouver la combinaison optimale
  3. Adhésion à un mécanisme de contrôle des pertes individuelles
  4. Vérifier la validité des paramètres de logique inverse

Direction d’optimisation

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

  1. Augmentation de la détermination des paramètres de sortie pour éviter d’être piégé
  2. Optimiser les valeurs des paramètres numCandlesToCheck et numCandlesToExit
  3. Indicateur de tendance à grande périodicité combiné avec des signaux d’erreur de filtrage
  4. Adhérer à une stratégie de stop-loss et de stop-loss
  5. Rétrospective de l’efficacité des stratégies de vérification de différentes variétés
  6. Comparaison des taux de rendement de la logique originelle et de la logique inverse

Résumer

L’idée générale de la stratégie est claire et compréhensible, en utilisant une simple couleur de ligne K pour déterminer la formation du signal de négociation. L’ajustement des paramètres de la stratégie peut créer de riches variations de combinaison, ce qui permet d’optimiser l’ajustement pour différents environnements et variétés de marché.

Code source de la stratégie
/*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")