Hoe programmeer je een indior met OBV en zijn MA?
Results 1 to 9 of 9

Thread: Hoe programmeer je een indior met OBV en zijn MA?

  1. #1
    4 Bijlage(n) Hallo allemaal,

    Ik ben een beginner in MQL4-programmeren met enige kennis van andere programmeertalen. Ik heb geworsteld met deze schijnbaar eenvoudige code die ik hieronder heb bijgevoegd. Wat ik eigenlijk zou willen bereiken, is de OBV-indior (On Balance Volume) met een voortschrijdend gemiddelde (SMA, EMA, SMMA of LWMA) in een apart indiorvenster onderaan de grafiek. Zo zou het eruit moeten zien:


    Ik gebruikte de OBV.mq4 om te beginnen en begon geleidelijk de code op te bouwen:Ik heb de functies SetIndexBuffer en SetIndexStyle toegevoegd in init() voor de tweede buffer die mijn MA-waarden zal bevatten. Ik heb een lus gemaakt die terugkijkt op MA_period = 200 tijdseenheden in het verleden, neemt de OBV-waarden daarvan, plaatst ze allemaal in een OBV_vals-array en gebruikt vervolgens de functie iMAOnArray() om de SMA, EMA, SMMA of LWMA te krijgen. Ik plaatste de voortschrijdend gemiddelde waarde die werd geretourneerd door de iMAOnArray() in de MABuffer in de hoop dat deze in het indiorvenster zal verschijnen. Het is me gelukt om alles te krijgen tot de regel waar ik de voortschrijdende gemiddelden in de buffer opsla. Ik heb de MA-waarden, ik heb ze op het tijdschrift afgedrukt en ze leken geldig. Echter, op het moment dat ik de regel MABuffer[i] = nOBVMA verwijder met de bedoeling deze MA-waarden op het indiorscherm weer te geven, wordt alles beschadigd, zoals je op deze afbeelding kunt zien:


    Interessant is echter dat met de MABuffer[i] = nOBVMA-regel als commentaar, de OBV prima werkt:


    Hier is het codefragment, maar ik heb ook de volledige code hieronder bijgevoegd.
    Code ingevoegd/lus terugkijkend op MA_period=200 perioden en nemend/de OBV-waarden die overeenkomen met die candles for(int j=1; jlt;=MA_period; j ) { nOBV_vals#91;j-1#93; = iOBV(NULL, 0, PRICE_CLOSE, i j); }/met behulp van de vers bevolkte nOBV_vals-array,/deze regel berekent de MA nOBVMA = iMAOnArray (nOBV_vals, 0, MA_period, 0, MA_method, i);/print de voortschrijdend gemiddelde waarde Print (OBV EMA-waarde is DoubleToStr (nOBVMA));/voeg de MA toe aan de MABuffer zodat deze in het indiorvenster wordt weergegeven/wanneer deze regel is ingeschakeld, worden zelfs de OBVBuffer-gegevens beschadigd! MABuffer#91;i#93; = nOBVMA;
    Als iemand een enthousiaste nieuweling zou kunnen helpen, zou ik zeer dankbaar zijn!
    Als je nog andere feedback voor me hebt die bij je opkomt als je naar mijn probleem kijkt, aarzel dan niet om deze te delen, ik ben echt vastbesloten om mijn MQL4-coderingsvaardigheden zo snel en effici�nt mogelijk te verbeteren.

    P.S: Ik ben me ervan bewust dat ik een voortschrijdend gemiddelde kan toevoegen aan een OBV-indior op MetaTrader. De OBV met MA zal echter deel uitmaken van een toekomstige EA die ik van plan ben te programmeren en daarom heb ik de indior met een OBV en een MA buffers nodig om later door te geven aan de rest van de EA.

    Bij voorbaat hartelijk dank voor uw hulp!

    https://www.aforexa.com/attachments/...2255590709.mq4

  2. #2
    2 Bijlage(n) En overwinning! Ik heb het kunnen oplossen! De bovenste is mijn indior, de onderste is de standaard MT4.
    Verrassend genoeg was het eigenlijk makkelijker dan ik ooit had gedacht. Slechts twee for-loops. Ook belangrijk dat ik eerder per ongeluk alles in ��n enkele for-lus heb gestopt. Het geheim was om alle OBV-waarden in ��n array te plaatsen en vervolgens de iMAOnArray() op alle OBV-waarden in een tweede for-lus te gebruiken. Ik laat mijn code hieronder achter, misschien heeft iemand in de toekomst een OBV met MA nodig.

    https://www.aforexa.com/attachments/...8216145924.mq4

  3. #3
    2 Bijlage(n) Ok�, dus ik heb goed nieuws. Ik vermoedde dat de originele OBV-code misschien niet helemaal correct was, dus ik heb er nog een gedownload en het hele proces opnieuw gestart, regels ��n voor ��n toegevoegd, gecompileerd, uitgevoerd en gecontroleerd of alles nog klopt. Dit is hoe ik hier ben beland: ziet er nu veel beter uit, goed nieuws dat de MABuffer ook prima werkt! Op deze afbeelding is de onderste indior het standaard On Balance-volume met de 200 EMA aangesloten en de bovenste indior is waar mijn geprogrammeerde indior staat.
    Ik heb het gevoel dat het probleem ergens in het onderstaande codefragment zit, hoewel ik niet begrijp waarom het niet doet waar ik op hoop. De MA-lijn op mijn indior stijgt van 0 tot ongeveer 400.000 (wat ongeveer het juiste bereik is) bij kaars 200, wat gelijk is aan de MA_periode... De volledige bijgewerkte code is hieronder bijgevoegd. Ingevoegde code nLimit=Bars-nCountedBars-1; for(i=nLimit; igt;=0; i--) { for(int j=1; jlt;=MA_period; j ) { nOBV_vals#91;j-1#93; = iOBV(NULL, 0, PRICE_CLOSE, i j); } nOBVMA = iMAOnArray (nOBV_vals, 0, MA_periode, 0, MA_methode, i); MABuffer#91;i#93; = nOBVMA; }
    https://www.aforexa.com/attachments/...1031865325.mq4

  4. #4
    Quote Originally Posted by ;
    {quote} Ja, gelukkig heb ik sindsdien veel vooruitgang geboekt en kreeg ik de iMAOnArray() werkend, maar liep ik tegen een muur aan met de buffers. Bedankt voor de MA-codes, ik zal proberen ze te combineren in mijn OBV-MA-code en kijken of het ergens anders naartoe leidt
    Dus alleen het uitzicht wordt aangepast. Als u naar uw afdrukwaarden kijkt wanneer MABuffer is uitgecommentarieerd en vervolgens kijkt wanneer er geen commentaar is, zijn ze hetzelfde en zijn OBV-waarden hetzelfde. Misschien moet je wat lineair schalen?

  5. #5
    Quote Originally Posted by ;
    {quote}Ik herinnerde me van de andere thread dat je zei dat het alleen nul retourneerde.
    Ja, gelukkig heb ik sindsdien veel vooruitgang geboekt en kreeg ik de iMAOnArray() werkend, maar liep ik tegen een muur aan met de buffers. Bedankt voor de MA-codes, ik zal proberen ze te combineren in mijn OBV-MA-code en kijken of het ergens anders naartoe leidt

  6. #6

    Quote Originally Posted by ;
    {quote} Hallo, Voor SMA is het makkelijk maar ook voor EMA, SMMA, LWMA? Trouwens, ik denk niet dat de beste egie is om gewoon de iMAOnArray-functie helemaal niet te gebruiken, omdat het een vrij veel voorkomende functie is en het eigenlijk waarden retourneert.
    Oh mijn fout, ik herinnerde me van de andere thread dat je zei dat het alleen nul retourneerde. Dit zijn de mql MA-codes, maar niet de OnArray-codes: Ingevoegde code/ -------------------------------- ---------------------------------- /| Eenvoudig voortschrijdend gemiddelde |/ ----------------------------------------------- ------------------- dubbele SimpleMA (const int positie,const int periode,const dubbele prijs#91;#93 {/--- dubbel resultaat= 0,0;/--- controleer positie if(positiongt;=period-1 periodgt;0) {/--- bereken waarde voor (int i=0;ilt;period;i ) result =price#91;position-i# 93;; resultaat/=periode; }/--- terugkeer (resultaat); }/ ---------------------------------------------- -------------------- /| Exponentieel voortschrijdend gemiddelde |/ ----------------------------------------------- ------------------- dubbele ExponentialMA (const int positie,const int periode,const dubbele prev_value,const dubbele prijs#91;#93 {/-- - dubbel resultaat=0.0;/--- waarde berekenen if(periodgt;0) { dubbele pr=2.0/(periode 1,0); resultaat=prijs#91;positie#93;*pr vorige_waarde*(1-pr); }/--- terugkeer (resultaat); }/ ---------------------------------------------- -------------------- /| Afgevlakte voortschrijdend gemiddelde |/ ----------------------------------------------- ------------------- double SmoothedMA(const int position,const int period,const double prev_value,const double price#91;#93 {/-- - dubbel resultaat=0.0;/--- controleer positie if(periodgt;0) {if(position==periode-1) { for(int i=0;ilt;period;i ) result =price#91;position-i#93;; resultaat/=periode; } if(positiongt;=periode) result=(prev_value*(periode-1) price#91;position#93/period; }/--- terugkeer (resultaat); }/ ---------------------------------------------- -------------------- /| Lineair gewogen voortschrijdend gemiddelde |/ ----------------------------------------------- ------------------- dubbele LinearWeightedMA (const int positie,const int periode,const dubbele prijs#91;#93 {/--- dubbel resultaat= 0,0,som=0,0; int i,wsum=0;/--- waarde berekenen if(positiongt;=periode-1 periodgt;0) { for(i=period;igt;0;i--) {wsum =i; sum =prijs#91;positie-i 1#93;*(periode-i 1); } resultaat=som/wsum; }/--- terugkeer (resultaat); }

  7. #7

    Quote Originally Posted by ;
    Hallo allemaal, ik ben een beginner in MQL4-programmeren met enige kennis van andere programmeertalen. Ik heb geworsteld met deze schijnbaar eenvoudige code die ik hieronder heb bijgevoegd. Wat ik eigenlijk zou willen bereiken, is de OBV-indior (On Balance Volume) met een voortschrijdend gemiddelde (SMA, EMA, SMMA of LWMA) in een apart indiorvenster onderaan de grafiek. Dit is hoe het eruit zou moeten zien: {image} Ik gebruikte de OBV.mq4 om te beginnen en begon geleidelijk de code op te bouwen: ik heb de functies SetIndexBuffer en SetIndexStyle toegevoegd in init() voor de tweede...
    In plaats van iMAOnArray zou je zelf de MA-waarden kunnen berekenen. De include-map van uw MT4-installatie bevat code die u kunt gebruiken, zoals MA-berekeningen.

  8. #8

    Quote Originally Posted by ;
    {quote} In plaats van iMAOnArray zou je zelf de MA-waarden kunnen berekenen. De include-map van uw MT4-installatie bevat code die u kunt gebruiken, zoals MA-berekeningen.
    Hoi Beerrun, Voor SMA is het makkelijk maar ook voor EMA, SMMA, LWMA? Trouwens, ik denk niet dat de beste egie is om gewoon de iMAOnArray-functie helemaal niet te gebruiken, omdat het een vrij veel voorkomende functie is en het eigenlijk waarden retourneert.

  9. #9
    @ levix95 Heel erg bedankt voor deze OBV MA indi !!!! Mag ik u lastig vallen om nog een MA toe te voegen, zodat er twee zijn ??? Ik scalp M1-grafieken en ik denk dat een 200MA met een snelle 34MA samen met de OBV mijn handelssysteem zal completeren. Bij voorbaat dank PS In het veld type MA, nrs 1 tot 4, neem ik aan dat het in dezelfde volgorde staat als op alle andere MT4 Indies?

Similar Threads

  1. Replies: 5
    Last Post: 16:13,
  2. hulp nodig programmeer indior
    By Oxriofd14 in forum Cryptocurrencies
    Replies: 0
    Last Post: 00:45,

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.