Strategi logika terbalik untuk N candlestick terakhir


Tanggal Pembuatan: 2023-12-26 11:00:29 Akhirnya memodifikasi: 2023-12-26 11:00:29
menyalin: 1 Jumlah klik: 696
1
fokus pada
1623
Pengikut

Strategi logika terbalik untuk N candlestick terakhir

Ringkasan

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.

Prinsip Strategi

Strategi ini bergantung pada beberapa parameter penting:

  1. numCandlesToCheck: digunakan untuk menentukan jumlah K baris yang perlu diperiksa
  2. numCandlesToExit: Menentukan jumlah K line yang perlu keluar dari posisi setelah memegang posisi
  3. inverseLogic: Parameter untuk membalikkan logika, yang membalikkan logika multivariabel asli untuk waktu nyata

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.

Analisis Keunggulan

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.

  1. Investasi inovatif yang bertentangan dengan logika pasar umum
  2. Kode yang jelas dan ringkas, mudah dipahami dan dimodifikasi
  3. Anda dapat mencari kombinasi optimal dengan menyesuaikan parameter.
  4. Strategi ini dapat terus berjalan dan menghasilkan sinyal apapun yang terjadi.

Analisis risiko

Strategi ini juga memiliki beberapa risiko yang perlu diperhatikan:

  1. Warna K-line tidak sepenuhnya mewakili situasi, melacak kemungkinan adanya sinyal yang salah
  2. Tidak dapat menentukan nilai maksimum untuk parameter numCandlesToCheck
  3. Tidak dapat menentukan nilai maksimum untuk parameter numCandlesToExit
  4. Setting parameter logika terbalik yang tidak tepat dapat menyebabkan peningkatan kerugian
  5. Masalah yang tidak dapat dikontrol secara efektif

Untuk mengendalikan dan mengoptimalkan risiko tersebut, langkah-langkah berikut dapat diambil:

  1. Menambahkan filter lain untuk menghindari sinyal yang salah, seperti penilaian tren tingkat yang lebih besar
  2. Mengambil nilai dari parameter yang berbeda untuk mencari kombinasi optimal
  3. Masukkan mekanisme pengendalian kerugian tunggal
  4. Validasi dari argumen logika terbalik

Arah optimasi

Strategi ini dapat dioptimalkan dari beberapa arah:

  1. Meningkatkan penilaian parameter penawaran untuk menghindari penipuan
  2. Nilai dari parameter optimasi numCandlesToCheck dan numCandlesToExit
  3. Indikator tren siklus besar yang digabungkan dengan sinyal filter yang salah
  4. Termasuk Stop Loss dan Stop Out Strategi
  5. Mengkaji kembali efektivitas strategi verifikasi varietas yang berbeda
  6. Perbandingan tingkat pengembalian antara logika asli dan logika terbalik

Meringkaskan

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.

Kode Sumber Strategi
/*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")