勢いを逆転させる戦略

作者: リン・ハーンチャオチャン開催日:2023年11月13日 10:02:25
タグ:

img

概要

この戦略は,一定の期間中の株式価格の百分比変化を検出し,上限値を超えると取引信号を生成することを目的としています.短期およびスカルピング取引に適しています. 急激な市場の動きからの機会を把握します.

戦略の論理

  1. 入力パラメータ x は,チェックするキャンドルスタイク周期の数を表し,5分キャンドルには 5 がデフォルトです.

  2. 計算する現在の閉店価格の%変化を, trueChange1と trueChange2として保存した x 期間の前の閉店価格と比較して計算する.

  3. 入力パラメータ percentChangePos と percentChangeNeg は,デフォルト値が0.4%と -0.4%で,値の百分比変化を表します.

  4. trueChange1が%ChangePosより大きいとき,購入信号が生成されます. trueChange2が%ChangeNegより小さいとき,販売信号が生成されます.

  5. 購入・販売状態のテキストと背景色を追加します.

  6. 信号に基づいて入出規則を設定します.

  7. 警告と図を設定する

利点

  1. 絶対価格変動ではなく 百分比変動を使用し 異なる株に適応できます

  2. ボリンジャー・バンドのブレイクを特定するために,ポジティブとネガティブなパーセントの値を柔軟に設定します.

  3. 調整可能な検出期間により,異なる時間枠における傾向の変化を特定できます.

  4. 重要な信号を捉えるための設定可能なアラート

  5. シンプルで直感的な信号論理 分かりやすく使いやすい

  6. 短期的な逆転を 市場開いている時に捉える

リスク

  1. 割合の変化はトレンド方向を決定せず,誤った信号を生む可能性があります.

  2. デフォルトパラメータはすべてのストックに合わないかもしれない 特定の調整が必要

  3. ストップ・ロスはなく 損失を制限できない

  4. 頻繁に信号が発信され 取引コストが高くなる

  5. 市場構造を特定できない 市場変動に易しい

解決策:

  1. 線形回帰のような傾向指標と組み合わせて 全体的な傾向を決定します

  2. ストックの特徴に基づいてパラメータを最適化します

  3. 適切なストップ・ロスを実行する

  4. 過剰な取引を避けるためにシグナルをフィルターする.

  5. 取引の失敗を避けるため,より長い時間枠から市場構造を測定します.

改良

  1. ストップ・ロスのメカニズムを追加します.

  2. フィルター条件を追加します 音量や移動平均を

  3. MACDのような指標で 入口と出口のルールを最適化します

  4. マシン学習を使って パーマータを自動最適化します

  5. 市場構造の分析を組み込むことで 混乱を回避できます

  6. 動的に設定されたパラメータは,変動性と流動性に基づいています.

  7. より高い時間枠分析と組み合わせて 全体的な傾向を決定します

概要

この戦略は,前もって設定された値に百分比値変動を比較することによって取引を生成し,短期間の平均逆転戦略となっています.利点は,そのシンプルさ,柔軟性,突然の市場動きを把握する能力にあります.欠点は,最適化やトレンド分析とリスク管理の適切な使用を通じて対処できるリスクです.全体的に,それは健全な論理を持ち,適切に強化された場合,効果的な短期間の取引戦略になり得ます.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// created by Oliver
strategy("Percentage Change strategy w/BG color", overlay=true, scale=scale.none, precision=2)

x = input(5, title = 'x candles difference', minval = 1)
trueChange1 = (close - close[x]) / close[x] * 100
percentChangePos = input(0.4, title="Percent Change")

//if (percentChange > trueChange) then Signal  

plotChar1 = if percentChangePos > trueChange1
    false
else
    true

plotchar(series=plotChar1, char='🥶', color=color.green, location=location.top, size = size.tiny )

trueChange2 = (close - close[x]) / close[x] * 100
percentChangeNeg = input(-0.4, title="Percent Change")

plotChar2 = if percentChangeNeg < trueChange2
    false
else
    true
plotchar(series=plotChar2, char='🥵', color=color.red, location=location.top, size = size.tiny)

//------------------------------------------------------------------------
UpColor() => percentChangePos < trueChange1
DownColor() => percentChangeNeg > trueChange2

//Up = percentChangePos < trueChange1
//Down = percentChangeNeg > trueChange2


col = percentChangePos < trueChange1 ? color.lime : percentChangeNeg > trueChange2 ? color.red : color.white
//--------
condColor = percentChangePos < trueChange1 ? color.new(color.lime,50) : percentChangeNeg > trueChange2 ? color.new(color.red,50) : na
//c_lineColor = condUp ? color.new(color.green, 97) : condDn ? color.new(color.maroon, 97) : na
//barcolor(Up ? color.blue : Down ? color.yellow : color.gray, transp=70)

//Background Highlights
//bgcolor(condColor, transp=70)


//---------

barcolor(UpColor() ? color.lime: DownColor() ? color.red : na)
bgcolor(UpColor() ? color.lime: DownColor() ? color.red : na)

//------------------------------------------------------------------------

buy = percentChangePos < trueChange1
sell = percentChangeNeg > trueChange2


//------------------------------------------------------------------------
/////////////// Alerts /////////////// 
alertcondition(buy, title='buy', message='Buy')
alertcondition(sell, title='sell', message='Sell')

//-------------------------------------------------

if (buy)
    strategy.entry("My Long Entry Id", strategy.long)

if (sell)
    strategy.entry("My Short Entry Id", strategy.short)


/////////////////// Plotting //////////////////////// 
plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)


もっと