移動平均に基づくトレンドフォロー戦略


作成日: 2023-12-20 14:23:49 最終変更日: 2023-12-20 14:23:49
コピー: 0 クリック数: 771
1
フォロー
1621
フォロワー

移動平均に基づくトレンドフォロー戦略

概要

この戦略は,マーク・ミネヴェニの株式選択株のテンプレートに基づいて,移動平均指標と組み合わせて株価の傾向を判断し,自動買いと止損を実現する.戦略は,主に株価が上昇傾向にあるかどうかを判断し,重要な移動平均を突破したかどうかを判断し,購入シグナルを生成する.同時に,戦略は,株価が逆転したときに積極的な止損を設定する.

戦略原則

この戦略は主に以下の条件を判断し,条件が同時に満たされると買取シグナルを生成する.

  1. 株価は150日目と200日目の移動平均より高い
  2. 150日移動平均は200日移動平均より高い
  3. 200日移動平均は,過去1ヶ月で上昇傾向にある
  4. 50日移動平均は150日移動平均と200日移動平均より高い
  5. 株価は50日移動平均より高い
  6. 株価は52週間の最低値から25%以上上昇した.
  7. 株価は52週間の最高値に近づいている.

上記の条件が満たされると,戦略は株価が上昇段階にあると判断し,買い信号を生成する.

さらに,戦略は同時に,株価が最高点から5%引き下がりまたは10%上昇したときに,ストップ・ロスを設定します.

戦略的優位性

  1. マーク・ミネヴェニの株式選択のアイデアを活用して,利益の確率を高める
  2. 多重移動平均を用いてトレンドを確認し,買点を見逃さないようにする.
  3. 損失を抑える仕組みを設定し,大きな損失を回避する

リスク分析

  1. 株価は短期的に調整され,ストップ・損失が引き起こす可能性があります.
  2. 移動平均はトレンドを完全に判断できないので,偽突破が発生する可能性があります.
  3. 設定されたストップ・ロスの比率は不完全であり,早めにストップしたり,損失を拡大したりする可能性があります.

最適化の方向

  1. 異なるパラメータの移動平均の組み合わせをテストできます.
  2. 購入のタイミングを判断する他の技術指標も追加できます
  3. ストップダメージの最適化のための比例設定

要約する

この戦略は全体的にトレンド取引の考え方に従っており,株価の上昇傾向が確認された前提で買取シグナルを生成する.同時に,ストップダストメカニズムを設定し,リスクを制御する.細かいパラメータを最適化することによって,戦略の安定性と収益性をさらに向上させることができる.しかし,いかなる戦略も市場リスクを完全に回避することは困難であり,投資家が慎重に扱う必要があります.

ストラテジーソースコード
/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Pure Mark Minervini 10%TP 5%CL", pyramiding = 0, commission_type=strategy.commission.percent, commission_value=0.08, overlay=true)

ma50 = sma(close,50)
ma150 = sma(close,150)
ma200 = sma(close,200)
ma200_22 = ma200[22]

high_loopback = input(260, "High Lookback Length")
low_loopback = input(260, "Low Lookback Length")
highest_price = highest(high, high_loopback)
lowest_price = lowest(low, low_loopback)
above52lo = ((close/lowest_price)-1)*100
below52hi = (1-(close/highest_price))*100
ep = strategy.position_avg_price

trigger = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3
var label maLabel = na
if (trigger)
    yLocation = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ?
         yloc.abovebar :
         yloc.belowbar

    // labelStyle = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ?
    //      label.style_labeldown :
    //      label.style_labelup

buy = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3
sell = close>ep*1.1 or close<ep*0.95

strategy.entry("TF", strategy.long, when = buy)
strategy.close("TF", when = sell)