Uruchomienie programu na wykresie

W momencie umieszczenia naszego programu EA, wskaźnika, skryptu na wykresie następuje uruchomienie dyrektyw preprocesora, które zostały opisane we wcześniejszych punktach oraz zainicjowanie zmiennych globalnych. Następnie uruchomiona zostaje funkcja specjalna init(), a dopiero po zakończeniu się wykonania funkcji init() uruchomiona zostaje funkcja specjalna start(), a usuwając program z wykresu wywołana zostaje funkcja deinit(). Należy podkreślić, że funkcje specjalne init() oraz deinit() wykonują się jednorazowo natomiast funkcja start() wykonuje się za każdym razem zmiany wartości kwotowań na wykresie. Wyjątkiem jest skrypt, w którym funkcja start() uruchamiana jest jednorazowo i nie ma obowiązku uruchamiania funkcji init(), deinit() ponieważ wszystkie operacje można umieścić w funkcji start().

Oprócz jednorazowego wywoływania funkcji init(), deinit() wykonują się one także, gdy zmieniamy symbol na wykresie, przełączamy się po między rachunkami, dokonujmy kompilacji programu który znajduje się na wykresie.

Funkcje init() oraz deinit() nie powinny zawierać skomplikowanych obliczeń. Służą głównie do inicjalizacji i deinicjalizacji wartości początkowych parametrów, zmiennych. Funkcja deinit() musi zakończyć się w ciągu 2,5 sekundy, a jeśli to nie nastąpi to automatycznie zostanie to wymuszone przez terminal, wówczas możemy utracić dane, jeśli np. umieściliśmy zapis danych historycznych całego wykresu, które mogą się wykonywać ponad 2,5 sekundy. W celu weryfikacji ewentualnych błędów kończenia programu możemy korzystać z opisywanej już funkcji UninitializeReason(). Wyjątkiem od reguły wymuszenia zamknięcia programu są skrypty, ponieważ może się zdarzyć iż skrypt wykonuje się bardzo długo, albo co gorsze jest w nim zawarta nieskończona pętla co powoduje zawieszenie się programu, ponieważ skrypt nigdy nie przejdzie do wywołania funkcji deinit(). W celu usunięcia zawieszonego skryptu możemy po prostu zamknąć wykres lub uruchomić inny skrypt na tym wykresie wymuszając usunięcie tego zawieszonego.

Jak już wiemy EA i wskaźniki wykonują funkcje start() za każdym razem po nadejściu nowych kwotowań, czasami może się tak zdarzyć, że zmienność rynku jest tak duża i kwotowania nadchodzą szybciej niż wykonują się obliczenia funkcji start(). Wówczas wszystkie nowe kwotowania zostają pominięte do czasu wykonania się funkcji start(). Uwaga dla programistów, którzy chcą, aby ich programowanie nie pomijało obliczeń nowych kwotowań lub pomijał o jak najmniej jest taka, aby jak najbardziej optymalizować wydajnościowo programy np. przez stosowanie jak najmniej zmiennych dynamicznych typu string lub dynamicznych tablic, także obiekty graficzne mogą wpływać na dłuższe wykonywania się obliczeń.

Funkcja start nie jest też wykonywana w momencie zmiany parametrów EA, wskaźnika przy otwartym oknie z parametrami.

Bardzo ważna uwaga szczególnie dla tych, którzy w praktyczny sposób korzystają z EA, wskaźników. Należy pamiętać, iż programy wykonywalne terminala uruchamiane są lokalnie i po zamknięciu terminala nie działają. Dopiero ponowne uruchomienie terminala powoduje uruchomienie EA, wskaźnika. Inaczej mówiąc programy nie są wykonywane, ani nie są przechowywane na serwerach MetaTrader.

Do sprawdzanie czy program w danym momencie nie jest zatrzymywany można wykorzystać funkcję IsStpped().

System operacyjny Windows na którym działa oprogramowanie MataTrader jest wielowątkowy, to znaczy wiele programów może jednocześnie działać, mieć dostęp do procesora, także oprogramowanie MetaTrader wykorzystuje te właściwości systemu operacyjnego. EA oraz skrypty wykonywane są w niezależnych wątkach, natomiast wskaźniki wykonywane są w ramach głównego wątku programu, a biblioteki w wątku, który je wywołał.

Niniejszy materiał, przygotowany przez DM BOŚ S.A. ma charakter wyłącznie informacyjny, prezentowany jest w celach edukacyjnych i nie stanowi porady prawnej oraz nie jest rekomendacją osobistą w ramach świadczenia usługi doradztwa inwestycyjnego zgodnie z przepisami prawa. DM BOŚ S.A. nie udziela gwarancji dokładności, aktualności, oraz kompletności niniejszych informacji. Zaleca się przeprowadzenie we własnym zakresie niezależnego przeglądu informacji z niniejszego materiału.

1/1