Chiến lược đảo ngược điểm thấp


Ngày tạo: 2023-12-15 11:07:41 sửa đổi lần cuối: 2023-12-15 11:07:41
sao chép: 0 Số nhấp chuột: 657
1
tập trung vào
1621
Người theo dõi

Chiến lược đảo ngược điểm thấp

Tổng quan

Chiến lược này dựa trên các điểm thấp nhất của thị trường để thực hiện các hoạt động đảo ngược. Nó sử dụng các điểm thấp nhất của EMA 200 ngày, kết hợp với điểm kháng cự hỗ trợ camarela để xác định các điểm thấp nhất của thị trường và thực hiện nhiều hoạt động khi giá tăng trở lại.

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

  1. Tính giá thấp nhất trong 200 ngày EMA là EMA200Lows, được coi là gần điểm thấp nhất của thị trường khi giá đóng cửa dưới mức EMA này.
  2. Tính toán EMA 9 ngày của hỗ trợ Camaleira 3 ((S3) là ema_s3_9, như là một mức hỗ trợ quan trọng.
  3. Sau đó tính EMA 9 ngày của trung tâm Camaleira là ema_center_9, để đánh giá tín hiệu đảo ngược.
  4. Khi ema_center_9 mặc ema200Lows, và 3 dòng K trước đều thấp hơn ema200Lows, thực hiện nhiều thao tác.
  5. Hạn chế là ATR, và theo dõi chuyển động giá thấp nhất.
  6. Lợi nhuận mục tiêu là ema_h4_9 ((Camarella Resistance 4) và ema_s3_9 ((Camarella Support 3)

Phân tích lợi thế

  1. Sử dụng điểm thấp nhất của EMA 200 ngày để xác định khu vực thấp nhất của thị trường, tránh các điểm thấp hơn ở giữa.
  2. Các vị trí hỗ trợ của Camaleira kết hợp với trung tâm, cho phép đánh giá chính xác hơn về điểm đảo ngược.
  3. ATR là một phương pháp để dừng lỗ một cách hợp lý hơn, theo dõi điểm thấp hơn có lợi cho việc khóa nhiều tiền hơn.

Phân tích rủi ro

  1. Cố gắng giữ vị trí dài hạn có rủi ro cao. Chiến lược này thích hợp hơn cho hoạt động ngắn hạn.
  2. Trong trường hợp thị trường lớn, lỗ dừng có thể lớn. Có thể điều chỉnh theo tham số ATR.
  3. Các nhà khoa học đã đưa ra những kết luận khác nhau về sự thay đổi này, trong đó có một số người cho rằng sự thay đổi này có thể là do sự thay đổi của các hệ thống phân tích.

Hướng tối ưu hóa

  1. Có thể xem xét kết hợp với các chỉ số khác, chẳng hạn như RSI để đánh giá tín hiệu đảo ngược.
  2. Bạn có thể nghiên cứu các tham số khác nhau để tìm các tham số tốt hơn.
  3. Bạn có thể thử các phương pháp học máy để điều chỉnh động ATR.

Tóm tắt

Chiến lược này sử dụng điểm thấp nhất của EMA và chỉ số Camelot để xác định các khu vực thấp nhất của thị trường và điểm đảo ngược. Nhận lợi nhuận thông qua ATR dừng lỗ. Nói chung, chiến lược là hoàn chỉnh và có một số giá trị chiến đấu.

Mã nguồn chiến lược
/*backtest
start: 2023-12-07 00:00:00
end: 2023-12-14 00:00:00
period: 1m
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/
// © mohanee

//Using the lowest of low of ema200, you can find the bottom
//wait for price to close below ema200Lows line
//when pivot

//@version=4
strategy(title="PickingupFromBottom Strategy", overlay=true )  //default_qty_value=10, default_qty_type=strategy.fixed, 

//HMA
HMA(src1, length1) =>  wma(2 * wma(src1, length1/2) - wma(src1, length1), round(sqrt(length1)))


//variables BEGIN
length1=input(200,title="EMA 1 Length")   
length2=input(50,title="EMA 2 Length")   
length3=input(20,title="EMA 3 Length")   

sourceForHighs= input(hlc3, title="Source for Highs", type=input.source)
sourceForLows = input(hlc3, title="Source for Lows" , type=input.source)

hiLoLength=input(7, title="HiLo Band Length")

atrLength=input(14, title="ATR Length")
atrMultiplier=input(3.5, title="ATR Multiplier")

//takePartialProfits = input(true, title="Take Partial Profits (if this selected, RSI 13 higher reading over 80 is considered for partial closing ) ")


ema200=ema(close,length1)
hma200=HMA(close,length1)


////Camarilla pivot points
//study(title="Camarilla Pivots", shorttitle="Camarilla", overlay=true)
t = input(title = "Pivot Resolution", defval="D", options=["D","W","M"])

//Get previous day/week bar and avoiding realtime calculation by taking the previous to current bar
sopen = security(syminfo.tickerid, t, open[1], barmerge.gaps_off, barmerge.lookahead_on)
shigh = security(syminfo.tickerid, t, high[1], barmerge.gaps_off, barmerge.lookahead_on)
slow = security(syminfo.tickerid, t, low[1], barmerge.gaps_off, barmerge.lookahead_on)
sclose = security(syminfo.tickerid, t, close[1], barmerge.gaps_off, barmerge.lookahead_on)
r = shigh-slow

//Calculate pivots
//center=(sclose)
//center=(close[1] + high[1] + low[1])/3
center=sclose - r*(0.618)

h1=sclose + r*(1.1/12)
h2=sclose + r*(1.1/6)
h3=sclose + r*(1.1/4)
h4=sclose + r*(1.1/2)
h5=(shigh/slow)*sclose
l1=sclose - r*(1.1/12)
l2=sclose - r*(1.1/6)
l3=sclose - r*(1.1/4)
l4=sclose - r*(1.1/2)
l5=sclose - (h5-sclose)

//Colors (<ternary conditional operator> expression prevents continuous lines on history)
c5=sopen != sopen[1] ? na : color.red
c4=sopen != sopen[1] ? na : color.purple
c3=sopen != sopen[1] ? na : color.fuchsia
c2=sopen != sopen[1] ? na : color.blue
c1=sopen != sopen[1] ? na : color.gray
cc=sopen != sopen[1] ? na : color.blue

//Plotting
//plot(center, title="Central",color=color.blue, linewidth=2)
//plot(h5, title="H5",color=c5, linewidth=1)
//plot(h4, title="H4",color=c4, linewidth=2)
//plot(h3, title="H3",color=c3, linewidth=1)
//plot(h2, title="H2",color=c2, linewidth=1)
//plot(h1, title="H1",color=c1, linewidth=1)
//plot(l1, title="L1",color=c1, linewidth=1)
//plot(l2, title="L2",color=c2, linewidth=1)
//plot(l3, title="L3",color=c3, linewidth=1)
//plot(l4, title="L4",color=c4, linewidth=2)
//plot(l5, title="L5",color=c5, linewidth=1)////Camarilla pivot points

ema_s3_9=ema(l3, 9)
ema_s3_50=ema(l3, 50)
ema_h4_9=ema(h4, 9)

ema_center_9=ema(center, 9)




plot(ema_h4_9, title="Camariall R4 Resistance EMA 9", color=color.fuchsia)
plot(ema_s3_9, title="Camarilla S3 support EMA 9", color=color.gray, linewidth=1)

//plot(ema_s3_50, title="Camarilla S3 support EMA 50", color=color.green, linewidth=2)

plot(ema_center_9, title="Camarilla Center Point EMA 9", color=color.blue)




plot(hma200, title="HULL 200", color=color.yellow,  transp=25)
plotEma200=plot(ema200, title="EMA 200",  style=plot.style_linebr, linewidth=2 , color=color.orange)

ema200High = ema(highest(sourceForHighs,length1), hiLoLength)
ema200Low= ema(lowest(sourceForLows,length1), hiLoLength)

ema50High = ema(highest(sourceForHighs,length2), hiLoLength)
ema50Low= ema(lowest(sourceForLows,length2), hiLoLength)

ema20High = ema(highest(sourceForHighs,length3), hiLoLength)
ema20Low= ema(lowest(sourceForLows,length3), hiLoLength)

//plot(ema200High, title="EMA 200 Highs", linewidth=2, color=color.orange, transp=30)
plotEma200Low=plot(ema200Low, title="EMA 200 Lows", linewidth=2, color=color.green, transp=30, style=plot.style_linebr)

//plot(ema50High, title="EMA 50 Highs", linewidth=2, color=color.blue, transp=30)
//plotEma50Low=plot(ema50Low, title="EMA 50 Lows", linewidth=2, color=color.blue, transp=30)


fill(plotEma200, plotEma200Low, color=color.green )


// Drawings /////////////////////////////////////////





//Highlight when centerpont crossing up ema200Low a
ema200LowBuyColor=color.new(color.green, transp=50)
bgcolor(crossover(ema_center_9,ema200Low) and (close[1]<ema200Low or close[2]<ema200Low or close[3]<ema200Low)? ema200LowBuyColor : na)
//ema200LowBuyCondition= (close[1]<ema200Low or close[2]<ema200Low or close[3]<ema200Low)
strategy.entry(id="ema200Low Buy", comment="LE2", qty=2, long=true,  when= crossover(ema_center_9,ema200Low) and (close[1]<ema200Low or close[2]<ema200Low or close[3]<ema200Low) )  //or (close>open and low<ema20Low and close>ema20Low) ) )     //  // aroonOsc<0


//Trailing StopLoss
////// Calculate trailing SL
/////////////////////////////////////////////////////
sl_val = atrMultiplier * atr(atrLength)


trailing_sl = 0.0
//trailing_sl :=   max(low[1]  - sl_val, nz(trailing_sl[1])) 
trailing_sl :=   strategy.position_size>=1 ?  max(low  - sl_val, nz(trailing_sl[1])) :  na

//draw initil stop loss
//plot(strategy.position_size>=1 ? trailing_sl : na, color = color.blue , style=plot.style_linebr,  linewidth = 2, title = "stop loss")
plot(trailing_sl, title="ATR Trailing Stop Loss", style=plot.style_linebr, linewidth=1, color=color.red, transp=30)
//Trailing StopLoss
////// Calculate trailing SL
/////////////////////////////////////////////////////



strategy.close(id="ema200Low Buy", comment="TP1="+tostring(close - strategy.position_avg_price, "####.##"), qty=1, when=abs(strategy.position_size)>=1 and crossunder(close, ema_h4_9)  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89
strategy.close(id="ema200Low Buy", comment="TP2="+tostring(close - strategy.position_avg_price, "####.##"),  qty=1, when=abs(strategy.position_size)>=1 and crossunder(close, ema_s3_9)  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89