Dainesi D. - Programmare Trading System Con MQL
Dainesi D. - Programmare Trading System Con MQL
MQL
Programmare
Tradìng Systems
con MQL
Castellarla, 2010
Pagina 1
Dainesi - Guida di riferimento ai linguassio MQL
Alla nostra gatta Pappis che ha saputo farmi prendere delle pause salutari
con le sue insistenti miagolate.
Ai miei molti clienti che han saputo mettermi di fronte a nuove sfide logiche
nell 'affrontare e tradurre le toro strategie di trading.
Pagina 2
Dainesi - Guida di riferimento al /inguoggio MQL
Sommarlo
Introduzione 11
L'ambiente di sviluppo (IDE) 12
1 Elementi base del linguaggio 15
Le Variabili 18
Numeri interi (Integer) 19
Numeri a virgola mobile(Double) 21
Stringhe di testo (String) 22
Date e orari (dateti me) 22
Valori booleani (bool) 24
Valori di Colore (Color) 25
Valori Literals 28
Dichiarazione ed inizializzazione delle variabili 28
Gli Array 32
Le Costanti 34
Sintassi generale 35
Definizione di istruzione 35
Blocchi 35
Commenti 36
Le funzioni 36
Parametri 37
Passaggio dei parametri per valore 38
Passaggio dei parametri per riferimento 39
Le routine 40
Funzioni "scheletro" 40
Init 40
Deinit 41
Start 41
Funzioni native 42
Nomi delle variabili e funzioni 43
Parole riservate (token) 44
# Operatori ed espressioni 45
Incremento e decremento 45
Operazioni di assegnazione 46
Operazioni di confronto 47
Operatori Booleani 47
Operazioni di spostamento di bit (o BitWise) 48
Operazioni di indicizzazione 50
Regole di precedenza tra operatori 50
5 Struttura del codice 53
Formato delle istruzioni e annidamento 53
Blocchi 54
Inizializzazione delle variabili 54
Chiamate a funzione 55
Operatore condizionale IF - 55
Switch 56
Pagina 3
Dainesì - Guida dì riferimento al finguagsio MQJ.
while 57
Ciclo iterativo for 57
Break 59
Continue 59
Return 60
4 Funzioni 61
Definizione di funzione 61
Creare una funzione 63
Speciali funzioni init(), deinitQ e start() 65
Ir Variabili 67
Dichiarazioni 67
Arrays 69
Ambito di visibilità (Scope) 70
Variabili esterne o proprietà del trading System 71
Utilizzo e dichiarazione di funzioni esterne 71
6 Preprocessore 73
Dichiarazione di costante , 73
Controlli di compilazione 74
Inclusione di file 75
Importazione di funzioni e altri moduli 75
7 Informazioni sull'Account 77
AccountBalance , , 77
AccountCredit 78
AccountCompany 78
AccountCurrency 79
AccountEquity 80
AccountFreeMargin 80
AccountLeverage 81
AccountMargin 81
AccountName 82
AccountNumber 83
AccountProfìt 84
§ Funzioni di manipolazione degli Array 85
ArrayBsearch 86
ArrayCopy 87
ArrayCopyRates 87
ArrayCopySeries 89
ArrayDimension 90
ArrayGetAsSeries 90
Arraylnitialize 91
ArraylsSeries 91
ArrayMaximum , , 92
ArrayMaximum 92
ArrayRange , 93
ArrayResize 93
ArraySetAsSeries 94
ArraySize 95
ArraySort 95
9 Funzioni di uso comune 97
Pagina 4
Dainesi - Guida di riferimento ai linguaggio MQL
Alert 98
ClientTerminalName 99
CompanyName 99
Comment 100
GetLastError 101
GetTickCount 102
HideTestlndicators 102
IsConnected 103
IsDemo 103
IsDUsAllowed 104
IsLibrariesAllowed 104
IsStopped 105
IsTesting 105
IsTradeAllowed 106
Marketlnfo 106
MessageBox 108
Period 111
PlaySound 111
Print 112
RefreshRates 113
SendMail 113
ServerAddress..... 114
Sleep 115
Symbol 116
UninitializeReason 116
10 Funzioni di Conversione 119
CharToStr 120
ASCII Caratteri di controllo (character code 0-31) 120
ASCII caratteri stampabili (character code 32-127) 121
Codici ASCII estesi (character code 128-255) 123
DoubleToStr 126
NormalizeDouble 127
StrToDouble 127
StrToInteger 128
StrToTime 128
TimeToStr 129
11 Indicatori personalizzati 131
IndicatorBuffers 132
IndicatorCounted 134
IndicatorDigits 134
IndicatorShortName 135
SetlndexArrow 136
SetlndexBuffer 138
SetlndexDrawBegin 139
SetlndexEmptyValue 140
SetlndexLabel 141
Setlndexshift 142
SetlndexStyle 142
SetLevelStyle 144
SetLevelValue 144
Pagina 5
Dainesi - Guida di riferimento al linguaggio MQi
Pagina 6
Dainesi - Guida di riferimento al linguaggio MQ/.
MathCos 178
MathExp 179
MathFloor 180
MathLog 181
MathMax 182
MathMin 182
MathMod 183
MathPow 183
MathRand 184
MathRound 185
MathSin 185
MathSqrt 187
MathSrand 187
MathTan 188
16 Funzioni legate agli Oggetti 191
ObjectCreate 192
ObjectDelete 194
ObjectDescription 194
ObjectFind 196
ObjectGet 196
ObjectGetFiboDescription 198
ObjectGetShiftByValue 198
ObjectGetValueByShift 199
ObjectMove 199
ObjectName 200
ObjectsDeleteAll 200
ObjectSet 201
ObjectSetFiboDescription 201
ObjectSetText 202
ObjectsTotal 202
ObjectType 203
17 Variabili predefinite 205
Ask 206
Bars 206
Bid 206
dose 207
Digits 207
High 207
Low 208
Open 209
Point 209
Time 210
Volume 211
1S Costanti enumeratile 213
Prezzi applicati 213
Forme disegnate 214
Codici di errore 214
Codici di errore ritornati dal server del broker 215
Codici di errore MQL4 a run time 216
Serie dati Ichimoku Kinko Hyo 217
Pagina 7
Dainesi - Guida di riferimento al linguaggio MQ/.
Pagina 8
Dainesì - Guida dì riferimento al (inguaggio MQ/.
Pagina 9
Dainesi - Guida di riferimento al linguaggio MQL
OrderSwap 300
OrderSymbol 300
OrderTakeProfit 301
OrderTicket 301
OrderType 302
23 Funzioni di gestione finestre 303
HideTestlndicators 304
Period 304
RefreshRates 305
Symbol 305
WindowBarsPerChart 306
WindowExpertName 306
WindowFirstVisibleBar 306
WindowTimeOnDropped 307
WindowFind 307
WindowHandle 308
WindowIsVìsible 308
WindowOnDropped 309
WindowsPriceMax 309
WindowPriceMin 309
WindowRedraw 310
WindowScreenShot 310
WindowsTotal 311
WindowXOnDropped 311
WindowYOnDropped 311
Appendice A 313
stderror.mqh 313
stdlib.mqh 315
WinUser32.mqh 315
stdlib.mq4 322
Indice 329
Pagina 10
Dainesi ~ Guida di riferimento al linguaggio MQt
Introduzione
Pagina 11
Dainesi - Guida di riferimento al /insuaggio MQL
Pagina 12
Dainesì - Guida di riferimento al (ìnguaggìo A1Q/.
MovingAvirages.rnqt
. . . - - , - . , i r , -..,..- ,|
^| Arbficlal!ntellgente.rr>q4
^] DayTradlna.niq*
ì DelfinoN8t.m(|4
xtMapBuMei[];
ExtCountedBaEs-Q;
,•1*5
language albwsto creale your ovjn ExpertAdvisorsthatmake tradì run rr^iaiKnif.nr automatecl and are
supported by r-telaQuotes Sofb'jaie Coro. YOJ can download thè Book tn .ehm formai at:
htlp^flav^.mqH..eornffiles/ni<1abpqkenglislichm (si;e 2.0 Mb).
35 basic anmmetic and logic operations are induded in MQL4 strutture. There are atso basic indicalors
Pagina 13
Dainesi - Guida di riferimento al linsuasgio MQL
Pagina 15
Dainesi - Guida di riferimento al (inguaggio MQL
Una candela rappresenta un intervallo temporale definito nel quale si riporta il prezzo iniziale (Open), il prezz
minimo (Low), il prezzo massimo (Htgh), il prezzo di chiusura (dose), il volume scambiato (Volume) e la dati
completa di inizio (Time). Più avanti verrà ripreso il significato delle candele e loro utilizzo.
Pagina 16
Dainesi - Guida di riferimento al linguaggio MQL
> Numero
> Testo
> Data
> Vero/Falso
!
Come suggerimento consiglio di essere il più concisi possibile pur rimanendo sufficientemente descrittivi.
Pagina 17
Daìnesi - Guida dì riferimento al linguaggio MQt
Le Variabili
Le variabili sono dei dati il cui valore può cambiare nel corso
del programma (da qui la dizione di "variabile") e per questa
ragione l'unica cosa che occorre dichiarare è la tipologia dei
dati che conterranno (numeri, testo, date, ecc...).
Nell'analogia dell'autosilos non è importante se il posto auto
sarà occupato da una Lamborghini o da una Trabant,
l'importante è che sia un automobile la cui lunghezza,
larghezza ed altezza sia compresa in determinati limiti. In
altre parole è importante dichiarare il tipo di ogni variabile
per far capire al sistema che in quello spazio di memoria sarà
memorizzato un dato con quelle dimensioni massime e non un
altro che eccederebbe per dimensioni. Se si volesse
memorizzare un valore più grande rispetto al consentito si
riceverebbe un errore di Overflow, owero di raggiunto limite
di memorizzazione per il tipo di variabile.
3
RGB è racronimo di Red Green e Blue, tre colori le cui intensità presenti sono misurate in valori da O a 255 (es.
162.127.0)
Pagina 18
Daìnesì - Guida dì riferimento ai (inguaggio MQJL
1. int (bool,color,datetime);
2. doublé;
3. string;
ìnt A;
A=10/3;
Pagina 19
Dainesi - Guida di riferimento al h'nguaggjo MOJ.
Es:
12, 111, -9561007
Es:
OxOA, 0x12, 0X12, Ox2f, OxA3, OXa3, OX7C7
//Assegnazione diretta
int A - 10;
//Assegnazione
A=B;
//Confronto
if(A—B) ...
Pagina 20
Dainesi • Guido di riferimento al linguaggio MQL
doublé A;
A-10/3;
4
Per punto e .a dal broker (da n onfondere con il Pip
5
Nel seguito del libro farò spesso riferimento al verbo ciclare intendendo per l'appunto It e di ogni elemento di
un insieme definito. Ad esempio gli ordini storici, le barre delle quotazioni e cosi via.
Pagina 21
Dainesi - Guida di riferimento al /inguagsio
string A;
A = "Ordine LONG su
Es:
i 2010.01.01 00:00' // Capodanno del 2010
' 1981.07.06 12:30:27'
' 10.07.1997 10:30:00'
• 19.07.1980 12' //equivalente a D11980.01.19 12:00:00'
' 01.01.2004' //equivalente a D'01.01.2004 00:00:00'
1
12:30:27' //equivalente alla data corrente e ora indicata
1
' //equivalente alla data corrente e ora 00:00:00'
Pagina 22
Dainesi - Guida di riferimento al linguaggio MQf.
datetime A;
datetime B;
A - OrderCloseTime ( ) i
B = OrderOpenTime();
Print("I/ ordine è stato aperto per " + ((A-B)/Periodf)) + "
barre");
/*
Periodo è una funzione nativa che riporta il timeframe del
grafico espresso in minuti
int A;
int B;
A - 5;
B = 4;
print("A - B = " + A-B) ; // ERRORE M Verrebbe generato un
errore
PrintC'A + B = " A + B); // ERRORE ! ! Risulterebbe "A + B = 5
+ 4"
Print("A + B = " (A+B) ) ; // Risulterebbe "A + B - 9"
7
In molti linguaggi di programmazione il valore corrispondente alla costante True è 1 mentre in altri è -I. Da ques
indecisione è nata nei programmatori l'abitudine a verìficare che il valore sìa "non zero" al posto di verifìcarne
Pagina 24
Dainesì - Guida di riferimento al /inguogs/o MQL
Pagina 25
Danesi - Guida dì riferimento al linguaggio MQ_L
Pagina 26
Dainesj - Guida di riferimento o MQL
Pagina 27
Dainesi - Guida di riferimento al linguaggio A1QL
Valori Literals
Es:
a = 'A';
int b = '$';
int C = '©' ; // code OxA9
int d = '\xAE'; // symbol code ®
Pagina 28
Dainesi - Guida di riferimento al linguaggio MQf.
8
Anche il tipo daletìme può ric< nsursi ad un tipo numerico in quanto fonda il suo valore sul numero di secondi
dal 1° gennaio 1970 e quindi il i alore di default di zero rappresenterà la mezzanotte del 31 dicembre 1969.
Pagina 29
Dainesi - Guida di riferimento al /jnguaggio MQL
(tratto da Wikìpedia)
Pagina 31
Daìnesì - Guida di riferimento al (inguasgìo MQL
Gli Array
Uno speciale tipo di variabili sono gli array, owero dei vettori
o contenitori ordinati di variabili elementari.
Un array può essere monodimensionale o multidimensionale.
Se pensiamo ad una lista di valori questo sarà un array
monodimensionale. Se pensiamo invece ad un elenco dei
quattro valori delle barre di prezzo avremo un array bi-
dimensionale (la prima dimensione è il numero della barra
mentre la seconda è il valore).
34 23 21 19 76 2 17
64 3 2 19 17 1 72
34 23 21 19 76 2 17
Pagina 32
Dainesj - Guida di riferimento al linguaggio MQL
//Ridimensionamento dell'array
ArrayResize(iDailyPoìnts,7);
E' importante notare che tutti gli array hanno come indice
iniziale lo zero e non il numero uno cosicché per impostare o
recuperare il primo valore di un array monodimensionale si
utilizzerà l'indice zero.
i D a i l y P o i n t s t d ] = 50;
int B;
B = iDailyPoints[0];
Pagina 33
Dainesi • Guida di riferimento ai linguaggio AtQ/.
Le Costanti
Sintassi generale
Definizione di istruzione
Blocchi
' Se la tastiera non riporta il relativo simbolo è possibile richiamarlo tramite la combinai editastÌAlt+123perla
graffa dì apertura e Alt+125 per quella di chiusura.
Pagina 35
Doìnesi • Guido di riferimento al linguaggio MQJ.
void S t a r t ( )
{
A-B;
OF;
H-A/2;
if (Period()==15)
C=F;
H-A/2;
Commenti
Le funzioni
Pagina 36
Dainesi ~ Guida di riferimento al linguaggio MQL
//Funzione generica
int OrdiniAperti(int Tipo, string strumento)
return ( ... ) ;
Parametri
SwapRate=0)
Pagina 37
Dainesi - Guida di riferimento al linguaggio MQ}.
int A = 10;
int B = Quadrato(A);
PrintC'A = " + A + " e B = " + B);
/*
L'output sarà "A = 10 e B = 100"
Nonostante A sia stata modificata ali'interno della funzione
//Funzione
int Quadrato(int Base)
{
Base = Base*Base;
return(Base);
Pagina 38
udinesi - Guida dì riferimento al linguaggio MQJ.
int A = 10;
int B = Quadrato(A);
//Funzione
int Quadrato(int& Base)
1
Base = Base*Base;
return(Base!;
Pagina 39
Dajnesi - Guida di riferimento al lin$uas$io MQL
Le routine
Funzione
«tipo di ritorno NomeFunzione(<tipo1 argJ>, <tipo2 arg2>,...)
Routine
void NomeRoutine(<tipo1 arg1>, <tipo2 arg2>, ...)
Funzioni "scheletro"
Init
Deinit
Start
Pagina 41
Dainesi - Guida di riferimento ot linguaggio MQÌ-
Funzioni native
//Routine
ClassicTrailingStop(30,25);
//Funzioni
int a ;
a = OrdiniPendenti();
int b = (a + OrdiniPendenti())/e;
Pagina 42
Dainesi - Guida di riferimento al linsuassio MQL
^ Account
^ Array
^ Funzioni di uso comune
^ Funzioni di Conversione
S Funzione per la gestione degli indicatori personalizzati
^ Date e orari
^ Funzioni di gestione dei File
^ Funzioni di gestione delle variabili Globali
^ Funzioni Matematiche e Trigonometriche
S Funzioni di manipolazione degli Oggetti
^ Variabili predefinite
^ Funzioni di manipolazione delle stringhe
•/ Indicatori di analisi tecnica
^ Funzioni di interrogazione delle serie temporali
•/ Funzioni di Trading
S Funzioni di gestione delle finestre
Pagina 43
Daìnesi - Guida di riferimento al linguaggio MQL.
Pagina 44
Dainesi - Guida di riferimento al linguaggio MQL
Operatori ed espressioni
Incremento e decremento
II Somma
i = j + 2;
//Sottrazione
i = j - 3;
//Cambio di segno
//Prodotto
z = 3 * x;
//Divisione
i = j / 5;
//Incremento di 1
//Decremento di 1
k— ;
//Espressione valida
g+ + ;
//Espressione sbagliata
C = d * (h — )+ 2;
Operazioni dì assegnazione
dell'operatore y
Spostamento logico di bit a dx y »= x; Solo per binari sotto le
cinque digitazioni
Spostamento logico di bit a sx y «= x;
Pagina 46
Daìnesi - Guida di riferimento al linguaggio MQL
Operazioni di confronto
Operatori Booleani
// True se è false.
lf(la)
print("non ' a ' " ) ;
Pagina 47
Dainesi - Guido di riferimento al linguaggio MQL.
if fx<k I I x>l)
Print("fuori dalla fascia di pertinenza");
i f ( p ! = K SS p>yl
PrintC'true") ;
10
La memorizzazione è un processo fisico che consiste nella magnetizzazione o smagnetizzazione di un particolare
elemento. Il singolo bit altro non è che una celletta di silicio che subisce questo processo definito per l'appunto ciclo di
isteresi.
Pagina 48
Dainesr - Guida di riferimento al linguaggio MQf.
Sostituzione del valore dei bit con il loro opposto: dove è 1 diventa O
viceversa
/*
Spostamento a sinistra di y posizioni dei bit del valore di x. Gli spazi
*/
x = x « y;
/*
Nell'operazione AND binaria i bit il cui valore è in entrambe le
variabili 1 vengono riportati come 1 mentre i bit discordanti o entrambi
a O vengono tradotti con O
*/
b = ((x & yì !=0);
tradotti con O
V
b = x | y;
Pagina 49
Dainesi - Guida di riferimento al linguaggio MQ/.
Operazioni di indicizzazione
Pagina 50
Dainesi - Guida di riferimento al /inguaggjo MQf.
Uguale
!= Diverso
a Bitwise AND (da sx a dx)
Bitwlse exclusive OR (da sx a dx)
| Bitwise OR (da sx a dx)
aa AND logico (da sx a dx)
11 OR logico (da sx a dx)
Assegnamento (da dx a sx)
+= Assegnamento addizione
Assegnamento per sottrazione
*= Assegnamento per moltiplicazione
/= Assegnamento per divisione
%= Assegnamento per modulo
»= Assegnamento per spostamento a dx
«= Assegnamento per spostamento a sx
a= Assegnamento per bitwise AND
|= Assegnamento per bitwise OR
A
= Assegnamento per exclusive OR
, Virgola (da sx a dx)
b - (3 + 4) * 2;
Pagina 51
Dainesì - Guida di riferimento al (inguaio MQ}_
Pagina 53
Dainesi - Guido dì riferimento al (inguaggio MQ/.
Blocchi
Variabile = expression;
X = 3;
string sMsg = "Questo è un commento";
Pagina 54
Dainesi - Guida di riferimento al (inguaggio
Chiamate a funzione
Function_name(argument1,..., argumentN);
tnt a = Periodo ;
int b = TrailingStoptOrderTicket(},40,20);
Refreshorders();
Operatore condizionale IF
if (espressione da verificore)
istruzione se vero;
Pagina 55
Dainesi - Guida di riferimento al (inguags'o AiQ/.
//if singolo
if(a==x)
temp*=3;
//if else
if(a>b)
e - 1;
else
C - 2;
//Esempio di if annidato
if(a>b)
if(d<e)
c=l;
else
c-3;
else
c=2;
Switch
switch (espressione)
{
case constanti: istruzioni; break;
case constant2: istruzioni; break;
switch(x)
(
case 'A' :
Print("CASE A \ n " ) ;
break;
case ' B ' :
case ' C ' :
PrintC'CASE B or C \ n " ) ;
break;
default:
PrintC'NOT A, B or C \ n " ì ;
break;
while
while (expressìon)
operator;
Pagina 57
Dainesi - Guida di riferimento al (inguaggio MQL
//Variabile di controllo
int i;
for(i=0;i<OrdersTotal{) ;i++)
(
Orderselect(i,SELECT_BY_POS);
if (OrderSymbol() == SymtaolO &S OrderMagicNumber(] — MagicNumber)
(
//fa qualcosa con l'ordine selezionato;
Pagina 58
Dainesi - Guida di riferimento al /inguasgio MQJ.
Break
Continue
if ( a [ i ] « = 0 ) continue;
sum+=a[i];
}
return(suro);
Pagina 59
Damesi - Guida di riferimento al linguaggio MQL
Return
if(b==0)return(O) ;
return(a/b) ;
Pagina 60
Daìnesi - Guida di riferimento al linsuasgio MQL
Funzioni
Definizione di funzione
Pagina 61
Dainesi - Guida di riferimento al (inguoggio MQJ.
//Funzione
doublé RadiceQuadrata (doublé variabile)
return{MathSqrt(variabile));
//Metodo
void TrailingStop()
Ogni funzione può avere degli argomenti, ovvero dei dati che
gli vengono passati e su cui il corpo della funzione si basa per
calcolare il valore di ritorno.
Come si è visto più sopra (nella definizione di funzione) gli
argomenti sono contenuti all'interno delle parentesi tonde
che seguono il nome della funzione. Ogni argomento è
preceduto dalla sua dichiarazione di tipo.
Pagina 62
Daìnesi - Guida di riferimento al //nsuasgio MQL
StopLoss = ... ;
return(resulti ;
Pagina 63
Dainesi - Guida di riferimento al linguaggio MQf.
//I sdTrendBB.mq4 |
//I Copyright © 2010, SD Studio Dainesi I
//I http://www.sdstudiodainesi.cora I
void DeleteAllOrders{)
{
//Questa funzione cancella tutti gli ordini pendenti
int i;
int total = OrdersTotal();
for(ì=0;i<total;i++)
{
OrderSelect(i,SELECT_BY_POS);
if (OrderType () >OP_SELL && OrderSynibol f ) ==Symbol ( ) &S
OrderMagicNuraber() == MagicNumber) OrderDelete(OrderTicket());
Pagina 64
Dainesi - Guida di riferimento al linguaggio MQL
1
Pagina 65
Daìnesi - Guida di riferimento al /inguoggjo MQL
Variabili
Dichiarazioni
Pagina 67
Dainesi - Guida dì riferimento al linguaggio N
//Dichiarazione
int a;
//Dichiarazione e inizializzazione
int b = 3;
doublé e = PERIOD_M5;
e = MathSqrt(b);
Arrays
tipo NomeArrayn :
1
' II termine distruzione ben si adatta al contesto in quanto nei linguaggi dì programmazione si parla di "costruttore"
"distruttore" per definire le procedure di iniziai i zza/ione ed allocazione di memoria e quelli; di finalizzazione e
liberazione di memoria utilizzata dalle variabili.
Pagina 70
Dainesi - Guida di riferimento at (inguaggio MQL
int initO
Pagina 71
Dainesì - Guida di riferimento
(timport "user32.dll"
int MessageBoxA (int hWnd , string szText, string szCaptìon, nType)
int SendMessageA(int hWnd, int Msg,int wparam,int IParara);
ttimport "Iib.ex4"
doublé round(double value);
#import
Dh
Pagina 72
Dainesì - Guida di riferimento al linsua$$io MQ}.
Preprocessore
Dichiarazione di costante
Pagina 73
Dainesi - Guida di riferimento al fljnguasgio MQL
Controlli di compilazione
Int
Queste istruzioni sono utilizzate per definire il valore di
specifici identificatori, alcuni dei quali rappresentano delle
proprietà esterne utilizzate dagli indicatori.
Tipo Descrizione
string Link al sito internet
copyright string Nome della società
int Stack size
library Una libreria;
indicator_chart_window void L'indicatore appare sul grafico delle quotazìor
indicator_separate_window void L'indicatore appare in una finestra separata
irtdicator_buffers int Numero di buffer dell'indicatore (max 8)
indicatorjninirnum doublé Limite inferiore posto nella finestra separata dell'indicatore
indiC3tor_maximurn doublé Limite superiore posto nella finestra separata dell'indicatore
indicator_colorN coler Colore della linea N (N sarà compresa tra 1 e 8)
Pagina 74
Dainesi - Guida di riferimento al linguaggio MQt
Inclusione di file
Jtinclude <file_name>
^include <win32.h>
^include "file_name"
ttimport "filejname"
fund();
Pagina 75
Dainesi - Guida di riferimento al (inguaggjo WQL
func2();
#import
ttimport "user32.dll"
int MessageBoxA(int hWnd,string lpText,strinig IpCaption,
int uType);
int MessageBoxExA(int hWnd,string IpText,string IpCaption,
int uType,int wLanguageld);
..__
ttimport _..jHb.ex4
"melib.eK4"
ftin^ort "gdi32.dll
int GetDCUnt hWnd) ;
int ReleaseDC(int hWnd,int h D C ) ;
ttiraport
Pagina 76
Dainesi - Guida di riferimento al linguaggio MQL
Informazioni sull'Account
AccountBalance
doublé AccountBalance()
i
DaJnesf - Guida di riferimento al (inguoggio MQ/_
I Controvalore: 104 721,91 Margine: 2 042,43 Margine disponibile: 102 673.48 Livelo dd margine: 5127.32%
//Esempio.
AccountCredit
doublé AccountCredit()
//Esempio.
AccountCompany
string AccountCompanyO
Pagina 78
Dainesi - Guida di riferimento al linguaggio MQ/.
//Esempio.
AccountCurrency
string AccountCurrencyO
Pagina 79
Dainesi - Guida di riferimento al (ìnguaggio
AccountEquity
doublé AccountEquityO
//Esempio.
| Porzioni aperteJ'-.N » ..AI tip »T .-iyic.nl I Nutrie [ Osa M ] il*jr!h i»v.i-.-jls | ':n'«:,iqii.--n I Diario |
AccountFreeMargin
doublé AccountFreeMargin()
2010.02.2617:12 se
controvalore: 104 721.91 Margine: 2 042.43 Margine
j Podricm aperte Borico oretazior.l | rtonae | Allarmi I creila Melale I owiglte,, ! :.i
Pagina 80
Daìnesi - Guida di riferimento al linsuassio MQL
//Esempio.
AccountLeverage
int AccountLeverageO
//Esempio.
AccountMargin
doublé AccountMargin()
Pagina 81
Dainesi - Guida di riferimento al linguaggio MQL
//Esempio.
AccountName
string AccountName()
Comune Preferiti |
valore ritornato dalla funzione
AccountName().
Nell'esempio si ipotizza che il conto in uso sia quello centrale.
Pagina 82
Dafnesi - Guida di riferimento al linguaggio MQj.
AccountNumber
int AccountNumberQ
Pagina 83
Dainesì - Guida di riferimento al Jinguaggfo MQL
//Esempio
int iANum = AccountNumberO ;
Printf"Conto nr. " + iANum);
AccountProfit
doublé AccountProfit()
//Esempio.
Pagina 84
Daìnesi - Guida di riferimento al (inguaio MQjL
d1rection=MODE_ASCEND)
Parametri
Array L'array numerico dentro il quale si cerca.
Value Il valore ricercato.
Count Numero di elementi entro I quali cercare (per
default è l'intero array).
Start Indice dell'elemento dell'array dal quale iniziare
la ricerca. Di default la ricerca inizia dal primo
elemento.
Direction Direzione della ricerca (ascendente o
discendente) espressa con una delle due
costanti: MODE_ASCEND o MODE_DESCEND.
//Esempio.
datetime dDays [ ] ;
//Copio la serie temporale dell'EURUSD
ArrayCopySeries (dSays, MODEJTIME, Symbol () , PERIOD_D1) ;
int iG=ArrayBSearch (dDays (OrderOpenTimes () ,WHOLE_ARRAY, 0,MODE_DESCEND) ;
Print ("L' operazione è stata aperta w + iG + " giorni fa") ;
Pagina 86
Dainesi - Guida di riferimento al flinguass/o MQL
ArrayCopy
Parametri
dest[] Array di destinazione.
source[] Array di origine.
start_dest Indice dell'elemento dell'array di destinazione
(di default è 0)
start_source Indice dell'elemento dell'array di origine (di
dafault è 0).
Count II numero degli elementi che devono essere
copiati. Se non specificato si intende l'intero
array (WHOLE_ARRAY).
//Esempio.
int a r r a y f i [ ] [ 3 ] ;
int a r r a y B [ 2 2 ] [3] ;
int arrayC[31] [3] ;
ArrayCopyRates
Pagina 87
Dainesi - Guida di riferimento al linguaggio MQL
Parametri
dest_array[] Array numerico di destinazione.
Symbol Sìmbolo dello strumento quotato (di default è il
simbolo del grafico corrente).
Timeframe Time frame della serie storica copiata. Se non
diversamente specificato viene utilizzato il time
frame corrente sul grafico (può essere solo uno
compreso nei time frame standard).
//Esempio.
doublé arrayAU [61;
grafico
V
ArrayCopyRatestarrayA, Symbol O, PERIOD_M5);
11
Si ricordi bene che i volumi riportati sono SOLO quelli del broker e NON quelli dell'intero mercato. Questi volumi
assumono una qualche forma di attendibilità orientativa solo su time frame elevati (dal 4 ore in su).
13
Una DLL (Dynamic Link Library) è un programma esterno che attraverso delle apposite funzioni di interfaccia
permette di interagire con altri programmi (in questo caso con MetaTrader). Nel contesto di MetaTrader una DLL è
utile per poter elaborare i dati con un programma esterno creato per ottimizzare i calcoli e le performance oltre i limtt
intrinseci della piattaforma di trading (ad esempio tramite l'accesso a database esterni).
Pagina 88
Dainesì - Guida dì riferimento al linguas$io MQL
ArrayCopySeries
Parameters
array[] Riferimento all'array numerico
monodimensionale (o array di date
monodimensionale se anche l'array di origine è
di tipo datetime).
series_indexldentificatore della serie dati passata, ovvero
una tra quelle ammesse:
doublé arrayAH;
//Copio nell'array A i volumi a 1 giorno dello strumento sul grafico
ArrayCopySeries {arrayA, MODE_VOLUME, SymbolO, PERIODAI) ;
Pagina 89
Dainesi - Guida di riferimento al linguaggio MQL
ArrayDimension
Parameters
array[] Array dal quale recuperare il numero di
dimensioni.
//Esempio.
int iDimension = ArrayDimension(arrayA);
ArrayGetAsSeries
Parameters
array[] Array da controllare.
//Esempio.
if(ArrayGetAsSeries(arrayA)—true)
Print("Array ordinato come una serie");
else
Print("Array ordinato in modo standard");
Pagina 90
Daìnesi - Guida di riferimento ai (inguaggio MQL
Arraylnitialize
Parametri
array[] Array numerico da inizializzare.
Value Nuovo valore di default per ogni elemento
dell'array.
ArraylsSeries
Parametri
array[] Array da controllare.
//Esempio.
if(ArraylsSeries(arrayA)) Print("L'array A contiene una serie");
Pagina 91
Doinesi - Guida di riferimento al linguaggio MQ/.
ArrayMaximum
Parametri
array[] L'array numerico sotto esame.
Count Elementi dell'array da esaminare.
Start Indice di partenza per la ricerca.
ArrayMaximum
Parametri
array[] L'array numerico sotto esame.
Count Elementi dell'array da esaminare.
Start Indice di partenza per la ricerca.
Pagina 92
Dainesi - Guida di riferimento al (inguaggio MQL
ArrayRange
Parametri
array[] Array da controllare
range_index Indice della dimensione controllata.
ArrayResize
Parameters
array[] Array da ridimensionare.
new_size Nuova estensione per la prima dimansione.
Pagina 93
Dainesi - Guida di riferimento al linguaggio MQf.
//Ridimensionamento dell'array
int arrayA[] [1] ;
ìnt iTot = ArrayResize{arrayA, 52) ;
iffiTot > 0)
forfint i = +)
arrayA[i][0])=iClose(Symbol(),PERIOD_W1,i);
ArraySetAsSeries
Parametri
array[] L'array numerico da impostare.
Set L'indicazione di impostazione a Serie (true per
impostare a serie o false per togliere
l'impostazione).
ArraySetAsSer:L&s (macd,true);
for(i=0; i< iSize; i++)
Pagina 94
Dainesi - Guida di riferimento al linguaggio MQL
ArraySize
Parametri
array[] Array.
ArraySort
Parametri
array[] L'array numerico da ordinare.
Count Numero di elementi da ordinare.
Start Indice dell'elemento di inizio ordinamento.
Pagina 95
Dainesi - Guida di riferimento Qt (inguaggio MQL
//Ordinamento di un array
doublé num_array[5]={4,l,6,3,9}; // Contenuto disordinato
ArraySort(num_array);
// Ora il contenuto è ordinato in modo crescente (1,3,4,6,9)
Pagina 96
Dainesi - Guida di riferimento al (ìnguaggio MQf.
AlertQ lsTradeAllowed()
ClientTerminalNameO Marketlnfo()
CompanyName() MessageBox()
Commento Periodo
GetLastError() PlaySound()
GetTickCount() Print()
HideTestlndicatorsO RefreshRates()
IsConnectedf) SendMailO
lsDemo() ServerAddressf)
IsDMsAllowedO Sleep()
lsLibrariesAllowed() SpeechText()
IsStoppedO Symbol()
IsTestingO UninitializeReasonO
Alert
void Alert(... )
trader che
CMH traghettano dal
discrezionale all'automatico passano in questa fase, dove si
preferisce che il sistema segnali le operazioni da effettuare,
lasciando all'utente l'effettiva esecuzione.
Un metodo alternativo e quello di attivare gli expert advisors
ma imponendo la conferma manuale alle operazioni generate.
Alla procedura non è possibile passare array mentre sono
consentiti tutti gli altri tipi di dato. Essendo i parametri
separati da virgole, il risultato altro non sarà che una
concatenazione del testo risultante.
I numeri decimali vengono troncati alla quarta cifra decimale
a meno di utilizzare la funzione di conversione DoubleToStr() .
Funzioni simili per interesse: Commento e Print().
Parametri
Qualsiasi valore separato da virgole.
if(VerificaLong()==true)
Pagina 98
Dainesì - Guida di riferimento al tinsuassio MQL
C//entTermina(Name
string ClientTerminalNameO
CompanyName
string CompanyNameO
Pagina 99
Dainesi - Guida dì riferimento al linguaggio MQL
Comment
void Comment(... )
Parametri
Qualsiasi valore, separato da virgole.
//Modo errato
comment("Lo Stop Loss è fissato a " + OrderOpenPrice O + 50*Point);
//ottengo "Lo stop Loss è fissato a 1.34520.0050"
GetLastError
int GetLastError()
Pagina 101
Dainesi - Guida di riferimento al (inguaggio MQL
GetTickCount
int GetTickCount()
int iStart;
int iElapsed;
int iForecast;
string
iStart = GetTickCount () ;
f or (int i = 0; i<Bars; i++)
{
OrderClose (TickToClose,OrderLots () ,Ask,3,Gr
if (i=10) iElapsed = GetTickCount () -iStart;
if (i>=10)
HideTestlndicators
Pagina 102
Dainesi - Guida di riferimento al (inguaggio MOJ.
Parametri
Hide TRUE se si vogliono nascondere gli indicatori
altrimenti FALSE
IsConnected
bool lsConnected()
//Testo la connessione
if(isConnectedf)==false) MessageBox{"Connessione interrotta!"}; ;
IsDemo
bool IsDemoQ
Pagina 103
Dainesi - Guida di riferimento al /j'n(?ua§g;o AIQ/.
//Testo 1'ambiente
if(IsDemo()==false) MessageBox("Conto Reale!");
IsDIIsAllowed
bool IsDIIsAllowedO
IsLibrariesAllowed
bool IsLibrarìesAllowedO
if(IsLibrariesAllowed()==false)
MessageBox(
Return(O);
Pagina 10-4
Dainesi - Guida ài riferimento al linguaggio MQL
IsStopped
bool lsStopped()
IsTesting
bool IsTestingO
Quest'altra utilissima funzione permette di sapere se
l'esecuzione dell'expert avviene in tempo reale oppure in un
backtest. Quest'aspetto rivolge un importanza notevole
qualora si vogliano ottimizzare i tempi di esecuzione. Alcuni
sistemi richiedono l'uso di indicatori esterni che a loro volta
ad ogni tick ri-analizzano centinaia se non migliaia di dati
(serie storica delle quotazioni). Questa caratteristica si
riperquote pesantemente sui tempi di test che sull'analisi di
un anno posson significare decine di ore di durata. La
soluzione consiste nell'utilizzare una versione "snella"14
dell'indicatore in fase di test in grado di ridurre sensibilmente
il tempo di esecuzione.
Un altro esempio in cui è utile questa funzione è nel test di
sistemi di "gestione", ovvero in tutti quei casi in cui l'ordine
viene immesso manualmente e lasciato poi all'expert la
gestione del money management.
14
La versione snella di un indicatore è una manipolazione dell'originale in grado di ritornare simili risultati con
differenza rispetto agli originali di un valore trascurabile (ad esempio i valori cambiano solo a partire dal sesto
decimale).
Pagina 105
Daìnesi - Guida di riferimento al linguaggio MQL
IsTradeAllowed
bool IsTradeAllowedO
Marketlnfo
Pagina 106
Dainesi - Guida di riferimento al linguaggio MQ).
Costante ! Descrizione
MODE^BID Ultimo prezzo Bid ricevuto. Equivale alla variabile Bid se riferito allo
strumento del grafico.
MODE_A5K Ultimo prezzo Ask ricevuto. Equivale alla variabile Ask se riferito allo
strumento del grafico.
MODE_POINT Dimensione del ponto sui prezzo della valuta. Equivale alla variabile Point
se riferito allo strumento del grafico.
MODE_DIGITS Numero di decimali utilizzati sul prezzo esposto. Equivale alla variabile
Digits se riferito allo strumento del grafico.
MOOE_SPREAD Valore dello Spread in punti.
MODE_STOPLEVEL Stop level in punti.
Parametri
Symbol Simbolo dello strumento finanziario.
Type Una delle costanti enumerative contenute nella
tabella riportata prima.
Pagina 107
DainesJ - Guida di riferimento al linguaggio MQf.
mLots = AmountPerOrder/dMarginRqd;
if(mLots<dMinLot)
mLots = dMinLot;
else
mLots = dMinLot + MathRoundf(mLots-dMinLot)/dLotStep)* dMinStep;
MessageBox
Parametri
Text Testo (opzionale) contenuto nel messaggio
mostrato.
Caption Testo (opzionale) del titolo del messaggio. Se il
valore è NULL verrà utilizzato il nome dell'Expert
Advisor.
Pagina 108
Dainesi - Guida di riferimento al tinguassio MQ}.
Costante Descrizione
IDOK OK è stato premuto.
IDCANCEL Cancel è stato premuto. Cancella nella versione italiana.
MB_CANCELTRYCONTINUE 0x00000006 Solo per Windows 2000: la message box contiene tre pulsanti: Cancel,
Try Again, Continue. Usare questa combinazione in luogo di
MB_ABORTRETRYIGNORE.
Pagina 109
Dainesì - Guida di riferimento al ftnguaggi'o MQL
MB_ICONERROR,
MBJCONHAND
Pagina 110
Dainesi - Guida di riferimento al tinguagsio A1QL
Period
int Periodo
PERIOD_M1
PERIOD_M5 5 minuti.
PERIOD_M15 15 minuti.
PERIOD_M30 30 minuti.
PERIODAMI 1 ora.
PERIODJ-H 4 ore.
PERIODJJl Giornaliero,
PERIOD.W1 Settimanale.
PERIOD_MN1 Mensile.
O {zero} Tìmeframe in
PlaySound
Parametri
Pagina 111
Dainesi - Guida di riferimento ai linguaggio MQÌ.
void Print(... )
Parametri
Qualsiasi valore o insiemi di valori separati da virgole.
//Uso di Print
if(GetLastError O==129)Print("Errore DoubleToString(Bid,5});
Pagina 112
Dainesi - Guida di riferimento ai (inguaggfo MQÌ-
RefreshRates
bool RefreshRatesQ
//Uso di RefreshRatesO
if {dose [0]>dSetup)
(
OrderSend(Symbol O , OP_SELL, Lots, Bid, 3 , O , O , " " , O , O , R e d ) ;
int iErr = GetLastErrorO ;
iffiErr==135 I I iErr==129)
(
RefreshRates();
OrderSend(Symbol O , OP_SELL, Lots, B i d , 3 , O , O , " " , O , O , R e d ) ;
SendMail
Parametri
Subject Soggetto della mail.
some_text Corpo del messaggio.
Pagina 113
Dainesì - Guida di riferimento al linguaggio MQj.
Servet Grafici Oggetti Posizioni aperte Consiglieri esperti Ernail Editore Eventi
nm
SMTP server: [^
SMTPIogin: \^
SMTPpasswotd: [
Da
GK , Annulla
ServerAddress
string ServerAddress()
1S
URL o Uniform Resource Locator è l'acronimo con il quale si definisce la sequenza di cartteri che identifica
univocamente l'indirizzo di una risorsa internet.
Pagina 114
Dainesi - Guida di riferimento al linguaggio MQL
S/eep
Parametri
Milliseconds Intervallo di pausa espresso in millisecondi.
OrderSelect(i,SELECT_BY_POS);
if(OrderType()==OP_BUY)
OrderClose(OrderTicket O,OrderLots(),B,3,Red);
if(OrderType()==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),A,3,Red);
if (OrderType()>OP_SELL)
OrderDelete(OrderTicket());
//Attesa di mezzo secondo
Slesp(500);
Pagina 115
Dainesi - Guida di riferimento ai /jnguaggio MQL
Symbol
string Symbol()
OrderSelect(i,SELECT_BY_POS);
if(OrderSymbol() =- Symbol())GestioneOrdine();
UninitializeReason
int UninitializeReason()
Pagina 116
Dainesi - Guida di riferimento al linguaggio MQL
Descrizione
o Lo script è terminato autonomamente.
REASON...REMOVE 1 Expert rimosso dal grafico,
REASON_RECOMPILE 2 Expert ricompilato.
switch(Uni. itializeReason() )
Funzioni di Conversione
CharToStr() StrTolnteger()
DoubleToStr() StrToTime()
NormalizeDouble() TimeToStr()
StrToDouble()
CharToStr
Parametri
char code Codice ASCII del carattere da ritornare.
il risultato sarà:
"% posizione al BEP e k all'attivazione del trailing stop"
Pagina 120
Dainesi - Guida di riferimento al fingi/aggio MQL
Pagina 121
Dainesi - Guida di riferimento al fingi/aggio MQL
Pagina 122
DaJnesi - Guida di riferimento al linsuassio MQL
217 10001111
220 10010000
221 10010001 a#145; Left single quotation mark
146 222 10010010 a#146; Righi singie quotation rnark
147 223 10010011 a#147; Left doublé quotation mark
10010100 ” Right doublé quotation
mark
225 10010101 Sbull; Buliet
226 10010110 – Sndash; En dash
227 10010111 S1; arndash; Ern dash
230 10011000 &ti!de; Small tilde
153 10011001 a#153; atrade; Trade mark sign
154 10011010 a#154; ascaron; Latin small letter S with
caron
10011011 › › Single right-pointing angle
quotation mark
234 10011100 a#156; œ Latin small ligature oe
235 9D 10011101
236 9E 10011110 ž Latin small letter z with
Pagina 123
Daìnesi - Guida di riferimento ai f/nguaggio MQL
Pagina 124
Dainesi - Guida di riferimento al linguaggio MQL
Pagina 125
Doinesi - Guida di riferimento al linguaggio MQL
DoubleToStr
Parametri
Value Valore numerico.
Digits Numero di decimali rappresentati (da O a 8).
Pagina 126
Daìnesì - Guida dì riferimento al /injuaggio AiQjL
doublé dM = iMA(SymbolO,Periodi),26,0,MODE_EMA,PRICE_CLOSE,1);
Comment("Valore della media esponenziale: " + DoubleTOString(dM, 4));
NormalizeDouble
Parametri
Value Valore a virgola mobile.
Digits Precisione desiderata (0-8).
/ / N o r m a l i z z a z i o n e del p r e z z o d'ordine
OrderClose(OrderTicket(),OrderLots O,NormalizeDouble(Bid,4),3,Green);
StrToDouble
Parametri
Value Stringa di testo contenente un numero decimale.
Pagina 127
Da/nesi - Guida dì riferimento al linguaggio MQÌ.
StrToInteger
Parametri
Value Stringa di testo contenente un numero intero.
StrToTime
Parametri
Value Stringa della data in formato"yyyy.mm.dd nhrmi".
datetime dtStart;
dStart = StrToTime("2010.4.2 18:53");
dStart = StrToTime{"18:53"); //Ritorna la data di oggi all'ora indicata
dStart = StrToTime("2010.4.2");//Ritorna il giorno all'ora attuale
Pagina 128
Dainesi - Guida di riferimento al linguaggio MQL
TimeToStr
Parametri
Value Numero positivo di secondi passati dal 1 ° Gennaio
1970.
Mode Optional - Formato data preferito (uno o più dei
seguenti)
Formati ammessi
(nell'esempio la data è il 2 Maggio 2010 16:40 25")
TIME_DATE formato "yyyy.mm.dd" (2010.05.02)
TIME_MINUTES formato "hh:mi" (16:40)
TIME_SECONDS formato "hh:mi:ss" (16:40:25)
datetime dtclose;
dtclose = OrderCloseTimeO ;
Print("Ordine chiuso il " + TimeToStr(dtclose, TIME DATE ITIME_SECONDS) ;
Pagina 129
Dainesi - Guida di riferimento al (inguauio MQf.
Indicatori personalizzati
Pagina 131
Dainesi - Guida di riferimento al linsua$$ìo MQÌ.
IndicatorBuffers
Un indicatore può essere semplice, in tal caso esporrà un singolo valore per ogni barra, o composto e in questo caso
ogni barra avrà più serie dati che rappresentano i valori dell'indicatore. La media è un indicatore semplice infatti l'unico
valore che mostra è quello del prezzo medio. L'ADX è un indicatore composto i cui valori esposti sono l'ADX e le sue
componenti direzionali (DI+ e DI-).
Pagina 132
Daìnesi - Guida di riferimento al ftnguaggjo MQ1.
Parametri
Count Numero di Buffers a cui allocare memoria (8
al massimo).
//Esempio
doublé i n d _ b u f f e r ì [ ] ;
doublé i n d _ b u £ f e r 2 [ ] ;
doublé ind b u f f e r 3 [ ] ;
IndicatorBuffersO) ;
SetlndexStyle(O,DRAW_LIHE,STYLE_SOLID,31 ;
etlndexDrawBegin(O, SMA! ;
IndicatorDigits(2);
SetIndexBuffer(0,ind_bufferl);
SetlndexBuffer(1,ind_buffer2);
SetlndexBuffer{2,ind_buffer3);
Pagina 133
Dainesi - Guida di riferimento al linguaggio
IndicatarCounted
int lndicatorCounted()
int starti)
int limit;
int counted_bars=lndicatorCounted() ;
limìt=Bars-counted_bars;
return(O);
IndìcatorDìsits
Pagina 134
Dainesi - Guida di riferimento al linguaggio MQ/.
Parametri
Digits Precisione, numero di posizioni dopo la virgola.
doublé ind_bufferl[] ;
doublé ind_buffer2[] ;
doublé ind_buffer3[];
IndicatorBuffers(3);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3) ;
SetlndexDrawBegìn(O, SMA);
IndicatorDigits(2);
SetlndexBuffer(O,ind_bufferl);
SetlndexBuffer(1,ind_buffer2);
SetlndexBuffer(2,ind_buffer3);
return(O);
Indica torShortName
Parametri
Name Nome mostrato (non necessariamente uguale
al nome dell'indicatore).
Pagina 135
Dainesì - Guida di riferimento al linguaggio MQJ.
doublé ind_bufferl[] ;
doublé ind_buf fer2 [] ;
doublé ind~buffer3 [] ;
IndicatorBuffers (3) ;
set!ndexBuffer(0,ind_bufferl);
SetlndexBuf fer (1, ind_buffer2) ;
SetIndexBuffer(2,ind_buffer3) ;
return {01 ;
SetlndexArrow
Pagina 136
Dainesi • Guida di riferimento al /jnguaggio A1QÌ
Parametri
Index Indice cardinale del buffer contenente i dati. Deve
essere da O a 7.
Code Codice del simbolo del font Wingdings o una
costante facente parte di quelli seguenti:
Costante Valore
//Esempio
SetIndexArrow{0, 217); //Imposta il simbolo A
Valore Simbolo Valore Simbolo Valore Simbolo Valore Simbolo Valore Simbolo
32 (vuoto) '7 «- 122 M 167 212
'8 t 123 168 a 213 ^
<SJ
'9 ffc 124 • 169 * 214 E>
10 P- 125 170 -*• 215
11 + -
>
126 171 * 216
12 0 127 D 172 * 217 t'
13 * 128 © 173 * 218 -f
14 * 129 © 174 * 219 C
15 * 130 ® 175 * 220 0
16 * 131 ® 176 t 221 0
17 t 132 ® 177 i 222 o
18 * 133 © 178 * 223 <-
19 * 134 © 179 « 224 ^
IO C 135 © 180 * 225 t
Pagina 137
Dainesi - Guida di riferimento al linguaggio MQL
66 * 111 p 156
-^
201 <? 246
67 i 112 D 157 w 202 t 247
249
250
206
207
74
75
76
SetlndexBuffer
Pagina 138
Daìnesi - Guida di riferimento al linguaggio MQL
Parametri
Index Indice della linea dell'indicatore. Da O a 7.
array[] Array che memorizza I valori calcolati
dell'indicatore.
doublé ExtBufferMedia[];
int initO
(
SetIndexBuffer{0, ExtBufferMedia); // imposta
dati
SetlndexDrawBegin
Parametri
Index Indice del set di dati dell'indicatore. Da O a 7.
Begin Indice della prima barra dalla quale inizia la
rappresentazione dell'indicatore.
SMA - 20;
extern doublé Dev - 1.5;
Pagina 139
Dainesi - Guida di riferimento al /inguagg/o MQÌ-
double i n d _ b u f f e r ì [ ] ;
doublé i n d _ b u f f e r 2 [ ] ;
doublé ind__buffer3[] ;
int init(l
(
IndicatorBuffers(3);
SetlndexStyle(O,DRAW_LINE,STYLE^SOLID, 3);
SetlndexDrawBegin(O, SMA);
IndicatorDigits(2);
SetlndexBuffer(O,ind_bufferì);
SetIndexBuffer(l,ind_buffer2);
SetlndexBuffer(2, ìnd_buffer3);
return(0);
SetlndexEmptyValue
Parametri
Index Serie dati. Da O a 7.
Value Nuovo valore per empty value.
SetlndexLabel
Parametri
Pagina 141
Dainesi - Guida di riferimento al (inguag$io MQJ.
SetlndexShift
Parametri
Index Serie dati. Da O a 7.
Shift Scostamento di rappresentazione in barre.
set!ndexShift(0,Jawsshift);
SetIndexShift(l,TeethShift);
SetlndexShift(2,LipsShift);
SetlndexStyle
Parametri
Pagina 142
Dainesi - Guida di riferimento al /jnguags'o MQL
DRAW_HISTOGRAM 2 telegramma.
DRAW_NONE 12 No drawing.
Pagina 143
Dainesi - Guida di riferimento al (insuaggjo MQL
SetLevelStyle
Parametri
draw_style Stile di disegno. Ad eccezione di STYLE_SOLID,
tutti gli altri stili sono validi se la larghezza
rimane impostata a 1. Il valore deve
corrispondere ad una delle costanti
enumerative Shape style. Il valore EMPTY
indica che la linea non verrà disegnata.
line_width Larghezza della linea. Valori da 1 a 5. EMPTY
significa nessun cambiamento.
Clr Colore della linea.
SetLevelValue
Parametri
Level Indice del livello (da O a 31 essendo al
massimo 32 i livelli).
Pagina 144
Dainesi - Guida di riferimento al t/nguaggfo MQf.
Pagina 145
Dainesi - Guida di riferimento al linguaggio MQL
Pagina 147
Dainesi - Guida di riferimento al linguaggio MQL
datetime CurTime()
if(CurTimeO-OrderOpenTìme()<360) r e t u r n ( O ) ;
Day
int Day()
if(Day()<5) return(O);
DayOfWeek
int DayOfWeek()
// sì scartano I weekend.
if(DayO£Week<>•-O [ I DayOfWeek<)=-6) return(O);
Pagina 148
Dajnesi - Guida di riferimento al //nguoggio MQÌ-
DayOfYear
int DayOfYearQ
if (DayOfYearO-- 2 4 5 )
return(true);
Hour
int HourQ
bool is m siesta=false;
i f ( H o u r ( ) > - 1 2 I I Bour()<17)
is siesta=true;
LocalTime
datetime LocalTime()
if(LocalTimeO-OrderOpenTime()<360) return(0);
Pagina 149
Dainesi - Guida di riferimento al linguaggio MQL
Minute
int Minute()
if(Minute()<=15)
return("first quarter");
Month
int Month()
if(Month()<=5)
r e t u r n ( " f ì r s t half of y e a r " ) ;
Secondi
int SecondsQ
if(Seconds()<=15)
return(0) ;
Pagina 150
Dainesi - Guida di riferimento al /inguaggio MQL
TimeDay
Parametri
Date Data.
TìmeDayOfWeek
Parametri
Date Data.
int weekday=TiraeDayOfWeek(D'2004.11.2') ;
// il giorno è 2 - tuesday
TimeDayOfYear
Pagina 151
Dainesi - Guida dì ri/erimento al /inguaggro MQL
Parametri
Date Data.
Lnt day=TimeDayOfYear(CurTime());
TimeHour
Parametri
Time Data.
Lnt h=TimeHour{CurTime());
TimeMinute
Parametri
Time Data.
nt m=TimeMinute(CurTime()) ;
Pagina 152
Dainesi - Guida di riferimento al /jnguaggio MQi.
TimeMonth
Parametri
Time Data.
TimeSeconds
Parametri
Time Data.
TimeYear
Parametri
Time Data.
Pagina 153
Dainesi - Guida di riferimento al (inguoggjo
int y=TimeYear(CurTime());
Year
int Year()
Pagina 154
Dainesi - Guida di riferimento al (mguagsio MQL.
FileClose
Parametri
Handle Puntatore al file, restituito dalla funzione
FileOpenQ
FileFlush
Parametetri
Handle Puntatore al file, restituito dalla funzione
FileOpen()
int taars_count=Bars;
int hFile = FUeOpen("pippo.csv",FILE_CSV|FILE_WRITE) ;
FilaFlush(hFile);
for(int i=0;i<bars_count;i++)
FileWrite(hFile, i+1,open[i],Close[i],High[i], Low[i]);
FileClose(hFile);
FilelsEnding
Parametri
Handle Puntatore al file, restituito dalla funzione
FileOpen()
if(FilelsEnding(hFile)-=true)
FileClose (hFile
return(false) ;
FilelsLineEnding
Pagina 157
Dainesi - Guida di riferimento ai linguaggio MQL
Parametri
Handle Puntatore al file, restituito dalla funzione
FileOpen()
if(FilelsLineEnding(hFile))
FileClose(hFile);
return(false);
FileOpen
Parametri
Filename Nome del file, con qualunque estensione. Se
contenuto in una sottocartella è necessario
dichiararlo (es. "\cartella prova\pippo.txt").
Mode Modalità di aperura del file. La modalità può essere
una combinazione delle scelte seguenti: FILE_BIN,
FILE_CSV, FILE.READ, FILE_WRITE.
Pagina 158
Dainesì - Guida di riferimento ai linguaggio
int hFile;
hFile = FileOpen("Pippo.csv",FILE_CSV|FILE_READ, ' ; '} ;
if{hFile <1)
(
printC'Non è stato possibile aprire Pippo.csv, codice di errore:
GetLastErrorO);
return (false! ;
FileOpenHistory
Parametri
Filename Nome del file, con qualunque estensione. Se
contenuto in una sottocartella è necessario
dichiararlo (es. "\cartella prova\pippo.txt").
Mode Modalità di aperura del file. La modalità può essere
una combinazione delle scelte seguenti: FILE_BIN,
FILE_CSV, FILE_READ, FILE_WRITE.
Delimiter Carattere usato come delimitatorer per I file csv
(CSV - Comma Separated Values). Il simbolo
predefinito è ';'•
Pagina 159
Dainesi - Guida di riferimento al ftnguaggjo
FileReadArray
Parametri
Handle Puntatore al file, restituito dalla funzione
FileOpen().
array[] Array che ospiterà I dati letti.
Start Posizione di partenza per la memorizzazione
all'interno dell'array.
Count Numero di elementi da leggere.
int hFile;
doublé varray[10];
hFile -Fileopen("filena 3.dat", FILE_BIN|FILE_READ);
if(hFile >0)
Pagina 160
Dainesì - Guida dì riferimento al fingi/aggio MQL
FileReadlnteger
Parametri
Handle Puntatore al file, restituito dalla funzione
FileOpen().
Size Dimensione dell'intero. Valori possibili:
CHAR_VALUE(1 byte), SHORT_VALUE(2 byte) o
LONG_VALUE(4 byte).
int hFile;
int value;
hFile = FileOpenf"Pippo.dat", FILE_BIN|FILE_READ);
if(hFile >0)
<
value-FileReadlnteger(hFile,SHORT_VALHE];
FileClose(hFile);
FileReadNumber
Pagina 161
Dainesi - Guida di riferimento al frnguaggio MQL
Parametri
Handle Puntatore al file, restituito dalla funzione
FileOpen().
int hFile;
int value;
hFile =FileOpen("Pippo.csv", FILE__CSV, ';');
ifthFile >OI
)
value = FileReadNujnber (hFile) ;
FileClose(hFile);
FileReadStrins
Parametri
Handle Puntatore al file, restituito dalla funzione
FileOpenq.
Length Numero di caratteri da leggere.
int hFile;
string str;
hFile - FileOpenC'Pìppo.csv", FILE_CSVI FILE__READ) ;
if(hFile >0)
f
str=FileReadString(hFile) ;
FileClose(hFile) ;
Pagina 162
Dainesi - Guida di riferimento al linguaggio MQf.
FileSeek
Parametri
Handle Puntatore al file, restituito dalla funzione
FileOpen().
Offset Offset in byte dall'origine.
Origin Posizione iniziale. I valori ammessi sono:
SEEK_CUR - Dalla posizione corrente
SEEK_SET - Dall'inizio
SEEK_END - Dalla fine del file
FiteSize
Parametri
Pagina 163
Dainesi - Guida dì riferimento al (inguagg/o MQL.
FileWrite
Parametri
Handle Puntatore al file, restituito dalla funzione
FileOpen().
Dati utente da scrivere nel file, separati da
virgole.
int hFile;
datetime orderOpen=OrderOpenTirae O ;
hFile =FileOpen("filename", FILE_CSV|FILE_WRITE, ';');
iffhFile >0)
Pagina 164
Dainesi - Guida di riferimento al linguaggio MQL
FileWrite(hFile,Close[0],Open[0],High[0],Low[0],TiraeToStr(orderOpen
FileClose(hFile);
FileWriteArray
Parametri
Handle Puntatore al file, restituito dalla funzione
FileOpen().
array[] Array contenente i dati.
Start Indice di partenza all'interno dell'array.
Count Numero di elementi da scrivere.
int hFile;
doublé BaropenValues [10] ;
Pagina 165
Dainesi - Guida di riferimento al linsuagsio MQL
FileWriteDouble
Parametri
Handle Puntatore al file, restituito dalla funzione
FileOpen().
Value Valore da scrivere.
Size Formato opzionale. Può essere uno dei due
seguenti:
DOUBLE_VALUE (8 bytes, default)
FLOAT_VALUE (4 bytes).
int hFile,-
doublé vari = 0.375;
hFile =FileOpen("Pippo.dat", FILE_BINIFILE_WRITE);
if (hFile <1)
{
Print("Impossibile aprire il file - ",GetLastError( I ) ;
return(0);
}
FileWriteDouble(hFile, vari, DOUBLE_VALUE);
//. . .
FileClose(hFile);
FileWritelnteger
Pagina 166
Dainesi - Guida di riferimento al linguaggio MQL
Parametri
Handle Puntatore al file, restituito dalla funzione
FileOpen().
Value Valore da scrivere.
Size Formato ozionale della dimensione del valore. Può
essere uno dei seguenti valori:
CHAR_VALUE (1 byte),
SHORT_VALUE (2 byte),
LONG_VALUE (4 byte, default).
int value=10;
hFile -FileOpenC'Pippo.dat", FILE_BIN|FILE_»RITE);
ìf(hFile <1)
(
Print ("Impossibile aprire il file. Code: ", GetLastError ( ) ) ;
return (0) ;
1
FileWritelnteger(hFile, value, SHORT_VALUE);
//...
FileCloae(hFile);
FileWriteString
Parametri
Handle Puntatore al file, restituito dalla funzione FileOpen().
Value Testo da inserire.
Length Lunghezza dei caratteri da scrivere.
int hFile;
string str="testo da inserire";
hFile =FileOpen("Pippo.bin", FILE_BINIFILE_WRITE)
if (hFile <1)
Pagina 167
Dainesi - Guida dì riferimento al linguaggio MQf.
Pagina 168
Daìnesi - Guida di riferimento al (inguaggio MQf.
/I
//I
GlobalVariableCheck() GlobalVariableSetOnCo
GlobalVarìableDel() ndition()
GlobalVariableGetO GlobalVariablesDeleteA
GlobalVariableSet() ll()
Pagina 169
Daìnesi - Guida di riferimento al Mnguaggio MQL
GlobalVariableCheck
Parametri
Name Nome della variabile globale.
// Controllo di esistenza
if(GlobalVariableCheck("MaxExposition")==false)
GlobalVariataleSet("MaxExposition ",10000) ;
GlobalVariableDel
Parametri
Name Nome della variabile globale.
Pagina 170
Dainesì - Guida di riferimento al (injuosgio MQL
Global VariableGet
Parametri
Name Nome della variabile globale.
GlobalVariabteSet
Parametri
Name Nome della variabile globale.
Value Valore numerico da impostare.
Pagina 171
Dainesi - Guida di riferimento al /inguaggio MQÌ.
GlobalVariableSetOnCondition
Parametri
Name Nome della variabile globale.
Value Valore numerico da impostare.
check_value Valore da confrontare con l'attuale valore.
GlobalVariablesDeleteAII
void GlobalVariablesDeleteAIIO
GlobalVariablesDeleteAIIO ;
Pagina 172
Dainesi - Guida di riferimento at lìnsuassio MQL
Funzioni matematiche e
trigonometriche
Pagina 173
Dainesi - Guida di riferimento al linguaggio MQL
MathAbs
Parametri
Value Valore numerico.
doublé dP = closetO];
doublé dA - IMA(Symbol(),Pe od(), AvPeriods, O, AvType, AvPrice, 0);
doublé dT = dP - dA;
MathArccos
doublé MathArccos(double x)
Parametri
X Valore tra -1 e 1 di cui si vuole conoscerere
l'ArcoCoseno.
doublé x = 0.32696;
doublé y;
y = MathArcsin(x);
Print("Arcoseno di
y = MathArcos(x) ;
Print("Arcocoseno di ",x," = " ,y) ;
//Output: Arooseno di 0.326960 - 0.333085
//Output: Arcocoseno di 0.326960 = 1.237711
MathArcsin
doublé MathArcsin(double x)
Pagina 175
Dainesi - Guida di riferimento al lin$uas$io MQL
Parametri.
X Valore del quale si desidera calcolare l'arcoseno.
doublé x = 0.32696;
doublé y;
y - MathArcsin(x);
Print("Arcoseno di ",x," = ",y);
y = MathArcos (x) ;
MathArctan
doublé MathArctan(double x)
Pagina 176
Dainesi - Guida di riferimento al linsuassio MQL
Parametri
X Un numero rappresentante una tangente.
doublé x = -8
y = MathArctan(x);
Print("L'arcotangente di ",x," è ",y);
//Output: L'arcotangente di -862.42 è -1.5696
MathCeil
doublé MathCeil(double x)
Parametri
X Valore numerico, anche frutto di un espressione.
Pagina 177
Dainesi - Guida di riferimento al linguaggio MQL
double poin;
doublé y = (Ask-Bid)/poin;
doublé Slippage = MathCeil(y);
/*Output:
Lo Slippage con uno spread di 1.6 pips è pari a 2
*/
MathCos
Parametri
Value Un angolo misurato in radianti.
doublé pi = 3.1415926535;
doublé x, y;
x = pi/2;
y = MathSin(x);
Print|"Seno di ",x," è ",y);
y - MathCos(x) ;
MathExp
doublé MathExp(double d)
Pagina 179
Dainesi - Guida di riferimento al linguaggio MQL
Parametri
O Un numero specificante la potenza.
I"
doublé x-2.302585093,y;
y=MathExp(x);
Print("I/ esponenziale di " + x + " è ",y);
//Output: L'esponenziale di 2.3026 è 10
MathFloor
doublé MathFloor(double x)
Parametri
X Valore numerico.
Pagina 180
Dainesi - Guida di riferimento al /inguaggio A1QJ.
doublé Poin;
doublé y - ( H i g h [ 0 ] - L o w [ 0 ] ) / P o i n ;
doublé Range - MathFloor(y);
/*0utput:
ps
*/
MathLog
doublé MathLog(double x)
Parametri
X Valore per il quale deve essere trovato il logaritmo.
doublé x=9000.0,y;
y-MathLog(x) ;
PrintC'Log di " + x +" è " y) ;
Pagina 181
Dainesi - Guida dì riferimento al (inguaggio MQ/.
MathMax
Parametri
valuel Primo valore numerico.
value2 Secondo valore numerico.
MathMin
Parametri
valuel Primo valore numerico.
value2 Secondo valore numerico.
Pagina 182
Dainesi - Guida di riferimento al linguaggio MQf.
MathMod
Parametri
value Dividendo.
value2 Divisore.
doublé x=-10.0,y=3.0,z;
z=MathMod(x,y);
Printf'Il resto di ",x," / ",y," è
//Output: II resto di -10 / 3 è -1
MathPow
Pagina 183
Dainesi - Guida di riferimento al fingi/aggio A1QJL
Parametri
Base Valore della base.
Exponent Valore dell'esponente.
doublé x=2.0,y=3.O,z;
z = MathPow(x,y);
Print(x," alla potenza di ",y," è ", z)
//Output: 2 alla potenza dì 3 è 8
MathRand
int MathRandQ
MathSrand(LocalTime() } ;
// Display 10 numbers.
for (int i=0;i<10;i++ )
Print("random value ", MathRand());
Pagina 184
Dainesi - Guida di riferimento ai frnguaggio MQL
MathRound
Parametri
Value Numero da arrotondare.
MathSin
Pagina 185
Dainesi - Guida di riferimento ai linguaggio MQjL
Parametri
Value Un angolo, misurato in radianti.
doublé pi-3.1415926535;
doublé x, y;
x-pì/2;
y=MathSin(x) ;
PrintC'Seno di ",x," è ",
y=MathCos(x) ;
Print("Coseno di ",x," è
//Output: Seno di 1.5708
// Coseno di 1.5708 è O
Pagina 186
Danesi - Guida dì riferimento ai (inguaggio MQL
MathSqrt
doublé MathSqrt(double x)
Parametri
X Numero positivo.
doublé result=MathSqrt(144);
PrintC'La radice quadrata di 144 è ", resulti;
MathSrand
Parameters
Seed Base per la generazione di numeri casuali.
MathSrand(LocalTime () ) ;
// Mostra 10 numeri,
forfint i=Q;i<10;i++ )
Print ("Valore casuale ", MathRand () ) ;
Pagina 187
Dainesì - Guida di riferimento al (rnguoggio MQL.
MathTan
doublé MathTan(double x)
Parametri
X Angolo in radianti.
Pagina 188
Dainesi - Guida di riferimento al linguaggio MQL
doublé pi = 3.1415926535;
doublé x,y;
x = MathTan(pi/4);
Print("Tangente di pi/4 è ",xl;
//Output: Tangente di 0.7856 è 1
Pagina 189
Dainesi - Guida di' riferimento al fingi/aggio MQ}.
ObjectCreate() ObjectNameO
ObjectDeleteO ObjectsDeleteAIIO
ObjectDescriptionO ObjectSet()
ObjectFind() ObjectSetFiboDescriptionO
ObjectGet() ObjectSetTextO
ObjectGetFiboDescriptionO ObjectSetVisibilityO
ObjectGetShiftByValueO ObjectsRedraw
ObjectGetValueByShìftO ObjectsTotal()
ObjectGetVisibilityO ObjectType()
ObjectMove()
17
La dizione Oggetto non deve trarre in inganno i programmatori abituati ai paradigmi OOP
("Object Oriented Programming") in quanto trattasi di concetti differenti: qui si parla di "oggetti
grafici" e non istanze di classi generali.
Pagina 191
Dainesi - Guida di riferimento al linguaggio MQÌ,
ObjectCreate
bool ObjeCtCreate(string rame, int type, int window, datetime tirne!, doublé pricel,
datetime time2=0, doublé prìce2=0, datetime time3=0, doublé price3=0)
Parametri
Marne Nome univoco dell'oggetto.
Type Tipo di oggetto. Può essere uno delle costanti
enumerative seguenti:
Pagina 192
Dainesi - Guida di riferimento al linguaggio MQL
OBJJTRENDBYANGLE 3 Trend by angle. Usa 1 coordinata. Per impostare l'angolo della linea usare la
funzione Ob]ectSet().
Pagina 193
Daìnesi - Guida di riferimento al linguaggio MQL
// nu
-f(!ObjectCreate("Etìchetta", OBJ^LABEL, O, O, 0)ì
ObjectDelete
Parametri
Name Nome dell'oggetto da cancellare.
Obj&ctDelete("Etichetta");
ObjectDescription
Pagina 194
Dainesi - Guida di riferimento al (inguaggio MQ/-
0 Scotimento automatico
\-'} Mostra Apertura. Massimo, Minimo, Chiusura
D Pitia scala
[i] Mostra Gr^ia
D Mostra vdumi
[ OK ] [ Annulla | | Reset
Parametri
Marne Nome dell'oggetto.
Pagina 195
Daìnesi - Guida di riferimento al (inguaggio MQL
ObjectFind
Parametri
Name Nome dell'oggetto ricercato.
ObjectGet
Parametri
Name Nome dell'oggetto.
Index Indice della proprietà dell'oggetto. Può essere
una delle proprietà elencate nelle relative
costanti di enumerazione.
Pagina 196
Dainesi - Guida di riferimento al linguaggio MQj.
OBJPROP_STYLE 7 int Imposta/ottiene lo stile della linea dell'oggetto tra i tipi seguenti
STYLE SOLID, STYLE DASH, STYLE DOT, STYLE DASHOOT,
STYLE_OASHDOTOOT.
OBJPROP_WIDTH 8 int Imposta/ottiene lo spessore della linea. I valori possibili vanno da 1
a 5.
OBJPROP_BACK 9 bool Imposta/ottiene un valore booteano per definire se l'oggetto è di
sfondo o è "solido".
OBJPROP_RAY 10 bool Imposta/ottiene un valore booleano per definire l'estensione
dell'oggetto.
OBJPROP_ELLIPSE 11 bool Imposta/ottiene un valore booleano per endere ellittici gli archi di
Flbonacci.
OBJPROP_FONTSIZE 100 int Valore intero per impostare/recuperare la dimensione del font di un
oggetto di testo.
OBJPROP_CORNER 101 int Valore intero per impostare/recuperare un angolo fisso di una
etichetta. Deve essere un valore da 0 a 3.
OBJPROP_XDISTANCE 102 int Valore intero per impostare/recuperare la coordinata X dell'oggetto
in pixeis.
OB3PROP_YDISTANCE 103 int Valore intero per impostare/recuperare la coordinata Y dell'oggetto
in plxels.
Pagina 197
Odi/lesi - Guida di riferimento al (inguaggio MQL
ObjectGetFiboDescription
Parametri
Name Nome dell'oggetto.
Index Indice del livello di Fibonacci.
ObjectGetShiftByValue
Parametri
Name Nome dell'oggetto.
Value Valore del prezzo.
Pagina 198
Dainesi - Guida di riferimento al linguaggio MQL
ObjectGetVatueByShift
Parametri
Name Nome dell'oggetto
Shift Indice della barra.
ObjectMove
Parametri
Name Nome dell'oggetto.
Point Indice delle coordinate da spostare.
timel Nuovo valore di data.
pricel Nuovo valore di prezzo.
Pagina 199
Dainesì - Guida dì riferimento al (inguoggìo
ObjectName
Parametri
Index Indice dell'oggetto sul grafico. L'indice deve essere
compreso tra O e ObjectsTotal() - 1.
string name;
forfint i=0;i<obj_total;i+-t-)
name=objectName (i) ;
Print{i,"Il nome dell'oggetto è
ObjectsDeleteAII
Parametri
Window Indice della finestra ove rimuovere gli oggetti.
L'indice deve essere maggiore o uguale a O e
minore del valore ritornato dalla funzione
WindowsTotalf).
Type Opzionale. Tipo oggetto da cancellare. Questo
valore può essere una della costanti di
enumerazioni riportate più sopra (vedi
ObjectCreate). Se viene indicato il valore EMPTY si
considerano tutti I tipi di oggetto.
Pagina 200
Dainesi - Guida di riferimento al linsuassio MQL
ObjectsDeleteAll(2, OBJ_HLINE); // re
from window
3 (Index 2).
ObjectSet
Parametri
Name Nome dell'oggetto.
Index Indice della proprietà dell'oggetto. Può essere
una delle costanti enumerative delle proprietà
dell'oggetto.
Value Nuovo valore della proprietà.
ObjectSetFiboDescription
Parametri
Name Nome dell'oggetto.
Index Indice del livello di Fibonacci (0-31 ).
Text Nuova descrizione da assegnare al livello Fibonacci.
ObjectSetFiboDescriptionC'MyFiboObject,2,"Second l i n e " ) ;
ObjectSetText
Parametri
Name Nome dell'oggetto.
Text Testo della descrizione.
font_size Dimensione del Font.
Font Nome del Font.
text_color Colore del testo (ove rappresentato sul grafico).
ObjectsTotal
int ObjectsTotal()
Pagina 202
Dainesi - Guida di riferimento al (inguaggio A10J.
int obj_total=objectsTotal O ;
string name;
for(int i=0;i<obj_total;i++)
{
name=ObjectName(i);
Print(i,"Il nome dell'oggetto #",i," è " + name);
ObjectType
Parametri
Name Nome dell'oggetto.
if(objactTypeC'lineaDUE")!=OBJ_HLINE) r e t u r n ( O ) ;
Pagina 203
Dainesi • Guida di riferimento al linguaggio MQL
C-i i ii
Variabili predefinite
Ask
doublé Ask
Bars
int Bars
Numero di barre presenti sul grafico.
int counter=l;
f o r t i n t i=l;i<=Bars;i++)
Print(Closeti-ll);
Od
doublé Bid
Pagina 206
Dainesi - Guida di riferimento al //nguaggjo MQ/.
dose
doublé Close[]
Questa variabile è un puntatore ad un array modimensionale
(ovvero un elenco) che memorizza il prezzo di chiusura della
barra. Il prezzo corrente è dato dal Close dell'elemento 0.
L'elemento 1 rappresentra la barra precedente e così via.
L'elemeto richiamato va racchiuso tra due parentesi quadre.
Digits
int Digits
P r i n t ( D o u b l e T o S t r ( C l o s e [ i - 1 ] , Digits))
High
doublé High[]
Pagina 207
Dainesi - Guida di riferimento ai linguaggio MQt
Volume[i]);
FileClose (handle) ;
Low
doublé Low[]
Pagina 208
Dainesì - Guida di riferimento al linguaggio MQL
Open
doublé Open[]
Point
doublé Point
Pagina 209
Dainesi - Guida di riferimento al (rnguaggio A1Q/.
Time
datetime Tìme[]
Pagina 210
Dainesi - Guida di riferimento al Unqua^ìo MQL
Volume
doublé Volumef]
FileWrite(handle,Time[i],0pen[i],High[i],Low[i],close[
FileClose (handle) ;
Pagina 211
Dainesi - Guida di riferimento ai lin$uassio MQL
Costanti enumerative
Prezzi applicati
Pagina 213
Dainesi - Guida di riferimento al /inguaggio MQL
Forme disegnate
Codici di errore
^include <stdlib.mqh>
void SendMyMessage(string text)
int check;
SendMail("Oggetto del messaggio", text);
Pagina 214
Dainesi - Guida di riferimento al iìn^ua^io MQL
check=GetLastError();
if(check !=ERR_NO_MQLERROR)
Print("Impossibile inviare i:
;rror:",ErrorDescription(check));
ERR_TRADE_TOO_MANY_ORDERS The amount of open and pending orders has reached thè limit
set by thè broker.
Pagina 215
Danesi - Guida di riferimento al /inguaggio MQf.
ERR_TRADE_H EDGE_PROHIBITED 149 An attempi to open a position opposite to thè existing one
when hedging is disabted.
ERR_JRADE_PROHIBITED_BY_FIFO 150 An attempi to dose a position contravening thè FIFO rule.
Pagina 216
Dainesi - Guida di riferimento al fingi/aggio
ERR_TRADE_NOT_ALLOWED 4109 Trade is not alìowed. Enable checkbox "Allow live trading" il
thè expert properties.
ERR_LONGS_NOT_ALLOWED 4110 Longs are not alìowed. Check thè expert properties.
ERR_SHORTS_NOT_ALLOWED 4111 Shorts are not alìowed. Check thè expert properties.
MODE_TENKANSEN 1 Tenkan-sen.
MODE_KDUNSEN 2 Kijun-sen.
Pagina 217
Dainesi - Guida di riferimento al linguaggio A1Q/.
Costante Valore
MODE_MAIN O Base indicator line.
MODE_SIGNAL 1 Signal line,
Costante Valore
MODE_UPPER 1 Upper line.
MODE_LOWER 2 Lower line.
Pagina 218
Dainesi - Guida di riferimento al linguaggio MQ}.
Last incoming ask price. Far thè current symboi, it is stored in thè
predefined variatale Ask
MODE_POINT Point size in thè quote currency. Por thè current symboi, it is stored in
thè predefined variatole Point
MODEJ3IG1TS Count of digìts after decimai point in thè symboi prices. Por thè current
symboi, it ts stored in thè predefined variable Digits
MODE_SPREAD Spread value in points.
MODE_STOPLEVEL Stop level in points.
MODE_LOTSIZE Lot size in thè base currency.
MODE_TICKVALUE Tick value in thè deposit currency.
MODE_TICKSIZE Tìck size in thè quote currency.
MODE_SWAPLONG Swap of thè long position.
MODE_SWAPSHORT Swap of thè short position.
MODE_STARTING Market starting date (usually used for futures),
MODE_EXPIRATTON Market expiration date (usually used for futures).
MODE_TRADEALLOWEO Trade is allowed for thè symboi.
MODE_MINLOT Minimum permitted amount of a lot.
MODE_LOTSTEP Step for changing lots.
MODE_MAXLOT Maximum permitted amount of a tot.
MODE_SWAPTYPE Swap calculation method. O - in points; 1 - in thè symboi base currency;
2 - by interest; 3 - in thè margin currency.
MODE_PROFTTCALCMODE Profit calculation mode. O - Forex; 1 - CFD; 2 - Futures.
MODE_MARGINCALCMODE 28 Margin calculation mode. O - Forex; 1 - CFD; 2 - Futures; 3 - CFD for
indices.
MODE_MARGININIT 29 Initial marginrequirementsfor i lot.
MODE_MARGINMAINTENANCE 30 Margin to maintain open positions calculated for 1 lot.
MODE_MARGINHEDGED 31 Hedged margin calculated for 1 lot.
MODE_MARGINREQUIREO 32 Free margin required to open 1 lot for buying.
MODE_FREEZELEVEL 33 Order freeze level in points. If thè execution price ties within thè range
defìned by thè freeze level, thè order cannot be rnodifìed, cancelled or
closed.
Pagina 219
Dainesì - Guida dì riferimento al (inguagjio MOJ.
MB_ABORTRETRYIGNORE 0x00000002 The message box contains three push buttons: Abort, Retry, and
Ignora.
MB_YESNOCANCEL 0x00000003 The message box contains three push buttons: Yes, No, and Cancel.
MB_YESNO 0x00000004 The message box contains two push buttons: Yes and No.
MB_RETRYCANCEL 0x00000005 The message box contains two push buttons: Retry and Canee!.
MB_CANCELTRYCONTINUE 0x00000006 Windows 2000: The message box contains three push buttons: Canee
Try Again, Continue. Use this message box type instead of
MB_ABORTRETRY1GNORE.
MBJJEFBUTTONl 0x00000000 The first button is thè default button. MB_DEFBUTTON1 is thè default unless
MB_DEFBUTTON2, M8_DEFBUTTON3, or MB_DEFBUTTON4 is specified.
MB_DEFBLnTON2 0x00000100 The second button is thè default button.
MB_DEFBt/TTON3 0x00000200 The third button is thè default button.
MB_DEFBUTTON4 0x00000300 The fourth button is thè default button.
Costante Valore
MODE^SMA O Simple moving average,
MODE_EMA 1 Exponential moving average,
MODE_SMMA 2 Smoothed moving average,
MODE_LWMA 3 Linear weighted moving average.
OBJPROP_BACK 9 bool Boolean value to set/get background drawing flag for object.
OBJPROP^ELLJPSE 11 bool Boolean value to set/get ellipse flag for fibo arcs.
OBJPROP_FQNTSIZE 100 int Integer value to set/get font size for text objects.
OB3PROP_CORNER 101 int Integer value to set/get anchor corner property for label objects.
Must be from 0-3.
OBJPROP_XDISTANCE 102 int Integer value to set/get anchor X distance object property in pixels.
OBJPROP_YDISTANCE 103 int Integer value is to set/get anchor Y distance object property in
pixels.
OBJPROP_FIBOLEVELS 200 int Integer value to set/get Fibonacci object level count. Can be from O
to32.
OBJPROP_LEVELCOLOR 201 color Color value to set/get object level line color.
OBJPROP_LEVELSTYLE 202 int Value is one of STYLE_SOLJD, STYLE_DASH, STYLE_DOT,
STYLE_DASHDOT, STYl_E_DASHDOTDOT constante to set/get
object level line style.
OBJPROPJ-EVELWIDTH 203 int Integer value to set/get object level line width. Can be from 1 to 5.
OBJPROP_FIRSTLEVEL+/7 210+n int Integer value to set/get thè value of Fibonacci object level with
index /7. Index n can be from O (nurnber of levels -i), but not iarger
than 31.
Pagina 222
Dainesi - Guida di riferimento al /injuass/o MQL
Valore Description
OBJ_STODEVCHANNEL 6 Standard deviation channel. Uses tirne parts of first two coordinates.
OBJ_GANNLJNE 7 Gann line. Uses 2 coordinate, but price part of second coordinate ignored.
OBJ_GANNFAN 8 Gann fan, Uses 2 coordinate, but price part of second coordinate ignored.
OBJ_GANNGRID 9 Gann grid. Uses 2 coordinate, but price part of second coordinate ignored.
Pagina 223
Dainesi - Guida di riferimento al linguaggio MQj.
Costante Valore
SYMBOUJHUMBSUP 67 Thumb
SYMBOL_THUMBSDOWN 68 Thumb
5YMBOL_ARROWDOWN 242 A
SYMBOL_STOPSIGN 251 st
SYMBOL.CHECKSIGN 252 ch
Pagina 224
udinesi - Guida di riferimento al frnguaggfo MQ}-
Costanti spedati
Costante Va I uè Description
NULI O Indicates empty state of thè string.
EMPTY -1 Indicates empty state of thè parameter.
EMPTY_VALUE Ox7FFFFFFF Default custom indicator empty value.
CLR_NONE OxFFFFFFFF Indicates empty state of colors.
WHOLE_ARRAY O Used with array functions. Indicates that ali array elements will be processed.
Costante Valore
PERIOD_M1 1 1 minute.
PERIOD_M5 5 5 minutes.
PERIOD_M15 15 15 rninutes.
PERIOD_M30 30 30 minutes.
PERIOD_H1 60 1 hour.
PERIOD_H4 240 4 hour.
PERIODAI 1440 Daily.
PERIOD_W1 10080 Weekly.
Pagina 225
Dainesi - Guida di riferimento al fingi/aggio MQL
Constant Valore i
OP_BUY 0 Buying posttion.
OP.SELL 1 Selling position.
Valore Description
Pagina 226
Daìnesi - Guida dì riferimento al (inguoggio MQL
Sìmboli Wingàings
32 X 33 X 34 •V 35 (^./^ 36 O 37 ea 38
s 39 S 40 (S> 41 H 42 m 43 E9 44 0D 45
^D 46 & 47 a 48 & 49 i 50 I 51
i 52
i 53 1 54 A 55 jì 56 ia 57 e 58 59
Q 60 H 61 © 62 4f 63 ìs. 64 8 65 I 66
Ì9 67 5 68 "«3 69 c^= 70 i 71 $ 72 5 73
© 74 © 75 ® 76 «- 77 S 78 Fi 79 80
± 81 o 82
*
83
*
84 t 85 U- 86 ^
t 87
* 88 $ 89 O 90 C 91 A 92 & 93
T 94
K 95 II 96 s 97 98
11 99 .Q 100
"I 101
X1
O
102
109
2»
•
103
110
SE
a
104
111
5
D
M 105
112
er
a
106
113
<^a 107
114
•
«
108
115
•
116 • 117 *
M 118 • 119 s 120 Q 121 3€ 122
sa 151 JO 152 O3 153 fy» 154 °^> 15S •*» 156 <^v 157
* 172 173
*
174 * 175
*
176 * 177 •*• 178
& 207
sJ 208 K> 209 (X 210 £T 211 212 <s 213
R 335 TP 236 ^
tf Z37 238 o 239 c> 240 •o- 241
Pagina 227
Dainesi - Guida di riferimento al linguaggio MQL
Pagina 228
Dainesi - Guida di riferimento al linguaggio MQf.
-* i
Pagina 229
Dainesi - Guida di riferimento al Imsuaggio MQÌ-
S tr/ngConca iena te
string StringConcatenate( )
Parametri
Qualsiasi valore separato da virgole.
string text;
text=stringConcatenate("II margine utilizzabile è ", AccountFreeMargin()
"I/ ora attuale è ", TimeToStr(CurTime O));
Print{text);
Pagina 230
Dainesi - Guida di riferimento al /inguassio MQL
StrinsFind
Parametri
Text Stringa di testo dentro la quale effettuare la
ricerca.
matched_text Testo da ricercare.
Start Posizione di partenza della ricerca.
StringGetChar
Parametri
Text Stringa dove sarà ricercato il carattere.
Pos Posizione, con base di partenza zero, dove sarà
ricercato il carattere.
Pagina 231
Dainesì - Guido dì riferimento al (inguaggjo MQÌ-
StringLen
Parametri
Text Stringa da misurare.
if (StringLenfstr) <5) r e t u m ( O ) ;
StringSetChar
Parametri
Text Stringa dove verrà sostituito il carattere.
Pos Posizione ove avverrà la sostituzione. Sono
ammesse posizioni da O a StringLen()-1.
Value Nuovo carattere espresso in codice ASCII.
StringSubstr
Parametri
Text Stringa dalla quale estrarre la sottostringa.
Start Posizione di partenza per l'estrazione.
Count Lunghezza della sottostringa.
string text="The quick brown dog jumps over thè lazy fox";
string substr=StringSubstr(text, 4, 5);
// subtracted string is "quick" word
StringTrimLeft
Parametri
Text Stringa da compattare a sinistra.
StrinsTrimRisht
Pagina 233
Dainesi - Guida di riferimento al fingi/aggio MQf.
Parametri
Text Stringa da compattare a destra.
string str2=StringTrimRightfstr);
// a f t e r triraming thè str2 variable will be " Hello World"
Pagina 234
Dainesi - Guida di riferimento al linguaggio MQf.
Pagina 235
Dalnesi - Guida di riferimento al /jnguaggro MOJ.
MI i
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL significa
il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative dei
lime frame)
Shift Offset della barra su cui effettuare il calcolo.
Accumulazione/Distribuzione
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL significa
il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative dei
lime frame)
Shift Offset della barra su cui effettuare il calcolo.
doublé result=iAD(NULL, O, I } ;
Indicatore Alligator
doublé ÌAIIlgatOr(string symbol, int timeframe, int jaw_period, int jaw_shift, int
teeth_period, int teeth_shift, int lips_period, int lips_shift, int ma_method, int applied_price, int
mode, int shift)
Pagina 237
Daìnesi - Guida di riferimento al fingi/aggio MQL
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei time frame)
jaw_period Jaw periodi.
jaw_shift Jaw line shift.
teeth_period Teeth periodi.
teeth_shift Teeth line shift.
lips_period Lips periodi.
lips_shift Lips line shift.
ma_method MA metodo. Deve essere una delle costanti
definite per I metodi legati al calcolo delle
medie.
applied_price Prezzo applicato.
Mode Source of data. It can be any of thè following
values:
MODE_GATORJAW - Gator Jaw (blue) balance line,
MODE_GATORTEETH - Gator Teeth (red) balance line,
MODE_GATORLIPS - Gator Lips (green) balance line.
Shift Offset della barra su cui effettuare il calcolo.
PRICE_MEDIAN,
MODE_GATORJAW, 1);
Pagina 238
Dainesi - Guida di riferimento al linguaggio MQL
doublé ÌADX(string Symbol, int timeframe, ìnt perìod, int applied_price, int mode.inl:
shift)
Ht, Jf
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL significa
il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative dei
time frame)
Period Lunghezza, in periodi, dell'indicatore.
applied_price Prezzo utilizzato per il calcolo.
Mode Uno dei valori calcolati dall'indicatore. E' grazie a
questo parametro che si decide se calcolare il
valore dell'ADX, del DI+ o del DI-. Utilizzare solo
le costanti enumerative dedicate ali'ADX.
Shift Offset della barra su cui effettuare il calcolo.
Pagina 239
Dainesi - Guida di riferimento al linguaggio MQI.
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL significa
il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative dei
time frame)
Period Lunghezza, in periodi, dell'indicatore.
Shift Offset della barra su cui effettuare il calcolo.
Pagina 240
Dainesi - Guida di riferimento al (inguagg/o MQ/.
Awesome
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL significa
il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative dei
lime frame)
Shift Offset della barra su cui effettuare il calcolo.
Pagina 241
Dainesi - Guida di riferimento al linsuasgio MQL
Bears Power
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULI
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumeratile dei time frame)
Period Lunghezza, in periodi, dell'indicatore.
applied_price Prezzo utilizzato per il calcolo.
Shift Offset della barra su cui effettuare il calcolo.
Bande di Bollinger
doublé ÌBands(string symboI, int timeframe, int perìod, int deviation, int bands_shift, int
applied_price, int mode, int shift)
Pagina 242
Dainesi - Guida di riferimento al (inguoggio MQL
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei time frame)
Period Lunghezza, in periodi, dell'indicatore.
Deviation Deviation.
bands_shift Scostamento temporale.
applied_price Prezzo utilizzato per il calcolo.
Mode Uno dei valori calcolati dall'indicatore.
Usare solo le costanti enumerative delle
Bande di Bollinger.
Shift Offset della barra su cui effettuare il
calcolo.
Pagina 243
Dainesi - Guida di riferimento al fingi/aggio MOJ.
Pagina 244
Dainesi - Guida di riferimento al linguaggio MQj.
Parametri
array[] Array della serie storica dei dati.
total Numero di elementi da prendere in
considerazione.
Period Lunghezza, in periodi, dell'indicatore.
Deviation Deviation.
bands_shift Scostamento temporale.
applied_price Prezzo utilizzato per il calcolo.
Mode Uno dei valori calcolati dall'indicatore.
Usare solo le costanti enumerative delle
Bande di Bollinger.
Shift Offset della barra su cui effettuare il
calcolo.
if(iBandsOnArray(ExtBuffer,total,2,0,MODE_LOWER,0)>Low[0]) return(0);
Bulls Power
Pagina 245
Dainesi - Guida di riferimento al lìn$uas$io MQL
ìlt
Parametri
Symbol Simbolo dello strumento finanziario sul
quale calcolare il valore dell'indicatore
(NULL significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei time frame)
Period Lunghezza, in periodi, dell'indicatore.
applied_price Prezzo utilizzato per il calcolo.
Shift Offset della barra su cui effettuare il
calcolo.
Pagina 246
Doinesi - Guida di riferimento al linguaggio MQL
Parametri
Symbol Simbolo dello strumento finanziario sul
quale calcolare il valore dell'indicatore
(NULL significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumeratile dei Urne frame)
Period Lunghezza, in periodi, dell'indicatore.
applied_price Prezzo utilizzato per il calcolo.
Shift Offset della barra su cui effettuare il
calcolo.
Pagina 247
Dainesi - Guida di riferimento al linguaggio MQL
'l|ltt(H
Parametri
arrayf] Array della serie storica dei dati.
total Numero di elementi da prendere in
considerazione.
Period Lunghezza, in periodi, dell'indicatore.
Shift Offset della barra su cui effettuare il calcolo.
if(iCCIOnArrayfExtBuffer, total,12,0)>ÌCCI(NULL,O,20,PRICE_OPEN, 0 ) )
return(O);
Indicatore personalizzato
Pagina 248
Dajnesì - Guida di riferimento al /insuaggio MQL
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULI
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei lime frame)
Name Nome file dell'indicatore personalizzato,
senza l'estensione.
Parametri dell'indicatore separati da virgole.
Mode Serie dati di ritorno. Deve essere un numero
tra O e 7 (ogni indicatore espone un massimo
di 8 serie dati).
Shift Offset della barra su cui effettuare il
calcolo.
Pagina 249
Dainesi - Guida di riferimento ai linguaggio A1QL
Indicatore di DeMarker.
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL significa
il simbolo corrente).
Timeframe Time f rame (utilizzare le costanti enumerative dei
lime frame)
Period Lunghezza, in periodi, dell'indicatore.
Shift Offset della barra su cui effettuare il calcolo.
Pagina 250
Dainesì - Guida di riferimento al tinguaggjo MQÌ.
Envelope
Parametri
Symbol Simbolo dello strumento finanziario sul
quale calcolare il valore dell'indicatore
(NULL significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei time frame)
ma_period Lunghezza, in periodi, dell'indicatore.
ma_method Metodo utilizzato per il calcolo della
media. Deve corrispondere ad una delle
costanti enumerative relativi alle medie.
ma_shift Scostamento della media.
applied_price Prezzo utilizzato per il calcolo.
Deviation Deviazione.
Mode Uno dei valori calcolati dall'indicatore.
Usare solo le costanti enumerative delle
Envelope.
Shift Offset della barra su cui effettuare il
calcolo.
doublé vai;
vai = iEnvelopes(NULL, O,13,MODE_SMA,10,PRICE_CLOSE, O.2,MODEJJPPER,0);
Pagina 251
Dainesi - Guida di riferimento al (inguags/o MQÌ.
Parametri
array[] Serie dati sulla quale calcolare il valore
dell'indicatore.
total Numero di elementi da utilizzare.
ma_period Lunghezza, in periodi, dell'indicatore.
ma_method Metodo utilizzato per il calcolo della
media. Deve corrispondere ad una delle
costanti enumerative relativi alle medie.
ma_shift Scostamento della media.
applied_price Prezzo utilizzato per il calcolo.
Deviation Deviazione.
Mode Uno dei valori calcolati dall'indicatore.
Usare solo le costanti enumerative delle
Envelope.
Shift Offset della barra su cui effettuare il
calcolo.
doublé vai ;
vai - iEnvelopesOnArray(ExtBuffer, O, 13, MODE_SMA, 0.2, MODE_UPPER,O);
Pagina 252
Dainesi - Guida di riferimento al linguaggio MQL
Indicatore Farce.
Parametri
Symbol Simbolo dello strumento finanziario sul
quale calcolare il valore dell'indicatore
(NULL significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei time frame)
perìod Lunghezza, in periodi, dell'indicatore.
ma_method Metodo utilizzato per il calcolo della
media. Deve corrispondere ad una delle
costanti enumerative relativi alle medie.
applied_price Prezzo utilizzato per il calcolo.
Shift Offset della barra su cui effettuare il
calcolo.
Pagina 253
Daìnesì - Guida di riferimento al (inguaggio MQL
Indicatore Frettale.
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULI significa
il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative dei
time frame)
Mode Serie dati dell'indicatore. Usare solo le costanti
enumerative dedicate.
Shift Offset della barra su cui effettuare il calcolo.
Pagina 254
Dainesi - Guida di riferimento al linguaggio MQf.
Oscillatore Gator
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei time frame)
jaw_period Jaw periodi.
jaw_shift Jaw line shift.
teeth_period Teeth periodi.
teeth_shift Teeth line shift.
lips_period Lips periodi.
lips_shift Lips line shift.
ma_method MA metodo. Deve essere una delle costanti
definite per I metodi legati al calcolo delle
medie.
applied_price Prezzo applicato.
Mode Serie dati dell'indicatore. Usare solo le
costanti enumerative dedicate.
Shift Offset della barra su cui effettuare il calcolo.
Pagina 255
Dainesi - Guida di riferimento al linguaggio MQf.
double j ;
j = iGator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_UPPER, 1);
Parametri
Symbol Simbolo dello strumento finanziario sul
quale calcolare il valore dell'indicatore
(NULI significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei lime frame)
tenkan_sen Tenkan Sen.
kijun_sen Kijun Sen.
senkou_span_b Senkou SpanB.
Mode Serie dati dell'indicatore. Usare solo le
costanti enumerative dedicate.
Shift Offset della barra su cui effettuare il
calcolo.
Pagina 256
Doinesi - Guida dì riferimento al fìngi/aggio MQ/.
Market Facilitation
t'M.11
1 l! l
Jl \ 'Hi
tt\|Ul| H
V'Hilh ,,11
1 Ini,, r 1 1, 1 ,t "1 ! ,
i" I' , i,' 1 wtiit'Aij
i 1 llihil*' '' 'I11 i
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL significa
il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative dei
time frame)
Shift Offset della barra su cui effettuare il calcolo.
Pagina Z57
Dainesi - Guida di riferimento al linguaggio MQL
Momentum
doublé ÌMomentUm(string symbol, int tìmeframe, int period, int applied_price, int
shift)
Parametri
Symbol Simbolo dello strumento finanziario sul
quale calcolare il valore dell'indicatore
(NULL significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei lime frame)
applied_price Prezzo applicato.
Shift Offset della barra su cui effettuare il
calcolo.
if(iMomentura(NULL,O,12,PRICE_CLOSE,0)>iMomentura (NULL,0,20,PRIGE_CLOSE,0])
return(0);
Pagina 258
Dainesi - Guida di riferimento al /inguasgio MQÌ.
Parametri
array[] Serie dati sulla quale calcolare il valore
dell'indicatore.
total Numero di elementi da utilizzare.
period Lunghezza, in periodi, dell'indicatore.
Shift Offset della barra su cui effettuare il calcolo.
Pagina 259
Dainesi - Guida di riferimento ai linsuassio MQL
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL significa
il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative dei
time frame)
period Lunghezza, in periodi, dell'indicatore.
Shift Offset della barra su cui effettuare il calcolo.
if (U4FI(NOLL,0,14,0)>iMFI(NULL,0,14,D) return(O);
Pagina 260
Dainesì - Guida dì riferimento at linguaggio MQt
Media mobile
doublé ÌMA(string syrnbol, int timeframe, int period, int ma_shift, int ma_method,
(nt applied_price, int shift)
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei time frame)
period Lunghezza, in periodi, dell'indicatore.
ma_shift Scostamento dell'indicatore
ma_method MA metodo. Deve essere una delle costanti
definite per I metodi legati al calcolo delle
medie.
applied_price Prezzo applicato.
Shift Offset della barra su cui effettuare il calcolo.
AlligatorJawsBuffer[i] = ÌMA{NULL,O,13,8,MODE_SMMA,PRICE_MEDIAH,i);
Pagina 261
Dainesi - Guida di riferimento al fingi/aggio MQÌ.
doublé ÌMAOnArray(double array[], int total, int period, int ma_shift, int ma_method, int
shift)
Parametri
array[] Serie dati sulla quale calcolare il valore
dell'indicatore.
total Numero di elementi da utilizzare,
period Lunghezza, in periodi, dell'indicatore.
ma_shift Scostamento dell'indicatore
ma_method MA metodo. Deve essere una delle costanti
definite per I metodi legati al calcolo delle
medie.
applied_price Prezzo applicato.
Shift Offset della barra su cui effettuare il calcolo.
Pagina 262
Dairtesi • Guida di riferimento MQA
Parametri
Symbol Simbolo dello strumento finanziario sul
quale calcolare il valore dell'indicatore
(NULL significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei Urne frame)
fast_ema_period Numero di periodi della media veloce.
slow_ema_period Numero di periodi della media lenta.
signal_period Numero di periodi della media di
segnale.
applìed_price Prezzo applicato.
Shift Offset della barra su cui effettuare il
calcolo.
Pagina 263
Dcànesi • Guida dì riferimento al linguassio MQL
Parametri
Symbol Simbolo dello strumento finanziario sul
quale calcolare il valore dell'indicatore
(NULL significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei lime frame)
fast_ema_period Numero di periodi della media veloce.
slow_ema_period Numero di periodi della media lenta.
signal_period Numero di periodi della media di
segnale.
applied_price Prezzo applicato.
Mode Serie dati dell'indicatore. Usare solo le
costanti enumerative dedicate.
Shift Offset della barra su cui effettuare il
calcolo.
Pagina 264
Dainesi - Guida di riferimento al io MQL
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei time frame)
applied_price Prezzo applicato.
Shift Offset della barra su cui effettuare il
calcolo.
Pagina 265
Dainesi - Guida dì riferimento al linguaggio
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL significa
il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative dei
time frame)
Step Incremento (generalmente 0.02).
Maximum Massimo valore (generalmente 0.2).
Shift Offset della barra su cui effettuare il calcolo.
Pagina 266
Dainesi - Guida di riferimento al //nguaggio MQL
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei time frame)
period Lunghezza, in periodi, dell'indicatore.
applied_price Prezzo applicato.
Shift Offset della barra su cui effettuare il
calcolo.
Lf(IRSI(NULL,0,14,PRICE_CLOSE,0)>iRSI(NULL,0,14,PRICE_CLOSE, 1))
ceturn(0);
Pagina 267
Danesi - Guida di riferimento al linguaggio MQL
Parametri
array[] Serie dati sulla quale calcolare il valore
dell'indicatore.
total Numero di elementi da utilizzare.
period Lunghezza, in periodi, dell'indicatore.
Shift Offset della barra su cui effettuare il calcolo.
Lf(iRSIOnBuffer(ExtBuffer,1000,14,0)>iRSI(HULL,0,14,PRICE_CLOSE, 1))
return(O);
Pagina 268
Dainesi - Guida di riferimento al linguaggio MQ/.
doublé iRVI(string symboi, int timeframe, int perìod, int mode, int
shift)
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL significa
il simbolo corrente).
Timeframe Time frane (utilizzare le costanti enumerative dei
time frame)
period Lunghezza, in periodi, dell'indicatore.
Mode Serie dati dell'indicatore. Usare solo le costanti
enumerative dedicate.
Shift Offset della barra su cui effettuare il calcolo.
Pagina 269
Dainesi - Guida di riferimento al linguaggio MQL
Deviazione standard
doublé ÌStdDeV(string symbol, int timeframe, int ma_period, int ma_method, int ma_shift, int
applied_price, int shift)
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti
enumerative dei time frame)
ma_period Periodi della media.
ma_method MA metodo. Deve essere una delle costanti
definite per I metodi legati al calcolo delle
medie.
ma_shift Scostamento della media.
applied_price Prezzo applicato.
Shift Offset della barra su cui effettuare il calcolo.
Pagina 270
Dai/lesi - Guida di riferimento al linguaggio MQ1_
Parametri
array[] Serie dati passata.
total Elementi da utilizzare.
ma_period Periodi della media.
ma_method MA metodo. Deve essere una delle costanti
definite per I metodi legati al calcolo delle
medie.
ma_shift Scostamento della media.
applied_price Prezzo applicato.
Shift Offset della barra su cui effettuare il calcolo.
Pagina 271
Dainesi - Guida di riferimento al linguaggio MQL
Oscillatore Stocastico.
doublé ÌStOChastÌC(string symboi, int timeframe, int %Kperiod, int %Dperiod, int
slowing,int method, int price_field, int mode, int shift)
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULI significa
il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative
dei time frame)
%Kperiod %K periodi della linea veloce.
%Dperiod %D periodi della linea lenta.
Slowing Valore di rallentamento.
Method Metodo utilizzato per il calcolo della media
mobile.
price_field Prezzi utilizzati per il calcolo dell'indicatore.
Possono essere uno dei due seguenti: O -
Low/High o 1 - Close/Close.
Mode Serie dati dell'indicatore. Usare solo le costanti
enumerative dedicate.
Shift Offset della barra su cui effettuare il calcolo.
Pagina 272
Daìnesi - Guida di riferimento al linguaggio MQL
i£(dSTv>dSTs)return(0| ;
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL significa
il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative dei
time frame)
period Lunghezza, in periodi, dell'indicatore.
Shift Offset della barra su cui effettuare il calcolo.
Pagina 273
Dainesi - Guida di riferimento al (inguaggjo MQL
Serie temporali
Pagina 275
Dainesi - Guida di riferimento al linguaggio MQ/.
iBars
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULI
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative
dei time frame)
sMsg = sMsg + " sul medesimo TF ci sono " + iBars {"EURGBP", 0) + " barre
sMsg = sMsg + " EURGBP e " + iBars ( "EURCHF", 0 ) + " barre su EURCHF";
Gomme nt(sMsg);
iBarShift
Pagina 276
Dainesi - Guida di riferimento al linguaggio MQÌ.
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL significa
il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative dei
lime frame)
Time Valore ricercato (orario di apertura di barra).
Exact Modalità di ritorno valore in mancanza di
corrispondenza precisa, false - iBarShift ritorna il
valore più vicino, true - iBarShift ritorna -1.
iClose
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative
dei time frame)
Shift Offset della barra su cui effettuare il calcolo.
Pagina 277
Dainesi - Guida di riferimento al (j'nguagjj/o MQj.
string sMsg;
sMsg = Symbol() + " Open: " + dOd + " High: " + dHd + " Low: " + dCd;
sMsg = sMsg + " Close: " + dCd + "\n";
sMsg = SMsg + "GBPCHF Open: " + dOf + " High: " + dHf + " Low: " + dCf;
sMsg = sMsg + " Close: " + dCf + "\n";
sMsg = sMsg + "Orario inizio barra: " + TimeToStr(iTime(NULL,O,0));
Corament(sMsg);
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative
dei lime frame)
Shift Offset della barra su cui effettuare il calcolo.
string sMsg;
sMsg = Symbol O Open: " + dOd High:
Pagina 278
Dainesi - Guida di riferimento al linguassio MQ/.
Comment(SMsg);
iLow
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULI
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative
dei time frame)
Shift Offset della barra su cui effettuare il calcolo.
string sMsg;
sMsg = SyrabolO -t- " Open: " + dOd + " High: " + dHd + " Low: " + dCd;
sMsg = sMsg + " Close: " + dCd + "\n";
sMsg - sMsg + "GBPCHF Open: " + dOf + " High: " + dHf + " Low: " + dCf;
sMsg = sMsg + " Close: " + dCf + "\n";
sHsg = sMsg + "Orario inizio barra: " 4- TimeToStr (iTirae (HULL, 0, 0) ) ;
Comment (sMsg) ;
Pagina 279
Dainesi - Guida di riferimento al linguassio MQL
iOpen
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative
dei time frame)
Shift Offset della barra su cui effettuare il calcolo.
string sMsg
sMsg = Symbol() + " Open: " + dOd + " High: " + dHd + " Low: " + dCd;
sMsg = sMsg + " Close: " + dCd + "\n";
SMsg = sMsg + "GBPCHF Open: " + dOf + " High: " + dHf + " Low: " + dCf;
sMsg = sMsg + " Close: " + dCf + "\n";
SMsg = sMsg + "Orario inizio barra: " + TimeToStr (iTime (NULL, 0, 0) ) ;
Comment (sMsg);
Pagina 280
Dainesi - Guida dì riferimento ai /jnguaggio MQL
iTime
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULL
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative
dei time frame)
Shift Offset della barra su cui effettuare il calcolo.
string sMsg;
sMsg = Symbol O + " Open: " + dod + " High: " + dHd + " Low: " + dcd;
sMsg = SMsg + " dose: " + dcd + "\n";
SMsg = sMsg + "GBPCHF Open: " + dof + " High: " + dHf + " Low: " + dcf;
sHsg = sMsg + " dose: " 4- dCf + "\n";
SMsg = sMsg + "Orario inìzio barra: " + TimeTOStr(iTime(HULL,0,0| ) ;
Comment(sMsg);
Pagina 281
Dainesì - Guida dì riferimento at finguasg/o MQL
i Volume
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULI
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative
dei time frame)
Shift Offset della barra su cui effettuare il calcolo.
string sMsg;
sMsg = Symbol () + " Open: " + dOd. + " High: " + dHd + " Low: " + dCd;
sMsg = sMsg + " Close: " + dCd + "\n";
sMsg = sMsg + "GBPCHF Open: " + dOf + " High: " + dHf + " Low: " + dCf;
sMsg = sMsg + " Close: " + dCf + "\n";
sMsg = 3Msg + "Orario inizio barra: " + TimeToStr(iTime(NULL,O,0));
Comment(sMsg);
Pagina 282
Dainesi - Guida di riferimento ai lin$uasgio MQL
ìH/g/iest
int ÌHÌgheSt(string syrnbol, int timeframe, int type, int count=WHOLE_ARRAY, int
start=0)
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULI
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumerative
dei time frame)
Snift Offset della barra su cui effettuare il calcolo.
Type Identificatico della serie storica dei prezzi.
Deve essere una delle costanti relative alla
funzione.
Count Ampiezza in barre dell'intervallo preso in
considerazione (partendo dalla barra di
partenza verso il passato).
Start Posizione della barra più recente dell'intervallo
da esaminare.
doublé vai;
Pagina 283
Dainesi - Guida dì riferimento al linguaggio MQL
iLowest
Parametri
Symbol Simbolo dello strumento finanziario sul quale
calcolare il valore dell'indicatore (NULI
significa il simbolo corrente).
Timeframe Time frame (utilizzare le costanti enumeratile
dei time frame)
Shift Offset della barra su cui effettuare il calcolo.
Type Identificatico della serie storica dei prezzi.
Deve essere una delle costanti relative alla
funzione.
Count Ampiezza in barre dell'intervallo preso in
considerazione (partendo dalla barra di
partenza verso il passato).
Start Posizione della barra più recente dell'intervallo
da esaminare.
Pagina 284
Dainesi - Guida di riferimento al (inguaggio MQL
)
Funzioni di Trading
OrdersHistoryTotal
int OrdersHìstoryTotalO
18 Per Slippage si intende lo "slittamento" del prezzo eseguito con riferimento al prezzo indicato nell'ordine. Tale
scostamento è dovuto all'estrema velocità degli scambi che muovono il prezzo dell'Ask e Bid tra l'invio e l'esecuzione
dell'ordine.
19
Lo Stop level è una distanza, espressa in punti (attenzione all'eventuale differenza dai pips!), a cui ogni ordine
condizionato deve distare dal prezzo di mercato. Tale distanza vale sia per gli ordini pendenti che per la distanza degli
stop (da qui il nome) quali take profit e stop loss dal prezzo di apertura, o in fase di modifica dal prezzo di mercato.
Pagina 286
Dainesi - Guida di riferimento al //nguaggio MQL
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
Comment(msg);
OrderClose
Parametri
Ticket Numero univoco di riconoscimento dell'ordine.
Questo numero è assegnato dal broker dopo la sua
apertura e/o modifica.
Lots Numero di lotti (o frazioni) da chiudere. Se il
volume indicato è inferiore alla dimensione
Pagina 287
Dainesi • Guida di riferimento al (inguaggio AlQt
OrderCloseBy
Con il termine "Sell-out" si definisce quella pratica che prevede la chiusura automatica, da parte del broker, di tutte le
posizioni detenute dal cliente che abbia eroso più del 70% del margine disponibile. La misura percentuale può variare
da broker a broker ma è comunque giustifata dalla necessità di tutelarsi dagli "scoperti" che altrimenti si genererebbero
in caso di sbalzi improvvisi delle quotazioni.
Pagina 288
Dainesi - Guida di riferimento al linsuaqsio MQL
Parametri
Ticket Identificativo dell'ordine in chiusura.
apposite Identificativo dell'ordine che chiude. Entrambi
gli ordini devono già essere aperti (la chiusura
è infatti un solo atto "amministrativo")
Colar Colore della freccia che sul grafico evidenzierà il
punto di chiusura. Se il colore non è indicato o è
impostato su CLR_NONE la freccia non verrà
disegnata sul grafico.
OrderCloseBy{iPrevOrder, iNewOrder);
return(0);
OrderClosePrice
doublé OrderClosePrice()
Pagina 289
Dainesi - Guida di riferimento al lin$uassio MQL
OrderCloseTime
datetime OrderCloseTìmeQ
if(OrderSelect(10,SELECT_BY_POS,MODE_HISTORY)--true)
{
datetime ctm=OrderOpenTiraeO ;
if(ctra>0) print("Prezzo di apertura 10 ", ctm);
ctm = OrderCloseTime ( ) ;
if(ctm>0} Print("Close time for thè order 10 ", ctm);
}
else
Print("OrderSelect failed error code i s " , G e t L a s t E r r o r ( ) ) ;
OrderComment
string OrderComment()
OrderSafetySend(NULL,OP_BHY,2,Ask,3,SL,0,"sdMulti 7 LONG",12,0,Green);
Pagina 290
Dai/lesi - Guida di riferimento al linguaggio MQt-
OrderCommission
doublé OrderCommission()
OrderDelete
Parametri
Ticket Identificativo univoco dell'ordine.
i f(Volume[1]>Volume[2]+Volurae[3])
OrderDelete(OrderTicket());
return(0);
Pagina 291
Dainesi - Guida di riferimento Ql linguaggio MQL
OrderExpiration
datetime OrderExpiration()
OrderSelect(i, SELECT_BY_POS);
if(OrderExpiration O !=0)
OrderLots
doublé OrderLotsQ
OrderMagicNumber
int OrderAAagicNumberO
int i;
int Tot=0;
for{i=Q;i<OrdersTotal();i++)
OrderSelect(i,SELECT_BY_P03);
if OrderSymbol() == Symbol(] ss OrderMagicNumber(1 == MagicNumber)
Tot++;
}
return (Tot);
OrderModify
Parametri
Ticket Ticket dell'ordine da modificare.
Price Nuovo prezzo di ingresso (solo per ordini
pendenti).
21
II condizionale è d'obbligo poiché due o più trading System potrebbero utilizzare, per coincidenza, lo stesso
MagicNumber ingenerando confusione e gestioni anomale degli ordini. Un trading System professionale dovrebbe
sempre dare la possibilità al suo utilizzatoro di poter variare il valore di tale proprietà.
Pagina 293
Dainesi - Guida di riferimento al (inguagg/o A1Q/.
if(OrderStopLoss O <Bid-Point*TrailingStop)
orderModifyforderTicketO,OrderOpenPrice(1,Bid-
point*TrailingStop,0,0,Blue);
OrderOpenPrice
doublé OrderOpenPrice()
for(i=0;i<OrdersTotal();i++)
(
OrderSelect(i,SELECT_BY_POS);
if OrderSymtaol() — SymbolO && OrderMagicNumber() == MagicNumbe
if(OrderType()==OP_BUY ss OrderOpenPrice()< Bid)
Print("Ordine in profitto.");
OrderOpenTime
datetitne OrderOpenTime()
Pagina 294
Dainesi - Guida di riferimento al linguaggio MQL
if(OrderOpenTime()<Time[0] )
Print("I/ordine non è stato aperto sulla barra corrente");
OrderPrìnt
void OrderPrintQ
sdProva.raq4
Copyright © 2010, SD Studio Dainesi
http://www.sdStudìoDainesi.com
int start ()
OrderProfit
doublé OrderProfitQ
Pagina 295
Dai/lesi - Guida di riferimento al linguaggio MQf.
doublé dResult;
for(int i=0;i<ordersTotalO;i++)
{
OrderSelect(i,SELECT_BY_POS);
if(OrderSymbolO " SymbolO && OrderMagicNumber() == MagicNumber);
dResult = dResult + OrderProfit();
if(dResult>0)
else
OrderSelect
Parametri
Index Indice dell'ordine o suo ticket (la valenza viene decisa
dal secondo parametro).
Select Tipologia di selezione. Deve essere una delle due
seguenti:
SELECT_BY_POS - indice nell'elenco del portafoglio
ordini
Pagina 296
Dainesi - Guida di riferimento al linguaggio MQL
//Oppure
OrderSelect{14, SELECT_BY_POS, MODEJTRADES);
OrderSend
Int OrderSend(string symboi, int cmd, doublé volume, doublé price, int slippage,
doublé stoploss, doublé takeprofit, string comment=NULL, int magic=0,
datetime expiration=0, color arrow_color=CLR_NONE)
22
Attenzione che se nel portafoglio ordini storici è stato applicato un filtro di visibilità questo influenzerà l'azione della
OrderSelect.
Pagina 297
Dainesi - Guida di riferimento al fingi/aggio MQL
Parametri
Symbol Simbolo dello strumento tradato.
Cmd Tipo di operazione da compiere. Tale
operazione deve essere una di quelle
enumerate nelle costanti apposite.
Volume Dimensione dell'ordine in lotti.
Price Prezzo di esecuzione.
Slippage Massimo slippage consentito per ordini a
mercato.
Stoploss Stop loss.
Takeprofit Take profit.
Comment Commento all'ordine. La lunghezza massima è
di 32 caratteri.
Magie Magie number. Identificatore di trading System.
Expiration Scadenza dell'ordine espressa come numero di
secondi dal 1 gennaio 1970 (solo per ordini
pendenti).
arrow_color Colore della freccia utilizzata per
contrassegnare sul grafico l'apertura della
posizione. Se il valore viene omesso o ha valore
CLR_NONE la freccia non verrà disegnata.
Pagina 298
Dainesi - Guida di riferimento al linsuassìo MQL
OrderStopLoss
doublé OrderStopLoss()
OrdersTotal
int OrdersTotalQ
OrderSelect(i, SELECT_BY_POS);
//fai qualcosa
OrderSelect(i, SELECT_BY_POS);
if (DevoChiudere (orderTicket (} ) ==true) Orderdose (...);
OrderSwap
doublé OrderSwap()
OrderSymboI
string OrderSymbol()
Pagina 300
Daìnesi - Guida di riferimento al tinsuaggio MQf.
doublé dResult;
for(int i=0;i<OrdersTotal(];i++)
{
OrderSelect(i,SELECT_BY_POS);
ìf(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber);
dResult = dResult + OrderProfìt();
if(dResult>0)
Print("Profitto.");
else
Print("Perdita.");
OrderTakeProfit
doublé OrderTakeProfit()
for(int i=0;i<OrdersTotal();!++]
f
OrderSelect(i,SELECT_BY_POS);
if(OrderSyrabol() == Symbol() && OrderMagicHumber() == MagicNumber);
{
if(OrderStopLoss()==0)StopLossChecker();
if(OrderTakeProfit()==0)TakeProfitChecker(];
OrderTicket
int OrderTicketO
iOrder=OrderTicket() -,
Pagina 301
Darnesj - Guida di riferimento al ljnsuas$io
OrderType
int OrderType()
OP_BUY buy
OP_SELL sell
OP_BUYLIMITbuy limit
OP_BUYSTOP buy stop
OP_SELLLIMIT sell limit
OP_SELLSTOP sell stop
for(int i-0;i<OrdersTotal(1,-i-n-)
(
OrderSelect(i,SELECT_BY_POS);
if(OrderSymbol() — SymbolO && OrderMagicNumber{) == MagicNumber);
I
if(OrderType{)==OP_BUY)LongTrailing ();
if(OrderType()==OP_SELL)SellTrailing ();
Pagina 302
Comesi - Guida di riferimento al linguaggio MQ/.
HideTestlndicatorsO WindowPriceOnDropped()
Periodo WindowPriceMax()
RefrashRates() WindowPriceMin()
Symbol() WindowOnDropped()
WindowBarsPerChart() WindowRedraw()
WindowExpertName() WindowScreenShot()
WindowFind() WindowTimeOnDropped()
WindowFirstVisibleBarO WindowsTotal()
WindowHandle() WindowXOnDropped()
WindowIsVisible WindowYOnDropped()
Parametri
Hide True se si vogliono visualizzare, false in caso si
vogliano tenere nascosti. La visibilità viene definita
di volta in volta come nell'esempio seguente:
HideTestlndicatorsftrue);
MaCurrent=iMA(NULL,0,56,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL, 0,56,0,MODE_EMA,PRICE_CLOSE,1);
HideTestlndicators(false);
Period
int Periodo
Pagina 304
Dainesi - Guida di riferimento al lìnguassio MQJ.
RefreshRates
bool RefreshRatesQ
Symbol
string Symbol()
for(int i=OrdersTotal()-l;i>=0;i—]
Pagina 305
Dainesi - Guida di riferimento al (inguaggio MOJ.
WindowBarsPerChart
int WindowBarsPerChart()
WindowExpertName
int WindowExpertNameO
WindowFìrstVisibleBar
int WindowFirstVisibleBarO
WindowTimeOnDropped
datetime WindowTimeOnDropped()
WindowFind
Pagina 307
Daìnesi - Guida di riferimento al (inguaggio MQJ-
Parametri
Name Nome breve dell'indicatore.
nt iwindow = WindowFindt"MAGO(12,26,9)");
WindowHandle
Parametri
Symbol Simbolo dello strumento finanziario.
Timeframe Time frame. Può essere uno di quelli elencati
nelle apposite costanti enumerative.
WindowIsVisibte
Parametri
Index Indice della sottofinestra del grafico.
Pagina 308
Dainesj - Guida di riferimento al (insuoggio MQL
WindowOnDropped
int WindowOnDropped()
if (WindowOnDropped ( | ! =0 )
principale !");
return(false);
WindowsPriceMax
WindowPriceMin
WindowRedraw
void WindowRedrawQ
WindowScreenShot
Pagina 310
Dainesi - Guida di riferimento ai linguaggio MQL
WindowsTotal
int WindowsTotalQ
WìndowXOnDropped
int WindowXOnDroppedQ
WindowYOnDropped
int WindowYOnDropped()
Pagina 311
Dainesi - Guida di riferimento al linguaggio MQÌ-
Pagina 312
Dainesi - Guida dì riferimento at /jnguag$io MQL
Appendice A
stderror.mqh
//I stderror.mqh
//I Copyright © 2004-2005, MetaQuotes Software Corp.
//| http://www.raetaquotes.net/
Pagina 313
Dainesi - Guida di riferimento al linguaggio MQj.
Pagina 314
Dainesi - Guida di riferimento al frnguaggio MQL
stdlìb.mqh
//| stdlib.mqh |
//I Copyright © 2004, MetaQuotes Software Corp.
//| http://www.metaquotes.net/ |
#import "stdlib.ex4"
string ErrorDescription(int error_code);
int RGB(int red_value,int green_value,int blue_value);
bool CompareDoubles(doublé numberl,doublé number2);
string DoubleToStrMorePrecision(doublé number,int precision);
string IntegerToHexString(int integer_number);
WinUser32.mqh
// | WinUser32 .mqh |
//I Copyright © 2004, MetaQuotes
// | http: //www.raetaquotes . net/ |
Pagina 315
Dainesi - Guida di riferimento al linguaggio MQ/_
Pagina 316
Dainesi - Guido di riferimento al linguaggio MQL
Pagina 317
Dainesi - Guida di riferimento al (inguaggf'o MQf.
Pagina 318
Dainesi - Guida di riferimento al (inguaggio MQJL
Pagina 319
Dainesi - Guida di riferimento ai /Jnguagg/o MQf.
tdefine SH CYHSCROLL 3
fdefine SM CYCAPTION 4
fdefine SM CXBORDER 5
idefine SM CYBORDER 6
tfdefine SM CXDLGFRAME 7
#def ine SM CYDLGFRAME 8
tdefine SM CYVTHUMB 9
ttdefine SM CXHTHUMB 10
tdefine SM CXICON 11
#def ine SM CYICON 12
ttdefine SM CXCURSOR 13
#def ine SM CYCURSOR 14
ttdefine SM CYMENU 15
#def ine SM CXFULLSCREEN 16
#define SM CYFULLSCREEH 17
#def ine SM CYKANJIWIHDOW 18
ttdefine SM MOUSEPRESENT 19
#def ine SM CYVSCROLL 20
ttdefine SM CXHSCROLL 21
ttdefine SM DEBUG 22
ttdefine SM^SWAPBUTTON 23
ttdefine SM RESERVED1 24
ttdefine SM RESERVED2 25
#define SM RESERVED3 26
#define SM RESERVED4 27
tdefine SM CXMIN 28
#define SM CYMIN 29
tdefine SM CXSIZE 30
tdefine SM CYSIZE 31
tdefine SM CKFRAME 32
Idefine SM CYFRAME 33
ttdefine SM CXMINTRACK 34
ttdefine SM CYMIHTRACK 35
fdefine SM CXDOUBLECLK 36
tdefine SM CYDOUBLECLK 37
#define SM CXICONSPACIHG 38
tfdefine SM CYICOHSPACING 39
tfdefine SM MENUDROPALIGNMEKT 40
ifdefine SM PENWINDOWS 41
ttdefine SM DBCSENABLED 42
tfdefine SM CMOUSEBUTTONS 43
ttdefine SM SECURE 44
#define SM CXEDGE 45
ttdefine SM CYEDGE 46
#define SM CXMIHSPACING 47
#define SM CYMINSPACING 48
#define SM CXSMICON 49
tdefine SM CYSMICON 50
tdefine SM CYSMCAPTION 51
#define SM CXSMSIZE 52
tdefine SM CYSMSIZE 53
tdefine SM CXMENUSIZE 54
tdefine SM CYMENUSIZE 55
tdefine SM ARRANGE 56
tdefine SM CXMINIMIZED 57
tdefine SM CYMINIMIZED 58
Pagina 320
Dainesi - Guida di riferimento al linguaggio MQ].
ttdefine SM_CXMAXTRACK 59
ttdefine SM_CYMAXTRACK 60
ttdefine SM_CXMAXIMIZED 61
ttdefine SM_CYMAXIMIZED 62
ttdefine SM_NETWORK 63
ttdefine SM_CLEANBOOT 67
ttdefine SM_CXDRAG 68
ttdefine SM_CYDRAG 69
ttdefine SM_SHOWSOUNDS 70
#define SM_CXMENUCHECK 71 // Use instead of
GetMenuCheckMarkDimensions()!
ttdefine SM_CYMENUCHECK 72
ttdefine SM_SLOWMACHINE 73
ttdefine SM_MIDEASTENABLED 74
ttdefine SM_MOUSEWHEELPRESEHT 75
ttdefine SM_XVIRTUALSCREEN 76
#define SM_YVIRTUALSCREEN 77
ttdefine SM_CXVIRTUALSCREEN 78
ttdefine SM_CYVIRTUALSCREEN 79
ttdefine SM_CMONITORS 80
ttdefine SM_SAMEDISPLAYFORMAT 81
// GetWindowO Constants
ttdefine GW_HWNDFIRST O
ttdefine GW_HWHDLAST 1
ttdefine GW_HWHDNEXT 2
ttdefine GW_HWHDPREV 3
ttdefine GW_OWNER 4
ttdefine GW_CHILD 5
// AnimateWindow{) Commands
ttdefine AW_HOR_POSITIVE 0x00000001
tdefine AW_HOR_NEGATIVE 0x00000002
ttdefine AW_VER_POSITIVE 0x00000004
ttdefine AW_VER_NEGATIVE 0x00000008
ttdefine AW_CENTER 0x00000010
ttdefine AW_HIDE 0x00010000
ttdefine AW_ACTIVATE 0x00020000
ttdefine AW_SLIDE 0x00040000
ttdefine AW_BLEND 0x00080000
// MessageBoxO Flags
ttdefine MB_OK 0x00000000
ttdefine MB_OKCAHCEL 0x00000001
ttdefine MB_ABORTRETRYIGNORE 0x00000002
ttdefine MBJfESNOCANCEL 0x00000003
ttdefine MB_YESNO 0x00000004
ttdefine MB_RETRYCANCEL 0x00000005
ttdefine MB_ICOHHAHD 0x00000010
ttdefine MB_ICONQUESTION 0x00000020
ttdefine MB_ICONEXCLAMATION 0x00000030
ttdefine MB_ICONASTERISK 0x00000040
ttdefine MB_USERICOH 0x00000080
ttdefine MB_ICOHWARHING MB_ICONEXCLAMATION
ttdefine MB_ICONERROR MB_ICOHHAHD
ttdefine MB_ICONINFORMATION HB_ICONASTERISK
ttdefine MB_ICOHSTOP MB_ICONHAND
ttdefine MB^DEFBUTTONl 0x00000000
ttdefine MB DEFBOTTON2 0x00000100
Pagina 321
Dainesi • Guida di riferimento al (inguaggio MQf.
$tdlib.mq4
ttproperty library
Library
// | stdlìb.mq4
//I Copyright © 2004, MetaQuotes Software Corp.
//| http://www.metaquotes.net/
Pagina 322
Dainesi - Guida di riferimento al linguaggio MQL
int i n i t ( )
int deinit()
*/
case 0:
break;
>e 2: error_string="coramon error";
break;
case 3: error_string="invalid trade parameters";
break;
case 4 : error_string="trade server is busy";
break;
case 5: error_string="old version of thè client terminal"
ìak;
case 6: error_string="no connection with trade server";
break;
case 7: error_strìng="not enough rights";
break;
case 8 : error_string="too frequent requests";
break;
case 9: error_string="malfunctional trade operation";
break;
break;
case 65 : error_string="invalid account";
break;
break;
break;
break;
break;
break;
oreak;
•e 134: error_string="not enough money"
Pagina 323
Dainesi - Guida di riferimento al (ìnguaggio MQL.
break;
case 135 : error_string="price changed";
break;
case 136: error_string="off quotes";
break;
case 137: error_string="broker is busy";
break;
case 138 : error_strìng="requote";
break;
case 139: error_string="order is locked";
break;
case 140: error_string="long positions only allowed";
break;
case 141: error_string="too many requests";
break;
case 145: error_string="modlfication denied because order too dose to
market" ,-
break;
break;
// mq!4 errors
case 4 0 0 0 : error_string="no e r r o r " ;
break;
case 4001: error_string="wrong function pointer";
break;
case 4002: error_string="array index is out of range";
break;
case 4003: error_strìng="no raemory for function cali stack";
break;
case 4004 : error_string="recursive stack overflow";
break;
break;
case 40
break;
case 40
break;
case 40
break;
break;
break;
break;
case 4012:
break;
break;
case 4014 : error_string="unknown command";
break;
case 4015: error_string="wrong jump (never generated error)";
break;
case 4016: error_string="not ìnitialized array";
break;
case 4017: error_string="dll cal^ls are not allowed";
Pagina 324
Dainesi - Guida di riferimento al linguaggio MQL
break;
case 4055: error string= "custom indicator error";
break;
case 4056: error string- "arrays are incompatible";
break;
case 4057: er ror_str ing- "glotaal variables processing error";
break;
case 4058: error_string^ "global variable not found";
break;
case 4059: error_stririg- "function is not allowed in testing mode";
break;
case 4060: error_string^ "function is not confirmed";
break;
case 4061: error_string^ "send mail error";
break;
case 4062: error_string= "string parameter expected";
break;
case 4063: error_string= "integer parameter expected";
break;
case 4064: error_string= "doublé parameter expected";
break;
case 4065: error_string^ "array as parameter expected";
:ak;
case 4066: error_string= "requested history data in update state";
reak;
case 4099: error_string= "end of file";
ak;
case 4100: error_string= "some file error";
iak;
case 4101: error_string= "wrong file name";
.reak;
case 4102: error_string^ "too many opened files";
:ak;
case 4103: error_string= "cannot open file";
break;
case 4104: error_string= "incompatible access to a file";
Pagina 325
DainesJ - Guida di riferimento al linguaggio MQL
break;
case 4105 : error_string="no order selected";
break;
case 4106: error_string="unknown symbol";
break;
case 4107: error__string="invalid price parameter for trade function"
break;
case 4108 : error_strìng="invalid ticket";
break;
case 4109 : error__string=" trade is not allowed";
break;
case 4110: error_string="longs are not allowed";
break;
case 4111: error_string="shorts are not allowed";
break;
case 4200 : error_strìng="object is already exist" ,-
break;
case 4201: error_string="unknown object property";
break;
case 4202 : error_string="object is not exist";
break;
case 4203: error_string="unknown object type";
break;
case 4204: error_string="no object name";
break;
case 4205: error_string="otaject coordinates error";
break;
case 4206 : error_string="no specified subwindow";
break;
default: error_string="unknown error";
return(error_string);
}
//+
//| convert red, green and blue values to color |
// check pararaeters
if(red_value<0) red_value=0;
if(red_value>255) red_value=255;
if(green_value<0) green_value=0;
if (green__value>255) green_value=255;
if(blue_value<0) blue_value-0;
if(blue_value>255) blue_value=255;
//
green_value«=8 ;
talue_value«=16;
return (red_value+green_value-*-blue__value) ;
Pagina 326
Dainesi - Guida di riferimento al linsuass'o MQf.
if(NormalizeDouble(numberl-number2,8)==0) return(true);
else r e t u r n ( f a l s e ) ;
intstring=DoubleToStr (integer, O ) ;
if (isnegative) retstring="-"+int string;
else retstring=intstring;
if (precision>0) retstring=retstring+" . "+remstring;
return (retstring) ;
tring hex_string="OOOOOOOQ";
int value, shift=28;
// Print("Parameter for integerHexToString is ",integer_number);
Pagina 327
DoJnesj - Guida di riferimento al linguaggio MQL
II
return(hex_string);
1
Pagina 328
Dainesi - Guida di riferimento al ftnguaggio MQj.
Indice
--;45 Awesome; 241
#define; 34 Bande di Bollinger; 242
ttimport; 72; 75 Bars; 206
«include; 75 Bears Power; 242
#property; 74 Bid; 206
%r; 273 blocco; 35; 54
++;45 bool; 24; 68
Accelerator/Decelerator; 236 break; 56; 59
AccountBalance; 77 Bulls Power; 245
AccountCompany; 78 CamelCase; 30
AccountCredit; 78 case; 56
AccountCurrency; 79 CCI; 246
AccountEquity; 80 CharToStr; 120
AccountFreeMargin; 80 ciclo; 58
AccountLeverage; 81 ciclo for; 58
AccountMargin; 81 ClientTerminalName; 99
AccountName; 82 dose; 207
AccountNumber; 83 Codici di errore; 214
AccountProfit; 84 color; 68
Accumulazione/Distribuzione; 236 Color; 25
ADX; 239 Comment; 100
Alert; 98 commento; 36
Alligator; 237 Commodities Channel Index; 246
AND; 48 CompanyName; 99
annidamento; 53 continue; 59
array; 32; 69 conversione; 119
Array; 85 costanti; 34
ArrayBsearch; 86 CurTime; 148
ArrayCopy; 87 data e orario; 147
ArrayCopyRates; 87 datetirne; 68
ArrayCopySeries; 89 DayOfWeek; 148
ArrayDimension; 90 DayOfYear; 149
ArrayGetAsSeries; 90 Definire una variabile; 67
Arraylnitialize; 91 Definizione di funzione; 61
ArraylsSeries; 91 deinit; 65
ArrayMaximum; 92 Deinit; 41
ArrayRange; 93 DeMarker; 250
ArrayResize; 93 Deviazione standard; 270
ArraySetAsSeries; 94 Digits; 207
ArraySize; 95 doublé; 68
ArraySort; 95 Doublé; 21
ASCII; 120 DoubleToStr; 126
Ask; 206 Envelope; 251
assegnazione; 20 extern; 71
ATR; 240 file; 155
Average Directional Movement Index; FileClose; 156
239 FileFlush; 156
Average True Range; 240 FilelsEnding; 157
Pagina 329
Dainesi - Guida di riferimento al (inguasgjo MQÌ-
Pagina 330
Dainesi - Guida di riferimento al (inguaggio MQL
Pagina 331
Dainesi - Guida di riferimento al linguaggio MQL
Pagina 332
© Copyright 2010 Daniele Livio Dainesi
ilmiolibro.it