Strategi Dagangan Pengesanan Momentum

Penulis:ChaoZhang, Tarikh: 2023-12-20 16:06:26
Tag:

img

Ringkasan Strategi

Strategi Perdagangan Pengesanan Momentum adalah strategi perdagangan automatik yang terutamanya mengesan trend momentum pasaran dan menggunakan beberapa penunjuk teknikal sebagai penilaian tambahan. Strategi ini menganalisis maklumat K-line untuk menentukan arah dan kekuatan dana utama pasaran semasa, dan kemudian mengeluarkan isyarat perdagangan berdasarkan penunjuk seperti harga jumlah dan purata bergerak untuk mencapai penjejakan trend.

Secara keseluruhan, strategi ini sesuai untuk perdagangan trend jangka menengah dan panjang, dan dapat menangkap trend pasaran dengan berkesan dan mengurangkan kekerapan perdagangan untuk mengejar keuntungan tunggal yang lebih tinggi.

Prinsip Strategi

Penghakiman kuasa utama

Inti strategi penjejakan momentum adalah untuk menilai hala tuju dana utama pasaran. Strategi ini mengira penunjuk ATR untuk memantau turun naik pasaran dalam masa nyata. Apabila turun naik meningkat, ini bermakna dana utama mengumpul atau mengedarkan, dan strategi itu akan keluar sementara dari pasaran untuk mengelakkan tempoh ketika dana utama beroperasi.

Apabila turun naik melemah, ini bermakna pengumpulan atau peruntukan kuasa utama telah selesai, dan strategi akan memasuki semula pasaran untuk menentukan arah tertentu kuasa utama. Kaedah penghakiman adalah untuk mengira kedudukan sokongan dan tekanan pasaran untuk melihat sama ada terdapat tanda-tanda terobosan. Jika terdapat terobosan yang jelas, ia akan membuktikan bahawa dana utama telah memilih arah itu.

Penghakiman Bantuan

Selepas menentukan arah dana utama, strategi ini juga akan memperkenalkan beberapa penunjuk teknikal tambahan untuk pengesahan semula untuk mengelakkan penilaian yang salah. khususnya, MACD, KDJ dan penunjuk lain akan dikira untuk menentukan sama ada mereka konsisten dengan arah dana utama.

Hanya apabila arah dana utama dan penunjuk tambahan mengeluarkan isyarat ke arah yang sama, strategi akan membuka kedudukan.

Stop Loss Exit

Selepas membuka kedudukan, strategi penjejakan momentum akan mengesan perubahan harga dalam masa nyata, dan menggunakan pengembangan nilai ATR sebagai isyarat stop loss. Ini bermakna pasaran telah memasuki peringkat operasi utama lagi dan mesti keluar ke tunai dengan segera untuk mengelakkan terperangkap.

Di samping itu, jika pergerakan harga melebihi julat tertentu dan kemudian menarik balik, stop loss juga akan berlaku. Ini adalah retracement teknikal biasa dan perlu dihentikan dengan segera untuk kawalan risiko.

Kelebihan Strategi

Sistematik yang tinggi

Kelebihan terbesar strategi penjejakan momentum adalah tahap sistematisasi dan standardisasi yang tinggi. Logik dagangnya jelas, dan setiap kemasukan dan keluar mempunyai prinsip dan peraturan yang jelas dan bukannya perdagangan sewenang-wenang.

Ini menjadikan replikabiliti strategi ini sangat kuat. Pengguna boleh menerapkannya untuk penggunaan jangka panjang selepas konfigurasi tanpa campur tangan manual.

Kawalan Risiko yang matang

Strategi ini mempunyai mekanisme kawalan risiko pelbagai peringkat, seperti penilaian kuasa utama, pengesahan tambahan, penetapan garis stop loss, dan lain-lain, yang dapat mengawal risiko bukan sistematik dengan berkesan.

