2. Automatyczne systemy transakcyjne – pierwszy prosty skrypt

aos---pl-pierwszy-prosty-skrypt

Dziś przedstawimy sobie platformę dla programowania automatycznych systemów transakcyjnych i napiszemy pierwszy prosty skrypt.


Ten artykuł nawiązuje do Wstępu do programowania automatycznych systemów transakcyjnych, jeśli jeszcze nie czytałeś go, to polecam zrobić to jak najwcześniej.

Programować będziemy w języku MQL w programie MetaTrader 4. Zakładam, że masz zainstalowany ten program. Jeżeli nie, to tutaj jest instrukcja, jak zainstalować MetaTrader.

Wszystkie artykuły będę pisać w sposób najprostszy, by każdy je zrozumiał, dlatego zawsze będę podawać tylko niezbędne informacje.

1. Włączenie MetaEditora

Włącz MetaTrader i naciśnij przycisk F4. W ten sposób dostaniesz się do MetaEditora, w którym będziesz programować. Do edytora możesz też ewentualnie dostać się z górnego menu.

aos--1

2. Tworzenie skryptu

Plik => Nowy => Skrypt

aos-skrypt

Na razie będziemy korzystać tylko ze „Skryptu”, z biegiem czasu wytłumaczymy sobie, co oznaczają inne możliwości.

aos-skrypt-2

W ten sposób utworzysz nowy skrypt, nazwa może być dowolna.

Pojawi się strona z edycją skryptu. Wygląda następująco:

aos-skrypt-3

void OnStart() to funkcja, która włączy się natychmiast po uruchomieniu programu, słowo „void” oznacza, że funkcja nie zwraca żadnej wartości. Spróbujmy więc napisać kod testowy do funkcji OnStart.

Na przykład:

void OnStart()
{
Alert("Aktualna cena Bid dla pary walutowej ", Symbol(), " jest ", Bid); 
}

Jeśli chcemy uruchomić nasz skrypt, musimy go najpierw zapisać (ctrl + s) i następnie skompilować (górna listwa, przycisk „Kompilować”). Jeśli wszystko pójdzie dobrze, to w dolnej części strony edytora zobaczymy, że kompilacja odbyła się bez błędów.

Następnie przełączymy okno na MetaTrader, w lewej dolnej części otworzymy zakładkę „Skrypty” i znajdziemy swój skrypt testowy, mój nazywa się „Skrypt testowy forbino.com”. Skrypt ten przeciągnij do wykresu z parą walutową, powinno to wyglądać w następujący sposób:

aos-skrypt-5

To był tylko początek, mam nadzieję, że cię zaciekawiłem. Teraz przyjrzyjmy się trochę teorii, ponieważ bez niej nie można kontynuować.

Typy danych i zmienne

Zmienna to miejsce w pamięci, można do niej zapisywać niezbędne dane. Każda zmienna musi mieć zdefiniowany typ.

Typy zmiennych:

  • bool – można w niej zapisać tylko wartości 0, 1 lub również False i True
  • int – używana jest do zapisywania liczb całkowitych, na przykład 12345
  • double – zapisuje liczby dziesiętne, np. 123.45
  • string – zapisuje tzw. łańcuchy, czyli tekst, np. „jakiś tekst“
  • datetime – zapisuje datę i czas w formie rok.miesiąc.dzień godzina:minuta:sekunda, np. 2016.02.12 8:53:50

Praktyczne wykorzystanie zmiennych

Wartości do zmiennych zapisywane są następująco: typ NazwaZmiennej = wartość

Na przykład:

int numer = 12345;
string testLancucha = „łańcuch testowy“;

Nazwa zmiennej nie może zawierać znaki diakrytyczne i inne znaki specjalne. Wypróbuj w praktyce, wpisz do swojego skryptu następujący kod:

