Strategi kuantitatif perdagangan dua arah berdasarkan corak penyerapan candlestick K-line

OHLC VOL ATR
Tarikh penciptaan: 2024-12-12 11:27:27 Akhirnya diubah suai: 2024-12-12 11:27:27
Salin: 0 Bilangan klik: 364
1
fokus pada
1617
Pengikut

Strategi kuantitatif perdagangan dua arah berdasarkan corak penyerapan candlestick K-line

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan dua hala yang berasaskan corak penyerapan carta K. Strategi ini mengenal pasti corak yang mempunyai ciri penyerapan di pasaran dengan menganalisis hubungan arah, amplitudo dan jumlah transaksi di garisan K yang berdekatan, dan berdagang ke arah yang sesuai apabila memenuhi syarat. Strategi ini menggunakan kaedah pengurusan peratusan dana, dengan logik pembukaan posisi yang lengkap.

Prinsip Strategi

Logik utama strategi ini adalah berdasarkan tiga syarat utama:

  1. Arah K berdekatan bertentangan: arah K ditakrifkan dengan membandingkan harga bukaan dan harga tutup, meminta dua garis K berdekatan menunjukkan pergerakan bertentangan.
  2. Analisis hubungan getaran: Mengira dan membandingkan getaran harga dua baris K ((nilai mutlak perbezaan harga penutupan dan harga pembukaan), dengan menuntut getaran yang lebih besar pada baris K yang terakhir daripada yang sebelumnya.
  3. Ciri-ciri jumlah transaksi: Memerlukan jumlah transaksi pada baris K pertama lebih besar daripada baris K kedua, sementara jumlah transaksi pada baris K kedua lebih kecil daripada jumlah transaksi sebelumnya.

Apabila ketiga-tiga syarat ini dipenuhi secara serentak, strategi akan menentukan arah perdagangan berdasarkan arah garis K terkini: jika garis yang lebih, maka lebih banyak, jika garis yang lebih kosong. Strategi menggunakan kedudukan penuh untuk berdagang, dan melacak kedudukan melalui pembolehubah keadaan.

Kelebihan Strategik

  1. Analisis pelbagai dimensi: Analisis tiga dimensi yang menggabungkan bentuk harga, amplitudo dan jumlah transaksi, meningkatkan kebolehpercayaan isyarat.
  2. Perdagangan dua hala: dapat menangkap peluang dua hala di pasaran, memanfaatkan pergerakan pasaran.
  3. Pengurusan risiko yang sempurna: menggunakan pengurusan peratusan dana, dan boleh menetapkan syarat-syarat berhenti rugi secara fleksibel.
  4. Sokongan visual: Memaparkan isyarat perdagangan secara grafik untuk analisis dan pengoptimuman.
  5. Pengurusan status yang jelas: kawalan kedudukan yang tepat melalui pembolehubah status, untuk mengelakkan pembukaan kedudukan berulang.

Risiko Strategik

  1. Risiko penembusan palsu: Dalam pasaran yang bergolak, bentuk penyerapan palsu mungkin berlaku, menyebabkan isyarat yang salah.
  2. Kesan slippage: Kesan slippage yang lebih besar mungkin berlaku apabila pasaran bergelora dengan kuat, yang mempengaruhi kesan dagangan sebenar.
  3. Risiko pengurusan wang: Perdagangan dengan kedudukan penuh mungkin membawa risiko yang lebih besar.
  4. Keterlambatan isyarat: Isyarat tidak dapat disahkan berdasarkan penutupan K, mungkin terlepas masa masuk yang terbaik.

Arah pengoptimuman strategi

  1. Memperkenalkan penapis trend: disyorkan untuk menambah garis rata-rata atau penunjuk trend sebagai penapis arah untuk meningkatkan kualiti isyarat.
  2. Pengurusan modal yang optimum: saiz kedudukan boleh disesuaikan mengikut pergerakan turun naik pasaran.
  3. Peningkatan mekanisme hentikan kerugian: disyorkan untuk menetapkan hentikan kerugian dinamik dengan penunjuk ATR untuk meningkatkan keupayaan kawalan risiko.
  4. Menambah penapis masa: penapis masa boleh ditambah untuk mengelakkan masa yang tidak cekap.
  5. Pengesahan isyarat yang dioptimumkan: Indikator jumlah transaksi atau petunjuk teknikal lain boleh ditambah sebagai pengesahan tambahan.

ringkaskan

Strategi ini membina satu sistem perdagangan yang lengkap melalui analisis pelbagai dimensi mengenai bentuk K-line, amplitudo dan jumlah transaksi. Walaupun terdapat risiko tertentu, tetapi dengan arah pengoptimuman yang disyorkan, kestabilan dan kebolehpercayaan strategi dapat ditingkatkan lagi. Kelebihan utama strategi ini adalah kaedah analisis pelbagai dimensi dan mekanisme pengurusan keadaan yang baik, sesuai untuk digunakan dalam persekitaran pasaran yang bergelombang.

Kod sumber strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Candle Absorption Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Условия индикатора
// 1. Две соседних свечи должны быть разнонаправленными
condition1 = (close[1] > open[1] and close < open) or (close[1] < open[1] and close > open)

// 2. Дельта по цене открытия/закрытия у первой свечи меньше, чем у следующей
delta1 = math.abs(close[1] - open[1])
delta2 = math.abs(close - open)
condition2 = delta1 < delta2

// 3. Объем первой свечи должен быть больше, а последней меньше
condition3 = volume[1] > volume and volume < volume[2]

// Проверяем выполнение всех условий
all_conditions = condition1 and condition2 and condition3

// Определяем направление для входа
is_bullish = close > open  // Зеленая свеча больше (бычье поглощение)
is_bearish = close < open  // Красная свеча больше (медвежье поглощение)

// Переменные для отслеживания состояния позиции
var float entryPrice = na
var bool isLong = false
var bool isShort = false

// Логика генерации сигналов
buySignal = all_conditions and is_bullish and not isLong
sellSignal = all_conditions and is_bearish and not isShort

// Обработка лонгового входа
if (buySignal)
    isLong := true
    isShort := false
    entryPrice := close
    strategy.entry("Long", strategy.long)

// Обработка шортового входа
if (sellSignal)
    isLong := false
    isShort := true
    entryPrice := close
    strategy.entry("Short", strategy.short)

// Визуализация точек поглощения
// if all_conditions
//     label.new(bar_index, high, "✔", color=is_bullish ? color.green : color.red, textcolor=color.white, style=label.style_circle, size=size.small)

// Логика сброса состояния при закрытии позиции
if (strategy.position_size == 0)
    isLong := false
    isShort := false
    entryPrice := na

// Дополнительно: можно добавить стоп-лосс и тейк-профит (пример ниже)
// strategy.exit("Exit Long", from_entry="Long", stop=low - atr(14), limit=high + atr(14))
// strategy.exit("Exit Short", from_entry="Short", stop=high + atr(14), limit=low - atr(14))