Эта стратегия использует индикаторы, которые автоматически устанавливают цены на остановки и остановки, чтобы обеспечить мобильную торговлю. Это позволяет получить больше прибыли в трендовых рынках, а также уменьшить убытки в нестабильных рынках.
Эта стратегия основана на ценообразовании, основанном на индикаторах, которые могут отражать потенциальную поддержку и сопротивление рынка. Эта стратегия использует различные уровни индикаторов, которые могут использоваться в качестве стоп-лосс и стоп-дюймов.
В частности, стратегия отслеживает максимумы и минимумы, вычисляя 10 диапазонов цены на цепочку; затем, в зависимости от конфигурации, выбирает цену на цепочку в качестве входной стратегии; когда цена проходит через эту цепочку, большее количество заказов делается в соответствии с профилированным рычагом; в то же время, устанавливается цена остановки, которая равна средней цене входа плюс процент остановки конфигурации.
После размещения ордера, стратегия продолжает отслеживать последние цены на прокат; когда появляется более низкий прокат, стратегия отменяет первоначальный заказ, повторно размещает заказ и достигает мобильного стоп-лосса; когда рост цены прорывает стоп-лосс, стратегия останавливает стоп-лосс.
Наибольшее преимущество данной стратегии заключается в том, что она позволяет динамически регулировать цены на остановки и остановки, и она предназначена специально для трендовых рынков.
Уметь получать больше прибыли в трендовом рынке. Конфигурировать параметры сдерживания прибыли на основе средней цены входа, чтобы максимально участвовать в трендовом рынке и получать более высокую прибыль.
Уменьшает убытки в период колебаний рынка. Когда цена снова достигает более низкого уровня, она своевременно останавливает убытки, чтобы избежать попадания в колебания.
Поддержка оппозиции. Конфигурировано оппозиционное настроение, которое увеличивает позиции, когда цена падает до определенного размера, снижая среднюю стоимость хранения.
Операция проста. Все, что нужно сделать, это настроить пропускную способность и пропорции, и вся операция будет выполнена полностью автоматически, без необходимости ручной работы.
В то же время в этой стратегии есть определенные риски, которые сосредоточены на следующем:
Легко подвергаются повторному сдерживанию в период суматохи. При наличии сдерживания в пересечении или суматохе цены могут несколько раз подниматься и опускаться, увеличивая частоту торговли и расходы на процедурные сборы.
Не устанавливается стоп-лосс. В стремлении к большему успеху стратегия не устанавливает стоп-лосс. В случае серьезного переворота рынка могут возникнуть большие убытки.
Количество и сумма пополнений не ограничены. Многократное пополнение может привести к дальнейшему увеличению убытков.
Относительное решение: 1. Можно установить условия для приостановки торговли в условиях нестабильного рынка. 2. Можно контролировать рынок вручную и, при необходимости, принуждать к прекращению прибыли. 3. Установление пределов количества и суммы размещений;
Эта стратегия также имеет большое пространство для оптимизации, которая может быть проведена в следующих направлениях:
Использование комбинации других индикаторов для подтверждения входа. Можно включить в условия входа такие индикаторы, как EMA, MACD и т.д., чтобы избежать вложения в нестабильный рынок.
Включение механизма остановки; настройка фиксированной остановки или отслеживания остановки позволяет избежать больших потерь в экстремальных рынках.
Оптимизация логики размещения; можно оптимизировать ценовые диапазоны и количество размещений в зависимости от конкретных рыночных условий; предотвратить чрезмерное размещение;
В сочетании с алгоритмами машинного обучения, например, с помощью алгоритмов, таких как LSTM, можно предсказывать возможные движения и сопротивления цены.
Эта стратегия в целом подходит для рынка, следующего за тенденциями. Она может быть использована с помощью динамических корректировок стоп-стоп-потери. В то же время существует определенный риск, который требует оптимизации и улучшения в сочетании с другими механизмами, чтобы она могла адаптироваться к более сложной рыночной среде.
/*backtest start: 2024-01-06 00:00:00 end: 2024-02-05 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(title="Fibs limit only", shorttitle="Strategy", overlay=true, precision=8, pyramiding=1000, commission_type=strategy.commission.percent, commission_value=0.04) //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("Filled", 1, 1, alert_message='Long Filled|e=binancefuturestestnet s=btcusdt b=short c=order|delay=1|e=binancefuturestestnet s=btcusdt b=long c=position q=100% ro=1 fp=' + tostring(p)) if filledorder and size >= 1 fill := entry count := count+1 pause := time + 60000 strategy.entry("Filled", 1, 1, alert_message='Long Filled|e=binancefuturestestnet s=btcusdt b=short c=order|delay=1|e=binancefuturestestnet s=btcusdt b=long c=position q=100% ro=1 fp=' + tostring(profit)) 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='Profit') count := 0 fill := 0.0 last_profit := 0.0 //Plots bottom = signal ? color.green : filled ? color.red : color.white plot(entry, "Entry", bottom)