
Strategi penembusan garis dua rata adalah strategi perdagangan kuantitatif yang lebih tipikal untuk mengikuti trend. Strategi ini menilai pegangan dengan mengira purata bergerak sederhana dari pelbagai kitaran dan menetapkan isyarat perdagangan sebagai purata bergerak harga. Strategi ini menggunakan garis 20 hari dan 60 hari sebagai isyarat perdagangan.
Logik utama strategi penembusan dua hala adalah:Menggunakan purata bergerak untuk tempoh yang berbeza untuk menangkap trend harga dan menghantar isyarat perdagangan apabila harga menembusi purata bergerak。
Khususnya, strategi ini menggunakan purata bergerak mudah 20 hari dan purata bergerak mudah 60 hari. Kedua-dua purata bergerak boleh dilihat sebagai alat untuk menangkap trend jangka pendek dan trend jangka menengah.
Kode yang diluluskanta.crossoverdanta.crossunderUntuk menentukan sama ada harga akan menembusi atau menembusi satu purata bergerak. Apabila penembusan berlaku, arahan untuk melakukan kenaikan atau penurunan akan dikeluarkan.
Strategi penembusan dua hala ini mempunyai beberapa kelebihan:
Ini adalah strategi yang tidak dapat dielakkan, tetapi ia mempunyai beberapa risiko:
Strategi penembusan dua garis rata boleh dioptimumkan dari dimensi berikut:
Strategi penembusan dua garis sejajar adalah strategi penjejakan trend yang mudah dan praktikal. Ia dapat menangkap trend jangka panjang dan jangka panjang dengan berkesan dan mengelakkan gangguan bunyi pasaran jangka pendek. Strategi ini mudah difahami dan dilaksanakan, parameternya boleh dikira, sangat sesuai untuk keperluan perdagangan kuantitatif.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 4h
basePeriod: 15m
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/
// © Astorhsu
//@version=5
strategy("Astor SMA20/60", overlay=true)
backtest_year = input(2018, title='backtest_year') //回測開始年分
backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份
backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31) //回測開始日期
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00) //回測開始的時間函數
//Indicators
sma10 = ta.sma(close,10)
sma20 = ta.sma(close,20)
sma60 = ta.sma(close,60)
plot(sma20, color=color.green, title="sma(20)")
plot(sma60, color=color.red, title="sma(60)")
//進場條件
// trend1 = sma60 > sma20 //假設目前趨勢為60>20
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition)
strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")
shortCondition = ta.crossunder(close, ta.sma(close, 20))
if (shortCondition)
strategy.close("open long20",comment="跌破m20平倉", qty=1)
longCondition1 = ta.crossover(close, ta.sma(close, 60))
if (longCondition1)
strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多")
shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1)
strategy.close("open long60",comment="跌破m60平倉", qty=1)
// longCondition2 = ta.crossover(close, ta.sma(close, 10))
// if (longCondition2)
// strategy.entry("open long10", strategy.long, qty=1, comment="站上m10做多")
// shortCondition2 = ta.crossunder(close, ta.sma(close, 10))
// if (shortCondition2)
// strategy.close("open long10",comment="跌破m10平倉", qty=1)