Last N Candle Reverse Logic Strategi

Penulis:ChaoZhang, Tanggal: 2023-12-26 11:00:29
Tag:

img

Gambaran umum

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 logika terbalik yang dapat membalikkan logika asli. Ketika parameter logika terbalik benar, N lilin hijau terakhir akan menjadi pendek, dan N lilin merah terakhir akan menjadi panjang.

Prinsip Strategi

Strategi ini terutama didasarkan pada parameter penting berikut:

  1. numCandlesToCheck: Digunakan untuk menentukan jumlah lilin untuk diperiksa
  2. numCandlesToExit: Menentukan jumlah lilin setelah posisi pembukaan yang perlu keluar
  3. inverseLogic: Parameter logika terbalik. Ketika benar, logika panjang dan pendek asli terbalik

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.

Analisis Keuntungan

Ini adalah strategi yang menarik yang menggunakan warna lilin untuk membuat keputusan, dengan parameter inverse logic yang dapat menyesuaikan logika panjang dan pendek secara fleksibel.

  1. Ide ini baru dan dapat membentuk investasi terbalik melawan logika pasar umum
  2. Kode ini jelas dan ringkas, mudah dimengerti dan dimodifikasi
  3. Dapat menemukan kombinasi parameter optimal dengan menyesuaikan parameter
  4. Tidak peduli kondisi pasar, strategi ini dapat terus berjalan dan menghasilkan sinyal

Analisis Risiko

Ada juga beberapa risiko yang harus diperhatikan untuk strategi ini:

  1. Warna lilin tidak dapat sepenuhnya mewakili kondisi pasar, risiko melacak sinyal yang salah ada
  2. Tidak dapat menentukan nilai optimal untuk numCandlesToCheck
  3. Tidak dapat menentukan nilai optimal untuk numCandlesToExit
  4. Parameter logika terbalik yang tidak benar dapat memperkuat kerugian
  5. Tidak dapat secara efektif mengendalikan kerugian stop tunggal

Untuk mengatasi risiko ini, langkah-langkah berikut dapat diadopsi untuk kontrol dan optimalisasi:

  1. Meningkatkan filter lain untuk menghindari sinyal yang salah, misalnya menentukan tren pada jangka waktu yang lebih lama
  2. Melalui nilai parameter yang berbeda untuk menemukan kombinasi parameter optimal
  3. Tambahkan mekanisme stop loss untuk mengendalikan kerugian tunggal
  4. Memverifikasi efektivitas parameter logika terbalik

Arahan Optimasi

Arah utama optimasi untuk strategi ini adalah:

  1. Meningkatkan kondisi buku pesanan untuk menghindari terjebak
  2. Mengoptimalkan nilai numCandlesToCheck dan numCandlesToExit
  3. Tambahkan indikator tren pada jangka waktu yang lebih tinggi untuk menyaring sinyal palsu
  4. Tambahkan stop loss dan ambil keuntungan
  5. Tes balik pada produk yang berbeda untuk memverifikasi efektivitas
  6. Bandingkan kembali antara logika asli dan terbalik

Kesimpulan

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")


Lebih banyak