Стратегия торговли с осциллятором простых чисел

Автор:Чао Чжан, Дата: 2023-11-02 14:42:22
Тэги:

img

Обзор

Эта стратегия использует индикатор Prime Number Oscillator для определения рыночных тенденций и построения долгих/коротких позиций соответственно. PNO вычисляет разницу между ближайшим к цене простым числом и самой ценой, с положительными значениями, указывающими на бычьи тенденции, и отрицательными значениями, указывающими на медвежие тенденции. Стратегия может захватить скрытую информацию о тренде во время колебаний цен и предоставить руководство для торговли прорывом.

Логика стратегии

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

В стратегии функция PrimeNumberOscillator вызвана для вычисления значения xPNO. Направление позиции определяется знаком xPNO и умножается на обратный фактор для получения окончательного направления торговли. Долгие / короткие позиции открываются на основе направления.

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

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

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

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

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

Руководство по оптимизации

  • Добавьте фильтры, такие как скользящая средняя, RSI для проверки сигнала
  • Внедрить стоп-лосс для ограничения риска снижения
  • Динамическая корректировка разрешена % на основе рыночных условий
  • Оптимизация размеров позиций с помощью волатильности и других показателей

Заключение

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


/*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)

Больше