この戦略は,一定の期間中の株式価格の百分比変化を検出し,上限値を超えると取引信号を生成することを目的としています.短期およびスカルピング取引に適しています. 急激な市場の動きからの機会を把握します.
入力パラメータ x は,チェックするキャンドルスタイク周期の数を表し,5分キャンドルには 5 がデフォルトです.
計算する現在の閉店価格の%変化を, trueChange1と trueChange2として保存した x 期間の前の閉店価格と比較して計算する.
入力パラメータ percentChangePos と percentChangeNeg は,デフォルト値が0.4%と -0.4%で,
trueChange1が%ChangePosより大きいとき,購入信号が生成されます. trueChange2が%ChangeNegより小さいとき,販売信号が生成されます.
購入・販売状態のテキストと背景色を追加します.
信号に基づいて入出規則を設定します.
警告と図を設定する
絶対価格変動ではなく 百分比変動を使用し 異なる株に適応できます
ボリンジャー・バンドのブレイクを特定するために,ポジティブとネガティブなパーセントの
調整可能な検出期間により,異なる時間枠における傾向の変化を特定できます.
重要な信号を捉えるための設定可能なアラート
シンプルで直感的な信号論理 分かりやすく使いやすい
短期的な逆転を 市場開いている時に捉える
割合の変化はトレンド方向を決定せず,誤った信号を生む可能性があります.
デフォルトパラメータはすべてのストックに合わないかもしれない 特定の調整が必要
ストップ・ロスはなく 損失を制限できない
頻繁に信号が発信され 取引コストが高くなる
市場構造を特定できない 市場変動に易しい
解決策:
線形回帰のような傾向指標と組み合わせて 全体的な傾向を決定します
ストックの特徴に基づいてパラメータを最適化します
適切なストップ・ロスを実行する
過剰な取引を避けるためにシグナルをフィルターする.
取引の失敗を避けるため,より長い時間枠から市場構造を測定します.
ストップ・ロスのメカニズムを追加します.
フィルター条件を追加します 音量や移動平均を
MACDのような指標で 入口と出口のルールを最適化します
マシン学習を使って パーマータを自動最適化します
市場構造の分析を組み込むことで 混乱を回避できます
動的に設定されたパラメータは,変動性と流動性に基づいています.
より高い時間枠分析と組み合わせて 全体的な傾向を決定します
この戦略は,前もって設定された
/*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)