programovanie
Teraz čítaš
MQL prakticky. Panic Button, časť I [kurz programovania]
0

MQL prakticky. Panic Button, časť I [kurz programovania]

vytvorené Radek SzafronMarch 21 2019

Vitajte pri druhej epizóde MQL Prakticky! V druhej časti nášho kurzu začneme opäť s prázdnym listom papiera a krok za krokom napíšeme novú žiadosť. Spoznáme prvky, ktoré každý programátor používa pri svojej každodennej práci, ako sú funkcie, logické operátory a cykly, o čom už určite každý z vás počul, no nevedel, čo to je. Našťastie v našej sérii dávame teóriu chutne a bez preháňania a sústredíme sa na to najdôležitejšie, t.j. programovanie v praxi.

Tento týždeň napíšeme prvú časť prihlášky "tlačidlo paniky"ktorého meno už podľa mňa veľa vysvetľuje. Úlohou nášho programu bude po stlačení tlačidla okamžite uzavrieť všetky otvorené pozície a príkazy, keď sa nám na čele objaví studený pot, svet stíchne a obraz sa zúži na malé, zahmlené pole s rýchlosťou blikania rútiaci sa dolár po jednom z roztomilých tweetov jedného z našich obľúbených politikov.

Vyhrňme si rukávy a zapnime MetaEditor

Začnime vytvorením prázdneho súboru typu v editore Odborník pomenovaný Panic Button.mq4. Súbor bude v adresári MQL4 \ Experti. Potom uložme všetky súbory, ktoré dnes potrebujeme, do príslušných priečinkov.

súbor "Useful_functions.mqh" by mal byť umiestnený v adresári MQL4 \ Include \ Panic Button \

súbor "Biblioteka_panic_button.ex4" by mal byť umiestnený v adresári MQL4 \ Libraries \ Panic Button \

STIAHNUŤ SÚBOR SÚBOROV MQL

Prvé náznaky

Prejdime k úprave kódu našej aplikácie, teda súboru Panic Button.mq4 z adresára Odborníci. Dovoľte nám informovať kompilátor, že používame najnovšiu syntax MQL4 zadaním:

#nehnuteľnosť prísny
kód MQL4

Trikrát "a"

#include

Pomocou kľúčového slova #include k nášmu kódu môžeme pripojiť ďalšie zdrojové súbory. V súbore Useful_Features.mqh pripravili sme potrebnú funkciu:

bool Close_items_and_Orders (bool iba_desaťnástroj)

Aby sme mohli dodatočný kód použiť, musíme ho pridať do nášho súboru zadaním #include a cesta. Presne ako v rámčeku nižšie.

#include ".. \\ Include \\ Panic Button \\ Useful_functions.mqh"
kód MQL4

# Importovať

kľúčových slov # Importovať umožňuje nám to využívať externé knižnice. Knižnice sú samostatné, skompilované algoritmy, ktoré zdieľajú svoje funkcie a zdroje s inými programami. Nižšie importujeme knižnicu s názvom Library_panic_button.ex4ktorý obsahuje grafiku a funkcie pre naše tlačidlo. Medzi položkami # Importovať dáme zoznam definícií funkcií, ktoré by nám mala knižnica sprístupniť.

Správny import knižnice vyzerá takto:

# Importovať "Tlačidlo paniky \\ Biblioteka_panic_button.ex4"
zrušiť Button_utworz_sie (int x, int y, bool vybrať_modrú); zrušiť Button_badz_czujny (); bool Button_or_jestes_klikniety (reťazec názov_objektu); zrušiť Button_bye_bye ();
# Importovať
kód MQL4

vstup

Po pridaní zdrojových súborov a knižníc môžeme prejsť k tvorbe funkcií nášho programu. Začnime pridaním nasledujúceho riadku:

vstup bool Iba_tento_nástroj = nepravda;
kód MQL4

Prvok vstup povie kompilátoru, že vytvárame parameter, ktorý bude dostupný v okne nastavení aplikácie a jeho hodnota bude závisieť od voľby používateľa. Nami vytvorený parameter má hodnotu typu bool, czyli pravdivý lub nepravdivý. Pomenovali sme ho Iba_tento_nástroj a pod týmto názvom sa budeme môcť v budúcnosti odvolávať na jeho hodnotu, podľa ktorej sa budeme rozhodovať, či uzavrieme všetky pozície alebo len pozíciu nástroja, na ktorom beží náš program.

Prvá funkcia

Pridajme do nášho súboru nasledujúci fragment kódu:

int OnInit ()
{
návrat INIT_SUCCEEDED;
}
kód MQL4

Vyššie uvedený záznam znamená, že vytvárame funkciu s názvom onInitktorý vráti hodnoty typu int, teda celé čísla. Funkcie vracajú hodnoty pomocou kľúčového slova návrat.

Spomenuli sme to slovom návrat naša funkcia vracia celočíselné hodnoty. Aký je teda záhadný záznam INIT_SUCCEEDED ? Pre naše pohodlie má jazyk mnoho automaticky definovaných hodnôt pre a INIT_SUCCEEDED je len jedným z nich. Pod jeho názvom je celé číslo, ktoré kompilátor pozná ako „všetko je v poriadku“.

funkcie OnInit () je súčasťou MQL API, teda funkcie dostupnej v rámci jazyka. Funkcie MQL API sú označené v kóde na Fialová. Po spustení aplikácie náš algoritmus automaticky zavolá funkciu OnInit () a urobí to iba raz, na úplnom začiatku, aby sme mohli vykonávať operácie potrebné na spustenie a spustenie nášho programu.

Obsah funkcie

