Ordersend () - deschiderea unei poziții sau plasarea unei comenzi în așteptare

În edițiile anterioare, am aflat despre un număr mare de funcții cu care puteți obține informații despre un mandat alocat utilizând funcția OrderSelect (). Cele mai multe dintre aceste funcții sunt foarte importante și utile. Cu toate acestea, probabil că deja doriți să începeți să studiați funcțiile prin care puteți deschide și închide poziții, expune, modifica și șterge ordinele.







Astăzi vom vorbi despre prima astfel de funcție - funcția OrderSend ().

Funcția OrderSend () este folosită pentru a plasa o comandă în așteptare sau pentru a deschide o poziție. Funcția returnează numărul biletului pentru poziția deschisă sau ordinea în așteptare plasată. În cazul unei defecțiuni, funcția OrderSend () returnează -1.

Parametrii funcției OrderSend ()

În parametrul cmd, treceți tipul de comandă:

Plasați comanda în așteptare SELL STOP

Tabelul 1. Valorile posibile ale parametrului cmd al funcției OrderSend ()

Astfel, pentru a deschide o poziție de vânzare ca parametru cmd, trebuie să specificați OP_SELL. Pentru a deschide o poziție de cumpărare - OP_BUY. Pentru a plasa o comandă în așteptare ar trebui să fie utilizate valori OP_BUYLIMIT, OP_SELLLIMIT, OP_BUYSTOP sau OP_SELLSTOP în funcție de tipul de plasa comenzi în așteptare.

Când deschideți o poziție ca parametru al prețului, trebuie să utilizați oferta curentă (dacă cmd este OP_SELL) sau cea curentă (dacă cmd este OP_BUY):

  • funcția Bid returnează oferta curentă pe instrumentul la care este atașat Expert Advisor;
  • funcția Ask returnează întrebarea curentă pe instrumentul la care este atașat Expert Advisor;
  • funcția MarketInfo (simbol șir, tip int) cu tipul de parametru. egal MODE_BID sau MODE_ASK, returnează suma licitată sau solicită curentă pe instrument, care îi este transferată ca parametru simbol.

Este important să:
În nici un caz nu puteți utiliza prețul calculat de o anumită formulă sau prețul pe care nu l-ați adus (normalizat) la numărul de zecimale pe care instrumentul ar trebui să îl aibă.







Pentru a "normaliza" prețul, trebuie să utilizați funcția NormalizeDouble ():

Această funcție cuprinde valoarea numerică reală până la cifrele după punctul zecimal. Numărul de cifre după punctul zecimal trebuie să fie în intervalul 0. 8.

În cazul în care se utilizează prețul "greșit", în parametrul prețului vor fi indicate următoarele coduri de eroare:

  • ERR_INVALID_PRICE (129) - dacă prețul nu a fost "normalizat" sau nu a existat deloc un astfel de preț în flux;
  • ERR_REQUOTE (138) - dacă prețul este foarte învechit (indiferent de valoarea parametrului de alunecare);

Dacă prețul este depășit, dar este încă prezent în flux, atunci tranzacția va fi făcută la prețul curent dacă prețul curent este în intervalul de alunecare a prețului +/-.

Alți parametri ai funcției OrderSend ()

Alți trei parametri importanți - StopLoss. TakeProfit și expirare.

Când pozitsiiyu deschis (expune comandă în așteptare), apoi stop loss si Take Profit ar trebui să fie în raport cu prețul curent (prețul unui ordin în așteptare) nu mai aproape de la o distanță de un anumit număr de puncte. De exemplu, dacă aveți un cont în Centrul de tranzacționare Alpari. atunci nu puteți seta comenzile Stop Loss și Take Profit pentru FOREX mai aproape decât o rată de distribuire la prețul curent pentru o poziție deschisă sau pentru prețul unei comenzi în așteptare.

Dacă încercați să plasați Stop Loss sau Take Profit mai aproape decât este permis, funcția OrderSend () returnează eroarea 130 (ERR_INVALID_STOPS).

Dacă nu cunoașteți această valoare minimă, puteți obține întotdeauna utilizând funcția MarketInfo (). Funcția MarketInfo (simbol șir, tip int) cu tipul de parametru. egal cu MODE_STOPLEVEL, returnează această valoare pe instrument, care îi este transferată ca parametru simbol.

Instrumentul diagramă la care este atașat expertul poate fi obținut utilizând funcția Simbol ():

Dacă funcția OrderSend () Eroare de retur 147 (ERR_TRADE_EXPIRATION_DENIED), acest lucru înseamnă că serverul de comerț interzis ordinele în așteptare de la data stabilită eksperatsii. În acest caz, ar trebui să utilizați ulterior funcția OrderSend () cu parametrul de expirare. egal cu zero. Majoritatea centrelor de tranzacționare permit clienților săi să stabilească orice dată și oră când o ordine în așteptare va fi ștearsă automat.

În cazul în care OrderSend funcția () a returnat o eroare 148 (ERR_TRADE_TOO_MANY_ORDERS), ceea ce înseamnă că serverul de tranzacționare are o limită a numărului maxim posibil de poziții deschise și comenzile în așteptare pentru un singur cont. Dacă încercați să deschideți o altă poziție sau să puneți o altă comandă în așteptare, depășiți limita admisă, astfel încât veți fi refuzat acest lucru.

Un exemplu de utilizare a funcției OrderSend () poate fi găsit în primul nostru expert:

În următoarea ediție, vom arăta un exemplu de utilizare a funcției OrderSend ().







Trimiteți-le prietenilor: