La estrategia utiliza la forma de la línea K de la mañana para realizar operaciones de seguimiento de tendencias en varias direcciones. Las principales señales de negociación provienen de los puntos donde la línea de la mañana rompe la línea media.
La lógica de la transacción es la siguiente:
Calcular el promedio móvil de 60 días del índice EMA60
Para juzgar la aparición de la forma de la línea K de la estrella de la mañana, incluye la primera línea negativa, la segunda línea cruzada o línea de bloqueo, la tercera línea de sol y la ruptura de los puntos más altos de las dos líneas K anteriores
La señal de múltiples cabezas en forma de línea de la estrella de la mañana aparece en el punto de ruptura por encima de EMA60
Establecer un objetivo de ganancias o un seguimiento de las pérdidas como estrategia de salida
El stop loss se establece como el punto mínimo de las últimas 100 líneas K
Parámetros de ajuste de la línea de la estrella de la mañana para determinar el límite de capacidad
La estrategia aprovecha las características de giro de tendencia de las líneas de la estrella de la mañana para seguir la dirección de la tendencia. Puede obtener mejores resultados en mercados de alta volatilidad.
La línea de la estrella de la mañana es un buen indicador de un cambio de tendencia a corto plazo.
Entradas y paradas de seguimiento de puntos de ruptura, seguimiento continuo de tendencias
Configuración de la ventana de retroceso para evitar el exceso de pérdidas
La configuración de los parámetros requiere una optimización de prueba repetida
El deterioro demasiado cercano puede conducir a un deterioro demasiado frecuente
La gente no tiene la oportunidad de hacer lo que quieren, y no tienen la oportunidad de hacer lo que quieren.
La estrategia identifica las características de la línea K de Morning Star y la orientación de la tendencia de la correspondencia para el seguimiento. Se puede adaptar a diferentes situaciones del mercado a través de ajustes de parámetros. Pero solo hacer más y detener la configuración de pérdidas requiere una evaluación prudente.
/*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)