- Bossafx.pl
- Edukacja
- Automatyzacja handlu MQL4
- Słownik MQL4
- Uruchamianie programów
- Uruchomienie programu na wykresie
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.