月の終わりのブレイク 200日移動平均戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-08 16:02:08
タグ:

img

概要

この戦略は,株価のトレンド方向を把握するために,月の終わりに200日間の移動平均値の価格ブレイクに基づいています.価格が200日間のMAを突破したとき,ロングポジションが確立されます.そうでなければ,ポジションはクリアされます.

戦略原則

  1. 価格動向を判断するための指標として200日間の単純な移動平均dma200を使用します.
  2. 毎月の最後の取引日に,閉じる価格がdma200より高いかどうかを判断します.
  3. 閉じる価格が200日間MAを突破した場合,次の取引日の開業時に完全なロングポジションを設定する.
  4. 閉じる価格が200日間MAを下回る場合は,次の取引日の開業時にすべてのポジションをクリアする.
  5. 株価が上昇傾向に入るとポジションを確立し,下落傾向を回避する

利点分析

  1. 戦略の利点は,単純で効果的であり,理解し実行しやすいこと
  2. 月末にポジションを取ることは,取引頻度を削減し,取引コストとスライド効果を最小限に抑えることができます.
  3. 200日間MAは,ほとんどの株で有効な,非常に一般的に使用される中長期トレンド判断指標です.
  4. この戦略は,比較的少額で,最大減少,制御可能なリスク

リスク分析

  1. 200日間MAは,価格逆転を時間内に捉えるのに十分敏感ではないかもしれない.
  2. ポジションを取れる取引ポイントは 月1点のみで,上下向きの機会を逃す可能性があります.
  3. 市場全体の動向が不確実である場合,戦略は正しく判断できない可能性があります.
  4. これらのリスクを減らすために他の指標を組み合わせる必要があります

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

  1. 戦略の頻度を改善するために,月の初めまたは半ばに取引ポイントを増やすことを検討します.
  2. 価格変動を判断し,間違った取引を避けるためにボリンジャー帯のような指標を追加します.
  3. 適正なパラメータの組み合わせを見つけるために,異なるMAパラメータの異なるストックに対する適正効果を評価する.
  4. 引き下げが高すぎると損失を積極的に止めるための動的ポジションサイズメカニズムを確立する

概要

この戦略は比較的シンプルで,全体的に実用的で,200日間MAの月末ブレイクを通じて,比較的少ない引き下げとリスクで,株の中長期価格動向を効果的に把握しています.より多くの指標とダイナミックな最適化を組み合わせることで,戦略の安定性と収益性がさらに向上することができます.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 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/
// © muscleriot
//200 dma
//2000-2016 backtested 
//1 signal per month only at end of month
//If > 200DMA enter long
//If < 200DMA goto cash
//results: 318% drawdown 17% vs 125% with 55% drawdown for buy and hold
//@version=5
strategy("200DMA last DOM - ajh", overlay =true,default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Use 100% of  equity always

dma200 = ta.sma(close, 200)
plot(dma200, color=color.red, linewidth = 2)
//e =dayofmonth(time)
// backtesting date range
from_day = input.int(defval=1, title="From Day", minval=1, maxval=31)
from_month = input.int(defval=1, title="From Month", minval=1, maxval=12)
from_year = input.int(defval=2018, title="From Year", minval=1900)

to_day = input.int(defval=1, title="To Day", minval=1, maxval=31)
to_month = input.int(defval=1, title="To Month", minval=1, maxval=12)
to_year = input.int(defval=9999, title="To Year", minval=1900)

time_cond = time > timestamp(from_year, from_month, from_day, 00, 00) and 
   time < timestamp(to_year, to_month, to_day, 23, 59)



xLong = dayofmonth(time) == 30 and (close > dma200) ? true : na
xSell = dayofmonth(time) == 30 and (close < dma200) ? true : na
plotchar(xLong, "long","L", color=color.green)    
plotchar(xSell, "Sell","S", color=color.red)    
if (xLong == true) and time_cond
    strategy.entry("long", strategy.long)
if (xSell == true) and time_cond
    strategy.close("long")

もっと