Technische indicator

EquiPeak Drawdown Tracker: Jouw Onmisbare Indicator voor MetaTrader 5
MetaTrader5
EquiPeak Drawdown Tracker: Jouw Onmisbare Indicator voor MetaTrader 5

Wat is het precies? Visuele referentie van de prestaties van je EAs: Voer handmatig de bekende of verwachte Historische Maximale Drawdown van je strategie in (bijvoorbeeld, uit backtesting of eerdere resultaten). Zo heb je altijd een duidelijke referentie om te zien of je EA binnen de normale parameters presteert of dat er iets onverwachts aan de hand is. Continue monitoring van het huidige risico: Je kunt het ook gebruiken om de huidige drawdown in real-time te volgen en te checken of je kritieke niveaus overschrijdt die onmiddellijke aandacht vereisen. Slimme en gedetailleerde meldingen: De indicator stuurt pushmeldingen (naar je mobiele telefoon via de MetaTrader-app) wanneer een nieuw drawdownrecord is ingesteld, of periodiek (afhankelijk van je instellingen), zodat je op de hoogte blijft zonder overspoeld te worden door onnodige berichten. Automatische logging: Hiermee kun je de drawdown continu loggen naar een extern bestand (CSV of TXT) voor latere analyse. Voor wie is het bedoeld? Traders die werken met automatische of semi-automatische systemen en snel willen weten of hun EA presteert binnen de verwachte maximale drawdown. Gebruikers die visueel het gedrag van hun strategieën willen controleren onder reële omstandigheden versus verwachtingen op basis van eerdere tests. Elke trader die effectief hun risico wil beheren, en direct wil weten wanneer hun trading de acceptabele limieten overschrijdt. Gedetailleerde Configuratiehandleiding (Invoeren) Dit zijn alle aanpasbare parameters van de indicator: Magics om te monitoren (-1 volgt alles) Geeft de magic nummers op van de posities die je wilt volgen. Gebruik -1 om ze allemaal te monitoren. Initiële Max DD (%) Hier voer je de bekende historische maximale drawdown van je EA in (bijvoorbeeld, het hoogste resultaat dat is behaald in een lange backtest). Dit zal dienen als visuele referentie. Vernieuwingsinterval (seconden) Frequentie van de berekeningen updates. MaxDD update modus Bepaalt hoe de all-time high wordt bijgewerkt: UPDATE_MAX_DD_IF_BIGGER: Automatisch bijgewerkt als de huidige waarde de ingevoerde geschiedenis overschrijdt. NO_UPDATE_MAX_DD: Nooit de handmatig ingevoerde historische waarde bijwerken, maar elke 60 minuten meldingen sturen over de huidige status. Pushmeldingen versturen? Zet pushmeldingen aan of uit voor je mobiel. Vaste of piekreferentie? Kies hoe je de balansreferentie wilt definiëren: REF_FIXED_BALANCE: Vaste balans, handmatig ingevoerd. REF_PEAK_BALANCE: Altijd de maximale balans gebruiken die is bereikt (automatisch opgeslagen). Vaste balans (0 => huidig) Initiële vaste balans. Als je 0 gebruikt, wordt de huidige balans genomen bij het laden van de indicator. Kleur voor huidige DD tekst Kleur van de huidige drawdown tekst. Kleur voor max DD tekst Kleur van de historische drawdown tekst. Lettergrootte (huidige DD) Lettergrootte van de huidige drawdown. Lettergrootte (max DD) Lettergrootte van de historische drawdown. Labels achter de grafiek? Plaats de teksten achter de grafiek. Label X (pixels) Horizontale afstand vanaf de linkerrand. Label Y (pixels) Verticale afstand vanaf de bovenrand. Verticale spatiëring Verticale ruimte tussen teksten. Logs in Journal afdrukken? Zet gedetailleerde berichten in het Journal aan. Bestandregistratie inschakelen Log automatisch de huidige drawdown naar een extern bestand. Bestandsextensie (CSV of TXT) Kies het formaat van het gegenereerde bestand. Automatische registratie in bestand Drawdownwaarden worden automatisch gelogd samen met de datum en tijd in CSV of TXT-formaat, die te vinden zijn in de gemeenschappelijke map van MT5 ( MetaTrader 5 Terminal/Common/Files/ ). Dit is ideaal voor latere analyse van je resultaten. Belangrijke aanbevelingen om het meeste eruit te halen Voer altijd de verwachte Historische Maximale Drawdown in (resultaat van backtesting, eerdere prestaties, enz.) in het invoerveld "Initiële Max DD (%)". Dit stelt je in staat om snel te beoordelen of je EA een normale periode doormaakt of dat er aanpassingen nodig zijn. Plaats de indicator op een speciale grafiek, die alle magic nummers monitort, of op elke specifieke grafiek als je liever onafhankelijke data hebt. Pas zorgvuldig de vernieuwingsfrequentie, kleuren, positie en grootte van de tekst aan voor optimale weergave op basis van jouw voorkeuren. Om pushmeldingen op je mobiel te ontvangen Open MetaTrader op mobiel en kopieer je MetaQuotes ID ( Instellingen > Berichten ). Ga in MetaTrader 5 desktop naar Hulpmiddelen > Opties > Meldingen. Vink   Pushmeldingen inschakelen   aan en plak je MetaQuotes ID.

