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.
Cette stratégie repose principalement sur les paramètres importants suivants:
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.
Il s'agit d'une stratégie intéressante qui utilise la couleur des bougies pour prendre des décisions, avec un paramètre
Il y a aussi quelques risques à prendre en compte pour cette stratégie:
Pour lutter contre ces risques, les mesures suivantes peuvent être adoptées pour les contrôler et les optimiser:
Les principales orientations d'optimisation de cette stratégie sont les suivantes:
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")