Kラインエンティティに基づくロングおよびショート戦略


作成日: 2023-11-16 17:14:48 最終変更日: 2023-11-16 17:14:48
コピー: 0 クリック数: 649
1
フォロー
1617
フォロワー

Kラインエンティティに基づくロングおよびショート戦略

概要

この策は,K線の実体長を基に多空方向を判断する.これは,最近30本のK線の平均実体長を計算し,陽線実体長が平均実体長より大きいときは多行し,陰線実体長が平均実体長より大きいときは空行する.

戦略原則

この戦略は,まず K 線の実体長 body を計算し,最近 30 つの K 線実体長 sbody の平均値を計算する.

今日のK線が陰線 ((bar==-1) であり,実体長が平均実体長より大きいとき,多項を打開する ((up1) 〜.

今日のK線が陽線 ((bar==1) であり,実体長が平均実体長より大きいとき,空欄 ((dn1)) を開きます.

多項開設後,今日のK線が陽線 ((bar==1) であり,現在のポジションが利潤状態である場合,平仓多項。

空券を開けた後,今日のK線が陰線 ((bar==-1) であり,現在のポジションが利潤状態である場合,平仓空券である.

この策略は,K線実体長さを簡単に効率的に利用して市場トレンドを判断する.実体長さがトレンドの強さを示すので,実体長さを多空の判断の根拠として使用する.

優位分析

この戦略の利点は以下の通りです.

  1. 戦略はシンプルでわかりやすく,実行可能だ.

  2. K線実体長を利用してトレンドを判断し,騒音による干渉を避ける.

  3. 動的平均の計算により,市場の変化に適応できます.

  4. 利回りの平準化条件を設定することで,戦略の収益率を向上させることができる.

  5. 設定可能な戦略パラメータが,異なる市場環境に適用されます.

リスク分析

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

  1. 長い実体は必ずしも強いトレンドを表すのではなく,正常な波動である可能性があります.

  2. 平均実体長さのタイムウィンドウを正しく設定しないことは,取引機会を逃す可能性があります.

  3. 突発的な出来事は戦略的損失を招く可能性があります.

  4. 長期にわたって空白のポジションを保有すると,損失が拡大する可能性があります.

リスクに対する対処法:

  1. 取引を誤ってしないように,他の指標と組み合わせてトレンドを判断してください.

  2. 異なるパラメータをテストし,平均実体長を最適化する計算.

  3. 単発損失を制御するストップ・ストップ条件を設定します.

  4. ポジション開設とポジションのロジックを最適化して,ポジションの長期間保持を避ける.

最適化の方向

この戦略は以下の点で最適化できます.

  1. MACD,RSIなどの指標と組み合わせてトレンドを判断し,通常の波動による誤信号を避ける.

  2. 異なる平均実体長時間ウィンドウのパラメータをテストし,最適なパラメータの組み合わせを探します.

  3. ポジション開設量制御ロジックを追加し,損失回数が増加するにつれて,ポジション開設量を徐々に減らす.

  4. 移動ストップまたは利回りストップの退出条件を設定し,単発損失率を制御する.

  5. ポジション開設とポジション条件を最適化して,無効取引を避ける.例えば,連続3つのK線エンティティが長ければ,またポジション開設する.

  6. 特定の期間または重要なデータの発表前後に取引を避け,為替相場ショックによる損失を制御する.

要約する

この戦略の全体的な構想は明快で分かりやすく,K線実体とその平均長さを比較して入場のタイミングを判断する.戦略の最適化スペースは大きい.戦略のパラメータを異なる市場環境により適合させるために,多方面から最適化調整を行うことができる.全体的に,この戦略は,量的な取引入場戦略として,使用と学習の新手トレーダーに適した,シンプルで信頼できる.継続的に最適化し,より多くの指標を組み合わせることで,戦略の収益率と安定性をさらに向上させることができる.

ストラテジーソースコード
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's ColorBar Strategy v1.0", shorttitle = "ColorBar str v1.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")
usebody = input(true, defval = true, title = "Use body")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, 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")

//Signals
bar = close > open ? 1 : close < open ? - 1 : 0
body = abs(close - open)
sbody = ema(body, 30)

up1 = bar == -1 and (body > sbody or usebody == false)
dn1 = bar == 1 and (body > sbody or usebody == false)

plus = (close > strategy.position_avg_price and strategy.position_size > 0) or (close < strategy.position_avg_price and strategy.position_size < 0)
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and plus

if up1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))

if dn1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
    
if time > timestamp(toyear, tomonth, 31, 00, 00) or exit
    strategy.close_all()