Medzi zložené zátvorky každej funkcie zadáme pokyny, čo má funkcia vykonať. Naša vlastnosť OnInit () už obsahuje jeden návod - návrat INIT_SUCCEEDED;

Rozšírime tieto funkcie OnInit ()zapamätanie kódu návrat INIT_SUCCEEDED; vždy zostala na samom konci funkcie, pretože ju chceme volať len vtedy, keď sú všetky ostatné príkazy úspešné.

Podmienený operátor ak

if(IsDemo () == nepravdivý)
{
 
návrat INIT_FAILED;
 
}
kód MQL4

Vyššie uvedený kód pomocou podmieneného operátora if, kontroluje, či je prostredie pre naše experimenty bezpečné a pracujeme na demo účte.

Štruktúra operátora if je to vždy veľmi podobné. Zápis medzi zátvorkami za operátorom, teda zápis IsDemo () == nepravdivý nazývame podmienený výraz. Je to logický výraz, ktorý môže vrátiť jednu z dvoch hodnôt - pravdivý lub nepravdivý. Keď podmienený výraz vráti hodnotu pravdivý vykoná sa kód medzi zloženými zátvorkami bezprostredne za operátorom if.

Symbol == v podmienenom výraze sa pýta, či sa hodnota naľavo rovná hodnote napravo. Pretože funkcia IsDemo () vráti hodnotu nepravdivýkeď spustíme program v živom účte, náš podmienený výraz ako celok vráti hodnotu pravdivýpretože hodnota naľavo od == sa bude zhodovať s hodnotou napravo. Keď je podmienený výraz splnený, kód sa vykoná medzi zloženými zátvorkami operátora if a program vráti operátorovi chybovú správu návrat a hodnotu vygenerovanú automaticky pod názvom INIT_FAILED.


odborní poradcovia


Nakreslíme tlačidlo

Naše tlačidlo nakreslíme pomocou funkcie Button_utworz_sie (int x, int y, bool vybrať_modrú)ktorý pochádza z predtým importovanej knižnice. Funkcia preberá dva parametre dátového typu int (celé čísla) s menami x oraz yktoré slúžia ako súradnice polohy tlačidla na grafe vo vzťahu k pravému hornému rohu okna.

Okrem toho funkcia preberá parameter typu bool (pravdivý lub nepravdivý) pomenovaný volím_modrú. Keďže naša aplikácia bude môcť pracovať v dvoch režimoch, pre celý účet alebo pre jeden nástroj, naše tlačidlo bude mať príslušnú farbu v závislosti od zvolených nastavení.

Páči sa nám if

Stanovme si, že chceme, aby tlačidlo bolo modré, keď je v režime jedného nástroja, a červené pre celý účet. Tlačidlo môžete zafarbiť pridaním nasledujúceho pokynu k funkcii OnInit ():

bool modrá = nepravdivý;
if(Iba_tento_nástroj == pravdivý)
{
 
modrá = pravdivý;
}
kód MQL4

Aby mohol algoritmus určiť farbu tlačidla, najprv definujeme premennú bool pomenovaný modrý a priradiť mu hodnotu nepravdivý. Potom použijeme podmienený operátor ifktorý kontroluje, či je parameter nastavenia aplikácie Iba_tento_nástroj bola nastavená na hodnotu používateľom pravdivý. Ak áno, spustí sa kód, ktorý nastavuje hodnotu premennej modrý  tiež na pravdivý. Takto pripravená premenná modrý môžeme slúžiť funkciám Button_utworz_sie (..) pridaním nasledujúceho riadku kódu do funkcie OnInit ().

Button_utworz_sie (5, 15, Modrá);
kód MQL4

Posledná funkcia (dnes)

Keď sa program ukončí alebo sa niečo zmení v nastaveniach, zavolá sa funkcia MQL API zrušiť onDeinit(const int dôvod).

Pomocou funkcie OnDeinit () vykonávame operácie, ktoré sú potrebné na správne ukončenie programu. V našom prípade je po deaktivácii algoritmu potrebné odstrániť tlačidlo pomocou predtým importovanej funkcie z knižnice Tlačidlo Bye_bye ()..

zrušiť onDeinit(const int dôvod)
{
 
Button_bye_bye ();
 
}
kód MQL4

Všimnite si, že pred názvom funkcie je slovo zrušiť. Znamená to, že naša funkcia nevráti žiadnu hodnotu.

Pridáme bodkočiarky, ruky si premačkáme a stlačíme kompilovať

Po úspešnej kompilácii kód, ktorý sme dnes napísali, vykreslí na grafe tlačidlo a dodá mu príslušný vzhľad v závislosti od konfigurácie zadanej používateľom v okne nastavení. Gratulujeme, dokončili sme prvú fázu vytvárania našej aplikácie, vytvorili sme používateľské rozhranie.

Budúci týždeň rozšírime náš program o vybavovanie objednávok a pridáme niekoľko zaujímavých vychytávok.

STIAHNUŤ SÚBOR SÚBOROV MQL

Co si myslis?
Mám rád
0%
zaujímavé
100%
heh...
0%
Šokujúce!
0%
nemám rád
0%
Škoda
0%
O autorovi
Radek Szafron
Autorom publikácie je Radek Szafron, majiteľ spoločnosti Expert Advisors, ktorá už dlhé roky podporuje investorov poskytovaním technológií venovaných FOREX trhu. Autor je absolventom Varšavskej ekonomickej školy so špecializáciou „Finančné trhy“ a programátorom s takmer 20-ročnou praxou. Spoločnosť realizuje projekty algoritmov a aplikácií napísaných vo všetkých jazykoch z rodiny "C", vrátane pre populárne platformy Meta Trader 4 a 5. Odborných poradcov nájdete na www.expertadvisors.pl.