黄金比率移動平均取引戦略

作者: リン・ハーンチャオチャン開催日:2024-01-05 14:21:52
タグ:

img

概要

ゴールデン比率移動平均取引戦略は,短期および長期移動平均の黄金十字を取引信号として利用しようと試みる定量的な取引戦略である.この戦略には,リスクを制御するために,ローカル・ハイでポジションを開くのを避けるために,RSI指標も組み込まれている.

戦略の論理

この戦略は主に2つの移動平均値に基づいている.200日MAは長期MAであり,10日MAは短期MAである.短期MAが長期MAを横切ったときに購入信号が生成され,短期MAが長期MAを下回ったときに販売信号が生成される.これは有名な黄金十字である.この戦略にはRSI指標も組み込まれ,RSIが30未満である場合にのみ過剰販売エリアでロングポジションを開く.

具体的には,次の条件が満たされている場合,ロングポジションが開かれます.

  1. 10日間のMAが200日間のMAを上回る
  2. 現時点では無
  3. RSI 30未満

閉店条件は以下のとおりである.

  1. ストップ損失: 価格が開始価格の一定のパーセント (調整可能) 以下の値を下回る時,ストップ損失
  2. 利益を得る:価格が一定のパーセントを超えると利益を得る (調整可能)

利点分析

この戦略には以下の利点があります.

  1. これは,古典的で効果的な技術指標の取引信号である移動平均の黄金のクロス信号を使用
  2. RSI を 含め たら,高値 の 買い物 を 避ける こと が でき,ある程度 リスク を 制御 できる
  3. ストップ・ロスの設定と 利益を取ることで 利益を固定し リスクを回避できます

リスク分析

この戦略にはいくつかのリスクもあります:

  1. 移動平均戦略は,間違った信号とウィップソーを生成する傾向があります
  2. RSI は 強い 傾向 の ある 市場 で 失敗 する こと が あり ます
  3. ストップロスの設定が小さすぎる場合,超短期取引と頻繁にストップロスのアクティベーションにつながる可能性があります.

これらのリスクを軽減するために,以下の最適化措置を検討できます.

  1. MAパラメータを調整するか,より多くのMAを追加する
  2. RSI信号を確認するための他の指標を組み込む
  3. ストップ・ロスの設定を調整し,利益を取ります.

オプティマイゼーションの方向性

戦略をさらに最適化できる余地があります.

  1. 誤った信号を避けるためにより多くの指標フィルターを増やす
  2. 移動平均パラメータを最適化
  3. 動的ストップを設定するための変動指標を組み込む
  4. 市場状況を判断するための機械学習モデルを追加する
  5. パラメータを自動的に最適化するためにアルゴリズムを使用

結論

概要すると,ゴールデン比率移動平均取引戦略は,トレンドフォロー戦略としてシンプルで効果的なものです.クラシックなMAクロスオーバー信号を使用して取引機会を生み出し,リスクを制御するためにストップがあります.戦略は,マルチインジケーター組み合わせ,パラメータ最適化,機械学習などによりさらに改善され,より良い戦略パフォーマンスを得ることができます.


/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
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/
// © tsujimoto0403

//@version=5
strategy("聖杯", overlay=true,default_qty_type=strategy.percent_of_equity,
     default_qty_value=100)

//ユーザーインプットの準備
malongperiod=input.int(200,"長期移動平均BASE200",group = "パラメータ")
mashortperiod=input.int(10,"長期移動平均BASE10",group = "パラメータ")
stop=input.int(20,title = "損切の割合%",group = "パラメータ")
profit=input.int(5,title = "利食いの割合%",group = "パラメータ")
startday=input(title="バックテストを始める日", defval=timestamp("01 Jan 2018 13:30 +0000"), group="期間")
endday=input(title="バックテスを終わる日", defval=timestamp("1 Jan 2099 19:30 +0000"), group="期間")

//使う変数
var float stopprice=0
var float takeprofit=0

//とりあえず使うインジケーターをプロット
malong=ta.sma(close,malongperiod)
mashort=ta.sma(close,mashortperiod)


plot(malong,color=color.aqua,linewidth = 2)
plot(mashort,color=color.yellow,linewidth = 2)
bgcolor(ta.rsi(close,3)<30?color.rgb(229, 86, 86, 48):na)

//期間条件
datefilter = true

//エントリー条件
if close>malong and close<mashort and strategy.position_size == 0 and datefilter and ta.rsi(close,3)<30
    strategy.entry(id="long", direction=strategy.long)

if strategy.position_size>0 
    strategy.exit(id="long",stop=(1-0.01*stop)*strategy.position_avg_price)

//売り
if  strategy.position_size > 0 and close>mashort and close<low[1] 
    strategy.close(id ="long")




もっと