2025.04.14
Kuskus Starlight: De Must-Have Indicator voor MetaTrader 5
MetaTrader5
Kuskus Starlight: De Must-Have Indicator voor MetaTrader 5

Indicator Naam: Kuskus Starlight Beschrijving:Kuskus Starlight is een technische indicator die fungeert als een oscillator. Hij maakt gebruik van een Fisher-prijs transformatie om traders te helpen bij het identificeren van mogelijke markttrends en omkeringen. De indicator is genormaliseerd over een specifiek bereik van periodes en heeft instelbare gladheidsparameters om de responsiviteit aan te passen. Deze indicator wordt vooral gewaardeerd als bevestigingstool binnen handelsystemen en helpt bij het valideren van potentiële handelsignalen. Achtergrond:Ik ontdekte de Kuskus Starlight indicator via Stonehill Forex en het No Nonsense Forex (NNFX) YouTube-kanaal. Beide platforms benadrukken de waarde ervan als bevestigingsindicator binnen hun handelsystemen. Volgens Stonehill Forex dateert de indicator uit 2007, terwijl NNFX verwijst naar de release in 2017. Voor een gedetailleerd overzicht en toepassing van de Kuskus Starlight indicator, kun je de volgende bronnen raadplegen: Artikel van Stonehill Forex: Kuskus Starlight als Bevestigingsindicator NNFX YouTube-video: Kuskus Starlight Indicator Waarom Ik Het Heb Gecodeerd:Als gebruiker van MetaTrader 5 (MT5) kon ik geen versie van de Kuskus Starlight indicator vinden die compatibel was met MT5. Ik zag de waarde in voor traders in de MT5 omgeving en heb het initiatief genomen om het zelf te coderen, zodat de functionaliteit en integriteit overeenkomen met het originele algoritme. Originele MT4 Code en Algoritme:De originele versie van deze indicator, ontworpen voor MetaTrader 4 (MT4), is gepost door Scriptor en kan hier worden gevonden: Kuskus Starlight - MQL4 Code Basis. Mijn aanpassing voor MT5 is gebaseerd op deze code en behoudt de kernprincipes, terwijl het toegankelijk is voor de MT5 gemeenschap. Ik hoop dat deze MT5 versie van Kuskus Starlight een waardevolle aanvulling op je trading toolkit zal zijn! Indicator Instellingen: Type Teken Opties Teken Type Opties: Lijn Teken Type Opties: Histogram Teken Type Opties: StaryStaryNight Pijl Type Opties: Veel verschillende pijltjes om uit te kiezen

2025.04.14
Chande Kroll Stop: De Essentiële Indicator voor Stop Loss Instellingen
MetaTrader5
Chande Kroll Stop: De Essentiële Indicator voor Stop Loss Instellingen

