Chiến lược đột phá của Morningstar K-line


Ngày tạo: 2023-09-14 16:36:32 sửa đổi lần cuối: 2023-09-14 16:36:32
sao chép: 0 Số nhấp chuột: 647
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 sử dụng hình dạng K của Morning Star để theo dõi xu hướng giao dịch theo nhiều hướng. Các tín hiệu giao dịch chính đến từ điểm mà Morning Star vượt qua đường trung bình.

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

  1. Tính toán chỉ số chuyển động trung bình 60 ngày EMA60

  2. Xác định hình dạng đường K của Morning Star, bao gồm đường âm đầu tiên, đường chéo thứ hai hoặc đường cổng, đường dương thứ ba và phá vỡ hai điểm cao nhất của đường K trước

  3. Địa điểm đột phá khi tín hiệu đa đầu xuất hiện trên EMA60 trong hình dạng Morning Star

  4. Thiết lập mục tiêu lợi nhuận hoặc theo dõi dừng lỗ như một chiến lược thoát

  5. Stop loss được thiết lập ở mức thấp nhất trong 100 đường K.

  6. Có thể điều chỉnh các tham số như đường Morning Star để xác định giới hạn dung lượng

Chiến lược này tận dụng tối đa tính năng đảo chiều xu hướng của đường Morning Star để theo dõi xu hướng phù hợp. Nó có thể có hiệu quả tốt hơn trong thị trường có biến động cao.

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

  • Đường Morning Star có hiệu quả trong việc đánh giá xu hướng ngắn hạn.

  • Điểm đột phá nhập cảnh và theo dõi dừng lỗ, tiếp tục theo dõi xu hướng

  • Cài đặt cửa sổ xem lại để tránh dừng quá lớn

Rủi ro chiến lược

  • Cài đặt tham số cần được kiểm tra và tối ưu hóa

  • Hạn chế quá gần có thể dẫn đến quá thường xuyên

  • Những người làm việc ở các địa điểm khác nhau đã bỏ lỡ cơ hội.

Tóm tắt

Chiến lược này xác định các đặc điểm của đường K của Morning Star, và theo dõi hướng xu hướng phù hợp. Nó có thể được điều chỉnh theo các tham số để thích ứng với các tình huống thị trường khác nhau. Tuy nhiên, chỉ cần làm nhiều hơn và cài đặt dừng lỗ cần được đánh giá thận trọng.

