Strategi Swing Pengedaran Ekstrem

Penulis:ChaoZhang, Tarikh: 2023-11-13 17:03:08
Tag:

img

Strategi ini bertujuan untuk mengesan ekstrem Oscillator Momentum Chande menggunakan pengesanan pengedaran ekstrem pada jangka masa 1 minit terutamanya untuk Bitcoin dan cryptocurrency.

Selepas penyelidikan yang meluas mengenai oscillator momentum Chande, saya memutuskan untuk membuat strategi yang menggunakan paras persentil pengedaran normal untuk memotong entri. Ini seterusnya dapat menghasilkan keuntungan yang bagus selama beberapa hari berturut-turut pada jangka masa 1 minit, dengan matlamat akhir adalah untuk mendapatkan versi strategi ini yang lebih kuat yang berjalan di bot dan mencetak beberapa wang. Strategi itu ditakrifkan dengan ketat tetapi juga boleh dilepaskan untuk membuat lebih banyak perdagangan, memberikan saiz sampel yang lebih tinggi dan nisbah Sharpe yang lebih baik.

Strategi ini memeriksa sama ada nilai Chande berada dalam persentil yang melampau berdasarkan beberapa ratus nilai Chande terakhir - jika ia akan membuka kedudukan.

Tiada stop loss atau mengambil keuntungan dilaksanakan dalam ayunan lagi, tetapi ini akan menjadi penambahan seterusnya untuk benar-benar meminimumkan kerugian dan memperkuat keuntungan yang berpotensi.

Mana-mana pasangan kripto cair pada jangka masa yang lebih rendah akan mendapat hasil yang baik dengan strategi ini.

Kami juga mempunyai 15M percuma dan 1H strategi yang tersedia.

Logika Strategi

Strategi ini mula-mula mengira Chande Momentum Oscillator, yang berdasarkan perubahan antara penutupan tempoh semasa dan penutupan tempoh sebelumnya. Secara khusus, ia mengukur momentum perubahan harga dengan mengira nisbah jumlah perubahan kenaikan terhadap jumlah perubahan penurunan.

Ia kemudian merekodkan nilai Chande dalam tempoh belakang tertentu (default 425 tempoh) dan mengira tahap persentil yang berbeza. Apabila nilai Chande semasa mencapai persentil ekstrim yang telah ditetapkan (default 1% untuk membeli, 99% untuk menjual), ia mencetuskan isyarat masuk panjang / pendek. Isyarat keluar dicetuskan apabila nilai Chande mencapai tahap persentil normal (default 97.5% dan 2.5%).

Dengan cara ini, strategi ini dapat menangkap pecah melampau nilai Chande, yang membolehkannya menangkap pergerakan trend tiba-tiba. Ia juga mengelakkan risiko entri berulang apabila nilai Chande kekal pada tahap melampau untuk tempoh yang lama.

Analisis Kelebihan

  • Mencatatkan ledakan pasaran dengan cepat menggunakan momentum penunjuk Chande
  • Risiko pengambilan yang rendah dengan pengesanan ekstrim pembahagian biasa
  • Parameter fleksibel yang boleh disesuaikan dengan rejimen pasaran yang berbeza
  • Logik strategi yang mudah dan intuitif, mudah difahami dan dilaksanakan

Analisis Risiko

  • Chande terdedah kepada isyarat palsu sebagai penunjuk momentum sensitif terhadap bunyi jangka pendek
  • Tempoh pengeluaran yang panjang dengan perdagangan nilai yang melampau, kekerapan perdagangan intraday yang rendah
  • Risiko kehilangan pergolakan tanpa sasaran stop loss/profit
  • Risiko pengoptimuman berlebihan dengan penyesuaian parameter yang tidak betul

Pengurusan risiko harus memberi tumpuan kepada penggunaan hentian, menormalkan parameter melampau, dan menapis isyarat dengan trend.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Tambah stop loss / mengambil keuntungan untuk mengawal kerugian setiap perdagangan pada tahap yang munasabah.

  2. Mengoptimumkan parameter dengan menyesuaikan pandangan belakang pendek / panjang untuk pasaran yang berbeza.

  3. Tambah keadaan penapis dengan penunjuk trend seperti MA untuk menghilangkan isyarat palsu terhadap trend keseluruhan.

  4. Menggabungkan pelbagai jangka masa, menggunakan TF yang lebih tinggi untuk mengukur arah trend dan TF yang lebih rendah untuk masuk.

  5. Uji ketahanan parameter di pelbagai produk, sesuaikan untuk lebih banyak jenis.

  6. Memperkenalkan pembelajaran mesin untuk mengoptimumkan parameter dan penapis secara dinamik.

Kesimpulan

Secara keseluruhan, ini adalah strategi yang menggunakan nilai melampau pengayun momentum Chande untuk menangkap pergerakan trend. Logiknya yang mudah dan pelaksanaan yang cekap menjadikannya sangat sesuai untuk memanfaatkan dengan cepat trend ledakan. Pada masa yang sama, mengawal risiko, mengelakkan pengoptimuman berlebihan, dan pengoptimuman berdimensi diperlukan untuk menyesuaikan diri di seluruh rejimen pasaran. Ringkasnya, ia menyediakan pendekatan yang berkesan untuk ledakan pasaran perdagangan yang bernilai penyelidikan dan penerapan lanjut.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Chande Minute Swinger", overlay=true)

//Chande

length = input(9, minval=1)
src = close
momm = change(src)
f1(m) => m >= 0.0 ? m : 0.0
f2(m) => m >= 0.0 ? 0.0 : -m
m1 = f1(momm)
m2 = f2(momm)
sm1 = sum(m1, length)
sm2 = sum(m2, length)
percent(nom, div) => 100 * nom / div
chandeMO = percent(sm1-sm2, sm1+sm2)

//Parameters to change

lengthLookback = 425 //425 golden number
buyPercentile = 1
sellPercentile = 99
linePercentileLow = 2.5
linePercentileHigh = 97.5

buy = percentile_nearest_rank(chandeMO, lengthLookback, buyPercentile)
exitBuy= percentile_nearest_rank(chandeMO, lengthLookback, linePercentileHigh)
sell = percentile_nearest_rank(chandeMO, lengthLookback, sellPercentile)
exitSell = percentile_nearest_rank(chandeMO, lengthLookback, linePercentileLow)

chandeMA = sma(chandeMO, 9) //sma for potential other strategies implementing cross / trend

//Entry conditions

closeLongCondition = chandeMO > exitBuy ? true : false
closeShortCondition = chandeMO < exitSell ? true : false
longCondition = chandeMO < buy
shortCondition = chandeMO > sell

if (longCondition)
    strategy.entry("long", strategy.long)
    

if (shortCondition)
    strategy.entry("short", strategy.short)
    
//Introducing the closes and a stoploss will minimise loss and bring up the sharpe ratio
//Current settings are enabled for maximum potential but big risk
    
//strategy.close("long", when=(closeLongCondition == true))
//strategy.close("short", when=(closeShortCondition == true))

Lebih lanjut