Mql4 - Cum să scrieți o copie pentru mt4

Mql4 - Cum să scrieți o copie pentru mt4
Bună ziua, prieteni!

Sigur, de multe ori ați trebuit să copiați tranzacțiile de la un terminal la altul. De exemplu, dacă trebuie să deschideți aceeași poziție în diferite conturi sau în mai mulți brokeri. Această lucrare durează o anumită perioadă de timp, ceea ce poate fi salvat dacă încredințați această sarcină de rutină copiatorului. În plus, copiatorul poate fi scris independent.







Astăzi vom învăța cum să scriem un simplu copyist pentru MT4. Procesul de copiere din articol este implementat printr-un director de fișiere obișnuit, astfel încât aceeași abordare poate fi utilizată pentru a transfera orice informație între mai multe terminale MT4 / MT5 pe un PC.

Ideea generală

Mql4 - Cum să scrieți o copie pentru mt4

Ideea este după cum urmează. Toate terminalele instalate pe computer au un director comun. În directorul general, Furnizorul creează un fișier cu toate elementele deschise. Terminalul client citește datele din fișier și deschide pozițiile necesare.

Această abordare este aleasă din cauza universalității sale și a ușurinței implementării. Dar aceasta este departe de a fi o soluție universală, deoarece pentru unele situații aveți nevoie de viteză și o lățime de bandă mai mare, pe care fișierele nu vor putea să le ofere. Cu toate acestea, pentru copierea comerțului obișnuit, acest lucru va fi destul.

Principala problemă a tuturor copiatoarelor este sincronizarea de stat. În primul rând, trebuie să conectăm cumva comanda clientului cu mandatul deschis de furnizor. Pentru a face acest lucru, ca un identificator unic al ordinului (numărul magic), vom folosi comanda de bilet a furnizorului. În acest caz, biletul pentru comenzi se poate modifica dacă numai o parte din poziție a fost închisă, iar acest caz trebuie procesat.







Deci expertul scrie toate elementele active într-un fișier comun. Clientul citește apoi aceste date și creează o copie proprie a fișierului în directorul local. Astfel, pentru muncă, trebuie să creăm funcții de citire și scriere, cu abilitatea de a accesa directoarele generale și locale.

În această implementare, Expert Advisor merge într-o buclă infinită până când are acces la fișier. Nu există nicio partajare a fișierului partajat. Deci ne vom scăpa de date inferioare, pe care clientul le acceptă în mod eronat ca un semnal comercial.

Numele de fișiere sunt create în funcția de inițializare. Numele fișierului partajat este același pentru toată lumea, numărul contului de tranzacționare fiind folosit ca nume de rezervă locală. Apoi vom apela metoda de backup, care creează o înregistrare locală (încă goală) cu elementele din folderul terminal.

De fapt, metoda "backup" creează un fișier de rezervă, prin care vom verifica apoi schimbările în pozițiile deschise.

De asemenea, există o opțiune de citire din fișier, unde se returnează numărul de poziții salvate.

Pentru comoditate, atunci când apelați toate funcțiile principale, instanța clasei returnează un pointer spre sine.

Prin urmare, organizarea activității furnizorului și a copiatorului este realizată doar printr-o singură linie de cod, cu un apel secvențial al funcțiilor necesare.

În cele din urmă, vom crea o mică clasă de tranzacționare statică "Trade", care nu face altceva, deoarece deschide și modifică pozițiile. În mod ideal, trebuie să implementați un manager de eroare inteligent, în cazul unei puternice inconsecvențe a citatelor. De asemenea, logica de sincronizare poate fi configurată într-un mod diferit, în cazul unei defecțiuni de comunicare sau a unei piețe închise. De exemplu, pentru a deschide semnale târzii numai la un preț mai favorabil.

De asemenea, puteți alege cum să copiați volume. Volumul fix este copiat unul câte unul, indiferent de dimensiunea depozitului. Volumul dinamic este copiat în mai multe mărimi ale dimensiunii de capital pe client. Aceasta este, în cazul în care furnizorul de este poziția deschis 0.1 loturi, cu un depozit de 100 $, la client cu un depozit de 200 $ pentru a deschide volumul de tranzacție de 0,2 loturi.

Dacă lotul este dinamic, calculați raportul dintre capitalul contului curent și contul principal și multiplicați această valoare la volumul comenzii. De asemenea, nu uitați să normalizați valoarea volumului.

Pentru a începe copierea, aruncăm expertul pe grafic și alegem tipul de copiator - Master sau Slave. Numărul furnizorilor și al clienților este nelimitat - puteți copia tranzacții din mai multe conturi de orice tip, în orice conturi reale / demo.

concluzie

Mql4 - Cum să scrieți o copie pentru mt4

Deci, în această etapă este implementat:

Dezavantajele sunt:

  • Viteza de citire nu este o opțiune ideală pentru scalping, copierea căpușelor și a oricăror alte operații care necesită o întârziere minimă;
  • Încărcați pe disc - cu cât întârzierea este mai mică, cu atât mai des fișierul va fi rescris.

Descărcați codul sursă al copiatorului

Cu sinceritate, Dmitriy Akka Silentspec
TradeLikeaPro.ru







Articole similare

Trimiteți-le prietenilor: