Ide utama dari strategi ini adalah untuk menentukan panjang atau pendek berdasarkan warna N lilin terakhir. Jika N lilin terakhir hijau, pergi panjang; jika N lilin terakhir merah, pergi pendek. Bagian uniknya adalah penambahan parameter
Strategi ini terutama didasarkan pada parameter penting berikut:
Logika utama adalah untuk melintasi lilin terakhir numCandlesToCheck melalui loop for, dan menghitung lilin hijau dan merah berturut-turut secara real time. Jika lilin merah berturut-turut ≥numCandlesToCheck, tanda lastNCandlesRed sebagai benar. Jika lilin hijau berturut-turut ≥numCandlesToCheck, tanda lastNCandlesGreen sebagai benar.
Ketika lastNCandlesGreen adalah benar, pergi panjang jika inverseLogic adalah salah, sebaliknya pergi pendek. Sebaliknya, ketika lastNCandlesRed adalah benar, pergi pendek jika inverseLogic adalah salah, sebaliknya pergi panjang.
Tidak peduli panjang atau pendek, counter barSinceEntry akan diatur kembali ke 0 setelah posisi pembukaan.
Ini adalah strategi yang menarik yang menggunakan warna lilin untuk membuat keputusan, dengan parameter
Ada juga beberapa risiko yang harus diperhatikan untuk strategi ini:
Untuk mengatasi risiko ini, langkah-langkah berikut dapat diadopsi untuk kontrol dan optimalisasi:
Arah utama optimasi untuk strategi ini adalah:
Ide keseluruhan strategi ini jelas dan mudah dipahami, menghasilkan sinyal perdagangan hanya berdasarkan penentuan warna lilin. Mengatur parameter dapat membentuk variasi kombinasi yang kaya untuk optimasi yang menargetkan lingkungan dan produk pasar yang berbeda. Juga perlu memperhatikan beberapa risiko potensial dan mengambil langkah-langkah yang diperlukan untuk mengendalikannya. Dengan terus memperkaya konten strategi, strategi ini dapat menjadi yang berharga untuk terus mengoptimalkan perdagangan jangka panjang.
/*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")