Esta estrategia es una estrategia de comercio cuántico simple que utiliza la pirámide de tiempo escalonada. La idea principal es abrir posiciones largas todos los días a horarios fijos, y establecer diferentes niveles de toma de ganancias y stop loss para cada posición para realizar la toma de ganancias y la parada de pérdidas.
La estrategia se basa en tres lógicas clave:
Pirámide de paso en el tiempo
Utilice elsessionTime
El tamaño de la posición es el promedio de la asignación del capital máximo.
Las pérdidas por pérdidas y ganancias individuales
Conjunto correspondiente al nivel de obtención de beneficiostakeProfit
y nivel de pérdida de paradastopLoss
para cada posición abierta, de modo que cada posición tenga su propia lógica de toma de ganancias y de detención de pérdidas para realizar ejecuciones por lotes.
Cierre todas las posiciones cuando finalice la ventana de tiempo
Seleccione si desea cerrar todas las posiciones abiertas durante la ventana de tiempo al final de la ventana.
La estrategia tiene las siguientes ventajas:
Diversificación del riesgo: asignar equitativamente el capital a diferentes posiciones para controlar eficazmente la pérdida de una sola posición.
Las diferentes posiciones tienen lógicas independientes para evitar pérdidas masivas.
Configuraciones flexibles. Parámetros personalizables como tiempos máximos de pirámide, ventana de tiempo diaria, ratios de toma de ganancias/detención de pérdidas, etc.
Una lógica simple y clara, fácil de entender.
También hay algunos riesgos:
El riesgo de que el capital total se quede atascado si todas las posiciones activan el stop loss antes de obtener ganancias.
No hay límite en el capital total de posición abierta por día. Demasiadas posiciones pueden exceder la capacidad de carga de capital si se encuentran situaciones de mercado inusuales. Considere agregar el capital total máximo de posición por día.
La configuración incorrecta de la ventana de tiempo puede perder oportunidades de negociación.
La estrategia puede mejorarse en los siguientes aspectos:
Añadir condiciones de posición abierta basadas en indicadores técnicos para evitar pirámides imprudentes.
Se añadirá el límite de capital total de las posiciones abiertas diarias para evitar el exceso de la capacidad de carga de capital.
Establecer diferentes ratios de toma de ganancias/detención de pérdidas para diferentes posiciones para obtener una toma de ganancias y una detención de pérdidas diferenciadas.
Añadir lógica para vincular el importe de la posición con el saldo del fondo de capital.
En conclusión, esta es una plantilla de estrategia de comercio de cantidades muy simple que utiliza la metodología de pirámide de paso en el tiempo. La lógica es simple y clara, mientras que también hay algunos riesgos y espacios para mejorar. Los desarrolladores pueden optimizar adecuadamente para que sea una estrategia de cantidades relativamente estable y confiable.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h 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/ // © A3Sh //@version=5 strategy("Simple_Pyramiding", overlay=true, pyramiding=99, initial_capital=500, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.075, close_entries_rule='FIFO') // Study of a Simple DCA strategy that opens a position every day at a specified time. // A position is opened at the start time of the Timeframe. // Positions exit individually when the take profit level is triggered. // Option to activate Stop Loss and/or Position exit at the end of the Timeframe // Backtest Window start_time = input(defval=timestamp("01 April 2021 20:00"), group = "Backtest Window", title="Start Time") end_time = input(defval=timestamp("01 Aug 2022 20:00"), group = "Backtest Window", title="End Time") window() => true // Inputs posCount = input.int (6, group = "Risk", title = "Max Amount of DCA Entries") takeProfit = input.float (2.5, group = "Risk", title = "Take Profit %") slSwitch = input.bool (true, group = "Risk", title = "Activate Stop Loss") stopLoss = input.float (9, group = "Risk", title = "Stop Loss %") sessionTime = input("1800-1700", group = "DCA Settings", title = "DCA Order Timeframe", tooltip="Open order at the start/If ativated, close order at the end") exitDCA = input.bool (false, group = "DCA Settings", title = "Exit DCA Entry at end of Timeframe") // Order size based on max amount of pyramid orders q = (strategy.equity / posCount) / open // Timeframe for opening and closing a DCA order // example taken from https://stackoverflow.com/questions/69230164/pinescript-basic-question-open-a-trade-at-a-set-time-each-day t = time("D", sessionTime) isStart = na(t[1]) and not na(t) or t[1] < t isEnd = na(t) and not na(t[1]) or t[1] < t bgcolor(t ? color.new(color.blue,95) : na, title = " TimeFrame Color") // Create DCA Entries entry_price = 0.0 if isStart and window() for i = 0 to strategy.opentrades if strategy.opentrades == i entry_price := close entry_id = "PE_" + str.tostring(i + 1) strategy.entry(id = entry_id, direction=strategy.long, limit=entry_price, qty=q) if strategy.opentrades == posCount break //Exit DCA Entries when take profit or stop loss is triggered if strategy.opentrades > 0 and window() for i = 0 to strategy.opentrades exit_from = "PE_" + str.tostring(i + 1) exit_id = "Exit_" + str.tostring(i + 1) strategy.exit(id= exit_id, from_entry= exit_from, profit = close * takeProfit / 100 / syminfo.mintick, loss = slSwitch ? close * stopLoss /100 / syminfo.mintick :na) //Exit DCA Entries at end of DCA Timeframe if strategy.opentrades > 0 and exitDCA and isEnd and window() for i = 0 to strategy.opentrades exit_from = "PE_" + str.tostring(i + 1) exit_id = "Exit_" + str.tostring(i + 1) strategy.exit(id= exit_id, from_entry= exit_from, stop = close)