소수 오시레이터 거래 전략

저자:차오장, 날짜: 2023-11-02 14:42:22
태그:

img

전반적인 설명

이 전략은 시장 트렌드를 결정하고 그에 따라 긴/단 포지션을 구성하기 위해 프라임 숫자 오시일레이터 지표를 사용합니다. PNO는 가격과 가격 자체에 가장 가까운 프라임 숫자 사이의 차이를 계산하며, 긍정적 인 값은 상승 추세를 나타내고 부정적인 값은 하락 추세를 나타냅니다. 전략은 가격 변동 중에 숨겨진 트렌드 정보를 캡처하고 브레이크아웃 거래에 대한 지침을 제공합니다.

전략 논리

전략은 먼저 가격과 allowedPercent을 매개 변수로 사용하는 PrimeNumberOscillator 함수를 정의합니다. 함수는 허용 Percent 범위 내에서 가격에 가장 가까운 소수를 검색하고 그 차이를 반환합니다. 긍정적 인 차이는 상승세를 나타내고 부정적인 차이는 하락세를 나타냅니다.

전략에서 PrimeNumberOscillator 함수는 xPNO 값을 계산하기 위해 호출됩니다. 포지션 방향은 xPNO의 기호에 의해 결정되고 최종 거래 방향을 얻기 위해 리버스 팩터로 곱됩니다. 방향에 따라 긴 / 짧은 포지션이 열립니다.

전략은 주로 트렌드 방향에 대한 PNO 지표에 의존합니다. 지표 자체는 상당히 원시적이며 신호 검증을 위해 다른 요소와 결합해야합니다. 그러나 수학 원리에 기반하고 객관적인 지침을 제공할 수 있습니다.

이점 분석

  • 수학적인 원리에 기초하고, 상대적으로 객관적인
  • 변동에 숨겨진 경향을 식별할 수 있습니다.
  • 감수성 조절을 위한 유연한 매개 변수 조정
  • 구현하기 쉽고 이해하기 쉽고 최적화하기 쉽습니다.

위험 분석

  • 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)

더 많은