Chiến lược cao-thấp


Ngày tạo: 2023-09-14 17:53:17 sửa đổi lần cuối: 2023-09-14 17:53:17
sao chép: 0 Số nhấp chuột: 612
1
tập trung vào
1617
Người theo dõi

Nguyên tắc chiến lược

Chiến lược này giao dịch dựa trên hình dạng của đường K xuất hiện cùng một mức cao thấp. Khi hình dạng hai đáy hoặc hai đỉnh của đường K xuất hiện trong một tuần, nó được sử dụng như một điều kiện kích hoạt tín hiệu giao dịch.

Các giao dịch được thực hiện theo các logic sau:

  1. Xác định giá cao nhất của dòng K hiện tại hoặc dòng K trước bằng giá cao nhất của hai dòng K trước

  2. Xác định giá thấp nhất của dòng K hiện tại hoặc dòng K trước là bằng hai dòng K trước giá thấp nhất

  3. Khi hình thức hai đáy xuất hiện, làm nhiều hơn khi giá phá vỡ điểm thấp

  4. Khi hình dạng hai đỉnh xuất hiện, khi giá phá vỡ điểm cao thì trống rỗng

  5. Điểm dừng là gần điểm phá vỡ, điểm dừng là ATR nhân với hệ số

Chiến lược này cố gắng nắm bắt cơ hội hoạt động của xu hướng sau khi giá phá vỡ mức thấp cao cùng cấp. Kiểm soát rủi ro bằng chiến lược dừng lỗ.

Lợi thế chiến lược

  • Dấu hiệu đột phá rõ ràng

  • ATR Stop Stop có thể theo dõi xu hướng

  • Quy tắc đơn giản, rõ ràng, rủi ro có thể kiểm soát được

Rủi ro chiến lược

  • Sự hình thành cao thấp đồng cấp ít phổ biến

  • Điểm dừng quá gần, có nguy cơ bị dừng

  • Cần chú ý đến thiết lập tham số ATR

Tóm tắt

Chiến lược này được sử dụng để giao dịch xu hướng bằng cách nắm bắt các cơ hội phá vỡ cùng cấp. Tuy nhiên, cần chú ý đến việc thiết lập chiến lược dừng lỗ và tần suất giao dịch.

Mã nguồn chiến lược
/*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)