日中のピボットポイント取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-07 16:43:17
タグ:

img

概要

これは,インド市場のためのイントラデイ取引戦略で,前取引日のオープン,ハイ,ロー,クローズ価格から計算された主要なサポートおよびレジスタンスレベルに焦点を当てています.価格がこれらのキーレベルを突破すると取引が行われます.

戦略の論理

  1. 前日の高値,低値,閉値を計算する
  2. 公式を用いてキーサポートレベルS1,レジスタンスレベルR1とピホットポイントPPを計算する.
  3. 価格がこれらのレベルを突破したとき,長または短取引を行う.
  4. ストップ損失出口を使用する

キーポイントの公式:

PP = (High + Low + Close) /3
R1 = 2*PP - Low
S1 = 2*PP - High 

利点分析

  1. 主要なポイントは,より大きな利益の可能性をもたらす可能性の高い脱出機会を提供します.
  2. 重要なポイントを簡単に特定し,明確な取引規則
  3. ストップ・ロストを設定しやすく,リスクを効果的に制御する

リスク分析

  1. 損失を引き起こす重要なポイントでの誤った破綻の可能性
  2. 重要なポイントの有効性は検証が必要で,必ずしもうまくいかないかもしれません.
  3. 不適切なストップ・ロスは損失を増やす可能性があります

リスク軽減

  1. 偽ブレイクをフィルタリングするために他の指標と組み合わせる
  2. 戦略の検証のための長い時間枠でのバックテスト
  3. ストップ・ロスの配置を最適化

改善 の 機会

  1. 誤った信号をフィルタリングするために他の技術指標を組み合わせる
  2. 異なる製品のパラメータ調整
  3. ストップ損失のダイナミックな調整

結論

この戦略は,過去データで簡単に検証できるシンプルで直接的な戦略です.イントラデイ戦略として,重要なレベルで高い確率のブレイクアウト機会を提供し,良いパフォーマンスを生み出します.しかし,さらに最適化が必要なピボットポイントに依存するいくつかの偽ブレイクアウトリスクがあります.要するに,これは実行しやすい,制御可能なリスクイントラデイ取引戦略です.


/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © arameshraju
//Reference credit goes to All


//@version=4
strategy("ARR-Pivote-India-Stategy",shorttitle="ARR-PP-Ind", overlay=true)

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © arameshraju
//User Input
showPrevDayHighLow = input(false, title="Show previous day's High & Low(PDH/PDL)", type=input.bool)
showPivoteLine = input(true, title="Show Pivot Point(PP)", type=input.bool)
showPivoteR1Line = input(false, title="Show Pivot Point Resistance (R1)", type=input.bool)
showPivoteS1Line = input(false, title="Show Pivot Point Support (S1)", type=input.bool)
tradeLong = input(true, title="Trade on Long Entry", type=input.bool)
tradeShort = input(false, title="Trade on Short Entry", type=input.bool)
maxLoss = input(0.5, title="Max Loss on one Trade", type=input.float)
tradeOn=input(title="Trade base Level", type=input.string,
     options=["PP", "PDH", "PDL","R1","S1"], defval="PP")

sessSpec = input("0915-1530", title="Session time", type=input.session)

// Defaults
// Colors
cColor = color.black
rColor = color.red
sColor = color.green

// Line style & Transparency
lStyle = plot.style_line
lTransp = 35

// Get High & Low
getSeries(_e, _timeFrame) => security(syminfo.tickerid, _timeFrame, _e, lookahead=barmerge.lookahead_on) 

is_newbar(res, sess) =>
    t = time(res, sess)
    na(t[1]) and not na(t) or t[1] < t

newbar = is_newbar("375", sessSpec)
// Today's Session Start timestamp
y = year(timenow)
m = month(timenow)
d = dayofmonth(timenow)

// Start & End time for Today
start = timestamp(y, m, d, 09, 15)
end = start + 86400000


PrevDayHigh = getSeries(high[1], 'D')
PrevDayLow = getSeries(low[1], 'D')
PrevDayClose = getSeries(close[1], 'D')

PivoteLine=(PrevDayHigh+PrevDayLow+PrevDayClose) /3
PivoteR1=(PivoteLine*2) -PrevDayLow

PivoteS1=(PivoteLine*2) -PrevDayHigh

orbPrevDayOpen = getSeries(open[1], 'D')
orbPrevDayClose = getSeries(close[1], 'D')

// //Preview Day High line
// _pdh = line.new(start, PrevDayHigh, end, PrevDayHigh, xloc.bar_time, color=color.red, style=line.style_solid, width=2)
// line.delete(_pdh[1])
// _pdl = line.new(start, PrevDayLow, end, PrevDayLow, xloc.bar_time, color=color.green, style=line.style_solid, width=2)
// line.delete(_pdl[1])
// _Pp = line.new(start, PrevDayLow, end, PrevDayLow, xloc.bar_time, color=color.green, style=line.style_dashed, width=2)
// line.delete(_Pp[1])


// //Previous Day Low Line
// l_pdh = label.new(start, PrevDayHigh, text="PD", xloc=xloc.bar_time, textcolor=rColor, style=label.style_none)
// label.delete(l_pdh[1])
// l_pdl = label.new(start, PrevDayLow, text="PD", xloc=xloc.bar_time, textcolor=sColor, style=label.style_none)
// label.delete(l_pdl[1])

// //Pivote Line

// l_pp = label.new(start, PivoteLine, text="PP", xloc=xloc.bar_time, textcolor=color.black, style=label.style_none)
// label.delete(l_pp[1])
// l_R1 = label.new(start, PivoteR1, text="R1", xloc=xloc.bar_time, textcolor=color.fuchsia, style=label.style_none)
// label.delete(l_pp[1])
// l_SR = label.new(start, PivoteS1, text="S2", xloc=xloc.bar_time, textcolor=color.navy, style=label.style_none)
// label.delete(l_pp[1])


plot(showPrevDayHighLow?PrevDayHigh:na , title=' PDH', color=rColor)
plot(showPrevDayHighLow?PrevDayLow:na, title=' PDL', color=sColor)
plot(showPivoteLine?PivoteLine:na, title=' PP', color=color.black)
plot(showPivoteR1Line?PivoteR1:na, title=' R1', color=color.fuchsia)
plot(showPivoteS1Line?PivoteS1:na, title=' S1', color=color.navy)

// Today's Session Start timestamp
// Start & End time for Today
//endTime = timestamp(t, m, d, 15, 00)

tradeEventPrice= if string("PDH")==tradeOn 
    PrevDayHigh
else if string("PDL")==tradeOn
    PrevDayLow
else if string("R1")==tradeOn
    PivoteR1
else if string("S1")==tradeOn
    PivoteS1
else
    PivoteLine


//tradeEventPrice=PrevDayHigh

if (open < tradeEventPrice) and ( close >tradeEventPrice ) and ( hour < 13 ) and tradeLong
	strategy.entry("buy", strategy.long, 1, when=strategy.position_size <= 0)

if (open > tradeEventPrice) and ( close <tradeEventPrice ) and ( hour < 13 ) and  tradeShort
	strategy.entry("Sell", strategy.short, 1, when=strategy.position_size <= 0)

mxloss=orbPrevDayClose*maxLoss

strategy.exit("exit", "buy",  loss = mxloss) 
strategy.exit("exit", "Sell",  loss = mxloss) 


strategy.close_all(when =   hour == 15   , comment = "close all entries")



もっと