双動平均フォロー戦略は,動平均に基づいたトレンドフォロー戦略である.異なる期間の動平均を計算してトレンド方向を決定し,それに応じて取引シグナルを生成する.短期動平均が長期平均を横切るとロングになり,短期動平均が長期平均を下回るとショートになる.この戦略は,利益を得る傾向に従う.
ダブル・ムービング・メアリーは,閉店価格の14期および28期シンプル・ムービング・メアリング (SMA) を計算することによってトレンド方向を判断する.具体的には,各期末の閉店価格の14期SMAと28期SMAを計算する.14期SMAが28期SMAを横切ると,ロング・シグナルを送信し,ロング・ポジションを開く.14期SMAが28期SMAを下回ると,ショート・シグナルを送信し,ショート・ポジションを開く.
ポジションを入力した後,利益とストップ損失レベルを設定することでリスクを管理する.利益とストップ損失のポイントは入力パラメータに基づいて価格に変換される.また,利益とリスクの視覚的な判断のためにチャート上で利益のライン,ストップ損失ライン,エントリー平均価格ラインをプロットする.
双重移動平均の戦略は以下の利点があります.
この2つの移動平均の戦略には,いくつかのリスクもあります.
リスクは次の側面から管理できます.
この戦略の2つの移動平均は,次の方法で最適化できます.
動的ストップ損失ポイントの波動性指標を追加します.例えば,早速離脱を避けるために波動性が上昇するときにストップ損失を拡大するためにATRと組み合わせます.
移動平均サイクルのパラメータを最適化し,より多くの組み合わせをテストし,適切な頻度で適切な取引シグナルを選択します.
トレンドターニングポイントの近くで誤った信号を避けるため,MACD,DMIなどのトレンドフィルターインジケーターを追加し,不必要な取引を削減します.
価格動向を予測し,従来のルールを置き換えるための機械学習モデルを増やす.LSTM,GRUディープラーニングモデルはより良い結果を生む可能性があります.
低相関性を利用した取引品種を多様化して総引き上げを減らす.
結論として,二重移動平均フォローする戦略は,シンプルで実用的なトレンドフォローするシステムです.トレンドに沿って動いて引き下げリスクが低く,実装が簡単です. サイクルパラメータを調整し,ストップ損失と利益を設定し,トレンド判断指標を追加することで最適化することができます. より多くの市場環境に適応し,より安定した収益を得ることができます.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © coinilandBot // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © adolgov // @description // //@version=4 strategy("coiniland copy trading platform", overlay=true) // random entry condition longCondition = crossover(sma(close, 14), sma(close, 28)) if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = crossunder(sma(close, 14), sma(close, 28)) if (shortCondition) strategy.entry("My Short Entry Id", strategy.short) moneyToSLPoints(money) => strategy.position_size !=0 ? (money / syminfo.pointvalue / abs(strategy.position_size)) / syminfo.mintick : na p = moneyToSLPoints(input(200, title = "Take Profit $$")) l = moneyToSLPoints(input(100, title = "Stop Loss $$")) strategy.exit("x", profit = p, loss = l) // debug plots for visualize SL & TP levels pointsToPrice(pp) => na(pp) ? na : strategy.position_avg_price + pp * sign(strategy.position_size) * syminfo.mintick pp = plot(pointsToPrice(p), style = plot.style_linebr ) lp = plot(pointsToPrice(-l), style = plot.style_linebr ) avg = plot( strategy.position_avg_price, style = plot.style_linebr ) fill(pp, avg, color = color.green) fill(avg, lp, color = color.red)