この取引戦略は,トレンドトラッキングのための単純な移動平均値と移動平均値クロスオーバーシステムに基づいています. 異なる期間の高速および遅い移動平均値のクロスオーバーを,ロングまたはショートに行くシグナルとして使用します. 速いMAが下から遅いMAを超えると,ロング;速いMAが上から遅いMAを下に越えると,ショートします. この戦略は明らかなトレンドを持つ製品にうまく機能します.
この戦略は60日間の簡単な移動平均値と200日間の緩やかな移動平均値を使用する.高速MAは短期的なトレンドを反映した価格変化により速く反応し,遅いMAはよりゆっくりと反応し,中長期的トレンドを示します.
低期MMAが低期MMAを下から越えると,短期価格が上昇し,バックスマーケットに入ると信号になります.低期MMAが高期MMAを下から越えると,短期価格が下がり,熊市場に入ると信号になります.
この戦略は,MAクロスオーバーを使用してトレンド方向を決定する. 短期間の価格がより速く上昇すると,ショートMAはロングMAを押し上げ,下から横断する.これは上向きが浮上し,ロングポジションを取るべきであることを意味します.逆に,短期間の価格がより速く下がると,ショートMAはロングMAを引き下げ,上から横断し,ダウントレンドを意味し,ショートポジションを取るべきです.
戦略は,迅速かつ遅いMAクロスオーバーを用いて価格動向の転換点を把握することで,それに応じてロング/ショートポジションを調整することができる.これは戦略のトレンド決定とトレード信号生成の主要な論理である.
この戦略を最適化し,安定性を向上させるには,製品
この戦略は,次の側面においてさらに最適化することができる.
変動頻度が異なる製品に適応するために,迅速かつ遅い MA 期間を最適化します.最適を見つけるためにより多くの組み合わせをテストすることができます.
誤った信号を減らすために 音量ピークなどのフィルターを追加して 入力条件を改善します
ストップ・ロスの改善や 収益性の向上のために トレイリング・ストップや ダイナミック・テイク・プロフィートの改善
コミッションなどの取引コストを考慮し,より現実的なバックテストのためにコスト評価モジュールを追加します.
異なる製品に合わせた最適なパラメータの組み合わせを見つけるために デザインパラメータ宇宙
地元パターン識別を追加し,トレンドターニングポイントを決定し,エントリーと出口のタイミングを改善します.
戦略を体系的に最適化することで 収益性や安定性が大きく向上し 引き上げが減少できます
トレーディング戦略は,典型的なトレンドフォロー戦略であるMAクロスオーバーを使用してトレンドシフトを決定する.この戦略は,長/短信号を生成するために,高速および遅いMA間のクロスオーバーを使用し,両者の組み合わせを通じてトレンド方向を特定する.この戦略は,安定して信頼性があり,トレンドを把握し,理解し,実装するのが簡単です.最適化されると,ほとんどの製品に適応し,基本的な定量的な取引戦略を形成することができます.他の技術指標と組み合わせ,ストップ損失/利益を得る戦略を最適化などにより,収益性と勝利率のさらなる改善を達成することができます.
/*backtest start: 2024-01-04 00:00:00 end: 2024-01-11 00:00:00 period: 10m basePeriod: 1m 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/ // © thebearfib // //@version=5 // strategy("x-over 150d_200d_sma - Free", overlay = true) repaint = input.bool(defval = false, title = "[RePaint] Uncheck to see real time results") //when you deselect it - it shows what would have happened in real time while trading the system srcmc = request.security(syminfo.tickerid, 'D', open, lookahead= repaint ? barmerge.lookahead_on : barmerge.lookahead_off, gaps=barmerge.gaps_off) fast_length = input(title="Fast Length", defval=60) slow_length = input(title="Slow Length", defval=275) _fast = ta.sma(srcmc, fast_length) _slow = ta.sma(srcmc, slow_length) plot(_fast, title="Fast SMA", color=color.red, linewidth = 1) plot(_slow, title="Slow SMA", color=color.white, linewidth = 3) // // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Calculating ————————————————————————————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // longProfitPerc = input.float(title="Long Take Profit (%)", minval=0.01, step=1.0, defval=42) * .01 longStopPerc = input.float(title="Long Stop (%)", minval=0.01, step=1.0, defval=13) * .01 // // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Stop Conditions ———————————————————————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— longExitPrice = strategy.opentrades > 0 ? strategy.position_avg_price * (1 + longProfitPerc) : srcmc * (1 + longProfitPerc) longStopPrice = strategy.opentrades > 0 ? strategy.position_avg_price * (1 - longStopPerc) : srcmc * (1 - longStopPerc) // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Long Conditions ———————————————————————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— longCondition = srcmc > _slow and ta.crossover(_fast, _slow) closeCondition = ta.crossover(srcmc, _slow) if (longCondition) strategy.entry("Entry (long)", strategy.long, comment="→ 𝗟𝗴 𝗘𝗻𝘁𝗿𝘆") if (closeCondition) strategy.close("Entry (long)", comment=" 𝗟𝗴 𝗘𝘅𝗶𝘁 ←") if (strategy.position_size > 0) strategy.exit(id="XL", limit=longExitPrice, stop = longStopPrice, comment_profit = "Take Profit", comment_loss = "Stop Loss") // // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Never the End Just the beginning ————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— //