Торговые стратегии, основанные на колебаниях простых чисел


Дата создания: 2023-11-02 14:42:22 Последнее изменение: 2023-11-02 14:42:22
Копировать: 0 Количество просмотров: 797
1
Подписаться
1617
Подписчики

Торговые стратегии, основанные на колебаниях простых чисел

Обзор

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

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

Эта стратегия сначала определяет функцию PrimeNumberOscillator, в которой вводятся параметры цена и allowedPercent. Функция ищет наиболее близкое к цене число в диапазоне цены плюс-минус allowedPercent и возвращает разницу между ними. Разница больше 0 означает плюсовую тенденцию, меньше 0 означает пустую тенденцию.

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

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

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

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

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

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

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

  • Фильтровать сигналы можно с помощью движущихся средних и других показателей, таких как перекуп и перепродажа
  • Можно добавить стратегию “стоп-лосс”, чтобы уменьшить одноразовые потери
  • Параметр allowedPercent может быть изменен в зависимости от динамики рынка
  • Оптимизация управления позициями, контроль размеров позиций с помощью таких показателей, как волатильность

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

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

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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/03/2018
// Determining market trends has become a science even though a high number or people 
// still believe it’s a gambling game. Mathematicians, technicians, brokers and investors 
// have worked together in developing quite several indicators to help them better understand 
// and forecast market movements.
//
// Developed by Modulus Financial Engineering Inc., the prime number oscillator indicates the 
// nearest prime number, be it at the top or the bottom of the series, and outlines the 
// difference between that prime number and the respective series.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
PrimeNumberOscillator(price, percent) =>
    res = 0
    res1 = 0
    res2 = 0
    for j = price to price + (price * percent / 100)
        res1 := j
	    for i = 2 to sqrt(price)
        	res1 := iff(j % i == 0 , 0, j)
            if res1 == 0 
                break
		if res1 > 0 
		    break
    for j = price to price - (price * percent / 100)
        res2 := j
	    for i = 2 to sqrt(price)
        	res2 := iff(j % i == 0 , 0, j)
            if res2 == 0 
                break
		if res2 > 0 
		    break
    res := iff(res1 - price < price - res2,  res1 - price, res2 - price)
    res := iff(res == 0, res[1], res)
    res
    
strategy(title="Prime Number Oscillator Backtest")
percent = input(5, minval=0.01, step = 0.01, title="Tolerance Percentage")
reverse = input(false, title="Trade reverse")
xPNO = PrimeNumberOscillator(close, percent)
pos = iff(xPNO > 0, 1,
       iff(xPNO < 0, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
clr = iff(xPNO > 0, green, red)
p1 = plot(xPNO, color=blue, title="KPO")
p2 = plot(0, color=black, title="0")
fill(p1,p2,color=clr)