Стратегия случайного блуждания


Дата создания: 2023-10-09 16:10:24 Последнее изменение: 2023-10-09 16:10:24
Копировать: 0 Количество просмотров: 707
1
Подписаться
1617
Подписчики

Обзор

Стратегия случайного брожения - это автоматическая торговая стратегия, основанная на генерировании случайных чисел. Стратегия использует линейный генератор излишеств, произвольно генерирующий числа в зависимости от настроенного семени, число больше, чем при понижении, и меньше, чем при понижении, чтобы получить свободную позицию.

Стратегический принцип

В основном эта стратегия реализуется через следующие части:

  1. Установка параметров a, c и модуля m, генерируемых случайными числами, и первоначального семени.

  2. Определяет функцию генерации случайных чисел GetRandom, использующую линейный ароматный алгоритм для генерации случайных чисел от 0 до m.

  3. В каждой K-линии, если в данный момент нет позиций, то сравнивается генерируемое случайное число, большее, чем m/2.

  4. Установка стоп-убытков, установка стоп-убытков и стоп-убытков в процентной форме.

  5. Период отсчета устанавливается с помощью промежутков времени.

С помощью вышеперечисленных шагов, стратегия реализует полностью случайные операции многократного прохождения. Открывается многократное предложение, когда количество случайностей больше, чем m/2. В противном случае открывается пустое предложение, а затем устанавливается стоп-стоп, чтобы выйти из позиции.

Анализ преимуществ

  • Стратегическая логика проста, понятна и легко понятна.

  • Случайная торговля эффективно предотвращает эмоциональное воздействие человека и уменьшает субъективные ошибки.

  • Можно настроить параметры алгоритма генерирования случайных чисел, чтобы скорректировать их случайность.

  • Гибкость в установке условий стоп-лосса и контроля за единичными потерями.

  • Поддержка оптимизации параметров обратной измерения, чтобы легко тестировать влияние различных параметров на общую прибыль.

Анализ рисков

  • Рандомные сделки могут быть неопределенными в долгосрочной перспективе, прибыль неопределенна.

  • Невозможность корректировать позиции в зависимости от рыночных условий может привести к упущению возможности тренда.

  • Ограниченная прибыль, высокий риск отзыва.

  • Для предотвращения чрезмерных потерь необходимо установить разумную норму стоп-стоп.

  • Случайность может привести к частому открытию позиций, увеличивающим расходы на торговлю.

  • Требуется полное отслеживание параметров верификации, чтобы установить их рациональность.

Снижение риска может быть достигнуто путем добавления функций, таких как определение тренда, уменьшение количества случайных открытий позиций, оптимизация механизма остановки убытков и строгий контроль за единичными потерями.

Направление оптимизации

  • Повышение оценки трендов, предотвращение открытия позиций на обратном направлении.

  • Присоединяйтесь к управлению позициями и корректируйте размер позиции в зависимости от изменения капитала.

  • Оптимизация алгоритмов генерирования случайных чисел, повышение их случайности.

  • Динамически корректируйте стоп-старт.

  • Добавлено ограничение на частоту открытия позиций.

  • Поиск оптимальных параметров в результате многопараметрического комбинированного отбора.

Подвести итог

Стратегия случайного брожения позволяет осуществлять механическую торговлю с помощью контроля случайных чисел. Эта стратегия является случайной, не подвержена влиянию личных эмоций и избегает риска субъективной ошибочной операции. Однако случайные открытия позиций также могут упустить тенденционные возможности, ограниченная прибыль, необходима оптимизация механизмов контроля риска. В целом, эта стратегия подходит для проверки идеи торговли и понимания влияния параметров на прибыль, но практическое применение требует тщательной оценки.

Исходный код стратегии
/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//@author=Tr0sT
strategy(title = "Random strategy", shorttitle = "Random", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

a = 16
c = 10
m = 1000
GetRandom(prev) =>
    GetRandom = (a * prev + c) % m

seed = input(200, minval = 2, maxval = m)
stopLoss = input(30, title = "Stop loss percentage(0.1%)")
takeProfit = input(30, title = "Take profit percentage(0.1%)")


curRandom = na
curRandom := nz(curRandom[1]) == 0 ? seed : GetRandom(curRandom[1])
if (strategy.position_size == 0)
    if (curRandom >= m / 2)
        strategy.entry("Enter", strategy.long)
    else
        strategy.entry("Enter", strategy.short)
        
    strategy.exit("Exit", "Enter", loss = close * stopLoss / 1000 / syminfo.mintick, profit = close * takeProfit / 1000 / syminfo.mintick)            

// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(3, "Backtest Start Month")
testStartDay = input(6, "Backtest Start Day")
testStartHour = input(08, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
    strategy.cancel_all()
    strategy.close_all()