この戦略は,複数のタイムフレームの移動平均線を計算し,異なる期間のトレンドを決定する.価格が移動平均値を超えると長くなって,価格が移動平均値を下回ると短くなります.さらに,ストップ・ロストとテイク・プロフィートはリスクと収益をバランスするために組み込まれます.
戦略は以下の主要なポイントに基づいています.
21日,50日,100日,200日間の単純な移動平均を計算します.
価格が移動平均値を超えるとロングで,下回るとショートします.
ロングポジションを開いた後,前のバーの最低価格に近いストップロスを設定し,ショートポジションを開いた後,最高価格に近いストップロスを設定します.
ロングの最低価格を下回り,ショートの最高価格を下回る利益目標設定.
価格がストップ・ロスを切ったとき ポジションを閉じるか 利益を得るときです
複数のタイムフレームのトレンドを判断することで,取引シグナルの信頼性が向上し,トレンドが比較的明確であるときに追跡することができます.ストップ・ロストとテイク・プロフィートメカニクスは,損失が拡大したり,利益が一定のレベルに達したとき,ポジションを退場することによってリスクを制御します.
この戦略の主な利点は以下の通りです.
複数のタイムフレーム分析により信号の信頼性が向上します. 異なる移動平均のクロスオーバーは,いくつかの誤った信号をフィルタリングし,より明確なトレンドタイミングで取引できるようにします.
ダイナミックストップはリスク制御を容易にする.価格アクションに基づいてストップを計算すると,取引ごとに最大損失を制限するための合理的な範囲が提供されます.
シンプルで明確なコード構造.Pine構文は,パラメータを簡単に調整し最適化するための読み取れる構造を提供します.
簡単な実践的な応用.移動平均クロスオーバーは,適切なパラメータチューニングでライブ取引で簡単に実装できる古典的な戦略のアイデアです.
考慮すべきリスクもいくつかあります.
不正確なトレンド判断. 移動平均値は混合信号と遅延を生成し,不正な取引信号につながります.
不安定な市場での損失の露出 ストップ損失は,巨大な価格格差や逆転で容易に引き起こすことができ,大きな損失を伴う.
不適切なパラメータ設定は損失を増大させる. 幅が広いストップや狭い取利益は,取引毎の最大損失を増加させる.
長期保有リスク この戦略の傾向は長期的収益性を考慮しないため,長期にわたって相当な資本を消費する可能性があります.
実際の取引の違い 取引コスト,スリップ等が実際の取引プラットフォームに適用された場合,収益に影響を与える可能性があります.
解決策:
KDJ,MACDなどの他の指標で信号の確認を追加します.
市場状況に応じてストップ幅を調整して 早期のトリガを避ける
パラメータを最適化し,長期的リターンと引き下げを評価します.厳格なバックテストを通じて最高のパラメータ組み合わせを取得します.
紙取引の戦略を徹底的にテストし 手動ストップを追加します
さらに改善の余地があります.
定量的な入出規則を追加します.例えば,より明確なトレンドで取引を確保するために,新しい高値と低値を確認します.
ポジションサイズとリスク管理を組み込む. 口座サイズと市場状況に基づいてポジションを動的にサイズする.
傾向の検証を強化する.PRZ,ATR,DMIなどの指標を使用して適切な傾向をフィルターし選択する.
長期と短期間を交代して 利益を固定するために 利回り停止を設定します
投資モデルを用いて株式プールを構築し,様々な要因に基づいて株式をスコアしてフィルターします.
リスク管理のために機械学習を追加します.判断を支援し,人間のエラーを防ぐためにLSTM,RNNなどを使用します.
この単純な移動平均クロスオーバー戦略は,トレンドをフォローするための簡単な実装を提供します. ダイナミックストップはリスクを制御するのに役立ちます. しかし,いくつかの信号不正確性とウィップソーリスクがあります. パラメータと追加のテクニックのさらなる最適化により,より堅牢なパフォーマンスにつながる可能性があります.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true) // Input for Moving Averages ma21 = ta.sma(close, 21) ma50 = ta.sma(close, 50) ma100 = ta.sma(close, 100) ma200 = ta.sma(close, 200) // Calculate the lowest point of the previous candle for stop loss lowestLow = ta.lowest(low, 2) // Calculate the highest point of the previous candle for stop loss highestHigh = ta.highest(high, 2) // Calculate take profit levels takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh) takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh) // Entry Conditions longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200) shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200) // Stop Loss Levels stopLossLong = lowestLow * 0.995 stopLossShort = highestHigh * 1.005 // Exit Conditions longExitCondition = low < stopLossLong or high > takeProfitLong shortExitCondition = high > stopLossShort or low < takeProfitShort if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) if (longExitCondition) strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong) if (shortExitCondition) strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)