La estrategia utiliza indicadores de la banda de Bryn que se adaptan de forma bidireccional para identificar la dirección de la tendencia y, junto con la lista de precios del mercado, para realizar operaciones de seguimiento de tendencias de alto rendimiento.
Esta estrategia aprovecha las ventajas de la valoración de la dirección de la tendencia y el cambio, combinada con una lista de precios de salida rápida del mercado para realizar un seguimiento bidireccional y obtener ganancias excedentes bajo la premisa de controlar el riesgo. Se puede obtener un mejor rendimiento estratégico mediante la optimización adicional de los parámetros de la banda de Bryn, la incorporación de indicadores de filtro auxiliares, el ajuste de la lógica de stop loss y stop loss.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 1h basePeriod: 15m 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/ // © CryptoRox //@version=4 //Paste the line below in your alerts to run the built-in commands. //{{strategy.order.alert_message}} strategy("Automated - Fibs with Market orders", "Strategy", true) //Settings testing = input(false, "Live") //Use epochconverter or something similar to get the current timestamp. starttime = input(1600976975, "Start Timestamp") * 1000 //Wait XX seconds from that timestamp before the strategy starts looking for an entry. seconds = input(60, "Start Delay") * 1000 testPeriod = true leverage = input(1, "Leverage") tp = input(1.0, "Take Profit %") / leverage dca = input(-1.0, "DCA when < %") / leverage *-1 fibEntry = input("1", "Entry Level", options=["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]) //Strategy Calls equity = strategy.equity avg = strategy.position_avg_price symbol = syminfo.tickerid openTrades = strategy.opentrades closedTrades = strategy.closedtrades size = strategy.position_size //Fibs lentt = input(60, "Pivot Length") h = highest(lentt) h1 = dev(h, lentt) ? na : h hpivot = fixnan(h1) l = lowest(lentt) l1 = dev(l, lentt) ? na : l lpivot = fixnan(l1) z = 400 p_offset= 2 transp = 60 a=(lowest(z)+highest(z))/2 b=lowest(z) c=highest(z) fib0 = (((hpivot - lpivot)) + lpivot) fib1 = (((hpivot - lpivot)*.21) + lpivot) fib2 = (((hpivot - lpivot)*.3) + lpivot) fib3 = (((hpivot - lpivot)*.5) + lpivot) fib4 = (((hpivot - lpivot)*.62) + lpivot) fib5 = (((hpivot - lpivot)*.7) + lpivot) fib6 = (((hpivot - lpivot)* 1.00) + lpivot) fib7 = (((hpivot - lpivot)* 1.27) + lpivot) fib8 = (((hpivot - lpivot)* 2) + lpivot) fib9 = (((hpivot - lpivot)* -.27) + lpivot) fib10 = (((hpivot - lpivot)* -1) + lpivot) notna = nz(fib10[60]) entry = 0.0 if fibEntry == "1" entry := fib10 if fibEntry == "2" entry := fib9 if fibEntry == "3" entry := fib0 if fibEntry == "4" entry := fib1 if fibEntry == "5" entry := fib2 if fibEntry == "6" entry := fib3 if fibEntry == "7" entry := fib4 if fibEntry == "8" entry := fib5 if fibEntry == "9" entry := fib6 if fibEntry == "10" entry := fib7 profit = avg+avg*(tp/100) pause = 0 pause := nz(pause[1]) paused = time < pause fill = 0.0 fill := nz(fill[1]) count = 0.0 count := nz(fill[1]) filled = count > 0 ? entry > fill-fill/100*dca : 0 signal = testPeriod and notna and not paused and not filled ? 1 : 0 neworder = crossover(signal, signal[1]) moveorder = entry != entry[1] and signal and not neworder ? true : false cancelorder = crossunder(signal, signal[1]) and not paused filledorder = crossunder(low[1], entry[1]) and signal[1] last_profit = 0.0 last_profit := nz(last_profit[1]) // if neworder and signal // strategy.order("New", 1, 0.0001, alert_message='New Order|e=binancefuturestestnet s=btcusdt b=long q=0.0011 fp=' + tostring(entry)) // if moveorder // strategy.order("Move", 1, 0.0001, alert_message='Move Order|e=binancefuturestestnet s=btcusdt b=long c=order|e=binancefuturestestnet s=btcusdt b=long q=0.0011 fp=' + tostring(entry)) if filledorder and size < 1 fill := entry count := count+1 pause := time + 60000 p = close+close*(tp/100) strategy.entry("Buy", 1, 1, alert_message='Long|e=binancefuturestestnet s=btcusdt b=long q=0.0011 t=market') if filledorder and size >= 1 fill := entry count := count+1 pause := time + 60000 strategy.entry("Buy", 1, 1, alert_message='Long|e=binancefuturestestnet s=btcusdt b=long q=0.0011 t=market') // if cancelorder and not filledorder // pause := time + 60000 // strategy.order("Cancel", 1, 0.0001, alert_message='Cancel Order|e=binancefuturestestnet s=btcusdt b=long c=order') if filledorder last_profit := profit closeit = crossover(high, profit) and size >= 1 if closeit strategy.entry("Close ALL", 0, 0, alert_message='Close Long|e=binancefuturestestnet s=btcusdt b=long c=position t=market') count := 0 fill := 0.0 last_profit := 0.0 //Plots // bottom = signal ? color.green : filled ? color.red : color.white // plot(entry, "Entry", bottom)