Добре дошли в Свободен Български ФОРЕКС форум.
Резултати от 1 до 4 от общо 4
  1. #1
    Наблюдател
    Регистриран
    18.07.2020
    Мнения
    2

    MQL4 - акуратност и бързина

    Здравейте,

    Чудех се при писането на експерт , дали множеството проверки на забавят работа на експерта.

    Примерно:
    - да проверява за достатъчно free margin преди да се опита да пусне сделка;
    - да проверява за промяна в цената и слипидж на предходната сделка преди да пусне нова (при експерта с множество еднотипни сделки - примерно такъв, който пуска 10 х 0.4 лота вместо 4.0 лота наведнъж);
    - проверка на стойностите връщани от функциите OrderSend() и други.

  2. #2
    Трудно ще забавиш една програма с разни проверки. Би се забавила само ако започнеш да въртиш някакви огромни цикли милиони или милиарди пъти.

    За по-точен ориентир колко време отнема изпълнението на някакъв програмен код можеш да премериш времето посредством GetTickCount() или GetMicrosecondCount(), поставени в началото или в края на дадения участък от кода.

    Аз например съм си написал код за специални таймери за измерване на времето, които ги използвам в дебъг режим точно за същата цел. Ограждам от двете страни изследвания код с Timer[i].Start и Timer[i].Stop, и измервам микросекундите между двете събития. След това натрупвам статистика за хилядите преминавания на програмата през този участък от кода, и на екрана визуализирам стойностите Count, Min, Average и Max.

  3. #3
    Наблюдател
    Регистриран
    18.07.2020
    Мнения
    2
    Благодаря за съветите, ще ги вкарам в кода и ще тествам.

  4. #4
    Само искам да те предупредя, че този метод за измерване може да те подлъже, защото той всъщност измерва не времето на работа на твоята програма, а времето на работа на целия компютър. Затова е добре по време на тестове да не пускаш други програми. Също така не трябва да се шашкаш, ако Average е например 2 микросекунди , a Max например 10 000. Това се получава така именно защото операционната система е прекъсвала твоята програма да прави нещо друго, и то се е забавило.

    Именно поради тази причина когато измерваш, вярвай на стойностите Min или Average и игнорирай какво показва Max.

    Ето два мои класа - таймер и масив от таймери:
    Прикачени файлове Прикачени файлове

 

 

Информация за темата

Потребители разглеждащи тази тема

В момента има 1 потребител (и), разглеждащ (и) тази тема. (0 потребител (и) и 1 гост (и))

Разрешения за писане

  • Вие не може да да публикувате нови теми
  • Вие не може да публикувате мнения
  • Вие не може да публикувате прикачени файлове
  • Вие не може да редактирате вашите мнения
  •