waarom geen tick-actualisatie
Resultaten 1 tot 6 van de 6

Onderwerp: waarom geen tick-actualisatie

  1. #1
    Dag iedereen,

    dit is mijn eerste bericht op dit forum. Enkele maanden van handelen. Enkele jaren programmeren (pascal, basic en een beetje c).

    Maar hier probeer ik het te proberen en ..... maar ik kan geen oplossing vinden. Dus probeerde ik met een klein voorbeeld van S. Kovalyov, Programming in Algorithmic Language, maar dit werkt ook niet.

    Hier is een kleine, aangepaste code
    -----------BEGIN-----------
    //countiter.mq4
    //De code moet alleen voor eduieve doeleinden worden gebruikt.
    //------------------------------------------------ --------------------

    int init ()
    {
    //----
    Waarschuwing (Functie init () geactiveerd bij start);/Waarschuwing

    terug te keren;/Exit init ()
    //----
    return (0);
    }

    int start ()/Speciale functie. begin()
    {
    int i, graaf;/Variabelen declareren
    for (i = 1; ilt; = 5; i )/Show voor 5 ticks
    {
    Count = 0;/Clearingteller
    while (RefreshRates () == false)/Totdat ...
    {//..een nieuwe teek komt
    Aantal = aantal 1;/Iteratieteller
    }
    Alert (Tick, i ,, loops, Count);/Na elk vinkje
    }
    terug te keren;/Exit start ()
    }


    Het enige bericht dat in het waarschuwingsvenster verschijnt:
    Functie init () geactiveerd bij start

    en ik verwachtte zoiets

    Vink 3 98622348 aan
    Vink 2 64534421 aan
    Vink 1 32343443 aan

    de grafiek is een eenvoudige EURUSD M1-grafiek zonder andere EA's of indioren.
    Maar het is een demo-account.



    Kan iemand mij helpen? Dit zou heel aardig van je zijn

  2. #2
    Probleem is opgelost - Dank u en sorry, zo dom, het was gewoon het feit dat EA niet geactiveerd was in MT. Oh nee

  3. #3
    De bovenstaande code werkt tenminste als een script. Het wordt echter een beetje te hard op de CPU. Het kan de moeite waard zijn om Sleep () aanroep (indien geen indior) toe te voegen en IsStopped () aan de interne lus te controleren. Hoe voer je het voorbeeld uit?

  4. #4
    Hallo Irtron, hartelijk dank voor uw antwoord. Het probleem is wanneer ik begin aan het einde, dat wil zeggen met code en niet vanaf het begin - het omgaan met MT. Ik dacht: de init loopt, waarom niet de rest, niet wetende, dat EA moet worden geactiveerd en een exit wordt geleverd met start (). Sorry
    Citaat Oorspronkelijk geplaatst door ;
    De bovenstaande code werkt tenminste als een script. Het wordt echter een beetje te hard op de CPU. Het kan de moeite waard zijn om Sleep () aanroep (indien geen indior) toe te voegen en IsStopped () aan de interne lus te controleren. Hoe voer je het voorbeeld uit?
    Citaat Oorspronkelijk geplaatst door ;
    De bovenstaande code werkt tenminste als een script. Het wordt echter een beetje te hard op de CPU. Het kan de moeite waard zijn om Sleep () aanroep (indien geen indior) toe te voegen en IsStopped () aan de interne lus te controleren. Hoe voer je het voorbeeld uit?

  5. #5

    Citaat Oorspronkelijk geplaatst door ;
    Code ingevoegd voor (i = 1; ilt; = 5; i )/Show voor 5 ticks {Count = 0;/Clearing counter while (RefreshRates () == false)/Tot ... {//..een nieuw vinkje komt Count = Count 1;/Iteratieteller} Alert (Tick, i ,, loops, Count);/Na elk vinkje}
    Je zou het niet zo moeten doen. start () zelf zal voor elke tik worden opgeroepen, je script moet door gebeurtenissen worden aangestuurd, het evenement is de aankomst van een nieuw vinkje. u moet alleen dit ene vinkje in start () verwerken en onmiddellijk terugkeren. Het gebruik van lange stemlussen in deze functies is mogelijk, maar u zou dit alleen moeten doen als er geen andere optie is en u dit niet in indioren kunt doen, alleen bij deskundige adviseurs, aangezien indioren in de GUI-thread worden uitgevoerd en u de hele GUI van Metatrader blokkeert totdat start () retourneert. Als u exact 5 ticks nodig heeft, kunt u een globale teller instellen op 0, dan in start () schrijft u de huidige prijs in een array, verhoogt u de teller en alleen als de teller 5 heeft bereikt, doet u wat u moet doen met de laatste 5 tikt en reset de teller, anders gewoon terugkeren.

  6. #6

    Citaat Oorspronkelijk geplaatst door ;
    start () zelf zal voor elke tik worden opgeroepen, je script moet door gebeurtenissen worden aangestuurd, het evenement is de aankomst van een nieuw vinkje. u moet alleen dit ene vinkje in start () verwerken en onmiddellijk terugkeren.
    Je verwart EA en scripts hier. start () functie van eerstgenoemde wordt geactiveerd door aanstaande tekens inderdaad en RefreshRates () is nodig om ervoor te zorgen dat de handelsomgeving niet is gewijzigd terwijl start () wordt uitgevoerd. De laatste (een script) voert zijn start () slechts eenmaal uit en is geschikt voor asynchrone verwerking zoals in de bovenstaande code. Het is echter nog lang niet perfect, zoals ik al zei, en zou alleen als een voorbeeld voor eduieve doeleinden moeten worden beschouwd, zoals de auteursrechten beweren.

Forum Rechten

  • Je mag geen nieuwe onderwerpen plaatsen
  • Je mag geen reacties plaatsen
  • Je mag geen bijlagen toevoegen
  • Je mag jouw berichten niet wijzigen
  •  
Wij gebruiken cookies
Wij gebruiken cookies voor de best mogelijke ervaring op deze website. Door verder te bladeren wordt hiermee akkoord gegaan. Meer informatie over het gebruik van cookies, inclusief hoe voorkeuren aangepast kunnen worden, in ons privacybeleid.