毎日のピボットに基づくロングとショートの自動取引戦略


作成日: 2024-01-23 14:24:22 最終変更日: 2024-01-23 14:24:22
コピー: 3 クリック数: 709
1
フォロー
1617
フォロワー

毎日のピボットに基づくロングとショートの自動取引戦略

概要

この戦略は,日線の最高価格と最低価格の2つの線を描画したもので,多空判断の基礎である.価格が最高価格線を突破するとき,多空する.価格が最低価格線を突破するとき,多空する.自動で多空切り替えることができる.

戦略原則

この戦略は,主に日線の枢軸点を利用して多空を判断する.いわゆる枢軸は,昨日の最高価格と最低価格である.この2つの線は,取引区間を形成し,今日の価格が,この2つの点のいずれかを突破した場合,トレンドの転換が起こったことを判断することができる.

具体的には,この戦略の主な論理は以下の通りです.

  1. 最高価格ライン:昨日の最高価格の水平線を描画し,今日の閉盘価格がこの線を破れば多頭信号
  2. 最低価格線:昨日の最低価格水平線を描画し,今日の閉盘価格がこの線を破れば空頭信号
  3. 多頭入場: 閉店価格が最高値線を突破したときに多頭ポジションを開く
  4. 空頭入場:閉盘価格の下の最低値線を突破したときに空頭
  5. ストップ:多頭ストップは最低価格ラインの近く,空頭ストップは最高価格ラインの近く

自動の多空切替を実現するために,最高値と最低値の突破によってトレンドを捉えることができます.

優位分析

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

  1. 戦略は明確で,理解し,実行しやすい
  2. 日経による取引で,長い時間周期で,短線の騒音による干渉は容易ではない.
  3. 自動で多空を切り替えて,トレンド以外の市場を最大限に回避する.
  4. リスク管理に役立つ 明確な止損ポイント

リスク分析

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

  1. 日線取引の周期が長いため,損失を一時停止することができない.
  2. 突破した偽の突破は不必要な損失をもたらす可能性がある
  3. 長期にわたって保有すると,損失が拡大する可能性があります.

このリスクに対して,以下のような方法で最適化することができます.

  1. 日線突破の同時,他のより高周波の指標の追加が確認されました.
  2. パラメータを最適化して,偽パラメータをフィルターします.
  3. 移動式止損またはトレーラーなどのタイムリーな止損

最適化の方向

この戦略はさらに改善できる余地があります.

  1. 戦略の安定性を検証するために,より多くの品種とより長いデータで再テストできます.
  2. 経路やブリン帯などの他の突破口の活用を 探求できます
  3. 取引量指数と組み合わせることで,無数の突破を回避できます.
  4. フィルタリング条件をさらに追加して 偽侵入の可能性を減らすことができます.
  5. このパラメータを最適化するために,機械学習などの方法を試すことができます.

要約する

全体として,この戦略は,シンプルな日線枢軸思想に基づいて,多空自動切替を実現している.戦略の論理は明確で分かりやすい.最適化によって,安定性をさらに向上させることができる.投資家は,自分のリスク好みに応じて,適切なパラメータを選択して,實盤取引に適用することができる.

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

//Noro
//2019

//@version=3
strategy(title = "Noro's DEX Strategy", shorttitle = "DEX str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
showlines = input(true, title = "Show lines")
showbg = input(false, title = "Show background")
showday = input(false, title = "Show new day")
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")

//New day trand
bar = close > open ? 1 : close < open ? -1 : 0
newday = request.security(syminfo.tickerid, 'D', time)

//Lines
uplevel = request.security(syminfo.tickerid, 'D', high)
dnlevel = request.security(syminfo.tickerid, 'D', low)
upcolor = uplevel == uplevel[1] and showlines ? lime : na
dncolor = dnlevel == dnlevel[1] and showlines? red : na
plot(uplevel, offset = 1, linewidth = 2, color = upcolor)
plot(dnlevel, offset = 1, linewidth = 2, color = dncolor)

//Background
size = strategy.position_size
col = time == newday + 86400000 and showday ? blue : showbg and size > 0 ? lime : showbg and size < 0 ? red : na
bgcolor(col)

//Orders
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
truetime = true
if uplevel > 0 and dnlevel > 0
    strategy.entry("Long", strategy.long, needlong ? lot : 0, stop = uplevel, when = truetime)
    strategy.entry("Close", strategy.short, needshort ? lot : 0, stop = dnlevel, when = truetime)