Percentage Price Oscillator (PPO)

Percentage Price Oscillator (PPO)

The percentage price oscillator (PPO) is a technical momentum indicator that shows the relationship between two moving averages. To calculate the PPO, subtract the 26-period exponential moving average (EMA) from the 12-period EMA, and then divide this difference by the 26-period EMA. The result is then multiplied by 100. The indicator tells the trader where the short-term average is relative to the longer-term average.


I am also attaching the MACD type version (it is very similar):

Share this

Risk disclosure:

No information on this site is investment advice or a solicitation to buy or sell any financial instrument. Past performance is not indicative of future results. Trading may expose you to risk of loss greater than your deposits and is only suitable for experienced investors who have sufficient financial means to bear such risk.

ProRealTime ITF files and other attachments : How to import ITF files into ProRealTime platform?

New! PRC is also now on YouTube, subscribe to our channel for exclusive content and tutorials

  1. juanj • 12/07/2018 #

    Haven’t been on this forum for ages! Just logged in to see what is happening and since this caught my eye I decided to quickly write it into a strategy 🙂

    For some reason, the Add PRT Code doesn’t work so here is the unformatted code:

    //EURUSD 1Hr

    Defparam cumulateorders = False

    possize = 1
    SlowP = 26 //Periods of Slow Average
    FastP = 12 //Periods of Fast Average
    AvgType = 1 //Average Type (0=sma, 1=ema, 2=wma,…)
    Percentage = 1 //1=calculate Percentage 0=no percentage
    SignalP = 9 //Periods of Signal Average
    SlowP = max(1,min(999,SlowP)) //1 – 999
    FastP = max(1,min(999,FastP)) //1 – 999
    AvgType = max(0,min(6,AvgType)) //0 – 6
    Percentage = max(0,min(1,Percentage)) //1=Percentage 0=NO Percentage
    SignalP = max(1,min(999,FastP)) //1 – 999
    SlowAvg = Average[SlowP,AvgType](close)
    FastAvg = Average[FastP,AvgType](close)
    ppo = FastAvg – SlowAvg
    IF Percentage THEN
    ppo = (ppo / SlowAvg) * 100
    SignalLine = Average[SignalP,AvgType](ppo)
    Histo = Ppo – SignalLine

    If longonmarket and histo < 0 or ppo 0 or ppo > SignalLine Then
    Exitshort at market

    If ppo > 0 and signalLine SignalLine Then
    If shortonmarket Then
    Exitshort at market
    Buy possize contract at market
    ElsIf ppo 0 and ppo < SignalLine Then
    If longonmarket Then
    Sell at market
    Sellshort possize contract at market

  2. robertogozzi • 12/07/2018 #

    Welcome back Juanji, why don’t you post your strategy in the ProOrder support, it’s a better place to talk about strategies and improve them.
    Thank you.

Register or


avatar avatar avatar avatar avatar avatar
Related users ' posts
Madrosat I Have not see a fully functioning automated strategy on your site?? Really have you???
juanj Hi Madrosat, why would it be on my site? I have developed it for my personal use and also to...
Madrosat ok I understood you are using prorealcode to hack the fish
jaginho Bonjour Vivien, je n'arrive pas Ă  comprendre ce screener... En tout cas merci pour tes contr...
samsampop Superb, merci!
Gaby333 not working the same thing as xtian saying?
fucode I need to calculate this in excel. Is it posible ? how ?
Nicolas Ask on an Excel website?!
ribes65 Buongiorno Illenza, Il tuo indicatore è molto efficace, ma non funziona su tutte le azion...
2 years ago
robertogozzi Sorry for my late reply. I’ll make it and open a new topic quite soon.
swapping ah ah ! je n'avais pas vue celui-ci, excellent robert ;)
robertogozzi Thank you swapping.
Didouqc Bonjour Nicolas, Merci pour cet indicateur, encore génial! Je souhaite faire une suggest...
Exalaxe Hey, i just noticed you optimized this strategy. Could i see your new version, please?
Andrea.1981 sorry i add my code but it not enter why i dont know
Andrea.1981 this is code simply stop , and you can see another version for stop / Codice principale...
David Somogyi Hi, One year trades since Alpha running. Hopefully it w...
Nicolas Thanks for the update David!
sublime06 quelle parametre utilisé vous pour obtenir ces resultat ? merci
MaoRai54 Hi, first of all Happy New Year. Well, I've inserted your indicator in DAX 1h but I cann...
Vinks_o_7 Hi Mao Happy New Year ! This is just an improved RSI where you plot a standard price momen...
Nicolas Formule de l'indicateur Momentum: Le Momentum se calcule avec une simple soustraction pour ...
Roberto1 Hi, can this code be converted for the Nanotrader Platform or for the MT4 Platform?
Nicolas This website is dedicated for PRT programming, but you can still ask for private coding with...
Nicolas Oui c'est possible, merci de formuler une requĂŞte dans le forum des indicateurs de trading.
ERICM en copiant collant : erreur de syntaxe apparaît le popup demande de définir length1, length2...
Nicolas En téléchargeant le fichier itf et import dans la plateforme, vous n'aurez pas ces problèmes.
Alex975 Grazie della dritta.. testerò il tutto.
guillermus69 is this " a= log(close/close[1])" better than a = ((close/close[1]) -1) *100 . I ...
gildaslm Hi gabri, thanks very much for your work, it helps me a lot. Have you ever tried to make the...
haseluis Hello, who can help me why the screener does not work // Der folgende Code bezieht sich auf...
Nicolas Hello, please ask your question with a new forum topic, this is not the place to ask for sup...
Lotech123 Thanks for this indicator. Working on a 3 M timeframe with the DJI, it can produce some inte...
JSTAR PRODUCTIONS Hi there, I downloaded the Indicator but the indicator does not show up on my charts. Am...
JSTAR PRODUCTIONS Hi, Worked it out. Thanks
Jean-Pierre Poulain When I buy and when I sell ?
Nicolas The featured image of the post do not deserve the indicator you are right, I attached other ...
Nicolas It is described in the post already :) The BUY/SELL signals are quite similar of what you ca...
Marcot18 Save Nicolas, non ci riesco puoi postarmelo grazie.
Sumihiko Tachibana I need help to write this script on TD Ameritrade thinkorswim (TOS). How to make it work on...
Nicolas We do not offer free assistance for TOS. However, you can send demand for private paid codin...