Kan iemand uitleggen hoe tijd te gebruiken met iBarShift?
Page 1 of 632 12 LastLast
Results 1 to 10 of 17

Thread: Kan iemand uitleggen hoe tijd te gebruiken met iBarShift?

  1. #1
    Stel dat ik elke dag gegevens wil van een balk met een bepaalde open tijd. Hoe ga ik hiermee om? Het lijkt erop dat ik voor timecurrent() zou kunnen gaan en zou kunnen berekenen hoe ver voorbij in seconden de open tijd is vanaf de balk waarop ik de info wil hebben en timecurrent()-seconden verleden kan gebruiken.

    Dit lijkt een grote oplossing voor wat in wezen een verdomd gemakkelijke berekening is: als de grafiek 1M is en ik wil de balk weten die begint bij 58 minuten, hoe moeilijk kan het dan zijn om gewoon elk uur die verdomde balk te krijgen? Kan ik datetime gewoon in 58 minuten gebruiken? Omdat in datetime het helpbestand aangeeft dat het de compilatiedatum zal gebruiken, wat volgens mij indie lijkt te zijn, het zou datzelfde uur een keer werken en dan niet meer als ik alleen het aantal minuten op 58 specificeer en niets anders.

    edit: Ik veronderstel dat een eenvoudigere berekening zou zijn om Minute() te gebruiken en te berekenen hoeveel minuten er voorbij waren, maar door dat te gebruiken gebruik ik gewoon mijn eigen lus in plaats van ibarshift.

  2. #2
    Ik was het helemaal aan het overcomplianceen. Ik weet nu waar ibarshift voor is. Ingevoegde code int i; tekenreeks starttijd; int closetime = SessionOpenHour 8; if ((sluittijd) lt;10) {starttijd = 0 sluittijd :00;} else {starttijd = sluittijd :00;} datetime start = StrToTime(starttijd); int stop = (AantalDagen*24) iBarShift(paar,PERIOD_H1,start,true); dubbele hsom=0; dubbel lsum=0; if(iTime(paar,PERIOD_H1,0) lt;= start) {start = start - 86400;} for (i=iBarShift(paar,PERIOD_H1,start,true);ilt;stop;i =i 24) {/Print(i: ,i, iTime: ,TimeToStr(iTime(paar,PERIOD_H1,i),TIME_DATE), ,TimeToStr(iTime(paar,PERIOD_H1,i),TIME_MINUTES)); hsom = hsom iHoog(paar,PERIOD_H1,iHoogste(paar,PERIOD_H1,MODE_ HIGH,9,i)); lsum = lsum iLow(paar,PERIOD_H1,iLowest(paar,PERIOD_H1,MODE_LO W,9,i));/Afdrukken(i: ,i, hsum: ,hsum, lsum: ,lsum); } Ontdek de barshift om de eerste bar om 16:00 uur te vinden. Begin de lus hier, voeg 24 toe (omdat het op een uurgrafiek staat en omdat we de hoogtepunten tussen specifieke tijden willen weten (08:00 en 16:00 in dit geval), kan een daggrafiek niet worden gebruikt) elke cyclus . Nu heb je de juiste som van de high en low van die tijd. Het is niet nodig om te controleren op tijd, het is niet nodig om te controleren op weekenden omdat zowel ibarshift als itime weekends negeren. Heel erg bedankt voor alle hulp, nu weet ik hoe en waarom ik ibarshift moet gebruiken, lol... bewerken: misschien is het een makelaarsding, maar het lijkt weekends voor MBT perfect te negeren voor mij: 03:58:39 AverageDailyRange EURGBP,H1: i: 293 iTime: 2012.02.20 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 293 hsum: 10.938 lsum: 10.8962 03:58:39 AverageDailyRange EURGBP,H1: i: 317 iTime: 2012.02.17 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 317 hsum: 11.7716 lsum: 11.726 03:58:39 AverageDailyRange EURGBP,H1: i: 341 iTime: 2012.02.16 16:00 03:58: 39 AverageDailyRange EURGBP,H1: i: 341 hsum: 12.6034 lsum: 12.5537 03:58:39 AverageDailyRange EURGBP,H1: i: 365 iTime: 2012.02.15 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 365 hsum : 13.4391 lsum: 13.3853 03:58:39 AverageDailyRange EURGBP,H1: i: 389 iTime: 2012.02.14 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 389 hsum: 14.279 lsum: 14.2209 03:58:39 AverageDailyRange EURGBP,H1: i: 413 iTime: 2012.02.13 16:00 03:58:3 9 AverageDailyRange EURGBP,H1: i: 413 hsum: 15.118 lsum: 15.0552 03:58:39 AverageDailyRange EURGBP,H1: i: 437 iTime: 2012.02.10 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 437 hsum : 15.9558 lsum: 15.8902 03:58:39 AverageDailyRange EURGBP,H1: i: 461 iTime: 2012.02.09 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 461 hsum: 16.7959 lsum: 16.7255 03:58:39 AverageDailyRange EURGBP,H1: i: 485 iTime: 2012.02.08 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 485 hsum: 17.6347 lsum: 17.5598 03:58:39 AverageDailyRange EURGBP,H1: i: 509 iTime: 2012.02.07 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 509 hsum: 18.4699 lsum: 18.3888 03:58:39 AverageDailyRange EURGBP,H1: i: 533 iTime:2012.02.06 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 533 hsum: 19.3002 lsum: 19.2151 03:58:39 AverageDailyRange EURGBP,H1: i: 557 iTime: 2012.02.03 16:00 03:58: 39 AverageDailyRange EURGBP,H1: i: 557 hsum: 20.1341 lsum: 20.0441 03:58:39 AverageDailyRange EURGBP,H1: i: 581 iTime: 2012.02.02 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 581 hsum : 20.9672 lsum: 20.8717 03:58:39 AverageDailyRange EURGBP,H1: i: 605 iTime: 2012.02.01 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 605 hsum: 21.8003 lsum: 21.7021 03:58:39 AverageDailyRange EURGBP,H1: i: 629 iTime: 2012.01.31 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 629 hsum: 22.6359 lsum: 22.5301 03:58:39 AverageDailyRange EURGBP,H1: i: 653 iTime: 2012.01.30 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 653 hsum: 23.4729 lsum: 23.3652 03:58:39 AverageDailyRange EURGBP,H1: i: 677 iTime: 2012.01.27 16:00 03:58: 39 AverageDailyRange EURGBP,H1: i: 677 hsum: 24.3138 lsum: 24.1991 03:58:39 AverageDa ilyRange EURGBP,H1: i: 701 iTime: 2012.01.26 16:00 03:58:39 AverageDailyRange EURGBP,H1: i: 701 hsum: 25.1536 lsum: 25.0339 edit: ok ok ok dus voeg dan gewoon een simpele controle toe of het tijd is een tijddag van de week 0 of 6, en alleen optellen als dit onwaar is. Dit zou moeten garanderen dat het met alle makelaars werkt.

  3. #3

    Quote Originally Posted by ;
    Uhm... Negeert iTime weekenden? Het keert dan geen tijd terug. Dus uhm... het was zoals ik al dacht? Noch iBarShift noch iTime hebben weekendcontroles nodig, simpelweg omdat ze het negeren? En ik ga alleen naar 52 (nu 54) omdat het de starttijd niet vindt omdat de starttijd in het weekend was. Het slaat gewoon over en vindt het nooit. Dus ik moet een controle toevoegen of het weekend is en of het gewoon nog eens 24 uur van de starttijd verwijderd is totdat het niet langer TimeDayOfWeek 0 of 6 is.
    Geen van de functies negeert het weekend. Ze werken op basis van de beschikbare bargegevens en er zijn het grootste deel van het weekend geen bars, dus ja, het kan lijken alsof ze worden overgeslagen. De uitdaging is dat sommige makelaars soms tikken hebben tijdens het weekend, en ook als de tijdzone van de server ver genoeg verwijderd is van gmt, krijg je nogal wat overlap in het weekend. Je kunt er dus niet op rekenen dat er in het weekend geen data is. Ja, u moet controleren op weekenden en 24 uur verwijderen, zoals u hierboven suggereert.

  4. #4

    Quote Originally Posted by ;
    Ja, dat deed ik met if(iTime(pair,PERIOD_H1,0) lt;= starttijd) {starttijd = starttijd - 86400;} en starttijd = starttijd - 86400; Dus het verlaagt het met 24 uur als het groter of gelijk is aan de huidige open tijd van de balk (ik wil of heb de waarden van de huidige dag niet nodig, daarom i=1 in plaats van 0) en het neemt af met 24 uur als het lukt om de juiste balk te vinden.
    Ik weet niet zeker waarom het niet werkt. Het lijkt erop dat het moet. Het is niet duidelijk waar je de starttijd hebt gecontroleerd. U kunt ook proberen de gegevens te herhalen met de voorgestelde methode.

  5. #5
    Ja, dat deed ik met if(iTime(pair,PERIOD_H1,0) lt;= starttijd) {starttijd = starttijd - 86400;} en starttijd = starttijd - 86400; Dus het verlaagt het met 24 uur als het groter of gelijk is aan de huidige open tijd van de balk (ik wil of heb de waarden van de huidige dag niet nodig, daarom i=1 in plaats van 0) en het neemt af met 24 uur als het lukt om de juiste balk te vinden. Bewerken: Natuurlijk. Oh God. Het werkt als iBarShift. Wat waanzinnig dom van me. Edit2: Uhm... Negeert iTime weekenden? Het keert dan geen tijd terug. Dus uhm... het was zoals ik al dacht? Noch iBarShift noch iTime hebben weekendcontroles nodig, simpelweg omdat ze het negeren? En ik ga alleen naar 52 (nu 54) omdat het de starttijd niet vindt omdat de starttijd in het weekend was. Het slaat gewoon over en vindt het nooit. Dus ik moet een controle toevoegen of het weekend is en of het gewoon nog eens 24 uur van de starttijd verwijderd is totdat het niet langer TimeDayOfWeek 0 of 6 is.

  6. #6

    Quote Originally Posted by ;
    Interessant. starttijd is 16.00 uur. 16:00 8 maart 2012 om precies te zijn. Heeft iemand een Tardis?
    Het doet precies zoals je hebt opgedragen. U hebt de datum niet opgegeven, dus wordt de huidige datum gebruikt. Dezelfde dag als de servertijdmeldingen. U moet de huidige tijd controleren en uw start-/stoptijd dienovereenkomstig aanpassen.
    Quote Originally Posted by ;
    02:29:00 AverageDailyRange EURGBP,H1: i: 4 hsum: 9 lsum: 11 02:29:00 AverageDailyRange EURGBP,H1: i: 28 hsum: 40 lsum: 46 02:29:00 AverageDailyRange EURGBP,H1: i: 52 hsum: 100 lsum: 104 Waarom ga ik niet verder dan 52 ondanks dat ik niet 720 ben? Waarom is hsum lager dan lsum? Hoogste = lager dan laagste? Hoe is dat mogelijk?
    Edit: ik was een beetje in de war. iHoogste/iLaagste geeft de index van een staaf terug. Daar moet je de staafgegevens van aflezen. bijv.: Ingevoegde code session_high=Hoog#91;iHoogste(paar,PERIOD_H1,MODE_ HIGH,9,i)#93;;

  7. #7

    Quote Originally Posted by ;
    Hoe dan ook, dit is een probleem ... hoe cre�er ik een niet-oneindige lus die elke dag om 16:00 uur wordt gecontroleerd?
    Code ingevoegd voor (int i=0; ilt;Bars; i ) { if (TimeToStr(Time#91;i#93;,TIME_MINUTES) == 16:00) {/dingen doen } } of Code ingevoegd voor (int i=0; ilt;Bars; i ) { if (MathMod(Time#91;i#93;,86400) == 16*60*60) {/dingen doen } }

  8. #8
    Interessant. starttijd is 16.00 uur. 16:00 8 maart 2012 om precies te zijn. Heeft iemand een Tardis? Hoe dan ook, dit is een probleem ... hoe cre�er ik een niet-oneindige lus die elke dag om 16:00 uur wordt gecontroleerd? Ingevoegde codestring starttijd = StrToTime(16:00); if(iTime(paar,PERIOD_H1,0) lt;= starttijd) {starttijd = starttijd - 86400;} for (i=1;ilt;=stop;i ) { if (iTime(paar,PERIOD_H1,i) == starttijd/TimeDayOfWeek(iTime(pair,PERIOD_H1,i)) != 0/TimeDayOfWeek(iTime(pair,PERIOD_H1,i)) != 6 ) {hsum = hsum iHighest(pair,PERIOD_H1,MODE_HIGH,9,i) ; lsum = lsum iLowest(paar,PERIOD_H1,MODE_LOW,9,i); starttijd = starttijd - 86400;} } 02:29:00 AverageDailyRange EURGBP,H1: i: 4 hsum: 9 lsum: 11 02:29:00 AverageDailyRange EURGBP,H1: i: 28 hsum: 40 lsum: 46 02:29: 00 AverageDailyRange EURGBP,H1: i: 52 hsum: 100 lsum: 104 Waarom ga ik niet verder dan 52 ondanks dat ik 720 ben? Waarom is hsum lager dan lsum? Hoogste = lager dan laagste? Hoe is dat mogelijk?

  9. #9
    U moet leren om code te debuggen zonder een debugger. - Druk invoergegevens af voor het begin van de lus om te controleren of deze correct zijn. starttijd, sluitingstijd enz. - Druk relevante gegevens af van elke iteratie van de lus en controleer of deze naar verwachting is. Hulpmiddelen: DebugView:
    https://www.aforexa.com/trading-syst...face-pro4.htmlcommentaarLijst:
    http://forum.mql4.com/16962
    https://www.aforexa.com/trading-syst...kes-pause.html

  10. #10
    Ingevoegde code dubbel hsum=0; dubbel lsum=0; tekenreeks starttijd; int SessieOpenUur = 8; int closetime = SessionOpenHour 8; if ((sluitingstijd) lt;10) {begintijd = 0 sluitingstijd :00;} else {begintijd = sluitingstijd :00;} int i; int stop = AantalDagen*24; for (i=1;ilt;=stop;i ) { if (iTime(pair,PERIOD_H1,i) == StrToTime(starttime) TimeDayOfWeek(iTime(pair,PERIOD_H1,i)) != 0 TimeDayOfWeek(iTime(pair, PERIOD_H1,i)) != 6 ) {hsum = hsum iHoogste(paar,PERIOD_H1,MODE_HIGH,9,i); lsum = lsum iLowest(pair,PERIOD_H1,MODE_LOW,9,i);} } double havg = hsumNumberofDays; dubbele lavg = lsumaantal dagen; dubbel pipdiff = NormalizeDouble((havg - lavg),dig); dubbele DisplayPips = pipdiff * 10000; if (dig == 2 || dig == 3) {DisplayPips = pipdiff * 100;} Commentaar(Gemiddeld dagelijks bereik: ,DisplayPips, pips, over ,NumberofDays, days); Als ik de weekendcontroles becommentarieer, retourneert het 0 pip-verschil, als ik het erin laat, worden rare waarden geretourneerd, zoals -666 pips. Heeft satan mijn computer gehackt of heb ik iets raars gedaan? Het eerste probleem lijkt te zijn dat het ergens aan lsum toevoegt, maar niet aan hsum vanwege de weekendcontroles. Is dat niet onmogelijk aangezien beide over exact dezelfde periode berekenen, slechts de een neemt de hoogste en de ander de laagste waarde? Het andere probleem is dat zonder weekendcontroles de som niet verandert. Dus ik vermoed dat de starttijd is verzonnen, maar ik heb geen idee waarom.

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.