
Gagasan utama dari strategi ini adalah berdasarkan warna dari N garis K terakhir untuk memutuskan apakah akan melakukan lebih banyak atau kosong. Jika N garis K terakhir adalah hijau, maka lebih banyak; Jika N garis K terakhir adalah merah, maka kosong.
Strategi ini bergantung pada beberapa parameter penting:
Logika yang penting adalah dengan melakukan for loop melalui garis K yang paling dekat dengan numCandlesToCheck, dan secara real time menghitung jumlah garis K hijau dan garis K merah yang muncul secara berurutan. Jika garis K merah ≥numCandlesToCheck berurutan, maka lastNCandlesRed ditandai sebagai benar. Jika garis K hijau ≥numCandlesToCheck berurutan, maka lastNCandlesGreen ditandai sebagai benar.
Ketika lastNCandlesGreen adalah benar, jika argumen InverseLogic adalah salah, maka akan dihitung; jika benar, maka akan dihitung kosong. Sebaliknya, ketika lastNCandlesRed adalah benar, jika argumen InverseLogic adalah salah, maka akan dihitung kosong; jika benar, maka akan dihitung kosong.
Tidak peduli berapa banyak penutupan, barsSinceEntry akan diatur kembali ke 0 setelah membuka posisi. Jika barsSinceEntry lebih besar dari atau sama dengan numCandlesToExit, maka posisi saat ini akan dihapus.
Ini adalah strategi yang menarik untuk memanfaatkan K-line color decision, dengan menambahkan argumen yang berlawanan dengan logik yang berlawanan dengan logik yang berlawanan dengan logik yang berlawanan dengan logik yang berlawanan.
Strategi ini juga memiliki beberapa risiko yang perlu diperhatikan:
Untuk mengendalikan dan mengoptimalkan risiko tersebut, langkah-langkah berikut dapat diambil:
Strategi ini dapat dioptimalkan dari beberapa arah:
Strategi ini memiliki konsep yang jelas dan mudah dimengerti, menggunakan warna K-line sederhana untuk menentukan sinyal perdagangan. Penyesuaian parameter strategi dapat membentuk perubahan kombinasi yang kaya, sehingga penyesuaian yang optimal dilakukan untuk berbagai lingkungan dan varietas pasar.
/*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")