
Strategi perdagangan pengesanan kekuatan adalah strategi perdagangan automatik yang mengesan trend pergerakan pasaran, menggabungkan pelbagai petunjuk teknikal sebagai penilaian tambahan. Strategi ini menganalisis maklumat K-line, menilai arah dan kekuatan dana utama pasaran semasa, dan kemudian menggabungkan indikator teknikal seperti indikator harga kuantitatif, rata-rata bergerak dan lain-lain untuk menghantar isyarat perdagangan, untuk mewujudkan trend pengesanan.
Secara keseluruhannya, strategi ini sesuai untuk perdagangan trend garis panjang dan menengah, dapat menangkap tren pasaran dengan berkesan, mengurangkan frekuensi perdagangan, mengejar keuntungan tunggal yang lebih tinggi. Di samping itu, apabila parameter strategi dioptimumkan, ia juga boleh digunakan untuk perdagangan garis pendek.
Inti strategi pengesanan kekuatan adalah untuk menentukan arah dana utama di pasaran. Strategi ini memantau pergerakan pasaran secara langsung dengan mengira indikator ATR. Apabila pergerakan meningkat, strategi ini akan keluar dari pasaran untuk sementara waktu, mengelakkan tempoh masa yang digunakan oleh penguasa.
Apabila turun naik mereda, mewakili penumpukan atau pembahagian utama, strategi akan masuk semula dan menilai arah khusus dominasi. Penentuan dilakukan dengan mengira kedudukan tekanan sokongan di pasaran untuk melihat apakah ada tanda-tanda pecah. Jika ada penembusan yang jelas, maka mengesahkan bahawa dominasi memilih arah tersebut.
Selepas menentukan arah daya utama, strategi ini juga akan memperkenalkan pelbagai penunjuk teknik tambahan untuk disahkan semula, untuk mengelakkan salah faham. Secara khusus, penunjuk MACD, KDJ dan lain-lain akan dikira untuk menentukan sama ada ia sesuai dengan arah daya utama.
Strategi ini hanya akan membuka kedudukan apabila kedua-dua arah utama dan penunjuk bantuan memberi isyarat yang sama. Ini berkesan mengawal frekuensi perdagangan dan hanya masuk dalam keadaan kebarangkalian yang tinggi.
Selepas meletakkan kedudukan, strategi pengesanan kekuatan akan mengesan perubahan harga secara langsung dan menggunakan peningkatan nilai ATR sebagai isyarat berhenti. Ini menandakan bahawa pasaran memasuki tahap operasi utama sekali lagi dan mesti segera keluar ke tunai untuk mengelakkan terikat.
Di samping itu, jika harga bergerak melebihi julat tertentu, penyesuaian akan terhenti. Ini adalah penyesuaian teknikal biasa, dan kawalan risiko memerlukan penyesuaian segera.
Kelebihan terbesar strategi pengesanan kekuatan adalah sistematisasi dan normalisasi yang tinggi. Logik urus niaga jelas, setiap masuk dan keluar mempunyai prinsip dan peraturan yang jelas, tidak ada transaksi yang tidak sengaja.
Ini menjadikan strategi ini sangat boleh direplikasi, dan pengguna boleh mengkonfigurasi aplikasi jangka panjang tanpa campur tangan manusia.
Strategi ini mempunyai mekanisme kawalan risiko pelbagai peringkat, seperti penilaian utama, pengesahan tambahan, pembentukan garis henti, dan lain-lain, yang dapat mengawal risiko tidak sistematik dengan berkesan.
Khususnya, strategi hanya membuka kedudukan dalam keadaan kebarangkalian yang tinggi, dan menetapkan stop loss saintifik, untuk mengelakkan kerugian dari meluas.
Berbanding dengan strategi garis pendek, strategi pengesanan momentum mempunyai tempoh pegangan yang lebih lama dan keuntungan yang lebih tinggi setiap kali. Ini menjadikan keuntungan keseluruhan strategi lebih stabil dan mampan.
Selain itu, strategi untuk menjejaki trend garis tengah dan panjang dapat menangkap kebolehan turun naik yang lebih ketara dalam trend besar.
Strategi pengesanan kekuatan melibatkan lebih banyak parameter, seperti parameter ATR, parameter penembusan, parameter hentian, dan sebagainya. Terdapat beberapa kaitan antara parameter ini dan perlu diuji berulang kali untuk mencari kombinasi parameter yang optimum.
Jika parameter tidak disusun dengan betul, ia boleh menyebabkan frekuensi dagangan yang terlalu tinggi atau kawalan risiko yang tidak mencukupi. Ini memerlukan pengalaman pengguna dalam pengoptimuman strategi.
Strategi menilai kekuatan dan isyarat penunjuk bergantung kepada penembusan harga untuk mengesahkan. Tetapi dalam operasi penembusan, kemungkinan besar terdapat penembusan palsu, yang akan menyebabkan kemungkinan besar untuk meletakkan kedudukan.
Jika kejayaan utama gagal, ia boleh menyebabkan kerugian yang lebih besar. Ini adalah kelemahan strategi.
Algoritma pembelajaran mesin boleh mengesan hubungan antara parameter secara automatik untuk mencari kombinasi parameter yang optimum. Ini jauh lebih berkesan daripada ujian buatan tangan.
Khususnya, algoritma EnvironmentError boleh digunakan untuk memaksimumkan keuntungan strategi berdasarkan parameter iterasi berterusan pembelajaran penguatan.
Lebih banyak penapis tambahan boleh diperkenalkan berdasarkan indikator sedia ada, seperti indikator jumlah transaksi, indikator aliran wang, dan sebagainya, untuk mengesahkan isyarat terobosan tiga atau empat kali, dengan kebolehpercayaan yang lebih tinggi.
Tetapi terlalu banyak penapis juga boleh menyebabkan peluang yang terlewat, dan intensiti penapisan perlu diseimbangkan. Selain itu, penapis itu sendiri juga harus mengelakkan hubungan.
Menggunakan strategi pengesanan momentum dengan kombinasi strategi lain, anda boleh memanfaatkan kelebihan strategi yang berbeza untuk mencapai penyelarasan positif dan meningkatkan kestabilan keseluruhan.
Sebagai contoh, menggabungkan strategi pembalikan jangka pendek, membuka perdagangan pembalikan selepas penembusan, dapat mengunci lebih banyak keuntungan.
Strategi perdagangan pengesanan momentum secara keseluruhannya adalah strategi pengesanan trend yang sistematik yang disyorkan. Logik perdagangan yang jelas, kawalan risiko, dan pulangan pelaburan yang stabil dan cekap untuk pengguna.
Tetapi strategi itu sendiri juga mempunyai kelemahan yang memerlukan pengguna mempunyai keupayaan untuk mengoptimumkan parameter dan menggabungkan strategi untuk memanfaatkan sepenuhnya strategi tersebut. Secara keseluruhan, strategi pengesanan daya adalah produk kuantitatif yang sesuai untuk digunakan oleh peminat strategi dengan asas kuantitatif tertentu.
/*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)