
Die Hauptidee dieser Strategie ist es, nach der Farbe der letzten N K-Linien zu entscheiden, ob man mehr oder weniger macht. Wenn die letzten N K-Linien alle grün sind, macht man mehr; wenn die letzten N K-Linien alle rot sind, macht man weniger.
Diese Strategie basiert auf folgenden wichtigen Parametern:
Die Schlüssellogik besteht darin, nur K-Linien zu durchlaufen und in Echtzeit die Anzahl der Green-K-Linien und der Red-K-Linien zu ermitteln. LastNCandlesRed wird als wahr markiert, wenn eine Reihe von Red-K-Linien ≥numCandlesToCheck ist. LastNCandlesGreen wird als wahr markiert, wenn eine Reihe von Green-K-Linien ≥numCandlesToCheck ist.
Wenn lastNCandlesGreen wahr ist, wird mehr getan, wenn der InverseLogic-Argument falsch ist; wenn wahr, wird null gemacht. Im Gegensatz dazu, wenn lastNCandlesRed wahr ist, wird null gemacht, wenn der InverseLogic-Argument falsch ist; wenn wahr, wird mehr getan.
Unabhängig davon, wie viel Zeit der Kauf dauert, wird der barsSinceEntry-Zähler nach dem Eröffnen der Position auf 0 zurückgesetzt. Wenn barsSinceEntry größer als oder gleichnumCandlesToExit ist, wird die aktuelle Position ausgeglichen.
Es ist eine interessante Strategie, die K-Linien-Farbentscheidung zu nutzen, die mit den Parametern der Antenne für die Rückwärtslogik-Antenne verbunden ist, die die Logik des Mehrfach-Ausgleichs flexibel anpassen kann. Die Hauptvorteile sind:
Die Strategie birgt auch einige Risiken, die beachtet werden müssen:
Um diese Risiken zu kontrollieren und zu optimieren, können folgende Maßnahmen ergriffen werden:
Die Strategie kann vor allem in folgenden Bereichen optimiert werden:
Die Gesamtkonzeption der Strategie ist klar und verständlich, und es wird mit einfachen K-Linienfarben bestimmt, um ein Handelssignal zu bilden. Die Anpassung der Strategieparameter kann zu einer reichen Kombination von Änderungen führen, wodurch eine optimale Anpassung für verschiedene Marktumgebungen und -sorten vorgenommen wird. Gleichzeitig muss man auf einige potenzielle Risiken achten und die notwendigen Maßnahmen ergreifen, um die Risiken zu kontrollieren.
/*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")