Strategi logik terbalik untuk N terakhir batang lilin


Tarikh penciptaan: 2023-12-26 11:00:29 Akhirnya diubah suai: 2023-12-26 11:00:29
Salin: 1 Bilangan klik: 696
1
fokus pada
1623
Pengikut

Strategi logik terbalik untuk N terakhir batang lilin

Gambaran keseluruhan

Gagasan utama strategi ini adalah untuk membuat keputusan untuk melakukan lebih atau kosong berdasarkan warna N baris K terakhir. Jika N baris K terakhir adalah hijau, lakukan lebih banyak; jika N baris K terakhir adalah merah, kosong.

Prinsip Strategi

Strategi ini bergantung kepada beberapa parameter penting:

  1. numCandlesToCheck: Digunakan untuk menentukan jumlah K baris yang perlu diperiksa
  2. numCandlesToExit: Tentukan jumlah K baris yang perlu keluar dari kedudukan selepas memegang kedudukan
  3. inverseLogic: Parameter untuk logik terbalik, bertentangan dengan logik multivariate asal untuk masa nyata

Logik utama adalah untuk mengelilingi hanya K-garis yang paling dekat dengan numCandlesToCheck, dan secara real-time mengkaji jumlah K-garis hijau dan K-garis merah yang muncul secara berturut-turut. Tandakan lastNCandlesRed sebagai benar jika K-garis merah berturut-turut ≥numCandlesToCheck. Tandakan lastNCandlesGreen sebagai benar jika K-garis hijau berturut-turut ≥numCandlesToCheck.

Apabila lastNCandlesGreen adalah benar, jika argumen InverseLogic adalah palsu, maka lakukan lebih; jika benar, maka lakukan kosong. Sebaliknya, apabila lastNCandlesRed adalah benar, jika argumen InverseLogic adalah palsu, maka lakukan kosong; jika benar, maka lakukan lebih.

Tidak kira berapa banyak yang dikosongkan, barsSinceEntry akan diset semula menjadi 0 selepas membuka kedudukan. Apabila barsSinceEntry lebih besar daripada sama dengan numCandlesToExit, kedudukan semasa akan dipadamkan.

Analisis kelebihan

Ini adalah strategi yang menarik untuk menggunakan keputusan warna K-Line, dengan menambah parameter logik kebalikan, yang dapat menyesuaikan logik yang lebih banyak. Kelebihan utama:

  1. Berfikir Baru, Berinvestasi Bertentangan Dengan Logik Pasar
  2. Kod yang jelas dan ringkas, mudah difahami dan diubah suai
  3. Anda boleh mencari kombinasi optimum dengan menyesuaikan parameter.
  4. Strategi ini boleh terus berjalan untuk menghasilkan isyarat, walau apa pun yang berlaku.

Analisis risiko

Strategi ini juga mempunyai risiko yang perlu diperhatikan:

  1. Warna K-Line tidak mewakili keadaan sebenar, mengesan kemungkinan terdapat isyarat yang salah
  2. Tidak dapat menentukan nilai optimum untuk parameter numCandlesToCheck
  3. Tidak dapat menentukan nilai optimum untuk parameter numCandlesToExit
  4. Penetapan parameter logik terbalik yang tidak betul boleh menyebabkan peningkatan kerugian
  5. Kegagalan untuk mengawal kerugian tunggal

Untuk mengawal dan mengoptimumkan risiko tersebut, langkah-langkah berikut boleh diambil:

  1. Menambah penapis lain untuk mengelakkan isyarat yang salah, seperti penilaian trend pada tahap yang lebih besar
  2. Mengambil nilai dari pelbagai parameter untuk mencari kombinasi parameter yang optimum
  3. Menyertai mekanisme kawalan kerugian tunggal
  4. Memeriksa kesahihan argumen logik terbalik

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Meningkatkan penilaian parameter penarikan untuk mengelakkan terikat
  2. Nilai parameter optimum numCandlesToCheck dan numCandlesToExit
  3. Penunjuk trend kitaran besar yang menggabungkan isyarat penapis silap
  4. Ikut strategi berhenti dan hentikan
  5. Mengkaji semula keberkesanan strategi pengesahan pelbagai jenis
  6. Perbandingan kadar pulangan logik asal dan logik terbalik

ringkaskan

Strategi ini secara keseluruhan jelas dan mudah difahami, menggunakan warna garis K sederhana untuk menentukan bentuk isyarat perdagangan. Penyesuaian parameter strategi dapat membentuk perubahan kombinasi yang kaya, sehingga penyesuaian optimum dilakukan untuk keadaan dan varieti pasaran yang berbeza.

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