De Chande Kroll Stop is een handige indicator voor het bepalen van je stop loss niveaus. Dit hulpmiddel toont twee lijnen op de prijskaart. De rood lijn geeft het stopniveau aan voor shortposities, terwijl de groene lijn het stopniveau voor longposities aanduidt. De lijn voor longposities (groen) laat zien op welk niveau je een stop loss moet instellen voor longposities. Als de waarde van het actief begint te dalen en deze lijn bereikt, kan dit een signaal zijn om je aankopen te sluiten. De lijn voor shortposities (rood) daarentegen geeft aan op welk niveau shortposities gesloten moeten worden. Wanneer de prijs van een actief begint te stijgen en deze lijn aanraakt, kan dit een signaal zijn om je verkopen af te ronden. De Chande Kroll Stop is gebaseerd op de true range en functioneert daardoor onafhankelijk van de volatiliteit van het instrument. Deze indicator werd voor het eerst besproken en geïmplementeerd in het boek The New Technical Trader, geschreven door Tushar Chande en Stanley Kroll. Ontworpen als een trendvolgende indicator, laat de Chande Kroll Stop je stopniveaus zien door de gemiddelde true range van de markttrend te berekenen, rekening houdend met de huidige marktschommelingen. De berekening van de indicator is gebaseerd op de maximale en minimale prijswaarden over een bepaalde periode, samen met de standaarddeviatie (ATR). Deze gegevens helpen de indicator om de markt te 'voelen' en zijn waarden aan te passen aan de huidige marktsituatie. Marktvolatiliteit speelt een cruciale rol in de berekening van de indicator. Bij hoge volatiliteit zullen de Chande Kroll Stop-lijnen verder van de huidige prijs liggen, wat de belegger meer ruimte geeft voor marktfluctuaties. Bij lage volatiliteit daarentegen, zullen de lijnen dichter bij de prijs liggen, waardoor je sneller kunt reageren op veranderingen.

2025.04.10
Uniformiteitsfactor Indicator voor MetaTrader 5: Een Essentiële Tool voor Traders
MetaTrader5
Uniformiteitsfactor Indicator voor MetaTrader 5: Een Essentiële Tool voor Traders

De uniformiteitsfactor indicator is een eenvoudig analoog (geen signaal, eenmalig berekend) hulpmiddel dat je in staat stelt om de hypothese te testen dat prijs tijdreeksen een 'random walk' vertegenwoordigen, specifiek een Gaussiaanse 'random walk'. Dit kan helpen bij het construeren van een parametrische transformatie van prijsveranderingen in gelijkmatig verdeelde, stabielere en voorspelbaardere tijdreeksen, vooral wat betreft volatiliteit. Zoals je misschien weet, wordt de afstand die een 'random walk' variabele naar verwachting zal afleggen na N stappen geschat door de standaarddeviatie te vermenigvuldigen met de vierkantswortel van N, oftewel N^0.5. Deze indicator berekent statistieken van de 'gemiddelde' prijsverandering (per kaars) voor vooraf gedefinieerde subgroepen van kaarsen. Het 'gemiddelde' wordt uitgevoerd over de afstand (aantal kaarsen tot een gegeven N) tot de macht van F — een factor die van 0,1 tot 1 loopt met een stap van 0,1. Alle beschikbare kaarsen op de huidige grafiek worden gebruikt voor het verzamelen van statistieken in schuivende vensters van maximaal N kaarsen. Vervolgens vindt de indicator de meest 'regelmatige' uniforme verdeling van de statistieken onder verschillende F's en toont een histogram voor deze factor (beschouwd als optimaal), meestal 0,5 of 0,6. Elke kolom van het histogram vertegenwoordigt de 'gemiddelde' delta van punten per kaars voor de overeenkomstige handelsduur (aantal kaarsen), waarbij het 'gemiddelde' wordt berekend door N^F (wanneer F=1 krijg je standaard gemiddelden). De indicator kan verschillende methoden gebruiken voor automatische detectie van de 'regelmaat' (vlakheid) van de statistische curve: minimum van variantie; minimum van het verschil tussen de drie M's (Gemiddelde, Mediaan, Modus), als kwadratische fout; minimum van de Gini-coëfficiënt; Het kennen van de optimale factor kan nuttig zijn voor: normalisatie van invoergegevens (prijsveranderingen) voor neurale netwerken en andere algoritmen voor machine learning; schatting van het voldoende aantal kaarsen voor het monster in een enkele invoervector voor analyse in volatiliteit handelsystemen; detectie van symbolen en/of tijdframes met anomalieën (niet-standaard F of singulariteit in de distributiecurve); Invoer Periode — maximale afstand in kaarsen (N) om prijsbereikstatistieken te verzamelen; standaard ingesteld op 200; Factor — exponent voor 'gemiddeld' over afstanden; standaard is 0 - betekent autodetectie; je kunt een aangepaste waarde tussen 0,0 en 1,0 invoeren voor schatting, bijvoorbeeld 0,525; Methode — een van de methoden voor schatting van uniformiteit: variantie, triple_M, Gini; MaxBars — een limiet van kaarsen om statistieken op te berekenen; standaard is 0 - betekent alle beschikbare kaarsen; NB: als je een onbeperkt aantal of honderden duizenden kaarsen op de grafiek gebruikt, kan de berekening enige tijd duren — als dit een probleem is, overweeg dan het aantal kaarsen te beperken tot tienduizenden. Uitvoer De indicator toont een blauwe histogram van de gemiddelde prijsverandering per kaars voor elke afstand in het bereik van afstanden (1..Periode) en voor de geselecteerde uniformiteitsfactor. Daarnaast wordt een continu toenemend aantal kaarsen (afstand) gepresenteerd als het tweede histogram (oranje), slechts ter referentie. Een complete tabel van geteste factoren en bijbehorende statistieken van de huidige tijdreeks wordt in de log afgedrukt. Screenshots De volgende screenshots tonen de indicator op 3 tijdframes: D1, H1, M1. Elke grafiek bevat 2 instanties van de indicator: de bovenste is geconfigureerd voor F autodetectie door middel van Gini, en de gevonden waarde (varieert tussen 0.4 en 0.5) wordt weergegeven in de titel, gemarkeerd met een sterretje; de onderste is geconfigureerd voor vooraf gedefinieerde F=0.6; 2 indicators Uniformity Factor on XAGUSD,D1 2 indicators Uniformity Factor on XAGUSD,H1 2 indicators Uniformity Factor on XAGUSD,M1