Secara khusus, strategi ini hanya membuka kedudukan dalam situasi kebarangkalian tinggi dan menetapkan titik berhenti kerugian saintifik untuk memaksimumkan mengelakkan kerugian.

Pengembalian yang agak mampan

Berbanding dengan strategi jangka pendek, tempoh memegang strategi penjejakan momentum lebih lama, dan setiap keuntungan lebih tinggi.

Di samping itu, strategi ini mengesan trend jangka sederhana dan panjang, yang dapat menangkap sepenuhnya turun naik trend.

Amaran Risiko

Pengoptimuman Parameter yang Sukar

Strategi pengesanan momentum melibatkan pelbagai parameter, seperti parameter ATR, parameter penembusan, parameter stop loss, dll. Terdapat korelasi tertentu antara parameter ini, yang memerlukan ujian berulang untuk mencari kombinasi parameter yang optimum.

Konfigurasi parameter yang tidak betul boleh menyebabkan kekerapan perdagangan yang berlebihan atau kawalan risiko yang tidak mencukupi.

Tangkapan Pelarangan

Apabila strategi menentukan kuasa utama dan isyarat penunjuk, ia bergantung pada kejayaan harga untuk mengesahkan.

Jika kejayaan utama gagal, ia boleh membawa kepada kerugian yang lebih besar.

Arahan pengoptimuman

Memperkenalkan Pembelajaran Mesin

Algoritma pembelajaran mesin boleh digunakan untuk mengesan korelasi antara parameter secara automatik dan mencari kombinasi parameter yang optimum. Ini jauh lebih cekap daripada ujian manual.

Khususnya, algoritma EnvironmentError boleh digunakan untuk terus mengulangi parameter berdasarkan pembelajaran penguatan untuk memaksimumkan pulangan strategi.

Tambah Penapis

Lebih banyak penapis tambahan boleh diperkenalkan berdasarkan penunjuk sedia ada, seperti penunjuk jumlah dagangan, penunjuk aliran modal, dan lain-lain, untuk mengesahkan isyarat terobosan tiga atau empat kali untuk meningkatkan kebolehpercayaan.

Tetapi terlalu banyak penapis juga boleh menyebabkan peluang yang hilang. Intensiti penapis perlu diseimbangkan. Di samping itu, penapis itu sendiri juga harus mengelakkan korelasi.

Strategi Penggabungan

Menggabungkan strategi penjejakan momentum dengan strategi lain untuk memanfaatkan kekuatan strategi yang berbeza untuk mencapai ortogonaliti dan meningkatkan kestabilan keseluruhan.

Sebagai contoh, menggabungkan strategi pembalikan jangka pendek dan membuka perdagangan pembalikan selepas terobosan boleh mengunci lebih banyak keuntungan.

Ringkasan

Secara umum, Strategi Dagangan Pengesanan Momentum adalah strategi pengesanan trend yang sistematik yang patut disyorkan. Ia mempunyai logika perdagangan yang jelas, kawalan risiko yang mencukupi, dan dapat membawa pengguna pulangan pelaburan yang stabil dan cekap.

Tetapi strategi itu sendiri juga mempunyai beberapa kelemahan yang melekat. Ia memerlukan pengguna untuk mempunyai keupayaan untuk mengoptimumkan parameter dan mengintegrasikan strategi untuk memaksimumkan keberkesanan strategi ini. Secara keseluruhan, strategi penjejakan momentum adalah produk kuantitatif yang sesuai untuk peminat kuantitatif dengan beberapa asas.


/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-15 01:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Created by frasmac2k Strategy credit to Alex Morris

//@version=5
strategy("Mechanical", shorttitle="MECH", overlay=true)

// Get the current date and time
currentYear = year
currentMonth = month
currentDay = dayofmonth

// Create a timestamp for the present date and time
currentTimestamp = timestamp(currentYear, currentMonth, currentDay)

