双色のK線追跡戦略

作者: リン・ハーンチャオチャン,日付: 2023年10月11日 14:53:41
タグ:

概要

この戦略は,市場動向を決定し,それに応じてロングとショートポジションを確立するために,K線色の変化を観察する.戦略の原則は,短期的動向を把握することを目的として,単純で直接的です.

原則

この戦略は,閉店価格と開店価格の関係に基づいて,Kラインの色を判断する.開店価格よりも大きい閉店価格は赤いKラインであり,その逆は緑のKラインである.

同じ色 (調節可能) の連続したK線が指定されている場合,それに応じて行動します.

  • 赤い場合は,長い行きます.

  • 緑色ならショート

K線が色を変えたら 位置をすべて閉じろ

利点

  • この原則は 明確でシンプルで 分かりやすく 実行できます

  • 比較的短期的な傾向を追跡し,頻繁に取引することができます.

  • 戦略の敏感性を調整するためにKラインの数をカスタマイズできます.

  • 取引頻度を減らすためだけ ロングやショートに行くことができます

  • 取引の時間枠は,特定の期間を回避するために設定することができます.

リスク

  • トレンド方向を判定できず 鞭打ちされる危険です

  • 最適な入国タイミングや 早期入国リスクや 逃れた機会を 特定できない.

  • 色の変化による逆転のリスクは,必ずしも実際のトレンド変化を表しているわけではありません.

  • 短期的な追求は 過剰な取引や報酬の圧力につながります

  • 不適切なパラメータ設定は戦略の不良なパフォーマンスにつながる可能性があります.

最適化

  • トレンド判断指標を追加して逆入力を避けるようにする.MACD,KDなど.

  • 損失リスクを減らすために ストップロスを設定します

  • 退路基準を適度に緩和して過度の退路を避ける.

  • 他の要因を組み合わせて 進出タイミングを最適化します 例えば 増量,前回の高値を突破します

  • 市場オーダーを利用して スリップ効果を減らす

結論

この戦略は,最も単純なK線技術分析から始まり,K線色を判断することによって基本的なトレンド追跡を達成する.利点はシンプルさ,高い取引頻度,柔軟なパラメータ調整である.しかし,トレンドの品質を決定することができないため,いくつかの盲点もある.それをシンプルにしてトレンド判断指標を追加することで改善することができ,それによって戦略のパフォーマンスを向上させる.


/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//2018
//Noro

//@version=2
strategy("Noro's Candles Strategy v1.0", shorttitle = "Candles str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
bq = input(2, defval = 2, minval = 2, maxval = 6, title = "Bars Q")

fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day")

//Bars Q
bar = close > open ? 1 : close < open ? -1 : 0
gb = bar == 1
rb = bar == -1
redbars = bq == 2 and rb and rb[1] ? 1 : bq == 3 and rb and rb[1] and rb[2] ? 1 : bq == 4 and rb and rb[1] and rb[2] and rb[3] ? 1 : bq == 5 and rb[1] and rb[2] and rb[3] and rb[4] ? 1 : bq == 6 and rb[1] and rb[2] and rb[3] and rb[4] and rb[5] ? 1 : 0
greenbars = bq == 2 and gb and gb[1] ? 1 : bq == 3 and gb and gb[1] and gb[2] ? 1 : bq == 4 and gb and gb[1] and gb[2] and gb[3] ? 1 : bq == 5 and gb[1] and gb[2] and gb[3] and gb[4] ? 1 : bq == 6 and gb[1] and gb[2] and gb[3] and gb[4] and gb[5] ? 1 : 0

//Signals
up1 = redbars == 1
dn1 = greenbars == 1
exit = bar != bar[1]

if up1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()

もっと