이 전략은 시장 트렌드를 결정하고 그에 따라 긴/단 포지션을 구성하기 위해 프라임 숫자 오시일레이터 지표를 사용합니다. PNO는 가격과 가격 자체에 가장 가까운 프라임 숫자 사이의 차이를 계산하며, 긍정적 인 값은 상승 추세를 나타내고 부정적인 값은 하락 추세를 나타냅니다. 전략은 가격 변동 중에 숨겨진 트렌드 정보를 캡처하고 브레이크아웃 거래에 대한 지침을 제공합니다.
전략은 먼저 가격과 allowedPercent을 매개 변수로 사용하는 PrimeNumberOscillator 함수를 정의합니다. 함수는 허용 Percent 범위 내에서 가격에 가장 가까운 소수를 검색하고 그 차이를 반환합니다. 긍정적 인 차이는 상승세를 나타내고 부정적인 차이는 하락세를 나타냅니다.
전략에서 PrimeNumberOscillator 함수는 xPNO 값을 계산하기 위해 호출됩니다. 포지션 방향은 xPNO의 기호에 의해 결정되고 최종 거래 방향을 얻기 위해 리버스 팩터로 곱됩니다. 방향에 따라 긴 / 짧은 포지션이 열립니다.
전략은 주로 트렌드 방향에 대한 PNO 지표에 의존합니다. 지표 자체는 상당히 원시적이며 신호 검증을 위해 다른 요소와 결합해야합니다. 그러나 수학 원리에 기반하고 객관적인 지침을 제공할 수 있습니다.
이 전략은 단순한 논리와 구현으로 소수자 오스실레이션 원리에 기초한 트렌드 방향을 결정한다. 그러나 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)