この戦略の主なアイデアは,市場の傾向を判断し,低リスク取引を実施するために,高速移動平均線と高速移動平均線の黄金十字と死亡十字を使用することです.高速移動平均線がスロー移動平均線を超越すると,市場は上昇傾向に入っている可能性があることを示します.高速移動平均線がスロー移動平均線を下回っている場合,市場は下落傾向に入っていることを示します.
この戦略は,指数的な移動平均値を使用する. 移動平均値は,価格傾向を判断するために価格データをスムーズにする傾向分析指標である. 急速移動平均値は,より小さなパラメータを持ち,価格変化に迅速に対応することができる. 遅い移動平均値は,より大きなパラメータを持ち,価格変化にゆっくりに対応する. 急速移動平均値は,遅い移動平均値を超えると,市場は牛市場に入っている可能性があることを示し,ロングポジションを確立すべきである. 急速移動平均値は,遅い移動平均値を下回ると,市場は熊市場に入っている可能性があることを示し,ショートポジションを確立すべきである.
具体的には,この戦略は,2つの指数関数移動平均を定義し,順番に快速移動平均と 55 の周期を持つ.この戦略は,2つの移動平均線の黄金十字と死十字に基づいてエントリーと出口を決定する.快速移動平均がスロー移動平均を超えるとロングで,高速移動平均がスロー移動平均を下回るとショートする.
また,この戦略は,ストップ・ロストとテイク・プロフィートを設定するためにATR波動性指標も使用する.ATRは市場の波動性の程度を効果的に評価することができる.ストップ・ロスは価格からATR距離の1.5倍に設定され,テイク・プロフィートは価格からATR距離の1倍に近い位置に設定される.
この戦略には以下の利点があります.
この戦略にはいくつかのリスクもあります:
上記のリスクに対処するために,次の側面から最適化することができます:
この戦略は,次の側面でさらに最適化できます.
機械学習方法を用いて,移動平均のパラメータを自動的に最適化して適応性を向上させる.
基本値をフィルタリング条件として追加して,Fedのレート決定や重要なマクロデータリリースなどの主要なネガティブなニュースが来ると,盲目的にロングやショートを行わないようにします.
ATRが高すぎたり低くなりすぎたりすると取引を一時停止し 極端な市場環境で損失を回避します
P/E比率や取引量の拡大のような 株の基本要素を組み込み ダイナミックストップ・ロスを設定し 利益の範囲を設定します
ポジションサイズメカニズムを追加し,利益比がレベルに達するとポジションを徐々に削減し,比較的大きな損失を被った場合,取引を一時停止するなど.
この戦略の全体的な論理は明確でシンプルで,市場動向を決定するために二重移動平均クロスオーバーを使用し,典型的なトレンドフォロー戦略である.一方,戦略はATR指標を使用してストップ損失を動的に設定し利益を得るためにリスクも非常によく制御する.さらなる最適化により,戦略は引き下げ制御とトレンドライディングの観点から強化され,より安定した投資パフォーマンスにつながります.
/*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=3 strategy(title="No-Nonsense Strategy Template [WM]", overlay = true) price = close // // ATR stuff // atrLength = input(14, "ATR Length") slMultiplier = input(1.5, "SL") tpMultiplier = input(1, "TP1") atr = atr(atrLength) // // Strategy under test. MA crossover // fastInput = input(21) slowInput = input(55) fast = ema(price, fastInput) slow = ema(price, slowInput) plot(fast, color = red) plot(slow, color = blue) goLong = crossover(fast, slow) goShort = crossunder(fast, slow) if (goLong) sl = price - atr * slMultiplier tp = price + atr * tpMultiplier strategy.entry("Long", strategy.long) strategy.exit("Long Exit", "Long", stop = sl, limit = tp) if (goShort) sl = price + atr * slMultiplier tp = price - atr * tpMultiplier strategy.entry("Short", strategy.short) strategy.exit("Short Exit", "Short", stop = sl, limit = tp)