void OnStart()
{
 Alert("Aktualna cena Bid dla pary walutowej ", Symbol(), " jest ", Bid); 
 int liczba = 12345;
 string lancuchTestowy = "łańcuch testowy"; 
 Alert(liczba, " ",lancuchTestowy);
}

Zapisz skrypt, naciśnij „Kompilować” i uruchom w MetaTraderu (przeciągnij do wykresu z parą walutową), potem powinno to wyglądać następująco:aos-skrypt-6

Jak już na pewno zauważyłeś, korzystam z funkcji Alert(), funkcja ta wypisuje swoją treść, przecinki oddzielą poszczególne zmienne. Oprócz zmiennych można za pomocą Alert() wypisywać własny tekst, po prostu włożysz go w cudzysłów i oddzielisz przecinkiem, ja na przykład włożyłem do tego skryptu spację za pomocą ” „.

Zmienne można jeszcze rozdzielić do dwóch rodzajów: globalne i prywatne. Globalne zmienne można używać w ramach całego kodu, prywatne tylko w ramach funkcji.

string zmiennaGlobalna = "dostępna z całego kodu";
void OnStart()
{
string zmiennaPrywatna = "dostępna tylko z tej funkcji";
}

Funkcje predefiniowane i własne

Funkcja wykonuje nakazy wewnątrz własnego ciała, może zwracać jakąś wartość, ale nie musi. Jak już wiesz, używałem funkcji predefiniowanej Alert(), OnStart() (włączy się po uruchomieniu skryptu) i Symbol() – (zwróci aktualną parę walutową). Te nam na początek wystarczą.

Funkcje własne

Zadanie funkcji własnych – kod musi być przejrzysty, każda funkcja powinna wykonywać pewną grupę kroków. Na przykład napiszesz sobie funkcję, która będzie rozróżniać wzory wykresów świecowych (patterny). Napisać tę funkcję jest już trochę bardziej skomplikowane, na początek pokażemy sobie tylko zupełnie prostą funkcję:

string funkcjaTestowa(int parametrWejsciowy1,int parametrWejsciowy2,int parametrWejsciowy3)
{
int wynik = parametrWejsciowy1 + parametrWejsciowy2 + parametrWejsciowy3;

return "wynik funkcji testowej " + wynik;
}

Jak można zauważyć, musimy określić typ zwracanej wartości funkcji pierwszym słowem „string”, następuje nazwa funkcji i parametry wstępne. „Return zwraca wynik funkcji.

Tę funkcję wzywamy w OnStart() następująco:

void OnStart()
{
Alert("Aktualna cena Bid dla pary walutowej ", Symbol(), " jest ", Bid);
int liczba = 12345;
string lancuchTestowy = "łańcuch testowy";
Alert(liczba, " ",lancuchTestowy);

string test = funkcjaTestowa(1,2,3);
Alert(test);
}

Skrypt zapiszemy, skompilujemy i uruchomimy, wynik:

aos-skrypt-8

Na początek nie chcę pokazywać zbyt dużo informacji, by nie doszło do zamieszania. Wypróbuj wszystko to, co wyjaśniłem i następnym razem będziemy kontynuować.

Niektórzy mogą twierdzić, że to, co dziś stworzyłem, nie jest automatycznym systemem transakcyjnym i mieliby rację, ponieważ automatyczny system ciągle jest uruchomiony. Pokazałem wam skrypt, który wypisze aktualne wartości, nie chodzi więc bezpośrednio o automatyczne systemy transakcyjne. Automatyczne systemy transakcyjne też omówimy, ale na początek korzystniejsze jest omówienie skryptów, jest to prostsze.

Nie jestem pewien, czy tworzenie automatycznych systemów transakcyjnych interesuje naszych czytelników, proszę więc o wyrażenie zainteresowania daniem lajka na FB lub napisaniem komentarza, w razie wątpliwości nie bójcie się zapytać.

2. Automatyczne systemy transakcyjne – pierwszy prosty skrypt

Dodaj komentarz

Scroll to top