Strategi Kuantitatif Purata Pergerakan Adaptif


Tarikh penciptaan: 2023-11-17 17:14:36 Akhirnya diubah suai: 2023-11-17 17:14:36
Salin: 0 Bilangan klik: 717
1
fokus pada
1621
Pengikut

Strategi Kuantitatif Purata Pergerakan Adaptif

Gambaran keseluruhan

Strategi ini adalah berdasarkan purata bergerak, parameter yang boleh disesuaikan secara automatik, yang sesuai untuk pasaran yang bergelombang dalam tempoh masa yang tinggi. Ia dapat secara automatik mencari kombinasi parameter yang terbaik dan menghasilkan isyarat perdagangan apabila harga menembusi purata bergerak.

Prinsip Strategi

Strategi ini menggunakan purata bergerak yang menyesuaikan diri sebagai isyarat perdagangan. Pertama, kira purata bergerak mudah untuk tempoh yang ditetapkan (permulaan) (CMA). Kemudian, uji kombinasi parameter di sekitar CMA untuk menentukan kombinasi mana yang paling sedikit disentuh oleh entiti K dan garis bayangan.

Secara khusus, strategi akan menguji CMA line, statistical entity line dan shadow line selepas CMA cycle plus 1 ((CMA_P1) dan minus 1 ((CMA_M1) berapa kali mereka disentuh. Jika CMA kurang daripada CMA_P1 dan CMA_M1, maka simpan CMA cycle semasa; jika CMA_P1 kurang, maka tambah CMA cycle1; jika CMA_M1 kurang, maka kurangkan CMA cycle1 ◦ Dengan itu, CMA yang lebih halus dapat dijumpai sebagai garis isyarat.

Apabila harga dari bawah ke atas menembusi CMA, ia menghasilkan isyarat beli; apabila harga dari atas ke bawah menembusi CMA, ia menghasilkan isyarat jual.

Analisis kelebihan

Strategi purata bergerak yang beradaptasi ini mempunyai kelebihan berikut:

  1. Mencari parameter optimum secara automatik. Tidak perlu memilih secara manual tempoh purata bergerak, strategi akan secara automatik menguji tempoh yang berbeza untuk mencari parameter optimum.

  2. Mengurangkan isyarat palsu. Berbanding dengan purata bergerak pada kitaran tetap, purata bergerak yang beradaptasi dapat memadamkan lebih banyak bunyi, sehingga mengurangkan banyak isyarat palsu.

  3. Beradaptasi dengan perubahan pasaran. Apabila pasaran bertukar dari berkurung ke dalam trend, kitaran purata bergerak akan berubah secara automatik untuk menghasilkan isyarat; Apabila pasaran bertukar dari trend ke dalam penyesuaian, kitaran purata bergerak akan berubah secara automatik.

  4. Sistem perdagangan yang mudah. Cara penyesuaian ini dapat menyederhanakan keseluruhan sistem perdagangan tanpa memerlukan parameter pengoptimuman manual.

  5. Skala yang kuat. Idea strategi ini boleh dilancarkan ke penunjuk lain, merancang strategi seperti adaptasi Brin Belt, KD adaptasi.

Analisis risiko

Strategi ini mempunyai beberapa risiko yang perlu diperhatikan:

  1. Risiko pilihan binari. Apabila pasaran mengalami pergerakan pilihan binari, garis fizikal tidak dapat menembusi purata bergerak, yang akan menyebabkan isyarat yang salah. Syarat penapisan perlu ditambahkan untuk mengurangkan risiko tersebut.

  2. Risiko kegagalan penembusan. Penembusan purata bergerak tidak selalu dapat diteruskan, terdapat risiko kegagalan penembusan sebahagiannya. Oleh itu, diperlukan untuk melakukan pengesahan penembusan untuk memastikan kadar kejayaan penembusan.

  3. Risiko trend reversal. Apabila masuk ke pasaran trend, perubahan arah diperlukan dalam masa yang tepat, jika tidak, ia akan menyebabkan kerugian.

  4. Risiko pengoptimuman parameter. Parameter yang disesuaikan secara automatik mungkin jatuh ke dalam pengoptimuman tempatan, yang menghasilkan purata bergerak yang jelas. Untuk mengelakkan masalah ini, kaedah penilaian model perlu diperkenalkan.

  5. Risiko overoptimisasi. Parameter penyesuaian penyesuaian boleh dioptimumkan secara berlebihan, dan model kehilangan keupayaan generalisasi. Ia memerlukan pengesahan jangka panjang dalam keadaan pasaran yang berbeza, dan tidak boleh terlalu bergantung pada hasil pengujian semula.

Arah pengoptimuman

Kaedah ini boleh dioptimumkan dengan:

  1. Menambah mekanisme pengesahan trend breakthrough untuk menyaring penipuan palsu melalui percubaan.

  2. Tambahlah strategi stop loss apabila harga kembali ke sisi lain daripada purata bergerak.

  3. Menambah mekanisme penapisan opsyen untuk mengelakkan isyarat yang salah dalam pasaran opsyen penarikan.

  4. Pengenalan penunjuk penilaian untuk menghalang penyesuaian parameter, seperti IC, LIC, SIC, dan lain-lain, untuk mengelakkan parameter menjadi terlalu optimum.

  5. Meluas ke penunjuk lain, reka bentuk strategi adaptasi Gold Fork Dead Fork, strategi adaptasi Brin Belt dan sebagainya.

  6. Mengoptimumkan cara pengiraan purata bergerak, menggunakan purata bergerak yang dipertingkatkan, purata bergerak indeks dan lain-lain.

ringkaskan

Strategi ini menghasilkan isyarat perdagangan dengan menyesuaikan diri dengan kitaran purata bergerak, mencari parameter yang optimum. Berbanding dengan parameter tetap, ia dapat mengurangkan banyak isyarat palsu, menyesuaikan diri dengan perubahan pasaran.

||

Overview

This strategy is based on moving average, can automatically adjust parameters, and is suitable for wavy markets at high timeframes. It can automatically find the optimal parameter combination and generate trading signals when price breaks through the moving average line.

Strategy Logic

This strategy uses an adaptive moving average as trading signal. First it calculates the simple moving average (CMA) of the specified period (start). Then it tests the CMA parameters around the period, judging which combination has the least touches by candlestick body and wick. Finally it uses the CMA with the least touches as the signal line.

Specifically, the strategy tests the CMA with period plus 1 (CMA_P1) and minus 1 (CMA_M1), counts the number of touches by body and wick. If CMA has less touches than CMA_P1 and CMA_M1, then keep the current period; if CMA_P1 has less touches, then increase the period by 1; if CMA_M1 has less touches, then decrease the period by 1. This finds a relatively smooth CMA as the signal line.

When price breaks through CMA upward, a buy signal is generated; when price breaks through CMA downward, a sell signal is generated.

Advantage Analysis

This adaptive moving average strategy has the following advantages:

  1. Automatically find optimal parameters. No need to manually select moving average period, the strategy will test different periods and find the optimum.

  2. Reduce false signals. Compared with fixed period MA, the adaptive MA can filter out more noise and reduce many false signals.

  3. Adapt to market changes. When market switches from range-bound to trending, the MA period will automatically increase to generate signals; when market switches from trending to range-bound, the MA period will automatically decrease. So the strategy can dynamically adapt to market changes.

  4. Simplify trading system. This adaptive method can simplify the whole trading system without manual parameter optimization.

  5. Good scalability. The concept can be applied to other indicators like adaptive Bollinger Bands, adaptive KD etc.

Risk Analysis

There are also some risks to note for this strategy:

  1. Call option risk. When market has a call option pattern, the candle body may fail to break the MA line, resulting in wrong signals. Filter conditions need to be added to reduce such risk.

  2. Failed breakout risk. MA breakout does not always continuation, some failed breakouts may occur. Breakout validation is needed to ensure high success rate.

  3. Trend reversal risk. Trend reversal after entering the trend needs to be switched timely, otherwise it may cause losses. Stop loss should be set to control the loss.

  4. Parameter optimization risk. Adaptive adjusted parameters may fall into local optimization, resulting in redundant MAs. Model evaluation methods need to be introduced to avoid this problem.

  5. Overfitting risk. Excessive parameter tuning may lead to overfitting and lose the model generalization ability. Prolonged verification in different market environments is needed, not just rely on backtest results.

Improvement Directions

Some directions to improve this adaptive MA strategy:

  1. Add trend breakout validation via consecutive breakouts to filter false breakouts.

  2. Increase stop loss strategy, stop loss when price moves back to the other side of MA.

  3. Add option filter to avoid wrong signals when call option appears.

  4. Introduce evaluation metrics like IC, LIC, SIC etc. to constrain parameter tuning and prevent overfitting.

  5. Expand to other indicators like adaptive golden cross strategy, adaptive Bollinger Bands etc.

  6. Optimize MA calculation by using weighted MA, exponential MA etc. to get smoother MA.

Summary

This strategy generates trading signals by adaptively adjusting the MA period to find optimal parameters. Compared with fixed parameters, it can reduce many false signals and adapt to market changes. But we also need to watch out for potential risks, and do verification and walk-forward optimization before applying it in live trading for steady profits.

[/trans]

Kod sumber strategi
/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © fondDealer96636

//@version=5

strategy('Automatic Moving Average', overlay=true, max_bars_back=201, pyramiding=0, currency=currency.USD, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000)

// input
start = 20
lookback = input(20, "Sensitivity", tooltip="Low (High Sensitivity), High (Low Sensitivity).\n\nAdjust according to timeframe and asset.")
smoothing = input(3, "Smoothing")
source = input(close, "Source")
startYear = input(2020, "Start year")
resp = 1

in_date_range = time >= timestamp(syminfo.timezone, startYear, 1, 1, 0, 0)

// global
var ix = -1
var mal = array.new_int(0)


// functions
avg(source, len) =>
    sum = 0.0
    for i = 0 to len-1
        sum += source[i]
    sum/len

bull = close > open

wick_touch(x) =>
    bull ? ((close <= x and x <= high) or (low <= x and x <= open)) : ((open <= x and x <= high) or (low <= x and x <= close))

body_touch(x) =>
    bull ? (open < x and x < close) : (close < x and x < open)

touches(t) =>
    touches = 0
    for i = 0 to lookback-1
        touches += t[i] ? 1 : 0
    touches


// local
ix := ix+1
prev_mal = ix >= 1 ? array.get(mal, ix-1) : start

cma = avg(source, prev_mal)
cma_p1 = avg(source, prev_mal+1)
cma_m1 = avg(source, prev_mal-1)

d = touches(wick_touch(cma))
d_p1 = touches(wick_touch(cma_p1))
d_m1 = touches(wick_touch(cma_m1))

d_b = touches(body_touch(cma))
d_p1_b = touches(body_touch(cma_p1))
d_m1_b = touches(body_touch(cma_m1))

any_body_touch = d_b > 0 or d_p1_b > 0 or d_m1_b > 0
no_wick_touch = d <= 0 and d_p1 <= 0 and d_m1 <= 0
wick_maximized = d >= d_p1 and d >= d_m1 ? prev_mal : (d_p1 >= d and d_p1 >= d_m1 ? prev_mal+resp : (d_m1 >= d and d_m1 >= d_p1 ? prev_mal-resp : na))

up = cma > cma[1]
down = cma < cma[1]
against_trend = (up and close < cma) or (down and close > cma)

new_mal = no_wick_touch or against_trend ? prev_mal-resp : (any_body_touch ? prev_mal+resp : wick_maximized)
next_mal = na(new_mal) ? prev_mal : new_mal

array.push(mal, next_mal < 2 ? 2 : (next_mal > 200 ? 200 : next_mal))


// graph
scma = ta.ema(cma, smoothing)

uptrend = scma > scma[1]
downtrend = scma < scma[1]

plot(scma, "Automatic MA", color=uptrend ? color.green : color.red)

uptrending = close > scma and uptrend
downtrending = close < scma and downtrend

defy = not uptrending and not downtrending
defy_cross = defy and body_touch(scma)

barcolor(uptrending ? color.lime : (downtrending ? color.red : (defy_cross ? color.black : color.white)))


// strategy
change_to_uptrend = uptrending and downtrend[1]
change_to_downtrend = downtrending and uptrend[1]

long = in_date_range and change_to_uptrend
short = in_date_range and change_to_downtrend

if long
    strategy.entry("Long", strategy.long)
if short
    strategy.entry("Short", strategy.short)