Mã nguồn chiến lược
/*backtest
start: 2023-01-01 00:00:00
end: 2023-03-23 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
// © TheSocialCryptoClub
// Author: @devil_machine

//@version=5
strategy("PURE MORNING 2.0", overlay=true, pyramiding=1,
         initial_capital=10000, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=10,
         slippage=1,backtest_fill_limits_assumption=1,use_bar_magnifier= true,
         commission_type=strategy.commission.percent, commission_value=0.075
         )

//------------------------------
// Indicators
//------------------------------

rma=ta.rma(close, 60)
mfi=ta.mfi(close, 10)
rsi=ta.rsi(close, 14)
atr7= ta.atr(7)
ema60=ta.ema(close,60)

plot(ema60,"EMA 60", color.new(color.aqua,0))

//------------------------------
// Doji settings 
//------------------------------
//-----------------------------------------------MORNING DOJI STAR CODE
range1= high - low
tolerance = input.float(defval=0.09, title="MDS Tolerance",group= "DOJI SETTINGS", minval=0.01, maxval=1, step=0.01)/100

candle1 = math.abs (close[2] - open[2]) /range1[2] > .6 and close[2] < open[2]
candle2 = ((open[1] > close[1] and open[1] < close[1]*(1+tolerance)) or (open[1] < close[1] and open[1] > close[1]*(1-tolerance)) and close [1]<close[2]+range1[2])
candle3 = close > open and close > (close[2]+range1[2])

MDS = candle1 and candle2 and candle3

plotshape (MDS and close > ema60, text="MD", textcolor=color.yellow, offset=-1, location=location.abovebar, color=color.green, style=shape.triangleup)
plotshape (MDS and close < ema60, text="MD", textcolor=color.olive, offset=-1, location=location.belowbar, color=color.red, style=shape.triangledown)

//------------------------------------------------DOJI CODE

tolerance1= input.float(defval=0.05, title="DOJI Tolerance",group= "DOJI SETTINGS", minval=0.01, maxval=1, step=0.01)/100
Is_OC_Equal= (open > close and open < close*(1+tolerance1)) or (open < close and open > close*(1-tolerance1))

plotshape(Is_OC_Equal and close < ema60, text="D", textcolor=color.red, location=location.belowbar, color=color.red)
plotshape(Is_OC_Equal and close > ema60, text="D", textcolor = color.green, location=location.abovebar, color=color.green)

//------------------------------
// Filter
//------------------------------

xl_tp_percent      = input.float(9,step=0.5, title="Take Profit", group="EXIT LONG") 

sl_type_ll         = input.bool(true, "SL type Lowest Low", group="EXIT LONG")
sl_len             = input.int(100, "Stop Length", group="EXIT LONG")

max_loss_filter    = input.bool(false,"Max Loss Filter", group ="Filter")
filter_percent     = input.int(10, "Max Loss %", group="Filter")

sl_type_percent    = input.bool(false, "SL type Percent", group="EXIT LONG")
xl_sl_percent      = input.float(2,step=.5, title="Stop Loss", group="EXIT LONG") 

filter_stop= max_loss_filter == true ? close - ta.lowest (low, sl_len) < (close*filter_percent)/100 : true

if sl_type_percent == true 
    sl_type_ll := false

//------------------------------
// Entry Long
//------------------------------

el_cond = Is_OC_Equal and close > ta.ema(close, 60) and filter_stop
el_cond_02 = MDS and close > ta.ema(close, 60) and filter_stop

mess = "!buy " + syminfo.ticker // Executor command to buy automatically 

if el_cond 
    strategy.entry ("EL", strategy.long, alert_message = mess,comment = "EL cond 1")

plotshape(el_cond and strategy.position_size == 0, "el_long", shape.circle, color=color.green)

if el_cond_02       
    strategy.entry ("EL", strategy.long, alert_message = mess,comment = "EL cond 2" )

plotshape(el_cond_02 and strategy.position_size == 0, "el_long_02", shape.circle, color=color.green)

//------------------------------
//Exit Long TP - SL
//------------------------------

xl_sl_price = strategy.position_avg_price * (1-xl_sl_percent/100)
xl_tp_price = strategy.position_avg_price * (1+xl_tp_percent/100)

if sl_type_ll == true
    xl_sl_price := ta.lowest (low, sl_len) 

//------------------------------
//Trailing stop 
//------------------------------

xl_ts_percent      = input.float(1,   step=0.5, title= "Trailing theshold", group="TRAILING STOP")
xl_to_percent      = input.float(0.5, step=0.5, title= "Trailing offset",   group="TRAILING STOP")

xl_ts_tick = xl_ts_percent * close/syminfo.mintick/100
xl_to_tick = xl_to_percent * close/syminfo.mintick/100

mess_sell = "!sell " + syminfo.ticker // Executor command to sell automatically 

strategy.exit("XL+SL/TP", "EL", stop=xl_sl_price, limit=xl_tp_price, trail_points=xl_ts_tick, trail_offset=xl_to_tick,comment_loss= "STOP", comment_profit = "PROFIT",comment_trailing = "TS", alert_message = mess_sell)

//------------------------------
// Conditional close on MFI
//------------------------------

xl_cond= ta.crossover(mfi, 90)

if xl_cond
    strategy.close("XL", alert_message = mess_sell)

plotshape(xl_cond, "xl_cond", shape.circle, color=color.red)