Little Bird Trading

Pine Script: indicator versus strategie, verschillen en wanneer je welke gebruikt

6 min leestijd · Bijgewerkt

Op TradingView lijken een indicator en een strategy in de Pine Editor bijna hetzelfde. Een indicator tekent op je chart. Een strategy simuleert trades en rapporteert wat ze zouden hebben opgeleverd. Die twee door elkaar halen is de meest voorkomende reden dat een script dat er in de historie geweldig uitziet, live tegenvalt. Deze gids behandelt de verschillen die je resultaten veranderen, plus het derde scripttype, de library.

Indicator, strategy en library: waarvoor elk dient

  • Indicator (indicator()): berekent en plot. Gebruik hem voor niveaus, signalen getekend met plotshape(), dashboards, marktvoorkeur en alerts gebouwd met alertcondition().
  • Strategy (strategy()): alles wat een indicator kan tekenen, plus gesimuleerde orders via strategy.entry, strategy.exit en strategy.close. TradingView voert die orders uit en vult de Strategy Tester met handelsstatistieken.
  • Library (library()): een set herbruikbare functies die je publiceert en daarna in andere scripts importeert. Een library wordt nooit op zichzelf aan een chart toegevoegd.

Een script declareert precies één van de drie, dus één script kan niet tegelijk een indicator en een strategy zijn. Een gangbare opzet is een library met je gedeelde logica, een indicator voor de chart en alerts en een strategy om te testen.

Het verschil in één regel

De allereerste regel van een Pine-script declareert wat voor soort het is. Een script dat opent met indicator() kan alleen berekenen en plotten: lijnen, kleuren, labels, vullingen. Het kent geen begrip van een positie, een fillprijs of winst. Een script dat opent met strategy() voegt een ordersimulatie-engine toe: het kan functies aanroepen zoals strategy.entry en strategy.exit, en TradingView voert die orders uit tegen historische bars om het rapport van de Strategy Tester te maken: nettowinst, maximale drawdown, winstpercentage, profit factor en de lijst met gesimuleerde trades.

Het onderscheid is dus: een indicator beschrijft voorwaarden; een strategy stelt wat die voorwaarden zouden hebben opgeleverd. De tweede bewering is veel zwaarder dan de eerste, want zodra je orders simuleert, erf je een stapel aannames over wanneer en tegen welke prijs die orders werden gevuld.

Waar de backtest-engine stilletjes aannames doet

De equity-curve van een strategy is maar zo betrouwbaar als de aannames over fills eronder. Vier standaardinstellingen richten de meeste schade aan:

  • Evaluatie op bar-close. Standaard evalueert de tester je logica wanneer een bar sluit. Als een voorwaarde verwijst naar de hoogste koers, de laagste koers of de close van de bar zelf, kan de historische "fill" informatie gebruiken die een live trade pas had kunnen hebben nadat de bar was afgerond.
  • Fills op de open van de volgende bar. Een marktorder die op een signaal wordt geplaatst, wordt in de simulatie gevuld tegen de open van de volgende bar. Bij een snelle opening kan die geprinte prijs meerdere ticks of punten afliggen van waar je echt zou worden gevuld.
  • Nul wrijving. Als commission en slippage in de aanroep van strategy() op nul blijven staan, is elke gesimuleerde trade gratis, terwijl elke echte trade commissie en slippage betaalt.
  • Steekproefgrootte. De tester rapporteert graag een prachtige curve die op twaalf trades is gebouwd. Twaalf winsten is ruis in het kostuum van een edge.

Een uitgewerkt voorbeeld

Stel dat een strategy +US$ 4200 laat zien over 40 trades op ES-futures met kosten op nul. Voeg een round-turn-commissie van ongeveer US$ 5 toe (commissies voor futures bij particulieren lopen sterk uiteen per broker, gebruik dus je eigen), plus één tick slippage per kant. Op ES is een tick 0.25 punten, goed voor US$ 12,50, dus één tick heen en terug is US$ 25. Dat is ruwweg US$ 30 aan wrijving per trade, ongeveer US$ 1200 over 40 trades, en dat trekt een kopcijfer van +US$ 4200 omlaag naar ~US$ 3000. En dat is nog de beleefde versie: als instappen zich opeenhopen bij volatiele openingen, valt de echte slippage breder uit dan één tick en wordt het gat groter. Niets van die wrijving verschijnt in de indicatorversie van dezelfde logica, want een indicator claimt nooit een fill. Voor meer over het scheiden van een echte edge van een gefitte, zie hoe je overfit handelssystemen herkent.

Signalen: plotshape in een indicator, orders in een strategy

Een indicator markeert een signaal met plotshape() of plotchar(), een driehoek of label op de bar waar je voorwaarde waar was. Er wordt niets gekocht, dus de indicator heeft geen handelsstatistieken. Een strategy zet dezelfde voorwaarde om in een order met strategy.entry(), en de Strategy Tester rapporteert dan nettowinst, winstpercentage, drawdown en de volledige lijst met trades. Om de nauwkeurigheid van signalen te meten, verplaats je de voorwaarde naar een strategy, voeg je realistische kosten toe en lees je de lijst met trades.

