
双均線戦略は,比較的一般的な短線取引戦略である.この戦略は,異なる周期の平均値を計算して,市場傾向の方向を判断して,入場を行う.短周期平均線上を長周期平均線に突破するときは,多行し,短周期平均線下を長周期平均線に突破するときは,空行する.
この戦略の核心的な論理は:
2つの異なる周期の平均線,長周期平均線,短周期平均線を計算する.ここでは開盤価格と閉盤価格の平均線を使用する.
短期平均線が長期平均線に貫通しているかどうかを判断する.短線上に長線を貫通すると,市場が上昇傾向にあることを示し,多めにすることができる.短線下に長線を貫通すると,市場が下降傾向にあることを示し,空きすることができる.
トレンド方向に応じて空き時間を増やす。具体的には,短周期平均線上を長周期平均線に横切るとき,空き時間を増やす。短周期平均線下を長周期平均線に横切るとき,空き時間を増やす。
ストップ・ダメージとストップ・ストップは,実際の状況に応じて設定されます.
戦略全体は均線のトレンド判断機能を利用し,市場の短期および長期のトレンドの関係を判断し,より短い中短線の動きを捕捉する.この戦略の論理はシンプルで明快で,双均線交差によって動きが継続的なペースの転換から逸脱することを判断し,これによって取引操作を行う.
双方向戦略には以下の利点があります.
シンプルで理解し,実行しやすい.
明確な入場タイミングと出場基準がある
平均線パラメータを調整することで,異なる市場環境に適応することができる.
傾向と逆転を考慮して,中短線を捉えることができます.
リスク管理のための Stop Loss Logic がある.
双方向戦略にはいくつかのリスクがあります.
市場が震動整理段階にあるとき,止損は頻繁にトリガーされることがあります.
大幅に波動する市場では,均線生成のシグナルが頻繁になり,ポジション維持に不利である.
双均線自体は後退性があるため,短線での反転のチャンスを逃す可能性がある.
パラメータの最適化に注意し,適切な平均線周期を設定する必要があります.
平均線交差には遅延があり,入場時間は遅れる可能性があります.
この戦略の最適化方向は以下の通りです.
平均線周期パラメータを最適化して,異なる状況に適応する.パラメータ反測最適化を行うことができる.
他の指標をフィルターに追加し,震動の際に被套されないようにする.MACD,KDなどの補助として加えることができる.
トレンド判断指標を足し,明確な傾向がないときに頻繁に取引を避ける. EMAなどのトレンド判断指標を足し,テストすることができます.
取引量指数も考慮できる.
ストップ・ストラトジーを最適化し,大レベルのサポート位の近くでストップ・ストラトジーを設定する.
双均線戦略は均線交差判断傾向に基づく簡潔な短線戦略である.優点は考え方が簡潔で操作が容易であること;欠点は,波動的な市場に容易く巻き込まれること,および後退性があることである.パラメータの最適化,フィルタリング指標の追加などの方法でこの戦略を最適化して,複雑な市場環境に適したものにすることができる.
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("GetTrendStrategy timing", overlay=true)
tim=input('370')
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(10, "Backtest Start Month")
testStartDay = input(25, "Backtest Start Day")
testStartHour = input(7, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2017, "Backtest Stop Year")
testStopMonth = input(10, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testStopHour = input(13, "Backtest stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStartHour,0)
testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////
out1 = request.security(syminfo.tickerid, tim, open)
out2 = request.security(syminfo.tickerid, tim, close)
plot(out1,color=red)
plot(out2,color=green)
longCondition = crossover(request.security(syminfo.tickerid, tim, close),request.security(syminfo.tickerid, tim, open))
if testPeriod()
if (longCondition)
strategy.entry("long", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, tim, close),request.security(syminfo.tickerid, tim, open))
if testPeriod()
if (shortCondition)
strategy.entry("short", strategy.short)