Strategi tinggi-rendah


Tarikh penciptaan: 2023-09-14 17:53:17 Akhirnya diubah suai: 2023-09-14 17:53:17
Salin: 0 Bilangan klik: 612
1
fokus pada
1617
Pengikut

Prinsip Strategi

Strategi ini berdagang berdasarkan bentuk garis K yang muncul dengan titik tinggi dan rendah yang sama. Apabila terdapat dua bahagian bawah atau dua bahagian atas garis K selama seminggu, ia berfungsi sebagai pemicu isyarat perdagangan.

Logik urus niaga adalah seperti berikut:

  1. Menentukan harga tertinggi pada baris K semasa atau baris K terdahulu sama dengan dua baris K terdahulu yang mempunyai harga tertinggi

  2. Menentukan bahawa harga minimum pada baris K semasa atau baris K terdahulu adalah sama dengan dua baris K terdahulu dengan harga minimum

  3. Apabila dua bentuk bawah muncul, lebih banyak dilakukan apabila harga mencapai titik terendah

  4. Apabila bentuk dua puncak muncul, apabila harga melampaui paras tertinggi, ia akan kosong.

  5. Titik henti ditetapkan sebagai berhampiran dengan titik penembusan, dan titik henti adalah nilai ATR kali faktor

Strategi ini cuba untuk merebut peluang untuk menjalankan trend apabila harga menembusi paras paras paras yang sama.

Kelebihan Strategik

  • Sinyal penembusan jelas

  • ATR Stop Stop boleh mengesan trend secara dinamik

  • Peraturan mudah, jelas, risiko yang boleh dikawal

Risiko Strategik

  • Pembentukan rendah dan tinggi yang sama jarang berlaku

  • Titik henti terlalu dekat dan ada risiko terhalang

  • Setingkan parameter ATR

ringkaskan

Strategi ini melakukan perdagangan trend dengan menangkap peluang untuk menembusi kedudukan yang sama atau lebih rendah. Namun, anda perlu memberi perhatian kepada tetapan strategi stop loss dan frekuensi perdagangan.

Kod sumber strategi
/*backtest
start: 2023-09-06 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
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/
// © cherepanovvsb

//@version=5
strategy("SHL", overlay=true, margin_long=100, margin_short=100,initial_capital=100,default_qty_type = strategy.cash,default_qty_value =40,commission_type = strategy.commission.percent,commission_value =0.04,currency="EUR", process_orders_on_close=true)
atr = input.int(title="ATR length for abnormal candles", defval=5)
plotshape(low == low[1], style=shape.triangleup, location=location.belowbar, color=color.blue, title="1 Setup")
plotshape(high==high[1], style=shape.triangledown, location=location.abovebar, color=color.blue, title="1 Setup")
plotshape(low == low[1] and low[1]==low[2], style=shape.triangleup, location=location.belowbar, color=color.red, title="Triple Setup")
plotshape(low==high[1] or low==high[2] or low==high[3] or low==high[4] or low==high[5] or low==high[6], style=shape.triangleup, location=location.belowbar, color=color.green, title="Mirror Setup")
plotshape(high==low[1] or high==low[2] or high==low[3] or high==low[4] or high==low[5] or high==low[6], style=shape.triangledown, location=location.abovebar, color=color.green, title="Mirror Setup")
barcolor(high-low>2*ta.atr(atr)? color.yellow:na)


ATRlenght   = input.int(title="ATR length for take profit", defval=14, group="Strategy Settings")
rewardMultiplier= input.int(title="ATR multiplier", defval=5, group="Strategy Settings")

// Get ATR
atr1 = ta.atr(ATRlenght)

validlow =  low[1] == low[2] and not na(atr1)
validhigh = high[1]==high[2] and not na(atr1)

validlong = validlow and strategy.position_size == 0 and low[1]<low 
validshort = validhigh and strategy.position_size == 0 and high[1]>high

// Calculate Entrance, SL/TP
longStopPrice = low[1]-syminfo.mintick
longStopDistance = close - longStopPrice
longTargetPrice = close + (longStopDistance * rewardMultiplier)
shortStopPrice = high[1]+syminfo.mintick
shortStopDistance = shortStopPrice - close
shortTargetPrice = close - (shortStopDistance * rewardMultiplier)
var tradeStopPrice = 0.0
var tradeTargetPrice = 0.0
if validlong 
    tradeStopPrice := longStopPrice
    tradeTargetPrice := longTargetPrice
if validshort 
    tradeStopPrice := shortStopPrice
    tradeTargetPrice := shortTargetPrice
strategy.entry ("Long", strategy.long,1, when=validlong)
strategy.entry ("Short", strategy.short,1, when=validshort)

strategy.exit(id="Long Exit", from_entry="Long", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size > 0)
strategy.exit(id="Short Exit", from_entry="Short", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size < 0)

plot(strategy.position_size != 0 or validlong or validshort ? tradeStopPrice : na, title="Trade Stop Price", color=color.red, style=plot.style_linebr, transp=0)
plot(strategy.position_size != 0 or validlong or validshort ? tradeTargetPrice : na, title="Trade Target Price", color=color.green, style=plot.style_linebr, transp=0)