
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.
Cette stratégie repose principalement sur les paramètres suivants:
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.
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:
Cette stratégie comporte également des risques à prendre en compte:
Les mesures suivantes peuvent être prises pour contrôler et optimiser ces risques:
Cette stratégie peut être optimisée principalement dans les directions suivantes:
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é.
/*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")