2年間の高値コールバック移動平均戦略


作成日: 2024-01-26 14:49:28 最終変更日: 2024-01-26 14:49:28
コピー: 1 クリック数: 577
1
フォロー
1617
フォロワー

2年間の高値コールバック移動平均戦略

概要 (Overview)

この戦略は,株の2年新高値と移動平均をベースにした唯一の計算方法である. 株価が2年新高を打つ後,第13日の指数移動平均に回調すると,買取シグナルが生じます.

戦略原則

この戦略の核心的な論理は,以下の単一の計算方法に基づいています.

  1. 株価が2年ぶりの高値に達すると,短期的な高値が形成される.これは比較的に重要な価格点である.

  2. 価格が新しい高点から下がり,第13日の指数移動平均に戻ると,比較的に良い買取のチャンスである.これは価格の中心的な特性を利用している.

  3. また,買取シグナルを発信する際,株価は2年ぶりの新高値の10%の範囲内で,遠くないようにしなければならない.また,13日線より低く21日線より高く,買取のタイミングの選択を保証する.

  4. 持ったポジションでは,価格が21日線以下で5%または2年新高から20%下落した場合,区間の結算利益が止まります.

戦略上の利点

この戦略は長期に渡って行われてきたもので,以下の利点があります.

  1. この2年ぶりの高値を利用して,潜在的トレンド転換の機会を効果的に判断できます.

  2. 13日指数移動平均は,上場基準として,揺れを効果的にフィルターして,より強い勢いを決定することができる.

  3. 価格の特性を利用して,主観的な推測を避け,信号を発信する唯一の計算方法.

  4. 利益のほとんどを閉じ込めるために,適正にストップ・ロスを考慮してください.

リスクと解決策

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

  1. 状況が深度回调に発展し,全損は止められない.この時,大環境を評価して,断固たる損は止められないかどうかを決定する必要がある.

  2. 隔夜に大きな穴がある場合,完全な止損はできません.これは,適切な緩解の止損幅を対応として必要とします.

  3. 13日線フィルター振動の効果は望ましくないし,誤信号が多すぎます.この時は21日線まで適切に延長できます.

  4. 新高表現のトレンドターニングポイントの効果は不十分であり,他の指標との組み合わせを考慮する.

戦略の最適化に関する提案

この戦略には改善の余地があります.

  1. 投資家は,投資の状況を判断する他のツールも導入し,不必要な投資を回避することができます.

  2. 振動領域の誤差をさらに回避するために,量能指標などの判断力を高めます.

  3. 移動平均のパラメータを最適化して,価格特性をよりよく捉えることができる.

  4. 戦略の柔軟性を高めるため,機械学習の方法を使用して,二年新高値のパラメータを動的に最適化します.

結論から言うと

この戦略は,全体的に比較的に独特の長線突破の考え方であり,重要なポイントは,2年新高の重要な価格を利用して判断し,13日指数移動平均をフィルタリングおよび入場基準として使用することです.この戦略には一定の優位性がありますが,さらに探索に値する最適化可能な空間もあります.

ストラテジーソースコード
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
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/
// © Part Timer

//This script accepts from and to date parameter for backtesting. 
//This script generates white arrow for each buying signal

//@version=4
strategy("AMRS_LongOnly_PartTimer", overlay = true)

//i_endTime = input(defval = timestamp("02 Jun 2021 15:30 +0000"), title = "End Time", type=input.time)

StartYear=input(defval = 2000, title ="Start Year", type=input.integer)
StartMonth=input(defval = 01, title ="Start Month", type=input.integer)
StartDate=input(defval = 01, title ="Start Date", type=input.integer)

endYear=input(defval = 2021, title ="End Year", type=input.integer)
endMonth=input(defval = 06, title ="End Month", type=input.integer)
endDate=input(defval = 03, title ="End Date", type=input.integer)

ema11=ema(close,11)
ema13=ema(close,13)
ema21=ema(close,21)

afterStartDate = true
//g=bar_index==1
//ath()=>
    //a=0.0
    //a:=g ? high : high>a[1] ? high:a[1]
    
//a = security(syminfo.tickerid, 'M', ath(),lookahead=barmerge.lookahead_on)

newHigh = (high > highest(high,504)[1])
//plot down arrows whenever it's a new high
plotshape(newHigh, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.tiny)
b=highest(high,504)[1]
VarChk=((b-ema13)/b)*100
TrigLow = (low <= ema13) and (low >= ema21) and (VarChk <= 10)
plotshape(TrigLow, style=shape.triangleup, location=location.belowbar, color=color.white, size=size.tiny)
ExitPrice=(ema21 - (ema21*0.05))
DrawPrice=(b - (b*0.20))
stopprice=0.0
if (close <= ExitPrice)
    stopprice := ExitPrice
if (close <= DrawPrice)
    stopprice := DrawPrice

if (TrigLow and afterStartDate)
    strategy.entry("Long", strategy.long)

strategy.exit("exit","Long", stop=stopprice)
//beforeEndDate = (time < i_endTime)
beforeEndDate = (time >= timestamp(syminfo.timezone,endYear, endMonth, endDate, 0, 0))
if (beforeEndDate)
    strategy.close_all()