
この戦略は,ラリー・ウィリアムズが彼の書の長期秘密の短期取引ので説明した戦略を採用し,この戦略は,2つの3期移動平均を使用し,1つは高点を代表し,もう1つは低点を代表する.価格が3期移動平均の低点より低くなると,我々は長期ポジションの信号を持っている.
この戦略の核心的な論理は,高低点の3期移動平均を計算することです.具体的には,ta.ema関数を使用して,最近3バーの高点と低点の指数移動平均を計算して,動的サポートと抵抗の位置を生成します.価格が低点平均線を下回ると,現在下落状態にあることを示すので,私たちはより多くのことをすることができます.価格が高点平均線以上に戻ると,上昇傾向が終わったことを示すので,私たちは平定します.この方法で,戦略は動的に価格の変化を追跡し,低買い高売りを実現します.
この戦略の最大の優点は,そのシンプルさとダイナミック性にある.従来の一定周期を取った高低点平均線と比較して,この戦略は,連続的に計算される短期移動平均を採用し,価格変化により敏感で迅速に捉えることができる.これは,市場への入場と退出を促すため,購入と売却のポイントを迅速に識別できるようにする.さらに,計算量が小さいことは,取引の遅延を減らすのに役立つもう一つの利点である.
この戦略の主なリスクは,重大ニュースイベントなどの突発的な出来事に対して反応が遅いことである.移動平均周期が短いため,価格が激しく波動すると,均線の位置を調整するのに一定の時間が必要である.これは損失や機会を逃すことにつながる可能性がある.また,過度に敏感なことが誤った取引を引き起こす可能性がある.これらのリスクを減らすために,移動平均の周期数を適切に延長したり,誤った信号を避けるためにフィルタリング条件を追加したりすることができます.
この戦略には大きな最適化余地がある。第一に,震動指標などの他の指標と組み合わせてフィルタリングを行い,信号をより信頼性のあるものにする。第二に,リスク管理のためにストップロズロジックを追加することもできる。また,市場状況の動向に応じて移動平均のパラメータを調整し,トレンド市場では周期を延長し,震動市場では周期を短縮することもできる。さらに,多時間枠分析と機械学習認識モデルなどの方法も戦略のパフォーマンスを向上させるために使用できる。
この策略は,全体的に非常にシンプルで実用的で,高低点の短期平均線によってトレンドの判断を実現する.その優点は,ダイナミックで,計算量が少なく,リアルタイム性が高く,頻繁な取引に適している.しかし,突発的な出来事に対する反応の不敏感さと信号誤差率が高い問題もある.これらの問題は,改善と最適化の方向にある.パラメータ調整,フィルタ条件,およびパターン認識などの手段によって,この策略の効果はさらに向上することができる.
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(
"Larry Williams 3 Period EMAs strategy",
overlay=true,
calc_on_every_tick=true,
currency=currency.USD
)
// Time range for backtesting
startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year", defval=2018, minval=1800, maxval=2100)
endDate = input.int(title="End Date", defval=31, minval=1, maxval=31)
endMonth = input.int(title="End Month", defval=12, minval=1, maxval=12)
endYear = input.int(title="End Year", defval=2041, minval=1800, maxval=2100)
inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and
(time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))
// EMA
period = 3
emaH = ta.ema(high, period)
emaL = ta.ema(low, period)
// PLOT:
// Draw the EMA lines on the chart
plot(series=emaH, color=color.green, linewidth=2)
plot(series=emaL, color=color.red, linewidth=2)
// Conditions
if(inDateRange and close < emaL)
strategy.entry("Long", strategy.long, comment="Long")
if(close > emaH)
strategy.close("Long", comment="Close Long")
// Uncomment to enable short entries
//if(inDateRange and close > emaH)
// strategy.entry("Short", strategy.short, comment="Short")
//if(close < emaL)
// strategy.close("Short", comment="Close Short")