// Define time interval for backtesting
dStart = input(timestamp('2023-07-01'), title='Set Start date', tooltip='Select a start date to run the script from')

// Define direction of strategy
direction = input.string('Forward',title='Direction', tooltip='Forward will go LONG on a Green anchor candle. Inverse will go short on a Green anchor candle and vice versa for Red candle', options=['Forward', 'Inverse'])

// Define the anchor hour as user input with a range of 0 to 23
anchorHour = input.int(11, title="Anchor Hour", tooltip='Set the hour to trade', minval=0, maxval=23)

// Define the take profit and stop loss in pips
takeProfitPips = input.int(10, title='Define TP Pips', tooltip='How many pips do you want to set TP. Choose a sensible value related to the instrument', minval=5)
stopLossPips = input.int(10,'Define SL Pips', tooltip='How many pips do you want to set SL. Choose a sensible value related to the instrument', minval=5)

// Define Tick size
tick10p = input.int(100, title='tick size', tooltip='Choose how many ticks equal 10 pips. This can vary by broker so measure 10 pips on the chart and select how many ticks that equates to. Forex is typically 100. Some instruments such as indices can be 1000', options=[100,1000])

// Declare TP/SL variables
var float takeProfit = na
var float stopLoss = na

// Calculate take profit and stop loss levels in ticks
if tick10p == 100
    takeProfit := takeProfitPips * 10
    stopLoss := stopLossPips * 10
if tick10p == 1000
    takeProfit := takeProfitPips * 100
    stopLoss := stopLossPips * 100

// Declare offset time
var int offset = na

if currentTimestamp > timestamp('2023-10-29')
    offset := 4
else
    offset := 5

//adjust for exchange time
anchorHour := anchorHour - offset

// Define the anchor hour as user input with a range of 0 to 23
tradeHour = anchorHour

// Define logical check for strategy date range
isStratTime = true

// Calculate the time condition for placing the order at the user-defined hour (start of the next hour)
isTradeTime = true

// Logic condition for forwards or inverse
isForward = direction == 'Forward'
isInverse = direction == 'Inverse'

// Declare entry condition variables
var bool longCondition = na
var bool shortCondition = na

// Declare and initialize variables for anchorCandle open and close prices
var float anchorOpen = na
var float anchorClose = na
var float tradeOpen = na
var float tradeClose = na

// Set logic by direction

if isForward
    // Strategy logic
    if isTradeTime and isStratTime
        //Obtain candle open/close
        anchorOpen := open
        anchorClose := close
        // Define entry conditions
        longCondition := anchorClose > anchorOpen
        shortCondition := anchorClose < anchorOpen
        
        // Entry logic
        if longCondition
            strategy.entry("Long", strategy.long)
            strategy.exit("Exit Long", from_entry="Long", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')
        if shortCondition
            strategy.entry("Short", strategy.short)
            strategy.exit("Exit Short", from_entry="Short", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')

if isInverse
    // Strategy logic
    if isTradeTime and isStratTime
        //Obtain candle open/close
        anchorOpen := open
        anchorClose := close
        // Define entry conditions
        shortCondition := anchorClose > anchorOpen
        longCondition := anchorClose < anchorOpen
        
        // Entry logic
        if longCondition
            strategy.entry("Long", strategy.long)
            strategy.exit("Exit Long", from_entry="Long", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')
        if shortCondition
            strategy.entry("Short", strategy.short)
            strategy.exit("Exit Short", from_entry="Short", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')

// Define the time range for the background shade
startHour = anchorHour
startMinute = 0
endHour = anchorHour
endMinute = 0

// Check if the current time is within the specified range
isInTimeRange = (hour == startHour and minute >= startMinute) or (hour == endHour and minute <= endMinute) or (hour > startHour and hour < endHour)

// Define the background color for the shade
backgroundColor = color.new(color.red, 90)

// Apply the background shade
bgcolor(isInTimeRange ? backgroundColor : na)



Lebih lanjut