N terakhir lilin strategi logik terbalik

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

img

Ringkasan

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

Prinsip Strategi

Strategi ini terutamanya bergantung kepada parameter penting berikut:

  1. numCandlesToCheck: Digunakan untuk menentukan bilangan lilin untuk memeriksa
  2. numCandlesToExit: Menentukan bilangan lilin selepas kedudukan pembukaan yang perlu keluar
  3. inverseLogic: Parameter logik terbalik. Apabila benar, logik panjang dan pendek asal terbalik

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.

Analisis Kelebihan

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

  1. Idea ini adalah baru dan boleh membentuk pelaburan terbalik menentang pasaran logik biasa
  2. Kodnya jelas dan ringkas, mudah difahami dan diubahsuai
  3. Boleh mencari kombinasi parameter optimum dengan menyesuaikan parameter
  4. Tidak kira keadaan pasaran, strategi ini boleh terus berjalan dan menjana isyarat

Analisis Risiko

Terdapat juga beberapa risiko yang perlu diperhatikan untuk strategi ini:

  1. Warna lilin tidak dapat mewakili keadaan pasaran sepenuhnya, risiko mengesan isyarat yang salah wujud
  2. Tidak dapat menentukan nilai optimum untuk numCandlesToCheck
  3. Tidak dapat menentukan nilai optimum untuk numCandlesToExit
  4. Parameter logik terbalik yang tidak betul boleh memperkuat kerugian
  5. Tidak dapat mengawal kehilangan berhenti tunggal dengan berkesan

Untuk menangani risiko ini, langkah-langkah berikut boleh diambil untuk kawalan dan pengoptimuman:

  1. Meningkatkan penapis lain untuk mengelakkan isyarat yang salah, contohnya menentukan trend pada jangka masa yang lebih tinggi
  2. Melalui nilai parameter yang berbeza untuk mencari kombinasi parameter optimum
  3. Tambah mekanisme stop loss untuk mengawal kerugian tunggal
  4. Memeriksa keberkesanan parameter logik terbalik

Arahan pengoptimuman

Arah pengoptimuman utama untuk strategi ini adalah:

  1. Meningkatkan keadaan buku pesanan untuk mengelakkan terperangkap
  2. Mengoptimumkan nilai numCandlesToCheck dan numCandlesToExit
  3. Tambah penunjuk trend pada jangka masa yang lebih tinggi untuk menapis isyarat palsu
  4. Tambah stop loss dan mengambil keuntungan
  5. Ujian semula pada produk yang berbeza untuk mengesahkan keberkesanan
  6. Bandingkan pulangan antara logik asal dan terbalik

Kesimpulan

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


Lebih lanjut