
この戦略は,双動平均に基づいた取引戦略である.これは,ユーザが設定した長さと短さの2つの移動平均に基づいて金叉と死叉の操作を行います.つまり,速い移動平均線が速い移動平均線を横切るときまたはゆっくりとした移動平均線を横切るとき,取引信号を発信します.速いMAの上にゆっくりとしたMAを横切るとき,多めに行います.
この戦略の核心的な論理は,2つの移動平均の交差原理に基づいています.移動平均とは,一定の時間周期における閉盘価格を算術平均として取得した平均価格です.移動平均は,ランダムなノイズを効果的に除し,より明確な価格トレンドを反映します.
この戦略の短期MAは,価格の短期トレンドを代表し,長期MAは価格の長期トレンドを代表する.短期MAは,長期MAよりも価格の変化に敏感であり,価格の逆転をより早く捉えることができる.短期MAの上部に長期MAを穿うとき,短期トレンドが上位に転じ,多額の取引を行うことを代表する.短期MAの下部に長期MAを穿うとき,短期トレンドが空頭に転じ,空きをすることを代表する.
具体的には,戦略は,ta.smaを計算して指定された周期の単純移動平均を取引信号として使用する.ユーザーは,長線周期long_periodと短線周期short_periodの2つのMAパラメータをカスタマイズすることができます.戦略は,ta.crossoverとta.crossunderを使用して,MAの黄金クロスとデッドフォークを判断します.短MAに長MAが穿越すると,金叉が現れる場合は,多行します.短MAの下には長MAが穿越すると,デッドフォークが現れる場合は,空行します.
この戦略の利点は以下の通りです.
この戦略にはいくつかのリスクがあります.
上記のリスクに対して,MAパラメータの調整,ストップ・ストップの設定,または他の指標と組み合わせて最適化することができる.
この戦略は以下の点で最適化できます.
この戦略は,全体として,量化取引の入門策として非常に適しています.それは,単純な二重MAパラメータだけで動作し,操作が簡単で,容易に理解でき,市場逆転時を直感的に反映することができます.同時に,戦略は,実際の需要に応じてパラメータを調整したり,他の論理を追加したりするために,最適化するための大きな空間を残しています.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Cross 2 Moving Average Strategy", shorttitle="2MA Cross", overlay=true)
// User-defined input for moving averages
long_period = input(20, title="Long Period")
short_period = input(5, title="Short Period")
type_ma = input.string("SMA", title = "MA type", options = ["SMA", "EMA"])
// Calculating moving averages
long_ma = ta.sma(close, long_period)
short_ma = ta.sma(close, short_period)
// Plot moving averages
plot(long_ma, title="Long Moving Average", color=color.red)
plot(short_ma, title="Short Moving Average", color=color.green)
// Strategy logic for crossing of moving averages
longCondition = ta.crossover(short_ma, long_ma)
shortCondition = ta.crossunder(short_ma, long_ma)
// Entry orders
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Optional: Add stop loss and take profit
stop_loss_perc = input(1, title="Stop Loss (%)") / 100
take_profit_perc = input(2, title="Take Profit (%)") / 100
strategy.exit("Exit Long", from_entry="Long", stop=close*(1-stop_loss_perc), limit=close*(1+take_profit_perc))
strategy.exit("Exit Short", from_entry="Short", stop=close*(1+stop_loss_perc), limit=close*(1-take_profit_perc))