これは,ダブル移動平均のクロスオーバーに基づいた取引戦略である.異なる長さの移動平均が交差するときに,購入・販売信号を生成する.特に,速いMAが遅いMAを越えたとき,長くなって,速いMAが遅いMAを下回るときに短くなります.
この戦略の核心論理は,二つの移動平均値間のクロスオーバー原理にある.移動平均値は,指定された時間間の算術平均価格である.それは市場のノイズをフィルターし,より明確な価格傾向を明らかにするのに役立ちます.
この戦略では,短期MMAは短期的傾向を捉え,長期MMAは長期的傾向を捉える.短期MMAは最新の価格変動に反応する際により敏感であるため,長期MMAを横断することは,今後トレンドの逆転を意味する.
具体的には,この戦略は,ユーザーによって定義されたlong_periodとshort_periodでta.smaを使用してMAを計算する.その後,ta.crossoverとta.crossunderを使用して,2つの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))