Signalen testen: op close versus intrabar

Standaard rekent een strategy eenmaal per bar, op de close, en wordt een marktorder gevuld bij de open van de volgende bar. Drie instellingen veranderen dat:

  • process_orders_on_close = true vult orders op de close van de signaalbar.
  • calc_on_every_tick = true rekent opnieuw bij elke live tick. De historie bevat alleen afgeronde bars, dus live en historische resultaten kunnen verschillen.
  • use_bar_magnifier = true gebruikt data van een lager tijdframe om te bepalen welke van de prijzen van een bar het eerst kwam als een stop en een doel allebei binnen één bar liggen.

Signalen die op de bar-close zijn bevestigd, geven de beste overeenkomst tussen backtest- en live resultaten.

Intrabar-signalen hebben nog steeds een plek. Een uitbraakstrategy die moet handelen op het moment dat de prijs een niveau kruist, kan live calc_on_every_tick gebruiken, zolang je de live versie eerst forward test op een paper-account, omdat de backtest niet kan laten zien hoe het signaal zich binnen een bar gedraagt. Voor indicatoren geldt hetzelfde onderscheid bij alerts: "Once Per Bar Close" wacht op de bevestigde bar, en "Once Per Bar" gaat af op het eerste moment dat de voorwaarde binnen de bar waar wordt, ook als de bar later de andere kant op sluit. De Pine Script FAQ behandelt de alertinstellingen uitgebreider.

Welk scripttype werkt in de Pine Screener?

De Pine Screener draait indicatoren. Om te screenen op de setup van een strategy, zet je de voorwaarde in een indicator en plot je de waarde waarop je wilt filteren.

Wat repainting echt betekent

"Repainting" wordt gegooid naar elk script dat achteraf andere waarden toont dan in realtime, maar het label wordt vaak verkeerd toegepast. De eerlijke test is één vraag: had deze beslissing met dezelfde informatie, op hetzelfde moment, live kunnen worden genomen? Een signaal dat pas op de bar-close bevestigt, vraagt je simpelweg op de close te wachten. De echt misleidende gevallen zijn signalen die op de nog vormende bar worden geplot en dan springen zodra die klaar is, of data van een hoger tijdframe die met lookahead is opgehaald. Logica op een bevestigde bar evalueren houdt je backtest en je live ervaring eerlijk ten opzichte van elkaar, of je nu een indicator of een strategy bouwt.

Hoe dit aansluit op Handelsplannen

Handelsplannen omzeilt het repaint-probleem bewust door je vaste, vooraf geplande niveaus te geven. De dagelijkse niveaus, de niveaus voor ES, SPY, NQ en QQQ, worden na de vorige slotkoers berekend en bewegen niet tijdens de sessie. Er valt niets te repainten: elk niveau staat voor 9:30 ET vast en blijft staan. MyLinedChart, dat die lijnen tekent, werkt als een indicator. Het plot de niveaus en simuleert niets, dus ze kennen geen van de aannames over fills of commissie hierboven. Als een gepubliceerd niveau het oneens is met wat je eigen strategy je vertelt, is dat meningsverschil informatie, en vaak is het antwoord wachten.

Een strategy bouwen op je eigen niveaus

De meeste strategies handelen rond prijzen die een trader al met de hand heeft getekend: support, resistance, een pivot. MyLinedChart exporteert elke lijn, elk niveau, elke notitie en elke indicator op je chart als JSON, CSV of XLSX. Geef dat bestand aan ChatGPT, Claude of je eigen code en vraag om een Pine Script-strategy die precies die prijzen handelt. Jij en je AI bepalen hoe de strategy instapt en uitstapt.

Een korte checklist voordat je een van beide scripttypes vertrouwt

  • Weet wat je vasthoudt: indicator() tekent alleen; strategy() simuleert orders en maakt het rapport van de Strategy Tester.
  • Stel bij een strategy realistische commissie en slippage in voor het instrument dat je echt handelt voordat je ook maar één winstgetal leest.
  • Bevestig de logica op gesloten bars zodat historie en live hetzelfde beslismoment delen.
  • Beoordeel resultaten op genoeg trades om ertoe te doen.
  • Houd contextuele overlays (zoals gepubliceerde niveaus) gescheiden van de uitvoeringsbevoegdheid: de chart informeert de keuze, jouw geschreven regels maken haar.

Zo gebruikt is een indicator een lens en een strategy een hypothese. Test ze allebei op echte fills voordat je ze vertrouwt.

Verder lezen

Bronnen

Alleen educatieve inhoud. Geen beleggingsadvies.

Alleen educatieve inhoud. Geen beleggingsadvies.