2025.04.07
PSAR Zigzag - Een Non-Lagging Indicator voor MetaTrader 5
MetaTrader5
PSAR Zigzag - Een Non-Lagging Indicator voor MetaTrader 5

Wat is de PSAR Zigzag? Deze indicator wijkt af van de traditionele zigzag die je wellicht al kent. De klassieke zigzag heeft een ander doel: hij benadrukt vooral eerdere marktbewegingen en heeft een vertraging door het benodigde aantal bars af te wachten voordat de volgende beweging wordt bevestigd. Dit gebeurt op basis van prijsactie. Een vertraagde en repainting indicator is niet bedoeld om real-time signalen te detecteren. De zigzagtekening wordt minder vaak gebruikt in trendvolgende indicatoren, maar is nuttig om historische pivotpunten in een markt te analyseren en toekomstige prijsbewegingen te voorspellen. Wat maakt deze zigzag uniek? Deze zigzag is totaal anders. Het is een dynamische, trend-gebaseerde zigzag zonder vertraging tot aan de huidige bar. Ik baseer het op de SAR-trend, wat een trendvolgend algoritme is zonder lag. Er zijn in het verleden trendvolgende zigzags ontwikkeld, waaronder eentje gebaseerd op de PSAR, maar deze waren vertraagd en produceerden ongeldige benen. Waarom zou je een vertraagde zigzag hebben die is gebaseerd op een non-lagging trendvolgend algoritme? Dat leek me niet logisch. Daarom heb ik deze indicator ontwikkeld, omdat ik denk dat we een zero lag zigzagtekening nodig hebben. Hoe werkt het? Een backstep wordt gebruikt om de benen geldig te houden. Bij het zoeken naar een hoog punt, vindt het de hoogste high van het aantal lookback bars dat gedefinieerd is in de backstep-invoer, en zoekt het de laagste low bij het zoeken naar een laag punt op dezelfde manier. Dit betekent dat het einde van het segment soms zal schommelen bij de high of low, of bij de meest recente steun of weerstand. De PSAR staat bekend om zijn moeilijkheden in zijwaartse markten, wat een tekortkoming is. Anders is het echter een best degelijke trendvolgende indicator. Deze zigzagstructuur is het meest relevante deel van de code en is ontworpen om schoon, efficiënt en onderhoudbaar te zijn. Ik hoop dat je het werk en de experimenten waardeert. Nieuwste versies: v1: De swing verbindt zich met de candle high of low, of de steun en weerstand gevonden met de backstep. v2: Verbindt strikt de benen met candle high en low op het swingpunt (zoveel als mogelijk). v3: Bevat forward step logica voor ultieme controle over de zigzag.

