Strategi ini memanfaatkan bentuk garis K bintang fajar untuk melakukan perdagangan pelacakan tren yang melakukan banyak arah. Sinyal perdagangan utama berasal dari titik di mana garis fajar menerobos garis rata-rata.
Logika transaksi adalah sebagai berikut:
Penghitungan indeks bergerak rata-rata 60 hari EMA60
Untuk menilai munculnya bentuk garis K bintang fajar, termasuk garis negatif pertama, garis silang atau garis tutup kedua, garis terang ketiga dan menembus titik tertinggi dua garis K sebelumnya
Sinyal multihead dalam bentuk garis Morning Star muncul di atas EMA60 di titik terobosan
Menetapkan target profit atau tracking stop loss sebagai strategi keluar
Stop loss ditetapkan sebagai titik terendah dari 100 garis K terakhir
Parameter yang dapat disesuaikan untuk menentukan batas kapasitas
Strategi ini memanfaatkan sepenuhnya sifat pembalikan tren dari garis Morning Star, untuk menelusuri arah tren yang cocok. Ini dapat memberikan hasil yang lebih baik di pasar yang bergejolak.
Garis bintang fajar efektif dalam menentukan pembalikan tren jangka pendek
Penembusan titik masuk dan tracking stop loss, terus mengikuti tren
Tetapkan jendela pengembalian untuk menghindari kerusakan yang berlebihan
Pengaturan parameter yang perlu dioptimalkan untuk pengujian berulang
Stop loss terlalu dekat dapat menyebabkan stop loss terlalu sering
Hanya Berjalan di Berbagai Arah, Kehilangan Kesempatan
Strategi ini mengidentifikasi karakteristik garis K Morning Star dan mencocokkan arah tren untuk melacak. Dengan penyesuaian parameter dapat disesuaikan dengan situasi pasar yang berbeda. Namun, hanya melakukan lebih banyak dan pengaturan stop loss yang perlu dievaluasi dengan hati-hati.
/*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)