Technische indicator

Prijsvoorspelling met Neurale Netwerken: Hoe Werkt het?
MetaTrader4
Prijsvoorspelling met Neurale Netwerken: Hoe Werkt het?

Auteur: gpwr Versiegeschiedenis: 26/06/2009 - nieuwe indicator BPNN Predictor met Smoothing.mq4 toegevoegd, waarbij prijzen worden gesmoothed met behulp van EMA voordat voorspellingen worden gedaan. 20/08/2009 - de code voor de neuronactivatiefunctie gecorrigeerd om rekenfouten te voorkomen; BPNN.cpp en BPNN.dll bijgewerkt. 21/08/2009 - geheugen wordt aan het einde van de DLL-uitvoering gewist; BPNN.cpp en BPNN.dll bijgewerkt. Korte theorie van Neurale Netwerken: Neuraal netwerk is een aanpasbaar model dat uitgangen als functies van ingangen weergeeft. Het bestaat uit verschillende lagen: invo laag, bestaande uit invoergegevens verborgen laag, bestaande uit verwerkingsnodes genaamd neuronen uitgang laag, bestaande uit een of meerdere neuronen, waarvan de uitgangen de netwerkuitgangen zijn. Alle knooppunten van aangrenzende lagen zijn met elkaar verbonden. Deze verbindingen worden synapsen genoemd. Elke synaps heeft een toegewezen schalingscoëfficiënt, waarmee de gegevens die door de synaps worden verspreid, worden vermenigvuldigd. Deze schalingscoëfficiënten worden gewichten (w[i][j][k]) genoemd. In een Feed-Forward Neuraal Netwerk (FFNN) worden de gegevens van de ingangen naar de uitgangen verspreid. Hier is een voorbeeld van een FFNN met één invoerlaag, één uitganglaag en twee verborgen lagen: De topologie van een FFNN wordt vaak als volgt afgekort: <aantal ingangen> - <aantal neuronen in de eerste verborgen laag> - <aantal neuronen in de tweede verborgen laag> -...- <aantal uitgangen>. Het bovenstaande netwerk kan worden aangeduid als een 4-3-3-1 netwerk. De gegevens worden door neuronen in twee stappen verwerkt, zoals weergegeven binnen de cirkel met een somteken en een stapteken: Alle ingangen worden vermenigvuldigd met de bijbehorende gewichten en opgeteld. De resulterende sommen worden verwerkt door de activatiefunctie van de neuron, waarvan de uitvoer de uitvoer van de neuron is. Het is de activatiefunctie van de neuron die de niet-lineariteit aan het neurale netwerkmodel geeft. Zonder deze functie zouden er geen verborgen lagen nodig zijn, en zou het neurale netwerk een lineair autoregressief (AR) model worden. Bijgevoegde bibliotheekbestanden voor NN-functies maken de selectie mogelijk tussen drie activatiefuncties: sigmoid sigm(x)=1/(1+exp(-x)) (#0) hyperbolische tangens tanh(x)=(1-exp(-2x))/(1+exp(-2x)) (#1) rationele functie x/(1+|x|) (#2) De activatiedrempel van deze functies is x=0. Deze drempel kan langs de x-as worden verplaatst dankzij een extra invoer van elke neuron, genaamd de bias input, die ook een gewicht toegewezen krijgt. Het aantal ingangen, uitgangen, verborgen lagen, neuronen in deze lagen en de waarden van de synapsgewichten beschrijven volledig een FFNN, dat wil zeggen, het niet-lineaire model dat het creëert. Om gewichten te vinden, moet het netwerk worden getraind. Tijdens supervised training worden verschillende sets van eerdere ingangen en de bijbehorende verwachte uitgangen aan het netwerk gevoed. De gewichten worden geoptimaliseerd om de kleinste fout tussen de netwerkuitgangen en de verwachte uitgangen te bereiken. De eenvoudigste methode voor gewichtsoptimalisatie is de back-propagation van fouten, wat een gradient descent-methode is. De bijgevoegde trainingsfunctie Train() gebruikt een variant van deze methode, genaamd Improved Resilient back-Propagation Plus (iRProp+). Deze methode wordt hier beschreven: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.1332 Het belangrijkste nadeel van gradient-gebaseerde optimalisatiemethoden is dat ze vaak een lokaal minimum vinden. Voor chaotische reeksen zoals een prijsvloer heeft het trainingsfoutoppervlak een zeer complexe vorm met veel lokale minima. Voor dergelijke reeksen is een genetisch algoritme een voorkeurs trainingsmethode. Bijgevoegde bestanden: BPNN.dll - bibliotheekbestand BPNN.zip - archief van alle bestanden die nodig zijn om BPNN.dll in C++ te compileren BPNN Predictor.mq4 - indicator die toekomstige open prijzen voorspelt BPNN Predictor met Smoothing.mq4 - indicator die gesmoothde open prijzen voorspelt Bestand BPNN.cpp heeft twee functies: Train() en Test(). Train() wordt gebruikt om het netwerk te trainen op basis van aangeleverde eerdere input- en verwachte outputwaarden. Test() wordt gebruikt om de netwerkuitgangen te berekenen met behulp van geoptimaliseerde gewichten, gevonden door Train(). Hier is de lijst van invoer (groen) en uitvoer (blauw) parameters van Train(): double inpTrain[] - Input trainingsgegevens (1D-array met 2D-gegevens, oudste eerst) double outTarget[] - Output doelgegevens voor training (2D-gegevens als 1D-array, oudste eerst) double outTrain[] - Output 1D-array om netwerkuitgangen van training vast te houden int ntr - # van trainingssets int UEW - Gebruik Ext. Gewichten voor initialisatie (1=gebruik extInitWt, 0=gebruik rnd) double extInitWt[] - Input 1D-array om 3D-array van externe initiële gewichten vast te houden double trainedWt[] - Output 1D-array om 3D-array van getrainde gewichten vast te houden int numLayers - # van lagen, inclusief input, verborgen en output int lSz[] - # van neuronen in lagen. lSz[0] is # van netinvoeren int AFT - Type van neuronactivatiefunctie (0:sigm, 1:tanh, 2:x/(1+x)) int OAF - 1 schakelt activatiefunctie voor uitganglaag in; 0 schakelt uit int nep - Max # van trainings-epochs double maxMSE - Max MSE; training stopt zodra maxMSE is bereikt. Hier is de lijst van invoer (groen) en uitvoer (blauw) parameters van Test(): double inpTest[] - Input testgegevens (2D-gegevens als 1D-array, oudste eerst) double outTest[] - Output 1D-array om netwerkuitgangen van training vast te houden (oudste eerst) int ntt - # van testsets double extInitWt[] - Input 1D-array om 3D-array van externe initiële gewichten vast te houden int numLayers - # van lagen, inclusief input, verborgen en output int lSz[] - # van neuronen in lagen. lSz[0] is # van netinvoeren int AFT - Type van neuronactivatiefunctie (0:sigm, 1:tanh, 2:x/(1+x)) int OAF - 1 schakelt activatiefunctie voor uitganglaag in; 0 schakelt uit. Of de activatiefunctie in de uitganglaag al dan niet moet worden gebruikt (waarde van OAF-parameter) hangt af van de aard van de uitgangen. Als de uitgangen binair zijn, wat vaak het geval is bij classificatieproblemen, moet de activatiefunctie in de uitganglaag worden gebruikt (OAF=1). Let op dat activatiefunctie #0 (sigmoid) 0 en 1 verzadigde niveaus heeft, terwijl activatiefunctie #1 en #2 -1 en 1 niveaus hebben. Als de netwerkuitgang een prijsvoorspelling is, is er geen activatiefunctie nodig in de uitganglaag (OAF=0). Voorbeelden van het gebruik van de NN-bibliotheek: BPNN Predictor.mq4 - voorspelt toekomstige open prijzen. De ingangen van het netwerk zijn relatieve prijsveranderingen: x[i]=Open[test_bar]/Open[test_bar+delay[i]]-1.0 waarbij delay[i] wordt berekend als een Fibonacci-getal (1,2,3,5,8,13,21..). De uitvoer van het netwerk is de voorspelde relatieve verandering van de volgende prijs. De activatiefunctie is uitgeschakeld in de uitganglaag (OAF=0). Indicatorinvoeren: extern int lastBar - Laatste bar in de historische gegevens extern int futBars - # van toekomstige bars om te voorspellen extern int numLayers - # van lagen, inclusief input, verborgen & output (2..6) extern int numInputs - # van ingangen extern int numNeurons1 - # van neuronen in de eerste verborgen of uitganglaag extern int numNeurons2 - # van neuronen in de tweede verborgen of uitganglaag extern int numNeurons3 - # van neuronen in de derde verborgen of uitganglaag extern int numNeurons4 - # van neuronen in de vierde verborgen of uitganglaag extern int numNeurons5 - # van neuronen in de vijfde verborgen of uitganglaag extern int ntr - # van trainingssets extern int nep - Max # van epochs extern int maxMSEpwr - stelt maxMSE=10^maxMSEpwr; training stopt < maxMSE extern int AFT - Type van activatiefunctie (0:sigm, 1:tanh, 2:x/(1+x)) De indicator plot drie curves op de grafiek: rode kleur - voorspellingen van toekomstige prijzen zwarte kleur - eerdere open prijzen, gebruikt als verwachte uitgangen voor het netwerk blauwe kleur - netwerkuitgangen voor trainingsinvoeren BPNN Predictor.mq4 - voorspelt toekomstige gesmoothde open prijzen. Het gebruikt EMA-smoothing met periode smoothPer. Instellen: Kopieer de bijgevoegde BPNN.DLL naar C:\Program Files\MetaTrader 4\experts\libraries In MetaTrader: Hulpmiddelen - Opties - Expert Advisors - Sta DLL-imports toe Je kunt ook je eigen DLL-bestand compileren met behulp van de bronscodes in BPNN.zip. Aanbevelingen: Een netwerk met drie lagen (numLayers=3: één input, één verborgen en één output) is voldoende voor de meeste gevallen. Volgens de Cybenko Theorema (1989) kan een netwerk met één verborgen laag elke continue, multivariate functie tot elke gewenste nauwkeurigheid approximateren; een netwerk met twee verborgen lagen kan elke discontinuïteit, multivariate functie approximateren. Het optimale aantal neuronen in de verborgen laag kan worden gevonden door middel van trial-and-error. De volgende "regels van duim" kunnen in de literatuur worden gevonden: # van verborgen neuronen = (# van ingangen + # van uitgangen)/2, of SQRT(# van ingangen * # van uitgangen). Houd de trainingsfout bij, die door de indicator in het expertsvenster van MetaTrader wordt gerapporteerd. Voor generalisatie moet het aantal trainingssets (ntr) 2-5 keer het totale aantal gewichten in het netwerk zijn. Bijvoorbeeld, standaard gebruikt BPNN Predictor.mq4 een 12-5-1 netwerk. Het totale aantal gewichten is (12+1)*5+6=71. Daarom moet het aantal trainingssets (ntr) minstens 142 zijn. Het concept van generalisatie en memorization (over-fitting) wordt hieronder uitgelegd. De inputgegevens voor het netwerk moeten worden getransformeerd naar stationair. Forex-prijzen zijn niet stationair. Het is ook aan te raden om de ingangen te normaliseren naar een bereik van -1..+1. De grafiek hieronder toont een lineaire functie y=b*x (x-input, y-output) waarvan de uitgangen zijn vervormd door ruis. Deze toegevoegde ruis zorgt ervoor dat de gemeten uitgangen (zwarte stippen) van een rechte lijn afwijken. Functie y=f(x) kan worden gemodelleerd door een feedforward-neuraal netwerk. Het netwerk met een groot aantal gewichten kan worden aangepast aan de gemeten gegevens met nul fout. Het gedrag ervan wordt weergegeven als de rode curve die door alle zwarte stippen gaat. Deze rode curve heeft echter niets te maken met de oorspronkelijke lineaire functie y=b*x (groen). Wanneer dit over-gepast netwerk wordt gebruikt om toekomstige waarden van functie y(x) te voorspellen, zal dit leiden tot grote fouten door de willekeurigheid van de toegevoegde ruis. In ruil voor het delen van deze codes, heeft de auteur een kleine gunst te vragen. Als je een winstgevende handelssysteem hebt kunnen maken op basis van deze codes, deel dan je idee met mij door een e-mail rechtstreeks naar vlad1004@yahoo.com te sturen. Veel succes!

2009.06.26
MTF Relative Strength Index: Een Diepgaande Uitleg voor Traders
MetaTrader4
MTF Relative Strength Index: Een Diepgaande Uitleg voor Traders

De MTF Relative Strength Index (RSI) is een populaire indicator in MetaTrader, gebaseerd op de bekende RSI. De Relative Strength Index is een momentumoscillator voor technische analyse die de snelheid en omvang van prijsbewegingen meet door de stijgende en dalende slotkoersen met elkaar te vergelijken. Deze indicator werd ontwikkeld door J. Welles Wilder en voor het eerst gepubliceerd in het Commodities magazine in juni 1978. In MetaTrader hebben we de Relative Strength Index al als standaard technische indicator beschikbaar. Echter, deze kan slechts voor de huidige tijdseenheid gebruikt worden. Soms is het wenselijk om de RSI voor hogere tijdseenheden te bekijken. De MTF Relative Strength Index die we hier bespreken, heeft een extra parameter - TimeFrame. Hiermee kun je een hogere tijdseenheid instellen waaruit de RSI zijn waarden berekent. Omdat de waarden zijn afgeleid van candles, zul je bij het gebruik van hogere tijdseenheden een meer ruwe lijn van de indicator opmerken. Hier zijn de instellingen voor de MTF Relative Strength Index: TimeFrame De standaardwaarde is 0 - dit betekent de huidige tijdseenheid. Voor andere tijdseenheden: 1=M1, 5=M5, 15=M15, 30=M30, 60=H1, 240=H4, 1440=D1, 10080=W1, 43200=MN1. RSIPeriod De standaardwaarde is 14. Dit is het aantal perioden dat gebruikt wordt voor de berekening. Applied_price De standaardwaarde is 0 - dit betekent dat de slotprijs wordt gebruikt voor de berekeningen. Voor andere prijstypen: 0-CLOSE, 1-OPEN, 2-HIGH, 3-LOW, 4-MEDIAN, 5-TYPICAL, 6-WEIGHTED. Shift De standaardwaarde is 0. Deze parameter verschuift de gehele indicator met het aantal Shift bars naar rechts op de grafiek. Voorbeeld: Screenshot van de MTF Relative Strength Index

2009.05.27
MTF MACD: De Kracht van Meerdere Tijdframes in Trading
MetaTrader4
MTF MACD: De Kracht van Meerdere Tijdframes in Trading

MTF MACD is een MetaTrader indicator die is gebaseerd op de bekende MACD. De Moving Average Convergence / Divergence is een technische analyse-indicator die in de jaren '60 is ontwikkeld door Gerald Appel. Deze indicator toont het verschil tussen een snelle en langzame exponentiële voortschrijdende gemiddelde (EMA) van slotkoersen. Daarnaast heeft het een signaallijn, die een eenvoudig voortschrijdend gemiddelde (SMA) is van de hoofdwaarde van de indicator. MACD is een trendvolgende indicator en is ontworpen om trendveranderingen te identificeren. Het wordt over het algemeen niet aanbevolen om deze indicator te gebruiken in een zijwaartse markt. In MetaTrader is de MACD al opgenomen als standaard technische indicator. Echter, deze kan alleen gebruikt worden voor de huidige tijdsperiode. Wanneer we op zoek zijn naar een trend, is het zeer wenselijk om de MACD van hogere tijdsframes te kunnen bekijken. De MTF MACD die hier wordt gepresenteerd, heeft een extra parameter - TimeFrame. Hiermee kun je een hoger tijdsframe instellen waarvan de MACD zijn waarden berekent. Omdat de waarden zijn afgeleid van de candles, zul je bij het gebruik van hogere tijdsframes de ruwe vorm van de indicatorlijnen opmerken. Instellingen voor MTF MACD: TimeFrame Standaardwaarde is 0 - dit betekent de huidige tijdsperiode. Voor andere tijdsperioden: 1=M1, 5=M5, 15=M15, 30=M30, 60=H1, 240=H4, 1440=D1, 10080=W1, 43200=MN1. FastEMA Standaardwaarde is 12. Dit is het snelle exponentiële voortschrijdend gemiddelde. SlowEMA Standaardwaarde is 26. Dit is het langzame exponentiële voortschrijdend gemiddelde. Signal Standaardwaarde is 9. Dit is de signaallijn en het is een eenvoudig voortschrijdend gemiddelde. Applied_price Standaardwaarde is 0 - dit betekent dat de slotprijs wordt gebruikt voor MA-berekeningen. Voor andere prijstypes: 0-CLOSE, 1-OPEN, 2-HIGH, 3-LOW, 4-MEDIAN, 5-TYPICAL, 6-WEIGHTED. Shift Standaardwaarde is 0. Deze parameter verschuift de hele indicator met het aantal bars dat is ingesteld in Shift naar rechts op de grafiek. Voorbeeld: Screenshot van MTF MACD

2009.05.27
Hoe je dagelijkse percentagewinsten en -verliezen kunt bijhouden in de handel
MetaTrader4
Hoe je dagelijkse percentagewinsten en -verliezen kunt bijhouden in de handel

Als trader wil je natuurlijk altijd op de hoogte zijn van je winsten en verliezen. Een veelvoorkomend probleem is het berekenen van de actuele dagelijkse procentuele winst of verlies op dit moment. Gelukkig zijn er handige oplossingen om deze informatie direct in je handelsplatform weer te geven. Dit helpt je te bepalen of een bepaalde munt overbought of oversold is, aangezien elke valutapaar zijn eigen dagelijkse, wekelijkse en maandelijkse prijsrange heeft. De afbeelding hierboven toont een indicator die de huidige dagelijkse, wekelijkse en maandelijkse percentagewinsten weergeeft. Je kunt de kleuren van deze indicator aanpassen in de parameters. In dit voorbeeld betekent rood een negatieve procentuele winst en blauw een positieve procentuele winst. Ook kun je de lettergrootte aanpassen via de parameter FontSize. Ik heb een functie toegevoegd die het dagelijkse percentage-niveau omhoog of omlaag kan weergeven met stappen van 0,5%, 1,0%, 1,5% en 2,0%. Deze optie kan je activeren via de instellingen van de indicator met de optie 'ShowPriceLabel', die standaard is uitgeschakeld. Wanneer je deze optie activeert, ziet de indicator er als volgt uit: Door deze functies te gebruiken, krijg je een veel beter inzicht in de marktbewegingen en kun je betere handelsbeslissingen maken. Het is altijd handig om de trends in de gaten te houden, zodat je optimaal kunt profiteren van de kansen die zich voordoen.

2009.05.19
Doji Reader Indicator: Jouw Gids voor Doji Candles
MetaTrader4
Doji Reader Indicator: Jouw Gids voor Doji Candles

Introductie van de Doji Reader Indicator Welkom bij deze blogpost waarin we de Doji Reader Indicator onder de loep nemen! Dit handige hulpmiddel helpt jou als trader om doji-candles te herkennen en optimaal gebruik te maken van deze belangrijke signalen op de markt. Wat kan de Doji Reader Indicator? 1. Herkenning van doji: a. Stel de minimale lengte van de bovenste staart in b. Stel de minimale lengte van de onderste staart in 2. Herkenning van gravestone doji: a. Stel de minimale lengte van de bovenste staart in b. Stel de maximale lengte van de onderste staart in 3. Herkenning van dragonfly doji: a. Stel de maximale lengte van de bovenste staart in b. Stel de minimale lengte van de onderste staart in 4. Alarmfunctie: Je kunt een alarm instellen dat afgaat wanneer er een nieuwe candle verschijnt, als je dat wenst. Instellingen en Aanpassingen Hier zijn enkele instellingen die je kunt aanpassen voor een optimale ervaring: AnAlert: Zet op 'waar' als je een melding wilt ontvangen wanneer er een nieuwe doji verschijnt. ShowCandleBox: Zet op 'waar' als je wilt dat de doji-candle in een rechthoek wordt weergegeven. BoxColor: Kies je favoriete kleur voor de rechthoek. ShowStar: Zet op 'waar' om een ster boven de candle weer te geven. StarColor: Kies je favoriete kleur voor de ster. StarWidth: Stel de breedte van de ster in. ShowText: Zet op 'waar' om de naam van de doji weer te geven. FontColor: Kies de kleur voor de tekst. FontSize: Stel de lettergrootte in. VerticalText: Als 'waar', wordt de tekst verticaal weergegeven. MyBrokerHas5Digits: Zet op 'waar' als je een broker met 5 decimalen gebruikt. FindRegularDoji: Zet op 'waar' als de indicator ook reguliere doji's moet zoeken. MinLengthOfUpTail: Stel de minimale lengte van de bovenste staart in. MinLengthOfLoTail: Stel de minimale lengte van de onderste staart in. MaxLengthOfBody: Stel de maximale lengte van het lichaam in. FindDragonflyDoji: Zet op 'waar' als je dragonfly doji's wilt vinden. MaxLengthOfUpTail1: Stel de maximale lengte van de bovenste staart in. MinLengthOfLoTail1: Stel de minimale lengte van de onderste staart in. MaxLengthOfBody1: Stel de maximale lengte van het lichaam in. FindGravestoneDoji: Zet op 'waar' als je gravestone doji's wilt vinden. MinLengthOfUpTail2: Stel de minimale lengte van de bovenste staart in. MaxLengthOfLoTail2: Stel de maximale lengte van de onderste staart in. MaxLengthOfBody2: Stel de maximale lengte van het lichaam in. Conclusie Met de Doji Reader Indicator heb je een krachtig hulpmiddel in handen om jouw trading strategieën te verbeteren. Door de verschillende instellingen aan te passen, kun je de indicator volledig afstemmen op jouw persoonlijke voorkeuren. Succes met traden! Met vriendelijke groet,heartnet mqlprogramming.blogspot.com

2009.05.19
Eerste Vorige 347 348 349 350 351 352 353 354 355 356 357 Volgende Laatste