黄金のトレンドフォロー戦略に投資する


作成日: 2023-10-31 15:09:22 最終変更日: 2023-10-31 15:09:22
コピー: 0 クリック数: 658
1
フォロー
1617
フォロワー

黄金のトレンドフォロー戦略に投資する

概要

この戦略は,市場トレンドの方向を判断するために均線モデルを使用し,看板トレンドの時に定期的に定額化して,市場ゴールデンクロス上昇傾向を追跡する戦略である.

戦略原則

この戦略は以下の技術的原理に基づいています.

  1. EMA平均線を使って市場トレンドの方向を判断する。高速のEMA線で遅いEMA線を横切るとき,看板のトレンドとして判断し,多方向の入場準備をする。

  2. MACD指数と組み合わせて入場を判断する時点。 MACD指数が正転負すると,買い手が弱くなって,多方向入場をすることを示している。

  3. 毎月1回のみの入場を制限し,追いかけるのを避けます.入場する回数は固定設定できます.

  4. 開始日と終了日を設定し,リターンサイクルを制限できます.リターンが終了すると,戦略はすべてのポジションを平らにするでしょう.

具体的には,この戦略はまず,急速EMA線と遅いEMA線を計算し,その両者の金叉関係を検出して市場の傾向を判断する.同時に,MACD指標を計算して特定のエントリーポイントを判断する.二者の条件が成立すると,複数の信号を生成し,毎月1回しかエントリーできないという制限のルールに従って,実際にエントリー指示を発行することを決定する.各エントリーにかかる資金の額を事前に設定することができる.反測が終了すると,戦略は主動的にすべてのポジションを平らにする.

戦略的優位性

これはシンプルで直接的なトレンド追跡戦略で,以下の利点があります.

  1. EMA平均線を用いて大トレンドの方向を判断するのは簡単で実用的です. EMA平均線は価格の変化に一定の平滑作用があり,震動市場の騒音を効果的にフィルターすることができます.

  2. MACD指標は,買い物構造が弱くなるタイミングをより正確に判定することができ,入場リスクが低い.

  3. 牛市では,月1回に限って追いかけるだけで,牛市で追いかけるのを避けることができます.

  4. 毎月の入場額をカスタマイズし,自分の戦略に応じてポジションを柔軟に調整できます.

  5. 開始日と終了日により,反省テストを行い,戦略の効果を評価することができる.

  6. 模擬取引が市場から退出するときにポジションを保持する厄介な事態を回避するために,反測が終了したときにポジションを平準化します.

リスクと対策

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

  1. 平均線を頼りにトレンドを判断する方法は,短期的な調整の機会を逃すか,トレンドが逆転する時に反応するほど敏捷ではないかもしれない.平均線周期を適切に短縮したり,他の判断指標を追加して最適化することができる.

  2. 月1回だけ追尾操作を行うと,良い入場時刻を逃す可能性があります.入場頻度を緩めることや,新高を突破するときに再び追尾することを考えることができます.

  3. ある程度のフィットネスフィットリスクがある。パラメータ調整の余地を増やし,市場間および時間間における安定性テストを行うべきである。

  4. 追いつくために下落や過買の危険性がある.毎月の入金額を適切に管理し,ポジションを過大にしないようにする.

最適化の方向

この戦略は,以下の方法で拡張され,最適化することができます.

  1. EXIT ロジックが追加され,市場が明らかにベアヘッドになったときに積極的にストップします.

  2. MACDの微笑みの基準が確立されたとき,さらに1回の買い付けを加え,より充分なトレンドの露出を得ました.

  3. この月度の新高と前月の新高を比較した多空力道判断を導入し,トレンドが依然として強いかどうかを評価する.

  4. ポジションコントロールの論理を追加する.月額入金額は固定値ではなく,比例制御を行うことができる.

  5. 異なる均線組合せとMACDパラメータが戦略の効果に与える影響を評価する.最適なパラメータ組合せを探す.

  6. トレーリングストップの追加 価格が新高に達した後に一定幅で追跡を開始し,利益が継続されるようにする

要約する

この戦略は,全体として,単純なトレンド追跡戦略として,核心思想は明確で,実行しやすい.均線トレンド追跡と定投結合のテストに使用するのに適しています.量化取引入場戦略の1つとして学ぶことができます.しかし,実体では,ポジションの規模を制御することに注意する必要があり,より複雑な市場環境に対応できるように戦略を継続的に最適化する必要があります.

ストラテジーソースコード
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-30 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/
// © runescapeyttanic

//@version=4
// strategy("Buy and Hold entry finder Strategy",pyramiding=10000, overlay=true,initial_capital=0,default_qty_type=strategy.cash,default_qty_value=1000,currency = currency.EUR,commission_type=strategy.commission.cash_per_order,commission_value=0)

//INPUTS##################################################################################################################

maxEmaDistance = input(title="Maximum EMA Distance", type=input.float, step=0.01, defval=50000)
emalength = input(title="EMA Length", type=input.integer,defval=200)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=12, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=02, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100)

endDate1=endDate-1
//starttag
//startmonat
//MACD########################################################################################################################

fast_length=12
slow_length=26
src=close
col_macd=#0094ff
fast_ma = ema(src, fast_length)
slow_ma = ema(src, slow_length)
macd = fast_ma - slow_ma

//EMA Distance CALC########################################################################################################

ma1 =ema(close,emalength)
distFromMean = close - ma1

inDateRange = true

longCondition = (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0 and inDateRange)
longnow=false

if(longCondition and strategy.position_size == 0)
    strategy.entry("My Long Entry Id", strategy.long)
    longnow:=true

if(longCondition and strategy.position_size > 0)
    longnow:=true
    

if(longCondition and strategy.position_size > 0 and month>valuewhen(longnow, month ,1) or longCondition and strategy.position_size > 0 and year>valuewhen(longnow, year ,1) and inDateRange)
    strategy.entry("My Long Entry Id", strategy.long)

plotchar(minute, "Minuten", "", location = location.top)

plotchar(hour, "Stunden", "", location = location.top)    

plotchar(dayofmonth, "Tage", "", location = location.top)

plotchar(month, "Monat", "", location = location.top)

plotchar(year, "Jahr", "", location = location.top)

plotchar(strategy.position_size, "Positionen", "", location = location.top)

plotchar(longCondition, "Long Condition", "", location = location.top)

if true
    strategy.close_all()

//#########################################################################################################################

plotArrow = if (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0)
    1
else
    0
    
plotarrow(series=plotArrow)