Idea utama 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. Bahagian yang unik adalah penambahan parameter
Strategi ini terutamanya bergantung kepada parameter penting berikut:
Logik utama adalah untuk melintasi lilin terakhir numCandlesToCheck melalui gelung for, dan mengira lilin hijau dan merah berturut-turut dalam masa nyata. Jika lilin merah berturut-turut ≥numCandlesToCheck, tandakan lastNCandlesRed sebagai benar. Jika lilin hijau berturut-turut ≥numCandlesToCheck, tandakan lastNCandlesGreen sebagai benar.
Apabila lastNCandlesGreen adalah benar, pergi panjang jika inverseLogic adalah salah, sebaliknya pergi pendek. Sebaliknya, apabila lastNCandlesRed adalah benar, pergi pendek jika inverseLogic adalah salah, sebaliknya pergi panjang.
Tidak kira panjang atau pendek, kaunter barSinceEntry akan diset semula kepada 0 selepas kedudukan pembukaan. Apabila barSinceEntry lebih besar daripada atau sama dengan numCandlesToExit, kedudukan semasa akan ditutup.
Ini adalah strategi yang menarik yang menggunakan warna lilin untuk membuat keputusan, dengan parameter
Terdapat juga beberapa risiko yang perlu diperhatikan untuk strategi ini:
Untuk menangani risiko ini, langkah-langkah berikut boleh diambil untuk kawalan dan pengoptimuman:
Arah pengoptimuman utama untuk strategi ini adalah:
Idea keseluruhan strategi ini jelas dan mudah difahami, menghasilkan isyarat perdagangan hanya berdasarkan penentuan warna lilin. Penyesuaian parameter boleh membentuk variasi kombinasi yang kaya untuk pengoptimuman yang mensasarkan persekitaran dan produk pasaran yang berbeza. Juga perlu memberi perhatian kepada beberapa risiko berpotensi dan mengambil langkah-langkah yang diperlukan untuk mengawalnya. Dengan terus memperkaya kandungan strategi, strategi ini boleh menjadi yang berharga untuk terus mengoptimumkan untuk 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")