黄金比移動平均取引戦略


作成日: 2024-01-05 14:21:52 最終変更日: 2024-01-05 14:21:52
コピー: 0 クリック数: 884
1
フォロー
1617
フォロワー

黄金比移動平均取引戦略

概要

ゴールド分割移動平均トレード戦略は,長期短期移動平均のゴールドクロスを取引シグナルとして利用しようとする量化トレード戦略である.この戦略は,RSI指数と組み合わせて局所的な高値でポジションを開くのを避けるため,リスクを制御する.

戦略原則

この戦略は主に2つの移動平均に基づいており,200日線が長期平均線であり,10日線が短期平均線である.短期平均線が長期平均線を突破すると買入シグナルが生じ,短期平均線が長期平均線を突破すると売出シグナルが生じます.これが有名な金十字である.この戦略は同時にRSI指標と組み合わせられ,RSIが30未満であれば,戦略は超売り区域でのみ取引を開始する.

具体的には,次の条件を満たす場合,多頭ポジションが開きます.

  1. 10日平均線で200日平均線を履く
  2. 現在持っていない
  3. RSIは30未満です.

平仓条件は以下の通りです.

  1. ストップ・損失: 価格が,開設価格の一定比率 (設定可能な) を破るとストップ・損失
  2. ストップ:価格が一定比率を超えるとストップする (設定可能)

優位分析

この戦略の利点は以下の通りです.

  1. 移動平均の黄金のクロスシグナルを使用し,これは古典的で効果的な技術指標の取引シグナルです.
  2. RSIと組み合わせると,高値で買い物を避けるので,リスクは一定程度コントロールできます.
  3. ストップ・ロズとストップ・ストップの設定により,利益を固定し,リスクを回避できます.

リスク分析

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

  1. 移動平均策は誤った信号や転機を起こす可能性が高い
  2. RSIは,強度の状況で失効する.
  3. ストップオフの設定が小さすぎると,超短線取引が起こり,頻繁にストップオフが起こる

これらのリスクを軽減するために,以下の最適化策を考慮することができます.

  1. 平均線参数を変更するか,またはさらに平均線を追加します.
  2. RSIが他の指標と合わさって確認された
  3. ストップダストストップパラメータの設定

最適化の方向

この戦略はさらに改善できる余地があります.

  1. フィルタリング信号を追加し,誤信号を回避する
  2. 移動平均のパラメータを最適化する
  3. 動的ストップを波動率指数と組み合わせて設定する
  4. 市場を判断する機械学習モデル
  5. アルゴリズムによる自動最適化パラメータ

要約する

黄金分割移動平均線取引戦略は,全体として,シンプルで効果的なトレンド追跡戦略である.それは,クラシックな均線交差信号を利用して取引機会を生成し,リスクを制御するためにストップストップを設けている.この戦略は,多指標組合せ,パラメータ最適化,機械学習などの手段によってさらに改善され,よりよい戦略効果を得ることができる.

ストラテジーソースコード
/*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")