2025.04.01
T3 Moving Average: Een Geavanceerde Indicator voor MetaTrader 5
MetaTrader5
T3 Moving Average: Een Geavanceerde Indicator voor MetaTrader 5

De T3 Indicator is een geavanceerde voortschrijdende gemiddelde ontwikkeld door Tim Tillson. Deze indicator vermindert vertraging terwijl hij een vloeiende curve behoudt die marktgeluid filtert. In tegenstelling tot traditionele voortschrijdende gemiddelden combineert de T3 meerdere exponentiële voortschrijdende gemiddelden (EMA's) om een superieure responsiviteit op echte prijsbewegingen te bereiken. Berekeningsmethode De T3 wordt berekend met een cascade van zes exponentiële voortschrijdende gemiddelden, met een wegingsysteem gebaseerd op de volumefactor. De formule gebruikt specifieke coëfficiënten om deze EMA's te combineren: Eerst worden er zes opeenvolgende EMA's berekend, waarbij elke EMA de output van de vorige EMA als input neemt. De T3-formule combineert vervolgens deze EMA's met coëfficiënten die voortkomen uit de volumefactor: T3 = c1*EMA6 + c2*EMA5 + c3*EMA4 + c4*EMA3 Waarbij: c1 = -factor³ c2 = 3factor² + 3factor³ c3 = -6factor² - 3factor - 3*factor³ c4 = 1 + 3factor + factor³ + 3factor² Invoervariabelen T3_Length: Periode lengte voor de EMA's (standaard: 12) T3_Factor: Volumefactor die de soepelheid versus responsiviteit controleert (standaard: 0.7) Hogere waarden (dichter bij 1) creëren soepelere lijnen met meer vertraging. Lagere waarden (dichter bij 0) creëren meer responsieve lijnen met minder vertraging. Gebruik De T3 Indicator kan worden gebruikt voor: Trendidentificatie (richting van de T3-lijn) Handelsignalen (prijs die de T3-lijn kruist) Steun- en weerstandsniveaus Filteren van kortetermijnmarktgeluid Installatie Plaats het bestand in je MetaTrader 5 indicatorenmap en koppel het aan elk grafiek. Pas de invoervariabelen aan om aan te sluiten bij je handelsstrategie en tijdsbestek.

2025.03.11
Fibonacci ZigZag Indicator voor MetaTrader 5: Een Stapsgewijze Handleiding
MetaTrader5
Fibonacci ZigZag Indicator voor MetaTrader 5: Een Stapsgewijze Handleiding

De Setup Voor het instellen van de Fibonacci ZigZag indicator heb je het volgende nodig: 1 ZigZag plot 2 databuffers voor de hoogste en laagste punten Invoervariabelen Een set systeemvariabelen die resetten wanneer de indicator opnieuw berekend wordt Hier is een voorbeeld van de code: #property indicator_buffers 2 #property indicator_plots 1 input double retracement=23.6;// retracement percentage input double minSizeInAtrUnits=0.0;// minimale golfgrootte in ATR eenheden input int rollingAtrPeriod=14;// rolling ATR periode input color Color=clrDodgerBlue;// golf kleur input int Width=3;// golf breedte input ENUM_LINE_STYLE Style=STYLE_SOLID;// golf stijl De upWaves array zal de hoogste punten opslaan en de dwWaves array zal de laagste punten opslaan. Systeemvariabelen: We moeten weten wat het laatste golftype is, waar het begon, waar het eindigde, en de afstand in bars van het begin naar het eind. We hebben ook lokale hoogtes en laagtes nodig, evenals de afstanden in bars vanaf elk punt. //--- bijhouden van de zigzag   //--- het type golf dat we hebben [0] geen [1] omhoog [2] omlaag     int wave_type=0;   //--- de beginprijs van de golf (startprijs)     double wave_start_price=0.0;   //--- de eindprijs van de golf (eindprijs)     double wave_end_price=0.0;   //--- de afstand in bars vanaf de beginprijs     int wave_start_distance=0;   //--- de afstand in bars vanaf de eindprijs     int wave_end_distance=0;   //--- tracking van de hoge prijs     double high_mem=0.0;     int distance_from_high=0;   //--- tracking van de lage prijs     double low_mem=0.0;     int distance_from_low=0;   //--- rolling ATR     double rollingAtr=0.0;        int rollingAtrs=0; We creëren vervolgens een functie voor het resetten van het systeem: void resetSystem(){ ArrayFill(upWaves,0,ArraySize(upWaves),0.0); ArrayFill(dwWaves,0,ArraySize(dwWaves),0.0); wave_type=0; wake_start_price=0.0; wake_end_price=0.0; wake_start_distance=0; wake_end_distance=0; high_mem=0.0; low_mem=0.0; distance_from_high=0; distance_from_low=0; rollingAtr=0.0; rollingAtrs=0; } Standaard dingen: vul de arrays met nullen en reset de systeemvariabelen. Bij de initialisatie stellen we de buffers in, de plots, en roepen we de resetfunctie voor de eerste keer aan:   SetIndexBuffer(0,upWaves,INDICATOR_DATA);   SetIndexBuffer(1,dwWaves,INDICATOR_DATA);    PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);    PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_ZIGZAG);    PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,Color);    PlotIndexSetInteger(0,PLOT_LINE_WIDTH,Width);    PlotIndexSetInteger(0,PLOT_LINE_STYLE,Style);   resetSystem(); Laten we nu de berekeningen bekijken. Het eerste wat we moeten doen is de rolling ATR beheren. Totdat we meer bars hebben verzameld dan de ATR-periode, doen we verder niets. De sectie die het rolling ATR beheert is als volgt: Als we niet meer dan de periode hebben verzameld, blijven we het bereik van de gevonden bars optellen tot een som Wanneer we de periode bereiken, voeren we de eerste deling (gemiddelde) uit Daarna knippen we een deel van de rolling ATR af, wat ATR/periode is, en voegen we een nieuw deel toe, wat het bereik van de bar/periode is We plaatsen het laatste deel eerst omdat dat vaker zal gebeuren en we niet twee if-statements hoeven te benaderen.      //--- beheer de ATR        rollingAtrs++;        if(rollingAtrs>rollingAtrPeriod){        double new_portion=((high[i]-low[i])/_Point)/((double)rollingAtrPeriod);        //--- we verwijderen een oud deel en voegen een nieuw deel toe        rollingAtr=(rollingAtr)-(rollingAtr/((double)rollingAtrPeriod))+new_portion;        }        else if(rollingAtrs<=rollingAtrPeriod){          rollingAtr+=(high[i]-low[i])/_Point;          if(rollingAtrs==rollingAtrPeriod){            rollingAtr/=((double)rollingAtrs);            //--- start het geheugen voor hoogtes en laagtes en het systeem              high_mem=high[i];              low_mem=low[i];              distance_from_high=0;              distance_from_low=0;            }          } Geweldig! Nu hebben we nog een probleem. De basis van deze ZigZag is een retracement. Maar voor een retracement moet er tenminste één golf zijn. Maar wat zal de eerste golf retraceren? Daarom doen we het volgende: Zodra de ATR zich heeft gevuld (ATR verzameld = periode), pakken we de hoogste en laagste waarde in onze systeemvariabelen Welke kant een golf vormt die een geldige grootte heeft in ATR-eenheden en een nieuwe hoge (upwave) of een nieuwe lage (downwave) vormt, wint Op deze manier hebben we geen retracement als de initiële golf, maar we moeten de sequentie op de een of andere manier starten. We zouden ook kunnen kiezen voor een klassieke fractalbenadering voor alleen de eerste golf en dan doorgaan met retracements. //--- als we nog geen golftype hebben   else{     //--- als we de hoge breken en niet de lage       if(high[i]>high_mem&&low[i]>=low_mem){         double new_wave_size_in_atr_units=((high[i]-low_mem)/_Point)/rollingAtr;         //--- als de nieuwe golfgrootte geldig is         if(new_wave_size_in_atr_units>=minSizeInAtrUnits){           //--- start een nieuwe upwave             wave_type=1;           //--- startprijs is de lage mem             wave_start_price=low_mem;             wave_start_distance=distance_from_low;           //--- eindprijs is de nieuwe hoge             wave_end_price=high[i];             wave_end_distance=0;           //--- teken de golf             dwWaves[i-wave_start_distance]=low_mem;             upWaves[i]=high[i];           //--- wijzig de hoge           high_mem=high[i];           distance_from_high=0;           //--- wijzig de lage           low_mem=low[i];           distance_from_low=0;       }       }       //--- als we de lage breken en niet de hoge       else if(low[i]<low_mem&&high[i]<=high_mem){         double new_wave_size_in_atr_units=((high_mem-low[i])/_Point)/rollingAtr;         //--- als de nieuwe golfgrootte geldig is         if(new_wave_size_in_atr_units>=minSizeInAtrUnits){           //--- start een nieuwe downwave             wave_type=-1;           //--- startprijs is de hoge mem             wave_start_price=high_mem;           wave_start_distance=distance_from_high;           //--- eindprijs is de nieuwe lage             wave_end_price=low[i];           wave_end_distance=0;           //--- teken de golf             upWaves[i-wave_start_distance]=high_mem;           dwWaves[i]=low[i];           //--- wijzig de hoge           high_mem=high[i];           distance_from_high=0;           //--- wijzig de lage           low_mem=low[i];           distance_from_low=0;       }       }       //--- als we beide breken       else if(low[i]<low_mem&&high[i]>high_mem){         //--- wijzig ze         high_mem=high[i];         low_mem=low[i];         distance_from_high=0;         distance_from_low=0;       }       } Geweldig! Nu de laatste stap. Als we een upwave hebben: als er een nieuwe hoge wordt gemaakt, verplaats de zigzag van de vorige hoge positie naar de nieuwe hoge positie, wat we kunnen doen omdat we de bar-afstanden behouden. Werk ook de lage en de afstand van de lage bij. Dit doen we zodat we de laagste laag kunnen vangen sinds de piek en controleren of deze genoeg retracete om een nieuwe lage te starten. Als er een nieuwe lage wordt gemaakt, of een nieuwe lage wordt ingesteld, berekenen we de afstand van de piek naar de lage en delen deze door de golfgrootte. Vermenigvuldig ook met 100 om overeen te komen met de invoervariabele schaal. Dus als de golfgrootte 100 punten is en de retracement 24 punten is, krijgen we 24/100 = 0,24, en dan x 100 = 24%. Als de grootte van de nieuwe "zou zijn" golf die de vorige retraceert ook geldig is tegen de ATR-eenheden, starten we een nieuwe downwave, stellen we de nieuwe lokale hoogtes en laagtes in, en stellen we de bar-afstanden in. Hier is de relevante code voor het bovenstaande:        //--- als we een upwave hebben          if(wave_type==1){            //--- als de golf omhoog uitbreidt              if(high[i]>wave_end_price){                //--- verwijder de vorige eindprijs van zijn arraypositie (0.0=leeg)                 upWaves[i-wave_end_distance]=0.0;                 upWaves[i]=high[i];                 wave_end_price=high[i];                 wave_end_distance=0;                //--- wijzig de hoge                 high_mem=high[i];               distance_from_high=0;                //--- wijzig de lage                 low_mem=low[i];               distance_from_low=0;       }            //--- controleer op retracement              if(low[i]<low_mem||distance_from_low==0){                low_mem=low[i];                distance_from_low=0;                double size_of_wave=(wave_end_price-wave_start_price)/_Point;                double size_of_retracement=(wave_end_price-low_mem)/_Point;                if(size_of_wave>0.0){                  double retraced=(size_of_retracement/size_of_wave)*100.0;                  double new_wave_size_in_atr_units=((wave_end_price-low_mem)/_Point)/rollingAtr;                //--- als de nieuwe golfgrootte geldig is                if(new_wave_size_in_atr_units>=minSizeInAtrUnits){                  //--- als de retracement significant is, start een downwave                   wave_type=-1;                   wave_start_price=high[i-distance_from_high];                   wave_start_distance=distance_from_high;                   wave_end_price=low[i];                   wave_end_distance=0;                   upWaves[i-wave_start_distance]=high_mem;                   dwWaves[i]=low[i];                   high_mem=high[i];                   distance_from_high=0;                   low_mem=low[i];                   distance_from_low=0;             }       }       }       } We doen het tegenovergestelde wanneer we een downwave hebben. En we zijn klaar, onze retracement ZigZag is gereed. Hier is de ZigZag met 23.6% retracement en 0.0 minimale golfgrootte in ATR eenheden En hier is dezelfde ZigZag met 3 minimale golfgrootte in ATR eenheden

2025.03.03
Eerste Vorige 3 4 5 6 7 8 9 10 11 12 13 Volgende Laatste