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