
この策略は,特定の時間帯における指標の価格変動のパーセントを検出し,設定された値を超えると取引シグナルを生成することを目的としています.この策略は,ショートラインとデフォルト取引に適用され,突発的な市場状況の変化による取引機会を捉えることができます.
入力パラメータxは,検査されたK線周期の数を表し,デフォルトでは5は5分間のK線を表します.
現在のK線閉店価格とx周期前の閉店価格の変化パーセントを計算し,trueChange1とtrueChange2として保存する.
入力パラメータ percentChangePosと percentChangeNegは,0.4%と-0.4%をデフォルトで設定した変化パーセントの値を表します.
trueChange1がpercentChangePosより大きいときは,買い信号を生じ,trueChange2がpercentChangeNegより小さいときは,売り信号を生じます.
buyとsellの状態に文字と背景マークを塗る
信号設定による入場・出場条件
警報と地図を配置する
絶対値ではなく,パーセントの変化を用いて,パラメータを異なる基準に合わせて自動的に調整できます.
ブリン帯の両側での突破を識別するために,プラスとマイナスの変化のパーセントの値を柔軟に設定できます.
検出周期のパラメータを調整して,異なる時間帯における傾向の変化を識別できます.
重要な信号を逃さないように警告を設定できます.
シンプルで直接的な買賣シグナルロジックで,使いやすい.
短期的な逆転の機会を捕捉できる
パーセンテージの変化はトレンドの方向を判断できず,誤った信号を生じさせる可能性があります.
デフォルトのパラメータは,すべての規格に適合しない場合があり,対象に合わせて調整する必要があります.
損失を抑える手段がなく,単一損失をコントロールできない.
信号は頻繁で,取引コストは高い可能性があります.
市場構造を判断できないため,不安定な市場では騙されやすい.
解決策は
トレンド・ラインナリー・リグレーションなどの指標を組み合わせて大傾向を判断する.
異なる標識の特性に合わせて最適化パラメータの設定.
適切な停止条件を設定する.
フィルタリング信号は,頻繁に取引を避けます.
市場構造をより高い時間周期で判断し,波動的な市場での盲目取引を避ける.
単一損失を制御するために,トラッキングストップ,移動ストップなどのストップメカニズムを追加します.
フィルタリング条件の追加,例えば,エネルギー指数,移動平均線など,被套を避ける.
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)