Sunteți pe pagina 1din 4273

Linguagem MQL5 REFERENTE

ao terminal do cliente MetaTrader 5

ESTUDAR MQL5 e
RESOLVER todas as tarefas:
seus prprios indicadores de anlise
Criar
tcnica com qualquer grau de complexidade
a automatizao - automatizar
Utilizar
sistemas de negociao para trabalhar em
vrios mercados financeiros
suas prprias ferramentas
Desenvolver
analticas baseadas em clculos matemticos
e mtodos tradicionais
methods

Desenvolver sistemas de negociao para

resolver uma grande variedade de


necessidades(trading, monitoramento, alerta,
etc)

Contedo

Content
51

Referncia MQL5
1 Elementos Bsicos
.................................................................................................
da Linguagem
53
............................................................................................................................54
Sintaxe
Comentrios
......................................................................................................................... 55
Identificadores
......................................................................................................................... 56
Palavras Reservadas
......................................................................................................................... 57
............................................................................................................................59
Tipos de Dados
Tipos Inteiros
......................................................................................................................... 60
Tipos char, short,
................................................................................................................
int e long
61
Constantes de
................................................................................................................
Caracteres
65
Tipo datetime................................................................................................................ 68
Tipo color
................................................................................................................ 69
Tipo bool
................................................................................................................ 70
Enumeradores................................................................................................................ 71
Tipos Reais
.........................................................................................................................
(double, float)
73
Tipo string......................................................................................................................... 78
Estruturas.........................................................................................................................
e Classes
79
Objeto Array
.........................................................................................................................
Dinmico
90
Converso.........................................................................................................................
de Tipo (Typecasting)
91
Tipo void e.........................................................................................................................
constante NULL
98
Ponteiros .........................................................................................................................
de Objeto
99
Referncia,
.........................................................................................................................
Modificador & e Palavra-chave this
102
Operaes............................................................................................................................104
e Expresses
Expresses
......................................................................................................................... 105
Operaes
.........................................................................................................................
Aritmticas
106
Operaes
.........................................................................................................................
de Atribuio
107
Operaes
.........................................................................................................................
de Relao
108
Operaes
.........................................................................................................................
Booleanas
109
Operaes
.........................................................................................................................
Binrias
111
Outras Operaes
......................................................................................................................... 114
Regras de
.........................................................................................................................
Precedncia
118
Operadores............................................................................................................................120
Operador.........................................................................................................................
Composto
122
Operador.........................................................................................................................
de Expresso
123
Operador.........................................................................................................................
return
124
Operador.........................................................................................................................
Condicional if-else
125
Operador.........................................................................................................................
Ternrio ?
126
Operador.........................................................................................................................
switch
128
Operador.........................................................................................................................
de loop while
130
Operador.........................................................................................................................
de loop for
131
Operador.........................................................................................................................
de loop do while
133
Operador.........................................................................................................................
break
134
Operador.........................................................................................................................
continue
135
Operador.........................................................................................................................
de Criao de Objeto new
136
Operao
.........................................................................................................................
de Excluso de Objeto delete
138
Funes ............................................................................................................................139
Chamada.........................................................................................................................
de Funo
141
Passando.........................................................................................................................
Parmetros
142
Sobrecarga
.........................................................................................................................
de Funo
145
Sobrecarga
.........................................................................................................................
de Operao
148
Descrio
.........................................................................................................................
de Funes Externas
162
Exportao
.........................................................................................................................
de Funes
164
Funes .........................................................................................................................
de Manipulao de Evento
165
2000-2015, MetaQuotes Software Corp.

Contedo
V ariveis ............................................................................................................................177
Variveis.........................................................................................................................
Locais
180
Parmetros
.........................................................................................................................
Formais
182
Variveis.........................................................................................................................
Estticas
184
Variveis.........................................................................................................................
Globais
186
Variveis.........................................................................................................................
de Entrada
187
Variveis.........................................................................................................................
Externas
191
Inicializao
.........................................................................................................................
de Variveis
192
Visibilidade
.........................................................................................................................
Escopo e Tempo de Vida de Variveis
194
Criao e.........................................................................................................................
Excluso de Objetos
196
............................................................................................................................199
Preprocessador
Substituio
.........................................................................................................................
de Macro (#define)
200
Propriedades
.........................................................................................................................
de Programa (#property)
203
Incluindo.........................................................................................................................
Arquivos (#include)
208
Importando
.........................................................................................................................
Funes (#import)
209
Conditional
.........................................................................................................................
Compilation (#ifdef, #ifndef, #else, #endif)
211
............................................................................................................................213
Programao
Orientada a Objetos
Encapsulamento
.........................................................................................................................
e Extensibilidade de Tipo
215
Herana ......................................................................................................................... 218
Polimorfismo
......................................................................................................................... 223
Sobrecarga
.........................................................................................................................
(Overload)
227
Funes .........................................................................................................................
Virtuais
228
Membros.........................................................................................................................
Estticos de uma Classe
231
Templates
.........................................................................................................................
de Funo
235

Constantes Padro,
.................................................................................................
Enumeradores e Estruturas
239
Constantes............................................................................................................................240
de Grfico
Tipos de .........................................................................................................................
Eventos de Grficos
241
Janela temporal
.........................................................................................................................
de Grfico
247
Propriedades
.........................................................................................................................
de Grfico
249
Constantes
.........................................................................................................................
de Posicionamento
255
Representao
.........................................................................................................................
de Grfico
256
Exemplos.........................................................................................................................
de como trabalhar com um grfico
258
Constantes............................................................................................................................316
de Objetos
Tipos de .........................................................................................................................
Objeto
317
OBJ_VLINE ................................................................................................................ 319
OBJ_HLINE ................................................................................................................ 324
OBJ_TREND ................................................................................................................ 329
OBJ_TRENDBYANGLE
................................................................................................................ 336
OBJ_CYCLES................................................................................................................ 342
OBJ_ARROWED_LINE
................................................................................................................ 348
OBJ_CHANNEL
................................................................................................................ 354
OBJ_STDDEVCHANNEL
................................................................................................................ 361
OBJ_REGRESSION
................................................................................................................ 368
OBJ_PITCHFORK
................................................................................................................ 374
OBJ_GANNLINE
................................................................................................................ 382
OBJ_GANNFAN
................................................................................................................ 389
OBJ_GANNGRID
................................................................................................................ 396
OBJ_FIBO ................................................................................................................ 403
OBJ_FIBOTIMES
................................................................................................................ 410
OBJ_FIBOFAN
................................................................................................................ 417
OBJ_FIBOARC
................................................................................................................ 424
OBJ_FIBOCHANNEL
................................................................................................................ 431
OBJ_EXPANSION
................................................................................................................ 439
OBJ_ELLIOTWAVE5
................................................................................................................ 447
OBJ_ELLIOTWAVE3
................................................................................................................ 455
OBJ_RECTANGLE
................................................................................................................ 462
OBJ_TRIANGLE
................................................................................................................ 468
OBJ_ELLIPSE................................................................................................................ 475
2000-2015, MetaQuotes Software Corp.

Contedo
OBJ_ARROW_THUMB_UP
................................................................................................................ 482
OBJ_ARROW_THUMB_DOWN
................................................................................................................ 488
OBJ_ARROW_UP
................................................................................................................ 494
OBJ_ARROW_DOWN
................................................................................................................ 500
OBJ_ARROW_STOP
................................................................................................................ 506
OBJ_ARROW_CHECK
................................................................................................................ 512
OBJ_ARROW_LEFT_PRICE
................................................................................................................ 518
OBJ_ARROW_RIGHT_PRICE
................................................................................................................ 523
OBJ_ARROW_BUY
................................................................................................................ 528
OBJ_ARROW_SELL
................................................................................................................ 533
OBJ_ARROW................................................................................................................ 538
OBJ_TEXT ................................................................................................................ 544
OBJ_LABEL ................................................................................................................ 550
OBJ_BUTTON
................................................................................................................ 558
OBJ_CHART ................................................................................................................ 565
OBJ_BITMAP................................................................................................................ 572
OBJ_BITMAP_LABEL
................................................................................................................ 579
OBJ_EDIT ................................................................................................................ 586
OBJ_EVENT ................................................................................................................ 593
OBJ_RECTANGLE_LABEL
................................................................................................................ 598
Propriedades
.........................................................................................................................
do Objeto
604
Mtodos .........................................................................................................................
de Vinculao de Objeto
611
Canto de.........................................................................................................................
Grfico
615
Visibilidade
.........................................................................................................................
de Objetos
617
Nveis de.........................................................................................................................
Onda de Elliott
620
Objetos .........................................................................................................................
Gann
621
Cores Web
......................................................................................................................... 623
Wingdings
......................................................................................................................... 625
Constantes............................................................................................................................626
de Indicador
Constantes
.........................................................................................................................
de Preo
627
Mtodos .........................................................................................................................
de Suavizao
630
Linhas de.........................................................................................................................
Indicadores
631
Estilos de.........................................................................................................................
Desenho
633
Propriedades
.........................................................................................................................
de Indicador Customizado
637
Tipos de .........................................................................................................................
Indicador
640
Identificadores
.........................................................................................................................
de Tipo de Dados
642
............................................................................................................................643
Estado de Ambiente
Propriedades
.........................................................................................................................
do Terminal Cliente
644
Propriedades
.........................................................................................................................
de um Programa MQL5 em Execuo
647
Propriedades
.........................................................................................................................
do Ativo
650
Propriedades
.........................................................................................................................
da Conta
663
Estatsticas
.........................................................................................................................
de Teste
667
Constantes............................................................................................................................671
de Negociao (Trade)
Propriedades
.........................................................................................................................
de uma Base Histrica de Dados
672
Propriedades
.........................................................................................................................
de uma Ordem
673
Propriedades
.........................................................................................................................
de uma Posio
677
Propriedades
.........................................................................................................................
de uma Operao (Deal)
679
Tipos de .........................................................................................................................
Operaes de Negociao (Trade)
682
Tipos de .........................................................................................................................
Transao de Negociao
683
Ordens de
.........................................................................................................................
Negociao em DOM (Profundidade de Mercado)
686
Signal Properties
......................................................................................................................... 687
Constantes............................................................................................................................689
Nomeados
Substituies
.........................................................................................................................
de Macro Predefinidas
690
Constantes
.........................................................................................................................
Matemticas
692
Constantes
.........................................................................................................................
de Tipo Numrico
694
Cdigos de
.........................................................................................................................
Motivos de Desinicializao
697
Verificao
.........................................................................................................................
de Ponteiro de Objeto
699
Outras Constantes
......................................................................................................................... 700
2000-2015, MetaQuotes Software Corp.

Contedo
............................................................................................................................704
Estruturas de
Dados
Estrutura
.........................................................................................................................
do Tipo Data
705
Estrutura
.........................................................................................................................
de Parmetros de Entrada
706
Estrutura
.........................................................................................................................
de Dados Histricos
707
Estrutura
.........................................................................................................................
DOM
708
Estrutura
.........................................................................................................................
de Solicitao de Negociao (Trade)
709
Estrutura
.........................................................................................................................
de Resultados de Verificao de Solicitao
713
Estrutura
.........................................................................................................................
de Resultado de Solicitao de uma Negociao (Trade)
714
Estrutura
.........................................................................................................................
de uma Transao de Negociao
718
Estrutura
.........................................................................................................................
para Preos Correntes
726
Cdigos de ............................................................................................................................727
Erros e Avisos
Cdigos de
.........................................................................................................................
Retorno do Servidor de Negociao
728
Avisos do.........................................................................................................................
Compilador
730
Erros de .........................................................................................................................
Compilao
734
Erros em.........................................................................................................................
Tempo de Execuo
745
Constantes............................................................................................................................754
de Entrada/Sada
Flags de .........................................................................................................................
Abertura de Arquivo
755
Propriedades
.........................................................................................................................
de Arquivo
758
Posio In-File
......................................................................................................................... 760
Uso de um
.........................................................................................................................
Cdigo de Pgina (Codepage)
761
MessageBox
......................................................................................................................... 762

Programas MQL5
................................................................................................. 764
............................................................................................................................765
Execuo de
Programa
............................................................................................................................772
Trade permission
Eventos do ............................................................................................................................776
Terminal Cliente
Recursos ............................................................................................................................779
............................................................................................................................788
Chamadas de
Funes Importadas
............................................................................................................................790
Erros em Tempo
de Execuo
............................................................................................................................791
Testando Estratgias
de Negociao

Variveis Predefinidas
................................................................................................. 817
............................................................................................................................818
_Digits
............................................................................................................................819
_Point
_LastError ............................................................................................................................820
............................................................................................................................821
_Period
............................................................................................................................822
_RandomSeed
_StopFlag ............................................................................................................................823
_Sy mbol ............................................................................................................................824
............................................................................................................................825
_UninitReason

Funes Comuns
................................................................................................. 826
............................................................................................................................828
Alert
............................................................................................................................829
CheckPointer
Comment ............................................................................................................................831
............................................................................................................................832
Cry ptEncode
............................................................................................................................834
Cry ptDecode
............................................................................................................................835
DebugBreak
............................................................................................................................836
ExpertRemove
GetPointer ............................................................................................................................838
............................................................................................................................842
GetTickCount
............................................................................................................................843
GetMicrosecondCount
MessageBox............................................................................................................................845
............................................................................................................................846
PeriodSeconds
Play Sound ............................................................................................................................847
............................................................................................................................848
Print
PrintFormat............................................................................................................................850
............................................................................................................................856
ResetLastError
............................................................................................................................857
ResourceCreate
............................................................................................................................859
ResourceFree
2000-2015, MetaQuotes Software Corp.

Contedo
............................................................................................................................860
ResourceReadImage
............................................................................................................................861
ResourceSave
............................................................................................................................862
SetUserError
SendFTP ............................................................................................................................863
............................................................................................................................864
SendNotification
SendMail ............................................................................................................................865
............................................................................................................................866
Sleep
............................................................................................................................867
TerminalClose
............................................................................................................................869
TesterStatistics
............................................................................................................................870
TesterW ithdraw
al
............................................................................................................................871
W ebRequest
............................................................................................................................877
ZeroMemory

Funes para .................................................................................................


Array
878
............................................................................................................................879
Array Bsearch
Array Copy ............................................................................................................................883
............................................................................................................................888
Array Compare
Array Free ............................................................................................................................889
............................................................................................................................898
Array GetAsSeries
............................................................................................................................901
Array Initialize
Array Fill ............................................................................................................................903
............................................................................................................................905
Array IsDy namic
............................................................................................................................907
Array IsSeries
............................................................................................................................909
Array Maximum
............................................................................................................................920
Array Minimum
Array Range............................................................................................................................931
............................................................................................................................932
Array Resize
............................................................................................................................935
Array SetAsSeries
Array Size ............................................................................................................................938
Array Sort ............................................................................................................................940

Funes de Converso
................................................................................................. 945
............................................................................................................................947
CharToString
............................................................................................................................948
CharArray ToString
............................................................................................................................949
ColorToARGB
............................................................................................................................951
ColorToString
............................................................................................................................952
DoubleToString
............................................................................................................................953
EnumToString
............................................................................................................................955
IntegerToString
............................................................................................................................956
ShortToString
ShortArray............................................................................................................................957
ToString
............................................................................................................................958
TimeToString
............................................................................................................................959
NormalizeDouble
............................................................................................................................961
StringToCharArray
............................................................................................................................962
StringToColor
............................................................................................................................963
StringToDouble
............................................................................................................................964
StringToInteger
............................................................................................................................965
StringToShortArray
............................................................................................................................966
StringToTime
............................................................................................................................967
StringFormat

Funes Matemticas
................................................................................................. 971
MathAbs ............................................................................................................................972
MathArccos............................................................................................................................973
MathArcsin............................................................................................................................974
MathArctan............................................................................................................................975
MathCeil ............................................................................................................................976
MathCos ............................................................................................................................977
MathExp ............................................................................................................................978
MathFloor ............................................................................................................................979
2000-2015, MetaQuotes Software Corp.

Contedo
MathLog ............................................................................................................................980
MathLog10 ............................................................................................................................981
MathMax ............................................................................................................................982
MathMin ............................................................................................................................983
MathMod ............................................................................................................................984
MathPow ............................................................................................................................985
MathRand ............................................................................................................................986
MathRound............................................................................................................................987
............................................................................................................................988
MathSin
MathSqrt ............................................................................................................................989
MathSrand ............................................................................................................................990
MathTan ............................................................................................................................993
............................................................................................................................994
MathIsV alidNumber

Funes de String
................................................................................................. 995
StringAdd ............................................................................................................................996
............................................................................................................................998
StringBufferLen
............................................................................................................................999
StringCompare
............................................................................................................................1001
StringConcatenate
StringFill ............................................................................................................................1002
StringFind............................................................................................................................1003
............................................................................................................................1004
StringGetCharacter
StringInit ............................................................................................................................1005
StringLen ............................................................................................................................1006
............................................................................................................................1007
StringReplace
............................................................................................................................1008
StringSetCharacter
StringSplit............................................................................................................................1010
............................................................................................................................1012
StringSubstr
............................................................................................................................1013
StringToLow
er
............................................................................................................................1014
StringToUpper
............................................................................................................................1015
StringTrimLeft
............................................................................................................................1016
StringTrimRight

10

Data e Hora ................................................................................................. 1017


............................................................................................................................1018
TimeCurrent
............................................................................................................................1019
TimeTradeServer
TimeLocal............................................................................................................................1020
TimeGMT ............................................................................................................................1021
............................................................................................................................1022
TimeDay lightSavings
............................................................................................................................1023
TimeGMTOffset
............................................................................................................................1024
TimeToStruct
............................................................................................................................1025
StructToTime

11 Informaes .................................................................................................
de Conta
1026
............................................................................................................................1027
AccountInfoDouble
............................................................................................................................1028
AccountInfoInteger
............................................................................................................................1030
AccountInfoString

12

Verificando Estado
................................................................................................. 1031
............................................................................................................................1032
GetLastError
IsStopped............................................................................................................................1033
............................................................................................................................1034
UninitializeReason
............................................................................................................................1035
TerminalInfoInteger
............................................................................................................................1036
TerminalInfoDouble
............................................................................................................................1037
TerminalInfoString
............................................................................................................................1038
MQLInfoInteger
............................................................................................................................1039
MQLInfoString
Sy mbol ............................................................................................................................1040
............................................................................................................................1041
Period
............................................................................................................................1042
Digits
............................................................................................................................1043
Point
2000-2015, MetaQuotes Software Corp.

Contedo
13

Informaes .................................................................................................
de Mercado
1044
............................................................................................................................1045
Sy mbolsTotal
............................................................................................................................1046
Sy mbolName
............................................................................................................................1047
Sy mbolSelect
............................................................................................................................1048
Sy mbolIsSy
nchronized
............................................................................................................................1049
Sy mbolInfoDouble
............................................................................................................................1051
Sy mbolInfoInteger
............................................................................................................................1053
Sy mbolInfoString
............................................................................................................................1054
Sy mbolInfoMarginRate
............................................................................................................................1055
Sy mbolInfoTick
............................................................................................................................1056
Sy mbolInfoSessionQuote
............................................................................................................................1057
Sy mbolInfoSessionTrade
............................................................................................................................1058
MarketBookAdd
............................................................................................................................1059
MarketBookRelease
............................................................................................................................1060
MarketBookGet

14

Sries Temporais
.................................................................................................
e Acesso a Indicadores
1061
............................................................................................................................1065
Direo de
Indexao em Array s, Buffers e Sries Temporais
............................................................................................................................1069
Organizando
Acesso aos Dados
............................................................................................................................1079
SeriesInfoInteger
............................................................................................................................1081
Bars
............................................................................................................................1083
BarsCalculated
............................................................................................................................1085
IndicatorCreate
............................................................................................................................1087
IndicatorParameters
............................................................................................................................1089
IndicatorRelease
............................................................................................................................1091
Copy Buffer
Copy Rates............................................................................................................................1096
Copy Time............................................................................................................................1100
Copy Open............................................................................................................................1103
Copy High ............................................................................................................................1106
Copy Low ............................................................................................................................1110
Copy Close............................................................................................................................1113
............................................................................................................................1116
Copy TickV
olume
Copy RealV............................................................................................................................1120
olume
............................................................................................................................1123
Copy Spread
Copy Ticks............................................................................................................................1127

15

Operaes de.................................................................................................
Grficos
1129
............................................................................................................................1132
ChartApply
Template
............................................................................................................................1135
ChartSaveTemplate
............................................................................................................................1140
ChartW indow
Find
............................................................................................................................1142
ChartTimePriceToX
Y
............................................................................................................................1143
ChartX Y ToTimePrice
ChartOpen............................................................................................................................1145
ChartFirst ............................................................................................................................1146
ChartNext............................................................................................................................1147
ChartClose............................................................................................................................1148
............................................................................................................................1149
ChartSy mbol
............................................................................................................................1150
ChartPeriod
............................................................................................................................1151
ChartRedraw
............................................................................................................................1152
ChartSetDouble
............................................................................................................................1153
ChartSetInteger
............................................................................................................................1154
ChartSetString
............................................................................................................................1155
ChartGetDouble
............................................................................................................................1157
ChartGetInteger
............................................................................................................................1159
ChartGetString
............................................................................................................................1161
ChartNavigate
ChartID ............................................................................................................................1164
............................................................................................................................1165
ChartIndicatorAdd
2000-2015, MetaQuotes Software Corp.

Contedo
............................................................................................................................1169
ChartIndicatorDelete
............................................................................................................................1172
ChartIndicatorGet
............................................................................................................................1174
ChartIndicatorName
............................................................................................................................1175
ChartIndicatorsTotal
............................................................................................................................1176
ChartW indow
OnDropped
............................................................................................................................1177
ChartPriceOnDropped
............................................................................................................................1178
ChartTimeOnDropped
............................................................................................................................1179
ChartX OnDropped
............................................................................................................................1180
ChartY OnDropped
ChartSetSy............................................................................................................................1181
mbolPeriod
............................................................................................................................1182
ChartScreenShot

16

Funes de Negociao
.................................................................................................
(Trade)
1185
............................................................................................................................1187
OrderCalcMargin
............................................................................................................................1188
OrderCalcProfit
............................................................................................................................1189
OrderCheck
............................................................................................................................1190
OrderSend
............................................................................................................................1195
OrderSendAsy
nc
............................................................................................................................1206
PositionsTotal
............................................................................................................................1207
PositionGetSy
mbol
............................................................................................................................1208
PositionSelect
............................................................................................................................1209
PositionGetDouble
............................................................................................................................1210
PositionGetInteger
............................................................................................................................1212
PositionGetString
............................................................................................................................1213
OrdersTotal
............................................................................................................................1214
OrderGetTicket
............................................................................................................................1216
OrderSelect
............................................................................................................................1217
OrderGetDouble
............................................................................................................................1218
OrderGetInteger
............................................................................................................................1219
OrderGetString
............................................................................................................................1220
History Select
............................................................................................................................1222
History SelectBy
Position
............................................................................................................................1223
History OrderSelect
............................................................................................................................1224
History OrdersTotal
............................................................................................................................1225
History OrderGetTicket
............................................................................................................................1227
History OrderGetDouble
............................................................................................................................1228
History OrderGetInteger
............................................................................................................................1231
History OrderGetString
............................................................................................................................1232
History DealSelect
............................................................................................................................1233
History DealsTotal
............................................................................................................................1234
History DealGetTicket
............................................................................................................................1236
History DealGetDouble
............................................................................................................................1237
History DealGetInteger
............................................................................................................................1240
History DealGetString

17

Trade Signals................................................................................................. 1241


............................................................................................................................1242
SignalBaseGetDouble
............................................................................................................................1243
SignalBaseGetInteger
............................................................................................................................1244
SignalBaseGetString
............................................................................................................................1245
SignalBaseSelect
............................................................................................................................1246
SignalBaseTotal
............................................................................................................................1247
SignalInfoGetDouble
............................................................................................................................1248
SignalInfoGetInteger
............................................................................................................................1249
SignalInfoGetString
............................................................................................................................1250
SignalInfoSetDouble
............................................................................................................................1251
SignalInfoSetInteger
............................................................................................................................1252
SignalSubscribe
............................................................................................................................1253
SignalUnsubscribe

18

Variveis Globais
.................................................................................................
do Terminal
1254
2000-2015, MetaQuotes Software Corp.

10

Contedo
............................................................................................................................1255
GlobalV ariableCheck
............................................................................................................................1256
GlobalV ariableTime
............................................................................................................................1257
GlobalV ariableDel
............................................................................................................................1258
GlobalV ariableGet
............................................................................................................................1259
GlobalV ariableName
............................................................................................................................1260
GlobalV ariableSet
............................................................................................................................1261
GlobalV ariablesFlush
............................................................................................................................1262
GlobalV ariableTemp
............................................................................................................................1263
GlobalV ariableSetOnCondition
............................................................................................................................1264
GlobalV ariablesDeleteAll
............................................................................................................................1265
GlobalV ariablesTotal

19

Funes de Arquivo
................................................................................................. 1266
............................................................................................................................1269
FileFindFirst
............................................................................................................................1271
FileFindNext
............................................................................................................................1273
FileFindClose
FileIsExist ............................................................................................................................1275
FileOpen ............................................................................................................................1278
FileClose ............................................................................................................................1281
FileCopy ............................................................................................................................1282
FileDelete............................................................................................................................1285
FileMove ............................................................................................................................1287
FileFlush ............................................................................................................................1289
............................................................................................................................1291
FileGetInteger
............................................................................................................................1294
FileIsEnding
............................................................................................................................1296
FileIsLineEnding
............................................................................................................................1301
FileReadArray
............................................................................................................................1303
FileReadBool
............................................................................................................................1306
FileReadDatetime
............................................................................................................................1309
FileReadDouble
............................................................................................................................1312
FileReadFloat
............................................................................................................................1315
FileReadInteger
............................................................................................................................1319
FileReadLong
............................................................................................................................1322
FileReadNumber
............................................................................................................................1327
FileReadString
............................................................................................................................1329
FileReadStruct
FileSeek ............................................................................................................................1333
FileSize ............................................................................................................................1336
FileTell ............................................................................................................................1338
FileW rite ............................................................................................................................1341
............................................................................................................................1344
FileW riteArray
............................................................................................................................1347
FileW riteDouble
............................................................................................................................1350
FileW riteFloat
............................................................................................................................1352
FileW riteInteger
............................................................................................................................1355
FileW riteLong
............................................................................................................................1357
FileW riteString
............................................................................................................................1360
FileW riteStruct
............................................................................................................................1363
FolderCreate
............................................................................................................................1366
FolderDelete
............................................................................................................................1369
FolderClean

20

Indicadores Customizados
................................................................................................. 1372
Estilos de ............................................................................................................................1376
Indicador em Exemplos
DRAW_NONE
......................................................................................................................... 1384
DRAW_LINE
......................................................................................................................... 1387
DRAW_SECTION
......................................................................................................................... 1391
DRAW_HISTOGRAM
......................................................................................................................... 1395
DRAW_HISTOGRAM2
......................................................................................................................... 1399
DRAW_ARROW
......................................................................................................................... 1403
DRAW_ZIGZAG
......................................................................................................................... 1408
2000-2015, MetaQuotes Software Corp.

11

Contedo
DRAW_FILLING
......................................................................................................................... 1413
DRAW_BARS
......................................................................................................................... 1418
DRAW_CANDLES
......................................................................................................................... 1424
DRAW_COLOR_LINE
......................................................................................................................... 1430
DRAW_COLOR_SECTION
......................................................................................................................... 1435
DRAW_COLOR_HISTOGRAM
......................................................................................................................... 1441
DRAW_COLOR_HISTOGRAM2
......................................................................................................................... 1446
DRAW_COLOR_ARROW
......................................................................................................................... 1451
DRAW_COLOR_ZIGZAG
......................................................................................................................... 1457
DRAW_COLOR_BARS
......................................................................................................................... 1462
DRAW_COLOR_CANDLES
......................................................................................................................... 1469
............................................................................................................................1476
Conexo entre
Propriedades do Indicador e Funes
............................................................................................................................1479
SetIndexBuffer
............................................................................................................................1482
IndicatorSetDouble
............................................................................................................................1486
IndicatorSetInteger
............................................................................................................................1490
IndicatorSetString
............................................................................................................................1493
PlotIndexSetDouble
............................................................................................................................1494
PlotIndexSetInteger
............................................................................................................................1498
PlotIndexSetString
............................................................................................................................1499
PlotIndexGetInteger

21 Funes de Objeto
................................................................................................. 1502
............................................................................................................................1504
ObjectCreate
............................................................................................................................1508
ObjectName
............................................................................................................................1509
ObjectDelete
............................................................................................................................1510
ObjectsDeleteAll
............................................................................................................................1511
ObjectFind
............................................................................................................................1512
ObjectGetTimeBy
V alue
............................................................................................................................1513
ObjectGetV
alueBy Time
............................................................................................................................1514
ObjectMove
............................................................................................................................1515
ObjectsTotal
............................................................................................................................1516
ObjectSetDouble
............................................................................................................................1519
ObjectSetInteger
............................................................................................................................1522
ObjectSetString
............................................................................................................................1524
ObjectGetDouble
............................................................................................................................1525
ObjectGetInteger
............................................................................................................................1526
ObjectGetString
............................................................................................................................1528
TextSetFont
TextOut ............................................................................................................................1531
............................................................................................................................1535
TextGetSize

22

Indicadores Tcnicos
................................................................................................. 1536
............................................................................................................................1539
iAC
............................................................................................................................1544
iAD
............................................................................................................................1549
iADX
............................................................................................................................1554
iADX W ilder
iAlligator ............................................................................................................................1559
............................................................................................................................1566
iAMA
............................................................................................................................1571
iAO
............................................................................................................................1576
iATR
iBearsPow............................................................................................................................1581
er
............................................................................................................................1586
iBands
............................................................................................................................1592
iBullsPow er
............................................................................................................................1597
iCCI
iChaikin ............................................................................................................................1602
iCustom ............................................................................................................................1607
............................................................................................................................1610
iDEMA
iDeMarker............................................................................................................................1615
iEnvelopes............................................................................................................................1620
............................................................................................................................1626
iForce
2000-2015, MetaQuotes Software Corp.

12

Contedo
iFractals ............................................................................................................................1631
iFrAMA ............................................................................................................................1636
............................................................................................................................1641
iGator
iIchimoku............................................................................................................................1648
iBW MFI ............................................................................................................................1655
............................................................................................................................1660
iMomentum
............................................................................................................................1665
iMFI
............................................................................................................................1670
iMA
............................................................................................................................1675
iOsMA
............................................................................................................................1680
iMACD
............................................................................................................................1686
iOBV
............................................................................................................................1691
iSAR
............................................................................................................................1696
iRSI
............................................................................................................................1701
iRV I
iStdDev ............................................................................................................................1706
iStochastic............................................................................................................................1711
............................................................................................................................1717
iTEMA
............................................................................................................................1722
iTriX
............................................................................................................................1727
iW PR
............................................................................................................................1732
iV IDy A
iV olumes ............................................................................................................................1737

23

Trabalhando.................................................................................................
com Resultados de Otimizao
1742
FrameFirst............................................................................................................................1743
............................................................................................................................1744
FrameFilter
............................................................................................................................1745
FrameNext
............................................................................................................................1746
FrameInputs
FrameAdd............................................................................................................................1747
............................................................................................................................1748
ParameterGetRange
............................................................................................................................1751
ParameterSetRange

24

Trabalhando.................................................................................................
com Eventos
1753
............................................................................................................................1754
EventSetMillisecondTimer
............................................................................................................................1755
EventSetTimer
............................................................................................................................1756
EventKillTimer
............................................................................................................................1757
EventChartCustom

25

Trabalhando.................................................................................................
com OpenCL
1763
............................................................................................................................1764
CLHandleTy
pe
............................................................................................................................1765
CLGetInfoInteger
............................................................................................................................1768
CLGetInfoString
............................................................................................................................1771
CLContextCreate
............................................................................................................................1772
CLContextFree
............................................................................................................................1773
CLGetDeviceInfo
............................................................................................................................1777
CLProgramCreate
............................................................................................................................1781
CLProgramFree
............................................................................................................................1782
CLKernelCreate
............................................................................................................................1783
CLKernelFree
............................................................................................................................1784
CLSetKernelArg
............................................................................................................................1785
CLSetKernelArgMem
............................................................................................................................1786
CLBufferCreate
............................................................................................................................1787
CLBufferFree
CLBufferW............................................................................................................................1788
rite
............................................................................................................................1789
CLBufferRead
CLExecute............................................................................................................................1790

26

Biblioteca Padro
................................................................................................. 1792
............................................................................................................................1793
Classe Base
CObject
Prev ......................................................................................................................... 1794
Prev ......................................................................................................................... 1795
Next ......................................................................................................................... 1796
2000-2015, MetaQuotes Software Corp.

13

Contedo
Next ......................................................................................................................... 1797
Compare
......................................................................................................................... 1798
Save ......................................................................................................................... 1800
Load ......................................................................................................................... 1802
Type ......................................................................................................................... 1804
Dados das............................................................................................................................1805
Classes
CArray ......................................................................................................................... 1806
Step
................................................................................................................ 1808
Step
................................................................................................................ 1809
Total
................................................................................................................ 1810
Available ................................................................................................................ 1811
Max
................................................................................................................ 1812
IsSorted ................................................................................................................ 1813
SortMode ................................................................................................................ 1814
Clear
................................................................................................................ 1815
Sort
................................................................................................................ 1816
Save
................................................................................................................ 1817
Load
................................................................................................................ 1818
CArrayChar
......................................................................................................................... 1819
Reserve ................................................................................................................ 1821
Resize
................................................................................................................ 1822
Shutdown ................................................................................................................ 1823
Add
................................................................................................................ 1824
AddArray ................................................................................................................ 1825
AddArray ................................................................................................................ 1826
Insert
................................................................................................................ 1828
InsertArray................................................................................................................ 1829
InsertArray................................................................................................................ 1830
AssignArray................................................................................................................ 1832
AssignArray................................................................................................................ 1833
Update
................................................................................................................ 1835
Shift
................................................................................................................ 1836
Delete
................................................................................................................ 1837
DeleteRange
................................................................................................................ 1838
At
................................................................................................................ 1839
CompareArray
................................................................................................................ 1841
CompareArray
................................................................................................................ 1842
InsertSort ................................................................................................................ 1843
Search
................................................................................................................ 1844
SearchGreat
................................................................................................................ 1845
SearchLess................................................................................................................ 1846
SearchGreatOrEqual
................................................................................................................ 1847
SearchLessOrEqual
................................................................................................................ 1848
SearchFirst................................................................................................................ 1849
SearchLast................................................................................................................ 1850
SearchLinear
................................................................................................................ 1851
Save
................................................................................................................ 1852
Load
................................................................................................................ 1853
Type
................................................................................................................ 1855
CArrayShort
......................................................................................................................... 1856
Reserve ................................................................................................................ 1858
Resize
................................................................................................................ 1859
Shutdown ................................................................................................................ 1860
Add
................................................................................................................ 1861
AddArray ................................................................................................................ 1862
AddArray ................................................................................................................ 1863
Insert
................................................................................................................ 1865
InsertArray................................................................................................................ 1866
2000-2015, MetaQuotes Software Corp.

14

Contedo
InsertArray................................................................................................................ 1867
AssignArray................................................................................................................ 1869
AssignArray................................................................................................................ 1870
Update
................................................................................................................ 1872
Shift
................................................................................................................ 1873
Delete
................................................................................................................ 1874
DeleteRange
................................................................................................................ 1875
At
................................................................................................................ 1876
CompareArray
................................................................................................................ 1878
CompareArray
................................................................................................................ 1879
InsertSort ................................................................................................................ 1880
Search
................................................................................................................ 1881
SearchGreat
................................................................................................................ 1882
SearchLess................................................................................................................ 1883
SearchGreatOrEqual
................................................................................................................ 1884
SearchLessOrEqual
................................................................................................................ 1885
SearchFirst................................................................................................................ 1886
SearchLast................................................................................................................ 1887
SearchLinear
................................................................................................................ 1888
Save
................................................................................................................ 1889
Load
................................................................................................................ 1891
Type
................................................................................................................ 1893
CArrayInt
......................................................................................................................... 1894
Reserve ................................................................................................................ 1896
Resize
................................................................................................................ 1897
Shutdown ................................................................................................................ 1898
Add
................................................................................................................ 1899
AddArray ................................................................................................................ 1900
AddArray ................................................................................................................ 1901
Insert
................................................................................................................ 1903
InsertArray................................................................................................................ 1904
InsertArray................................................................................................................ 1905
AssignArray................................................................................................................ 1907
AssignArray................................................................................................................ 1908
Update
................................................................................................................ 1910
Shift
................................................................................................................ 1911
Delete
................................................................................................................ 1912
DeleteRange
................................................................................................................ 1913
At
................................................................................................................ 1914
CompareArray
................................................................................................................ 1916
CompareArray
................................................................................................................ 1917
InsertSort ................................................................................................................ 1918
Search
................................................................................................................ 1919
SearchGreat
................................................................................................................ 1920
SearchLess................................................................................................................ 1921
SearchGreatOrEqual
................................................................................................................ 1922
SearchLessOrEqual
................................................................................................................ 1923
SearchFirst................................................................................................................ 1924
SearchLast................................................................................................................ 1925
SearchLinear
................................................................................................................ 1926
Save
................................................................................................................ 1927
Load
................................................................................................................ 1929
Type
................................................................................................................ 1931
CArrayLong
......................................................................................................................... 1932
Reserve ................................................................................................................ 1934
Resize
................................................................................................................ 1935
Shutdown ................................................................................................................ 1936
Add
................................................................................................................ 1937
2000-2015, MetaQuotes Software Corp.

15

Contedo
AddArray ................................................................................................................ 1938
AddArray ................................................................................................................ 1939
Insert
................................................................................................................ 1941
InsertArray................................................................................................................ 1942
InsertArray................................................................................................................ 1943
AssignArray................................................................................................................ 1945
AssignArray................................................................................................................ 1946
Update
................................................................................................................ 1948
Shift
................................................................................................................ 1949
Delete
................................................................................................................ 1950
DeleteRange
................................................................................................................ 1951
At
................................................................................................................ 1952
CompareArray
................................................................................................................ 1954
CompareArray
................................................................................................................ 1955
InsertSort ................................................................................................................ 1956
Search
................................................................................................................ 1957
SearchGreat
................................................................................................................ 1958
SearchLess................................................................................................................ 1959
SearchGreatOrEqual
................................................................................................................ 1960
SearchLessOrEqual
................................................................................................................ 1961
SearchFirst................................................................................................................ 1962
SearchLast................................................................................................................ 1963
SearchLinear
................................................................................................................ 1964
Save
................................................................................................................ 1965
Load
................................................................................................................ 1967
Type
................................................................................................................ 1969
CArrayFloat
......................................................................................................................... 1970
Delta
................................................................................................................ 1972
Reserve ................................................................................................................ 1973
Resize
................................................................................................................ 1974
Shutdown ................................................................................................................ 1975
Add
................................................................................................................ 1976
AddArray ................................................................................................................ 1977
AddArray ................................................................................................................ 1978
Insert
................................................................................................................ 1980
InsertArray................................................................................................................ 1981
InsertArray................................................................................................................ 1982
AssignArray................................................................................................................ 1984
AssignArray................................................................................................................ 1985
Update
................................................................................................................ 1987
Shift
................................................................................................................ 1988
Delete
................................................................................................................ 1989
DeleteRange
................................................................................................................ 1990
At
................................................................................................................ 1991
CompareArray
................................................................................................................ 1993
CompareArray
................................................................................................................ 1994
InsertSort ................................................................................................................ 1995
Search
................................................................................................................ 1996
SearchGreat
................................................................................................................ 1997
SearchLess................................................................................................................ 1998
SearchGreatOrEqual
................................................................................................................ 1999
SearchLessOrEqual
................................................................................................................ 2000
SearchFirst................................................................................................................ 2001
SearchLast................................................................................................................ 2002
SearchLinear
................................................................................................................ 2003
Save
................................................................................................................ 2004
Load
................................................................................................................ 2006
Type
................................................................................................................ 2008
2000-2015, MetaQuotes Software Corp.

16

Contedo
CArrayDouble
......................................................................................................................... 2009
Delta
................................................................................................................ 2012
Reserve ................................................................................................................ 2013
Resize
................................................................................................................ 2014
Shutdown ................................................................................................................ 2015
Add
................................................................................................................ 2016
AddArray ................................................................................................................ 2017
AddArray ................................................................................................................ 2018
Insert
................................................................................................................ 2020
InsertArray................................................................................................................ 2021
InsertArray................................................................................................................ 2022
AssignArray................................................................................................................ 2024
AssignArray................................................................................................................ 2025
Update
................................................................................................................ 2027
Shift
................................................................................................................ 2028
Delete
................................................................................................................ 2029
DeleteRange
................................................................................................................ 2030
At
................................................................................................................ 2031
CompareArray
................................................................................................................ 2033
CompareArray
................................................................................................................ 2034
Minimum ................................................................................................................ 2035
Maximum ................................................................................................................ 2036
InsertSort ................................................................................................................ 2037
Search
................................................................................................................ 2038
SearchGreat
................................................................................................................ 2039
SearchLess................................................................................................................ 2040
SearchGreatOrEqual
................................................................................................................ 2041
SearchLessOrEqual
................................................................................................................ 2042
SearchFirst................................................................................................................ 2043
SearchLast................................................................................................................ 2044
SearchLinear
................................................................................................................ 2045
Save
................................................................................................................ 2046
Load
................................................................................................................ 2048
Type
................................................................................................................ 2050
CArrayString
......................................................................................................................... 2051
Reserve ................................................................................................................ 2053
Resize
................................................................................................................ 2054
Shutdown ................................................................................................................ 2055
Add
................................................................................................................ 2056
AddArray ................................................................................................................ 2057
AddArray ................................................................................................................ 2058
Insert
................................................................................................................ 2060
InsertArray................................................................................................................ 2061
InsertArray................................................................................................................ 2062
AssignArray................................................................................................................ 2064
AssignArray................................................................................................................ 2065
Update
................................................................................................................ 2067
Shift
................................................................................................................ 2068
Delete
................................................................................................................ 2069
DeleteRange
................................................................................................................ 2070
At
................................................................................................................ 2071
CompareArray
................................................................................................................ 2073
CompareArray
................................................................................................................ 2074
InsertSort ................................................................................................................ 2075
Search
................................................................................................................ 2076
SearchGreat
................................................................................................................ 2077
SearchLess................................................................................................................ 2078
SearchGreatOrEqual
................................................................................................................ 2079
2000-2015, MetaQuotes Software Corp.

17

Contedo
SearchLessOrEqual
................................................................................................................ 2080
SearchFirst................................................................................................................ 2081
SearchLast................................................................................................................ 2082
SearchLinear
................................................................................................................ 2083
Save
................................................................................................................ 2084
Load
................................................................................................................ 2086
Type
................................................................................................................ 2088
CArrayObj
......................................................................................................................... 2089
FreeMode ................................................................................................................ 2094
FreeMode ................................................................................................................ 2095
Reserve ................................................................................................................ 2097
Resize
................................................................................................................ 2098
Clear
................................................................................................................ 2100
Shutdown ................................................................................................................ 2101
CreateElement
................................................................................................................ 2102
Add
................................................................................................................ 2104
AddArray ................................................................................................................ 2105
Insert
................................................................................................................ 2108
InsertArray................................................................................................................ 2110
AssignArray................................................................................................................ 2112
Update
................................................................................................................ 2114
Shift
................................................................................................................ 2115
Detach
................................................................................................................ 2116
Delete
................................................................................................................ 2118
DeleteRange
................................................................................................................ 2119
At
................................................................................................................ 2120
CompareArray
................................................................................................................ 2121
InsertSort ................................................................................................................ 2122
Search
................................................................................................................ 2123
SearchGreat
................................................................................................................ 2124
SearchLess................................................................................................................ 2125
SearchGreatOrEqual
................................................................................................................ 2126
SearchLessOrEqual
................................................................................................................ 2127
SearchFirst................................................................................................................ 2128
SearchLast................................................................................................................ 2129
Save
................................................................................................................ 2130
Load
................................................................................................................ 2131
Type
................................................................................................................ 2133
CList ......................................................................................................................... 2134
FreeMode ................................................................................................................ 2136
FreeMode ................................................................................................................ 2137
Total
................................................................................................................ 2139
IsSorted ................................................................................................................ 2140
SortMode ................................................................................................................ 2141
CreateElement
................................................................................................................ 2142
Add
................................................................................................................ 2143
Insert
................................................................................................................ 2144
DetachCurrent
................................................................................................................ 2146
DeleteCurrent
................................................................................................................ 2147
Delete
................................................................................................................ 2148
Clear
................................................................................................................ 2149
IndexOf ................................................................................................................ 2150
GetNodeAtIndex
................................................................................................................ 2151
GetFirstNode
................................................................................................................ 2152
GetPrevNode
................................................................................................................ 2153
GetCurrentNode
................................................................................................................ 2154
GetNextNode
................................................................................................................ 2155
GetLastNode
................................................................................................................ 2156
2000-2015, MetaQuotes Software Corp.

18

Contedo
Sort
................................................................................................................ 2157
MoveToIndex
................................................................................................................ 2158
Exchange ................................................................................................................ 2159
CompareList
................................................................................................................ 2160
Search
................................................................................................................ 2161
Save
................................................................................................................ 2162
Load
................................................................................................................ 2164
Type
................................................................................................................ 2166
CTreeNode
......................................................................................................................... 2167
Owner
................................................................................................................ 2172
Left
................................................................................................................ 2173
Right
................................................................................................................ 2174
Balance ................................................................................................................ 2175
BalanceL ................................................................................................................ 2176
BalanceR ................................................................................................................ 2177
CreateSample
................................................................................................................ 2178
RefreshBalance
................................................................................................................ 2179
GetNext ................................................................................................................ 2180
SaveNode ................................................................................................................ 2181
LoadNode ................................................................................................................ 2182
Type
................................................................................................................ 2183
CTree ......................................................................................................................... 2184
Root
................................................................................................................ 2189
CreateElement
................................................................................................................ 2190
Insert
................................................................................................................ 2191
Detach
................................................................................................................ 2192
Delete
................................................................................................................ 2193
Clear
................................................................................................................ 2194
Find
................................................................................................................ 2195
Save
................................................................................................................ 2196
Load
................................................................................................................ 2197
Type
................................................................................................................ 2198
............................................................................................................................2199
Classes para
Objetos Grficos
CChartObject
......................................................................................................................... 2200
ChartId ................................................................................................................ 2203
Window ................................................................................................................ 2204
Name
................................................................................................................ 2205
NumPoints ................................................................................................................ 2206
Attach
................................................................................................................ 2207
SetPoint ................................................................................................................ 2208
Delete
................................................................................................................ 2209
Detach
................................................................................................................ 2210
ShiftObject................................................................................................................ 2211
ShiftPoint ................................................................................................................ 2212
Time
................................................................................................................ 2213
Price
................................................................................................................ 2215
Color
................................................................................................................ 2217
Style
................................................................................................................ 2218
Width
................................................................................................................ 2219
Background
................................................................................................................ 2220
Selected ................................................................................................................ 2221
Selectable ................................................................................................................ 2222
Description................................................................................................................ 2223
Tooltip
................................................................................................................ 2224
Timeframes................................................................................................................ 2225
Z_Order ................................................................................................................ 2226
CreateTime................................................................................................................ 2227
LevelsCount
................................................................................................................ 2228
2000-2015, MetaQuotes Software Corp.

19

Contedo
LevelColor ................................................................................................................ 2229
LevelStyle ................................................................................................................ 2231
LevelWidth................................................................................................................ 2233
LevelValue ................................................................................................................ 2235
LevelDescription
................................................................................................................ 2237
GetInteger................................................................................................................ 2239
SetInteger................................................................................................................ 2241
GetDouble ................................................................................................................ 2243
SetDouble ................................................................................................................ 2245
GetString ................................................................................................................ 2247
SetString ................................................................................................................ 2249
Save
................................................................................................................ 2251
Load
................................................................................................................ 2252
Type
................................................................................................................ 2253
Objects.........................................................................................................................
Lines
2254
CChartObjectVLine
................................................................................................................ 2255
Create
........................................................................................................... 2256
Type
........................................................................................................... 2257
CChartObjectHLine
................................................................................................................ 2258
Create
........................................................................................................... 2259
Type
........................................................................................................... 2260
CChartObjectTrend
................................................................................................................ 2261
Create
........................................................................................................... 2263
RayLeft ........................................................................................................... 2264
RayRight ........................................................................................................... 2265
Save
........................................................................................................... 2266
Load
........................................................................................................... 2267
Type
........................................................................................................... 2268
CChartObjectTrendByAngle
................................................................................................................ 2269
Create
........................................................................................................... 2270
Angle
........................................................................................................... 2271
Type
........................................................................................................... 2272
CChartObjectCycles
................................................................................................................ 2273
Create
........................................................................................................... 2274
Type
........................................................................................................... 2275
Objects.........................................................................................................................
Channels
2276
CChartObjectChannel
................................................................................................................ 2277
Create
........................................................................................................... 2278
Type
........................................................................................................... 2279
CChartObjectRegression
................................................................................................................ 2280
Create
........................................................................................................... 2281
Type
........................................................................................................... 2282
CChartObjectStdDevChannel
................................................................................................................ 2283
Create
........................................................................................................... 2284
Deviations........................................................................................................... 2285
Save
........................................................................................................... 2286
Load
........................................................................................................... 2287
Type
........................................................................................................... 2288
CChartObjectPitchfork
................................................................................................................ 2289
Create
........................................................................................................... 2290
Type
........................................................................................................... 2291
Gann Tools
......................................................................................................................... 2292
CChartObjectGannLine
................................................................................................................ 2293
Create
........................................................................................................... 2294
PipsPerBar........................................................................................................... 2295
Save
........................................................................................................... 2296
Load
........................................................................................................... 2297
Type
........................................................................................................... 2298
2000-2015, MetaQuotes Software Corp.

20

Contedo
CChartObjectGannFan
................................................................................................................ 2299
Create
........................................................................................................... 2300
PipsPerBar........................................................................................................... 2301
Downtrend........................................................................................................... 2302
Save
........................................................................................................... 2303
Load
........................................................................................................... 2304
Type
........................................................................................................... 2305
CChartObjectGannGrid
................................................................................................................ 2306
Create
........................................................................................................... 2307
PipsPerBar........................................................................................................... 2308
Downtrend........................................................................................................... 2309
Save
........................................................................................................... 2310
Load
........................................................................................................... 2311
Type
........................................................................................................... 2312
Fibonacci
.........................................................................................................................
Tools
2313
CChartObjectFibo
................................................................................................................ 2314
Create
........................................................................................................... 2315
Type
........................................................................................................... 2316
CChartObjectFiboTimes
................................................................................................................ 2317
Create
........................................................................................................... 2318
Type
........................................................................................................... 2319
CChartObjectFiboFan
................................................................................................................ 2320
Create
........................................................................................................... 2321
Type
........................................................................................................... 2322
CChartObjectFiboArc
................................................................................................................ 2323
Create
........................................................................................................... 2324
Scale
........................................................................................................... 2325
Ellipse
........................................................................................................... 2326
Save
........................................................................................................... 2327
Load
........................................................................................................... 2328
Type
........................................................................................................... 2329
CChartObjectFiboChannel
................................................................................................................ 2330
Create
........................................................................................................... 2331
Type
........................................................................................................... 2332
CChartObjectFiboExpansion
................................................................................................................ 2333
Create
........................................................................................................... 2334
Type
........................................................................................................... 2335
Elliott Tools
......................................................................................................................... 2336
CChartObjectElliottWave3
................................................................................................................ 2337
Create
........................................................................................................... 2338
Degree
........................................................................................................... 2339
Lines
........................................................................................................... 2340
Save
........................................................................................................... 2341
Load
........................................................................................................... 2342
Type
........................................................................................................... 2343
CChartObjectElliottWave5
................................................................................................................ 2344
Create
........................................................................................................... 2345
Type
........................................................................................................... 2347
Objects.........................................................................................................................
Shapes
2348
CChartObjectRectangle
................................................................................................................ 2349
Create
........................................................................................................... 2350
Type
........................................................................................................... 2351
CChartObjectTriangle
................................................................................................................ 2352
Create
........................................................................................................... 2353
Type
........................................................................................................... 2354
CChartObjectEllipse
................................................................................................................ 2355
Create
........................................................................................................... 2356
Type
........................................................................................................... 2357
2000-2015, MetaQuotes Software Corp.

21

Contedo
Objects.........................................................................................................................
Arrows
2358
CChartObjectArrow
................................................................................................................ 2359
Create
........................................................................................................... 2360
ArrowCode........................................................................................................... 2362
Anchor
........................................................................................................... 2364
Save
........................................................................................................... 2366
Load
........................................................................................................... 2367
Type
........................................................................................................... 2368
Arrows with
................................................................................................................
fixed code
2369
Create
........................................................................................................... 2371
ArrowCode........................................................................................................... 2373
Type
........................................................................................................... 2374
Objects.........................................................................................................................
Controls
2375
CChartObjectText
................................................................................................................ 2376
Create
........................................................................................................... 2377
Angle
........................................................................................................... 2378
Font
........................................................................................................... 2379
FontSize ........................................................................................................... 2380
Anchor
........................................................................................................... 2381
Save
........................................................................................................... 2382
Load
........................................................................................................... 2383
Type
........................................................................................................... 2384
CChartObjectLabel
................................................................................................................ 2385
Create
........................................................................................................... 2386
X_Distance........................................................................................................... 2387
Y_Distance........................................................................................................... 2388
X_Size
........................................................................................................... 2389
Y_Size
........................................................................................................... 2390
Corner
........................................................................................................... 2391
Time
........................................................................................................... 2392
Price
........................................................................................................... 2393
Save
........................................................................................................... 2394
Load
........................................................................................................... 2395
Type
........................................................................................................... 2396
CChartObjectEdit
................................................................................................................ 2397
Create
........................................................................................................... 2398
TextAlign ........................................................................................................... 2399
X_Size
........................................................................................................... 2400
Y_Size
........................................................................................................... 2401
BackColor ........................................................................................................... 2402
BorderColor
........................................................................................................... 2403
ReadOnly ........................................................................................................... 2404
Angle
........................................................................................................... 2405
Save
........................................................................................................... 2406
Load
........................................................................................................... 2407
Type
........................................................................................................... 2408
CChartObjectButton
................................................................................................................ 2409
State
........................................................................................................... 2410
Save
........................................................................................................... 2411
Load
........................................................................................................... 2412
Type
........................................................................................................... 2413
CChartObjectSubChart
................................................................................................................ 2414
Create
........................................................................................................... 2416
X_Distance........................................................................................................... 2417
Y_Distance........................................................................................................... 2418
Corner
........................................................................................................... 2419
X_Size
........................................................................................................... 2420
Y_Size
........................................................................................................... 2421
2000-2015, MetaQuotes Software Corp.

22

Contedo
Symbol
........................................................................................................... 2422
Period
........................................................................................................... 2423
Scale
........................................................................................................... 2424
DateScale ........................................................................................................... 2425
PriceScale ........................................................................................................... 2426
Time
........................................................................................................... 2427
Price
........................................................................................................... 2428
Save
........................................................................................................... 2429
Load
........................................................................................................... 2430
Type
........................................................................................................... 2431
CChartObjectBitmap
................................................................................................................ 2432
Create
........................................................................................................... 2433
BmpFile ........................................................................................................... 2434
X_Offset ........................................................................................................... 2435
Y_Offset ........................................................................................................... 2436
Save
........................................................................................................... 2437
Load
........................................................................................................... 2438
Type
........................................................................................................... 2439
CChartObjectBmpLabel
................................................................................................................ 2440
Create
........................................................................................................... 2442
X_Distance........................................................................................................... 2443
Y_Distance........................................................................................................... 2444
X_Offset ........................................................................................................... 2445
Y_Offset ........................................................................................................... 2446
Corner
........................................................................................................... 2447
X_Size
........................................................................................................... 2448
Y_Size
........................................................................................................... 2449
BmpFileOn ........................................................................................................... 2450
BmpFileOff........................................................................................................... 2451
State
........................................................................................................... 2452
Time
........................................................................................................... 2453
Price
........................................................................................................... 2454
Save
........................................................................................................... 2455
Load
........................................................................................................... 2456
Type
........................................................................................................... 2457
CChartObjectRectLabel
................................................................................................................ 2458
Create
........................................................................................................... 2459
X_Size
........................................................................................................... 2460
Y_Size
........................................................................................................... 2461
BackColor ........................................................................................................... 2462
Angle
........................................................................................................... 2463
BorderType........................................................................................................... 2464
Save
........................................................................................................... 2465
Load
........................................................................................................... 2466
Type
........................................................................................................... 2467
............................................................................................................................2468
Classe para
criao de grficos personalizados
ChartObjectName
......................................................................................................................... 2471
Circle ......................................................................................................................... 2472
CircleAA......................................................................................................................... 2473
Create ......................................................................................................................... 2474
CreateBitmap
......................................................................................................................... 2475
CreateBitmapLabel
......................................................................................................................... 2477
Destroy......................................................................................................................... 2479
Erase ......................................................................................................................... 2480
Fill
......................................................................................................................... 2481
FillCircle......................................................................................................................... 2482
FillRectangle
......................................................................................................................... 2483
FillTriangle
......................................................................................................................... 2484
2000-2015, MetaQuotes Software Corp.

23

Contedo
FontAngleGet
......................................................................................................................... 2485
FontAngleSet
......................................................................................................................... 2486
FontFlagsGet
......................................................................................................................... 2487
FontFlagsSet
......................................................................................................................... 2488
FontGet......................................................................................................................... 2489
FontNameGet
......................................................................................................................... 2490
FontNameSet
......................................................................................................................... 2491
FontSet......................................................................................................................... 2492
FontSizeGet
......................................................................................................................... 2493
FontSizeSet
......................................................................................................................... 2494
Height ......................................................................................................................... 2495
Line ......................................................................................................................... 2496
LineAA ......................................................................................................................... 2497
LineHorizontal
......................................................................................................................... 2498
LineStyleSet
......................................................................................................................... 2499
LineVertical
......................................................................................................................... 2500
LoadFromFile
......................................................................................................................... 2501
PixelGet......................................................................................................................... 2502
PixelSet......................................................................................................................... 2503
PixelSetAA
......................................................................................................................... 2504
Polygon......................................................................................................................... 2505
PolygonAA
......................................................................................................................... 2506
Polyline......................................................................................................................... 2507
PolylineAA
......................................................................................................................... 2508
Rectangle
......................................................................................................................... 2509
Resize ......................................................................................................................... 2510
ResourceName
......................................................................................................................... 2511
TextHeight
......................................................................................................................... 2512
TextOut......................................................................................................................... 2513
TextSize
......................................................................................................................... 2514
TextWidth
......................................................................................................................... 2515
TransparentLevelSet
......................................................................................................................... 2516
Triangle......................................................................................................................... 2517
TriangleAA
......................................................................................................................... 2518
Update ......................................................................................................................... 2519
Width ......................................................................................................................... 2520
............................................................................................................................2521
Classe para
trabalhar com grficos
ChartID......................................................................................................................... 2526
Mode ......................................................................................................................... 2527
Foreground
......................................................................................................................... 2528
Shift ......................................................................................................................... 2529
ShiftSize
......................................................................................................................... 2530
AutoScroll
......................................................................................................................... 2531
Scale ......................................................................................................................... 2532
ScaleFix......................................................................................................................... 2533
ScaleFix_11
......................................................................................................................... 2534
FixedMax
......................................................................................................................... 2535
FixedMin
......................................................................................................................... 2536
PointsPerBar
......................................................................................................................... 2537
ScalePPB
......................................................................................................................... 2538
ShowOHLC
......................................................................................................................... 2539
ShowLineBid
......................................................................................................................... 2540
ShowLineAsk
......................................................................................................................... 2541
ShowLastLine
......................................................................................................................... 2542
ShowPeriodSep
......................................................................................................................... 2543
ShowGrid
......................................................................................................................... 2544
ShowVolumes
......................................................................................................................... 2545
ShowObjectDescr
......................................................................................................................... 2546
2000-2015, MetaQuotes Software Corp.

24

Contedo
ShowDateScale
......................................................................................................................... 2547
ShowPriceScale
......................................................................................................................... 2548
ColorBackground
......................................................................................................................... 2549
ColorForeground
......................................................................................................................... 2550
ColorGrid
......................................................................................................................... 2551
ColorBarUp
......................................................................................................................... 2552
ColorBarDown
......................................................................................................................... 2553
ColorCandleBull
......................................................................................................................... 2554
ColorCandleBear
......................................................................................................................... 2555
ColorChartLine
......................................................................................................................... 2556
ColorVolumes
......................................................................................................................... 2557
ColorLineBid
......................................................................................................................... 2558
ColorLineAsk
......................................................................................................................... 2559
ColorLineLast
......................................................................................................................... 2560
ColorStopLevels
......................................................................................................................... 2561
VisibleBars
......................................................................................................................... 2562
WindowsTotal
......................................................................................................................... 2563
WindowIsVisible
......................................................................................................................... 2564
WindowHandle
......................................................................................................................... 2565
FirstVisibleBar
......................................................................................................................... 2566
WidthInBars
......................................................................................................................... 2567
WidthInPixels
......................................................................................................................... 2568
HeightInPixels
......................................................................................................................... 2569
PriceMin
......................................................................................................................... 2570
PriceMax
......................................................................................................................... 2571
Attach ......................................................................................................................... 2572
FirstChart
......................................................................................................................... 2573
NextChart
......................................................................................................................... 2574
Open ......................................................................................................................... 2575
Detach......................................................................................................................... 2576
Close ......................................................................................................................... 2577
BringToTop
......................................................................................................................... 2578
EventObjectCreate
......................................................................................................................... 2579
EventObjectDelete
......................................................................................................................... 2580
IndicatorAdd
......................................................................................................................... 2581
IndicatorDelete
......................................................................................................................... 2582
IndicatorsTotal
......................................................................................................................... 2583
IndicatorName
......................................................................................................................... 2584
Navigate
......................................................................................................................... 2585
Symbol ......................................................................................................................... 2586
Period ......................................................................................................................... 2587
Redraw......................................................................................................................... 2588
GetInteger
......................................................................................................................... 2589
SetInteger
......................................................................................................................... 2590
GetDouble
......................................................................................................................... 2591
SetDouble
......................................................................................................................... 2592
GetString
......................................................................................................................... 2593
SetString
......................................................................................................................... 2594
SetSymbolPeriod
......................................................................................................................... 2595
ApplyTemplate
......................................................................................................................... 2596
ScreenShot
......................................................................................................................... 2597
WindowOnDropped
......................................................................................................................... 2598
PriceOnDropped
......................................................................................................................... 2599
TimeOnDropped
......................................................................................................................... 2600
XOnDropped
......................................................................................................................... 2601
YOnDropped
......................................................................................................................... 2602
Save ......................................................................................................................... 2603
Load ......................................................................................................................... 2604
2000-2015, MetaQuotes Software Corp.

25

Contedo
Type ......................................................................................................................... 2605
............................................................................................................................2606
Operaes
de Arquivo
CFile ......................................................................................................................... 2607
Handle
................................................................................................................ 2609
Filename ................................................................................................................ 2610
Flags
................................................................................................................ 2611
SetUnicode................................................................................................................ 2612
SetCommon................................................................................................................ 2613
Open
................................................................................................................ 2614
Close
................................................................................................................ 2615
Delete
................................................................................................................ 2616
IsExist
................................................................................................................ 2617
Copy
................................................................................................................ 2618
Move
................................................................................................................ 2619
Size
................................................................................................................ 2620
Tell
................................................................................................................ 2621
Seek
................................................................................................................ 2622
Flush
................................................................................................................ 2623
IsEnding ................................................................................................................ 2624
IsLineEnding
................................................................................................................ 2625
FolderCreate
................................................................................................................ 2626
FolderDelete
................................................................................................................ 2627
FolderClean................................................................................................................ 2628
FileFindFirst
................................................................................................................ 2629
FileFindNext
................................................................................................................ 2630
FileFindClose
................................................................................................................ 2631
CFileBin......................................................................................................................... 2632
Open
................................................................................................................ 2634
WriteChar ................................................................................................................ 2635
WriteShort................................................................................................................ 2636
WriteInteger
................................................................................................................ 2637
WriteLong ................................................................................................................ 2638
WriteFloat................................................................................................................ 2639
WriteDouble
................................................................................................................ 2640
WriteString................................................................................................................ 2641
WriteCharArray
................................................................................................................ 2642
WriteShortArray
................................................................................................................ 2643
WriteIntegerArray
................................................................................................................ 2644
WriteLongArray
................................................................................................................ 2645
WriteFloatArray
................................................................................................................ 2646
WriteDoubleArray
................................................................................................................ 2647
WriteObject
................................................................................................................ 2648
ReadChar ................................................................................................................ 2649
ReadShort ................................................................................................................ 2650
ReadInteger
................................................................................................................ 2651
ReadLong ................................................................................................................ 2652
ReadFloat ................................................................................................................ 2653
ReadDouble................................................................................................................ 2654
ReadString................................................................................................................ 2655
ReadCharArray
................................................................................................................ 2656
ReadShortArray
................................................................................................................ 2657
ReadIntegerArray
................................................................................................................ 2658
ReadLongArray
................................................................................................................ 2659
ReadFloatArray
................................................................................................................ 2660
ReadDoubleArray
................................................................................................................ 2661
ReadObject................................................................................................................ 2662
CFileTxt......................................................................................................................... 2663
Open
................................................................................................................ 2664
2000-2015, MetaQuotes Software Corp.

26

Contedo
WriteString................................................................................................................ 2665
ReadString................................................................................................................ 2666
............................................................................................................................2667
Classe para
operaes String
CString......................................................................................................................... 2668
Str
................................................................................................................ 2670
Len
................................................................................................................ 2671
Copy
................................................................................................................ 2672
Fill
................................................................................................................ 2673
Assign
................................................................................................................ 2674
Append
................................................................................................................ 2675
Insert
................................................................................................................ 2676
Compare ................................................................................................................ 2677
CompareNoCase
................................................................................................................ 2678
Left
................................................................................................................ 2679
Right
................................................................................................................ 2680
Mid
................................................................................................................ 2681
Trim
................................................................................................................ 2682
TrimLeft ................................................................................................................ 2683
TrimRight ................................................................................................................ 2684
Clear
................................................................................................................ 2685
ToUpper ................................................................................................................ 2686
ToLower ................................................................................................................ 2687
Reverse ................................................................................................................ 2688
Find
................................................................................................................ 2689
FindRev ................................................................................................................ 2690
Remove ................................................................................................................ 2691
Replace ................................................................................................................ 2692
............................................................................................................................2693
Classes para
trabalhar com indicadores
Base classes
......................................................................................................................... 2694
CSpreadBuffer
................................................................................................................ 2695
Size
........................................................................................................... 2696
SetSymbolPeriod
........................................................................................................... 2697
At
........................................................................................................... 2698
Refresh ........................................................................................................... 2699
RefreshCurrent
........................................................................................................... 2700
CTimeBuffer
................................................................................................................ 2701
Size
........................................................................................................... 2702
SetSymbolPeriod
........................................................................................................... 2703
At
........................................................................................................... 2704
Refresh ........................................................................................................... 2705
RefreshCurrent
........................................................................................................... 2706
CTickVolumeBuffer
................................................................................................................ 2707
Size
........................................................................................................... 2708
SetSymbolPeriod
........................................................................................................... 2709
At
........................................................................................................... 2710
Refresh ........................................................................................................... 2711
RefreshCurrent
........................................................................................................... 2712
CRealVolumeBuffer
................................................................................................................ 2713
Size
........................................................................................................... 2714
SetSymbolPeriod
........................................................................................................... 2715
At
........................................................................................................... 2716
Refresh ........................................................................................................... 2717
RefreshCurrent
........................................................................................................... 2718
CDoubleBuffer
................................................................................................................ 2719
Size
........................................................................................................... 2720
SetSymbolPeriod
........................................................................................................... 2721
At
........................................................................................................... 2722
Refresh ........................................................................................................... 2723
2000-2015, MetaQuotes Software Corp.

27

Contedo
RefreshCurrent
........................................................................................................... 2724
COpenBuffer
................................................................................................................ 2725
Refresh ........................................................................................................... 2726
RefreshCurrent
........................................................................................................... 2727
CHighBuffer
................................................................................................................ 2728
Refresh ........................................................................................................... 2729
RefreshCurrent
........................................................................................................... 2730
CLowBuffer................................................................................................................ 2731
Refresh ........................................................................................................... 2732
RefreshCurrent
........................................................................................................... 2733
CCloseBuffer
................................................................................................................ 2734
Refresh ........................................................................................................... 2735
RefreshCurrent
........................................................................................................... 2736
CIndicatorBuffer
................................................................................................................ 2737
Offset
........................................................................................................... 2738
Name
........................................................................................................... 2739
At
........................................................................................................... 2740
Refresh ........................................................................................................... 2741
RefreshCurrent
........................................................................................................... 2742
CSeries
................................................................................................................ 2743
Name
........................................................................................................... 2744
BuffersTotal
........................................................................................................... 2745
Timeframe ........................................................................................................... 2746
Symbol
........................................................................................................... 2747
Period
........................................................................................................... 2748
RefreshCurrent
........................................................................................................... 2749
BufferSize ........................................................................................................... 2750
BufferResize
........................................................................................................... 2751
Refresh ........................................................................................................... 2752
PeriodDescription
........................................................................................................... 2753
CPriceSeries
................................................................................................................ 2754
BufferResize
........................................................................................................... 2755
GetData ........................................................................................................... 2756
Refresh ........................................................................................................... 2757
MinIndex ........................................................................................................... 2758
MinValue ........................................................................................................... 2759
MaxIndex ........................................................................................................... 2760
MaxValue ........................................................................................................... 2761
CIndicator................................................................................................................ 2762
Handle
........................................................................................................... 2765
Status
........................................................................................................... 2766
FullRelease........................................................................................................... 2767
Create
........................................................................................................... 2768
BufferResize
........................................................................................................... 2769
BarsCalculated
........................................................................................................... 2770
GetData ........................................................................................................... 2771
Refresh ........................................................................................................... 2774
Minimum ........................................................................................................... 2775
MinValue ........................................................................................................... 2776
Maximum ........................................................................................................... 2777
MaxValue ........................................................................................................... 2778
MethodDescription
........................................................................................................... 2779
PriceDescription
........................................................................................................... 2780
VolumeDescription
........................................................................................................... 2781
AddToChart
........................................................................................................... 2782
DeleteFromChart
........................................................................................................... 2783
CIndicators................................................................................................................ 2784
Create
........................................................................................................... 2785
2000-2015, MetaQuotes Software Corp.

28

Contedo
Refresh ........................................................................................................... 2786
Timeseries
.........................................................................................................................
classes
2787
CiSpread ................................................................................................................ 2788
Create
........................................................................................................... 2789
BufferResize
........................................................................................................... 2790
GetData ........................................................................................................... 2791
Refresh ........................................................................................................... 2793
CiTime
................................................................................................................ 2794
Create
........................................................................................................... 2795
BufferResize
........................................................................................................... 2796
GetData ........................................................................................................... 2797
Refresh ........................................................................................................... 2799
CiTickVolume
................................................................................................................ 2800
Create
........................................................................................................... 2801
BufferResize
........................................................................................................... 2802
GetData ........................................................................................................... 2803
Refresh ........................................................................................................... 2805
CiRealVolume
................................................................................................................ 2806
Create
........................................................................................................... 2807
BufferResize
........................................................................................................... 2808
GetData ........................................................................................................... 2809
Refresh ........................................................................................................... 2811
CiOpen
................................................................................................................ 2812
Create
........................................................................................................... 2813
GetData ........................................................................................................... 2814
CiHigh
................................................................................................................ 2816
Create
........................................................................................................... 2817
GetData ........................................................................................................... 2818
CiLow
................................................................................................................ 2820
Create
........................................................................................................... 2821
GetData ........................................................................................................... 2822
CiClose
................................................................................................................ 2824
Create
........................................................................................................... 2825
GetData ........................................................................................................... 2826
Trend Indicators
......................................................................................................................... 2828
CiADX
................................................................................................................ 2829
MaPeriod ........................................................................................................... 2830
Create
........................................................................................................... 2831
Main
........................................................................................................... 2832
Plus
........................................................................................................... 2833
Minus
........................................................................................................... 2834
Type
........................................................................................................... 2835
CiADXWilder
................................................................................................................ 2836
MaPeriod ........................................................................................................... 2837
Create
........................................................................................................... 2838
Main
........................................................................................................... 2839
Plus
........................................................................................................... 2840
Minus
........................................................................................................... 2841
Type
........................................................................................................... 2842
CiBands ................................................................................................................ 2843
MaPeriod ........................................................................................................... 2844
MaShift ........................................................................................................... 2845
Deviation ........................................................................................................... 2846
Applied
........................................................................................................... 2847
Create
........................................................................................................... 2848
Base
........................................................................................................... 2849
Upper
........................................................................................................... 2850
Lower
........................................................................................................... 2851
2000-2015, MetaQuotes Software Corp.

29

Contedo
Type
........................................................................................................... 2852
CiEnvelopes................................................................................................................ 2853
MaPeriod ........................................................................................................... 2854
MaShift ........................................................................................................... 2855
MaMethod ........................................................................................................... 2856
Deviation ........................................................................................................... 2857
Applied
........................................................................................................... 2858
Create
........................................................................................................... 2859
Upper
........................................................................................................... 2860
Lower
........................................................................................................... 2861
Type
........................................................................................................... 2862
CiIchimoku................................................................................................................ 2863
TenkanSenPeriod
........................................................................................................... 2864
KijunSenPeriod
........................................................................................................... 2865
SenkouSpanBPeriod
........................................................................................................... 2866
Create
........................................................................................................... 2867
TenkanSen........................................................................................................... 2868
KijunSen ........................................................................................................... 2869
SenkouSpanA
........................................................................................................... 2870
SenkouSpanB
........................................................................................................... 2871
ChinkouSpan
........................................................................................................... 2872
Type
........................................................................................................... 2873
CiMA
................................................................................................................ 2874
MaPeriod ........................................................................................................... 2875
MaShift ........................................................................................................... 2876
MaMethod ........................................................................................................... 2877
Applied
........................................................................................................... 2878
Create
........................................................................................................... 2879
Main
........................................................................................................... 2880
Type
........................................................................................................... 2881
CiSAR
................................................................................................................ 2882
SarStep ........................................................................................................... 2883
Maximum ........................................................................................................... 2884
Create
........................................................................................................... 2885
Main
........................................................................................................... 2886
Type
........................................................................................................... 2887
CiStdDev ................................................................................................................ 2888
MaPeriod ........................................................................................................... 2889
MaShift ........................................................................................................... 2890
MaMethod ........................................................................................................... 2891
Applied
........................................................................................................... 2892
Create
........................................................................................................... 2893
Main
........................................................................................................... 2894
Type
........................................................................................................... 2895
CiDEMA ................................................................................................................ 2896
MaPeriod ........................................................................................................... 2897
IndShift ........................................................................................................... 2898
Applied
........................................................................................................... 2899
Create
........................................................................................................... 2900
Main
........................................................................................................... 2901
Type
........................................................................................................... 2902
CiTEMA
................................................................................................................ 2903
MaPeriod ........................................................................................................... 2904
IndShift ........................................................................................................... 2905
Applied
........................................................................................................... 2906
Create
........................................................................................................... 2907
Main
........................................................................................................... 2908
Type
........................................................................................................... 2909
2000-2015, MetaQuotes Software Corp.

30

Contedo
CiFrAMA ................................................................................................................ 2910
MaPeriod ........................................................................................................... 2911
IndShift ........................................................................................................... 2912
Applied
........................................................................................................... 2913
Create
........................................................................................................... 2914
Main
........................................................................................................... 2915
Type
........................................................................................................... 2916
CiAMA
................................................................................................................ 2917
MaPeriod ........................................................................................................... 2918
FastEmaPeriod
........................................................................................................... 2919
SlowEmaPeriod
........................................................................................................... 2920
IndShift ........................................................................................................... 2921
Applied
........................................................................................................... 2922
Create
........................................................................................................... 2923
Main
........................................................................................................... 2924
Type
........................................................................................................... 2925
CiVIDyA ................................................................................................................ 2926
CmoPeriod........................................................................................................... 2927
EmaPeriod ........................................................................................................... 2928
IndShift ........................................................................................................... 2929
Applied
........................................................................................................... 2930
Create
........................................................................................................... 2931
Main
........................................................................................................... 2932
Type
........................................................................................................... 2933
Oscillators
......................................................................................................................... 2934
CiATR
................................................................................................................ 2935
MaPeriod ........................................................................................................... 2936
Create
........................................................................................................... 2937
Main
........................................................................................................... 2938
Type
........................................................................................................... 2939
CiBearsPower
................................................................................................................ 2940
MaPeriod ........................................................................................................... 2941
Create
........................................................................................................... 2942
Main
........................................................................................................... 2943
Type
........................................................................................................... 2944
CiBullsPower
................................................................................................................ 2945
MaPeriod ........................................................................................................... 2946
Create
........................................................................................................... 2947
Main
........................................................................................................... 2948
Type
........................................................................................................... 2949
CiCCI
................................................................................................................ 2950
MaPeriod ........................................................................................................... 2951
Applied
........................................................................................................... 2952
Create
........................................................................................................... 2953
Main
........................................................................................................... 2954
Type
........................................................................................................... 2955
CiChaikin ................................................................................................................ 2956
FastMaPeriod
........................................................................................................... 2957
SlowMaPeriod
........................................................................................................... 2958
MaMethod ........................................................................................................... 2959
Applied
........................................................................................................... 2960
Create
........................................................................................................... 2961
Main
........................................................................................................... 2962
Type
........................................................................................................... 2963
CiDeMarker................................................................................................................ 2964
MaPeriod ........................................................................................................... 2965
Create
........................................................................................................... 2966
Main
........................................................................................................... 2967
2000-2015, MetaQuotes Software Corp.

31

Contedo
Type
........................................................................................................... 2968
CiForce ................................................................................................................ 2969
MaPeriod ........................................................................................................... 2970
MaMethod ........................................................................................................... 2971
Applied
........................................................................................................... 2972
Create
........................................................................................................... 2973
Main
........................................................................................................... 2974
Type
........................................................................................................... 2975
CiMACD ................................................................................................................ 2976
FastEmaPeriod
........................................................................................................... 2977
SlowEmaPeriod
........................................................................................................... 2978
SignalPeriod
........................................................................................................... 2979
Applied
........................................................................................................... 2980
Create
........................................................................................................... 2981
Main
........................................................................................................... 2982
Signal
........................................................................................................... 2983
Type
........................................................................................................... 2984
CiMomentum
................................................................................................................ 2985
MaPeriod ........................................................................................................... 2986
Applied
........................................................................................................... 2987
Create
........................................................................................................... 2988
Main
........................................................................................................... 2989
Type
........................................................................................................... 2990
CiOsMA ................................................................................................................ 2991
FastEmaPeriod
........................................................................................................... 2992
SlowEmaPeriod
........................................................................................................... 2993
SignalPeriod
........................................................................................................... 2994
Applied
........................................................................................................... 2995
Create
........................................................................................................... 2996
Main
........................................................................................................... 2997
Type
........................................................................................................... 2998
CiRSI
................................................................................................................ 2999
MaPeriod ........................................................................................................... 3000
Applied
........................................................................................................... 3001
Create
........................................................................................................... 3002
Main
........................................................................................................... 3003
Type
........................................................................................................... 3004
CiRVI
................................................................................................................ 3005
MaPeriod ........................................................................................................... 3006
Create
........................................................................................................... 3007
Main
........................................................................................................... 3008
Signal
........................................................................................................... 3009
Type
........................................................................................................... 3010
CiStochastic
................................................................................................................ 3011
Kperiod ........................................................................................................... 3012
Dperiod ........................................................................................................... 3013
Slowing
........................................................................................................... 3014
MaMethod ........................................................................................................... 3015
PriceField ........................................................................................................... 3016
Create
........................................................................................................... 3017
Main
........................................................................................................... 3018
Signal
........................................................................................................... 3019
Type
........................................................................................................... 3020
CiTriX
................................................................................................................ 3021
MaPeriod ........................................................................................................... 3022
Applied
........................................................................................................... 3023
Create
........................................................................................................... 3024
Main
........................................................................................................... 3025
2000-2015, MetaQuotes Software Corp.

32

Contedo
Type
........................................................................................................... 3026
CiWPR
................................................................................................................ 3027
CalcPeriod........................................................................................................... 3028
Create
........................................................................................................... 3029
Main
........................................................................................................... 3030
Type
........................................................................................................... 3031
Volume .........................................................................................................................
Indicators
3032
CiAD
................................................................................................................ 3033
Applied
........................................................................................................... 3034
Create
........................................................................................................... 3035
Main
........................................................................................................... 3036
Type
........................................................................................................... 3037
CiMFI
................................................................................................................ 3038
MaPeriod ........................................................................................................... 3039
Applied
........................................................................................................... 3040
Create
........................................................................................................... 3041
Main
........................................................................................................... 3042
Type
........................................................................................................... 3043
CiOBV
................................................................................................................ 3044
Applied
........................................................................................................... 3045
Create
........................................................................................................... 3046
Main
........................................................................................................... 3047
Type
........................................................................................................... 3048
CiVolumes ................................................................................................................ 3049
Applied
........................................................................................................... 3050
Create
........................................................................................................... 3051
Main
........................................................................................................... 3052
Type
........................................................................................................... 3053
Bill Williams
.........................................................................................................................
Indicators
3054
CiAC
................................................................................................................ 3055
Create
........................................................................................................... 3056
Main
........................................................................................................... 3057
Type
........................................................................................................... 3058
CiAlligator ................................................................................................................ 3059
JawPeriod ........................................................................................................... 3061
JawShift ........................................................................................................... 3062
TeethPeriod
........................................................................................................... 3063
TeethShift ........................................................................................................... 3064
LipsPeriod ........................................................................................................... 3065
LipsShift ........................................................................................................... 3066
MaMethod ........................................................................................................... 3067
Applied
........................................................................................................... 3068
Create
........................................................................................................... 3069
Jaw
........................................................................................................... 3070
Teeth
........................................................................................................... 3071
Lips
........................................................................................................... 3072
Type
........................................................................................................... 3073
CiAO
................................................................................................................ 3074
Create
........................................................................................................... 3075
Main
........................................................................................................... 3076
Type
........................................................................................................... 3077
CiFractals ................................................................................................................ 3078
Create
........................................................................................................... 3079
Upper
........................................................................................................... 3080
Lower
........................................................................................................... 3081
Type
........................................................................................................... 3082
CiGator ................................................................................................................ 3083
JawPeriod ........................................................................................................... 3084
2000-2015, MetaQuotes Software Corp.

33

Contedo
JawShift ........................................................................................................... 3085
TeethPeriod
........................................................................................................... 3086
TeethShift ........................................................................................................... 3087
LipsPeriod ........................................................................................................... 3088
LipsShift ........................................................................................................... 3089
MaMethod ........................................................................................................... 3090
Applied
........................................................................................................... 3091
Create
........................................................................................................... 3092
Upper
........................................................................................................... 3093
Lower
........................................................................................................... 3094
Type
........................................................................................................... 3095
CiBWMFI ................................................................................................................ 3096
Applied
........................................................................................................... 3097
Create
........................................................................................................... 3098
Main
........................................................................................................... 3099
Type
........................................................................................................... 3100
Custom.........................................................................................................................
indicators
3101
NumBuffers................................................................................................................ 3102
NumParams................................................................................................................ 3103
ParamType................................................................................................................ 3104
ParamLong................................................................................................................ 3105
ParamDouble
................................................................................................................ 3106
ParamString
................................................................................................................ 3107
Type
................................................................................................................ 3108
Classes de............................................................................................................................3109
negociao
CAccountInfo
......................................................................................................................... 3110
Login
................................................................................................................ 3112
TradeMode................................................................................................................ 3113
TradeModeDescription
................................................................................................................ 3114
Leverage ................................................................................................................ 3115
MarginMode
................................................................................................................ 3116
MarginModeDescription
................................................................................................................ 3117
TradeAllowed
................................................................................................................ 3118
TradeExpert
................................................................................................................ 3119
LimitOrders
................................................................................................................ 3120
Balance ................................................................................................................ 3121
Credit
................................................................................................................ 3122
Profit
................................................................................................................ 3123
Equity
................................................................................................................ 3124
Margin
................................................................................................................ 3125
FreeMargin................................................................................................................ 3126
MarginLevel
................................................................................................................ 3127
MarginCall ................................................................................................................ 3128
MarginStopOut
................................................................................................................ 3129
Name
................................................................................................................ 3130
Server
................................................................................................................ 3131
Currency ................................................................................................................ 3132
Company ................................................................................................................ 3133
InfoInteger................................................................................................................ 3134
InfoDouble ................................................................................................................ 3135
InfoString ................................................................................................................ 3136
OrderProfitCheck
................................................................................................................ 3137
MarginCheck
................................................................................................................ 3138
FreeMarginCheck
................................................................................................................ 3139
MaxLotCheck
................................................................................................................ 3140
CSymbolInfo
......................................................................................................................... 3141
Refresh ................................................................................................................ 3146
RefreshRates
................................................................................................................ 3147
2000-2015, MetaQuotes Software Corp.

34

Contedo
Name
................................................................................................................ 3148
Select
................................................................................................................ 3149
IsSynchronized
................................................................................................................ 3150
Volume
................................................................................................................ 3151
VolumeHigh................................................................................................................ 3152
VolumeLow................................................................................................................ 3153
Time
................................................................................................................ 3154
Spread
................................................................................................................ 3155
SpreadFloat................................................................................................................ 3156
TicksBookDepth
................................................................................................................ 3157
StopsLevel................................................................................................................ 3158
FreezeLevel
................................................................................................................ 3159
Bid
................................................................................................................ 3160
BidHigh ................................................................................................................ 3161
BidLow
................................................................................................................ 3162
Ask
................................................................................................................ 3163
AskHigh ................................................................................................................ 3164
AskLow
................................................................................................................ 3165
Last
................................................................................................................ 3166
LastHigh ................................................................................................................ 3167
LastLow ................................................................................................................ 3168
TradeCalcMode
................................................................................................................ 3169
TradeCalcModeDescription
................................................................................................................ 3170
TradeMode................................................................................................................ 3171
TradeModeDescription
................................................................................................................ 3172
TradeExecution
................................................................................................................ 3173
TradeExecutionDescription
................................................................................................................ 3174
SwapMode ................................................................................................................ 3175
SwapModeDescription
................................................................................................................ 3176
SwapRollover3days
................................................................................................................ 3177
SwapRollover3daysDescription
................................................................................................................ 3178
MarginInitial
................................................................................................................ 3179
MarginMaintenance
................................................................................................................ 3180
MarginLong................................................................................................................ 3181
MarginShort
................................................................................................................ 3182
MarginLimit................................................................................................................ 3183
MarginStop................................................................................................................ 3184
MarginStopLimit
................................................................................................................ 3185
TradeTimeFlags
................................................................................................................ 3186
TradeFillFlags
................................................................................................................ 3187
Digits
................................................................................................................ 3188
Point
................................................................................................................ 3189
TickValue ................................................................................................................ 3190
TickValueProfit
................................................................................................................ 3191
TicksBookDepth
................................................................................................................ 3192
TickSize ................................................................................................................ 3193
ContractSize
................................................................................................................ 3194
LotsMin ................................................................................................................ 3195
LotsMax ................................................................................................................ 3196
LotsStep ................................................................................................................ 3197
LotsLimit ................................................................................................................ 3198
SwapLong ................................................................................................................ 3199
SwapShort ................................................................................................................ 3200
CurrencyBase
................................................................................................................ 3201
CurrencyProfit
................................................................................................................ 3202
CurrencyMargin
................................................................................................................ 3203
Bank
................................................................................................................ 3204
Description................................................................................................................ 3205
2000-2015, MetaQuotes Software Corp.

35

Contedo
Path
................................................................................................................ 3206
SessionDeals
................................................................................................................ 3207
SessionBuyOrders
................................................................................................................ 3208
SessionSellOrders
................................................................................................................ 3209
SessionTurnover
................................................................................................................ 3210
SessionInterest
................................................................................................................ 3211
SessionBuyOrdersVolume
................................................................................................................ 3212
SessionSellOrdersVolume
................................................................................................................ 3213
SessionOpen
................................................................................................................ 3214
SessionClose
................................................................................................................ 3215
SessionAW ................................................................................................................ 3216
SessionPriceSettlement
................................................................................................................ 3217
SessionPriceLimitMin
................................................................................................................ 3218
SessionPriceLimitMax
................................................................................................................ 3219
InfoInteger................................................................................................................ 3220
InfoDouble ................................................................................................................ 3221
InfoString ................................................................................................................ 3222
NormalizePrice
................................................................................................................ 3223
COrderInfo
......................................................................................................................... 3224
Ticket
................................................................................................................ 3226
TimeSetup ................................................................................................................ 3227
TimeSetupMsc
................................................................................................................ 3228
OrderType................................................................................................................ 3229
TypeDescription
................................................................................................................ 3230
State
................................................................................................................ 3231
StateDescription
................................................................................................................ 3232
TimeExpiration
................................................................................................................ 3233
TimeDone ................................................................................................................ 3234
TimeDoneMsc
................................................................................................................ 3235
TypeFilling ................................................................................................................ 3236
TypeFillingDescription
................................................................................................................ 3237
TypeTime ................................................................................................................ 3238
TypeTimeDescription
................................................................................................................ 3239
Magic
................................................................................................................ 3240
PositionId ................................................................................................................ 3241
VolumeInitial
................................................................................................................ 3242
VolumeCurrent
................................................................................................................ 3243
PriceOpen ................................................................................................................ 3244
StopLoss ................................................................................................................ 3245
TakeProfit ................................................................................................................ 3246
PriceCurrent
................................................................................................................ 3247
PriceStopLimit
................................................................................................................ 3248
Symbol
................................................................................................................ 3249
Comment ................................................................................................................ 3250
InfoInteger................................................................................................................ 3251
InfoDouble ................................................................................................................ 3252
InfoString ................................................................................................................ 3253
StoreState................................................................................................................ 3254
CheckState................................................................................................................ 3255
Select
................................................................................................................ 3256
SelectByIndex
................................................................................................................ 3257
CHistoryOrderInfo
......................................................................................................................... 3258
TimeSetup ................................................................................................................ 3260
TimeSetupMsc
................................................................................................................ 3261
OrderType................................................................................................................ 3262
TypeDescription
................................................................................................................ 3263
State
................................................................................................................ 3264
StateDescription
................................................................................................................ 3265
2000-2015, MetaQuotes Software Corp.

36

Contedo
TimeExpiration
................................................................................................................ 3266
TimeDone ................................................................................................................ 3267
TimeDoneMsc
................................................................................................................ 3268
TypeFilling ................................................................................................................ 3269
TypeFillingDescription
................................................................................................................ 3270
TypeTime ................................................................................................................ 3271
TypeTimeDescription
................................................................................................................ 3272
Magic
................................................................................................................ 3273
PositionId ................................................................................................................ 3274
VolumeInitial
................................................................................................................ 3275
VolumeCurrent
................................................................................................................ 3276
PriceOpen ................................................................................................................ 3277
StopLoss ................................................................................................................ 3278
TakeProfit ................................................................................................................ 3279
PriceCurrent
................................................................................................................ 3280
PriceStopLimit
................................................................................................................ 3281
Symbol
................................................................................................................ 3282
Comment ................................................................................................................ 3283
InfoInteger................................................................................................................ 3284
InfoDouble ................................................................................................................ 3285
InfoString ................................................................................................................ 3286
Ticket
................................................................................................................ 3287
SelectByIndex
................................................................................................................ 3288
CPositionInfo
......................................................................................................................... 3289
Time
................................................................................................................ 3291
TimeMsc ................................................................................................................ 3292
TimeUpdate................................................................................................................ 3293
TimeUpdateMsc
................................................................................................................ 3294
PositionType
................................................................................................................ 3295
TypeDescription
................................................................................................................ 3296
Magic
................................................................................................................ 3297
Identifier ................................................................................................................ 3298
Volume
................................................................................................................ 3299
PriceOpen ................................................................................................................ 3300
StopLoss ................................................................................................................ 3301
TakeProfit ................................................................................................................ 3302
PriceCurrent
................................................................................................................ 3303
Commission................................................................................................................ 3304
Swap
................................................................................................................ 3305
Profit
................................................................................................................ 3306
Symbol
................................................................................................................ 3307
Comment ................................................................................................................ 3308
InfoInteger................................................................................................................ 3309
InfoDouble ................................................................................................................ 3310
InfoString ................................................................................................................ 3311
Select
................................................................................................................ 3312
SelectByIndex
................................................................................................................ 3313
StoreState................................................................................................................ 3314
CheckState................................................................................................................ 3315
CDealInfo
......................................................................................................................... 3316
Order
................................................................................................................ 3318
Time
................................................................................................................ 3319
TimeMsc ................................................................................................................ 3320
DealType ................................................................................................................ 3321
TypeDescription
................................................................................................................ 3322
Entry
................................................................................................................ 3323
EntryDescription
................................................................................................................ 3324
Magic
................................................................................................................ 3325
2000-2015, MetaQuotes Software Corp.

37

Contedo
PositionId ................................................................................................................ 3326
Volume
................................................................................................................ 3327
Price
................................................................................................................ 3328
Commision ................................................................................................................ 3329
Swap
................................................................................................................ 3330
Profit
................................................................................................................ 3331
Symbol
................................................................................................................ 3332
Comment ................................................................................................................ 3333
InfoInteger................................................................................................................ 3334
InfoDouble ................................................................................................................ 3335
InfoString ................................................................................................................ 3336
Ticket
................................................................................................................ 3337
SelectByIndex
................................................................................................................ 3338
CTrade ......................................................................................................................... 3339
LogLevel ................................................................................................................ 3343
SetExpertMagicNumber
................................................................................................................ 3344
SetDeviationInPoints
................................................................................................................ 3345
SetTypeFilling
................................................................................................................ 3346
SetAsyncMode
................................................................................................................ 3347
OrderOpen................................................................................................................ 3348
OrderModify
................................................................................................................ 3350
OrderDelete
................................................................................................................ 3351
PositionOpen
................................................................................................................ 3352
PositionModify
................................................................................................................ 3353
PositionClose
................................................................................................................ 3354
Buy
................................................................................................................ 3355
Sell
................................................................................................................ 3356
BuyLimit ................................................................................................................ 3357
BuyStop ................................................................................................................ 3358
SellLimit ................................................................................................................ 3359
SellStop ................................................................................................................ 3360
Request ................................................................................................................ 3361
RequestAction
................................................................................................................ 3362
RequestActionDescription
................................................................................................................ 3363
RequestMagic
................................................................................................................ 3364
RequestOrder
................................................................................................................ 3365
RequestSymbol
................................................................................................................ 3366
RequestVolume
................................................................................................................ 3367
RequestPrice
................................................................................................................ 3368
RequestStopLimit
................................................................................................................ 3369
RequestSL ................................................................................................................ 3370
RequestTP ................................................................................................................ 3371
RequestDeviation
................................................................................................................ 3372
RequestType
................................................................................................................ 3373
RequestTypeDescription
................................................................................................................ 3374
RequestTypeFilling
................................................................................................................ 3375
RequestTypeFillingDescription
................................................................................................................ 3376
RequestTypeTime
................................................................................................................ 3377
RequestTypeTimeDescription
................................................................................................................ 3378
RequestExpiration
................................................................................................................ 3379
RequestComment
................................................................................................................ 3380
Result
................................................................................................................ 3381
ResultRetcode
................................................................................................................ 3382
ResultRetcodeDescription
................................................................................................................ 3383
ResultDeal ................................................................................................................ 3384
ResultOrder
................................................................................................................ 3385
ResultVolume
................................................................................................................ 3386
ResultPrice................................................................................................................ 3387
2000-2015, MetaQuotes Software Corp.

38

Contedo
ResultBid ................................................................................................................ 3388
ResultAsk ................................................................................................................ 3389
ResultComment
................................................................................................................ 3390
CheckResult
................................................................................................................ 3391
CheckResultRetcode
................................................................................................................ 3392
CheckResultRetcodeDescription
................................................................................................................ 3393
CheckResultBalance
................................................................................................................ 3394
CheckResultEquity
................................................................................................................ 3395
CheckResultProfit
................................................................................................................ 3396
CheckResultMargin
................................................................................................................ 3397
CheckResultMarginFree
................................................................................................................ 3398
CheckResultMarginLevel
................................................................................................................ 3399
CheckResultComment
................................................................................................................ 3400
PrintRequest
................................................................................................................ 3401
PrintResult................................................................................................................ 3402
FormatRequest
................................................................................................................ 3403
FormatRequestResult
................................................................................................................ 3404
CTerminalInfo
......................................................................................................................... 3405
Build
................................................................................................................ 3407
IsConnected
................................................................................................................ 3408
IsDLLsAllowed
................................................................................................................ 3409
IsTradeAllowed
................................................................................................................ 3410
IsEmailEnabled
................................................................................................................ 3411
IsFtpEnabled
................................................................................................................ 3412
MaxBars ................................................................................................................ 3413
CodePage ................................................................................................................ 3414
CPUCores ................................................................................................................ 3415
MemoryPhysical
................................................................................................................ 3416
MemoryTotal
................................................................................................................ 3417
MemoryAvailable
................................................................................................................ 3418
MemoryUsed
................................................................................................................ 3419
IsX64
................................................................................................................ 3420
OpenCLSupport
................................................................................................................ 3421
DiskSpace ................................................................................................................ 3422
Language ................................................................................................................ 3423
Name
................................................................................................................ 3424
Company ................................................................................................................ 3425
Path
................................................................................................................ 3426
DataPath ................................................................................................................ 3427
CommonDataPath
................................................................................................................ 3428
InfoInteger................................................................................................................ 3429
InfoString ................................................................................................................ 3430
Classes de............................................................................................................................3431
Estratgias de Negociao
Base classes
.........................................................................................................................
for Expert Advisors
3434
CExpertBase
................................................................................................................ 3435
InitPhase ........................................................................................................... 3437
TrendType........................................................................................................... 3438
UsedSeries........................................................................................................... 3439
EveryTick ........................................................................................................... 3440
Open
........................................................................................................... 3441
High
........................................................................................................... 3442
Low
........................................................................................................... 3443
Close
........................................................................................................... 3444
Spread
........................................................................................................... 3445
Time
........................................................................................................... 3446
TickVolume........................................................................................................... 3447
RealVolume........................................................................................................... 3448
Init
........................................................................................................... 3449
2000-2015, MetaQuotes Software Corp.

39

Contedo
Symbol
........................................................................................................... 3450
Period
........................................................................................................... 3451
Magic
........................................................................................................... 3452
ValidationSettings
........................................................................................................... 3453
SetPriceSeries
........................................................................................................... 3454
SetOtherSeries
........................................................................................................... 3455
InitIndicators
........................................................................................................... 3456
InitOpen ........................................................................................................... 3457
InitHigh ........................................................................................................... 3458
InitLow ........................................................................................................... 3459
InitClose ........................................................................................................... 3460
InitSpread ........................................................................................................... 3461
InitTime ........................................................................................................... 3462
InitTickVolume
........................................................................................................... 3463
InitRealVolume
........................................................................................................... 3464
PriceLevelUnit
........................................................................................................... 3465
StartIndex........................................................................................................... 3466
CompareMagic
........................................................................................................... 3467
CExpert ................................................................................................................ 3468
Init
........................................................................................................... 3473
Magic
........................................................................................................... 3474
InitSignal ........................................................................................................... 3475
InitTrailing........................................................................................................... 3476
InitMoney ........................................................................................................... 3477
InitTrade ........................................................................................................... 3478
Deinit
........................................................................................................... 3479
OnTickProcess
........................................................................................................... 3480
OnTradeProcess
........................................................................................................... 3481
OnTimerProcess
........................................................................................................... 3482
OnChartEventProcess
........................................................................................................... 3483
OnBookEventProcess
........................................................................................................... 3484
MaxOrders........................................................................................................... 3485
Signal
........................................................................................................... 3486
ValidationSettings
........................................................................................................... 3487
InitIndicators
........................................................................................................... 3488
OnTick
........................................................................................................... 3489
OnTrade ........................................................................................................... 3490
OnTimer ........................................................................................................... 3491
OnChartEvent
........................................................................................................... 3492
OnBookEvent
........................................................................................................... 3493
InitParameters
........................................................................................................... 3494
DeinitTrade
........................................................................................................... 3495
DeinitSignal
........................................................................................................... 3496
DeinitTrailing
........................................................................................................... 3497
DeinitMoney
........................................................................................................... 3498
DeinitIndicators
........................................................................................................... 3499
Refresh ........................................................................................................... 3500
Processing........................................................................................................... 3501
CheckOpen........................................................................................................... 3503
CheckOpenLong
........................................................................................................... 3504
CheckOpenShort
........................................................................................................... 3505
OpenLong ........................................................................................................... 3506
OpenShort........................................................................................................... 3507
CheckReverse
........................................................................................................... 3508
CheckReverseLong
........................................................................................................... 3509
CheckReverseShort
........................................................................................................... 3510
ReverseLong
........................................................................................................... 3511
ReverseShort
........................................................................................................... 3512
2000-2015, MetaQuotes Software Corp.

40

Contedo
CheckClose........................................................................................................... 3513
CheckCloseLong
........................................................................................................... 3514
CheckCloseShort
........................................................................................................... 3515
CloseAll ........................................................................................................... 3516
Close
........................................................................................................... 3517
CloseLong ........................................................................................................... 3518
CloseShort........................................................................................................... 3519
CheckTrailingStop
........................................................................................................... 3520
CheckTrailingStopLong
........................................................................................................... 3521
CheckTrailingStopShort
........................................................................................................... 3522
TrailingStopLong
........................................................................................................... 3523
TrailingStopShort
........................................................................................................... 3524
CheckTrailingOrderLong
........................................................................................................... 3525
CheckTrailingOrderShort
........................................................................................................... 3526
TrailingOrderLong
........................................................................................................... 3527
TrailingOrderShort
........................................................................................................... 3528
CheckDeleteOrderLong
........................................................................................................... 3529
CheckDeleteOrderShort
........................................................................................................... 3530
DeleteOrders
........................................................................................................... 3531
DeleteOrder
........................................................................................................... 3532
DeleteOrderLong
........................................................................................................... 3533
DeleteOrderShort
........................................................................................................... 3534
LotOpenLong
........................................................................................................... 3535
LotOpenShort
........................................................................................................... 3536
LotReverse........................................................................................................... 3537
PrepareHistoryDate
........................................................................................................... 3538
HistoryPoint
........................................................................................................... 3539
CheckTradeState
........................................................................................................... 3540
WaitEvent........................................................................................................... 3541
NoWaitEvent
........................................................................................................... 3542
TradeEventPositionStopTake
........................................................................................................... 3543
TradeEventOrderTriggered
........................................................................................................... 3544
TradeEventPositionOpened
........................................................................................................... 3545
TradeEventPositionVolumeChanged
........................................................................................................... 3546
TradeEventPositionModified
........................................................................................................... 3547
TradeEventPositionClosed
........................................................................................................... 3548
TradeEventOrderPlaced
........................................................................................................... 3549
TradeEventOrderModified
........................................................................................................... 3550
TradeEventOrderDeleted
........................................................................................................... 3551
TradeEventNotIdentified
........................................................................................................... 3552
TimeframeAdd
........................................................................................................... 3553
TimeframesFlags
........................................................................................................... 3554
CExpertSignal
................................................................................................................ 3555
BasePrice ........................................................................................................... 3557
UsedSeries........................................................................................................... 3558
Weight
........................................................................................................... 3559
PatternsUsage
........................................................................................................... 3560
General ........................................................................................................... 3561
Ignore
........................................................................................................... 3562
Invert
........................................................................................................... 3563
ThresholdOpen
........................................................................................................... 3564
ThresholdClose
........................................................................................................... 3565
PriceLevel........................................................................................................... 3566
StopLevel ........................................................................................................... 3567
TakeLevel ........................................................................................................... 3568
Expiration........................................................................................................... 3569
Magic
........................................................................................................... 3570
ValidationSettings
........................................................................................................... 3571
2000-2015, MetaQuotes Software Corp.

41

Contedo
InitIndicators
........................................................................................................... 3572
AddFilter ........................................................................................................... 3573
CheckOpenLong
........................................................................................................... 3574
CheckOpenShort
........................................................................................................... 3575
OpenLongParams
........................................................................................................... 3576
OpenShortParams
........................................................................................................... 3577
CheckCloseLong
........................................................................................................... 3578
CheckCloseShort
........................................................................................................... 3579
CloseLongParams
........................................................................................................... 3580
CloseShortParams
........................................................................................................... 3581
CheckReverseLong
........................................................................................................... 3582
CheckReverseShort
........................................................................................................... 3583
CheckTrailingOrderLong
........................................................................................................... 3584
CheckTrailingOrderShort
........................................................................................................... 3585
LongCondition
........................................................................................................... 3586
ShortCondition
........................................................................................................... 3587
Direction ........................................................................................................... 3588
CExpertTrailing
................................................................................................................ 3589
CheckTrailingStopLong
........................................................................................................... 3590
CheckTrailingStopShort
........................................................................................................... 3591
CExpertMoney
................................................................................................................ 3592
Percent ........................................................................................................... 3593
ValidationSettings
........................................................................................................... 3594
CheckOpenLong
........................................................................................................... 3595
CheckOpenShort
........................................................................................................... 3596
CheckReverse
........................................................................................................... 3597
CheckClose........................................................................................................... 3598
Modules.........................................................................................................................
of Trade Signals
3599
Signals of the
................................................................................................................
Indicator Accelerator Oscillator
3602
Signals of the
................................................................................................................
Indicator Adaptive Moving Average
3605
Signals of the
................................................................................................................
Indicator Awesome Oscillator
3609
Signals of the
................................................................................................................
Oscillator Bears Power
3613
Signals of the
................................................................................................................
Oscillator Bulls Power
3615
Signals of the
................................................................................................................
Oscillator Commodity Channel Index
3617
Signals of the
................................................................................................................
Oscillator DeMarker
3621
Signals of the
................................................................................................................
Indicator Double Exponential Moving Average
3625
Signals of the
................................................................................................................
Indicator Envelopes
3629
Signals of the
................................................................................................................
Indicator Fractal Adaptive Moving Average
3632
Signals of the
................................................................................................................
Intraday Time Filter
3636
Signals of the
................................................................................................................
Oscillator MACD
3638
Signals of the
................................................................................................................
Indicator Moving Average
3644
Signals of the
................................................................................................................
Indicator Parabolic SAR
3648
Signals of the
................................................................................................................
Oscillator Relative Strength Index
3650
Signals of the
................................................................................................................
Oscillator Relative Vigor Index
3656
Signals of the
................................................................................................................
Oscillator Stochastic
3658
Signals of the
................................................................................................................
Oscillator Triple Exponential Average
3663
Signals of the
................................................................................................................
Indicator Triple Exponential Moving Average
3667
Signals of the
................................................................................................................
Oscillator Williams Percent Range
3671
Trailing.........................................................................................................................
Stop Classes
3674
CTrailingFixedPips
................................................................................................................ 3675
StopLevel ........................................................................................................... 3676
ProfitLevel........................................................................................................... 3677
ValidationSettings
........................................................................................................... 3678
CheckTrailingStopLong
........................................................................................................... 3679
CheckTrailingStopShort
........................................................................................................... 3680
CTrailingMA................................................................................................................ 3681
Period
........................................................................................................... 3682
Shift
........................................................................................................... 3683
2000-2015, MetaQuotes Software Corp.

42

Contedo
Method ........................................................................................................... 3684
Applied
........................................................................................................... 3685
InitIndicators
........................................................................................................... 3686
ValidationSettings
........................................................................................................... 3687
CheckTrailingStopLong
........................................................................................................... 3688
CheckTrailingStopShort
........................................................................................................... 3689
CTrailingNone
................................................................................................................ 3690
CheckTrailingStopLong
........................................................................................................... 3691
CheckTrailingStopShort
........................................................................................................... 3692
CTrailingPSAR
................................................................................................................ 3693
Step
........................................................................................................... 3694
Maximum ........................................................................................................... 3695
InitIndicators
........................................................................................................... 3696
CheckTrailingStopLong
........................................................................................................... 3697
CheckTrailingStopShort
........................................................................................................... 3698
Money Management
.........................................................................................................................
Classes
3699
CMoneyFixedLot
................................................................................................................ 3700
Lots
........................................................................................................... 3701
ValidationSettings
........................................................................................................... 3702
CheckOpenLong
........................................................................................................... 3703
CheckOpenShort
........................................................................................................... 3704
CMoneyFixedMargin
................................................................................................................ 3705
CheckOpenLong
........................................................................................................... 3706
CheckOpenShort
........................................................................................................... 3707
CMoneyFixedRisk
................................................................................................................ 3708
CheckOpenLong
........................................................................................................... 3709
CheckOpenShort
........................................................................................................... 3710
CMoneyNone
................................................................................................................ 3711
ValidationSettings
........................................................................................................... 3712
CheckOpenLong
........................................................................................................... 3713
CheckOpenShort
........................................................................................................... 3714
CMoneySizeOptimized
................................................................................................................ 3715
DecreaseFactor
........................................................................................................... 3716
ValidationSettings
........................................................................................................... 3717
CheckOpenLong
........................................................................................................... 3718
CheckOpenShort
........................................................................................................... 3719
............................................................................................................................3720
Classes para
Painis de Controle e Dilogos
CRect ......................................................................................................................... 3722
Left
................................................................................................................ 3723
Top
................................................................................................................ 3724
Right
................................................................................................................ 3725
Bottom ................................................................................................................ 3726
Width
................................................................................................................ 3727
Height
................................................................................................................ 3728
SetBound ................................................................................................................ 3729
Move
................................................................................................................ 3730
Shift
................................................................................................................ 3731
Contains ................................................................................................................ 3732
Format
................................................................................................................ 3733
CDateTime
......................................................................................................................... 3734
MonthName................................................................................................................ 3736
ShortMonthName
................................................................................................................ 3737
DayName ................................................................................................................ 3738
ShortDayName
................................................................................................................ 3739
DaysInMonth
................................................................................................................ 3740
DateTime ................................................................................................................ 3741
Date
................................................................................................................ 3742
Time
................................................................................................................ 3743
2000-2015, MetaQuotes Software Corp.

43

Contedo
Sec
................................................................................................................ 3744
Min
................................................................................................................ 3745
Hour
................................................................................................................ 3746
Day
................................................................................................................ 3747
Mon
................................................................................................................ 3748
Year
................................................................................................................ 3749
SecDec
................................................................................................................ 3750
SecInc
................................................................................................................ 3751
MinDec
................................................................................................................ 3752
MinInc
................................................................................................................ 3753
HourDec ................................................................................................................ 3754
HourInc ................................................................................................................ 3755
DayDec ................................................................................................................ 3756
DayInc
................................................................................................................ 3757
MonDec ................................................................................................................ 3758
MonInc
................................................................................................................ 3759
YearDec ................................................................................................................ 3760
YearInc ................................................................................................................ 3761
CWnd ......................................................................................................................... 3762
Create
................................................................................................................ 3765
Destroy ................................................................................................................ 3766
OnEvent ................................................................................................................ 3767
OnMouseEvent
................................................................................................................ 3768
Name
................................................................................................................ 3769
ControlsTotal
................................................................................................................ 3770
Control ................................................................................................................ 3771
ControlFind................................................................................................................ 3772
Rect
................................................................................................................ 3773
Left
................................................................................................................ 3774
Top
................................................................................................................ 3775
Right
................................................................................................................ 3776
Bottom ................................................................................................................ 3777
Width
................................................................................................................ 3778
Height
................................................................................................................ 3779
Move
................................................................................................................ 3780
Shift
................................................................................................................ 3781
Resize
................................................................................................................ 3782
Contains ................................................................................................................ 3783
Alignment ................................................................................................................ 3784
Align
................................................................................................................ 3785
Id
................................................................................................................ 3786
IsEnabled ................................................................................................................ 3787
Enable
................................................................................................................ 3788
Disable
................................................................................................................ 3789
IsVisible ................................................................................................................ 3790
Visible
................................................................................................................ 3791
Show
................................................................................................................ 3792
Hide
................................................................................................................ 3793
IsActive ................................................................................................................ 3794
Activate ................................................................................................................ 3795
Deactivate................................................................................................................ 3796
StateFlags ................................................................................................................ 3797
StateFlagsSet
................................................................................................................ 3798
StateFlagsReset
................................................................................................................ 3799
PropFlags ................................................................................................................ 3800
PropFlagsSet
................................................................................................................ 3801
PropFlagsReset
................................................................................................................ 3802
MouseX
................................................................................................................ 3803
2000-2015, MetaQuotes Software Corp.

44

Contedo
MouseY
................................................................................................................ 3804
MouseFlags................................................................................................................ 3805
MouseFocusKill
................................................................................................................ 3806
OnCreate ................................................................................................................ 3807
OnDestroy ................................................................................................................ 3808
OnMove ................................................................................................................ 3809
OnResize ................................................................................................................ 3810
OnEnable ................................................................................................................ 3811
OnDisable ................................................................................................................ 3812
OnShow ................................................................................................................ 3813
OnHide
................................................................................................................ 3814
OnActivate................................................................................................................ 3815
OnDeactivate
................................................................................................................ 3816
OnClick ................................................................................................................ 3817
OnChange ................................................................................................................ 3818
OnMouseDown
................................................................................................................ 3819
OnMouseUp................................................................................................................ 3820
OnDragStart
................................................................................................................ 3821
OnDragProcess
................................................................................................................ 3822
OnDragEnd................................................................................................................ 3823
DragObjectCreate
................................................................................................................ 3824
DragObjectDestroy
................................................................................................................ 3825
CWndObj
......................................................................................................................... 3826
OnEvent ................................................................................................................ 3828
Text
................................................................................................................ 3829
Color
................................................................................................................ 3830
ColorBackground
................................................................................................................ 3831
ColorBorder
................................................................................................................ 3832
Font
................................................................................................................ 3833
FontSize ................................................................................................................ 3834
ZOrder
................................................................................................................ 3835
OnObjectCreate
................................................................................................................ 3836
OnObjectChange
................................................................................................................ 3837
OnObjectDelete
................................................................................................................ 3838
OnObjectDrag
................................................................................................................ 3839
OnSetText ................................................................................................................ 3840
OnSetColor................................................................................................................ 3841
OnSetColorBackground
................................................................................................................ 3842
OnSetFont ................................................................................................................ 3843
OnSetFontSize
................................................................................................................ 3844
OnSetZOrder
................................................................................................................ 3845
OnDestroy ................................................................................................................ 3846
OnChange ................................................................................................................ 3847
CWndContainer
......................................................................................................................... 3848
Destroy ................................................................................................................ 3850
OnEvent ................................................................................................................ 3851
OnMouseEvent
................................................................................................................ 3852
ControlsTotal
................................................................................................................ 3853
Control ................................................................................................................ 3854
ControlFind................................................................................................................ 3855
Add
................................................................................................................ 3856
Delete
................................................................................................................ 3857
Move
................................................................................................................ 3858
Shift
................................................................................................................ 3859
Id
................................................................................................................ 3860
Enable
................................................................................................................ 3861
Disable
................................................................................................................ 3862
Show
................................................................................................................ 3863
2000-2015, MetaQuotes Software Corp.

45

Contedo
Hide
................................................................................................................ 3864
MouseFocusKill
................................................................................................................ 3865
Save
................................................................................................................ 3866
Load
................................................................................................................ 3867
OnResize ................................................................................................................ 3868
OnActivate................................................................................................................ 3869
OnDeactivate
................................................................................................................ 3870
CLabel ......................................................................................................................... 3871
Create
................................................................................................................ 3872
OnSetText ................................................................................................................ 3873
OnSetColor................................................................................................................ 3874
OnSetFont ................................................................................................................ 3875
OnSetFontSize
................................................................................................................ 3876
OnCreate ................................................................................................................ 3877
OnShow ................................................................................................................ 3878
OnHide
................................................................................................................ 3879
OnMove ................................................................................................................ 3880
CBmpButton
......................................................................................................................... 3881
Create
................................................................................................................ 3883
Border
................................................................................................................ 3884
BmpNames ................................................................................................................ 3885
BmpOffName
................................................................................................................ 3886
BmpOnName
................................................................................................................ 3887
BmpPassiveName
................................................................................................................ 3888
BmpActiveName
................................................................................................................ 3889
Pressed ................................................................................................................ 3890
Locking ................................................................................................................ 3891
OnSetZOrder
................................................................................................................ 3892
OnCreate ................................................................................................................ 3893
OnShow ................................................................................................................ 3894
OnHide
................................................................................................................ 3895
OnMove ................................................................................................................ 3896
OnChange ................................................................................................................ 3897
OnActivate................................................................................................................ 3898
OnDeactivate
................................................................................................................ 3899
OnMouseDown
................................................................................................................ 3900
OnMouseUp................................................................................................................ 3901
CButton......................................................................................................................... 3902
Create
................................................................................................................ 3904
Pressed ................................................................................................................ 3905
Locking ................................................................................................................ 3906
OnSetText ................................................................................................................ 3907
OnSetColor................................................................................................................ 3908
OnSetColorBackground
................................................................................................................ 3909
OnSetColorBorder
................................................................................................................ 3910
OnSetFont ................................................................................................................ 3911
OnSetFontSize
................................................................................................................ 3912
OnCreate ................................................................................................................ 3913
OnShow ................................................................................................................ 3914
OnHide
................................................................................................................ 3915
OnMove ................................................................................................................ 3916
OnResize ................................................................................................................ 3917
OnMouseDown
................................................................................................................ 3918
OnMouseUp................................................................................................................ 3919
CEdit ......................................................................................................................... 3920
Create
................................................................................................................ 3922
ReadOnly ................................................................................................................ 3923
TextAlign ................................................................................................................ 3924
2000-2015, MetaQuotes Software Corp.

46

Contedo
OnObjectEndEdit
................................................................................................................ 3925
OnSetText ................................................................................................................ 3926
OnSetColor................................................................................................................ 3927
OnSetColorBackground
................................................................................................................ 3928
OnSetColorBorder
................................................................................................................ 3929
OnSetFont ................................................................................................................ 3930
OnSetFontSize
................................................................................................................ 3931
OnSetZOrder
................................................................................................................ 3932
OnCreate ................................................................................................................ 3933
OnShow ................................................................................................................ 3934
OnHide
................................................................................................................ 3935
OnMove ................................................................................................................ 3936
OnResize ................................................................................................................ 3937
OnChange ................................................................................................................ 3938
OnClick ................................................................................................................ 3939
CPanel ......................................................................................................................... 3940
Create
................................................................................................................ 3941
BorderType................................................................................................................ 3942
OnSetText ................................................................................................................ 3943
OnSetColorBackground
................................................................................................................ 3944
OnSetColorBorder
................................................................................................................ 3945
OnCreate ................................................................................................................ 3946
OnShow ................................................................................................................ 3947
OnHide
................................................................................................................ 3948
OnMove ................................................................................................................ 3949
OnResize ................................................................................................................ 3950
OnChange ................................................................................................................ 3951
CPicture
......................................................................................................................... 3952
Create
................................................................................................................ 3953
Border
................................................................................................................ 3954
BmpName ................................................................................................................ 3955
OnCreate ................................................................................................................ 3956
OnShow ................................................................................................................ 3957
OnHide
................................................................................................................ 3958
OnMove ................................................................................................................ 3959
OnChange ................................................................................................................ 3960
CScroll ......................................................................................................................... 3961
Create
................................................................................................................ 3963
OnEvent ................................................................................................................ 3964
MinPos
................................................................................................................ 3965
MaxPos
................................................................................................................ 3966
CurrPos ................................................................................................................ 3967
CreateBack................................................................................................................ 3968
CreateInc ................................................................................................................ 3969
CreateDec................................................................................................................ 3970
CreateThumb
................................................................................................................ 3971
OnClickInc................................................................................................................ 3972
OnClickDec................................................................................................................ 3973
OnShow ................................................................................................................ 3974
OnHide
................................................................................................................ 3975
OnChangePos
................................................................................................................ 3976
OnThumbDragStart
................................................................................................................ 3977
OnThumbDragProcess
................................................................................................................ 3978
OnThumbDragEnd
................................................................................................................ 3979
CalcPos ................................................................................................................ 3980
CScrollV......................................................................................................................... 3981
CreateInc ................................................................................................................ 3982
CreateDec................................................................................................................ 3983
2000-2015, MetaQuotes Software Corp.

47

Contedo
CreateThumb
................................................................................................................ 3984
OnResize ................................................................................................................ 3985
OnChangePos
................................................................................................................ 3986
OnThumbDragStart
................................................................................................................ 3987
OnThumbDragProcess
................................................................................................................ 3988
OnThumbDragEnd
................................................................................................................ 3989
CalcPos ................................................................................................................ 3990
CScrollH......................................................................................................................... 3991
CreateInc ................................................................................................................ 3992
CreateDec................................................................................................................ 3993
CreateThumb
................................................................................................................ 3994
OnResize ................................................................................................................ 3995
OnChangePos
................................................................................................................ 3996
OnThumbDragStart
................................................................................................................ 3997
OnThumbDragProcess
................................................................................................................ 3998
OnThumbDragEnd
................................................................................................................ 3999
CalcPos ................................................................................................................ 4000
CWndClient
......................................................................................................................... 4001
Create
................................................................................................................ 4003
OnEvent ................................................................................................................ 4004
ColorBackground
................................................................................................................ 4005
ColorBorder
................................................................................................................ 4006
BorderType................................................................................................................ 4007
VScrolled ................................................................................................................ 4008
HScrolled ................................................................................................................ 4009
CreateBack................................................................................................................ 4010
CreateScrollV
................................................................................................................ 4011
CreateScrollH
................................................................................................................ 4012
OnResize ................................................................................................................ 4013
OnVScrollShow
................................................................................................................ 4014
OnVScrollHide
................................................................................................................ 4015
OnHScrollShow
................................................................................................................ 4016
OnHScrollHide
................................................................................................................ 4017
OnScrollLineDown
................................................................................................................ 4018
OnScrollLineUp
................................................................................................................ 4019
OnScrollLineLeft
................................................................................................................ 4020
OnScrollLineRight
................................................................................................................ 4021
Rebound ................................................................................................................ 4022
CListView
......................................................................................................................... 4023
Create
................................................................................................................ 4025
OnEvent ................................................................................................................ 4026
TotalView ................................................................................................................ 4027
AddItem ................................................................................................................ 4028
Select
................................................................................................................ 4029
SelectByText
................................................................................................................ 4030
SelectByValue
................................................................................................................ 4031
Value
................................................................................................................ 4032
CreateRow................................................................................................................ 4033
OnResize ................................................................................................................ 4034
OnVScrollShow
................................................................................................................ 4035
OnVScrollHide
................................................................................................................ 4036
OnScrollLineDown
................................................................................................................ 4037
OnScrollLineUp
................................................................................................................ 4038
OnItemClick
................................................................................................................ 4039
Redraw
................................................................................................................ 4040
RowState ................................................................................................................ 4041
CheckView................................................................................................................ 4042
CComboBox
......................................................................................................................... 4043
2000-2015, MetaQuotes Software Corp.

48

Contedo
Create
................................................................................................................ 4045
OnEvent ................................................................................................................ 4046
AddItem ................................................................................................................ 4047
ListViewItems
................................................................................................................ 4048
Select
................................................................................................................ 4049
SelectByText
................................................................................................................ 4050
SelectByValue
................................................................................................................ 4051
Value
................................................................................................................ 4052
CreateEdit................................................................................................................ 4053
CreateButton
................................................................................................................ 4054
CreateList................................................................................................................ 4055
OnClickEdit................................................................................................................ 4056
OnClickButton
................................................................................................................ 4057
OnChangeList
................................................................................................................ 4058
ListShow ................................................................................................................ 4059
ListHide ................................................................................................................ 4060
CCheckBox
......................................................................................................................... 4061
Create
................................................................................................................ 4063
OnEvent ................................................................................................................ 4064
Text
................................................................................................................ 4065
Color
................................................................................................................ 4066
Checked ................................................................................................................ 4067
Value
................................................................................................................ 4068
CreateButton
................................................................................................................ 4069
CreateLabel
................................................................................................................ 4070
OnClickButton
................................................................................................................ 4071
OnClickLabel
................................................................................................................ 4072
CCheckGroup
......................................................................................................................... 4073
Create
................................................................................................................ 4075
OnEvent ................................................................................................................ 4076
AddItem ................................................................................................................ 4077
Value
................................................................................................................ 4078
CreateButton
................................................................................................................ 4079
OnVScrollShow
................................................................................................................ 4080
OnVScrollHide
................................................................................................................ 4081
OnScrollLineDown
................................................................................................................ 4082
OnScrollLineUp
................................................................................................................ 4083
OnChangeItem
................................................................................................................ 4084
Redraw
................................................................................................................ 4085
RowState ................................................................................................................ 4086
CRadioButton
......................................................................................................................... 4087
Create
................................................................................................................ 4088
OnEvent ................................................................................................................ 4089
Text
................................................................................................................ 4090
Color
................................................................................................................ 4091
State
................................................................................................................ 4092
CreateButton
................................................................................................................ 4093
CreateLabel
................................................................................................................ 4094
OnClickButton
................................................................................................................ 4095
OnClickLabel
................................................................................................................ 4096
CRadioGroup
......................................................................................................................... 4097
Create
................................................................................................................ 4099
OnEvent ................................................................................................................ 4100
AddItem ................................................................................................................ 4101
Value
................................................................................................................ 4102
CreateButton
................................................................................................................ 4103
OnVScrollShow
................................................................................................................ 4104
OnVScrollHide
................................................................................................................ 4105
2000-2015, MetaQuotes Software Corp.

49

Contedo
OnScrollLineDown
................................................................................................................ 4106
OnScrollLineUp
................................................................................................................ 4107
OnChangeItem
................................................................................................................ 4108
Redraw
................................................................................................................ 4109
RowState ................................................................................................................ 4110
Select
................................................................................................................ 4111
CSpinEdit
......................................................................................................................... 4112
Create
................................................................................................................ 4114
OnEvent ................................................................................................................ 4115
MinValue ................................................................................................................ 4116
MaxValue ................................................................................................................ 4117
Value
................................................................................................................ 4118
CreateEdit................................................................................................................ 4119
CreateInc ................................................................................................................ 4120
CreateDec................................................................................................................ 4121
OnClickInc................................................................................................................ 4122
OnClickDec................................................................................................................ 4123
OnChangeValue
................................................................................................................ 4124
CDialog......................................................................................................................... 4125
Create
................................................................................................................ 4127
OnEvent ................................................................................................................ 4128
Caption ................................................................................................................ 4129
Add
................................................................................................................ 4130
CreateWhiteBorder
................................................................................................................ 4131
CreateBackground
................................................................................................................ 4132
CreateCaption
................................................................................................................ 4133
CreateButtonClose
................................................................................................................ 4134
CreateClientArea
................................................................................................................ 4135
OnClickCaption
................................................................................................................ 4136
OnClickButtonClose
................................................................................................................ 4137
ClientAreaVisible
................................................................................................................ 4138
ClientAreaLeft
................................................................................................................ 4139
ClientAreaTop
................................................................................................................ 4140
ClientAreaRight
................................................................................................................ 4141
ClientAreaBottom
................................................................................................................ 4142
ClientAreaWidth
................................................................................................................ 4143
ClientAreaHeight
................................................................................................................ 4144
OnDialogDragStart
................................................................................................................ 4145
OnDialogDragProcess
................................................................................................................ 4146
OnDialogDragEnd
................................................................................................................ 4147
CAppDialog
......................................................................................................................... 4148
Create
................................................................................................................ 4150
Destroy ................................................................................................................ 4151
OnEvent ................................................................................................................ 4152
Run
................................................................................................................ 4153
ChartEvent................................................................................................................ 4154
Minimized ................................................................................................................ 4155
IniFileSave ................................................................................................................ 4156
IniFileLoad................................................................................................................ 4157
IniFileName................................................................................................................ 4158
IniFileExt ................................................................................................................ 4159
CreateCommon
................................................................................................................ 4160
CreateExpert
................................................................................................................ 4161
CreateIndicator
................................................................................................................ 4162
CreateButtonMinMax
................................................................................................................ 4163
OnClickButtonClose
................................................................................................................ 4164
OnClickButtonMinMax
................................................................................................................ 4165
OnAnotherApplicationClose
................................................................................................................ 4166
2000-2015, MetaQuotes Software Corp.

50

Contedo
Rebound ................................................................................................................ 4167
Minimize ................................................................................................................ 4168
Maximize ................................................................................................................ 4169
CreateInstanceId
................................................................................................................ 4170
ProgramName
................................................................................................................ 4171
SubwinOff ................................................................................................................ 4172

27

Migrando do .................................................................................................
MQL4
4173

28

List of MQL5 .................................................................................................


Functions
4176

29

List of MQL5 .................................................................................................


Constants
4203

2000-2015, MetaQuotes Software Corp.

51

Referncia MQL5
A linguagem MetaQuotes 5 (MQL5) uma linguagem incorporada para programao de estratgias de
negociao. Este linguagem desenvolvida pela MetaQuotes Software Corp. baseada em sua longa
experincia na criao de plataformas de negociao online. Usando esta linguagem, voc pode criar
seus prprios Expert Advisors que fazem gerenciamento automtico de negociao e so
perfeitamente adequados para implementar suas estratgias de negociao. Alm disso, usando MQL5
voc pode criar seus prprios indicadores tcnicos (indicadores customizados), scripts (cdigos
avulsos) e bibliotecas (libraries).
O MQL5 contm um grande nmero de funes necessrias para analisar as cotaes corrente e
previamente recebidas, e tem indicadores bsicos embutidos e funes para gerenciar posies de
negociao (trade) e control-las. O MetaEditor 5 (editor de texto), que destaca diferentes
construtores da linguagem MQL5, usado para escrever o cdigo do programa. Ele ajuda usurios a se
orientarem no texto do sistema especiado com bastante facilidade.
Um breve guia contm funes, operaes, palavras reservadas, e outras construes de linguagem
divididas em categorias, e permite encontrar a descrio de todos os elemento usados na linguagem.
Programas escritos na linguagem MetaQuotes 5 tm diferentes caractersticas e propsitos:
Expert Advisor um sistema de negociao mecnico associado a um certo grfico. Um Expert
Advisor comea a rodar quando um evento que pode ser manipulado por ele ocorre: eventos de
inicializao e desinicializao, evento de recepo de novo preo (tick), um evento de timer,
evento de mudana na Profundidade do Mercado, evento de grfico e eventos customizados.
Um Expert Advisor pode tanto informar sobre uma possibilidade de negociao quanto
automaticamente negociar sob uma conta enviando ordens diretamente ao servidor de negociao.
Expert Advisors so armazenados em terminal_directory\MQL5\Experts.
Indicador customizado um indicador tcnico escrito de forma independente, em acrscimo aos j
integrados ao terminal cliente. Como os indicadores embutidos, eles no podem negociar
automaticamente e so destinados a implementao de funes analticas somente.
Indicadores customizados so armazenados em terminal_directory\MQL5\Indicators
Script (Cdigo avulso) um programa destinado a uma nica execuo de algumas aes.
Diferentemente de Expert Advisors, scripts no processam quaisquer aes, exceto o evento start
(isso requer que a funo de manipulao OnStart() esteja presente no script). Scripts so
armazenados em terminal_directory\MQL5\Scripts
Library (Biblioteca) um conjunto de funes customizadas destinado a armazenar e distribuir
blocos de programas customizados usados frequentemente. Bibliotecas (libraries) no podem
comear uma execuo por si mesmas.
Bibliotecas so armazenadas em terminal_directory\MQL5\Libraries
Arquivo includo um texto fonte com blocos de programas customizados utilizados com mais
freqncia. Tais arquivos podem ser includos nos textos fonte de Expert Advisors, scripts,
indicadores customizados, e bibliotecas (libraries) na etapa de compilao. O uso de arquivos
includos mais prefervel ao o uso de bibliotecas (libraries) por causa da custo adicional que ocorre
na chamada de funes de biblioteca (library).
Include files podem ser armazenados no mesmo diretrio do arquivo fonte - neste caso a diretiva
#include com aspas duplas usado. Um outro lugar para armazenar include files terminal_directory
\MQL5\Include, neste caso a diretiva #include usado entre colchetes.

2000-2015, MetaQuotes Software Corp.

52

2000-2015, MetaQuotes Software Corp.

2000-2015, MetaQuotes Software Corp.

53

Elementos Bsicos da Linguagem

Elementos Bsicos da Linguagem


A Linguagem MetaQuotes 5 (MQL5) uma linguagem orientado a objetos de alto nvel destinado para
escrever estratgias de negociao automatizadas, e indicadores tcnicos customizados para a a
anlise de vrios mercados financeiros. Ele permite no somente escrever uma variedade de sistemas
especialistas, concebidos para operar em tempo real, mas tambm criar suas prprias ferramentas
grficas para ajudar voc a tomar decises de negociao (trade).
MQL5 baseado no conceito da popular linguagem de programao C++. Em comparao com MQL4, a
nova linguagem tem agora enumeradores, estruturas, classes e manipulao de evento. Ao aumentar
o nmero de tipos principais incorporados, a interao dos programas executveis em MQL5 com
outros aplicativos atravs de dll agora to fcil quanto possvel. A sintaxe do MQL5 similar
sintaxe do C++, e isso faz com que seja fcil traduzir para ele programas de linguagens modernas de
programao.
Para ajudar voc a estudar a linguagem MQL5, todos os tpicos esto agrupados nas seguintes sees:
Sintaxe
Tipos de Dados
Operaes e Expresses
Operadores
Funes
Variveis
Preprocessador
Programao Orientada a Objetos

2000-2015, MetaQuotes Software Corp.

54

Elementos Bsicos da Linguagem

Sintaxe
Quanto sintaxe, a linguagem MQL5 para programao de estratgias de negociao muito similar
linguagem de programao C++, com exceo de alguns recursos:
ausncia de aritmtica com endereo
ausncia do operador goto
um enumerador annimo no pode ser declarado
ausncia de herana mltipla
Tambm Veja
Enumeradores, Estruturas e Classes, Herana

2000-2015, MetaQuotes Software Corp.

55

Elementos Bsicos da Linguagem

Comentrios
Comentrios de mltiplas linhas comeam com o par de smbolos /* e terminam com o par */. Este
tipo de comentrio no pode ser aninhado. Comentrios de linha nica comeam com o par de
smbolos // e terminam com o caractere newline, eles podem ser aninhados em outros comentrios de
mltiplas linhas. Comentrios so permitidos em todos os lugares onde os espaos so permitidos,
eles podem conter qualquer nmero de espaos.
Exemplos:
//--- Comentrio de linha nica
/*

Comentrio

de mltiplas

linhas

// Comentrio de linha nica aninhada

*/

2000-2015, MetaQuotes Software Corp.

56

Elementos Bsicos da Linguagem

Identificadores
Identificadores so usados como nomes de variveis e funes. O comprimento de um identificador
no pode exceder 63 caracteres.
Caracteres permitidos na formao de um identificador: nmeros 0-9, as letras maisculas e
minsculas latinas a-z e A-Z, reconhecidos como caracteres diferentes, o caractere sublinhado (_). O
primeiro caractere no pode ser um dgito.
O identificador no deve coincidir com uma palavra reservada.
Exemplos:
NAME1 namel Total_5 Paper

Tambm Veja
Variveis, Funes

2000-2015, MetaQuotes Software Corp.

57

Elementos Bsicos da Linguagem

Palavras Reservadas
Os seguintes identificadores so registrados como palavras reservadas, cada uma delas corresponde a
uma certa ao, e no pode ser usada com outro significado:
Tipos de Dados
bool

enum

struct

char

float

uchar

class

int

uint

color

long

ulong

datetime

short

ushort

double

string

void

const

private

protected

public

virtual

Especificadores de Acesso

Classes de Memria
extern

input

static

break

do

operator

case

else

return

continue

for

sizeof

default

if

switch

delete

new

while

false

#define

#property

this

#import

template

true

#include

typename

Operadores

Outros

2000-2015, MetaQuotes Software Corp.

58

Elementos Bsicos da Linguagem

2000-2015, MetaQuotes Software Corp.

59

Elementos Bsicos da Linguagem

Tipos de Dados
Qualquer programa funciona com dados. Os dados podem ser de diferentes tipos dependendo da sua
finalidade. Por exemplo, dados inteiros so usados para acessar componentes de arrays. Dados de
preo pertencem ao tipo de dupla preciso com ponto flutuante. Isso est relacionado ao fato de que
nenhum tipo de dados especial para detalhes de preo fornecido pelo MQL5.
Dados de diferentes tipos so processados com diferentes taxas. Dados inteiros so os de
processamento mais rpido. Para processar dados de dupla preciso, um co-processador especial
utilizado. No entanto, por causa da complexidade da representao interna de dados com ponto
flutuante, eles so processados mais devagar que os dados inteiros.
Dados do tipo string so os de processamento mais lento por causa da alocao/realocao dinmica
de memria de computador.
Os tipos bsicos de dado so:
inteiros (char, short, int, long, uchar, ushort, uint, ulong);
lgico (bool);
literais (ushort);
strings (string);
nmeros com ponto flutuante (double, float);
cor (color);
data e hora(datetime);
enumeradores (enum).
Os tipos complexos de dado so:
estruturas;
classes.
Em termos de OOP tipos de dados complexos so chamados de tipos de dados abstratos.
Os tipos color e datetime fazem sentido apenas para facilitar a entrada e visualizao de parmetros
definidos do lado de fora - a partir da tabela de um Expert Advisor ou propriedades de um indicador
customizado (o guia Entradas). Dados de cor (color) e data e hora (datetime) so representados como
inteiros. Tipos inteiros e tipos de ponto flutuante so chamados tipos aritmticos (numricos).
Apenas converses de tipo (type casting) implcitas so usadas em expresses, a menos que uma
converso (casting) explcita seja especificado.
Tambm Veja
Converso de Tipo (Typecasting)

2000-2015, MetaQuotes Software Corp.

60

Elementos Bsicos da Linguagem

Tipos Inteiros
Em MQL5, os inteiros so representados por onze tipos. Alguns tipos podem ser utilizados em conjunto
com outros tipos, se exigido pela lgica do programa, mas neste caso necessrio lembrar as regras
de converso de tipos.
A tabela abaixo lista as caractersticas de cada tipo. Alm disso, a ltima coluna apresenta o tipo
correspondente em C++ para cada tipo.
Tipo

Tamanho
Bytes

char

em

Valor Mnimo

Valor Mximo

C++ Anlogo

-128

127

char

uchar

255

unsigned
BYTE

bool

0(false)

1(true)

bool

short

-32 768

32 767

short, wchar_t

ushort

65 535

unsigned
WORD

int

- 2 147 483 648

2 147 483 647

int

uint

4 294 967 295

unsigned
DWORD

color

-1

16 777 215

int, COLORREF

long

-9 223 372 036


854 775 808

9 223 372 036


854 775 807

__int64

ulong

18 446 744 073


709 551 615

unsigned __int64

datetime

0
(1970.01.01
0:00:00)

32 535 244 799


(3000.12.31
23:59:59)

__time64_t

char,

short,

int,

Valores do tipo integer podem ser apresentados como constantes numricas, literais de cor, literais de
data-hora, constantes de caractere e enumeradores.
Tambm Veja
Converso de Dados, Constantes de Tipos Numricos

2000-2015, MetaQuotes Software Corp.

61

Elementos Bsicos da Linguagem

Tipos char, short, int e long


char
O tipo char usa 1 byte de memria (8 bits) e permite expressar em notao binria 2^8=256 valores. O
tipo char pode conter tanto valores positivos quanto negativos. A faixa de valores de -128 a 127.

uchar
O tipo inteiro uchar tambm ocupa 1 byte de memria, assim como o tipo char , mas diferente dele
uchar destinado apenas para valores positivos. O valor mnimo zero, o valor mximo 255. A
primeira letra u no nome do tipo uchar abreviatura de unsigned (sem sinal).

short
O tamanho do tipo short de 2 bytes (16 bits) e, conseqentemente, ele permite expressar a faixa de
valores igual a 2 elevado a 16: 2^16 = 65 536. Como o tipo short um tipo com sinal, e contm tanto
valores positivos quanto negativos, a faixa de valores entre -32 768 e 32 767.

ushort
O tipo short sem sinal o tipo ushort, que tambm tem 2 bytes de tamanho. O valor mnimo 0, o
valor mximo 65 535.

int
O tamanho do tipo int de 4 bytes (32 bits). O valor mnimo -2 147 483 648, o valor mximo 2 147
483 647.

uint
O tipo integer sem sinal uint. Ele usa 4 bytes de memria e permite expressar inteiros de 0 a 4 294
967 295.

long
O tamanho do tipo long de 8 bytes (64 bits). O valor mnimo -9 223 372 036 854 775 808, o valor
mximo 9 223 372 036 854 775 807.

ulong
O tipo ulong tambm ocupa 8 bytes e pode armazenar valores de 0 a 18 446 744 073 709 551 615.
Exemplos:
char

ch=12;

short sh=-5000;
int

in=2445777;

2000-2015, MetaQuotes Software Corp.

62

Elementos Bsicos da Linguagem


Como os tipo inteiros sem sinal no so concebidos para armazenar valores negativos, a tentativa de
atribuir um valor negativo pode levar a conseqncias inesperadas. Este simples script levar a um
loop infinito:
//--- Loop infinito
void OnStart()
{
uchar

u_ch;

for(char ch=-128;ch<128;ch++)
{
u_ch=ch;
Print("ch = ",ch," u_ch = ",u_ch);
}
}

A variante correta :
//--- Variante correta
void OnStart()
{
uchar

u_ch;

for(char ch=-128;ch<=127;ch++)
{
u_ch=ch;
Print("ch = ",ch," u_ch = ",u_ch);
if(ch==127) break;
}
}

Resultado:
ch= -128

u_ch= 128

ch= -127

u_ch= 129

ch= -126

u_ch= 130

ch= -125

u_ch= 131

ch= -124

u_ch= 132

ch= -123

u_ch= 133

ch= -122

u_ch= 134

ch= -121

u_ch= 135

ch= -120

u_ch= 136

ch= -119

u_ch= 137

ch= -118

u_ch= 138

ch= -117

u_ch= 139

ch= -116

u_ch= 140

ch= -115

u_ch= 141

ch= -114

u_ch= 142

ch= -113

u_ch= 143

ch= -112

u_ch= 144

2000-2015, MetaQuotes Software Corp.

63

Elementos Bsicos da Linguagem


ch= -111

u_ch= 145

...

Exemplos:
//--- Valores negativos no podem ser armazenados em tipos sem sinal
uchar

u_ch=-120;

ushort u_sh=-5000;
uint

u_in=-401280;

Hexadecimal: nmeros 0-9, as letras a-f ou A-F para os valores de 10-15; comeam com 0x ou 0X.
Exemplos:
0x0A, 0x12, 0X12, 0x2f, 0xA3, 0Xa3, 0X7C7

For integer variables, the values can be set in binary form using B prefix. For example, you can encode
the working hours of a trading session into int type variable and use information about them according
to the required algorithm:
//+------------------------------------------------------------------+
//| Script program start function

//+------------------------------------------------------------------+
void OnStart()
{
//--- set 1 for working hours and 0 for nonworking ones
int AsianSession

=B'111111111'; // Asian session from 0:00 to 9:00

int EuropeanSession=B'111111111000000000'; // European session 9:00 - 18:00


int AmericanSession =B'111111110000000000000011'; // American session 16:00 - 02:00
//--- derive numerical values of the sessions
PrintFormat("Asian session hours as value =%d",AsianSession);
PrintFormat("European session hours as value is %d",EuropeanSession);
PrintFormat("American session hours as value is %d",AmericanSession);
//--- and now let's display string representations of the sessions' working hours
Print("Asian session ",GetHoursForSession(AsianSession));
Print("European session ",GetHoursForSession(EuropeanSession));
Print("American session ",GetHoursForSession(AmericanSession));
//--}
//+------------------------------------------------------------------+
//| return the session's working hours as a string

//+------------------------------------------------------------------+
string GetHoursForSession(int session)
{
//--- in order to check, use AND bit operations and left shift by 1 bit <<=1
//--- start checking from the lowest bit
int bit=1;
string out="working hours: ";
//--- check all 24 bits starting from the zero one and up to 23 inclusively
for(int i=0;i<24;i++)

2000-2015, MetaQuotes Software Corp.

64

Elementos Bsicos da Linguagem


{
//--- receive bit state in number
bool workinghour=(session&bit)==bit;
//--- add the hour's number to the message
if(workinghour )out=out+StringFormat("%d ",i);
//--- shift by one bit to the left to check the value of the next one
bit<<=1;
}
//--- result string
return out;
}

Tambm Veja
Converso de Tipo (Typecasting)

2000-2015, MetaQuotes Software Corp.

65

Elementos Bsicos da Linguagem

Constantes de Caracteres
Os caracteres como elementos de uma string,em MQL5, so ndices do conjunto de caracteres
Unicode. Eles so valores hexadecimais que podem ser convertidos para inteiros, e que podem ser
manipulados por operaes com inteiros como adio e subtrao.
Qualquer caractere nico entre aspas simples ou um cdigo hexadecimal ASCII de um caractere como
'\x10' um caractere constante e do tipo ushort. Por exemplo, uma anotao do tipo '0' representa o
valor numrico 30, que corresponde ao ndice do zero na tabela de caracteres.
Exemplo:
void OnStart()
{
//--- define constantes de caracteres
int symbol_0='0';
int symbol_9=symbol_0+9; // obtm o smbolo '9'
//--- valores de sada de constantes
printf("Num formato decimal: symbol_0 = %d,

symbol_9 = %d",symbol_0,symbol_9);

printf("Num formato hexadecimal: symbol_0 = 0x%x,

symbol_9 = 0x%x",symbol_0,symbol_9);

//--- entrada de constantes em uma string


string test="";
StringSetCharacter(test,0,symbol_0);
StringSetCharacter(test,1,symbol_9);
//--- isso como eles se apresentam em uma string
Print(test);
}

Uma barra invertida (\) um caractere de controle para o compilador ao lidar com strings constantes e
constantes caracteres no texto fonte de um programa. Alguns smbolos, por exemplo uma aspas
simples ('), aspas duplas ("), barra invertida (\) e caracteres de controle podem ser representados
como combinao de smbolos que comeam com uma barra invertida (\), de acordo com a tabela
abaixo:
Nome do Caractere

Cdigo Mnemnico
ou imagem

Anotao em MQL5

Valor Numrico

linha nova (line feed)

LF

'\n'

10

tab horizontal

HT

'\t'

retorno de carro

CR

'\r'

13

barra invertida

'\\'

92

aspas simples

'

'\''

39

aspas duplas

"

'\"'

34

cdigo hexadecimal

hhhh

'\xhhhh'

1 a 4 caracteres
hexadecimais

cdigo decimal

'\d'

nmero decimal de 0
a 65535

2000-2015, MetaQuotes Software Corp.

66

Elementos Bsicos da Linguagem


Caso uma barra invertida seja seguida por outro caractere no descrito acima, o resultado
indefinido.
Exemplo
void OnStart()
{
//--- declara constantes de caracteres
int a='A';
int b='$';
int c='';

// cdigo 0xA9

int d='\xAE';

// cdigo do smbolo

//--- sada imprime constantes


Print(a,b,c,d);
//--- acrescenta um caractere na string
string test="";
StringSetCharacter(test,0,a);
Print(test);
//--- substitui um caractere na string
StringSetCharacter(test,0,b);
Print(test);
//--- substitui um caractere na string
StringSetCharacter(test,0,c);
Print(test);
//--- substitui um caractere na string
StringSetCharacter(test,0,d);
Print(test);
//--- representa caracteres como nmero
int a1=65;
int b1=36;
int c1=169;
int d1=174;
//--- acrescenta um caractere na string
StringSetCharacter(test,1,a1);
Print(test);
//--- acrescenta um caractere na string
StringSetCharacter(test,1,b1);
Print(test);
//--- acrescenta um caractere na string
StringSetCharacter(test,1,c1);
Print(test);
//--- acrescenta um caractere na string
StringSetCharacter(test,1,d1);
Print(test);
}

Como foi mencionado acima, o valor de uma constante caractere (ou varivel) o valor do ndice na
tabela de caracteres. Sendo o ndice um inteiro, pode ser escrito de diferentes maneiras.
void OnStart()

2000-2015, MetaQuotes Software Corp.

67

Elementos Bsicos da Linguagem


{
//--int a=0xAE;

// o cdigo de corresponde ao literal '\xAE'

int b=0x24;

// o cdigo de $ corresponde ao literal '\x24'

int c=0xA9;

// o cdigo de corresponde ao literal '\xA9'

int d=0x263A;

// o cdigo de corresponde ao literal '\x263A'

//--- mostrar valores


Print(a,b,c,d);
//--- acrescenta um caractere na string
string test="";
StringSetCharacter(test,0,a);
Print(test);
//--- substitui um caractere na string
StringSetCharacter(test,0,b);
Print(test);
//--- substitui um caractere na string
StringSetCharacter(test,0,c);
Print(test);
//--- substitui um caractere na string
StringSetCharacter(test,0,d);
Print(test);
//--- cdigo de terno carto
int a1=0x2660;
int b1=0x2661;
int c1=0x2662;
int d1=0x2663;
//--- acrescenta um caractere de espadas
StringSetCharacter(test,1,a1);
Print(test);
//--- acrescenta um caractere de copas
StringSetCharacter(test,2,b1);
Print(test);
//--- acrescenta um caractere de ouros
StringSetCharacter(test,3,c1);
Print(test);
//--- acrescenta um caractere de paus
StringSetCharacter(test,4,d1);
Print(test);
//--- Exemplo de literais de caractere em uma string
test="Rainha\x2660s\x2662";
printf("%s",test);
}

A representao internal de um literal de caractere do tipo ushort. Constantes de caracteres podem


aceitar valores de 0 a 65535.
Tambm Veja
StringSetCharacter(), StringGetCharacter(), ShortToString(), ShortArrayToString(),
StringToShortArray()

2000-2015, MetaQuotes Software Corp.

68

Elementos Bsicos da Linguagem

Tipo datetime
O tipo datetime destinado a armazenar data e hora como o nmero de segundos decorridos desde 01
de Janeiro de 1970. Este tipo ocupa 8 bytes de memria.
Constantes de data e hora podem ser representados como string literal, que consiste de 6 partes
mostrando o valor numrico do ano, ms, dia (ou dia, ms, ano), horas, minutos e segundos. A
constante colocado entre aspas simples e comea com o caractere D.
Os valores variam de 1 de Janeiro de 1970 a 31 de Dezembro de 3000. Tanto a data (ano, ms, dia)
quanto a hora (horas, minutos, segundos), ou ambos podem ser omitidos.
Na especificao da data literal , desejvel que voc especifique ano, ms e dia. Caso contrrio, o
compilador retorna um aviso sobre entrada incompleta.
Exemplos:
datetime NY=D'2015.01.01 00:00';

// Data Hora de comeo do ano 2015

datetime d1=D'1980.07.19 12:30:27';

// Ano Ms Dia Horas Minutos Segundos

datetime d2=D'19.07.1980 12:30:27';

// Igual a D'1980.07.19 12:30:27';

datetime d3=D'19.07.1980 12';

// Igual a D'1980.07.19 12:00:00'

datetime d4=D'01.01.2004';

// Igual a D'01.01.2004 00:00:00'

datetime compilation_date=__DATE__;

// Data de Compilao

datetime compilation_date_time=__DATETIME__;

// Data e Hora de Compilao

datetime compilation_time=__DATETIME__-__DATE__;// Hora de Compilao


//--- Exemplos de declaraes aps o qual avisos do compilador sero retornados
datetime warning1=D'12:30:27';

// Igual a D'[data de compilao] 12:30:27'

datetime warning2=D'';

// Igual a __DATETIME__

Tambm Veja
Estrutura do Tipo Data, Data e Hora, TimeToString, StringToTime

2000-2015, MetaQuotes Software Corp.

69

Elementos Bsicos da Linguagem

Tipo color
O tipo color destinado para armazenar informaes sobre cor e ocupa 4 bytes na memria. O
primeiro byte ignorado, os restantes 3 bytes contm os componentes RGB.
As constantes de cor podem ser representadas de trs formas: literalmente, por inteiros, ou por nome
(somente por Web-colors nomeados).
A representao literal consiste de trs partes representando os valores numricos das taxas dos trs
principais componentes de cor: vermelho, verde e azul. A constante comea com C e colocada entre
aspas simples. Os valores numricos da taxa de um componente de cor ficam entre 0 e 255.
A representao dos valores inteiros escrito na forma de um nmero hexadecimal ou decimal. Um
nmero hexadecimal tem a forma 0x00BBGGRR, onde RR a taxa do componente da cor vermelha
(Red), GG - da cor verde (Green), e BB - da cor azul (Blue). As constantes decimais no so
diretamente refletidos no RGB. Eles representam um valor decimal da representao hexadecimal de
inteiros.
Cores especficas refletem o chamado conjunto de Web-colors.
Exemplos:
//--- Literais
C'128,128,128'

// Cinza

C'0x00,0x00,0xFF' // Azul
//nomes de cores
clrRed

// Vermelho

clrYellow

// Amarelo

clrBlack

// Preto

//--- Representaes integrais


0xFFFFFF

// Branco

16777215

// Branco

0x008000

// Verde

32768

// Verde

Tambm Veja
Web Colors, ColorToString, StringToColor, Converso de Tipo (Typecasting)

2000-2015, MetaQuotes Software Corp.

70

Elementos Bsicos da Linguagem

Tipo bool
O tipo bool destinado para armazenar os valores lgicos true ou false, a representao numrica
deles 1 ou 0, respectivamente.
Exemplos:
bool a = true;
bool b = false;
bool c = 1;

A representao internal um nmero inteiro de 1 byte de tamanho. Deve-se notar que em expresses
lgicas possvel usar outros tipos reais ou inteiros ou expresses desses tipos - o compilador no ir
gerar qualquer erro. Neste caso, o valor zero ser interpretado como false (falso), e todos os outros
valores - como true (verdadeiro).
Exemplos:
int i=5;
double d=-2.5;
if(i) Print("i = ",i," e tem valor true");
else Print("i = ",i," e tem valor false");
if(d) Print("d = ",d," e tem o valor true");
else Print("d = ",d," e tem o valor false");
i=0;
if(i) Print("i = ",i," e tem o valor true");
else Print("i = ",i,"e tem o valor false");
d=0.0;
if(d) Print("d = ",d," e tem o valor true");
else Print("d = ",d," e tem o valor false");
//--- Resultados da execuo
//

i= 5 e tem o valor true

//

d= -2.5 e tem o valor true

//

i= 0 e tem o valor false

//

d= 0 e tem o valor false

Tambm Veja
Operaes Booleanas, Regras de Precedncia

2000-2015, MetaQuotes Software Corp.

71

Elementos Bsicos da Linguagem

Enumeradores
Dados do tipo enum pertencem a um determinado conjunto limitado de dados. Definindo o tipo
enumerador:
enum nome do tipo enumervel
{
lista de valores
};

A lista de valores uma lista de identificadores de constantes nomeados separados por vrgulas.
Exemplo:
enum months

// enumerao de constantes nomeados

{
January,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
};

Aps a enumerao ser declarada, um novo tipo de dados de inteiro de 4 bytes aparece. A declarao
do novo tipo de dados permite ao compilador controlar rigidamente os tipos de parmetros passados,
porque a enumerao introduz novas constantes nomeadas. No exemplo acima, a constante nomeada
January tem valor igual a 0, February - 1, December - 11.
Rule: Se um certo valor no estiver atribudo a uma constante nomeada que membro da
enumerao, seu novo valor ser formado automaticamente. Se ele o primeiro membro da
enumerao, o valor 0 ser atribudo a ele. Para todos os subseqentes membros, os valores sero
calculados baseados no valor dos membros anteriores adicionando um.
Exemplo:
enum intervals

// Enumerao de constantes nomeadas

{
month=1,

// Intervalo de um ms

two_months,

// Dois meses

quarter,

// Trs meses - trimestre

halfyear=6,

// Semestre

year=12,

// Ano - 12 meses

};

2000-2015, MetaQuotes Software Corp.

72

Elementos Bsicos da Linguagem

Observaes
Diferente do C++, o tamanho da representao interna do tipo enumerado no MQL5 sempre igual a
4 bytes. Ou seja, sizeof(months) retorna o valor 4.
Diferente do C++, uma enumerao annima no pode ser declarada no MQL5. Ou seja, um nome
nico deve ser sempre especificado aps a palavra-chave enum.
Tambm Veja
Converso de Tipo (Typecasting)

2000-2015, MetaQuotes Software Corp.

73

Elementos Bsicos da Linguagem

Tipos Reais (double, float)


Tipos Reais (ou tipos de ponto flutuante) representam valores com um parte fracionria. Na linguagem
MQL5 existem dois tipos para nmeros de ponto flutuante. O mtodo de representao dos nmeros
reais na memria do computador definido pelo padro IEEE 754 e independente de plataformas,
sistemas operacionais ou linguagens de programao.
Tipo

Tamanho em
bytes

Valor
Positivo
Mnimo

Valor Mximo

Representa
o Preciso

C++ Anlogo

float

1.175494351
e-38

3.402823466e
+38

7 significant
digits

float

double

2.225073858
5072014e308

1.7976931348
623158e+308

15 significant
digits

double

O nome double significa que a preciso destes nmeros duas vezes a preciso dos nmeros do tipo
float. Na maioria dos casos, o tipo double o tipo mais conveniente. Em muitos casos a preciso
limitada de nmeros float no suficiente. O motivo do tipo float ser ainda utilizado a economia de
memria (isto importante para arrays grandes de nmeros reais).
Constantes de ponto flutuante consistem de um parte inteira, um ponto (.) e a parte fracionria. As
partes inteira e fracionria so seqncias de algarismos decimais.
Exemplos:
double a=12.111;
double b=-956.1007;
float

c =0.0001;

float

d =16;

Existe uma forma cientfica de escrever constantes reais, frequentemente este mtodo de notao
mais compacta que a forma tradicional.
Exemplo:
double c1=1.12123515e-25;
double c2=0.000000000000000000000000112123515; // 24 zeros aps o ponto decimal
Print("1. c1 =",DoubleToString(c1,16));
// Resultado: 1. c1 = 0.0000000000000000
Print("2. c1 =",DoubleToString(c1,-16));
// Resultado: 2. c1 = 1.1212351499999999e-025
Print("3. c2 =",DoubleToString(c2,-16));
// Resultado: 3. c2 = 1.1212351499999999e-025

Deve-se lembrar que nmeros reais so armazenados em memria com preciso limitada no sistema
binrio, apesar da notao decimal ser geralmente usada. por isso que muitos nmeros que so

2000-2015, MetaQuotes Software Corp.

74

Elementos Bsicos da Linguagem


precisamente representados no sistema decimal s podem ser escritos como frao infinita no sistema
binrio.
Por exemplo, os nmeros 0.3 e 0.7 so representados no computador como fraes infinitas, enquanto
o nmero 0.25 armazenado de forma exata, porque ele representa uma potncia de dois.
Neste sentido, recomenda-se fortemente no comparar dois nmeros com igualdade, porque tal
comparao no correta.
Exemplo:
void OnStart()
{
//--double three=3.0;
double x,y,z;
x=1/three;
y=4/three;
z=5/three;
if(x+y==z) Print("1/3 + 4/3 == 5/3");
else Print("1/3 + 4/3 != 5/3");
// Resultado: 1/3 + 4/3 != 5/3
}

Se voc ainda precisa comparar com igualdade dois nmeros reais, ento voc pode fazer isso de duas
maneiras diferentes. A primeira maneira comparar a diferena entre dois nmeros com alguma
quantidade pequena que especifica a preciso da comparao.
Exemplo:
bool EqualDoubles(double d1,double d2,double epsilon)
{
if(epsilon<0) epsilon=-epsilon;
//--if(d1-d2>epsilon) return false;
if(d1-d2<-epsilon) return false;
//--return true;
}
void OnStart()
{
double d_val=0.7;
float

f_val=0.7;

if(EqualDoubles(d_val,f_val,0.000000000000001)) Print(d_val," equals ",f_val);


else Print("Diferente: d_val = ",DoubleToString(d_val,16),
"

f_val = ",DoubleToString(f_val,16));

// Resultado: Diferente: d_val= 0.7000000000000000

f_val= 0.6999999880790710

Note que o valor de epsilon no exemplo acima pode ser menor que a constante predefinida
DBL_EPSILON. O valor desta constante 2.2204460492503131e-016. A constante correspondente ao

2000-2015, MetaQuotes Software Corp.

75

Elementos Bsicos da Linguagem


tipo float FLT_EPSILON = 1.192092896e-07. O significado destes valores o seguinte: o menor
valor que satisfaz a condio1.0 + DBL_EPSILON! = 1.0 (para nmeros do tipo float 1.0 +
FLT_EPSILON! = 1.0).
A segunda maneira compara a diferena normalizada de dois nmeros reais com zero. No faz sentido
comparar a diferena de nmeros normalizados com zero, porque qualquer operao matemtica com
nmeros normalizados d um resultado no normalizado.
Exemplo:
bool CompareDoubles(double number1,double number2)
{
if(NormalizeDouble(number1-number2,8)==0) return(true);
else return(false);
}
void OnStart()
{
double d_val=0.3;
float

f_val=0.3;

if(CompareDoubles(d_val,f_val)) Print(d_val," iguais ",f_val);


else Print("Diferente: d_val = ",DoubleToString(d_val,16),
"

f_val = ",DoubleToString(f_val,16));

// Resultado: Diferente: d_val= 0.3000000000000000

f_val= 0.3000000119209290

Algumas operaes do co-processador matemtico podem resultar em um nmero real invlido, o qual
no pode ser usado em operaes matemticas e operaes de comparao, porque o resultado de
operaes com nmeros reais invlidos indefinido. Por exemplo, quando tentar calcular o arco-seno
de 2, o resultado infinito negativo.
Exemplo:
double abnormal = MathArcsin(2.0);
Print("MathArcsin(2.0) =",abnormal);
// Resulto:

MathArcsin(2.0) = -1.#IND

Alm do menos infinito, existe o mais infinito e o NaN (not a number). Para determinar se um nmero
invlido, voc pode usar MathIsValidNumber(). De acordo com o padro IEEE, eles tem uma
representao de mquina especial. Por exemplo, mais infinito para o tipo double tem a representao
binria de 0x7FF0 0000 0000 0000.
Exemplos:
struct str1
{
double d;
};
struct str2
{
long l;
};

2000-2015, MetaQuotes Software Corp.

76

Elementos Bsicos da Linguagem


//--- Comeo
str1 s1;
str2 s2;
//--s1.d=MathArcsin(2.0);

// Obtm o nmero invlido -1.#IND

s2=s1;
printf("1.

%f %I64X",s1.d,s2.l);

//--s2.l=0xFFFF000000000000;

// nmero invlido -1.#QNAN

s1=s2;
printf("2.

%f %I64X",s1.d,s2.l);

//--s2.l=0x7FF7000000000000;

// maior sem-nmero SNaN

s1=s2;
printf("3.

%f %I64X",s1.d,s2.l);

//--s2.l=0x7FF8000000000000;

// menor sem-nmero QNaN

s1=s2;
printf("4.

%f %I64X",s1.d,s2.l);

//--s2.l=0x7FFF000000000000;

// maior sem-nmero QNaN

s1=s2;
printf("5.

%f %I64X",s1.d,s2.l);

//--s2.l=0x7FF0000000000000;

// // Infinito positivo 1.#INF e menor sem-nmero SNaN

s1=s2;
printf("6.

%f %I64X",s1.d,s2.l);

//--s2.l=0xFFF0000000000000;

// Infinito negativo -1.#INF

s1=s2;
printf("7.

%f %I64X",s1.d,s2.l);

//--s2.l=0x8000000000000000;

// Zero negativo -0.0

s1=s2;
printf("8.

%f %I64X",s1.d,s2.l);

//--s2.l=0x3FE0000000000000;

// 0.5

s1=s2;
printf("9.

%f %I64X",s1.d,s2.l);

//--s2.l=0x3FF0000000000000;

// 1.0

s1=s2;
printf("10.

%f %I64X",s1.d,s2.l);

//--s2.l=0x7FEFFFFFFFFFFFFF;

// Maior nmero normalizado (MAX_DBL)

s1=s2;
printf("11.

%.16e %I64X",s1.d,s2.l);

//--s2.l=0x0010000000000000;

// Menor normalizado positivo (MIN_DBL)

2000-2015, MetaQuotes Software Corp.

77

Elementos Bsicos da Linguagem


s1=s2;
printf("12.

%.16e %.16I64X",s1.d,s2.l);

//--s1.d=0.7;

// Mostra que o nmero 0.7 uma frao sem fim

s2=s1;
printf("13.

%.16e %.16I64X",s1.d,s2.l);

/*
1.

-1.#IND00 FFF8000000000000

2.

-1.#QNAN0 FFFF000000000000

3.

1.#SNAN0 7FF7000000000000

4.

1.#QNAN0 7FF8000000000000

5.

1.#QNAN0 7FFF000000000000

6.

1.#INF00 7FF0000000000000

7.

-1.#INF00 FFF0000000000000

8.

-0.000000 8000000000000000

9.

0.500000 3FE0000000000000

10.

1.000000 3FF0000000000000

11.

1.7976931348623157e+308 7FEFFFFFFFFFFFFF

12.

2.2250738585072014e-308 0010000000000000

13.

6.9999999999999996e-001 3FE6666666666666

*/

Tambm Veja
DoubleToString, NormalizeDouble, Constantes de Tipos Numricos

2000-2015, MetaQuotes Software Corp.

78

Elementos Bsicos da Linguagem

Tipo string
O tipo string usado para armazenar cadeias de texto. Uma cadeia de texto uma seqncia de
caracteres no formato Unicode com zero no final do mesmo. Um constante string pode ser atribudo a
uma varivel string. Uma constante string uma seqncia de caracteres entre aspas duplas: "This is
a string constant".
Se for preciso incluir um aspas duplo (") em uma string, o caractere barra invertida (\) deve ser
colocada antes dele. Quaisquer constantes de caractere especial pode ser escrito em uma string, se o
caractere barra invertida (\) for digitado antes deles.
Exemplos:
string svar="Esta uma character string";
string svar2=StringSubstr(svar,0,4);
Print("Smbolo de direitos autorais\t\x00A9");
FileWrite(handle,"Esta string contm uma nova linha de smbolos \n");
string MT5path="C:\\Program Files\\MetaTrader 5";

Para tornar o cdigo fonte legvel, longas strings de constantes podem ser divididas em partes sem a
operao de adio. Durante a compilao, estas partes sero combinadas em uma string longa:
//--- Declare uma longa string constante
string HTML_head="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\""
" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
"<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
"<head>\n"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n"
"<title>Trade Operations Report</title>\n"
"</head>";
//---Sada da string constante no log
Print(HTML_head);
}

Tambm Veja
Funes de Converso, Funes de String, FileOpen, FileReadString, FileWriteString

2000-2015, MetaQuotes Software Corp.

79

Elementos Bsicos da Linguagem

Estruturas e Classes
Estruturas
Uma estrutura um conjunto de elementos de qualquer tipo (exceto o tipo void). Portanto, a estrutura
combina dados logicamente relacionados de diferentes tipos.

Declarao da Estrutura
O tipo de dados estrutura determinado pela seguinte descrio:
struct structure_name
{
elements_description
};

O nome da estrutura no pode ser usado como um identificador (nome de uma varivel ou funo).
Deve-se notar que em estruturas MQL5, os elementos seguem um ao outro diretamente, sem
alinhamento. Em C++ tal ordem feita pelo compilador usando a seguinte instruo:
#pragma pack(1)

Se voc quiser ter outro alinhamento na estrutura, use membros auxiliares, "fillers" (preenchedores)
para o tamanho certo.
Exemplo:
struct trade_settings
{
uchar

slippage;

// valor do tamanho do slippage admissvel - 1 byte

char

reserved1;

// pula 1 byte

short

reserved2;

// pula 2 bytes

int

reserved4;

// outros 4 bytes so pulados. garantir um alinhamento de 8 bytes de limite

double take;

// valores do preo de fixao de lucro

double stop;

// valor do preo de stop de proteo

};

Tal descrio de estruturas alinhadas necessrio somente para transferncia de dados para funes
de dll importadas.
Ateno: Este exemplo ilustra dados incorretamente esquematizados. Seria melhor primeiro declarar
o take e stop de grandes volumes de dados do tipo double, e ento declarar o membro slippage do
tipo uchar. Neste caso, a representao interna de dados ser sempre a mesma, independentemente
do valor especificado no #pragma pack().
Se a estrutura contm variveis do tipo string e/ou objeto de um array dinmico, o compilador atribui
um construtor implcito para tal estrutura. Este construtor redefine todos os membros de tipo string
da estrutura e corretamente inicializa objetos do array dinmico.

Estruturas Simples
Estruturas que no contm strings ou objetos de array dinmico so chamados estruturas simples;

2000-2015, MetaQuotes Software Corp.

80

Elementos Bsicos da Linguagem


variveis de tal estrutura podem ser copiados livremente de um para outro, mesmo se eles sejam
estruturas diferentes. Variveis de estruturas simples, bem como o seu array, podem ser passados
como parmetros para funes importadas de DLL.

Acesso a Membros de Estrutura


A estrutura um novo tipo de dados permitindo declarar variveis deste tipo. A estrutura pode ser
declarado somente um vez dentro de um projeto. Os membros de estrutura so acessados usando a
operao ponto (.).
Exemplo:
struct trade_settings
{
double take;

// valor do preo de fixao do lucro

double stop;

// valor do preo stop de proteo

uchar

// valor do slippage admissvel

slippage;

};
//--- cria e inicializa uma varivel do tipo trade_settings
trade_settings my_set={0.0,0.0,5};
if (input_TP>0) my_set.take=input_TP;

Classes
As classes diferem das estruturas no seguinte:
a palavra-chave class usado na declarao;
por default (padro), todos os membros da classe tm especificador de acesso private, a menos que
seja indicado o contrrio. Dados-membros da estrutura tm o tipo default de acesso como public, a
menos que seja indicado o contrrio;
objetos de classe sempre tem uma tabela de funes virtuais, mesmo que no existam funes
virtuais declaradas na classe. Estruturas no podem ter funes virtuais;
o operador new pode ser aplicado a objetos de classe; o operador this no pode ser aplicado a
estruturas;
classes pode ser herdados somente de classes, estruturas pode ser herdados somente de estruturas.
Classes e estruturas podem ter um construtor e destrutor explcitos. Se seu construtor for definido
explicitamente, a inicializao de uma varivel de estrutura ou classe usando a seqncia de
inicializao impossvel.
Exemplo:
struct trade_settings
{
double take;

// valor do preo de fixao do lucro

double stop;

// valor do preo stop de proteo

uchar

// valor do slippage admissvel

slippage;

//--- Construtor
trade_settings() { take=0.0; stop=0.0; slippage=5; }
//--- Destrutor

2000-2015, MetaQuotes Software Corp.

81

Elementos Bsicos da Linguagem


~trade_settings() { Print("Este o final"); }
};
//--- Compilador gerar uma mensagem de erro de que a inicializao impossvel
trade_settings my_set={0.0,0.0,5};

Construtores e Destrutores
Um construtor uma funo especial, que chamada automaticamente ao se criar um objeto de uma
estrutura ou classe e normalmente usado para inicializar membros da classe. Mais adiante,
falaremos sobre classes, tudo que for dito se aplica tambm a estruturas, a menos que seja indicado o
contrrio. O nome de um construtor deve corresponder ao nome da classe. O construtor no tem tipo
de retorno (voc pode especificar o tipo void).
Membros de classe definidos strings, arrays dinmicos e objetos que exigem inicializao sero
inicializados em qualquer caso,independentemente de haver ou no um construtor.
Cada classe pode ter mltiplos construtores, diferindo pelo nmero de parmetros e a lista de
inicializao. Um construtor que exige especificao de parmetros chamado um construtor
paramtrico.
Um construtor sem parmetros chamado um construtor default. Se nenhum construtor for
declarado em uma classe, o compilador cria um construtor default durante a compilao.
//+------------------------------------------------------------------+
//| Uma classe para trabalhar com uma data

//+------------------------------------------------------------------+
class MyDateClass
{
private:
int

m_year;

// Ano

int

m_month;

// Ms

int

m_day;

// Dia do ms

int

m_hour;

// Hora no dia

int

m_minute;

// Minutos

int

m_second;

// Segundos

public:
//--- Construtor default
MyDateClass(void);
//--- Construtor paramtrico
MyDateClass(int h,int m,int s);
};

Um construtor pode ser declarado na descrio da classe e ento seu corpo pode ser definido. Por
exemplo, dois construtores de MyDateClasse podem ser definidos da seguinte maneira:
//+------------------------------------------------------------------+
//| Construtor default

//+------------------------------------------------------------------+
MyDateClass::MyDateClass(void)
{

2000-2015, MetaQuotes Software Corp.

82

Elementos Bsicos da Linguagem


//--MqlDateTime mdt;
datetime t=TimeCurrent(mdt);
m_year=mdt.year;
m_month=mdt.mon;
m_day=mdt.day;
m_hour=mdt.hour;
m_minute=mdt.min;
m_second=mdt.sec;
Print(__FUNCTION__);
}
//+------------------------------------------------------------------+
//| Construtor paramtrico

//+------------------------------------------------------------------+
MyDateClass::MyDateClass(int h,int m,int s)
{
MqlDateTime mdt;
datetime t=TimeCurrent(mdt);
m_year=mdt.year;
m_month=mdt.mon;
m_day=mdt.day;
m_hour=h;
m_minute=m;
m_second=s;
Print(__FUNCTION__);
}

No construtor default, todos os membros da classes so preenchidos usando a funo TimeCurrent(),


no construtor paramtrico somente os valores de hora so preenchidos. Outros membros da classe
(m_year, m_month and m_day) sero inicializados automaticamente com a data corrente.
O construtor default tem um propsito especial ao inicializar um array de objetos de sua classe. Um
construtor, o qual todos o parmetros tm valores default, no um construtor default. Aqui est um
exemplo:
//+------------------------------------------------------------------+
//| Uma classe com um construtor default

//+------------------------------------------------------------------+
class CFoo
{
datetime

m_call_time;

// Hora da ltima chamada ao objeto

public:
//--- Um construtor com um parmetro que tem um valor default no um construtor default
CFoo(const datetime t=0){m_call_time=t;};
//--- Um construtor copiador
CFoo(const CFoo &foo){m_call_time=foo.m_call_time;};
string ToString(){return(TimeToString(m_call_time,TIME_DATE|TIME_SECONDS));};
};
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

83

Elementos Bsicos da Linguagem


//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
// CFoo foo; // Esta variao no pode ser utilizada - um construtor default no foi definido
//--- Possveis opes para criar o objeto CFoo
CFoo foo1(TimeCurrent());

// Uma explicita chamada de um construtor paramtrico

CFoo foo2();

// Uma explcita chamada de um construtor paramtrico com parmetr

CFoo foo3=D'2009.09.09';

// Uma implcita chamada de um construtor paramtrico

CFoo foo40(foo1);

// Uma explicita chamada de um construtor copiador

CFoo foo41=foo1;

// Uma implcita chamada de um construtor copiador

CFoo foo5;

// Uma explcita chamada de um construtor default (se no existir

// ento um construtor paramtrico com um valor default chamado)


//--- Possveis opes para criar o objeto CFoo
CFoo *pfoo6=new CFoo();

// Criao dinmica de um objeto e recepo de um ponteiro para el

CFoo *pfoo7=new CFoo(TimeCurrent());// Outra opes de criao dinmica de objeto


CFoo *pfoo8=GetPointer(foo1); // Agora pfoo8 aponta para o objeto foo1
CFoo *pfoo9=pfoo7;

// pfoo9 e pfoo7 apontam para o mesmo objeto

// CFoo foo_array[3];

// Esta opo no pode ser usado - um construtor default no foi e

//--- Mostra os valores de m_call_time


Print("foo1.m_call_time=",foo1.ToString());
Print("foo2.m_call_time=",foo2.ToString());
Print("foo3.m_call_time=",foo3.ToString());
Print("foo4.m_call_time=",foo4.ToString());
Print("foo5.m_call_time=",foo5.ToString());
Print("pfoo6.m_call_time=",pfoo6.ToString());
Print("pfoo7.m_call_time=",pfoo7.ToString());
Print("pfoo8.m_call_time=",pfoo8.ToString());
Print("pfoo9.m_call_time=",pfoo9.ToString());
//--- Exclui dinamicamente arrays criados
delete pfoo6;
delete pfoo7;
//delete pfoo8;

// Voc no precisa excluir pfoo8 explicitamente, j que ele aponta para o obje

//delete pfoo9;

// Voc no precisa excluir pfoo9 explicitamente, j que ele aponta para o mesm

Se voc descomentar estas strings


//CFoo foo_array[3];

// Esta variante no pode ser usada - um construtor default no est def

ou
//CFoo foo_dyn_array[];

// Esta variante no pode ser usada - um construtor default no est def

ento o compilar retorn um erro para eles "default constructor is not defined" (construtor default no
definido).
Se uma classe tiver um construtor definido pelo usurio, o construtor padro no gerado pelo
compilador. Isso significa que se um construtor paramtrico declarado em uma classe, mas um
construtor default no declarado, voc no pode declarar arrays de objetos desta classe. O
compilador retorn um erro para este script:

2000-2015, MetaQuotes Software Corp.

84

Elementos Bsicos da Linguagem


//+------------------------------------------------------------------+
//| Uma classe sem um construtor default

//+------------------------------------------------------------------+
class CFoo
{
string

m_name;

public:
CFoo(string name) { m_name=name;}
};
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Obtm o erro "default constructor is not defined" durante compilao
CFoo badFoo[5];
}

Neste exemplo, a classe CFoo tem um construtor paramtrico declarado - em tais casos, o compilador
no cria um construtor default automaticamente durante compilao. Ao mesmo tempo quando voc
declara um array de objetos, presume-se que todos os objetos devam se criados e inicializados
automaticamente. Durante a auto-inicializao de um objeto, necessrio chamar um construtor
default, mas j que o construtor default no foi explicitamente declarado e nem automaticamente
gerado pelo compilador, impossvel criar tal objeto. Por esta razo, o compilador gerou um error na
etapa de compilao.
Existe uma sintaxe especial para inicializar um objeto usando um construtor. Inicializadores de
membros de uma estrutura ou classe (construes especiais para inicializao) podem ser
especificados na lista de inicializao.
Uma lista de inicializao uma lista de inicializadores separados por vrgulas, que seguem depois do
dois pontos (:), depois da lista de parmetros de um construtor e precede o corpo (antes da abertura
de chave). H vrios requisitos:
Listas de inicializao podem ser usados somente em construtores;
Membros paternos no podem ser inicializados na lista de inicializao;
A lista de inicializao deve ser seguida por uma definio (implementao) de uma funo.
Aqui est um exemplo de vrios construtores para inicializaes de membros de uma classe.
//+------------------------------------------------------------------+
//| Uma classe para armazenar o nome de um caractere

//+------------------------------------------------------------------+
class CPerson
{
string

m_first_name;

// Primeiro nome

string

m_second_name;

// Segundo nome

public:
//--- Um construtor default vazio
CPerson() {Print(__FUNCTION__);};
//--- Um construtor paramtrico

2000-2015, MetaQuotes Software Corp.

85

Elementos Bsicos da Linguagem


CPerson(string full_name);
//--- Um construtor com uma lista de inicializao

CPerson(string surname,string name): m_second_name(surname), m_first_name(name


void PrintName(){PrintFormat("Name=%s Surname=%s",m_first_name,m_second_name);};
};
//+------------------------------------------------------------------+
//|

//+------------------------------------------------------------------+
CPerson::CPerson(string full_name)
{
int pos=StringFind(full_name," ");
if(pos>=0)
{
m_first_name=StringSubstr(full_name,0,pos);
m_second_name=StringSubstr(full_name,pos+1);
}
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Obtm o erro "default constructor is not defined"
CPerson people[5];
CPerson Tom="Tom Sawyer";

// Tom Sawyer

CPerson Huck("Huckleberry","Finn");

// Huckleberry Finn

CPerson *Pooh = new CPerson("Winnie","Pooh");

// Winnie the Pooh

//--- Valores de sida


Tom.PrintName();
Huck.PrintName();
Pooh.PrintName();
//--- Apaga um objeto criado dinamicamente
delete Pooh;
}

Neste caso, a classe CPerson tem trs construtores:


1. Um construtor default explcito, que permite a criao de um array de objetos desta classe;
2. Um construtor com um parmetro, que recebe um nome completo como um parmetro e divide com
o nome e segundo nome de acordo com o espao encontrado;
3. Um construtor com dois parmetros que contem uma lista de inicializao. Inicializadores m_second_name(surname) e m_first_name(name).
Note que a inicializao usando uma lista substitui uma atribuio. Membros individuais devem ser
inicializados como:
class_member (uma lista de expresses)

Na lista de inicializao, membros podem aparecer em qualquer ordem, mas todos os membros da

2000-2015, MetaQuotes Software Corp.

86

Elementos Bsicos da Linguagem


classe sero inicializados de acordo com a ordem de sua apario. Isso significa que no terceiro
construtor, primeiro o membro m_first_name ser inicializado, j que ele aparece primeiro, e
somente depois m_second_name ser inicializado. Isto ser tomado em conta nos casos onde a
inicializao de alguns membros da classe depende dos valores em outros membros da classe.
Se um construtor default no for declarado na base base, e ao mesmo tempo um ou mais construtores
com parmetros forem declarados, voc deve sempre chamar um dos construtores da classe base na
lista de inicializao. Ele passado com vrgula da mesma forma que membros comuns da lista e ser
chamado primeiro durante a inicializao do objeto, no importando onde ele colocado na lista de
inicializao.
//+------------------------------------------------------------------+
//| A classe base

//+------------------------------------------------------------------+
class CFoo
{
string

m_name;

public:
//--- Um construtor com uma lista de inicializao
CFoo(string name) : m_name(name) { Print(m_name);}
};
//+------------------------------------------------------------------+
//| Uma classe derivada a partir de CFoo

//+------------------------------------------------------------------+
class CBar : CFoo
{
CFoo

m_member;

// Um membro de classe um objeto do pai

public:
//--- O construtor default na lista de inicializao chama o construtor do pai
CBar(): m_member(_Symbol), CFoo("CBAR") {Print(__FUNCTION__);}
};
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
CBar bar;
}

Neste exemplo, ao criar o objeto bar, um construtor default CBar() ser chamado, no qual primeiro um
construtor do pai de CFoo chamado, e ento vem um construtor para o membro de classe
m_member.
Um destrutor uma funo especial que chamado automaticamente quando um objeto de classe
destrudo. O nome do destrutor escrito como nome de classe precedido de (~). Strings, arrays
dinmicos e objetos, exigindo desinicializao, sero desinicializados de qualquer forma, no
importando se o destrutor estiver presente ou ausente. Se existir um destrutor, essas aes sero
executadas aps chamar o destrutor.
Destrutores so sempre virtuais, no importando se eles so declarados com a palavra-chave virtual
ou no.

2000-2015, MetaQuotes Software Corp.

87

Elementos Bsicos da Linguagem

Definindo Mtodos de Classe


Mtodos de funes de classe podem ser definidos tanto dentro quanto fora da declarao de classe.
Se o mtodo definido dentro de uma classe, ento seu corpo vem logo aps a declarao do mtodo.
Exemplo:
class CTetrisShape
{
protected:
int

m_type;

int

m_xpos;

int

m_ypos;

int

m_xsize;

int

m_ysize;

int

m_prev_turn;

int

m_turn;

int

m_right_border;

public:
void

CTetrisShape();

void

SetRightBorder(int border) { m_right_border=border; }

void

SetYPos(int ypos)

{ m_ypos=ypos;

void

SetXPos(int xpos)

{ m_xpos=xpos;

int

GetYPos()

{ return(m_ypos);

int

GetXPos()

{ return(m_xpos);

int

GetYSize()

{ return(m_ysize);

int

GetXSize()

{ return(m_xsize);

int

GetType()

{ return(m_type);

void

Left()

{ m_xpos-=SHAPE_SIZE;

void

Right()

{ m_xpos+=SHAPE_SIZE;

void

Rotate()

{ m_prev_turn=m_turn; if(++m_turn>3) m_turn=0; }

virtual void

Draw()

{ return;

virtual bool

CheckDown(int& pad_array[]);

virtual bool

CheckLeft(int& side_row[]);

virtual bool

CheckRight(int& side_row[]);

};

Funes a partir de SetRightBorder(int border) at Draw() so declarados e definidos diretamente


dentro da classe CTetrisShape.
O construtor CTetrisShape() e os mtodos CheckDown(int& pad_array[]), CheckLeft(int& side_row[]) e
CheckRight(int& side_row[]) so declarados somente dentro da classe, mas ainda no definidos. As
definies destas funes sero feitas mais adiante no cdigo. A fim de definir o mtodo do lado de
fora da classe, o operador de resoluo de scope usado, o nome da classe usado como o escopo.
Exemplo:
//+------------------------------------------------------------------+
//| Construtor da classe bsica

//+------------------------------------------------------------------+
void CTetrisShape::CTetrisShape()

2000-2015, MetaQuotes Software Corp.

88

Elementos Bsicos da Linguagem


{
m_type=0;
m_ypos=0;
m_xpos=0;
m_xsize=SHAPE_SIZE;
m_ysize=SHAPE_SIZE;
m_prev_turn=0;
m_turn=0;
m_right_border=0;
}
//+--------------------------------------------------------------------+
//| Verificao da capacidade de move para baixo (para a varra e cubo) |
//+--------------------------------------------------------------------+
bool CTetrisShape::CheckDown(int& pad_array[])
{
int i,xsize=m_xsize/SHAPE_SIZE;
//--for(i=0; i<xsize; i++)
{
if(m_ypos+m_ysize>=pad_array[i]) return(false);
}
//--return(true);
}

Modificadores de Acesso Public, Protected e Private


Quando desenvolver um nova classe, recomendvel restringir o acesso do lado de fora aos membros
da classe. So usadas palavras-chave privateouprotected para esta finalidade. Neste caso, dados
escondidos podem ser acessados somente a partir de mtodos-funes da mesma classe. Se a palavrachave protected usada, dados escondidos podem ser acessados tambm a partir de mtodos de
classes herdeiras desta classe. O mesmo mtodo pode ser usado para restringir o acesso de mtodosfunes de uma classe.
Se voc precisar de acesso com abertura completa aos membros e/ou mtodos de uma classe, use a
palavra-chave public.
Exemplo:
class CTetrisField
{
private:
int

m_score;

// Contagem

int

m_ypos;

// Posio corrente das figuras

int

m_field[FIELD_HEIGHT][FIELD_WIDTH]; // Boa matriz

int

m_rows[FIELD_HEIGHT];

// Numerao das linhas boas

int

m_last_row;

// ltima linha livre

CTetrisShape
bool

*m_shape;
m_bover;

// Figura Tetris
// Fim de jogo

public:

2000-2015, MetaQuotes Software Corp.

89

Elementos Bsicos da Linguagem


void

CTetrisField() { m_shape=NULL; m_bover=false; }

void

Init();

void

Deinit();

void

Down();

void

Left();

void

Right();

void

Rotate();

void

Drop();

private:
void

NewShape();

void

CheckAndDeleteRows();

void

LabelOver();

};

Quaisquer membros de classe e mtodos declarados aps o especificador public: (e antes do prximo
especificador de acesso) ficam disponveis para qualquer referncia ao objeto da classe pelo
programa. Neste exemplo, existem os seguintes membros: funes CTetrisField(), Init(), Deinit(),
Down(), Left(), Right(), Rotate() e Drop().
Quaisquer membros de classe e mtodos declarados aps o especificador private: (e antes do prximo
especificador de acesso) ficam disponveis somente para as funes-membros desta classe.
Especificadores de acesso a elementos sempre terminam com um dois pontos (:) e podem aparecer na
definio da classe vrias vezes.
O acesso aos membros de uma classe base pode ser redefinido durante a herana nas classes
derivadas.
Tambm Veja
Programao Orientada a Objetos

2000-2015, MetaQuotes Software Corp.

90

Elementos Bsicos da Linguagem

Objeto Array Dinmico


Arrays Dinmicos
No mximo pode-se declarar arrays de 4 dimenses. Quando declarar um array dinmico (um array
sem valor especificado no primeiro par de colchetes), o compilador automaticamente cria uma
varivel da estrutura acima (um objeto array dinmico) e fornece um cdigo para a correta
inicializao.
Arrays dinmicos so automaticamente liberados quando ficam alm da rea de visibilidade do bloco
em que eles foram declarados.
Exemplo:
double matrix[][10][20]; // array dinmico de 3 dimenses
ArrayResize(matrix,5);

// define o tamanha da primeira dimenso

Arrays Estticos
Quando todas as dimenses significantes do array so explicitamente especificadas, o compilador praloca o tamanho de memria necessrio. Tal array chamado esttico. Contudo, o compilador aloca
memria adicional para o array dinmico, que associado ao buffer esttico pr-alocado (parte da
memria para armazenar o array).
A criao de um objeto array dinmico devido a possvel necessidade de passar este array esttico
como parmetro para alguma funo.
Exemplos:
double stat_array[5]; // array esttico de uma dimenso
some_function(stat_array);
...
bool some_function(double& array[])
{
if(ArrayResize(array,100)<0) return(false);
...
return(true);
}

Arrays em Estruturas
Quando um array esttico declarado como membro de uma estrutura, um objeto array dinmico no
criado. Isso assim para assegurar compatibilidade com estruturas de dados usados em API's do
Windows.
Contudo, arrays estticos que so declarados como membros de estruturas, podem tambm serem
passados para funes em MQL5. Neste caso, quando passar o parmetro um objeto temporrio de um
array dinmico, conectado com o array esttico - membro da estrutura, ser criado.
Tambm Veja
Funes com Arrays, Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis,
Criando e Excluindo Objetos
2000-2015, MetaQuotes Software Corp.

91

Elementos Bsicos da Linguagem

Converso de Tipo (Typecasting)


Converso de Tipos Numricos
Frequentemente surge a necessidade de converter um tipo numrico em outro. Nem todos os tipos
numricos podem ser convertidos em outro. Aqui est o esquema de converso permitida:

Linhas slidas com setas indicam mudanas que so realizadas quase sem nenhuma perda de
informao. Ao invs do tipo char, o tipo bool pode ser usado (ambos ocupam 1 byte de memria), ao
invs do tipo int, o tipo color pode ser usado (4 bytes), ao invs do tipo long, datetime pode ser usado
(ocupa 8 bytes). As quatro linhas cinzentas tracejadas, tambm com setas, denotam converso em
que a perda de preciso pode ocorrer. Por exemplo, o nmero de algarismos em um inteiro igual a
123456789 (int) maior que o nmero de algarismos que podem ser representados por um float.
int n=123456789;
float f=n;

// o contedo de f igual a 1.234567892E8

Print("n = ",n,"

f = ",f);

// resultado n= 123456789

f= 123456792.00000

O nmero convertido em float tem a mesma ordem de grandeza, mas menos preciso. Converses,
no sentido contrrio das setas pretas, podem ser realizadas com possvel perda de dados. Converses
entre char e uchar, short e ushort, int e uint, long e ulong (converses para ambos os lados), podem
levar a perda de dados.
Como resultado da converso de valores de ponto flutuante para o tipo inteiro, a parte fracionria
sempre excluda. Se voc quiser arredondar um float para o inteiro mais prximo (que em muitos
casos mais til), voc deve usar MathRound().
Exemplo:
//--- Acelerao gravitacional
double g=9.8;
double round_g=(int)g;
double math_round_g=MathRound(g);
Print("round_g = ",round_g);
Print("math_round_g = ",math_round_g);
/*
Resultado:
round_g = 9
math_round_g = 10
*/

2000-2015, MetaQuotes Software Corp.

92

Elementos Bsicos da Linguagem


Se dois valores so combinados por um operador binrio, antes da execuo da operao, o operando
do tipo mais baixo convertido para o do tipo mais alto, em concordncia com a prioridade dada no
esquema abaixo:

Os tipos de dados char, uchar, short, e ushort incondicionalmente so convertido para o tipo int.
Exemplos:
char

c1=3;

//--- Primeiro exemplo


double d2=c1/2+0.3;
Print("c1/2 + 0.3 = ",d2);
// Resultado:

c1/2+0.3 = 1.3

//--- Segundo exemplo


d2=c1/2.0+0.3;
Print("c1/2.0 + 0.3 = ",d2);
// Resultado:

c1/2.0+0.3 = 1.8

A expresso calculada consiste de duas operaes. No primeiro exemplo, a varivel c1 do tipo char
convertida para uma varivel temporria do tipo int, porque o segundo operando da operao de
diviso, a constante 2, do tipo mais alto, int. Como resultado da diviso de inteiros, 3/2, ns
obtemos o valor 1, que do tipo inteiro.
Na segunda operao do primeiro exemplo, o segundo operando a constante 0.3, que do tipo
double, ento o resultado da primeira operao convertido em uma varivel temporria para o tipo
double com o valor 1.0.
No segundo exemplo, a varivel c1 do tipo char convertida para uma varivel temporria do tipo
double, porque o segundo operando da operao de diviso, a constante 2.0, do tipo double;
nenhuma converso adicional feita.

Converso de Tipos Numricos


Nas expresses da linguagem MQL5 tanto converso explicita quanto implcita podem ser usadas. A
converso explcita escrita da seguinte forma:
var_1 = (type)var_2;

Uma expresso ou resultado de execuo de uma funo podem ficar no lugar da varivel var_2. A
notao funcional de uma converso explcita tambm possvel:
var_1 = type(var_2);

Vamos considerar uma converso explcita com base no primeiro exemplo.


//--- Terceiro exemplo

2000-2015, MetaQuotes Software Corp.

93

Elementos Bsicos da Linguagem


double d2=(double)c1/2+0.3;
Print("(double)c1/2 + 0.3 = ",d2);
// Resultado:

(double)c1/2+0.3 = 1.80000000

Antes da operao de diviso ser realizada, a varivel c1 explicitamente convertida para o tipo
double. Agora a constante inteira 2 convertida no valor 2.0 do tipo double, pois o resultado da
converso do primeiro operando assumiu o tipo double. De fato, a converso explcita uma operao
unria.
Alm disso, quanto tentar converter tipos, o resultado pode ir alm da faixa permitida. Neste caso, o
truncamento ocorre. Por exemplo:
char c;
uchar u;
c=400;
u=400;
Print("c = ",c); // Resultado c=-112
Print("u = ",u); // Resultado u=144

Antes de operaes (exceto operaes de atribuio) serem realizadas, os dados so convertidos para
o tipo de mxima prioridade. Antes de operaes de atribuio serem realizadas, os dados so
convertidos para o tipo destino.
Exemplos:
int

i=1/2;

Print("i = 1/2

// nenhuma converso, o resultado 0


",i);

int k=1/2.0;
Print("k = 1/2

// a expresso convertida para o tipo double,


",k);

double d=1.0/2.0;

// ento convertido para o tipo destino, o resultado 0

// nenhuma converso de tipos, o resultado 0.5

Print("d = 1/2.0; ",d);


double e=1/2.0;

// a expresso convertida para o tipo double,

Print("e = 1/2.0; ",e);// que o mesmo do tipo destino, o resultado 0.5


double x=1/2;

// a expresso do tipo inteiro convertido para o tipo destino double,

Print("x = 1/2; ",x);

// o resultado 0.0

Ao converter o tipo long/ulong em double, a preciso pode ser perdida caso o valor inteiro seja maior
do que 223372036854774784 ou menor do que -9223372036854774784.
void OnStart()
{
long l_max=LONG_MAX;
long l_min=LONG_MIN+1;
//--- definir o valor inteiro maior, que no perde a preciso ao ser lanado para double
while(l_max!=long((double)l_max))
l_max--;
//--- definir o valor inteiro menor, que no perde a preciso ao ser lanado para double
while(l_min!=long((double)l_min))

2000-2015, MetaQuotes Software Corp.

94

Elementos Bsicos da Linguagem


l_min++;
//--- resulta no intervalo encontrado para valores inteiro
PrintFormat("Ao converter um valor inteiro para double, ele deve ser "
"dentro [%I64d, %I64d] do intervalo",l_min,l_max);
//--- agora, vamos ver o que acontece se o valor fica fora deste intervalo
PrintFormat("l_max+1=%I64d, double(l_max+1)=%.f, ulong(double(l_max+1))=%I64d",
l_max+1,double(l_max+1),long(double(l_max+1)));
PrintFormat("l_min-1=%I64d, double(l_min-1)=%.f, ulong(double(l_min-1))=%I64d",
l_min-1,double(l_min-1),long(double(l_min-1)));
//--- receber o seguinte resultado

// Ao converter um valor integer para double, ele deve estar dentro do intervalo [-9223372036854774

// l_max+1=9223372036854774785, double(l_max+1)=9223372036854774800, ulong(double(l_max+1))=9223372

// l_min-1=-9223372036854774785, double(l_min-1)=-9223372036854774800, ulong(double(l_min-1))=-9223


}

Converso para o tipo String


O tipo string tem a mais alta prioridade entre os tipos simples. Portanto, se um dos operandos de uma
operao do tipo string, o segundo operando ser convertido para uma string automaticamente.
Observe que para uma string, uma nica operao de dois-lugares didicos de adio possvel. A
converso explicita de string para qualquer tipo numrico permitida.
Exemplos:
string s1=1.0/8;

// a expresso convertida para o tipo double,

Print("s1 = 1.0/8; ",s1);

//

da convertida para o tipo string,

// resultado "0.12500000" (uma string contm 10 caracteres)


string s2=NULL;

// string desinicializao

Print("s2 = NULL; ",s2);

// o resultado uma string vazia

string s3="Ticket N"+12345; // a expresso convertida para o tipo string


Print("s3 = \"Ticket N\"+12345",s3);
string str1="true";
string str2="0,255,0";
string str3="2009.06.01";
string str4="1.2345e2";
Print(bool(str1));
Print(color(str2));
Print(datetime(str3));
Print(double(str4));

Converso de Tipos Estrutura Simples


Dados do tipo estrutura simples podem ser atribudos um ao outro desde que todos os membros de
ambas as estruturas forem de tipos numricos. Neste caso ambos os operandos da operao de

2000-2015, MetaQuotes Software Corp.

95

Elementos Bsicos da Linguagem


atribuio (lado esquerdo e direito) devem ser do tipo estrutura. A converso membro a membro no
realizada, uma simples cpia feita. Se as estruturas so de tamanhos diferentes, o nmero de
bytes do menor tamanho copiado. Portanto, a ausncia do unio (union) em MQL5 compensada.
Exemplos:
struct str1
{
double

d;

};
//--struct str2
{
long

l;

};
//--struct str3
{
int

low_part;

int

high_part;

};
//--struct str4
{
string

s;

};
//+------------------------------------------------------------------+
void OnStart()
{
str1 s1;
str2 s2;
str3 s3;
str4 s4;
//--s1.d=MathArcsin(2.0);

// obtm o nmero invlido -1. # IND

s2=s1;
printf("1.

%f

%I64X",s1.d,s2.l);

//--s3=s2;
printf("2.

parte alta de long %.8X

parte baixa de long %.8X",

s3.high_part,s3.low_part);
//--s4.s="alguma string constante";
s3=s4;
printf("3.

buffer len %d

endereo da string constante 0x%.8X",

s3.low_part,s3.high_part);
}

Outro exemplo ilustra o mtodo de organizar uma funo customizada para receber a representao

2000-2015, MetaQuotes Software Corp.

96

Elementos Bsicos da Linguagem


RGB (red, green, blue) a partir do tipo color. Crie duas estruturas de mesmo tamanho mas de
contedos diferentes. Por convenincia, vamos adicionar uma funo retornando a representao RGB
de uma cor como string.
#property script_show_inputs
input color

testColor=clrBlue;// defina cor para testar

//--- estrutura para representar cor como RGB


struct RGB
{
uchar

blue;

// componente azul da cor

uchar

green;

// componente verde da color

uchar

red;

// componente vermelho da corr

uchar

empty;

// este byte no usado

string

toString();

// funo para receber uma string

};
//--- funo para exibir cor como uma string
string RGB::toString(void)
{
string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
return out;
}
//--- estrutura para armazenar o tipo de cor incorporada (built-in)
struct builtColor
{
color

c;

};
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- uma varivel para armazenar em RGB
RGB colorRGB;
//--- uma varivel para armazenar o tipo color
builtColor test;
test.c=testColor;
//--- convertendo duas estruturas por cpia de contedo
colorRGB=test;
Print("color ",test.c,"=",colorRGB.toString());
//--}

Converso de Ponteiros de Classe Base para Ponteiros de Classes Derivadas


Objetos de classe derivada podem ser vistos como objetos da correspondente classe base. Isso leva a
algumas conseqncias interessantes. Por exemplo, apesar do fato que objetos de diferentes classes,
gerados a partir de uma nica classe base, poderem diferir significativamente um do outro, podemos

2000-2015, MetaQuotes Software Corp.

97

Elementos Bsicos da Linguagem


criar uma lista ligada (List) com eles, j que vemos eles como objetos do tipo base. Mas o inverso no
verdade: objetos da classe base no so automaticamente objetos da classe derivada.
Voc pode usar a converso explicita para converter ponteiros da classe base para ponteiros da classe
derivada. Mas voc deve estar totalmente confiante na admissibilidade de tal transformao, porque
seno um erro crtico de execuo ocorrer e o programa MQL5 ser interrompido.
Tambm Veja
Tipos de Dados

2000-2015, MetaQuotes Software Corp.

98

Elementos Bsicos da Linguagem

Tipo void e constante NULL


Sintaticamente o tipo void um tipo fundamental, juntamente com os tipos char, uchar, bool, short,
ushort, int, uint, color, long, ulong, datetime, float, double e string. Este tipo usado tanto para
indicar que a funo no retorna nenhum valor ou, como um parmetro de funo, para indicar
ausncia de parmetros.
A predefinida varivel constante NULL do tipo void. Ele pode ser atribudo a variveis de qualquer
outro tipo fundamental sem converso. A comparao de variveis de tipo fundamental com o valor
NULL permitida..
Exemplo:
//--- Se a string no inicializada, ento atribua nosso valor predefinido a ela
if(some_string==NULL) some_string="empty";

Tambm NULL pode ser comparado com ponteiros de objetos criados com o operador new.
Tambm Veja
Variveis, Funes

2000-2015, MetaQuotes Software Corp.

99

Elementos Bsicos da Linguagem

Ponteiros de Objeto
Em MQL5, existe a possibilidade de dinamicamente criar objetos de tipo complexo. Isso feito por
meio do operador new, que retorno um descritor do objeto criado. Descritores tm 8 bytes de
tamanho. Sintaticamente, descritores de objeto em MQL5 so similares aos ponteiros em C++.
Exemplos:
MyObject* hobject= new MyObject();

In contrast to C++, the hobject variable from example above is not a pointer to memory, but rather an
object descriptor. Furthermore, in MQL5 all objects in function parameters must be passed by
reference. Below are examples of passing objects as function parameters:
class Foo
{
public:
string

m_name;

int

m_id;

static int

s_counter;

//--- constructors and desctructors


Foo(void){Setup("noname");};
Foo(string name){Setup(name);};
~Foo(void){};
//--- initializes object of type Foo
void

Setup(string name)

{
m_name=name;
s_counter++;
m_id=s_counter;
}
};
int Foo::s_counter=0;
//+------------------------------------------------------------------+
//| Script program start function

//+------------------------------------------------------------------+
void OnStart()
{
//--- declare an object as variable with its automatic creation
Foo foo1;
//--- variant of passing an object by reference
PrintObject(foo1);
//--- declare a pointer to an object and create it using the 'new' operator
Foo *foo2=new Foo("foo2");
//--- variant of passing a pointer to an object by reference
PrintObject(foo2); // pointer to an object is converted automatically by compiler
//--- declare an array of objects of type Foo
Foo foo_objects[5];

2000-2015, MetaQuotes Software Corp.

100

Elementos Bsicos da Linguagem


//--- variant of passing an array of objects
PrintObjectsArray(foo_objects); // separate function for passing an array of objects
//--- declare an array of pointers to objects of type Foo
Foo *foo_pointers[5];
for(int i=0;i<5;i++)
{
foo_pointers[i]=new Foo("foo_pointer");
}
//--- variant of passing an array of pointers
PrintPointersArray(foo_pointers); // separate function for passing an array of pointers
//--- it is obligatory to delete objects created as pointers before termination
delete(foo2);
//--- delete array of pointers
int size=ArraySize(foo_pointers);
for(int i=0;i<5;i++)
delete(foo_pointers[i]);
//--}
//+------------------------------------------------------------------+
//| Objects are always passed by reference

//+------------------------------------------------------------------+
void PrintObject(Foo &object)
{
Print(__FUNCTION__,": ",object.m_id," Object name=",object.m_name);
}
//+------------------------------------------------------------------+
//| Passing an array of objects

//+------------------------------------------------------------------+
void PrintObjectsArray(Foo &objects[])
{
int size=ArraySize(objects);
for(int i=0;i<size;i++)
{
PrintObject(objects[i]);
}
}
//+------------------------------------------------------------------+
//| Passing an array of pointers to object

//+------------------------------------------------------------------+
void PrintPointersArray(Foo* &objects[])
{
int size=ArraySize(objects);
for(int i=0;i<size;i++)
{
PrintObject(objects[i]);
}
}

2000-2015, MetaQuotes Software Corp.

101

Elementos Bsicos da Linguagem


//+------------------------------------------------------------------+

Tambm Veja
Variveis, Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e
Excluindo Objetos

2000-2015, MetaQuotes Software Corp.

102

Elementos Bsicos da Linguagem

Referncia, Modificador & e Palavra-chave this


Passando Parmetros por Referncia
Em MQL5, parmetros de tipos simples podem ser passados tanto por valor como por referncia,
enquanto que parmetros de tipos compostos so sempre passados por referncia. Para informar ao
compilador que um parmetro deve ser passado por referncia, o caractere "e comercial" &
adicionado antes do nome do parmetro.
Passar um parmetro por referncia significa passar o endereo da varivel, por isso que todas as
mudanas no parmetro que passado por referncia ser imediatamente refletida na varivel
origem. Usando parmetros passados por referncia, pode-se implementar o retorno de vrios
resultados de uma funo ao mesmo tempo. A fim de evitar alterao de um parmetro passado por
referncia, use o modificador const.
Assim, se o parmetro de entrada de uma funo for um array, um objeto de classe ou estrutura, o
smbolo '&' colocado no cabealho da funo aps o tipo da varivel e antes de seu nome.
Exemplo
class CDemoClass
{
private:
double

m_array[];

public:
void

setArray(double &array[]);

};
//+------------------------------------------------------------------+
//| Preenchendo o array

//+------------------------------------------------------------------+
void

CDemoClass::setArray(double &array[])

{
if(ArraySize(array)>0)
{
ArrayResize(m_array,ArraySize(array));
ArrayCopy(m_array, array);
}
}

No exemplo acima, a classe CDemoClass declarada, e contm o membro array private - m_array[] de
tipo double. A funo setArray() declarada, e o parmetro array[] passado por referncia. Se o
cabealho da funo no contm a indicao de passar por referncia, isto , no contm o caractere
"e comercial" (&), uma mensagem de erro ser gerada na tentativa de compilar tal cdigo.
Apesar do fato de que um array passado por referncia, no se pode atribuir um array ao outro. Ns
precisamos realizar a cpia elemento a elemento de contedo do array origem para o array destino. A
presena de & nas descries de funo uma condio obrigatria para array e estruturas quando
passado como parmetro de funo.

Palavra-chave this
2000-2015, MetaQuotes Software Corp.

103

Elementos Bsicos da Linguagem


Uma varivel de tipo de classe (objeto) pode ser passado tanto por referncia como por ponteiro.
Assim como referncia, o ponteiro permite ter acesso a um objeto. Aps o ponteiro de objeto ser
declarado, o operador new deve ser aplicado nele para cri-lo e inicializ-lo.
A palavra reservada this destinado para obter a referncia do objeto para si mesmo, que fica
disponvel dentro de mtodos de classe e estrutura. this sempre referencia o objeto, dentro do
mtodo em que ele usado, e a expresso GetPointer(this) retorna o ponteiro do objeto, cujo
membro a funo na qual a chamada ao GetPointer() realizado. Em funes MQL5 no se pode
retornar objetos, mas eles podem retornar ponteiro de objeto.
Assim, se precisamos de uma funo para retornar um objeto, ns podemos retornar o ponteiro deste
objeto na forma de GetPointer(this). Vamos adicionar a funo getDemoClass() que retorna o ponteiro
do objeto para este classe, na descrio de CDemoClass.
class CDemoClass
{
private:
double

m_array[];

public:
void
CDemoClass

setArray(double &array[]);
*getDemoClass();

};
//+------------------------------------------------------------------+
//| Preenchendo o array

//+------------------------------------------------------------------+
void

CDemoClass::setArray(double &array[])

{
if(ArraySize(array)>0)
{
ArrayResize(m_array,ArraySize(array));
ArrayCopy(m_array,array);
}
}
//+------------------------------------------------------------------+
//| Retorna seu prprio ponteiro

//+------------------------------------------------------------------+
CDemoClass *CDemoClass::getDemoClass(void)
{
return(GetPointer(this));
}

Estruturas no tm ponteiros, os operadores newedeleteno podem ser aplicados a eles,


GetPointer(this) no pode ser usado.
Tambm Veja
Ponteiros de Objetos, Criando e Excluindo Objetos, Visibilidade Escopo e Tempo de Vida de
Variveis

2000-2015, MetaQuotes Software Corp.

104

Elementos Bsicos da Linguagem

Operaes e Expresses
Alguns caracteres e seqncias de caractere so de uma importncia especial. Existem os chamados
smbolos de operao, por exemplo:
+ - * / %

Smbolos de operaes aritmticas

&& ||

Smbolos de operaes lgicas

= += *=

Caracteres de operador de atribuio

Os smbolos de operao so usados em expresses e tm sentido quando operandos apropriados so


dados a eles. Sinais de pontuao so enfatizados, da mesma forma. Existem parnteses, chaves,
vrgula, dois pontos, e ponto e vrgula.
Smbolos de operao, sinais de pontuao, e espaos so usados para separar elementos de
linguagem uns dos outros.
Esta seo contm a descrio dos seguintes tpicos:
Expresses
Operaes Aritmticas
Operaes de Atribuio
Operaes de Relao
Operaes Booleanas
Operaes Binrias
Outras Operaes
Regras de Precedncia

2000-2015, MetaQuotes Software Corp.

105

Elementos Bsicos da Linguagem

Expresses
Uma expresso consiste de um ou mais operandos e smbolos de operao. Uma expresso pode ser
escrita em vrias linhas.
Exemplos:
a++; b = 10;
//---

// vrias expresses esto localizados em uma linha

uma expresso est dividida em vrias linhas

x = (y * z) /
(w + 2) + 127;

Uma expresso que termina com um ponto e vrgula (;) um operador.


Tambm Veja
Regras de Precedncia

2000-2015, MetaQuotes Software Corp.

106

Elementos Bsicos da Linguagem

Operaes Aritmticas
Operaes aritmticas incluem operaes aditivas e multiplicativas:
Soma de variveis

i = j + 2;

Diferena de variveis

i = j - 3;

Mudana de sinal

x = - x;

Produto de variveis

z = 3 * x;

Quociente de diviso

i = j / 5;

Resto de diviso

minutes = time % 60;

Adicionando 1 ao valor da varivel

i++;

Adicionando 1 ao valor da varivel

++i;

Subtraindo 1 ao valor da varivel

k--;

Subtraindo 1 do valor da varivel

--k;

Operaes de incremento e decremento so aplicadas somente a variveis, elas no podem ser


aplicadas a constantes. O prefixo de incremento (++i) e decremento (--k) so aplicados varivel
imediatamente antes desta varivel ser usada em uma expresso.
Ps-incremento (a++) e ps-decremento (k--) so aplicados varivel imediatamente depois da
varivel ser usado em uma expresso.
Observao importante
int i=5;
int k = i++ + ++i;

Problemas computacionais podem ocorrer na movimentao da expresso acima de um ambiente de


programao para outro (por exemplo, do Borland C++ para MQL5). Geralmente, a ordem de
computao depende da implementao do compilador. Na prtica, existem duas formas de
implementar o ps-decremento (ps-incremento):
1. O ps-decremento (ps-incremento) aplicado varivel depois de se calcular a expresso toda.
2. O ps-decremento (ps-incremento) aplicado varivel imediatamente na operao.
Atualmente, a primeira forma de calcular o ps-decremento (ps-incremento) est implementado no
MQL5. Mas mesmo conhecendo esta peculiaridade, no se recomenda experincias com seu uso.
Exemplos:
int a=3;
a++;

// expresso vlida

int b=(a++)*3;

// expresso invlida

Tambm Veja
Regras de Precedncia

2000-2015, MetaQuotes Software Corp.

107

Elementos Bsicos da Linguagem

Operaes de Atribuio
O valor da expresso que inclui uma dada operao o valor a esquerda do operando aps a
atribuio:
Atribuindo o valor x para a varivel y

y = x;

As seguintes operaes unem operaes arimticas e binrias com operaes de atribuio:


Adicionando x varivel y

y += x;

Subtraindo x da varivel y

y -= x;

Multiplicando a varivel y por x

y *= x;

Dividindo a varivel y por x

y /= x;

Resto da diviso da varivel y por x

y %= x;

Operao AND bit a bit de representaes binrias de y e x

y &= x;

Operao AND bit a bit de representaes binrias de y e x

y &= x;

Operao AND bit a bit de representaes binrias de y e x

y &= x;

Operao OR bit a bit de representaes binrias de y e x

y |= x;

Operao OR Exclusivo bit a bit de representaes binrias de y e x

y ^= x;

Operaes bit a bit podem ser aplicados somente em inteiros. Ao realizar a operao de deslocamento
lgico da representao de y para direita/esquerda em x bits, os 5 menores dgitos binrios do valor
de x so usados, os bits maiores so descartados, isto , o deslocamento feito para 0-31 bits.
Pela operao %= (resto da diviso de y por x), o sinal resultante igual ao sinal do nmero dividido.
O operador de atribuio pode ser usado vrias vezes em uma expresso. Neste caso o processamento
da expresso realizado da esquerda para direta:
y=x=3;

Primeiro, a varivel x ser atribuda o valor 3, ento a varivel y ser atribuda o valor de x, isto ,
tambm 3.
Tambm Veja
Regras de Precedncia

2000-2015, MetaQuotes Software Corp.

108

Elementos Bsicos da Linguagem

Operaes de Relao
A booleana FALSE representada pelo valor zero inteiro, enquanto que a booleana TRUE
representada por qualquer valor no inteiro.
O valor de expresses contendo operaes de relao ou operaes lgicas FALSE (0) ou TRUE (1).
True se a igual a b

a == b;

True se a no igual a b

a != b;

True se a menor que b

a < b;

True se a no menor que b

a > b;

True se a menor ou igual a b

a <= b;

True se a maior ou igual a b

a >= b;

A igualdade de dois nmeros reais no pode ser comparada. Na maioria dos casos, dois nmeros
aparentemente idnticos podem ser desiguais por causa da diferena de valores na 15 casa decimal. A
fim de comparar corretamente dois nmeros reais, compare a diferena normalizada destes nmeros
com zero.
Exemplo:
bool CompareDoubles(double number1,double number2)
{
if(NormalizeDouble(number1-number2,8)==0) return(true);
else return(false);
}
void OnStart()
{
double first=0.3;
double second=3.0;
double third=second-2.7;
if(first!=third)
{
if(CompareDoubles(first,third))
printf("%.16f e %.16f so iguais",first,third);
}
}
// Resultado: 0.3000000000000000

0.2999999999999998

so iguais

Tambm Veja
Regras de Precedncia

2000-2015, MetaQuotes Software Corp.

109

Elementos Bsicos da Linguagem

Operaes Booleanas
Negao Lgica NOT (!)
Operando da negao lgia (!) deve ser de tipo aritmtico. O resultado TRUE (1), se o valor do
operando FALSE (0); e igual a FALSE (0), se o operando difere de FALSE (0).
if(!a) Print("no 'a'");

Operao lgica OR (||)


Operao OR lgico (||) entre valores x e y. O valor da expresso TRUE (1), se os valores x ou y so
verdadeiros (not null). Seno - FALSE (0).
if(x<0 || x>=max_bars) Print("fora da faixa");

Operao lgica AND (&&)


Operao lgica AND (&&) entre valores de x e y. O valor da expresso TRUE (1), se os valores de x
e y so verdadeiros (not null). Seno - FALSE (0).

Estimao breve de Operaes Booleanas


O esquema do chamado "brief estimate" (estimao breve) aplicado a operaes booleanas, isto , o
clculo da expresso finalizado quando o resultado da expresso pode ser precisamente estimado.
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- o primeiro exemplo de estimao breve
if(func_false() && func_true())
{
Print("Operao &&: Voc nunca ver esta expresso");
}
else
{

Print("Operao &&: Resultado da primeira expresso falso, ento a segunda no calculada"


}
//--- o segundo exemplo da estimao breve
if(!func_false() || !func_true())
{

Print("Operao ||: Resultado da primeira expresso verdadeiro,ento a segunda no calcul


}
else
{
Print("Operao ||: Voc nunca ver esta expresso");
}
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

110

Elementos Bsicos da Linguagem


//| a funo sempre retorna false

//+------------------------------------------------------------------+
bool func_false()
{
Print("Funo func_false()");
return(false);
}
//+------------------------------------------------------------------+
//| a funo sempre retorna true

//+------------------------------------------------------------------+
bool func_true()
{
Print("Funo func_true()");
return(true);
}

Tambm Veja
Regras de Precedncia

2000-2015, MetaQuotes Software Corp.

111

Elementos Bsicos da Linguagem

Operaes Binrias
Complementar de Um
Complementar do valor da varivel at um. O valor da expresso contm 1 em todos os dgitos onde o
valor da varivel contem 0, e 0 em todos os demais dgitos onde a varivel contem 1.
b = ~n;

Exemplo:
char a='a',b;
b=~a;
Print("a = ",a, "

b = ",b);

// O resultado ser:
// a = 97

b = -98

Deslocamento para Direita


A representao binria de x deslocada para direita em y dgitos. Se o valor a ser deslocado de um
tipo sem sinal (unsigned type), o deslocamento lgico para a direita feito, isto , os bits do lado
esquerdo liberados sero preenchido com zeros.
Se o valor a ser desloca de um tipo com sinal (signed type), o deslocamento aritmtico para direita
feito, isto , os dgitos do lado esquerdo liberados sero preenchidos com o valor do bit de sinal (sign
bit) (se o nmero positivo, o valor do bit de sinal 0, se o nmero negativo, o valor do bit de sinal
1).
x = x >> y;

Exemplo:
char a='a',b='b';
Print("Antes:

a = ",a, "

b = ",b);

//--- deslocamento para direita


b=a>>1;
Print("Aps:

a = ",a, "

b = ",b);

// O resultado ser:
// Antes:

a = 97

b = 98

// Aps:

a = 97

b = 48

Deslocamento para Esquerda


A representao binria de x deslocada para esquerda em y dgitos, os dgitos do lado direito
liberados so preenchidos com zero.
x = x << y;

Exemplo:
char a='a',b='b';
Print("Antes:

a = ",a, "

b = ",b);

//--- deslocamento para a esquerda

2000-2015, MetaQuotes Software Corp.

112

Elementos Bsicos da Linguagem


b=a<<1;
Print("Aps:

a = ",a, "

b = ",b);

// O resultado ser:
// Antes:

a = 97

b = 98

// Aps:

a = 97

b = -62

No recomendvel deslocar um nmero maior ou igual de bits que o comprimento da varivel


deslocada, porque o resultado de tal operao indefinido.

Operao AND bit a bit


A operao AND bit a bit em representaes binrias de x e y. O valor da expresso contem 1 (TRUE)
em todos os dgitos onde ambos x e y contm no-zero, e contem 0 (FALSE) em todos os demais
dgitos.
b = ((x & y) != 0);

Exemplo:
char a='a',b='b';
//--- operao AND
char c=a&b;
Print("a = ",a,"

b = ",b);

Print("a & b = ",c);


// O resultado ser:
// a = 97

b = 98

// a & b = 96

Operao OR bit a bit


A operao OR bit a bit de representaes binrias de x e y. O valor da expresso contem 1 em todos
os dgitos onde x ou y no contm 0, e contm 0 em todos os demais dgitos.
b = x | y;

Exemplo:
char a='a',b='b';
//--- operao OR
char c=a|b;
Print("a = ",a,"

b = ",b);

Print("a | b = ",c);
// O resultado ser:
// a = 97

b = 98

// a | b = 99

Operao OR Exclusivo bit a bit


A operao OR exclusivo bit a bit (eXclusive OR) de representaes binrias de x e y. O valor da
expresso contem 1 em todos os dgitos onde x e y tem valores binrios diferentes, e contm 0 em
todos os demais dgitos.
b = x ^ y;

2000-2015, MetaQuotes Software Corp.

113

Elementos Bsicos da Linguagem


Exemplo:
char a='a', b='b';
//--- operao OR Exclusivo
char c=a^b;
Print("a = ",a,"

b = ",b);

Print("a ^ b = ",c);
// O resultado ser:
// a = 97

b = 98

// a ^ b = 3

Operaes bit a bit so realizadas somente com inteiros.


Tambm Veja
Regras de Precedncia

2000-2015, MetaQuotes Software Corp.

114

Elementos Bsicos da Linguagem

Outras Operaes
Indexao ( [] )
Ao enderear o i-simo elemento de um array, o valor da expresso o valor da varivel com o
nmero serial i.
Exemplo:
array[i] = 3; // Atribui o valor de 3 ao i-simo elemento do array.

Somente um inteiro pode ser ndice de um array. So permitidos arrays com 4 dimenses ou menos.
Cada medida indexada de 0 ao tamanho da medida - 1. Em particular, para um array de uma
dimenso consistindo de 50 elementos, a referncia ao primeiro elemento se assemelhar a array[0],
e a referncia ao ltimo elemento ser array[49].
Ao enderear alm do array, o subsistema em execuo gerar um erro crtico, e o programa ser
interrompido.

Chamando Funo com argumentos x1, x2 ,..., xn


Cada argumento pode representar uma constante, varivel, ou expresso do correspondente tipo. Os
argumentos passados so separados por vrgula e devem estar dentro dos parnteses, o parntese de
abertura deve seguir o nome da funo chamada.
O valor da expresso o valor retornado pela funo. Se o valor retornado do do tipo void, a
chamada da funo no pode ser colocada a direita de um operador de atribuio. Por favor, esteja
certo de que as expresses x1, ..., xn so executadas exatamente neste ordem.
Exemplo:
int length=1000000;
string a="a",b="b",c;
//--- Outras Operaes
int start=GetTickCount(),stop;
long i;
for(i=0;i<length;i++)
{
c=a+b;
}
stop=GetTickCount();
Print("tempo para 'c = a + b' = ",(stop-start)," milissegundos, i = ",i);

Operao Vrgula ( , )
Expresses separadas por vrgulas so executadas da esquerda para direita. Todos os efeitos
colaterais do clculo da expresso a esquerda podem aparecer antes da expresso a direita ser
calculada. O tipo do resultado e o valor coincidem com aqueles da expresso a direita. A lista de
parmetros a ser passada (seja acima) pode ser considerada como um exemplo.
Exemplo:

2000-2015, MetaQuotes Software Corp.

115

Elementos Bsicos da Linguagem


for(i=0,j=99; i<100; i++,j--) Print(array[i][j]);

Operador Ponto ( . )
Para o acesso direto a membros pblicos de estruturas e classes, a operao ponto usada. Sintaxe:
Nome_da_varivel_do_tipo_estrutura.Nome_do_membro

Exemplo:
struct SessionTime
{
string sessionName;
int

startHour;

int

startMinutes;

int

endHour;

int

endMinutes;

} st;
st.sessionName="Asian";
st.startHour=0;
st.startMinutes=0;
st.endHour=9;
st.endMinutes=0;

Operao de Resoluo de Escopo ( :: )


Cada funo em um programa MQL5 tem seu prprio escopo de execuo. Por exemplo, a funo de
sistema Print() realizada em um escopo global. Funes Importadas so chamadas no escopo do
correspondente import. Mtodos de funes de classes tm o escopo da correspondente classe. A
sintaxe do operador de resoluo de escopo o seguinte:
[Scope_name]::Function_name(parameters)

Se no existir nenhum nome de escopo, isto uma orientao explcita para usar o escopo global. Se
no existir nenhuma operao de resoluo de escopo, a funo procurada no escopo mais prximo.
Se no existir nenhuma funo no escopo local, a procura conduzida no escopo global.
A resoluo de escopo tambm usada para definir funes membros de classe.
type Class_name::Function_name(parameters_description)
{
// corpo da funo
}

Use of several functions of the same name from different execution contexts in a program may cause
ambiguity. The priority order of function calls without explicit scope specification is the following:
1. Class methods. If no function with the specified name is set in the class, move to the next level.
2. MQL5 functions. If the language does not have such a function, move to the next level.
3. User defined global functions. If no function with the specified name is found, move to the next
level.
4. Imported functions. If no function with the specified name is found, the compiler returns an error.

2000-2015, MetaQuotes Software Corp.

116

Elementos Bsicos da Linguagem


To avoid the ambiguity of function calls, always explicitly specify the function scope using the scope
resolution operation.

Exemplo:
#property script_show_inputs
#import "kernel32.dll"
int GetLastError(void);
#import
class CCheckContext
{
int

m_id;

public:
CCheckContext() { m_id=1234; }
protected:
int

GetLastError() { return(m_id); }

};
class CCheckContext2 : public CCheckContext
{
int

m_id2;

public:
CCheckContext2() { m_id2=5678; }
void

Print();

protected:
int

GetLastError() { return(m_id2); }

};
void CCheckContext2::Print()
{
::Print("Terminal GetLastError",::GetLastError());
::Print("kernel32 GetLastError",kernel32::GetLastError());
::Print("parent GetLastError",CCheckContext::GetLastError());
::Print("our GetLastError",GetLastError());
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--CCheckContext2 test;
test.Print();
}
//+------------------------------------------------------------------+

Operao de Obteno do Tamanho do Tipo de Dados ou Tamanho


do Objeto de Qualquer Tipo de Dados ( sizeof )

2000-2015, MetaQuotes Software Corp.

117

Elementos Bsicos da Linguagem


Usando a operao sizeof o tamanho de memria correspondente a um identificador ou tipo pode ser
definido. A operao sizeof do seguinte formato:
Exemplo:
sizeof(expression)

Qualquer identificador, ou nome de tipo entre colchetes pode ser usado como uma expresso. Observe
que o nome tipo void no pode ser usado, e o identificar no pode pertencer ao campo de bits, ou ser
um nome de funo.
Se a expresso for o nome de um array esttico (isto , a primeira dimenso dada), ento o
resultado o tamanho do array inteiro (isto , o produto do nmero de elementos e o comprimento do
tipo. Se a expresso o nome de um array dinmico (a primeira dimenso no especificada), o
resultado ser o tamanho do objeto do array dinmico.
Quando sizeof aplicado ao nome de um tipo de estrutura ou classe, ou ao identificador do tipo de
uma estrutura ou classe, o resultado tamanho real da estrutura ou classe.
Exemplo:
struct myStruct
{
char

h;

int

b;

double f;
} str;
Print("sizeof(str) = ",sizeof(str));
Print("sizeof(myStruct) = ",sizeof(myStruct));

O tamanho calculado na etapa de compilao.


Tambm Veja
Regras de Precedncia

2000-2015, MetaQuotes Software Corp.

118

Elementos Bsicos da Linguagem

Regras de Precedncia
Cada grupo de operaes na tabela tem a mesma prioridade. Quanto mais alta a prioridade de
operaes, mais alta a posio do grupo na tabela. As regras de precedncia determinar o
agrupamento de operaes e operandos.
Ateno: A precedncia de operaes na linguagem MQL5 corresponde prioridade adotada em C++, e
difere da prioridade dada na linguagem MQL4.
Operao

Descrio

Ordem de Execuo

()
[]
.

Chamada de Funo
Referenciando um elemento de
array
Referenciando um elemento de
estrutura

Da esquerda para direita

!
~

++
-(tipo)
sizeof

Negao lgica
Negao
bit
a
bit
(complemento)
Mudana de Sinal
Incremento por um
Decremento por um
Converso
de
Tipo
(Typecasting)
Determinao de tamanho em
bytes

Direita para esquerda

*
/
%

Multiplicao
Diviso
Quociente de diviso

Da esquerda para direita

Adio
Subtrao

Da esquerda para direita

<<
>>

Deslocamento para esquerda


Deslocamento para direita

Da esquerda para direita

<
<=
>
>=

Menor que
Menor ou igual a
Maior que
Maior ou igual a

Da esquerda para direita

==
!=

Igual
No igual

Da esquerda para direita

&

Operao AND bit a bit

Da esquerda para direita

OR exclusivo bit a bit

Da esquerda para direita

Operao OR bit a bit

Da esquerda para direita

&&

Operao lgica AND

Da esquerda para direita

||

Operao lgica OR

Da esquerda para direita

2000-2015, MetaQuotes Software Corp.

119

Elementos Bsicos da Linguagem

?:

Operador condicional

Direita para esquerda

=
*=
/=
%=
+=
-=
<<=
>>=
&=
^=
|=

Atribuio
Multiplicao com atribuio
Diviso com atribuio
Quociente de diviso com
atribuio
Adio com atribuio
Subtrao com atribuio
Deslocamento para esquerda
com atribuio
Deslocamento para direita com
atribuio
AND bit a bit com atribuio
OR Exclusivo com atribuio
OR bit a bit com atribuio

Direita para esquerda

Vrgula

Da esquerda para direita

Para mudar a ordem de execuo de operao, so usados parnteses, que so de prioridade mais
alta.

2000-2015, MetaQuotes Software Corp.

120

Elementos Bsicos da Linguagem

Operadores
Operadores de linguagem descrevem algumas operaes algortmicas que devem ser executadas para
se realizar uma tarefa. O corpo do programa uma seqncia de tais operadores. Operadores, um a
um, so separados por ponto e vrgula.
Operador

Descrio

Operador Composto {}

Um ou mais operadores de qualquer tipo, entre


chaves {}

Operador de Expresso (;)

Qualquer expresso que termina com ponto e


vrgula (;)

return operador

Finaliza a funo corrente e retorna o controle


para o programa chamador

if-else operador condicional

usado quando necessrio fazer uma escolha

?: operador condicional

Um anlogo simples do operador condicional ifelse

switch operador de seleo

Passa o controle para o operador


corresponde ao valor da expresso

while operador de loop

Realiza uma operao at que a expresso


verificada se torne falsa. A expresso
verificada antes de cada iterao

for operador de loop

Realiza uma operao at que a expresso


verificada se torne falsa. A expresso
verificada antes de cada iterao

do-while operador de loop

Realiza uma operao at que a expresso


verificada se torne falsa. A condio de
finalizao verificada, aps cada loop. O
corpo do loop executado pelo menos uma vez.

break operador

Finaliza a execuo do operador externo


adjunto mais prximo: switch, while, do-while
ou for.

continue operador

Passa controle para o comeo do loop do


operador externo mais prximo: while, do-while
ou for

new operador

Cria um objeto de tamanho apropriado e


retorna um descritor do objeto criado.

delete operador

Exclui o objeto criado pelo operador new

que

Um operador pode ocupar uma ou mais linhas. Dois ou mais operadores podem ser colocados na
mesma linha. Operadores que controlam a ordem de execuo (if, if-else, switch, while e for) podem
ser aninhados (encaixados) um no outro.
Exemplo:

2000-2015, MetaQuotes Software Corp.

121

Elementos Bsicos da Linguagem


if(Month() == 12)
if(Day() == 31) Print("Feliz Ano Novo!");

Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo
Objetos

2000-2015, MetaQuotes Software Corp.

122

Elementos Bsicos da Linguagem

Operador Composto
Um operador composto (um bloco) consiste de um ou mais operadores de qualquer tipo, entre chaves
{}. A chave de fechamento deve ser seguida por dois pontos (;).
Exemplo:
if(x==0)
{
Print("posio invlida x = ",x);
return;
}

Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo
Objetos

2000-2015, MetaQuotes Software Corp.

123

Elementos Bsicos da Linguagem

Operador de Expresso
Qualquer expresso seguida por ponto e vrgula (;) o operador. Aqui esto alguns exemplos de
operadores de expresso.

Operador de Atribuio
Identificador = expresso;
x=3;
y=x=3;
bool equal=(x==y);

Um operador de atribuio pode ser usado muitas vezes em uma expresso. Neste caso, a expresso
processada da esquerda para direita:

Operador de Chamada de Funo


Function_name (argument1,..., argumentN);
FileClose(file);

Operador Empty
Consiste somente de um ponto e vrgula (;) e usado para denotar um corpo vazio de um operador de
controle.
Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo
Objetos

2000-2015, MetaQuotes Software Corp.

124

Elementos Bsicos da Linguagem

Operador return
O operador return finaliza a execuo da funo corrente e retorna o controle para o programa
chamador. O resultado do clculo da expresso retornado para a funo chamadora. A expresso
pode conter um operador de atribuio.
Exemplo:
int CalcSum(int x, int y)
{
return(x+y);
}

Em funes com o tipo de retorno void, o operador return sem expresso deve ser usada:
void SomeFunction()
{
Print("Ol!");
return;

// este operador pode ser removido

A chave direita da funo ("}") significa execuo implcita do operador return sem expresso.
Pode ser retornado: tipos simples, estruturas simples, ponteiros de objetos. Com o operador return
no se pode retornar arrays, objetos de classe, variveis de tipo estrutura composta.
Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo
Objetos

2000-2015, MetaQuotes Software Corp.

125

Elementos Bsicos da Linguagem

Operador Condicional If-Else


O operador IF - ELSE usado quando uma escolha deve ser feita. Formalmente, a sintaxe a
seguinte:
if (expresso)

operador1

else

operador2

Se a expresso verdadeira, o operador1 executado e o controle dado ao operador que segue o


operador2. Se a expresso falsa, o operador2 executado.
A parte else do operador if pode ser omitida. Assim, uma divergncia pode aparecer em operadores
aninhados (encaixados) if com omisso da parte else. Neste caso, o else se refere ao operador
anterior if mais prximo no mesmo bloco que no tem a parte else.
Exemplos:
//--- A parte else refere-se ao segundo operador if:
if(x>1)
if(y==2) z=5;
else

z=6;

//--- A parte else refere-se ao primeiro operador if:


if(x>l)
{
if(y==2) z=5;
}
else

z=6;

//--- Operadores aninhados


if(x=='a')
{
y=1;
}
else if(x=='b')
{
y=2;
z=3;
}
else if(x=='c')
{
y=4;
}
else Print("ERROR");

Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo
Objetos

2000-2015, MetaQuotes Software Corp.

126

Elementos Bsicos da Linguagem

Operador Ternrio ?
A forma geral do operador ternrio a seguinte:
expresso1 ? expresso2 : expresso3

Para o primeiro operando - "expresso1" - qualquer expresso que resulte em um valor do tipo bool
pode ser usado. Se o resultado true, ento o operador definido pelo segundo operando, isto ,
"expresso2", executado.
Se o primeiro operando false, o terceiro operando - "expresso3" executado. Os segundo e terceiro
operandos, isto , "expresso2" e "expresso3" devem retornar valores de algum tipo e no devem ser
do tipo void. O resultado da execuo do operador condicional o resultado de expresso2 ou o
resultado de expresso3, dependendo do resultado de expresso1.
//--- diferena normalizada entre preos de abertura e fechamento para intervalo de um dia
double true_range = (High==Low)?0:(Close-Open)/(High-Low);

Esta entrada equivalente ao seguinte:


double true_range;
if(High==Low)true_range=0;

// se o Mximo e o Mnimo so iguais

else true_range=(Close-Open)/(High-Low); // se a faixa no nula

Restries ao Uso do Operador


Baseado no valor da "expresso1", o operador deve retornar um dentre dois valores - ou "expresso2"
ou "expresso3". Existem vrias limitaes nessas expresses:
1. No confunda o tipo user-defined (definida pelo usurio) com o tipo simples ou enumerador. NULL
pode ser usado para ponteiro.
2. Se os tipos dos valores so simples, o operador ser do tipo mximo (veja Converso de Tipos (type
casting)).
3. Se algum dos valores uma enumerao e o segundo valor de um tipo numrico, a enumerao
substituda por int e a segunda regra aplicada.
4. Se ambos os valores so enumeraes, seus tipos devem ser idnticos, e o operador ser do tipo
enumerao.
Restries ao tipos user-defined (classes ou estruturas definidas pelo usurio):
a) Os tipos devem ser idnticos ou um deve ser derivado do outro.
b) Se os tipo no forem idnticos (herana), ento a filha implicitamente convertida para o pai, isto
, o operador ser do tipo paterno.
c) No confunda objetos com ponteiros - ambas as expresso ou so objetos ou so ponteiros. NULL
pode ser usado para ponteiro.
Observao
Cuidado ao usar o operador condicional como um argumento de uma funo de sobrecarga, porque o
tipo do resultado de um operador condicional definido na durante a compilao do programa. E este

2000-2015, MetaQuotes Software Corp.

127

Elementos Bsicos da Linguagem


tipo definido como a maior dos tipos "expression2" e "expression3".
Exemplo:
void func(double d) { Print("double argumento: ",d); }
void func(string s) { Print("string argumento: ",s); }
bool

Expression1=true;

double Expression2=M_PI;
string Expression3="3.1415926";
void OnStart()
{
func(Expression2);
func(Expression3);
func(Expression1?Expression2:Expression3);

// aviso sobre converso implcita para string

func(!Expression1?Expression2:Expression3);

// aviso sobre converso implcita para string

}
//

Resultado:

//

double argumento: 3.141592653589793

//

string argumento: 3.1415926

//

string argumento: 3.141592653589793

//

string argumento: 3.1415926

Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo
Objetos

2000-2015, MetaQuotes Software Corp.

128

Elementos Bsicos da Linguagem

Operador switch
Compara o valor da expresso com constantes em todas as variantes de case e passa o controle para o
operador, que corresponde ao valor da expresso. Cada variante de case pode ser marcada com uma
constante inteira, uma constante literal ou uma expresso constante. A expresso constante no pode
conter variveis ou chamadas de funo. A expresso do operador switch deve ser do tipo inteiro.
switch(expresso)
{
case constantes: operadores
case constantes: operadores
...
default: operadores
}

Operadores marcados pelo rtulo default so executados se nenhuma das constantes nos operadores
case forem iguais ao valor da expresso. A variante default no precisa ser necessariamente
declarada e no precisa ser necessariamente ser a ltimo. Se nenhuma das constantes corresponder ao
valor da expresso e a variante default no estiver presente, nenhuma ao ser executada.
A palavra-chave case com uma constante so apenas rtulos, e se operadores forem executados para
alguma variante case, o programa continuar a executar os operadores de todas as subseqentes
variantes at que o operador break ocorra. Isso permite vincular uma seqncia de operadores com
vrias variantes.
Uma expresso constante calculada durante a compilao. Duas constantes em um operador switch
no podem ter o mesmo valor.
Exemplos:
//--- Primeiro exemplo
switch(x)
{
case 'A':
Print("CASE A");
break;
case 'B':
case 'C':
Print("CASE B ou C");
break;
default:
Print("NOT A, B ou C");
break;
}
//---

Segundo exemplo

string res="";
int i=0;
switch(i)
{
case 1:

2000-2015, MetaQuotes Software Corp.

129

Elementos Bsicos da Linguagem


res=i;break;
default:
res="default";break;
case 2:
res=i;break;
case 3:
res=i;break;
}
Print(res);
/*
Result
default
*/

Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo
Objetos

2000-2015, MetaQuotes Software Corp.

130

Elementos Bsicos da Linguagem

Operador de Loop while


O operador while consiste de uma expresso verificada e um operador:
while(expression)
operador;

Se a expresso verdadeira, o operador executado at que a expresso se torne falsa. Se a


expresso falsa, o controle passado para o prximo operador. O valor da expresso definido
antes do operador ser executado. Portanto se a expresso falsa logo no comeo, o operador no ser
executado.
Observao
Se esperado que um grande nmero de iteraes seja tratado por um loop, recomendvel que se
verifique a ocorrncia de uma finalizao de programa forada usando a funo IsStopped().
Exemplo:
while(k<n && !IsStopped())
{
y=y*x;
k++;
}

Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo
Objetos

2000-2015, MetaQuotes Software Corp.

131

Elementos Bsicos da Linguagem

Operador de Loop For


O operador for consiste de trs expresses e um operador executvel:
for(expresso1; expresso2; expresso3)
operador;

Expresso1 descreve a inicializao do loop. Expression2 verifica as condies de finalizao do loop.


Se for verdadeira, o corpo do loop do for executado. Realiza uma operao at que a expresso
verificada se torne falsa. Se a expresso verdadeira, o operador1 executado e o controle dado ao
operador que segue o operador2. Expression3 calculado aps cada iterao.
O operador for equivalente seguinte sucesso de operadores:
expresso1;
while(expresso2)
{
operador;
expresso3;
};

Quaisquer das trs ou todas as trs expresses podem estar ausentes no operador for, mas o ponto e
vrgula (;) que as separada no pode ser omitido. Se expresso2 omitida, ela considerada como
verdadeira. O operador for(;;) um loop contnuo, equivalente ao operador while(1). As expresses 1
e 3 podem consistir de vrias expresses combinadas por um operador vrgula ','.
Observao
Se esperado que um grande nmero de iteraes seja tratado por um loop, recomendvel que se
verifique a ocorrncia de uma finalizao de programa forada usando a funo IsStopped().
Exemplos:
for(x=1;x<=7000; x++)
{
if(IsStopped())
break;
Print(MathPower(x,2));
}
//--- Outro exemplo
for(;!IsStopped();)
{
Print(MathPower(x,2));
x++;
if(x>10) break;
}
//--- Terceiro exemplo
for(i=0,j=n-l;i<n && !IsStopped();i++,j--) a[i]=a[j];

Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo

2000-2015, MetaQuotes Software Corp.

132

Elementos Bsicos da Linguagem


Objetos

2000-2015, MetaQuotes Software Corp.

133

Elementos Bsicos da Linguagem

Operador de loop do while


Os loops for e while verificam o trmino no comeo, no no fim de um loop. O terceiro operador de
loop do - while verifica a condio de trmino no fim, aps cada interao do loop. O corpo do loop
sempre executado pelo menos uma vez.
do
operador;
while(expression);

Primeiro o operador executado, ento a expresso calculada. Se a expresso for verdadeira, ento
o operador executado novamente, e assim por diante. Se a expresso se tornar falsa, o loop
termina.
Observao
Se esperado que um grande nmero de iteraes seja tratado por um loop, recomendvel que se
verifique a ocorrncia de uma finalizao de programa forada usando a funo IsStopped().
Exemplo:
//--- Calcula a srie de Fibonacci
int counterFibonacci=15;
int i=0,first=0,second=1;
int currentFibonacciNumber;
do
{
currentFibonacciNumber=first+second;
Print("i = ",i,"

currentFibonacciNumber = ",currentFibonacciNumber);

first=second;
second=currentFibonacciNumber;
i++; // Sem este operador um loop infinito aparecer!
}
while(i<counterFibonacci && !IsStopped());

Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo
Objetos

2000-2015, MetaQuotes Software Corp.

134

Elementos Bsicos da Linguagem

Operador break
O operador break finaliza a execuo do operador aninhado (encaixado) switch, while, do-while ou for
mais prximo. O controle passado ao operador que se segue a aquele finalizado. Um dos propsitos
deste operador finalizar a execuo de loop quando um certo valor atribudo a uma varivel.
Exemplo:
//--- buscando pelo primeiro elemento zero
for(i=0;i<array_size;i++)
if(array[i]==0)
break;

Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo
Objetos

2000-2015, MetaQuotes Software Corp.

135

Elementos Bsicos da Linguagem

Operador continue
O operador continue passa o controle para o comeo do prximo loop do operador while, do-while ou
for mais prximo, executando a prxima iterao. O propsito deste operador oposto ao do
operador break.
Exemplo:
//--- Soma de todos os elementos no-zero
int func(int array[])
{
int array_size=ArraySize(array);
int sum=0;
for(int i=0;i<array_size; i++)
{
if(a[i]==0) continue;
sum+=a[i];
}
return(sum);
}

Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo
Objetos

2000-2015, MetaQuotes Software Corp.

136

Elementos Bsicos da Linguagem

Operador de Criao de Objeto new


O operador new automaticamente cria um objeto de tamanho correspondente, chama o construtor do
objeto e retorna um descritor do objeto criado. Em caso de falha, o operador retorna um descritor de
null que pode ser comparado com a constante NULL.
O operador new pode ser aplicado somente a objetos de classe. Ele no pode ser aplicado a estruturas.
O operador no deve ser usado para criar arrays de objetos. Para fazer isso, use a funo
ArrayResize().
Exemplo:
//+------------------------------------------------------------------+
//| Criao de Figura

//+------------------------------------------------------------------+
void CTetrisField::NewShape()
{
m_ypos=HORZ_BORDER;
//--- cria aleatoriamente uma das 7 possveis formas
int nshape=rand()%7;
switch(nshape)
{
case 0: m_shape=new CTetrisShape1; break;
case 1: m_shape=new CTetrisShape2; break;
case 2: m_shape=new CTetrisShape3; break;
case 3: m_shape=new CTetrisShape4; break;
case 4: m_shape=new CTetrisShape5; break;
case 5: m_shape=new CTetrisShape6; break;
case 6: m_shape=new CTetrisShape7; break;
}
//--- desenhar
if(m_shape!=NULL)
{
//--- pr-configuraes
m_shape.SetRightBorder(WIDTH_IN_PIXELS+VERT_BORDER);
m_shape.SetYPos(m_ypos);
m_shape.SetXPos(VERT_BORDER+SHAPE_SIZE*8);
//--- draw
m_shape.Draw();
}
//--}

Deve ser notado que um descritor do objeto no um ponteiro para um endereo de memria.
Um objeto criado com o operador new deve ser explicitamente removido usando o operador delete.
Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo

2000-2015, MetaQuotes Software Corp.

137

Elementos Bsicos da Linguagem


Objetos

2000-2015, MetaQuotes Software Corp.

138

Elementos Bsicos da Linguagem

Operao de Excluso de Objeto delete


O operador delete exclui um objeto criado pelo operador new, chama o destrutor da classe
correspondente e libera memria ocupada pelo objeto. Um descritor real de um objeto existente
usado como um operando. Aps a operao de excluso (delete) ser executada, o descritor do objeto
torna-se invlido.
Exemplo:
//--- exclui figura
delete m_shape;
m_shape=NULL;
//--- criar uma nova figura
NewShape();

Tambm Veja
Inicializao de Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo
Objetos

2000-2015, MetaQuotes Software Corp.

139

Elementos Bsicos da Linguagem

Funes
Toda tarefa pode ser dividida em sub-tarefas, cada qual podendo ser representada tanto na forma de
cdigo, como ser divida em sub-tarefas ainda menores. Este mtodo chamado de refinamento passo
a passo.. Funes so usadas para escrever o cdigo das sub-tarefas a serem resolvidas. O cdigo que
descreve o que uma funo faz chamado de definio de funo:
function_header
{
instrues
}

Tudo que est antes da primeira chave o cabealho (header) da definio de funo, e o que est
entre as chaves o corpo (body) da definio de funo. O cabealho de funo (function header)
inclui a descrio do tipo de valor de retorno, o nome (identificador) e os parmetros formais. O
nmero de parmetros passados para a funo limitado e no pode exceder 64.
A funo pode ser chamada de outras partes do programa quantas vezes forem necessrias. Na
verdade, o tipo de retorno, o identificador da funo e os tipos de parmetros constituem o prottipo
da funo.
Prottipo de funo a declarao da funo, mas no a sua definio. Devido a declarao explcita
do tipo de retorno e da lista dos tipos de argumentos, a verificao estrita de tipo e a implcita
converso de tipo (typecasting) so possveis durante as chamadas de funo. Muito freqentemente
declaraes de funes so usadas em classes para melhorar a legibilidade do cdigo.
As definies de funo devem corresponder exatamente sua declarao. Cada funo declarada
deve ser definida.
Exemplo:
double

// tipo do valor de retorno

linfunc (double a, double b) // nome da funo e lista de parmetros


{
// operador composto
return (a + b);

// valor do retorno

O operador return pode retornar o valor de uma expresso localizada neste operador. Se necessrio, o
valor da expresso convertido para o tipo do resultado da funo. Pode ser retornado: tipos simples,
estruturas simples, ponteiros de objetos. Com o operador return no se pode retornar arrays, objetos
de classe, variveis de tipo estrutura composta.
Uma funo que no retorna nenhum valor deve ser descrita como do tipo void.
Exemplo:
void errmesg(string s)
{
Print("erro: "+s);
}

2000-2015, MetaQuotes Software Corp.

140

Elementos Bsicos da Linguagem


Parmetros passado para a funo podem ter valores default (padro), que so definidos por
constantes daquele tipo.
Exemplo:
int somefunc(double a,
double d=0.0001,
int n=5,
bool b=true,
string s="string transmitida")
{
Print("Parmetro obrigatrio a = ",a);
Print("Transmitir os seguintes parmetros: d = ",d," n = ",n," b = ",b," s = ",s);
return(0);
}

Se algum dos parmetros tem um valor default, todos os parmetros subseqentes devem tambm ter
valores default.
Exemplo de declarao incorreta:
int somefunc(double a,
double d=0.0001,

// valor padro declarado 0.0001

int n,

// no determinado o valor padro!

bool b,

// no determinado o valor padro!

string s="string transmitida")


{
}

Tambm Veja
Sobrecarga (Overload), Funes Virtuais, Polimorfismo

2000-2015, MetaQuotes Software Corp.

141

Elementos Bsicos da Linguagem

Chamada de Funo
Se um nome, que no foi descrito antes, aparece em uma expresso e seguido pelo parntesis de
abertura, ele considerado contextualmente como o nome de uma funo.
function_name (x1, x2,..., xn)

Argumentos (parmetros formais) so passados por valor, isto , cada expresso x1,.., xn
calculada, e os valores so passados para a funo. A ordem de clculo das expresses e a ordem de
carregamento dos valores no so garantidos. Durante a execuo, o sistema verifica o nmero e o
tipo dos argumentos passados para a funo. Tal forma de abordar uma funo chamada de uma
chamada de valor.
Chamada de funo uma expresso, cujo valor o valor retornado pela funo. O tipo da funo
descrito acima deve corresponder com o tipo do valor de retorno. Uma funo pode ser declarada ou
descrita em qualquer parte do programa no escopo global, isto , fora de outras funes. Uma funo
no pode ser declarada ou descrita dentro de outra funo.
Exemplos:
int start()
{
double some_array[4]={0.3, 1.4, 2.5, 3.6};
double a=linfunc(some_array, 10.5, 8);
//...
}
double linfunc(double x[], double a, double b)
{
return (a*x[0] + b);
}

Na chamada de uma funo com parmetros default, a lista de parmetros a serem passados pode ser
limitada, mas no antes do primeiro parmetro default.
Exemplos:
void somefunc(double init,
double sec=0.0001, //define valores default
int level=10);
//...
somefunc();

// Chamada errada. O primeiro parmetro deve estar presente.

somefunc(3.14);

// Chamada correta

somefunc(3.14,0.0002);

// Chamada correta

somefunc(3.14,0.0002,10);

// Chamada correta

Ao chamar uma funo, no se pode pular parmetros, mesmo aqueles que tm valores default:
somefunc(3.14, , 10);

// Chamada errada -> o segundo parmetros foi pulado.

Tambm Veja
Sobrecarga (Overload), Funes Virtuais, Polimorfismo

2000-2015, MetaQuotes Software Corp.

142

Elementos Bsicos da Linguagem

Passando Parmetros
Existem pois mtodos pelo qual a linguagem de mquina pode passar argumentos para um
subprograma (funo). O primeiro mtodo enviar um parmetro por valor. Este mtodo copia o valor
do argumento para um parmetro formal de funo. Portanto, quaisquer mudanas neste parmetro
ocorridas dentro da funo no tm influncia no correspondente argumento usado na chamada da
funo.
//+------------------------------------------------------------------+
//| Passando parmetros por valor

//+------------------------------------------------------------------+
double FirstMethod(int i,int j)
{
double res;
//--i*=2;
j/=2;
res=i+j;
//--return(res);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--int a=14,b=8;
Print("a e b antes chamada:",a," ",b);
double d=FirstMethod(a,b);
Print("a e b aps chamada:",a," ",b);
}
//--- Resultado da execuo do script
//

a e b antes chamada: 14 8

//

a e b aps chamada: 14 8

O segundo mtodo passar por referncia. Neste caso, a referncia para um parmetro (no seu
valor) passada para um parmetro de funo. Dentro da funo, ele usado para referenciar o
verdadeiro parmetro especificado na chamada. Isso significa que mudanas no parmetro afetaro o
argumento usado na chamada da funo.
//+------------------------------------------------------------------+
//| Passando parmetros por referncia

//+------------------------------------------------------------------+
double SecondMethod(int &i,int &j)
{
double res;
//--i*=2;
j/=2;

2000-2015, MetaQuotes Software Corp.

143

Elementos Bsicos da Linguagem


res=i+j;
//--return(res);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--int a=14,b=8;
Print("a e b antes chamada:",a," ",b);
double d=SecondMethod(a,b);
Print("a e b aps chamada:",a," ",b);
}
//+------------------------------------------------------------------+
//--- resultado da execuo do script
//

a e b antes chamada: 14 8

//

a e b aps chamada: 28 4

MQL5 usa ambos os mtodos, com uma exceo, arrays, variveis tipo estrutura e objetos de classe
so sempre passados por referncia. A fim de evitar modificaes nos parmetros reais (argumentos
passados na chamada da funo) use o especificador de acesso const. Ao se tentar modificar o
contedo de uma varivel declarada com o especificador const, o compilador gerar um erro.

Observao
It should be noted that parameters are passed to a function in reversed order, i.e., first the last
parameter is calculated and passed, and then the last but one, etc. The last calculated and passed
parameter is the one that stands first after opening parenthesis.
Exemplo:
void OnStart()
{
//--int a[]={0,1,2};
int i=0;
func(a[i],a[i++],"First call (i = "+string(i)+")");
func(a[i++],a[i],"Second call (i = "+string(i)+")");
// Result:
// First call (i = 0) : par1 = 1
// Second call (i = 1) : par1 = 1

par2 = 0
par2 = 1

}
//+------------------------------------------------------------------+
//|

//+------------------------------------------------------------------+
void func(int par1,int par2,string comment)

2000-2015, MetaQuotes Software Corp.

144

Elementos Bsicos da Linguagem


{
Print(comment,": par1 = ",par1,"

par2 = ",par2);

In first call (see example above) the i variable is first used in strings concatenation:
"First call (i = "+string(i)+")"

Here its value doesn't change. Then the i variable is used in calculation of the a[i++] array element,
i.e. when array element with index i is accessed, the i variable is incremented. And only after that the
first parameter with changed value of i variable is calculated.
In the second call the same value of i (calculated on the first phase of function calling) is used when
calculating all three parameters. Only after the first parameters is calculated the i variable is changed
again.
Tambm Veja
Visibility Scope and Lifetime of Variables, Overload, Virtual Functions, Polymorphism

2000-2015, MetaQuotes Software Corp.

145

Elementos Bsicos da Linguagem

Sobrecarga de Funo
Geralmente, o nome da funo tende a refletir seu propsito principal. Como regra, programas
legveis contm vrios identificadores bem selecionados. s vezes, funes diferentes so usados
para os mesmos propsitos. Vamos considerar, por exemplo, uma funo que calcula o valor mdio de
um array de nmeros de dupla preciso e a mesma funo, mas operando com um array de inteiros.
Ambas so convenientemente chamadas de AverageFromArray:
//+------------------------------------------------------------------+
//| O clculo de mdia de um array de tipo double

//+------------------------------------------------------------------+
double AverageFromArray(const double & array[],int size)
{
if(size<=0) return 0.0;
double sum=0.0;
double aver;
//--for(int i=0;i<size;i++)
{
sum+=array[i];

// Soma para o tipo double

}
aver=sum/size;

// Apenas divide a soma pelo nmero

//--Print("Clculo da mdia para um array do tipo double");


return aver;
}
//+------------------------------------------------------------------+
//| O clculo de mdia para um array de tipo int

//+------------------------------------------------------------------+
double AverageFromArray(const int & array[],int size)
{
if(size<=0) return 0.0;
double aver=0.0;
int sum=0;
//--for(int i=0;i<size;i++)
{
sum+=array[i];

// Soma para o tipo int

}
aver=(double)sum/size;// Fornece uma quantidade de tipo double, e divide
//--Print("Clculo da mdia para um array do tipo int");
return aver;
}

Cada funo contm a sada da mensagem via a funo Print();


Print("Clculo da mdia para um array do tipo int");

O compilador seleciona a funo necessria de acordo com os tipos dos argumentos e suas

2000-2015, MetaQuotes Software Corp.

146

Elementos Bsicos da Linguagem


quantidades. A regra, que define a escolha a ser feita, chamada de algoritmo de correspondncia de
assinatura. Um assinatura uma lista de tipos usados na declarao da funo.
Exemplo:
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--int

a[5]={1,2,3,4,5};

double b[5]={1.1,2.2,3.3,4.4,5.5};
double int_aver=AverageFromArray(a,5);
double double_aver=AverageFromArray(b,5);
Print("int_aver = ",int_aver,"

double_aver = ",double_aver);

}
//--- Resultado do script
// Calcula a mdia para um array de tipo int
// Calcula a mdia para um array de tipo double
// int_aver= 3.00000000

double_aver= 3.30000000

Sobrecarga de funo um processo de criar vrias funes com o mesmo nome, mas com diferentes
parmetros. Isso significa que em variantes sobrecarregadas de uma funo, o nmero de argumentos
e/ou seus tipos devem ser diferentes. Um variante de funo especfica selecionada baseada na
correspondncia entre lista de argumentos ao chamar a funo com a lista de parmetros na
declarao da funo.
Quando uma funo sobrecarregada chamada, o compilador deve ter uma algoritmo para selecionar
a funo apropriada. O algoritmo que realiza esta escolha depende da converso de quais tipos
estiverem presentes. A melhor correspondncia deve ser nica. Uma funo sobrecarregada deve ser a
melhor correspondncia dentre todas as outras variantes para ao menos um argumento. Ao mesmo
tempo, ela no deve ser pior que as outras variantes para todos os outros argumentos.
Abaixo est um algoritmo de correspondncia para cada argumento.

Algoritmo de Escolha de uma Funo Sobrecarregada


1. Use estrita correspondncia (se possvel).
2. Tente incremento de tipo padro.
3. Tente converso de tipo padro.
O incremento de tipo padro melhor que outras converses padro. Incremento a converso de
float para double, de bool, char, short ou enum para int. Converso de tipo de arrays de tipos inteiros
similares tambm pertencem a converso de tipo. Tipos similares so: bool, char, uchar, j que todos
os trs tipo so inteiros de nico bytes, inteiros de duplo byte short e ushort; inteiros de 4 bytes int,
uint, e color; long, ulong e datetime.
Claro que a estrita correspondncia a melhor. Para alcanar tal consistncia converso de tipo
(typecasting) pode ser usada. O compilador no pode lidar com situaes ambguas. Portanto voc no
deve confiar em diferenas sutis de tipos e converses implcitas que tornam a funo sobrecarregada

2000-2015, MetaQuotes Software Corp.

147

Elementos Bsicos da Linguagem


no clara.
No caso de dvida, use converso explcita para assegurar estrita adequao.
Exemplos de funes sobrecarregadas no MQL5 podem ser vistas no exemplo de funes
ArrayInitialize().
Regras de sobrecarga de funo para sobrecarga de mtodos de classe.

A sobrecarga de funes de sistema permitida, mas deve-se observar que o compilador capaz de
selecionar com preciso a funo necessria. Por exemplo, podemos sobrecarregar o sistema da
funo MathMax() de 4 maneiras diferentes, mas apenas duas variantes so corretas.
Exemplo:
// 1. sobrecarga permitida - funo difere da funo embutida MathMax() em nmero de parmetros
double MathMax(double a,double b,double c);
// 2. sobrecarga no permitida!
// nmero de parmetros diferente, mas o ltimo tem um valor default
// isso leva ao ocultamento da funo de sistema ao chamar-lo, o que inaceitvel
double MathMax(double a,double b,double c=DBL_MIN);
// 3. sobrecarga permitida - sobrecarga normal para tipos de parmetros 'a' e 'b'
double MathMax(int a,int b);
// 4. sobrecarga no permitida!
// o nmero e tipos de parmetros so os mesmos que no original double MathMax (double a,double b)
int MathMax(double a,double b);

Tambm Veja
Sobrecarga (Overload), Funes Virtuais, Polimorfismo

2000-2015, MetaQuotes Software Corp.

148

Elementos Bsicos da Linguagem

Sobrecarga de Operao
Para facilitar a leitura e escrita de cdigo, a sobrecarga de algumas operaes permitida. O
operador de sobrecarga escrito usando a palavra-chave operator. Os seguintes operadores podem
ser sobrecarregados:
binrio +,-,/,*,%,<<,>>,==,!=,<,>,<=,>=,=,+=,-=,/=,*=,%=,&=,|=,^=,<<=,>>=,&&,||,&,|,^
unrio +,-,++,--,!,~
operador de atribuio =
operador de indexao []

Sobrecarga de operao permite o uso da notao de operao (escrita na forma de expresses


simples) para objetos complexos - estruturas e classes. Escrevendo expresses usando operaes de
sobrecarga simplifica a visualizao do cdigo fonte, porque uma implementao mais complexa fica
escondida.
Por exemplo, considere nmeros complexos, que consistem de partes real e imaginria. Eles so
amplamente utilizados na matemtica. A linguagem MQL5 no tem um tipo de dado que represente
nmeros complexos, mas possvel criar um novo tipo de dado na forma de uma estrutura ou classe.
Declare a estrutura complexa e defina quatro mtodos que implementam as quatro operaes
aritmticas:
//+------------------------------------------------------------------+
//| Uma estrutura para operaes com nmeros complexos

//+------------------------------------------------------------------+
struct complex
{
double

re; // Parte real

double

im; // Parte imaginrio

//--- Construtores
complex():re(0.0),im(0.0) {

complex(const double r):re(r),im(0.0) {

complex(const double r,const double i):re(r),im(i) {

complex(const complex &o):re(o.re),im(o.im) { }


//--- Operaes Aritmticas
complex

Add(const complex &l,const complex &r) const;

// Adio

complex

Sub(const complex &l,const complex &r) const;

// Subtrao

complex

Mul(const complex &l,const complex &r) const;

// Multiplicao

complex

Div(const complex &l,const complex &r) const;

// Diviso

};

Agora, em nosso cdigo ns podemos declarar variveis representando nmeros complexos, e


trabalhar com eles.
Por exemplo:
void OnStart()
{
//--- Declara e inicialize variveis de um tipo complexo
complex a(2,4),b(-4,-2);

2000-2015, MetaQuotes Software Corp.

149

Elementos Bsicos da Linguagem


PrintFormat("a=%.2f+i*%.2f,

b=%.2f+i*%.2f",a.re,a.im,b.re,b.im);

//--- Soma dois nmeros


complex z;
z=a.Add(a,b);
PrintFormat("a+b=%.2f+i*%.2f",z.re,z.im);
//--- Multiplica dois nmeros
z=a.Mul(a,b);
PrintFormat("a*b=%.2f+i*%.2f",z.re,z.im);
//--- Dividir dois nmeros
z=a.Div(a,b);
PrintFormat("a/b=%.2f+i*%.2f",z.re,z.im);
//--}

Mas seria mais conveniente usar os operadores usuais "+", "-", "*" e "/" para operaes aritmticas
comuns com nmeros complexos.
A palavra-chave operator usado para definir uma funo membro que realiza converso de tipo.
Operaes unrias e binrias para variveis de objeto de classe podem ser sobrecarregadas como
funes membro no estticas. Elas implicitamente agem nos objetos de classe.
A maioria das operaes binrias podem ser sobrecarregadas como funes regulares que tomam uma
varivel de classe e/ou um ponteiro de objeto desta classe como argumento. Para o nosso tipo
complexo, a sobrecarga na declarao se parecer como:
//--- Operadores
complex operator+(const complex &r) const { return(Add(this,r)); }
complex operator-(const complex &r) const { return(Sub(this,r)); }
complex operator*(const complex &r) const { return(Mul(this,r)); }
complex operator/(const complex &r) const { return(Div(this,r)); }

O exemplo completo do script:


//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Declara e inicialize variveis de um tipo complexo
complex a(2,4),b(-4,-2);
PrintFormat("a=%.2f+i*%.2f,

b=%.2f+i*%.2f",a.re,a.im,b.re,b.im);

//a.re=5;
//a.im=1;
//b.re=-1;
//b.im=-5;
//--- Soma dois nmeros
complex z=a+b;
PrintFormat("a+b=%.2f+i*%.2f",z.re,z.im);
//--- Multiplica dois nmeros
z=a*b;

2000-2015, MetaQuotes Software Corp.

150

Elementos Bsicos da Linguagem


PrintFormat("a*b=%.2f+i*%.2f",z.re,z.im);
//--- Dividir dois nmeros
z=a/b;
PrintFormat("a/b=%.2f+i*%.2f",z.re,z.im);
//--}
//+------------------------------------------------------------------+
//| Uma estrutura para operaes com nmeros complexos

//+------------------------------------------------------------------+
struct complex
{
double

re; // Parte real

double

im; // Parte imaginrio

//--- Construtores
complex():re(0.0),im(0.0) {

complex(const double r):re(r),im(0.0) {

complex(const double r,const double i):re(r),im(i) {

complex(const complex &o):re(o.re),im(o.im) { }


//--- Operaes Aritmticas
complex

Add(const complex &l,const complex &r) const;

// Adio

complex

Sub(const complex &l,const complex &r) const;

// Subtrao

complex

Mul(const complex &l,const complex &r) const;

// Multiplicao

complex

Div(const complex &l,const complex &r) const;

// Diviso

//--- Operadores binrias


complex operator+(const complex &r) const { return(Add(this,r)); }
complex operator-(const complex &r) const { return(Sub(this,r)); }
complex operator*(const complex &r) const { return(Mul(this,r)); }
complex operator/(const complex &r) const { return(Div(this,r)); }
};
//+------------------------------------------------------------------+
//| Adio

//+------------------------------------------------------------------+
complex complex::Add(const complex &l,const complex &r) const
{
complex res;
//--res.re=l.re+r.re;
res.im=l.im+r.im;
//--- Resultado
return res;
}
//+------------------------------------------------------------------+
//| Subtrao

//+------------------------------------------------------------------+
complex complex::Sub(const complex &l,const complex &r) const
{
complex res;
//--res.re=l.re-r.re;

2000-2015, MetaQuotes Software Corp.

151

Elementos Bsicos da Linguagem


res.im=l.im-r.im;
//--- Resultado
return res;
}
//+------------------------------------------------------------------+
//| Multiplicao

//+------------------------------------------------------------------+
complex complex::Mul(const complex &l,const complex &r) const
{
complex res;
//--res.re=l.re*r.re-l.im*r.im;
res.im=l.re*r.im+l.im*r.re;
//--- Resultado
return res;
}
//+------------------------------------------------------------------+
//| Diviso

//+------------------------------------------------------------------+
complex complex::Div(const complex &l,const complex &r) const
{
//--- Numero complexo vazio
complex res(EMPTY_VALUE,EMPTY_VALUE);
//--- Verificar se zero
if(r.re==0 && r.im==0)
{
Print(__FUNCTION__+": nmero zero");
return(res);
}
//--- Variveis auxiliares
double e;
double f;
//--- Selecionando a variante de clculo
if(MathAbs(r.im)<MathAbs(r.re))
{
e = r.im/r.re;
f = r.re+r.im*e;
res.re=(l.re+l.im*e)/f;
res.im=(l.im-l.re*e)/f;
}
else
{
e = r.re/r.im;
f = r.im+r.re*e;
res.re=(l.im+l.re*e)/f;
res.im=(-l.re+l.im*e)/f;
}
//--- Resultado
return res;

2000-2015, MetaQuotes Software Corp.

152

Elementos Bsicos da Linguagem


}

A maioria das operaes unrias para classes podem ser sobrecarregadas como funes comuns que
aceitam um nico argumento de objeto de classe ou ponteiro dele. Adicione sobrecarga de operaes
unrias "-" e "!".
//+------------------------------------------------------------------+
//| Uma estrutura para operaes com nmeros complexos

//+------------------------------------------------------------------+
struct complex
{
double

re;

// Parte real

double

im;

// Parte imaginrio

...
//--- Operadores unrios
complex operator-()

const; // Unary minus

bool

const; // Negao

operator!()

};
...
//+------------------------------------------------------------------+
//| Sobrecarregar operador de "menos unrio"

//+------------------------------------------------------------------+
complex complex::operator-() const
{
complex res;
//--res.re=-re;
res.im=-im;
//--- Resultado
return res;
}
//+------------------------------------------------------------------+
//| Sobrecarregar operador de "negao lgica"

//+------------------------------------------------------------------+
bool complex::operator!() const
{
//--- So as partes real e imaginria do nmero complexo igual a zero?
return (re!=0 && im!=0);
}

Agora ns podemos verificar se valor de um nmero complexo zero e obter um valor negativo:
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Declara e inicialize variveis de um tipo complexo

2000-2015, MetaQuotes Software Corp.

153

Elementos Bsicos da Linguagem


complex a(2,4),b(-4,-2);
PrintFormat("a=%.2f+i*%.2f,

b=%.2f+i*%.2f",a.re,a.im,b.re,b.im);

//--- Dividir dois nmeros


complex z=a/b;
PrintFormat("a/b=%.2f+i*%.2f",z.re,z.im);
//--- Um nmero complexo igual a zero por padro (no construtor padro re==0 e im==0
complex zero;
Print("!zero=",!zero);
//--- Atribuir um valor negativo
zero=-z;
PrintFormat("z=%.2f+i*%.2f,

zero=%.2f+i*%.2f",z.re,z.im, zero.re,zero.im);

PrintFormat("-zero=%.2f+i*%.2f",-zero.re,-zero.im);
//--- Verificar se zero mais uma vez
Print("!zero=",!zero);
//--}

Note que ns no tivemos que sobrecarregar o operador de atribuio "=", j que estruturas de tipos
simples pode ser diretamente copiadas uma no outra. Assim, ns agora podemos escrever um cdigo
para clculos envolvendo nmeros complexos de maneira usual.
Sobrecarga de operador de indexao permite obter os valores dos arrays fechados em um objeto, de
uma maneira simples e familiar, e isso tambm contribui para uma melhor legibilidade do cdigo
fonte. Por exemplo, ns precisamos fornecer acesso a um smbolo dentro de uma string em uma
posio especfica. Uma string em MQL5 um tipo string separado, que no um array de smbolos,
mas com a ajuda de uma operao de indexao sobrecarregada podemos fornecer um trabalho
simples e transparente na classe CString gerada:
//+----------------------------------------------------------------------+
//| Uma classe para acessar smbolos em string como na array de smbolos |
//+----------------------------------------------------------------------+
class CString
{
string

m_string;

public:
CString(string str=NULL):m_string(str) { }
ushort operator[] (int x) { return(StringGetCharacter(m_string,x)); }
};
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Um array para receber os smbolos a partir de uma string
int

x[]={ 19,4,18,19,27,14,15,4,17,0,19,14,17,27,26,28,27,5,14,
17,27,2,11,0,18,18,27,29,30,19,17,8,13,6 };

CString str("abcdefghijklmnopqrstuvwxyz[ ]CS");


string

res;

//--- Fazer um frase usando smbolos da varivel str

2000-2015, MetaQuotes Software Corp.

154

Elementos Bsicos da Linguagem


for(int i=0,n=ArraySize(x);i<n;i++)
{
res+=ShortToString(str[x[i]]);
}
//--- Mostrar o resultado
Print(res);
}

Um outro exemplo de sobrecarga do operador de indexao so operaes com matrizes. A matriz


representa um array dinmico de duas dimenses, o tamanho do array no definido com
antecedncia. Portanto, voc no pode declarar um array da forma array[][] sem especificar o
tamanho da segunda dimenso, e ento passar este array como um parmetro. Uma possvel soluo
uma classe especial CMatrix, que contm um array de objetos de classe CRow.
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Operaes de adio e multiplicao de matrizes
CMatrix A(3),B(3),C();
//--- Preparar um array para as linhas
double a1[3]={1,2,3}, a2[3]={2,3,1}, a3[3]={3,1,2};
double b1[3]={3,2,1}, b2[3]={1,3,2}, b3[3]={2,1,3};
//--- Preencher as matrizes
A[0]=a1; A[1]=a2; A[2]=a3;
B[0]=b1; B[1]=b2; B[2]=b3;
//--- Sada de matrizes no log Experts
Print("---- Os elementos da matriz A");
Print(A.String());
Print("---- Os elementos da matriz B");
Print(B.String());
//--- Adio de matrizes
Print("---- Adio das matrizes A e B");
C=A+B;
//--- Sada da representao da string formatada
Print(C.String());
//--- Multiplicao de matrizes
Print("---- Multiplicao das matrizes A e B");
C=A*B;
Print(C.String());
//--- Agora mostraremos como obter valores no estilo dos arrays dinmicos matrix[i][j]
Print("Sada de valores da matriz C elemento a elemento");
//--- Atravessar as linhas da matriz - objetos CRow - num loop
for(int i=0;i<3;i++)
{

2000-2015, MetaQuotes Software Corp.

155

Elementos Bsicos da Linguagem


string com="| ";
//--- Formar linhas a partir da matriz para o valor
for(int j=0;j<3;j++)
{
//--- Obter o elemento da matriz pelo nmero de linha e coluna
double element=C[i][j];// [i] - Acesso para CRow no array m_rows[] ,
// [j] - Operador sobrecarregado da indexao em CRow
com=com+StringFormat("a(%d,%d)=%G ; ",i,j,element);
}
com+="|";
//--- Sada dos valores da linha
Print(com);
}
}
//+------------------------------------------------------------------+
//| Class "Row"

//+------------------------------------------------------------------+
class CRow
{
private:
double

m_array[];

public:
//--- Construtores e um destrutor
CRow(void)

{ ArrayResize(m_array,0);

CRow(const CRow &r) { this=r;

}
}

CRow(const double &array[]);


~CRow(void){};
//--- Nmero de elementos na linha
int

Size(void) const

{ return(ArraySize(m_array));}

//--- Retorna uma string com valores


string

String(void) const;

//--- Operador de indexao


double

operator[](int i) const

{ return(m_array[i]);

//--- Operadores de atribuio


void

operator=(const double

&array[]); // Uma array

void

operator=(const CRow & r);

// Outro objeto CRow

double

operator*(const CRow &o);

// Objeto CRow para multiplicao

};
//+------------------------------------------------------------------+
//| Construtor para inicializar uma linha com um array

//+------------------------------------------------------------------+
void

CRow::CRow(const double &array[])

{
int size=ArraySize(array);
//--- Se o array no est vazio
if(size>0)
{
ArrayResize(m_array,size);
//--- Preencher com valores

2000-2015, MetaQuotes Software Corp.

156

Elementos Bsicos da Linguagem


for(int i=0;i<size;i++)
m_array[i]=array[i];
}
//--}
//+------------------------------------------------------------------+
//| Atribuir operao para o array

//+------------------------------------------------------------------+
void CRow::operator=(const double &array[])
{
int size=ArraySize(array);
if(size==0) return;
//--- Preencher array com valores
ArrayResize(m_array,size);
for(int i=0;i<size;i++) m_array[i]=array[i];
//--}
//+------------------------------------------------------------------+
//| Operao de atribuio para CRow

//+------------------------------------------------------------------+
void CRow::operator=(const CRow

&r)

{
int size=r.Size();
if(size==0) return;
//--- Preencher array com valores
ArrayResize(m_array,size);
for(int i=0;i<size;i++) m_array[i]=r[i];
//--}
//+------------------------------------------------------------------+
//| Operador de multiplicao por outra linha

//+------------------------------------------------------------------+
double CRow::operator*(const CRow &o)
{
double res=0;
//--- Verificaes
int size=Size();
if(size!=o.Size() || size==0)
{
Print(__FUNCSIG__,": Falha ao multiplicar duas matrizes, elas so de tamanhos diferentes");
return(res);
}
//--- Multiplicar arrays elemento a elemento e adicionar os produtos
for(int i=0;i<size;i++)
res+=m_array[i]*o[i];
//--- Resultado
return(res);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

157

Elementos Bsicos da Linguagem


//| Retorno da representao da string formatada

//+------------------------------------------------------------------+
string CRow::String(void) const
{
string out="";
//--- Se o tamanho do array maior do que zero
int size=ArraySize(m_array);
//--- Trabalhamos apenas com nmeros diferentes de zero dos elementos array
if(size>0)
{
out="{";
for(int i=0;i<size;i++)
{
//--- Recolher os valores para a string
out+=StringFormat(" %G;",m_array[i]);
}
out+=" }";
}
//--- Resultado
return(out);
}
//+------------------------------------------------------------------+
//| Class "Matrix"

//+------------------------------------------------------------------+
class CMatrix
{
private:
CRow

m_rows[];

public:
//--- Construtores e um destrutor
CMatrix(void);
CMatrix(int rows)

{ ArrayResize(m_rows,rows);

~CMatrix(void){};
//--- Obter os tamanhos de matriz
int

Rows()

const { return(ArraySize(m_rows));

int

Cols()

const { return(Rows()>0? m_rows[0].Size():0); }

//--- Retorna o valor da coluna na forma da linha Crow


CRow

GetColumnAsRow(const int col_index) const;

//--- Retorna uma string com valores de matriz


string

String(void) const;

//--- O operador de indexao retorna uma string pelo seu nmero


CRow *operator[](int i) const

{ return(GetPointer(m_rows[i]));

//--- Operador de adio


CMatrix

operator+(const CMatrix &m);

//--- Operador de multiplicao


CMatrix

operator*(const CMatrix &m);

//--- Operador de atribuio


CMatrix

*operator=(const CMatrix &m);

2000-2015, MetaQuotes Software Corp.

158

Elementos Bsicos da Linguagem


};
//+------------------------------------------------------------------+
//| Um construtor padro, cria um array de linhas de tamanho zero

//+------------------------------------------------------------------+
CMatrix::CMatrix(void)
{
//--- O nmero zero das linhas na matriz
ArrayResize(m_rows,0);
//--}
//+------------------------------------------------------------------+
//| Retorna o valor da coluna na forma de CRow

//+------------------------------------------------------------------+
CRow

CMatrix::GetColumnAsRow(const int col_index) const

{
//--- A varivel para obter os valores a partir da coluna
CRow row();
//--- O nmero de linhas na matriz
int rows=Rows();
//--- Se o nmero de linhas maior do que zero, executar a operao
if(rows>0)
{
//--- Um array para receber os valores da coluna com ndice col_indez
double array[];
ArrayResize(array,rows);
//--- Preenchendo o array
for(int i=0;i<rows;i++)
{

//--- Verificar o nmero da coluna para a linha i - que podem ultrapassar os limites da ma
if(col_index>=this[i].Size())
{
Print(__FUNCSIG__,": Erro! Nmero da coluna ",col_index,"> tamanho da linha ",i);
break; // linha no inicializar o objeto
}
array[i]=this[i][col_index];
}
//--- Criar uma linha CRow baseada nos valores do array
row=array;
}
//--- Resultado
return(row);
}
//+------------------------------------------------------------------+
//| Adicionar duas matrizes

//+------------------------------------------------------------------+
CMatrix CMatrix::operator+(const CMatrix &m)
{
//--- O nmero de linha e colunas na matriz passada
int cols=m.Cols();

2000-2015, MetaQuotes Software Corp.

159

Elementos Bsicos da Linguagem


int rows=m.Rows();
//--- A matriz recebe os resultados da adio
CMatrix res(rows);
//--- Os tamanhos de matriz devem coincidir
if(cols!=Cols() || rows!=Rows())
{
//--- Adio impossvel
Print(__FUNCSIG__,": Falha para adicionar duas matrizes, seus tamanhos so diferentes");
return(res);
}
//--- Array auxiliar
double arr[];
ArrayResize(arr,cols);
//--- Atravessar as linhas para adicionar
for(int i=0;i<rows;i++)
{
//--- Escrever os resultados da adio das strings matriz no array
for(int k=0;k<cols;k++)
{
arr[k]=this[i][k]+m[i][k];
}
//--- Colocar o array para a linha matriz
res[i]=arr;
}
//--- retorna o resultado da adio de matrizes
return(res);
}
//+------------------------------------------------------------------+
//| Multiplicao de duas matrizes

//+------------------------------------------------------------------+
CMatrix CMatrix::operator*(const CMatrix &m)
{
//--- Nmero de colunas da primeira matriz, nmero de linhas transmitidas na matriz
int cols1=Cols();
int rows2=m.Rows();
int rows1=Rows();
int cols2=m.Cols();
//--- Matriz para receber o resultado da adio
CMatrix res(rows1);
//--- Matrizes devem ser coordenadas
if(cols1!=rows2)
{
//--- Multiplicao impossvel
Print(__FUNCSIG__,": Falha para multiplicar duas matrizes, formato no compatvel "

"- o nmero de colunas no primeiro fator deveria ser igual ao nmero de linhas na segun
return(res);
}
//--- Array auxiliar
double arr[];

2000-2015, MetaQuotes Software Corp.

160

Elementos Bsicos da Linguagem


ArrayResize(arr,cols1);
//--- Preencher as linhas na multiplicao da matriz
for(int i=0;i<rows1;i++)// Atravessar as linhas
{
//--- Restabelecer o array recebido
ArrayInitialize(arr,0);
//--- Atravessar elementos na linha
for(int k=0;k<cols1;k++)
{
//--- Levar valores da coluna k da matriz m para CRow
CRow column=m.GetColumnAsRow(k);
//--- Multiplicar duas linhas e escrever o resultado da multiplicao escalar dos vetroes
arr[k]=this[i]*column;
}
//--- colocar array arr[] na linha i-th da matriz
res[i]=arr;
}
//--- Retornar o produto das duas matrizes
return(res);
}
//+------------------------------------------------------------------+
//| Operao de atribuio

//+------------------------------------------------------------------+
CMatrix *CMatrix::operator=(const CMatrix &m)
{
//--- Preencher e defineir o nmero de linhas
int rows=m.Rows();
ArrayResize(m_rows,rows);
//--- Preencher nossas linhas com valores das linhas da matriz anterior
for(int i=0;i<rows;i++) this[i]=m[i];
//--return(GetPointer(this));
}
//+------------------------------------------------------------------+
//| Representao string da matriz

//+------------------------------------------------------------------+
string CMatrix::String(void) const
{
string out="";
int rows=Rows();
//--- Formar string por string
for(int i=0;i<rows;i++)
{
out=out+this[i].String()+"\r\n";
}
//--- Resultado
return(out);
}

2000-2015, MetaQuotes Software Corp.

161

Elementos Bsicos da Linguagem

Tambm Veja
Sobrecarga, Operaes Aritmticas, Sobrecarga de Funo, Regras de Precedncia

2000-2015, MetaQuotes Software Corp.

162

Elementos Bsicos da Linguagem

Descrio de Funes Externas


As funes externas definidas em outro mdulo devem ser explicitamente descritas. A descrio inclui
o tipo retornado, o nome da funo e uma srie dos parmetros de entrada com os seus tipos. A
ausncia de tal descrio pode levar a erros ao compilar, construir e executar um programa. Ao
descrever um objeto externo, use a palavra-chave #import indicando o mdulo.
Exemplos:
#import "user32.dll"
int

MessageBoxW(int hWnd ,string szText,string szCaption,int nType);

int

SendMessageW(int hWnd,int Msg,int wParam,int lParam);

#import "lib.ex5"
double

round(double value);

#import

Com a ajuda do import, fcil descrever funes que so chamadas de DLL externas ou de bibliotecas
(libraries) EX5 compiladas. Bibliotecas (libraries) EX5 so arquivos ex5 compilados, que tm a
propriedade library. Somente funes descritas com o modificador export pode ser importadas de
bibliotecas (libraries) EX5.
Please keep in mind that DLL and EX5 libraries should have different names (regardless of the
directories they are located in) if they are imported together. All imported functions have the scope
resolution corresponding to the library's "file name".
Example:
#import "kernel32.dll"
int GetLastError();
#import "lib.ex5"
int GetLastError();
#import
class CFoo
{
public:
int

GetLastError() { return(12345); }

void

func()

{
Print(GetLastError());

// call of the class method

Print(::GetLastError());

// call of the MQL5 function

Print(kernel32::GetLastError()); // call of the DLL library function from kernel32.dll


Print(lib::GetLastError());

// call of the EX5 library function from lib.ex5

}
};
void OnStart()
{
CFoo foo;
foo.func();
}

2000-2015, MetaQuotes Software Corp.

163

Elementos Bsicos da Linguagem

Tambm Veja
Sobrecarga (Overload), Funes Virtuais, Polimorfismo

2000-2015, MetaQuotes Software Corp.

164

Elementos Bsicos da Linguagem

Exportao de Funes
Uma funo declarada em um programa MQL5 com o ps-modificador export pode ser usada em um
outro programa MQL5. Tal funo chamada exportvel, e ela pode ser chamada de outros programas
aps compilao.
int Function() export
{
}

Este modificador ordena o compilador a adicionar a funo na tabela de funes EX5 exportada por
este arquivo ex5. Somente funes com tal modificador podem ser acessveis ("visveis") a partir de
outros programas MQL5.
A propriedade library diz ao compilador que o arquivo-EX5 ser uma biblioteca (library), e o compilador
o exibir no cabealho da EX5.
Todas as funo que so planejadas a serem exportveis devem ser marcadas com o modificador
export.
Tambm Veja
Sobrecarga (Overload), Funes Virtuais, Polimorfismo

2000-2015, MetaQuotes Software Corp.

165

Elementos Bsicos da Linguagem

Funes de Manipulao de Evento


A linguagem MQL5 fornece processamento de alguns eventos pr-definidos. Funes para manipulao
destes eventos devem ser definidas em um programa MQL5; nome da funo, tipo de retorno,
composio dos parmetros (se existir algum) e seus tipos devem estar rigorosamente em
conformidade com a descrio da funo de handler (manipulador) de evento.
O handler (manipulador) de evento do terminal cliente identifica funes, manipulando este ou aquela
evento, pelo tipo de valor de retorno e tipo de parmetros. Se outros parmetros, que no
correspondem s descries abaixo, so especificadas para uma funo correspondente, ou outro tipo
de retorno indicado para ela, tal funo no ser usada como um handler (manipulador) de evento.

OnStart
A funo OnStart() o handler (manipulador) do evento Start ,que automaticamente gerado
somente para execues de scripts. Ela dever ser do tipo void, sem parmetros:
void OnStart();

Para a funo OnStart(), o tipo de retorno int pode ser especificado.

OnInit
A funo OnInit() o handler (manipulador) do evento Init. Ela deve ser do tipo void ou int, sem
parmetros:
void OnInit();

O evento Init gerado imediatamente aps um Expert Advisor ou um indicador ser baixado; este
evento no gerado para scripts. A funo OnInit() usada para inicializao. Se OnInit() tiver o tipo
int de valor de retorno, o cdigo de retorno no-zero significa inicializao sem sucesso e gerado o
evento Deinit com o cdigo do motivo da desinicializao REASON_INITFAILED.
Para otimizar os parmetros de entrada de um Expert Advisor, recomendado usar valores da
enumerao ENUM_INIT_RETCODE como cdigo de retorno. Esses valores so usados para organizar o
curso da otimizao, incluindo a seleo dos mais apropriados agentes de teste. Durante a
inicializao de um Expert Advisor, antes do incio do teste, voc pode solicitar informao sobre a
configurao e recursos de um agente (o nmero de cores, quantidade de memria livre, etc) usando a
funo TerminalInfoInteger(). Baseado nestas informaes obtidas, pode-se tanto permitir usar este
agente de teste, ou rejeitar us-lo durante a otimizao deste Expert Advisor.
ENUM_INIT_RETCODE
Identificador

Descrio

INIT_SUCCEEDED

Inicializao bem sucedida, teste do Expert


Advisor pode continuar.
Este cdigo significa o mesmo que um valor null
= o Expert Advisor foi inicializado com sucesso
no Provador de Estratgia.

INIT_FAILED

Inicializao com falha; no existe motivo para


continuar testando por cause de erros fatais.

2000-2015, MetaQuotes Software Corp.

166

Elementos Bsicos da Linguagem

Por exemplo, falha em criar um indicador que


requerido para o funcionamento do Expert
Advisor.
Este valor de retorno significa o mesmo que um
valor diferente de zero - inicializao do Expert
Advisor pelo Provador de Estratgia falhou.
INIT_PARAMETERS_INCORRECT

Este valor significa a incorreta definio da


entrada de parmetros. A seqncia de
resultado contendo o cdigo de retorno
destacado em vermelho na tabela de otimizao
geral.
O teste para o dado conjunto de parmetros do
Expert Advisor no ser executado, o agente
liberado para receber uma nova tarefa.
Depois de receber este valor, o testador de
estratgia com segurana no vai passar essa
tarefa para que outros agentes tentem
novamente.

INIT_AGENT_NOT_SUITABLE

Nenhum erro durante a inicializao, mas por


alguma razo o agente no adequado para o
teste. Por exemplo, ausncia de memria
suficiente, sem support ao OpenCL, etc.
Aps este cdigo de retorno, o agente no
receber tarefas at o fim desta otimizao.

A funo OnInit() do tipo void sempre indica inicializao bem sucedida.

OnDeinit
A funo OnDeinit() chamada durante a desinicializao e o handler (manipulador) do evento
Deinit. Ela deve ser declarada com o tipo void e ter um parmetro do tipo const int, que contm o
cdigo do motivo da desinicializao. Se um tipo diferente declarado, o compilador gerar um aviso
e a funo no ser chamada. Para scripts o evento Deinit no gerado e portanto a funo
OnDeInit() no pode ser usada em scripts.
void OnDeinit(const int reason);

O evento Deinit gerado para Expert Advisors e indicadores nos seguintes casos:
antes de uma reinicializao devido mudana de ativo (symbol) ou perodo do grfico no qual o
programa MQL5 est anexado;
antes de uma reinicializao devido mudana de parmetros de entrada;
antes de descarregar o programa MQL5.

OnTick
O evento NewTick gerado para Expert Advisors somente quanto um novo preo (tick) para um ativo
recebido pelo grfico no qual o Expert Advisor est anexado. intil definir a funo OnTick() num
indicador personalizado ou script, porque o evento NewTick no gerado para eles.

2000-2015, MetaQuotes Software Corp.

167

Elementos Bsicos da Linguagem


O evento Tick gerado apenas para Expert Advisors, mas isso no significa que Expert Advisors
requer a funo OnTick(), uma vez que no so apenas os eventos NewTick gerados para Expert
Advisors, mas tambm so gerados os eventos de Timer, BookEvent e ChartEvent. Ela deve ser
declarada com o tipo void, sem parmetros:
void OnTick();

OnTimer
A funo OnTimer() chamada quando o evento Timer ocorre, que gerado pelo timer do sistema
somente para Expert Advisors e indicadores - ela no pode ser usada em scprits. A freqncia de
ocorrncia do evento definida na subscrio de notificaes deste evento atravs da funo
EventSetTimer().
Voc pode desfazer a subscrio de receber eventos de timer para um Expert Advisor particular usando
a funo EventKillTimer(). A funo de ser definida com o tipo void, sem parmetros:
void OnTimer();

recomendvel chamar a funo EventSetTimer() uma vez na funo OnInit(), e a funo


EventKillTimer() deve ser chamada uma vez em OnDeinit().
Todo Expert Advisor, assim como todo indicador funciona com seu prprio timer e recebe eventos
apenas a partir dele. To logo um programa MQL5 para de funcionar, o timer destrudo de forma
forada, se ele foi criado mas no desabilitado pela funo EventKillTimer().

OnTrade
A funo chamada quando o evento Trade ocorre, que surge quando voc muda a lista de ordens
postadas e posies abertas, o histrico de ordens e histrico de operaes (deals). Quando uma
atividade de negociao (trade) realizada (abertura de ordem pendente, abertura/fechamento de
posio, definio de stop, disparo de ordem pendente, etc.) o histrico de ordens e operaes (deals)
e/ou a lista de posies e ordens correntes so por conseqncia alterados.
void OnTrade();

Os usurios devem implementar de forma independente no cdigo a verificao do estado de uma


conta de negociao quanto tal evento recebido (se isto requerido pelas condies da estratgia de
negcio). Se a chamada da funo OrderSend() foi concluda com sucesso e retornou um valor de true,
isso significa que o servidor de negociao postou a ordem na fila de execuo e atribuiu um nmero
de bilhetagem (ticket number) nele. To logo o servidor processe esta ordem, o evento Trade ser
gerado. E se um usurio lembrar valor da bilhetagem (ticket), ele/ela ser capaz de descobrir o que
aconteceu com a ordem usando este valor na funo OnTrade().

OnTradeTransaction
Ao realizar algumas aes especficas em uma conta de negociao, seu estado muda. Tais aes
includem:
Envio de uma solicitao de negociao a partir de algum aplicativo MQL5 no terminal usando as
funes OrderSend e OrderSendAsync e sua posterior execuo.
Envio de uma solicitao de negociao por meio da interface grfica do terminal e sua posterior
execuo.

2000-2015, MetaQuotes Software Corp.

168

Elementos Bsicos da Linguagem


Ativao de ordens pendentes e ordens de stop no servidor.
Realizao de operaes no lado de um servidor de negociao.
As seguintes transaes de negociao so realizadas como resultado destas aes:
tratamento de uma solicitao de negociao
mudana de ordens de abertura
mudana de histrico de ordens
mudana de histrico de operaes (deals)
mudana de posies
Por exemplo, ao enviar uma ordem de compra de mercado, ela tratada, uma ordem de compra
apropriada criada para a conta, a ordem ento executada e removida da lista de ordens em
aberto, e ento ela adicionada ao histrico de ordens, uma apropriada operao (deal) adicionada
ao histrico e uma nova posio criada. Todas estas aes so transaes de negociao. A chegada
de tal transao no terminal um evento TradeTransaction. Ele chama o handler (manipulador) de
evento OnTradeTransaction.
void OnTradeTransaction(
const MqlTradeTransaction&

trans,

// estrutura das transaes de negcios

const MqlTradeRequest&

request,

// estrutura solicitada

const MqlTradeResult&

result

// resultado da estrutura

);

O handler (manipulador) contm trs parmetros:


trans - este parmetro obtm a estrutura MqlTradeTransaction descrevendo uma transao de
negociao aplicada a uma conta de negcio.
request - este parmetro obtm a estrutura MqlTradeRequest descrevendo uma solicitao de
negcio;
result - este parmetro obtm a estrutura MqlTradeResult descrevendo o resultado da execuo de
uma solicitao de negociao.
Os ltimos dois parmetros, request e result, so preenchidos por valores somente para uma
transao de tipo TRADE_TRANSACTION_REQUEST, dados sobre uma transao podem ser recebidos a
partir do parmetro do tipo da varivel trans. Note que neste caso, o campo request_id na varivel
result contm o ID da solicitao de negcio, aps a execuo da transao de negociao, descrita
na varivel trans, ter sido realizada. O identificador da solicitao (Request ID) permite associar a
ao realizada (chamada de funes OrderSend ou OrderSendAsync) com o resultado da ao enviado
para OnTradeTransaction().
Uma solicitao de negociao manualmente enviada a partir do terminal ou via funes OrderSend()/
OrderSendAsync() podem gerar vrias transaes consecutivas no servidor de negcios. A prioridade
de chegada dessas transaes no terminal no garantida. Assim, voc no deve esperar que um
grupo de transaes chegar aps um outro grupo ao desenvolver seu algoritmo de negociao. Alm
disso, transaes podem ser perdidas durante a entrega do servidor para o terminal.

2000-2015, MetaQuotes Software Corp.

169

Elementos Bsicos da Linguagem

Todos os tipo de transaes de negociao so descritas na enumerao


ENUM_TRADE_TRANSACTION_TYPE.
A estrutura MqlTradeTransaction descrevendo um transao de negociao preenchida de
diferentes formas dependendo do tipo de transao. Por exemplo, somente o campo de tipo
(tipo de transao de negociao) deve ser analisado para transaes do tipo
TRADE_TRANSACTION_REQUEST. O segundo e terceiro parmetros (request e result) da funo
OnTradeTransaction deve ser analisado para dados adicionais. Para informaes adicionais,
veja Estrutura de uma Transao de Negociao.
Uma descrio de transao de negociao no entrega todas as informaes disponveis
relativas a ordens, operaes (deals) e posies (por exemplo, comentrios). As funes
OrderGet*, HistoryOrderGet*, HistoryDealGet* e PositionGet* devem ser usadas para obter
informaes adicionais.
Aps aplicar transaes de negociao em uma conta de cliente, elas so consistentemente postadas
na fila de transaes de negcio do terminal, a partir da qual so consistentemente enviados para o
ponto de entrada OnTradeTransaction na ordem de chegada no terminal.
Ao tratar transaes de negociao por um Expert Advisor usando o handler OnTradeTransaction
(Manipulador sobre Transao de Comrcio), o terminal continua manipulando as transaes de
negociao recm chegadas. Portanto, o estado de uma conta de negociao pode mudar durante uma
operao OnTradeTransaction. Por exemplo, enquanto um programa MQL5 manipula um evento para
adicionar uma nova ordem, ela pode ser executada, deletada da lista das abertas e movida para o
histrico. Mais adiante, o aplicativo ser notificado destes eventos.
O comprimento da fila de transaes compreende 1024 elementos. Se OnTradeTransaction tratar uma
nova transao por muito tempo, as transaes mais antigas na fila podem ser substitudas pelas
novas.
De forma geral, no existe um proporo precisa entre o nmero de chamadas de OnTrade e
OnTradeTransactions. Uma chamada OnTrade corresponde a uma ou vrias chamadas
OnTradeTransactions.
OnTrade chamada aps apropriadas chamadas OnTradeTransaction.

OnTester
A funo OnTester() o handler (manipulador) do evento Tester que automaticamente gerado aps
um teste de histrico de um Expert Advisor no intervalo escolhido ter terminado. A funo deve estar
definida com o tipo double, sem parmetros:
double OnTester();

A funo chamada logo antes da chamada de OnDeinit() e tem o mesmo tipo do valor de retorno double. OnTester() pode ser usado apenas no teste de Expert Advisors. Seu principal propsito
calcular um certo valor que usado como o critrio max customizado na otimizao gentica de
parmetros de entrada.
Na otimizao gentica, a ordenao descendente aplica aos resultados de uma gerao. Isto , do
ponto de vista do critrio de otimizao, os melhores resultados so aqueles com o maiores valores
(os valores do critrio de otimizao max customizado retornados pela funo OnTester so levados
em considerao). Em tal ordenao, os piores valores so posicionados no final e posteriormente

2000-2015, MetaQuotes Software Corp.

170

Elementos Bsicos da Linguagem


jogados fora e no participam na formao da nova gerao.

OnTesterInit
A funo OnTesterInit() o handler( manipulador) do evento TesterInit, que automaticamente
gerado antes de iniciar a otimizao do Expert Advisor no Provador de Estratgia. A funo deve ser
definida com o tipo void. Ele no tem parmetros:
void OnTesterInit();

Com o incio da otimizao, um Expert Advisor com o handler (manipulador) OnTesterInit() ou


OnTesterPass() automaticamente carregado em um grfico separado do terminal com o ativo e
perodo especificados no Provador de Estratgia, e recebe o evento TesterInit. A funo usada para
inicializar o Expert Advisor antes de iniciar a otimizao para posterior processamento dos resultados
da otimizao.

OnTesterPass
A funo OnTesterPass() um handler (manipulador) do evento TesterPass, que automaticamente
gerado quanto um plano recebido durando a otimizao de um Expert Advisor no Provador de
Estratgia. A funo deve ser definida com o tipo void. Ele no tem parmetros:
void OnTesterPass();

Um Expert Advisor com o handler (manipulador) OnTesterPass() automaticamente carregado em um


grfico separado do terminal com o ativo/perodo especificados para teste, e obtm eventos
TesterPass quando um plano recebido durante uma otimizao. A funo usada para tratamento
dinmico dos resultados de otimizao "no local" sem precisar esperar pela sua concluso. Planos so
adicionados usando a funo FrameAdd(), que pode ser chamada aps o fim de um passo nico no
handler (manipulador) OnTester() .

OnTesterDeinit
OnTesterDeinit() um handler (manipulador) do TesterDeinit, que automaticamente gerada aps o
fim da optimizao de um Expert Advisor no Provador de Estratgia. A funo deve ser definida com o
tipo void. Ele no tem parmetros:
void OnTesterDeinit();

Um Expert Advisor com o handler (manipulador) TesterDeinit() automaticamente carregada em um


grfico no incio da otimizao, e recebe TesterDeinit aps sua concluso. A funo usada para um
processamento final de todos os resultados da otimizao.

OnBookEvent
A funo OnBookEvent() o handler (manipulador) do BookEvent. BookEvent gerado para Expert
Advisors e indicadores somente quando a Profundidade do Mercado muda. Ela deve do tipo void e ter
um parmetro do tipo string:
void OnBookEvent (const string& symbol);

Para receber eventos BookEvent para qualquer ativo (symbol), voc apenas precisa fazer uma prsubscrio pra receber eventos para este ativo usando a funo MarketBookAdd(). A fim de desfazer a

2000-2015, MetaQuotes Software Corp.

171

Elementos Bsicos da Linguagem


subscrio de recebimento
MarketBookRelease().

de

eventos

BookEvent

para

um

particular

ativo,

chame

Diferente de outros eventos, o evento BookEvent por difuso (broadcast). Isso significa que se um
Expert Advisor subscreve para receber eventos BookEvent usando MarketBookAdd, todos os outros
Experts Advisors que tem o handler (manipulador) OnBookEvent() recebero este evento. portanto
necessrio analisar o nome do ativo, que passado para o handler (manipulador) atravs dos
parmetros const string& symbol.

OnChartEvent
OnChartEvent() o handler (manipulador) de um grupo de eventos ChartEvent:
CHARTEVENT_KEYDOWN evento de uma teclada, quando a janela do grfico est com foco;
CHARTEVENT_MOUSE_MOVE eventos de movimento de mouse e eventos de click de mouse (se
CHART_EVENT_MOUSE_MOVE=true definido para o grfico);
CHARTEVENT_OBJECT_CREATE

evento
de
criao
CHART_EVENT_OBJECT_CREATE=true definido para o grfico);

de

objeto

grfico

(se

CHARTEVENT_OBJECT_CHANGE evento de mudana de um propriedade de objeto via janela


dilogo de propriedades;
CHARTEVENT_OBJECT_DELETE

evento
de
excluso
CHART_EVENT_OBJECT_DELETE=true definido para o grfico);

de

objeto

grfico

(se

CHARTEVENT_CLICK evento de um click de mouse no grfico;


CHARTEVENT_OBJECT_CLICK evento de um click de mouse em um objeto grfico pertencente ao
grfico;
CHARTEVENT_OBJECT_DRAG evento de um movimento de objeto grfico usando o mouse;
CHARTEVENT_OBJECT_ENDEDIT evento da edio de texto finalizada na caixa de entrada do
objeto grfico LabelEdit;
CHARTEVENT_CHART_CHANGE evento de mudanas de grfico;
CHARTEVENT_CUSTOM+n ID do evento do usurio, onde n est na faixa de 0 a 65535.
CHARTEVENT_CUSTOM_LAST
(CHARTEVENT_CUSTOM+65535).

ltimo

ID

aceitvel

de

um

evento

customizado

A funo pode ser chamada somente em Expert Advisors e indicadores. A funo deve ser de tipo void
com 4 parmetros:
void OnChartEvent(const int id,

// Evento ID

const long& lparam,

// Parmetro de evento de tipo long

const double& dparam, // Parmetro de evento de tipo double


const string& sparam

// Parmetro de evento de tipo string

);

Para cada tipo de evento, os parmetros de entrada da funo OnChartEvent() tm valores definidos
que so requeridos para o processamento deste evento. Os eventos e valores passados atravs destes
parmetros so listados na tabela abaixo.
Evento

Valor
do
parmetro id

Valor
parmetro

do

Valor
parmetro

2000-2015, MetaQuotes Software Corp.

do

Valor
parmetro

do

172

Elementos Bsicos da Linguagem

lparam

dparam

sparam

Evento de uma
teclada

CHARTEVENT_KE
YDOWN

cdigo de uma
tecla pressionada

Repita
a
contagem
(o
nmero de vezes
que a tecla
repetida
como
um resultado de
que o usurio
pressiona
a
tecla)

O valor da string
de uma pequena
mscara
de
descrever
o
estado de botes
do teclado

Eventos
de
mouse (se a
propriedade
CHART_EVENT_
MOUSE_MOVE=tr
ue est definida
para o grfico)

CHARTEVENT_MO
USE_MOVE

a coordenada X

a coordenada Y

O valor de string
de uma mscara
de
bites
descrevendo
o
estado de botes
de mouse

Evento
de
criao
de
objeto
grfico
(se
CHART_EVENT_O
BJECT_CREATE=t
rue, ento
definido para o
grfico)

CHARTEVENT_OB
JECT_CREATE

Nome do objeto
grfico criado

Evento
de
mudana de uma
propriedade de
objeto via janela
de dilogo de
propriedades

CHARTEVENT_OB
JECT_CHANGE

Nome do objeto
grfico
modificado

Evento
de
excluso
de
objeto
grfico
(se
CHART_EVENT_O
BJECT_DELETE=t
rue est definido
para o grfico)

CHARTEVENT_OB
JECT_DELETE

Nome do objeto
grfico excludo

Evento de um
click de mouse
no grfico

CHARTEVENT_C
LICK

a coordenada X

a coordenada Y

Evento de um
click de mouse
num
objeto

CHARTEVENT_OB
JECT_CLICK

a coordenada X

a coordenada Y

Nome do objeto
grfico, na qual
o evento ocorreu

2000-2015, MetaQuotes Software Corp.

173

Elementos Bsicos da Linguagem

grfico
pertencente
grfico

ao

Evento de um
objeto
grfico
arrastado usando
o mouse

CHARTEVENT_OB
JECT_DRAG

Nome do objeto
grfico movido

Evento da edio
de
texto
finalizada
na
caixa de entrada
do objeto grfico
LabelEdit

CHARTEVENT_OB
JECT_ENDEDIT

Nome do objeto
grfico
LabelEdit, cuja
edio de texto
foi concluda

Evento
mudanas
grfico

CHARTEVENT_C
HART_CHANGE

CHARTEVENT_CU
STOM+N

Valor
definido
pela
funo
EventChartCusto
m()

Valor
definido
pela
funo
EventChartCusto
m()

Valor
definido
pela
funo
EventChartCusto
m()

de
de

ID do evento de
usurio sob N
nmero

OnCalculate
A funo OnCalculate() chamada somente em indicadores customizados quando necessrio calcular
os valores do indicador pelo evento Calculate. Isso geralmente acontece quando um novo preo (tick)
recebido para o ativo, de cujo indicador calculado. No necessrio que este indicador esteja
anexado a qualquer grfico de preo deste ativo.
A funo OnCalculate() deve retornar um tipo int. Existem duas possveis definies. Dentro de um
indicador voc no pode usar ambas as verses da funo.
A primeira forma destinado para aqueles indicadores que podem ser calculados com um nico buffer
de dados. Um exemplo de tal indicador a Mdia Mvel Customizada (Custom Moving Average).
int OnCalculate (const int rates_total,

// tamanho do array price[]

const int prev_calculated,

// barras tratadas na chamada anterior

const int begin,

// a partir de onde comeam os dados significativos

const double& price[]

// array a ser calculado

);

Assim como o array price[], uma das srie de preo ou um buffer calculado de algum indicador pode
ser passado. Para determinar a direo da indexao no array price[], chame ArrayGetAsSeries(). A
fim de no depender de valores default, voc deve incondicionalmente chamar a funo
ArraySetAsSeries() para aqueles arrays que voc espera utilizar.
Uma srie de tempo necessria ou um indicador, para ser usado como o array price[], deve ser
selecionado pelo usurio na guia "Parmetros" ao iniciar o indicador. Para fazer isso, voc deve
especificar o necessrio item no lista drop-down do campo "Aplicar a".

2000-2015, MetaQuotes Software Corp.

174

Elementos Bsicos da Linguagem

Para receber valores de um indicador customizado a partir outros programas mql5, a funo iCustom()
usada, que retorna o manuseio do indicador para operaes subseqentes. Voc pode tambm
especificar o price[] array apropriado ou o manuseio de outro indicador. Este parmetro deve ser
transmitido por ltimo na lista de variveis de entrada do indicador customizado.
Exemplo:
void OnStart()
{
//--string terminal_path=TerminalInfoString(STATUS_TERMINAL_PATH);

int handle_customMA=iCustom(Symbol(),PERIOD_CURRENT, "Custom Moving Average",13,0, MODE_EMA,PRIC


if(handle_customMA>0)
Print("handle_customMA = ",handle_customMA);
else

Print("Pode abrir ou no o arquivo EX5 '"+terminal_path+"\\MQL5\\Indicators\\"+"Custom Moving


}

Neste exemplo, o ltimo parmetro passado o valor PRICE_TYPICAL (da enumerao


ENUM_APPLIED_PRICE), que indica que o indicador customizado ser construdo baseado em preos
tpicos obtidos como (High+Low+Close)/3. Se este parmetro no for especificado, o indicador
construdo baseado em valores de PRICE_CLOSE, isto , preos de fechamento de cada barra.
Outro exemplo que mostra a passagem de um handler (manipulador) de indicador como o ltimo
parmetro para especificar o array price[], dado na descrio da funo iCustom().

A segunda forma destinada para todos os outros indicadores, na qual mais de uma srie de tempo
usada nos clculos.
int OnCalculate (const int rates_total,

// tamanho da srie de preos de entrada series

const int prev_calculated,

// barras tratadas na chamada anterior

const datetime& time[],

// Hora

const double& open[],

// Open (abertura)

const double& high[],

// High (mximo)

const double& low[],

// Low (mnimo)

const double& close[],

// Close (fechamento)

2000-2015, MetaQuotes Software Corp.

175

Elementos Bsicos da Linguagem


const long& tick_volume[],

// Volume de Tick

const long& volume[],

// Volume Real

const int& spread[]

// Spread

);

Os parmetros open[], high[], low[] and close[] contm os arrays com preos de abertura, preos de
mximo e mnimo e preos de fechamento da janela de tempo corrente. O parmetro time[] contm
um array com valores de hora de abertura, o parmetro spread[] tem um array contendo o histrico de
spreads (se algum spread fornecido para o ativo negociado). Os parmetros volume[] e
tick_volume[] contm o histrico de volume de negociao e tick, respectivamente.
Par determinar a direo de indexao de time[], open[], high[], low[], close[], tick_volume[],
volume[] e spread[], chame ArrayGetAsSeries(). A fim de no depender de valores default, voc deve
incondicionalmente chamar a funo ArraySetAsSeries() para aqueles arrays que voc esperar utilizar.
O primeiro parmetro rates_total contm o nmero de barras disponveis no indicador para clculo, e
corresponde ao nmero de barras disponveis no grfico.
Devemos notat a conexo entre o valor de retorno de OnCalculate() e o segundo parmetro de entrada
prev_calculated. Durante a chamada da funo, o parmetro prev_calculated contm um valor
retornado pelo OnCalculate() durante a chamada anterior. Isso permite que algoritmos eficientes
calculem o indicador customizado de forma a evitar clculos repetidos naquelas barras que no
tiveram mudana deste a execuo anterior desta funo.
Para isso, geralmente suficiente retornar o valor do parmetro rates_total, que contm o nmero de
barras da chamada corrente da funo. Se desde a ltima chamada da funo OnCalculate() os dados
de preo mudarem (um histrico mais antigo baixado ou brancos no histrico preenchidos), o valor do
parmetro de entrada prev_calculated ser definido para zero pelo terminal.
Observao: se OnCalculate retornar zero, ento os valores do indicador no so mostrados na Janela
de Dados do terminal cliente.
Para entender isso melhor, seria til iniciar o indicador, cujo cdigo est anexado abaixo.
Exemplo indicador:
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//---- plotar Linha


#property indicator_label1

"Line"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrDarkBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- buffers do indicador


double

LineBuffer[];

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{

2000-2015, MetaQuotes Software Corp.

176

Elementos Bsicos da Linguagem


//--- mapeamento de buffers do indicador
SetIndexBuffer(0,LineBuffer,INDICATOR_DATA);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime& time[],
const double& open[],
const double& high[],
const double& low[],
const double& close[],
const long& tick_volume[],
const long& volume[],
const int& spread[])
{
//--- Obteno do nmero de barras disponveis para o ativo corrente e perodo do grfico
int bars=Bars(Symbol(),0);
Print("Bars = ",bars,", rates_total = ",rates_total,",

prev_calculated = ",prev_calculated);

Print("time[0] = ",time[0]," time[rates_total-1] = ",time[rates_total-1]);


//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+

Tambm Veja
Programas em Execuo, Eventos do Terminal Cliente, Trabalhando com Eventos

2000-2015, MetaQuotes Software Corp.

177

Elementos Bsicos da Linguagem

Variveis
Declarando Variveis
Variveis devem ser declaradas antes de serem usadas. Nomes nicos so usados para identificar
variveis. Para declarar uma varivel, voc deve especificar o seu tipo e um nico nome. Declarao
de varivel no um operador.
Os tipos simples so:
char, short, int, long, uchar, ushort, uint, ulong inteiros;
color inteiro representando a cor-RGB (red, green, blue);
datetime a data e hora, um inteiro sem sinal (unsigned) contendo o nmero de segundos desde a 0
hora de 1 de Janeiro de 1970;
bool valores booleanos true e false;
double nmero de ponto flutuante de dupla preciso;
float nmero de ponto flutuante de preciso simples;
string strings de caractere.
Exemplos:
string szInfoBox;
int

nOrders;

double dSymbolPrice;
bool

bLog;

datetime tBegin_Data
color

= D'2004.01.01 00:00';

cModify_Color = C'0x44,0xB9,0xE6';

Tipos compostos ou complexos:


Estruturas so tipos de dados compostos construdos usando outros tipos.
struct MyTime
{
int hour;

// 0-23

int minute;

// 0-59

int second;

// 0-59

};
...
MyTime strTime; // Varivel previamente declarada da estrutura MyTime

No se pode declarar variveis do tipo estrutura at que se declare a estrutura.


Arrays
Array uma seqncia indexada de dados de tipos idnticos:
int

a[50];

double m[7][50];

// Array de uma dimenso de 50 inteiros.


// Array de duas dimenses de sete arrays,
// cada um deles constitudo de 50 nmeros.

MyTime t[100];

// Array contendo elementos como MyTime

2000-2015, MetaQuotes Software Corp.

178

Elementos Bsicos da Linguagem


Somente um inteiro pode ser um ndice de array. No so permitidos arrays com mais que quatro
dimenses. A numerao de elementos de um array comea com 0. O ltimo elemento de um array de
uma dimenso tem o nmero do ndice que 1 a menos que o tamanho do array. Isso significa que
chamar pelo ltimo elemento de um array constitudo de 50 aparecer como a[49]. O mesmo acontece
a arrays multidimensionais: Um dimenso indexada de 0 ao tamanho da dimenso menos 1. O ltimo
elemento de um array de duas dimenses do exemplo aparecer como m[6][49].
Arrays estticos no podem ser representados como sries de tempo, isto , a
funoArraySetAsSeries(), que defini o acesso aos elementos de um array do fim para o comeo, no
pode ser aplicado a eles. Se voc desejar ter acesso a um array da mesma forma que uma srie de
tempo, use o objeto de array dinmico.
Se houver uma tentativa de acesso fora da faixa do array, a execuo do subsistema gerar um erro
crtico e o programa ser interrompido.

Especificadores de Acesso
Especificadores de acesso definem como o compilador pode acessar variveis, membros de estruturas
ou classes.
O especificador const declara uma varivel como uma constante, e no permite modificar esta
varivel durante o tempo de execuo. Uma inicializao simples de uma varivel permitida ao
declar-la.
Exemplo:
int OnCalculate (const int rates_total,

// tamanho do array price[]

const int prev_calculated,

// barras tratadas na chamada anterior

const int begin,

// a partir de onde comeam os dados significativos

const double& price[]

// array a ser calculado

);

Para acessar membros de estruturas e classes use os seguintes qualificadores:


public permite acesso irrestrito s variveis ou mtodos da classe
protected permite acesso a partir dos mtodos desta classe, bem como a partir dos mtodos de
classes publicamente herdadas. Outro acesso impossvel;
private permite acesso s variveis e mtodos da classe somente a partir dos mtodos da mesma
classe.
virtual aplica-se apenas a mtodos de classe (no a mtodos de estrutura) e diz ao compilador que
este mtodo deve se colocado na tabela de funes virtuais da classe.

Classes de Armazenamento
Existem trs classes de armazenamento: static, input e extern. Estes modificadores de classe de
armazenamento explicitamente indicam ao compilador que as variveis correspondentes esto
distribudas em uma rea pr-alocada de memria, que chamada de global pool. Alm disso, estes
modificadores indicam um processamento especial dos dados da varivel. Se uma varivel declarada
em nvel local no for uma varivel esttica, a memria para tal varivel alocada automaticamente
em uma pilha de programa. A liberao de memria alocada para um array no esttico (non-static)
tambm realizada automaticamente quando se passa alm da rea de visibilidade do bloco em que o
array est declarado.

2000-2015, MetaQuotes Software Corp.

179

Elementos Bsicos da Linguagem

Tambm Veja
Tipos de Dados, Encapsulamento e Extensibilidade de Tipos,Inicializao de Variveis, Visibilidade
Escopo e Tempo de Vida de Variveis, Criao e Excluso de Objetos, Membros Estticos de uma
Classe

2000-2015, MetaQuotes Software Corp.

180

Elementos Bsicos da Linguagem

Variveis Locais
Uma varivel declarada dentro de uma funo local. O escopo de uma varivel local limitado a
regio dentro da funo na qual a varivel est declarada. Uma varivel local pode ser inicializada pelo
resultado de qualquer expresso. Toda chamada da funo inicializa uma varivel local. Variveis
locais so armazenadas na rea de memria da correspondente funo.
Exemplo:
int somefunc()
{
int ret_code=0;
...
return(ret_code);
}

Escopo de uma varivel uma parte de um programa, na qual uma varivel pode ser referenciada.
Variveis declaradas dentro de um bloco (a nvel interno), possuem o bloco como seu escopo. O escopo
de bloco comea com a declarao da varivel e termina com a chave direita final.
Variveis locais declaradas no comeo de uma funo tambm tm escopo de bloco, bem como
parmetros de funo, que so variveis locais. Qualquer bloco pode conter declaraes de variveis.
Se blocos estiverem aninhados e um identificador no bloco externo tiver o mesmo nome que um
identificador no bloco interno, o identificador no bloco externo oculto, at que a operao do bloco
interno seja finalizado.
Exemplo:
void OnStart()
{
//--int i=5;

// varivel local da funo

{
int i=10;

// varivel de funo

Print("Dentro do bloco i = ",i); // resultado i=10;


}
Print("Fora do bloco i = ",i);

// resultado i=5;

Isso significa que enquanto o bloco interno est rodando, ele v os valores de seus prprios
identificadores locais, e no os valores dos identificadores com nomes idnticos no bloco externo.
Exemplo:
void OnStart()
{
//--int i=5;

// varivel local da funo

for(int i=0;i<3;i++)
Print("Dentro for i = ",i);
Print("Fora do bloco i = ",i);
}

2000-2015, MetaQuotes Software Corp.

181

Elementos Bsicos da Linguagem


/* Resultado da execuo
Dentro for i = 0
Dentro for i = 1
Dentro for i = 2
Fora do bloco i = 5
*/

Variveis locais declaradas como estticas (static) tm escopo de bloco, apesar do fato de elas
existirem desde o incio do programa.

Pilha (Stack)
Em todo programa MQL5, uma rea especial de memria chamada pilha alocada para armazenar
variveis locais de funes que so criadas automaticamente. Um pilha alocada para todas as
funes. O tamanho default da pilha 256 kb, o tamanho da pilha pode ser gerenciada usando a
diretiva de compilao #property stacksize.
Variveis locais estticas (static) so armazenadas no mesmo lugar onde outras variveis estticas e
globais so armazenadas - em uma rea especial de memria, que existe separadamente da pilha.
Variveis criadas dinamicamente tambm usam uma rea de memria separada da pilha.
A cada chamada de funo, um lugar na pilha alocado para variveis internas no estticas. Aps
sair da funo, a memria fica disponvel para uso novamente.
Se da primeira funo, uma segunda funo for chamada, ento a segunda funo ocupa o tamanho
requerido da memria restante da pilha para suas variveis. Portanto, ao usar funes includas, a
memria da pilha ser seqencialmente ocupada por cada funo. Isso pode levar a uma falta de
memria durante uma das chamadas de funo, tal situao chamada de estouro de pilha (stack
overflow).
Portanto, para grandes dados melhor usar memria dinmica - ao entrar em uma funo, aloque a
memria que requerida para as necessidades locais (new, ArrayResize()), e ao sair da funo, libere
a memria (delete, ArrayFree()).
Tambm Veja
Tipos de Dados, Encapsulamento e Extensibilidade de Tipos, Inicializao de Variveis, Visibilidade
Escopo e Tempo de Vida de Variveis, Criando e Excluindo Objetos

2000-2015, MetaQuotes Software Corp.

182

Elementos Bsicos da Linguagem

Parmetros Formais
Parmetros passados para a funo so locais. O escopo de bloco de funo. Parmetros formais
devem ter nomes diferentes de variveis externas e variveis locais definidas dentro de uma funo.
Alguns valores podem ser atribudos a parmetros formais no bloco de funo. Se um parmetro
formal declarado com o modificador const , seu valor no pode ser modificado dentro da funo.
Exemplo:
void func(const int & x[], double y, bool z)
{
if(y>0.0 && !z)
Print(x[0]);
...
}

Parmetros formais podem ser inicializados por constantes. Neste caso, o valor de inicializao
considerado como o valor default (padro). Parmetros, prximos ao parmetro inicializado, tambm
devem ser inicializados.
Exemplo:
void func(int x, double y = 0.0, bool z = true)
{
...
}

Ao chamar tal funo, os parmetros inicializados podem ser omitidos, os valores default sero usados
no lugar deles.
Exemplo:
func(123, 0.5);

Parmetros de tipos simples so passados por valor, isto , modificaes da correspondente varivel
local deste tipo dentro da funo chamada no ir se refletir na funo chamadora. Arrays de qualquer
tipo e dados do tipo estrutura so passados sempre por referncia. Se for necessrio proibir
modificaes no contedo de um array ou estrutura, os parmetros destes tipos devem ser declarados
com a palavra-chava const.
Existe a possibilidade de passar parmetros de tipos simples por referncia. Neste caso, modificaes
nestes parmetros de dentro da funo chamada afetaro as variveis correspondentes passadas por
referncia. A fim de indicar que um parmetro passado por referncia, coloque o modificador & aps
do tipo do parmetro.
Exemplo:
void func(int& x, double& y, double & z[])
{
double calculated_tp;
...
for(int i=0; i<OrdersTotal(); i++)
{

2000-2015, MetaQuotes Software Corp.

183

Elementos Bsicos da Linguagem


if(i==ArraySize(z))

break;

if(OrderSelect(i)==false) break;
z[i]=OrderOpenPrice();
}
x=i;
y=calculated_tp;
}

Parmetros passados por referncia no podem ser inicializados por valores default.
No mximo 64 parmetros podem ser passado para um funo.
Tambm Veja
Variveis de Entrada, Tipo de Dados, Encapsulamento e Extensibilidade de Tipos, Inicializao de
Variveis, Visibilidade Escopo e Tempo de Vida de Variveis, Criando e Excluindo Objetos

2000-2015, MetaQuotes Software Corp.

184

Elementos Bsicos da Linguagem

Variveis Estticas
A classe de armazenamento esttico (static) define uma varivel esttica. O modificador static
indicado antes do tipo do dado.
Exemplo:
int somefunc()
{
static int flag=10;
...
return(flag);
}

Uma varivel esttica pode ser inicializada por uma constante ou expresso constante correspondente
ao seu tipo, diferentemente de uma varivel local simples, que pode ser inicializada por qualquer
expresso.
Variveis estticas existem a partir do momento de execuo do programa e so inicializados somente
uma vez antes que a funo especializada OnInit() seja chamada. Se valores iniciais no forem
especificados, variveis da classe de armazenamento esttico assumem valores iniciais zero.
Variveis locais declarados com a palavra-chave static retm seus valores durante todo o tempo de
vida da funo. A cada prxima chamada da funo, tais variveis locais contm os valores que elas
tinham durante a chamada anterior.
Quaisquer variveis em um bloco, exceto parmetros formais de uma funo, podem ser definidas
como estticas. Se uma varivel declarada em nvel local no for uma varivel esttica, a memria
para tal varivel alocada automaticamente em uma pilha de programa.
Exemplo:
int Counter()
{
static int count;
count++;
if(count%100==0) Print("A funo Counter tem sido chamada ",count," tempos");
return count;
}
void OnStart()
{
//--int c=345;
for(int i=0;i<1000;i++)
{
int c=Counter();
}
Print("c =",c);
}

Tambm Veja

2000-2015, MetaQuotes Software Corp.

185

Elementos Bsicos da Linguagem


Tipos de Dados, Encapsulamento e Extensibilidade de Tipos, Inicializao de Variveis, Visibilidade
Escopo e Tempo de Vida de Variveis, Criao e Excluso de Objetos, Membros de Classe Estticos

2000-2015, MetaQuotes Software Corp.

186

Elementos Bsicos da Linguagem

Variveis Globais
Variveis globais so criadas colocando suas declaraes fora de descries da funo. Variveis
globais so definidas no mesmo nvel que funes, isto , elas no so locais de algum bloco.
Exemplo:
int GlobalFlag=10;

// Varivel global

int OnStart()
{
...
}

O escopo de variveis globais o programa inteiro. Variveis globais so acessveis a partir de todas
as funes definidas no programa. Elas so inicializadas com zero a menos que um outro valor inicial
seja explicitamente definido. Uma varivel global pode ser inicializada somente por uma constante, ou
expresso de constante que corresponde ao tipo dela.
Global variables are initialized only once after the program is loaded into the client terminal memory
and before the first handling of the Init event. For global variables representing class objects, during
their initialization the corresponding constructors are called. In scripts global variables are initialized
before handling the Start event.
Observao: Variveis declaradas em nvel global no devem ser confundidas com variveis globais do
terminal cliente que podem ser acessadas usando as funes GlobalVariable...().
Tambm Veja
Tipos de Dados, Encapsulamento e Extensibilidade de Tipos, Inicializao de Variveis, Visibilidade
Escopo e Tempo de Vida de Variveis, Criando e Excluindo Objetos

2000-2015, MetaQuotes Software Corp.

187

Elementos Bsicos da Linguagem

Variveis de Entrada
A classe de armazenamento input define uma varivel externa. O modificador input indicada antes
do tipo de dado. Uma varivel com o modificador input no pode ser modificada dentro de programas
mql5, tais variveis podem ser acessadas somente para leitura. Valores de variveis de entrada
podem ser modificados pelo usurio somente a partir da janela de propriedades do programa.
Exemplo:
//--- parmetros de entrada
input int

MA_Period=13;

input int

MA_Shift=0;

input ENUM_MA_METHOD MA_Method=MODE_SMMA;

Variveis de entrada determinam a entrada de parmetros de um programa. Eles esto disponveis a


partir da janela de Propriedades de um programa.

possvel definir uma outra forma de exibir nomes de parmetros de entrada na aba Parmetros de
Entrada. Para fazer isso, um comentrio string usado, que deve estar localizado aps a descrio de
um parmetro de entrada na mesma linha. Assim, nomes mais compreensivos para o usurio podem
ser associados aos parmetros de entrada.
Exemplo:
//--- parmetros de entrada
input int

InpMAPeriod=13;

// Perodo suavizado

input int

InpMAShift=0;

// Deslocamento da linha horizontal

input ENUM_MA_METHOD InpMAMethod=MODE_SMMA;

// Mtodo de Suavizao

2000-2015, MetaQuotes Software Corp.

188

Elementos Bsicos da Linguagem

Observao:Arrays e variveis de tipos complexos no podem agir como variveis de entrada.


Observao:O comprimento de um comentrio string para as variveis de entrada no pode exceder
63 caracteres.

Passando Parmetros Ao Chamar Indicadores Customizados a partir de


Programas MQL5
Indicadores Customizados so chamados usando a funo iCustom(). Aps o nome do indicador
customizado, os parmetros devem aparecer em estrita conformidade com a declarao das variveis
de entrada deste indicador customizado. Se os parmetros indicados so em nmero menor que as
variveis de entrada declaradas no indicador customizado chamado, os parmetros faltantes so
preenchidos com os valores especificados durante a declarao de variveis.
Se o indicador customizado usar a funo OnCalculate do primeiro tipo (isto , o indicador calculado
usando o mesmo array dos dados), ento um dos valores ENUM_APPLIED_PRICE ou o manuseio de um
outro indicador deve ser usado como o ltimo parmetro ao chamar tal indicador customizado. Todos
os parmetros correspondentes s variveis de entrada devem ser claramente indicados.

Enumeraes como Parmetros de Entrada


No apenas enumeraes internas fornecidos no MQL5, mas tambm variveis definidas pelo usurio
podem ser usadas como variveis de entrada (parmetros de entrada para programas MQL5). No
apenas enumeraes internas fornecidos no MQL5, mas tambm variveis definidas pelo usurio
podem ser usadas como variveis de entrada (parmetros de entrada para programas MQL5).
Exemplo:
#property script_show_inputs
//--- dias da semana
enum dayOfWeek
{
S=0,

// Domingo

M=1,

// Segunda-feira

2000-2015, MetaQuotes Software Corp.

189

Elementos Bsicos da Linguagem


T=2,

// Tera-feira

W=3,

// Quarta-feira

Th=4,

// Quinta-feira

Fr=5,

// Sexta-feira,

St=6,

// Sbado

};
//--- parmetros de entrada
input dayOfWeek swapday=W;

A fim de permitir a um usurio selecionar um valor necessrio da janela de propriedades durante o


incio da execuo de um script, ns usamos o comando de pr-processamento #property script show
inputs. Iniciamos o script e podemos escolher um dos valores da enumerao dayOfWeek da lista.
Iniciamos o script EnumInInput e vamos para a aba Parmetros de Entrada. Por default, o valor de
swapday (dia de cobrana tripla de swap) Wednesday (W = 3), mas ns podemos especificar qualquer
outro valor, e usar este valor para mudar a operao do programa.

O nmero de possveis valores de uma enumerao limitada. A fim de obter o cdigo de erro, a
funo GetLastError() deve ser chamada. Nomes mnemnicos de membros da enumerao so usados
para valores exibidos na lista. Se um comentrio associado com um nome mnemnico, como
mostrado no exemplo, o contedo do comentrio usado ao invs do nome mnemnico.
Cada valor da enumerao dayOfWeek tem seu valor de 0 a 6, mas na lista de parmetros, os
comentrios especificados para cada valor ser exibido. Isso fornece flexibilidade adicional para
escrever programas com descries mais claras dos parmetros de entrada.

Variveis com Modificador sinput


Variveis com modificador input no apenas permitem definir parmetros externos ao iniciar
programas mas tambm so necessrias na otimizao de estratgias de negociao no Provador de
Estratgia. Cada varivel de entrada excluindo-se o do tipo string pode ser usada em optimizao.
Algumas vezes, necessrio excluir alguns parmetros externos do programa da rea total de passos

2000-2015, MetaQuotes Software Corp.

190

Elementos Bsicos da Linguagem


do Provador de Estratgia. O modificador de memria sinput foi introduzido para tais casos. sinput
significa declarao de varivel externa esttica (sinput = static input). Significa que a declarao
seguinte em um cdigo Expert Advisor
sinput

int layers=6;

// Nmero de camadas

ser equivalente a declarao completa


static input int layers=6;

// Nmero de camadas

A varivel declarada com o modificador sinput um parmetro de entrada de um programa MQL5. O


valor deste parmetro pode ser modificado ao iniciar o programa. Entretanto, esta varivel no pode
ser usado na otimizao de parmetros de entrada. Em outras palavras, seu valor no enumerado ao
procurar pelo melhor conjunto ajustado de parmetros a uma condio especfica.

O Expert Advisor mostrado acima tem 5 parmetros externos. "Nmero de camadas" declarado para
ser sinput e igual a 6. Este parmetro no pode ser modificado durante um otimizao de estratgia
de negociao. Podemos especificar o valor necessrio para ele ser usado mais adiante. Os campos
Iniciar, Passo, Parar no ficam disponveis para tal varivel.
Portanto, usurios no sero capazes de otimizar este parmetro aps especificarmos o modificador
sinput para a varivel. Em outras palavras, o usurio do terminal no ser capaz de definir os valores
inicial e final para ele no Provador de Estratgia para enumerao automtica na faixa especificada
durante uma otimizao.
Porm, existe uma exceo a esta regra: variveis sinput podem variar em tarefas de optimizao
usando a funo ParameterSetRange(). Esta funo foi introduzida especificamente para o programa
controlar os conjuntos de valores disponveis para qualquer varivel input, incluindo aquelas
declaradas como static input (sinput). A funo ParameterGetRange() permite receber os valores
variveis de entrada quando a otimizao iniciada (com o manipulador OnTesterInit()) e redefine
uma alterao do valor do passo e um intervalo, no qual uma otimizao dos valores dos parmetros
sero enumerados.
Desta forma, ao combinando o modificador sinput com duas funes que trabalham com parmetros
de entrada, isso permite criar regras flexveis para definir intervalos de otimizao de parmetros de
entrada que dependem dos valores de outros parmetros de entrada.
Tambm Veja
iCustom, Enumeraes, Propriedades de Programas

2000-2015, MetaQuotes Software Corp.

191

Elementos Bsicos da Linguagem

Variveis Externas
A palavra-chave extern usado para declarar identificadores de variveis como identificadores da
classe de armazenamento esttica (esttico) com tempo de vida global. Estas variveis existem a
partir do inicio do programa e a memria para elas alocada e inicializada imediatamente aps o
inicio do programa.
Voc pode criar programas que consistem de mltiplos arquivos fontes; neste caso a diretiva para o
preprocessador #include usada. Variveis declaradas como extern com o mesmo tipo e identificador
podem existir em arquivos fontes diferentes de um projeto.
Ao compilar o projeto inteiro, todas as variveis
associados com uma parte da memria do conjunto
teis para compilao separada de arquivos fontes.
apenas uma vez - a existncia de vrias variveis
mesmo identificador proibida.

extern com o mesmo tipo e identificador so


(pool) de variveis globais. Variveis extern so
Variveis externas podem ser inicializadas, mas
externas inicializadas do mesmo tipo e com o

Tambm Veja
Tipos de Dados, Encapsulamento e Extensibilidade de Tipos, Inicializao de Variveis, Visibilidade
Escopo e Tempo de Vida de Variveis, Criando e Excluindo Objetos

2000-2015, MetaQuotes Software Corp.

192

Elementos Bsicos da Linguagem

Inicializao de Variveis
Qualquer varivel pode ser inicializada durante a definio. Se uma varivel no inicializada
explicitamente, o valor armazenado nesta varivel pode ser qualquer coisa. Inicializao implcita no
usada.
Variveis globais e estticas podem ser inicializadas uma vez por uma constante do tipo
correspondente ou uma expresso constante. Variveis locais podem ser inicializados por qualquer
expresso, no apenas por uma constante.
A inicializao de variveis globais e estticas realizada apenas uma vez. A inicializao de
variveis locais feita toda a vez que se chama as funes correspondentes.
Exemplos:
int

= 1;

string s

= "Ol";

double f[]

= { 0.0, 0.236, 0.382, 0.5, 0.618, 1.0 };

int

a[4][4] = { {1, 1, 1, 1}, {2, 2, 2, 2}, {3, 3, 3, 3}, {4, 4, 4, 4 } };

//--- de tetris
int

right[4]={WIDTH_IN_PIXELS+VERT_BORDER,WIDTH_IN_PIXELS+VERT_BORDER,
WIDTH_IN_PIXELS+VERT_BORDER,WIDTH_IN_PIXELS+VERT_BORDER};

//--- inicializao de todos os campos da estrutura com valores zero


MqlTradeRequest request={0};

A lista de valores dos elementos de um array devem estar entre chaves. Seqncias de inicializaes
faltantes so consideradas iguais a 0. A seqncia de inicializao deve ter ao menos um valor: este
valor inicializado para o primeiro elemento da estrutura correspondente ou array, elementos
faltantes so considerados iguais a zero.
Se o tamanho do array inicializado no especificado, ele determinado pelo compilador, baseado no
tamanho da seqncia de inicializao. Arrays multi-dimensionais no podem ser inicializados por uma
seqncia unidimensional (uma seqncia sem chaves adicionais), exceto para o caso quando apenas
um elemento inicializante especificado (zero, como regra).
Arrays (incluindo aqueles declarados no nvel local) podem ser inicializados apenas por constantes.
Exemplos:
struct str3
{
int

low_part;

int

high_part;

};
struct str10
{
str3

s3;

double

d1[10];

int

i3;

};
void OnStart()
{

2000-2015, MetaQuotes Software Corp.

193

Elementos Bsicos da Linguagem


str10 s10_1={{1,0},{1.0,2.1,3.2,4.4,5.3,6.1,7.8,8.7,9.2,10.0},100};
str10 s10_2={{1,0},{0},100};
str10 s10_3={{1,0},{1.0}};
//--Print("1.

s10_1.d1[5] = ",s10_1.d1[5]);

Print("2.

s10_2.d1[5] = ",s10_2.d1[5]);

Print("3.

s10_3.d1[5] = ",s10_3.d1[5]);

Print("4.

s10_3.d1[0] = ",s10_3.d1[0]);

Para varivel de tipo estrutura, inicializao parcial permitida, bem como para arrays estticos.
Pode-se inicializar um ou mais primeiros elementos de uma estrutura ou array, os demais elementos
sero inicializados com zeros neste caso.
Tambm Veja
Tipos de Dados, Encapsulamento e Tipo de Extensibilidade, Visibilidade Escopo e Tempo de Vida de
Variveis, Criando e Excluindo Objetos

2000-2015, MetaQuotes Software Corp.

194

Elementos Bsicos da Linguagem

Visibilidade Escopo e Tempo de Vida de Variveis


Existem dois tipos bsicos de escopo: escopo local e escopo global.
Uma varivel declarada fora de todas as funes est localizada no escopo global. O acesso a tais
variveis pode ser feito de qualquer lugar no programa. Estas variveis so localizadas no conjunto
(pool) global de memria, assim seus tempos de vida coincidem com o tempo de vida do programa.
Uma varivel declarada dentro de um bloco (parte do cdigo entre chaves) pertence ao escopo local.
Tal varivel no visvel (e portanto no disponvel) fora do bloco no qual est definida. O caso
mais comum de declarao local uma varivel declarada dentro de uma funo. Uma varivel
declarada localmente est localizada na pilha (stack), e o tempo de vida de tal varivel igual ao
tempo de vida da funo.
J que o escopo de uma varivel local o bloco em que ela est declarada, possvel declarar
variveis com o mesmo nome que variveis declaradas em outros blocos, mesmo aquelas declaradas
em nveis mais acima, at o nvel global.
Exemplo:
void CalculateLWMA(int rates_total,int prev_calculated,int begin,const double &price[])
{
int

i,limit;

static int weightsum=0;


double

sum=0;

//--if(prev_calculated==0)
{
limit=MA_Period+begin;
//--- define valor vazio para primeiras barras limite
for(i=0; i<limit; i++) LineBuffer[i]=0.0;
//--- calcula primeiro valor visvel
double firstValue=0;
for(int i=begin; i<limit; i++)
{
int k=i-begin+1;
weightsum+=k;
firstValue+=k*price[i];
}
firstValue/=(double)weightsum;
LineBuffer[limit-1]=firstValue;
}
else
{
limit=prev_calculated-1;
}
for(i=limit;i<rates_total;i++)
{
sum=0;

2000-2015, MetaQuotes Software Corp.

195

Elementos Bsicos da Linguagem


for(int j=0; j<MA_Period; j++) sum+=(MA_Period-j)*price[i-j];
LineBuffer[i]=sum/weightsum;
}
//--}

Preste ateno na varivel i, declarada na linha


for(int i=begin; i<limit; i++)
{
int k=i-begin+1;
weightsum+=k;
firstValue+=k*price[i];
}

Seu escopo somente o ciclo do for; fora deste ciclo existe uma outra varivel com o mesmo nome,
declarada no comeo da funo. Alm disso, a varivel k est declarada no corpo do loop, seu escopo
o corpo do loop.
Variveis locais podem ser declarados com o especificador de acesso static. Neste caso, o compilador
tem uma varivel no conjunto (pool) global de memria. Portanto, o tempo de vida de uma varivel
esttica igual ao tempo de vida do programa. Aqui o escopo de tal varivel limitado ao bloco no
qual ela est declarada.
Tambm Veja
Data Types, Encapsulation and Extensibility of Types,Initialization of Variables, Creating and
Deleting Objects

2000-2015, MetaQuotes Software Corp.

196

Elementos Bsicos da Linguagem

Criao e Excluso de Objetos


Aps um programa MQL5 ser carregado para execuo, memria alocada para cada varivel de
acordo com seu tipo. De acordo com o nvel de acesso, todas as variveis so dividas em dois tipos variveis globais e variveis locais. De acordo com a classe de memria, elas pode ser parmetros de
entrada de um programa MQL5, estticas (static) e automticas. Se necessrio, cada varivel
inicializada por um valor correspondente. Aps ser usada, uma varivel desinicializada e a memria
usada por ela retornada ao sistema executvel MQL5.

Inicializao e Desinicializao de Variveis Globais


Variveis globais so inicializados automaticamente logo aps um programa mql5 ser carregado e
antes de qualquer funo ser chamada. Durante a inicializao valores iniciais so atribudos a
variveis de tipos simples e um construtor (se existir algum) chamado para objetos. Variveis de
entrada so sempre declarados em um nvel global, e so inicializados por valores definidos pelo
usurio na janela de dilogo durante o comeo do programa.
Apesar do fato de que variveis estticas serem geralmente declaradas em um nvel local, a memria
para estas variveis pr-alocada, e a inicializao realizada logo aps um programa ser carregado;
o mesmo para variveis globais.
A ordem de inicializao corresponde a ordem de declarao da varivel no programa. A
desinicializao realizada em ordem inversa. Este regra verdadeira apenas para as variveis que
no foram criadas pelo operador new. Tais variveis so criadas e inicializadas automaticamente logo
aps carregamento, e so desinicializadas depois do descargamento do programa.

Inicializao e Desinicializao de Variveis Locais


Se uma varivel declarada em um nvel local no esttica, memria alocada automaticamente para
tal varivel. Variveis locais, bem como variveis globais, so inicializados automaticamente no
momento que a execuo do programa encontra a declarao de uma varivel local. Assim, a ordem de
inicializao corresponde ordem de declarao.
Variveis locais so desinicializados no final do bloco do programa, no qual elas foram declaradas, e na
ordem oposta de suas declaraes. Um bloco de programa um operador de composio que pode ser
uma parte de um operador de seleo switch, operador de ciclo (for, while, do-while), um corpo de
funo ou uma parte do operador if-else.
Variveis locais so inicializados somente no momento em que a execuo do programa encontra a
declarao da varivel. Se durante a execuo do programa o bloco, no qual a varivel est declarada,
no for executada, tal varivel no inicializada.

Inicializao e Desinicializao de Objetos Colocados


Um caso especial aquele com ponteiros de objeto, porque a declarao de um ponteiro no implica
em inicializao de objetos correspondentes. Objetos colocados dinamicamente so inicializados
somente no momento em que a instncia da classe criada pelo operador new. Inicializao de
objetos pressupe chamada de um construtor da classe correspondente. Se no existir construtor
correspondente na classe, seus membros de tipo simples no sero automaticamente inicializados;
membros de tipos string, array dinmico e objeto complexo sero automaticamente inicializados.

2000-2015, MetaQuotes Software Corp.

197

Elementos Bsicos da Linguagem


Ponteiros podem ser declarados em nvel local ou global; e eles podem ser inicializados pelo valor vazio
de NULL ou pelo valor do ponteiro do mesmo ou herdado tipo. Se o operador new chamado para um
ponteiro declarado em um nvel local, o operador delete para este ponteiro deve ser chamado antes de
sair do nvel. Caso contrrio, o ponteiro estar perdido e a excluso explcita do objeto falhar.
Todos os objetos criados pela expresso object_pointer=new Class_name, devem ser ento excludos
pelo operador delete(object_pointer). Se por algum razo tal varivel no for excluda por meio do
operador delete quando o programa estiver concludo, a correspondente entrada aparecer no dirio
"Experts". Pode-se declarar vrias variveis e atribuir um ponteiro de um objeto para todas elas.
Se um objeto criado dinamicamente tiver um construtor, este construtor ser chamado no momento
da execuo do operador new. Se um objeto tiver um destrutor, ele ser chamado durante a execuo
do operador delete.
Assim objetos colocados dinamicamente so criados somente no momento em que so criados pelo
operador new, e so certamente excludos tanto pelo operador delete ou automaticamente pelo
sistema de execuo do MQL5 durante a descarga do programa.A ordem de declarao de ponteiros
criados dinamicamente no influenciam na ordem de suas inicializaes. A ordem de inicializao e
desinicializao totalmente controlada pelo programador.

Caractersticas Transitrias de Variveis


A principal informao sobre a ordem de criao, excluso, sobre chamadas de construtores e
destrutores dada na tabela a baixo.
Varivel automtica
global
Inicializao

Ordem
inicializao

logo
aps
programa MQL5
carregado

de

na
ordem
declarao

um
ser

da

Varivel automtica
local

Objeto criado
dinamicamente

quando a linha de
cdigo onde ela est
declarada alcanada
durante execuo

na
execuo
operador new

do

na
ordem
declarao

da

independente
da
ordem de declarao

Desinicializao

antes de um programa
MQL5
ser
descarregado

quando a execuo sai


do bloco da declarao

quando o operador
delete executado ou
antes de um programa
mql5 ser descarregado

Ordem
de
desinicializao

na ordem oposta da
ordem de inicializao

na ordem oposta da
ordem de inicializao

independente
da
ordem de inicializao

Chamada
construtor

de

no carregamento do
programa MQL5

na inicializao

na
execuo
operador new

do

Chamada
destrutor

de

na
descarga
programa MQL5

do

quando sair do bloco


onde a varivel foi
inicializada

na
execuo
operador delete

do

mensagem de log no
dirio "Experts" sobre
a tentativa de excluir

mensagem de log no
dirio "Experts" sobre
a tentativa de excluir

mensagem de logo no
dirio "Experts" sobre
objetos
criados

Logs de Erro

2000-2015, MetaQuotes Software Corp.

198

Elementos Bsicos da Linguagem

um
objeto
criado
automaticamente

um
objeto
criado
automaticamente

dinamicamente
no
excludos na descarga
de um programa mql5

Tambm Veja
Tipos de Dados, Encapsulamento e Tipos de Extensibilidade, Inicializao de Variveis, Visibilidade
Escope e Tempo de Vida de Variveis

2000-2015, MetaQuotes Software Corp.

199

Elementos Bsicos da Linguagem

Preprocessador
Preprocessador um subsistema especial do compilador MQL5 que destinado preparao do cdigo
fonte do programa imediatamente antes do programa ser compilado.
O preprocessador permite melhorar a legibilidade do cdigo fonte. O cdigo pode ser estruturado por
meio de incluso de arquivos especficos contendo cdigos fonte de programas-mql5. A possibilidade
de atribuir nomes mnemnicos a constantes especficas contribui para melhoria da legibilidade do
cdigo.
O preprocessador tambm permite determinar parmetros especficos de programas MQL5:
Declarar constantes
Definir propriedades de programa
Incluir arquivos no texto do programa
Importar funes
Conditional compilation
Se o smbolo # for usado na primeira linha do programa, esta linha uma diretiva de preprocessador.
Um diretiva de preprocessador termina com o caractere quebra de linha.

2000-2015, MetaQuotes Software Corp.

200

Elementos Bsicos da Linguagem

Substituio de Macro (#define, #undef)


A diretiva #define pode ser usada para atribuir nomes mnemnicos a constantes. Existem duas
formas:
#define identificador expresso

// forma sem parmetro

#define identificador(par1,... par8) expresso // forma paramtrica

A diretiva #define substitui em expresso todas as entradas encontradas adiante do identificador no


texto fonte. O identificador substitudo somente se ele um smbolo (token) separado. O
identificador no substitudo se ele parte de um comentrio, parte de uma string, ou parte de um
outro identificador mais longo.
O identificador de constante governado pelas mesmas regras de nomes de variveis. O valor pode
ser de qualquer tipo:
#define ABC

100

#define PI

3.14

#define COMPANY_NAME

"MetaQuotes Software Corp."

...
void ShowCopyright()
{
Print("Copyright

2001-2009, ",COMPANY_NAME);

Print("http://www.metaquotes.net");
}

Uma expresso pode consistir de vrios smbolos (tokens), tais como palavras chave, constantes,
expresses constantes e no-constantes. Uma expresso termina com o fim da linha e no pode ser
transferida para a prxima linha.
Exemplo:
#define TWO

#define THREE

#define INCOMPLETE TWO+THREE


#define COMPLETE

(TWO+THREE)

void OnStart()
{
Print("2 + 3*2 = ",INCOMPLETE*2);
Print("(2 + 3)*2 = ",COMPLETE*2);
}
// Resultado
// 2 + 3*2 = 8
// (2 + 3)*2 = 10

Forma paramtrica do #define


Na forma paramtrica, todas as subseqentes entradas encontradas do identificador sero
substitudas pela expresso levando em conta os respectivos parmetros. Por exemplo:

2000-2015, MetaQuotes Software Corp.

201

Elementos Bsicos da Linguagem


// exemplo com dois parmetros a e b
#define A 2+3
#define B 5-1
#define MUL(a, b) ((a)*(b))
double c=MUL(A,B);
Print("c=",c);
/*
expresso double c=MUL(A,B);
equivalente a double c=((2+3)*(5-1));
*/
// Resultado
// c=20

Se assegure de colocar os parmetros entre parnteses ao usar os parmetros na expresso, uma vez
que isso ajudar a evitar erros no bvios que so difceis de encontrar. Se reescrevermos o cdigo
sem o uso de parntesis, o resultado ser diferente:
// exemplo com dois parmetros a e b
#define A 2+3
#define B 5-1
#define MUL(a, b) a*b
double c=MUL(A,B);
Print("c=",c);
/*
expresso double c=MUL(A,B);
equivalente a double c=2+3*5-1;
*/
// Resultado
// c=16

Ao usar a forma paramtrica, so permitidos no mximo 8 parmetros.


// forma paramtrica correta
#define LOG(text)

Print(__FILE__,"(",__LINE__,") :",text)

// um parmetro - 'text'

// forma paramtrica incorreta


#define WRONG_DEF(p1, p2, p3, p4, p5, p6, p7, p8, p9)

p1+p2+p3+p4 // mais do que 8 parmetros a p

The #undef directive


The #undef directive cancels declaration of the macro substitution, defined before.
Example:
#define MACRO
void func1()

2000-2015, MetaQuotes Software Corp.

202

Elementos Bsicos da Linguagem


{
#ifdef MACRO
Print("MACRO is defined in ",__FUNCTION__);
#else
Print("MACRO is not defined in ",__FUNCTION__);
#endif
}
#undef MACRO
void func2()
{
#ifdef MACRO
Print("MACRO is defined in ",__FUNCTION__);
#else
Print("MACRO is not defined in ",__FUNCTION__);
#endif
}
void OnStart()
{
func1();
func2();
}
/* Resultado:
MACRO is defined in func1
MACRO is not defined in func2
*/

Tambm Veja
Identificador, Constantes de Caractere

2000-2015, MetaQuotes Software Corp.

203

Elementos Bsicos da Linguagem

Propriedades de Programa (#property)


Todo programa-mql5 permite especificar parmetros especficos adicionais denominados #property
que ajudam o terminal cliente em prover adequadamente servios a programas sem a necessidade de
lan-los explicitamente. Isso diz respeito a configuraes externas de indicadores, em primeiro lugar.
Propriedades descritas em arquivos includos (included files) so completamente ignorados.
Propriedades devem ser especificadas no principal arquivo MQL5.
#property identifier value

O compilador escrever valores declarados na configurao do mdulo executado.


Constante

Tipo

Descrio

icon

string

Caminho para o arquivo de


uma imagem que ser usada
como um cone do programa
EX5. Regras de especificao
de caminho so as mesmas
para recursos. A propriedade
deve ser especificada no
mdulo principal com o cdigo
fonte MQL5. O arquivo de
cone deve estar no formato
ICO.

link

string

Link para
empresa

copyright

string

O nome da empresa

version

string

Verso do programa, mximo


de 31 caracteres

description

string

Breve descrio em texto do


programa
MQL5.
Vrios
description
podem
ser
presentes,
cada
uma
descrevendo uma linha do
texto. O comprimento total de
todo description no pode
exceder
511
caracteres
incluindo a quebra de linha.

stacksize

int

MQL5 program stack size. The


stack of sufficient size is
necessary when executing
function recursive calls.
When launching a script or an
Expert Advisor on the chart,
the stack of at least 8 MB is
allocated.
In
case
of
indicators, the stack size is

2000-2015, MetaQuotes Software Corp.

website

da

204

Elementos Bsicos da Linguagem

always fixed and equal to 1


MB.
When a program is launched in
the strategy tester, the stack
of 16 MB is always allocated
for it.
library

indicator_applied_price

Uma
biblioteca
(library);
nenhuma funo start
atribuda, funes com o
modificador export podem ser
importadas
em
outros
programas-mql5
int

Especifica o valor default para


o campo "Aplicar a". Pode-se
especificar um dos valores de
ENUM_APPLIED_PRICE. Se a
propriedade
no

especificada, o valor default


PRICE_CLOSE

indicator_chart_window

Exibe o indicador na janela do


grfico

indicator_separate_window

Exibe o indicador em uma


janela separada

indicator_height

int

Altura (height) fixa da subjanela do indicador em pixels


(property INDICATOR_HEIGHT)

indicator_buffers

int

Nmero de buffers para clculo


do indicador

indicator_plots

int

Nmero de sries grficas no


indicador

indicator_minimum

double

O limite de escala inferior


para uma janela de indicador
separada

indicator_maximum

double

O limite de escala superior


para uma janela de indicador
separada

indicator_labelN

string

Define o rtulo para a Nsima srie grfica exibida na


Janela de Dados. Para sries
grficas
que
requerem
mltiplos buffers de indicador
(DRAW_CANDLES,
DRAW_FILLING e outros), os
nomes de rtulos so definidos
por meio do separador ';'.

2000-2015, MetaQuotes Software Corp.

205

Elementos Bsicos da Linguagem

indicator_colorN

color

A cor de exibio da linha N,


onde N o nmero da srie
grfica;
numerao
comeando em 1

indicator_widthN

int

Espessura de linha na srie


grfica, onde N - nmero da
srie
grfica,
numerao
comeando em 1

indicator_styleN

int

Estilo da linha na srie


grfica, especificado a partir
dos
valores
de
ENUM_LINE_STYLE.
N
nmero de sries grficas,
numerao comeando em 1

indicator_typeN

int

Tipo de plotagem grfica,


especificado a partir de
valores de ENUM_DRAW_TYPE.
N - nmero de sries grficas,
numerao comeando em 1

indicator_levelN

double

Nvel horizontal de N em uma


janela de indicador separada

indicator_levelcolor

color

Cor do nveis horizontais do


indicador

indicator_levelwidth

int

Espessura
dos
nveis
horizontais do indicador

indicator_levelstyle

int

Estilo dos nveis horizontais do


indicador

script_show_confirm

Exibe
uma
janela
de
confirmao antes de executar
o script

script_show_inputs

Exibe uma janela com as


propriedades
antes
de
executar o script e desabilita
esta janela de confirmao

tester_indicator

string

2000-2015, MetaQuotes Software Corp.

Nome
de
um
indicador
customizado no formato de
"nome_indicador.ex5".
Indicadores que requeiram
teste
so
definidos
automaticamente a partir da
funo
iCustom(), se o
correspondente parmetro
definido atravs de uma string
constante. Para todos os
demais casos (uso da funo

206

Elementos Bsicos da Linguagem

IndicatorCreate() ou uso de
uma string no-constante no
parmetro que define o nome
do indicador) esta propriedade
requerida
tester_file

string

Nome de arquivo para um


testador com a indicao de
extenso, entre aspas duplas
(como uma string constante).
O arquivo especificado ser
passado para o Provador de
Estratgia.
Arquivos
de
entrada para serem testados,
se houver necessidade de
algum, devem sempre ser
especificados.

tester_library

string

Nome da biblioteca (library)


com a extenso, entre aspas
duplas. Uma biblioteca pode ter
extenso dll ou ex5. Bibliotecas
que requeiram teste so
definidos
automaticamente.
Contudo, se alguma biblioteca
for usada por um indicador
customizado, esta propriedade
requerida

Exemplo de Descrio e Nmero de Verso


#property version

"3.70"

// Verso corrente do Expert Advisor

#property description "ZigZag universal com Pesavento Patterns"

#property description "No momento no indicador vrios ZigZags com diferentes algorismos esto inclu
#property description " possvel embutir um grande nmero de outros indicadores exibindo os picos

#property description "fundos e automaticamente construir a partir destes topos e fundos vrias fer

2000-2015, MetaQuotes Software Corp.

207

Elementos Bsicos da Linguagem

Exemplos especificando um rtulo separado para cada buffer do indicador ( "C open; C high; C
low; C close")
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots

#property indicator_type1

DRAW_CANDLES

#property indicator_width1

#property indicator_label1

"C open;C high;C low;C close"

2000-2015, MetaQuotes Software Corp.

208

Elementos Bsicos da Linguagem

Incluindo Arquivos (#include)


A linha de comando #include pode ser colocada em qualquer lugar no programa, mas geralmente todas
as incluses so colocadas no comeo do cdigo fonte. Formato da chamada:
#include <file_name>
#include "file_name"

Exemplos:
#include <WinUser32.mqh>
#include "mylib.mqh"

O preprocessador substitui a linha #include <file_name> com o contedo do arquivo WinUser32.mqh.


Colchetes angulares ("<>") indicam que o arquivo WinUser32.mqh file ser obtido a partir do diretrio
padro (geralmente terminal_installation_directory\MQL5\Include). O diretrio corrente no visvel.
Se o nome do arquivo colocado entre aspas, a procura feita no diretrio corrente (que contm o
arquivo fonte principal). O diretrio padro no visvel.
Tambm Veja
Standard Library, Importando Funes

2000-2015, MetaQuotes Software Corp.

209

Elementos Bsicos da Linguagem

Importando Funes (#import)


Funes so importadas a partir de mdulos MQL5 compilados (arquivos *.ex5) e a partir de mdulos
do sistema operacional (arquivos *.dll). O nome do mdulo especificado na diretiva #import. Para o
compilador ser capaz de corretamente formular a chamada da funo importada e organizar
apropriadamente a transmisso de parmetros, a descrio completa das funes necessria.
Descries de funo seguem imediatamente a diretiva #import "nome do mdulo". Um novo comando
#import (pode ser sem parmetros) completa o bloco de descries de funes importadas.
#import "file_name"
func1 define;
func2 define;
...
funcN define;
#import

Funes importadas podem ter qualquer nome. Funes que tm o mesmo nome, mas de mdulos
diferentes, podem ser importadas ao mesmo tempo. Funes importadas podem ter nomes que
coincidem com os nomes de funes internas. A operao de resoluo de escope define quais as
funes que devem ser chamadas.
A ordem de busca para um arquivo especificado aps a palavra-chave #import descrita em Chamada
de Funes Importadas.
J que funes importadas esto do lado de fora do mdulo compilado, o compilador no pode
verificar a validade dos parmetros passados. Portanto, para evitar erros em tempo de execuo,
deve-se descrever com preciso a composio e ordem dos parmetros passados para funes
importadas. Parmetros passados para funes importadas (tanto de EX5, como de mdulo DLL)
podem ter valores default.
O que se segue no pode ser usado para parmetros em funes importadas:
pointers (*);
links de objetos que contenham arrays dinmicos e/ou ponteiros.
Classes, arrays de string ou objetos complexos que contm strings e/ou arrays dinmicos de qualquer
tipo no podem ser passados como um parmetro de funes importadas a partir de DLL.
Exemplos:
#import "user32.dll"
int

MessageBoxW(uint hWnd,string lpText,string lpCaption,uint uType);

#import "stdlib.ex5"
string ErrorDescription(int error_code);
int

RGB(int red_value,int green_value,int blue_value);

bool

CompareDoubles(double number1,double number2);

string DoubleToStrMorePrecision(double number,int precision);


string IntegerToHexString(int integer_number);
#import "ExpertSample.dll"
int

GetIntValue(int);

double GetDoubleValue(double);
string GetStringValue(string);
double GetArrayItemValue(double &arr[],int,int);

2000-2015, MetaQuotes Software Corp.

210

Elementos Bsicos da Linguagem


bool

SetArrayItemValue(double &arr[],int,int,double);

double GetRatesItemValue(double &rates[][6],int,int,int);


#import

Para importar funes durante a execuo de um programa mql5, vinculao inicial (early binding)
usada. Isso significa que a biblioteca (library) carregada durante a carga de um programa usando seu
programa ex5.
No recomendado que se use nomes com qualificao completa para carregar mdulo, como Drive:
\Directory\FileName.Ext. Bibiliotecas MQ5 so carregados a partir da pasta terminal_dir\MQL5
\Libraries.
Tambm Veja
Incluindo Arquivos

2000-2015, MetaQuotes Software Corp.

211

Elementos Bsicos da Linguagem

Conditional Compilation (#ifdef, #ifndef, #else, #endif)


Preprocessor conditional compilation directives allow compiling or skipping a part of the program
depending on the fulfillment of a certain condition.
That condition can take one of the following forms.
#ifdef identifier

// the code located here is compiled if identifier has already been defined for the preprocessor
#endif
#ifndef identifier

// the code located here is compiled if identifier is not currently defined by #define preproces
#endif

Any of the conditional compilation directives can be followed by any number of lines possibly
containing #else directive and ending with #endif. If the verified condition is true, the lines between
#else and #endif are ignored. If the verified condition is not fulfilled, all lines between checking and
#else directive (or #endif directive if the former is absent) are ignored.
Example:
#ifndef TestMode
#define TestMode
#endif
//+------------------------------------------------------------------+
//| Script program start function

//+------------------------------------------------------------------+
void OnStart()
{
#ifdef TestMode
Print("Test mode");
#else
Print("Normal mode");
#endif
}

Depending on the program type and compilation mode, the standard macros are defined the following
way:
__MQL5__ macro is defined when compiling *.mq5 file, __MQL4__ macro is defined when compiling
*.mq4 one.
_DEBUG macro is defined when compiling in debug mode.
_RELEASE macro is defined when compiling in release mode.
Example:
//+------------------------------------------------------------------+
//| Script program start function

//+------------------------------------------------------------------+
void OnStart()
{

2000-2015, MetaQuotes Software Corp.

212

Elementos Bsicos da Linguagem


#ifdef __MQL5__
#ifdef _DEBUG
Print("Hello from MQL5 compiler [DEBUG]");
#else
#ifdef _RELEASE
Print("Hello from MQL5 compiler [RELEASE]");
#endif
#endif
#else
#ifdef __MQL4__
#ifdef _DEBUG
Print("Hello from MQL4 compiler [DEBUG]");
#else
#ifdef _RELEASE
Print("Hello from MQL4 compiler [RELEASE]");
#endif
#endif
#endif
#endif
}

2000-2015, MetaQuotes Software Corp.

213

Elementos Bsicos da Linguagem

Programao Orientada a Objetos


Programao orientada a objetos (OOP) programar basicamente focada em dados, enquanto dados e
comportamento esto inseparavelmente ligados. Juntos, dados e comportamento, constituem uma
classe, enquanto objetos so instncias de classe.
Os componentes da abordagem orientada a objetos so:
Encapsulamento e extensibilidade de tipo
Herana
Polimorfismo
Sobrecarga
Funes virtuais
OOP considera computao como modelagem de comportamento. O item modelado o objeto
representado pelas abstraes computacionais. Suponha que ns quisssemos escrever "Tetris", um
jogo bem conhecido. Para fazer isso, ns devemos aprender como modelar a aparncia de uma forma
aleatrias compostas de quatro quadrados ligados nas bordas. Tambm ns precisaramos regular a
velocidade de queda das figuras e definir operaes de rotao e deslocamento. A movimentao das
formas na tela limitada pelas bordas da pea, este requerimento tambm deve ser modelado. Alm
disso, linhas preenchidas de cubos devem ser destrudas e pontos conseguidos devem ser contados.
Assim, este jogo de fcil entendimento requer a criao de vrios modelos - modelo de forma, modelo
de pea, modelo de movimentao da figura, e assim por diante. Todas estes modelos so abstraes,
representadas por clculos no computador. Para descrever estes modelos, o conceito de Tipo de Dados
Abstratos, ADT (tipo de dados complexos), usado. Estritamente falando, o modelo do movimento
das "formas" no jogo no um tipo de dado, mas um conjunto de operaes sobre o tipo de dado
"forma", usando as restries do tipo de dado "pea".
Objetos so variveis de classe. A programao orientada a objetos permite a voc facilmente criar e
usar ADT. A programao orientada a objetos usa o mecanismo de herana. O benefcio da herana
est no fato de permitir obter tipos derivados a partir de tipos de dados j definidos por um usurio.
Por exemplo, para criar formas Tetris, conveniente primeiro criar uma classe base Forma. As outras
classes representando todos os sete possveis tipos de forma podem ser derivadas desta base. O
comportamento das figuras definido na classe base, enquanto que a implementao do
comportamento de cada figura separada definida em classes derivadas.
Em OOP, objetos so responsveis por seu comportamento. O desenvolvedor de ADT deve incluir um
cdigo para descrever qualquer comportamento que normalmente seria esperado dos objetos
correspondentes. O fato do objeto ser responsvel por seu comportamento, simplifica enormemente a
tarefa de programao deste objeto pelo usurio.
Se quisssemos desenhar uma figura na tela, precisaramos conhecer onde o centro desta figura
estaria e como desenh-la. Se um forma separada sabe como se desenhar, o programador deve enviar
uma mensagem de "desenhe" ao usar tal forma.
A linguagem MQL5 semelhante ao C++, e ela tambm tem mecanismos de encapsulamento para a
implementao de ADT. Por um lado, o encapsulamento esconde os detalhes internos da
implementao de um tipo particular, e por outro lado, torna acessvel externamente funes que
podem influenciar objetos deste tipo. Detalhes de implementao podem ser inacessveis a um
programa que usa este tipo.

2000-2015, MetaQuotes Software Corp.

214

Elementos Bsicos da Linguagem

O conceito de OOP tem um conjunto de conceitos relacionados, incluindo o seguinte:


Simulao de aes do mundo real
Tipos de dados definidos pelo usurio
Ocultamente de detalhes de implementao
Possibilidade de reutilizao de cdigo atravs de herana
Interpretao de chamadas de funo durante execuo
Alguns destes conceitos so bastante vagos, alguns so abstratos, outros so gerais.

2000-2015, MetaQuotes Software Corp.

215

Elementos Bsicos da Linguagem

Encapsulamento e Extensibilidade de Tipo


OOP uma abordagem balanceada para escrever software. Dados e comportamento so empacotados
juntos. Este encapsulamento cria tipos de dados definidos pelo usurio, estendendo os tipos de dados
da linguagem e interagindo com eles. Extensibilidade de tipos uma oportunidade de adicionar
linguagem tipos de dados definidos pelo usurio, que so tambm fceis de usar, tanto quanto os
tipos bsicos.
Um tipo de dado abstrato (ADT), por exemplo, uma string, uma descrio do ideal, bem conhecido
tipo de comportamento.
O usurio de string sabe que as operaes de string, tais como concatenao ou impresso, tm um
certo comportamento. Operaes de concatenao e impresso so chamados mtodos.
Uma certa implementao de ADT pode ter algumas restries, por exemplo, strings podem ser
limitados no comprimento. Estas limitaes afetam o comportamento aberto a todos. Ao mesmo
tempo, detalhes da implementao privada ou interna no afetam diretamente a jeito como o usurio
v o objeto. Por exemplo, a string freqentemente implementado como um array, enquanto o
endereo de base interno deste array e seu nome no so essenciais para o usurio.
Encapsulamento a habilidade de ocultar os detalhes de implementao quando a interface aberta
para o tipo definido pelo usurio fornecida. Em MQL5, assim como em in C++, definies de classe e
estrutura (class e struct) so usadas para as provises de encapsulamento em combinao com as
palavras-chave de acesso private, protected e public.
A palavra-chave public mostra que o acesso aos membros que ficam depois dela, aberto sem
restries. Sem esta palavra-chave, membros de classe ficariam bloqueados por default. Membros
privados so acessveis somente por funes membro de sua prpria classe.
Funes de classe protegidas so disponveis para funes de classe no apenas em sua classe, mas
tambm em suas classes herdeiras. Funes de classe publicas so disponveis para qualquer funo
dentro do escopo da declarao da classe. A proteo torna possvel ocultar parte da implementao
da classe, evitando assim mudanas inesperadas na estrutura dos dados. Restrio de acesso ou
ocultamento de dados uma caracterstica da programao orientada a objetos.
Geralmente, funes de classe so protegidas e declaradas com o modificador protected, a leitura e a
escrita de valores so realizadas por meio do uso de mtodos especiais chamados set e get que so
definidos por meio do modificador de acesso public.

Exemplo:
class CPerson
{
protected:
string

first_name;

// nome

public:
void

SetName(string n){m_name=n;}// atribui o nome

string

GetName(){return (m_name);} // retorna o nome

};

2000-2015, MetaQuotes Software Corp.

216

Elementos Bsicos da Linguagem


Esta abordagem oferece vrias vantagens. Primeiro, por meio do nome da funo ns podemos
entender o que ela faz - define (sets) ou obtm (gets) o valor de um membro de classe. Segundo,
talvez no futuro precisemos modificar o tipo da varivel m_name na classe CPerson ou em qualquer de
suas classes derivadas.
Neste caso, necessitaramos apenas alterar a implementao das funes SetName() e GetName(),
enquanto que objetos da classe CPerson estariam disponveis para uso em um programa sem nenhuma
alterao de cdigo, porque o usurio nem ao menos saberia que o tipo de dado do m_name foi
alterado.
Exemplo:
struct Name
{
string

first_name;

// nome

string

last_name;

// ltimo nome

m_name;

// nome

};
class CPerson
{
protected:
Name
public:
void

SetName(string n);

string

GetName(){return(m_name.first_name+" "+m_name.last_name);}

private:
string

GetFirstName(string full_name);

string

GetLastName(string full_name);

};
void CPerson::SetName(string n)
{
m_name.first_name=GetFirstName(n);
m_name.last_name=GetLastName(n);
}
string CPerson::GetFirstName(string full_name)
{
int pos=StringFind(full_name," ");
if(pos>0) StringSetCharacter(full_name,pos,0);
return(full_name);
}
string CPerson::GetLastName(string full_name)
{
string ret_string;
int pos=StringFind(full_name," ");
if(pos>0) ret_string=StringSubstr(full_name,pos+1);
else

ret_string=full_name;

return(ret_string);

2000-2015, MetaQuotes Software Corp.

217

Elementos Bsicos da Linguagem


}

Tambm Veja
Tipos de Dados

2000-2015, MetaQuotes Software Corp.

218

Elementos Bsicos da Linguagem

Herana
O principal caracterstica da OOP o incentivo reutilizao de cdigo atravs de herana. Uma nova
classe feita a partir de uma j existente, que chamada de classe base. A classe derivada usa os
membros da classe base, mas tambm pode modificar e complement-los.
Muitos tipos so variaes de tipos j existentes. muitas vezes tedioso desenvolver um novo cdigo
para cada um deles. Alm disso, um novo cdigo implica em novos erros. A classe derivada herda a
descrio da classe base, assim qualquer re-desenvolvimento e re-teste de cdigo desnecessrio. As
relaes de herana so hierrquicas.
Hierarquia um mtodo que permite copiar os elementos em toda a sua diversidade e complexidade.
Ela introduz a classificao de objetos. Por exemplo, a tabela peridica de elementos tem gases. Eles
possuem propriedades inerentes a todos os elementos peridicos.
Gases inertes constituem a prxima importante subclasse. A hierarquia que o gs inerte, como
rgon, um gs, e um gs, por sua vez, parte do sistema. Tal hierarquia permite interpretar o
comportamento dos gases inertes com facilidade. Sabemos que seus tomos contm prtons e
eltrons, o que verdade para todos os outros elementos.
Sabemos que eles esto no estado gasoso temperatura ambiente, como todos os gases. Sabemos
que nenhum gs da subclasse de gases inertes entra usualmente em reaes qumicas com outros
elementos, e isso uma propriedade de todos os gases inertes.
Considere um exemplo de herana de formas geomtricas. Para descrever a completa variedade de
formas simples (crculos, tringulos, retngulos, quadrados, etc.), a melhor forma criar uma classe
base (ADT), que o predecessor de todas as classes derivadas.
Vamos criar uma classe base CShape, que contm apenas a maioria dos membros comuns que
descrevem a forma. Estes membros descrevem propriedades que so caractersticas de qualquer
forma - o tipo da forma e as coordenadas do ponto de ancoragem principal.
Exemplo:
//--- A classe base da forma (Shape)
class CShape
{
protected:
int

m_type;

// Tipo de Forma

int

m_xpos;

// X - coordenada do ponto base

int

m_ypos;

// Y - coordenada do ponto base

public:
CShape(){m_type=0; m_xpos=0; m_ypos=0;} // construtor
void

SetXPos(int x){m_xpos=x;} // define X

void

SetYPos(int y){m_ypos=y;} // define Y

};

Sem seguida, criamos novas classes derivadas da classe base, nas quais adicionaremos campos
necessrios, cada um especificando uma certa classe. Para a forma Crculo, necessrio adicionar um
membro que contm o valor do raio. A forma Quadrado caracterizada pelo valor do lado. Portanto,
classes derivadas, herdadas da classe base CShape, sero declaradas como se segue:

2000-2015, MetaQuotes Software Corp.

219

Elementos Bsicos da Linguagem


//--- A classe derivada crculo (Circle)
class CCircle : public CShape
{

// Depois de um dois pontos, ns definimos a classe base


// a partir da qual a herana feita

private:
int

m_radius;

// raio do crculo

public:
CCircle(){m_type=1;}// construtor, tipo 1
};

Para a classe do Quadrado, a declarao semelhante:


//--- a classe derivada quadrado (Square)
class CSquare : public CShape
{

// Depois de um dois pontos, ns definimos a classe base


// a partir da qual a herana feita

private:
int

m_square_side;

// lado do quadrado

public:
CSquare(){m_type=2;} // construtor, tipo 2
};

Deve-se notar que enquanto um objeto criado, o construtor da classe base chamado primeiro, e
ento o construtor da classe derivada chamado. Quando um objeto destrudo, primeiro o destrutor
da classe derivada chamado, e ento o destrutor da classe base chamado.
Assim, ao declarar a maioria do membros gerais na classe base, podemos acrescentar membros
adicionais nas classes derivadas que especificam uma classe particular. A herana permite criar
bibliotecas de cdigo poderosas que podem ser reutilizadas muitas vezes.
A sintaxe para criar uma classe derivada a partir de uma classe j existente a seguinte:
class class_name :
(public | protected | private) opt

base_class_name

declarao de membros de classe


};

Um dos aspectos da classe derivada a visibilidade (abertura) de seus sucessores membros


(herdeiros). As palavras-chave public, protected e private so usadas para indicar quo disponveis os
membros da classe base estaro disponveis para a classe derivada. A palavra-chave public aps um
dois pontos no cabealho de uma classe derivada indica que os membros protegidos e pblicos da
classe base CShape devem ser herdados como membros protegidos e pblicos da classe derivada
CCircle.
Os membros privados da classe base no so disponveis para a classe derivada. A herana pblica
tambm significa que classes derivadas (CCircle e CSquare) so CShapes. Isto , o Quadrado
(CSquare) uma Forma (CShape), mas a Forma no necessariamente tem que ser um Quadrado.
A classe derivada uma modificao da classe base, ele herda os membros protegidos e pblicos da

2000-2015, MetaQuotes Software Corp.

220

Elementos Bsicos da Linguagem


classe base. Os construtores e destrutores da classe base no podem ser herdados. Alm de membros
da classe base, novos membros so adicionados em uma classe derivada.
A classe derivada pode incluir a implementao de funes membro, diferentes da classe base. Isso
no tem nada a ver com uma sobrecarga, quando o significado de um mesmo nome de uma funo
pode ser diferente para diferentes assinaturas.
Em herana protegida, membros pblicos e protegidos da classe base tornam-se membros protegidos
da classe derivada. Em herana privada, os membros pblicos e protegidos da classe base tornam-se
membros privados da classe derivada.
Em herana protegida e privada, a relao "o objeto de uma classe derivada objeto da classe base"
no verdade. Os tipos protegido e privado de herana so raros, e cada um deles precisam ser
usados com cautela.
Deve ser entendido que o tipo de herana (public, protected ou private) no afeta a forma de acessar
os membros de classes base na hierarquia de herana a partir de uma classe derivada. Para
qualquer tipo de herana, somente membros da classe base declarados com especificadores de acesso
public e protected estaro disponveis fora das classes derivadas. Vamos verificar isso no seguinte
exemplo:
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//+------------------------------------------------------------------+
//| Exemplo de classe com alguns tipos de acesso

//+------------------------------------------------------------------+
class CBaseClass
{
private:
int
protected:
int
public:

//--- O membro privado no disponvel a partir de classe derivada


m_member;

//--- O mtodo protegido disponvel a partir da classe base e suas classes d


Member(){return(m_member);}
// O construtor de classe disponvel para todos os membros
CBaseClass(){m_member=5;return;};

private:
void

//--- Um mtodo particular para atribuir um valor para m_member


Member(int value) { m_member=value;};

};
//+------------------------------------------------------------------+
//| Classe derivada com erros

//+------------------------------------------------------------------+

class CDerived: public CBaseClass // especificao da herena pblica pode ser omitido, uma vez que
{
public:
void Func() // Na classe derivada, defina uma funo com chamadas aos membros da classe base
{
//--- Uma tentativa de alterar um membro privado da classe base
m_member=0;

// Erro, o membro privado da classe base no disponvel

Member(0);

// Erro, o mtodo privado da classe base no disponvel em classes deriv

2000-2015, MetaQuotes Software Corp.

221

Elementos Bsicos da Linguagem


//--- Leitura do membro da classe base
Print(m_member);

// Erro, o membro privado da classe base no disponvel

Print(Member());

// Sem erro, mtodo protegido acessvel a partir da classe base e suas c

}
};

No exemplo acima, CBaseClass tem apenas um mtodo pblico - o construtor. Construtores so


chamados automaticamente na criao de um objeto de classe. Portanto, o membro privado
m_member e o mtodo protegido Member() no podem ser chamados do lado de fora. Mas no caso de
herana pblica, o membro Member() da classe base estar disponvel a partir de classes derivadas.
No caso de herana protegida, todos os membros da classe base com acessos pblico e protegido
tornam-se protegidos. Isso significa que membros de dados e mtodos pblicos da classe base, com
herana protegida eles passam a ser disponveis somente a partir de classes derivadas e de suas
derivadas seguintes.
//+------------------------------------------------------------------+
//| Exemplo de classe com alguns tipos de acesso

//+------------------------------------------------------------------+
class CBaseMathClass
{
private:
double
public:

//--- O membro privado no disponvel a partir de classe derivada


m_Pi;
//--- Obtendo e definindo um valor para m_Pi

void

SetPI(double v){m_Pi=v;return;};

double

GetPI(){return m_Pi;};

public:

// O construtor de classe disponvel para todos os membros


CBaseMathClass() {SetPI(3.14);

PrintFormat("%s",__FUNCTION__);};

};
//+------------------------------------------------------------------+
//| Uma classe derivada, em que m_Pi no pode ser modificada

//+------------------------------------------------------------------+
class CProtectedChildClass: protected CBaseMathClass // Herana protegida
{
private:
double
public:

m_radius;
//--- Mtodos pblicos na classe derivada

void

SetRadius(double r){m_radius=r; return;};

double

GetCircleLength(){return GetPI()*m_radius;};

};
//+------------------------------------------------------------------+
//| Funo de inicializao de script

//+------------------------------------------------------------------+
void OnStart()
{
//--- Ao criar uma classe derivada, o construtor da classe base ser chamada automaticamente
CProtectedChildClass pt;
//--- Especifica o raio
pt.SetRadius(10);
PrintFormat("Length=%G",pt.GetCircleLength());

2000-2015, MetaQuotes Software Corp.

222

Elementos Bsicos da Linguagem

//--- Se comentar a string abaixo, obteremos um erro na etapa de compilao, j que SetPi() agora
// pt.SetPI(3);
//--- Agora declare um varivel da classe base e tente definir a constante Pi igual a 10
CBaseMathClass bc;
bc.SetPI(10);
//--- Aqui est o resultado
PrintFormat("bc.GetPI()=%G",bc.GetPI());
}

O exemplo mostra que os mtodos SetPI() e GetPI() na classe base CBaseMathClasse esto abertos e
disponveis para chamadas a partir de qualquer lugar do programa. Mas ao mesmo tempo, para
CProtectedChildClasse, que derivada dela, estes mtodos podem ser chamados somente a partir de
mtodos da classe CProtectedChildClass ou suas classes derivadas.
No caso de herana privada, todos os membros da classe base com acesso pblico e protegido tornamse privados, e cham-los torn-se impossvel em herana posterior.
MQL5 no tem herana mltipla.
Tambm Veja
Estruturas e Classes

2000-2015, MetaQuotes Software Corp.

223

Elementos Bsicos da Linguagem

Polimorfismo
Polimorfismo uma oportunidade para diferentes classes de objetos, relacionadas atravs de herana,
de responder de vrias formas quando o mesmo elemento de funo for chamado. Isso ajuda a criar
um mecanismo universal descrevendo o comportamento no apenas da classe base, mas tambm das
classes descendentes.
Vamos continuar a desenvolver uma classe base CShape, e definir uma funo membro GetArea(),
destinado a calcular a rea de uma forma. Em todas as classes descendentes, produzidas por herana
a partir da classe base, ns redefinimos esta funo de acordo com as regras de clculo de rea de
uma forma (shape) particular.
Para um quadrado (classe CSquare), a rea calculada atravs de seu lado, para um crculo (classe
CCircle), a rea expressa atravs de seu raio, etc. Ns podemos criar um array para armazenas
objetos do tipo CShape, no qual tanto objetos da classe base como todos os objetos de classes
descendentes podem ser armazenados. Mais adiante, podemos chamar a mesma funo para cada
elemento do array.
Exemplo:
//--- Classe Base
class CShape
{
protected:
int

m_type;

// tipo da forma

int

m_xpos;

// X - coordenada do ponto base

int

m_ypos;

// Y - coordenada do ponto de base

void

CShape(){m_type=0;};

// construtor, tipo=0

int

GetType(){return(m_type);};// retorna o tipo da forma

public:

virtual
double

GetArea(){return (0); }// retorna a rea da forma

};

Agora, todas as classes derivadas tm uma funo membro getArea(), que retorna o valor zero. A
implementao desta funo em cada descendente no ser a mesma.
//--- A classe derivada Circle
class CCircle : public CShape
{

// Depois do dois pontos definimos a classe base


// a partir do qual a herana feita

private:
double

m_radius;

// raio do crculo

void

CCircle(){m_type=1;};

// construtor, tipo=1

void

SetRadius(double r){m_radius=r;};

public:

virtual double GetArea(){return (3.14*m_radius*m_radius);}// rea do crculo


};

Para a classe Square, a declarao a mesma:


//--- A classe derivada Square

2000-2015, MetaQuotes Software Corp.

224

Elementos Bsicos da Linguagem


class CSquare : public CShape
{

// Depois do dois pontos definimos a classe base


// a partir do qual a herana feita

private:
double

m_square_side;

// lado do quadrado

public:
void

CSquare(){m_type=2;}; // construtor, tipo=2

void

SetSide(double s){m_square_side=s;};

virtual double

GetArea(){return (m_square_side*m_square_side);}// rea quadrada

};

Para calcular a rea do quadrado e crculo, precisamos dos correspondentes valores de m_radius e
m_square_side, por isso ns adicionamos as funes SetRadius() e SetSide() na declarao da
correspondente classe.
Assumimos que objetos de diferentes tipos (CCircle e CSquare) derivados do tipo base CShape so
usados em nosso programa. Polimorfismo permite criar um array de objetos da classe base CShape,
mas ao declarar este array, estes objetos so desconhecidos e o tipo deles indefinido.
A deciso sobre que tipo de objeto estar contido em cada elemento do array ser tomada
diretamente durante a execuo do programa. Isso envolve a criao dinmica de objetos das classes
apropriadas, e portanto a necessidade do uso de ponteiros de objeto ao invs de objetos.
O operador new usado para criao dinmica de objetos. Cada um destes objetos devem ser
individualmente e explicitamente excludos usando o operador delete. Portanto declararemos um array
de ponteiros do tipo CShape, e criaremos um objeto de um tipo apropriado para cada elemento (new
Class_Name), como mostrado no exemplo de script seguinte:
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Declararmos um array de ponteiros de objeto do tipo base
CShape *shapes[5];

// Um array de ponteiros para objetos CShape

//--- Aqui preenchemos o array com objetos derivados


//--- Declaramos um ponteiro para o objeto de tipo CCircle
CCircle *circle=new CCircle();
//--- Definimos propriedades do objeto usando o ponteiro do crculo
circle.SetRadius(2.5);
//--- Colocamos o valor do ponteiro em shapes[0]
shapes[0]=circle;
//--- Criamos um outro objeto CCircle e escrevemos seu ponteiro em shapes[1]
circle=new CCircle();
shapes[1]=circle;
circle.SetRadius(5);
//--- Aqui ns intencionalmente "esquecemos" de definir um valor para shapes[2]
//circle=new CCircle();

2000-2015, MetaQuotes Software Corp.

225

Elementos Bsicos da Linguagem


//circle.SetRadius(10);
//shapes[2]=circle;
//--- Definimos NULL para o elemento que no usado
shapes[2]=NULL;
//--- Criamos um objeto CSquare e escrevemos seu ponteiro em shapes[3]
CSquare *square=new CSquare();
square.SetSide(5);
shapes[3]=square;
//--- Criamos um objeto CSquare e escrevemos seu ponteiro em shapes[4]
square=new CSquare();
square.SetSide(10);
shapes[4]=square;
//--- Temos um array de ponteiros, obtemos seu tamanho
int total=ArraySize(shapes);
//--- Passamos em um loop atravs de todos os ponteiros no array
for(int i=0; i<5;i++)
{
//--- Se o ponteiro no ndice especificado vlido
if(CheckPointer(shapes[i])!=POINTER_INVALID)
{
//--- Imprimi o tipo e rea da forma
PrintFormat("O objeto do tipo %d tem a rea %G",
shapes[i].GetType(),
shapes[i].GetArea());
}
//--- Se o ponteiro tem o tipo POINTER_INVALID
else
{
//--- Notificamos um erro
PrintFormat("Objeto shapes[%d] no foi inicializado! Seu ponteiro pe %s",
i,EnumToString(CheckPointer(shapes[i])));
}
}
//--- Devemos excluir todos os objetos criados dinamicamente
for(int i=0;i<total;i++)
{
//--- Ns podemos excluir somente objetos com ponteiros do tipo POINTER_DYNAMIC
if(CheckPointer(shapes[i])==POINTER_DYNAMIC)
{
//--- Notificao de excluso
PrintFormat("Excluindo shapes[%d]",i);
//--- Exclumos um objeto por meio de seu ponteiro
delete shapes[i];
}

2000-2015, MetaQuotes Software Corp.

226

Elementos Bsicos da Linguagem


}
}

Favor notar que ao excluir um objeto usando o operador delete, o tipo de seu ponteiro deve ser
verificado. Somente objetos com ponteiro do tipo POINTER_DYNAMIC podem ser excludos usando
delete. Para ponteiros de outros tipos, um erro ser retornado.
Alm da redefinio de funes durante herana, o polimorfismo tambm inclui a implementao de
uma mesma funo com diferentes conjuntos de parmetros dentro de uma classe. Isso significa que a
classe pode ter vrias funes com o mesmo nome, mas com um tipo e/ou conjunto de parmetros
diferentes. Neste caso, o polimorfismo implementado atravs de sobrecarga de funo.
Tambm Veja
Standard Library

2000-2015, MetaQuotes Software Corp.

227

Elementos Bsicos da Linguagem

Sobrecarga (Overload)
Dentro de uma classe possvel definir dois ou mais mtodos que usam o mesmo nome, mas tem
nmero diferente de parmetros. Quando isso ocorre, estes mtodos so chamados de
sobrecarregados e tal processo referido como sobrecarga de mtodo.
Sobrecarga de mtodo uma forma de realizao de polimorfismo. Sobrecarga de mtodos realizado
em concordncia com as mesmas regras da sobrecarga de funo.
Se a funo chamada no tem correspondncia exata, o compilador busca por uma funo adequada
em trs nveis seqencialmente:
1. busca dentre os mtodos da classe;
2. busca dentre os mtodos da classe base, consistentemente a partir do ancestral mais prximo at o
mais distante.
3. busca entre outras funes.
Se no houver correspondncia exata em todos os nveis, mas vrias funes adequadas em
diferentes nveis foram encontradas, a funo encontrada no menor nvel usada. Dentro de um nvel,
no pode haver mais de uma funo adequada.
Tambm Veja
Recarregando Funes

2000-2015, MetaQuotes Software Corp.

228

Elementos Bsicos da Linguagem

Funes Virtuais
A palavra-chave virtual o especificador de funo que fornece um mecanismo para selecionar
dinamicamente em tempo de execuo uma funo-membro apropriada entre as funes de classes
base e derivadas. Estrutura no podem ter funes virtuais. Pode ser usado para alterar as
declaraes de funes-membro somente.
A funo virtual, assim como uma funo comum, deve ter um corpo executvel. Ao ser chamada, sua
semntica a mesma que das outras funes.
Uma funo virtual pode ser sobreposta (overridden) em um classe derivada. A escolha de qual
definio de funo deve ser chamada para uma funo virtual feita dinamicamente (em tempo de
execuo). Um caso tpico quando uma classe base contm uma funo virtual, e as classes
derivadas tm sua prpria verso desta funo.
O ponteiro para a classe base pode indicar tanto um objeto da classe base quanto um objeto de uma
classe derivada. A escolha da funo-membro a ser chamada ser executada em tempo de execuo e
depender do tipo do objeto, no do tipo do ponteiro. Se no houver nenhum membro de um tipo
derivado, a funo virtual da classe base usada por default.
Destrutores so sempre virtuais, independentemente se elas esto declaradas com a palavra-chave
virtual ou no.
Vamos considerar o uso de funes virtuais no exemplo do MT5_Tetris.mq5. A classe base
CTetrisShape com a funo virtual de desenhar definjida na incluso do arquivo
MT5_TetisShape.mqh.

//+------------------------------------------------------------------+
class CTetrisShape
{
protected:
int

m_type;

int

m_xpos;

int

m_ypos;

int

m_xsize;

int

m_ysize;

int

m_prev_turn;

int

m_turn;

int

m_right_border;

public:
void

CTetrisShape();

void

SetRightBorder(int border) { m_right_border=border; }

void

SetYPos(int ypos)

{ m_ypos=ypos;

void

SetXPos(int xpos)

{ m_xpos=xpos;

int

GetYPos()

{ return(m_ypos);

int

GetXPos()

{ return(m_xpos);

int

GetYSize()

{ return(m_ysize);

int

GetXSize()

{ return(m_xsize);

int

GetType()

{ return(m_type);

2000-2015, MetaQuotes Software Corp.

229

Elementos Bsicos da Linguagem


void

Left()

{ m_xpos-=SHAPE_SIZE;

void

Right()

{ m_xpos+=SHAPE_SIZE;

void

Rotate()

{ m_prev_turn=m_turn; if(++m_turn>3) m_turn=0; }

virtual void

Draw()

{ return;

virtual bool

CheckDown(int& pad_array[]);

virtual bool

CheckLeft(int& side_row[]);

virtual bool

CheckRight(int& side_row[]);

};

Mais adiante, para cada classe derivada, esta funo implementada de acordo com as caractersticas
da classe descendente. Por exemplo, a primeira forma CTetrisShape1 tem sua implementao prpria
da funo Draw():
class CTetrisShape1 : public CTetrisShape
{
public:
//--- desenhando formato
virtual void

Draw()

{
int

i;

string name;
//--if(m_turn==0 || m_turn==2)
{
//--- horizontal
for(i=0; i<4; i++)
{
name=SHAPE_NAME+(string)i;
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,m_xpos+i*SHAPE_SIZE);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,m_ypos);
}
}
else
{
//--- vertical
for(i=0; i<4; i++)
{
name=SHAPE_NAME+(string)i;
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,m_xpos);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,m_ypos+i*SHAPE_SIZE);
}
}
}
}

A forma Quadrado descrita por meio da classe CTetrisShape6 e tem sua implementao prpria do
mtodo Draw():
class CTetrisShape6 : public CTetrisShape
{

2000-2015, MetaQuotes Software Corp.

230

Elementos Bsicos da Linguagem


public:
//--- desenhando formato
virtual void

Draw()

{
int

i;

string name;
//--for(i=0; i<2; i++)
{
name=SHAPE_NAME+(string)i;
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,m_xpos+i*SHAPE_SIZE);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,m_ypos);
}
for(i=2; i<4; i++)
{
name=SHAPE_NAME+(string)i;
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,m_xpos+(i-2)*SHAPE_SIZE);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,m_ypos+SHAPE_SIZE);
}
}
};

Dependendo da classe da qual o objeto criado pertence, chamada a funo virtual desta ou daquela
classe derivada.
void CTetrisField::NewShape()
{
//--- criando uma dos 7 possveis formas aleatoriamente
int nshape=rand()%7;
switch(nshape)
{
case 0: m_shape=new CTetrisShape1; break;
case 1: m_shape=new CTetrisShape2; break;
case 2: m_shape=new CTetrisShape3; break;
case 3: m_shape=new CTetrisShape4; break;
case 4: m_shape=new CTetrisShape5; break;
case 5: m_shape=new CTetrisShape6; break;
case 6: m_shape=new CTetrisShape7; break;
}
//--- desenhar
m_shape.Draw();
//--}

Tambm Veja
Standard Library

2000-2015, MetaQuotes Software Corp.

231

Elementos Bsicos da Linguagem

Membros Estticos de uma Classe/Estrutura


Membros Estticos
Os membros de uma classe podem ser declarados usando o modificador de classe de armazenamento
static. Esses membros de dados so compartilhados por todos as instncias desta classe e so
armazenados em um lugar. Membros de dados no estticos so criados para cada varivel de objeto
de classe.
A incapacidade de declarar membros estticos de uma classe teria levado a necessidade de declarar
estes dados no nvel global do programa. Isso quebraria a relao entre os dados e a classe deles, e
no seria consistente com o paradigma bsico da OOP - juntar dados e mtodos para manipul-los em
uma classe. O membro esttico permite que dados de classe no especficos a uma particular instncia
existam no escopo da classe.
Desde que um membro de classe esttica no dependa de uma particular instncia, a referncia a ele
como se segue:
class_name::variable

onde class_name o nome da classe, e variable o nome do membro da classe.


Como se v, para acessar o membro esttico de uma classe, o operador de resoluo de contexto ::
usado. Ao acessar um membro esttico de dentro de mtodos da classe, o operador de contexto
opcional.
Membro esttico de uma classe deve ser explicitamente inicializado com o valor desejado. Para isso,
deve ser declarado e inicializado em escopo global. A sequncia de inicializao dos membros
estticos corresponder a sequncia de sua declarao em escopo global.
Por exemplo, temos a classe CParser usado para separar o texto, e precisamos contar o nmero total
de palavras e caracteres processados. Ns s precisamos declarar os membros de classe necessrios
como estticos e inicializ-los no nvel global. Ento todas as instncias da classe usaro um contador
comum para palavras e caracteres.
//+------------------------------------------------------------------+
//| Classe "Analisador de Texto"

//+------------------------------------------------------------------+
class CParser
{
public:
static int

s_words;

static int

s_symbols;

//--- Construtor e destrutor


Parser(void);
~Parser(void){};
};
...
//--- Inicializao de membros estticos da classe Parser no nvel global
int CParser::s_words=0;
int CParser::s_symbols=0;

2000-2015, MetaQuotes Software Corp.

232

Elementos Bsicos da Linguagem


Um membro de classe esttico pode ser declarado com a palavra-chave const. Tais constantes
estticas devem ser inicializadas no nvel global com a palavra-chave const:
//+------------------------------------------------------------------+
//| Classe "Stack" para armazenar dados processados

//+------------------------------------------------------------------+
class CStack
{
public:
CStack(void);
~CStack(void){};
...
private:
static const int

s_max_length; // Capacidade mxima da pilha

};
//--- Inicializao da constante esttica da classe CStack
const int CStack::s_max_length=1000;

Ponteiro this
A palavra-chave this denota um ponteiro implicitamente declarado para si mesmo para uma instncia
especfica da classe, no contexto do qual o mtodo executado. Pode ser usado somente em mtodos
no estticos da classe. O ponteiro this um membro no esttico implcito de qualquer classe.
Em funes estticas voc pode acessar somente membros/mtodos estticos de uma classe.

Mtodos Estticos
Em MQL5, funes membro do tipo esttico podem ser usadas. O modificador static deve preceder o
tipo do retorno de uma funo na declarao dentro de uma classe.
class CStack
{
public:
//--- Construtor e destrutor
CStack(void){};
~CStack(void){};
//--- Capacidade mxima da pilha
static int

Capacity();

private:
int

m_length;

static const int

s_max_length; // Capacidade mxima da pilha

// O nmero de elementos na pilha

};
//+------------------------------------------------------------------+
//| Retorna o nmero mximo de elementos armazenados na pilha

//+------------------------------------------------------------------+
int CStack::Capacity(void)
{
return(s_max_length);

2000-2015, MetaQuotes Software Corp.

233

Elementos Bsicos da Linguagem


}
//--- Inicializao da constante esttica da classe CStack
const int CStack::s_max_length=1000;
//+------------------------------------------------------------------+
//| Script program start function

//+------------------------------------------------------------------+
void OnStart()
{
//--- declare CStack type variable
CStack stack;
//--- call the object's static method
Print("CStack.s_max_length=",stack.Capacity());

//--- it can also be called the following way, as the method is static and does not require the pre
Print("CStack.s_max_length=",CStack::Capacity());
}

Um mtodo com o modificador const chamado de constante e no pode alterar membros implcitos
de sua classe. A declarao de funes constantes de uma classe e parmetros constantes chamado
de controle const-correo. Atravs deste controle pode-se assegurar que o compilador garantir a
consistncia de valores de objetos e retornar um erro durante a compilao se existir algo errado.
O modificador const colocado aps a lista de argumentos dentro de uma declarao de classe. A
definio do lado de fora de uma classe deve tambm incluir o modificador const:
//+------------------------------------------------------------------+
//| Class "Retngulo"

//+------------------------------------------------------------------+
class CRectangle
{
private:
double

m_width;

// Largura

double

m_height;

// Altura

public:
//--- Construtor e destrutor
CRectangle(void):m_width(0),m_height(0){};
CRectangle(const double w,const double h):m_width(w),m_height(h){};
~CRectangle(void){};
//--- Calculando a rea
double

Square(void) const;

static double

Square(const double w,const double h);// { return(w*h); }

};
//+------------------------------------------------------------------+
//| Retorna a rea do objeto "Retngulo"

//+------------------------------------------------------------------+
double CRectangle::Square(void) const
{
return(Square(m_width,m_height));
}
//+------------------------------------------------------------------+
//| Retorna o produto de duas variveis

2000-2015, MetaQuotes Software Corp.

234

Elementos Bsicos da Linguagem


//+------------------------------------------------------------------+
static double CRectangle::Square(const double w,const double h)
{
return(w*h);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Criar um retngulo reto com os lados iguais a 5 e 6
CRectangle rect(5,6);
//--- Procurar a rea do retngulo usando um mtodo constante
PrintFormat("rect.Square()=%.2f",rect.Square());
//--- Procurar o produto de nmeros usando o mtodo esttico da classe CRectangle
PrintFormat("CRectangle::Square(2.0,1.5)=%f",CRectangle::Square(2.0,1.5));
}

Um argumento adicional a favor do uso do controle de constncia o fato de que neste caso, o
compilador gera uma otimizao especial, por exemplo, coloca um objeto constante na memria de
somente-leitura.
Uma funo esttica no pode ser determinada com o modificador const, porque este modificar
garante a constncia dos membros de instncia quando chamar esta funo. Mas, como mencionado
acima, a funo esttica no pode acessar membros de classe no esttica.
Tambm Veja
Variveis Estticas, Variveis, Referncias. Modificador & e Palavra-chave this

2000-2015, MetaQuotes Software Corp.

235

Elementos Bsicos da Linguagem

Templates de Funo
Funes sobrecarregadas so normalmente usadas para realizar operaes similares em vrios tipos
de dados. ArraySize() um exemplo simples de tal funo em MQL5. Ela retorna o tamanho de
qualquer tipo de array. De fato, esta funo de sistema sobrecarregada e a implementao completa
de tal sobrecarga escondida dos desenvolvedores de aplicativos MQL5:
int ArraySize(
void& array[]

// array verificado

);

Isso significa que o compilador da linguagem MQL5 insere a implementao necessria para cada
chamada desta funo. Por exemplo, assim que implementado para arrays de tipo inteiro:
int ArraySize(
int& array[]

// array com elementos de tipo int

);

A funo ArraySize() pode ser exibida da seguinte forma para array de tipo MqlRates para trabalhar
com cotaes em formato de dados histricos:
int ArraySize(
MqlRates& array[]// array preenchido com valores de tipo MqlRates
);

Assim, muito conveniente usar a mesma funo para trabalhar com tipos diferentes. No entanto,
todo trabalho preliminar deve ser realizado - a funo necessria deve ser sobrecarregada para todos
os tipos de dados com os quais a funo deve trabalhar corretamente.
Existe uma soluo conveniente. Se operaes similares devem ser executadas para cada tipo de
dado, possvel usar templates de funo. Neste caso, um programador precisa escrever somente
uma descrio de template de funo. Ao descrever o template de tal forma, ns devemos especificar
somente alguns parmetros formais ao invs de alguns tipos de dados definidos com os quais a funo
deve trabalhar. O compilador automaticamente gerar vrias funes para o apropriado handling de
cada tipo baseado nos tipos de argumentos usados ao chamar a funo.
A definio de template de funo comea com a palavra-chave template seguida pela lista de
parmetros entre chaves angulares. Cada parmetro formal precedido pela palavra-chave typename.
Tipos de parmetros formais so tipos incorporados ou definidos pelo usurio. Eles so usados:
para especificar os tipos de argumentos da funo,
para especificar o tipo de valor de retorno da funo,
para declarar as variveis dentro da definio da funo

O nmero de parmetros de template no pode exceder oito. Cada parmetro formal na definio de
template deve aparecer na lista de parmetros da funo pelo menos uma vez. Cada nome de um
parmetro formal deve ser nico.
Abaixo est um exemplo de um template de funo para buscar do valor mais alto em um array de
qualquer tipo numrico (nmeros inteiros ou reais):

2000-2015, MetaQuotes Software Corp.

236

Elementos Bsicos da Linguagem


template<typename T>
T ArrayMax(T &arr[])
{
uint size=ArraySize(arr);
if(size==0) return(0);
T max=arr[0];
for(uint n=1;n<size;n++)
if(max<arr[n]) max=arr[n];
//--return(max);
}

Este template define a funo que encontra o valor mais alto no array passado e retorna este valor
como resultado. Lembre-se que a funo ArrayMaximum() construda em MQL5 retorna apenas o
ndice do valor mais alto que pode ser usado para encontrar o valor em si. Por exemplo:
//--- criar array
double array[];
int size=50;
ArrayResize(array,size);
//--- preenche com valores aleatrios
for(int i=0;i<size;i++)
{
array[i]=MathRand();
}
//--- encontra a posio do valor mais alto no array
int max_position=ArrayMaximum(array);
//--- agora, obtm o valor mais alto propriamente no array
double max=array[max_position];
//--- exibe o valor encontrado
Print("Valor max = ",max);

Assim, ns realizamos dois passos para obter obter o valor mais alto no array. Com o template de
funo ArrayMax(), ns podemos obter o resultado do tipo necessrio apenas passando o array de tipo
apropriado para esta funo. Isso significa que ao invs das ltimas duas linhas:
//--- encontra a posio do valor mais alto no array
int max_position=ArrayMaximum(array);
//--- agora, receber o valor mais alto propriamente no array
double max=array[max_position];

ns podemos usar somente uma linha, cujo resultado retornado tem o mesmo tipo que o array passado
para a funo:
//--- encontra o valor mais alto
double max=ArrayMax(array);

Neste caso, o tipo do resultado retornado pela funo ArrayMax() corresponder automaticamente ao
tipo do array.

2000-2015, MetaQuotes Software Corp.

237

Elementos Bsicos da Linguagem

Use a palavra chave typename para obter o tipo do argumento como uma string a fim de criar mtodos
de propsito geral para trabalhar com vrios tipos de dados. Vamos considerar um exemplo especfico
da funo que retorna tipo de dado como uma string:
#include <Trade\Trade.mqh>
//+------------------------------------------------------------------+
//|

//+------------------------------------------------------------------+
void OnStart()
{
//--CTrade trade;
double d_value=M_PI;
int i_value=INT_MAX;
Print("d_value: tipo=",GetTypeName(d_value), ",

valor=", d_value);

Print("i_value: tipo=",GetTypeName(i_value), ",

valor=", i_value);

Print("trade: tipo=",GetTypeName(trade));
//--}
//+------------------------------------------------------------------+
//| Tipo retornado como uma linha

//+------------------------------------------------------------------+
template<typename T>
string GetTypeName(const T &t)
{
//--- retorna o tipo como uma linha
return(typename(T));
//--}

Templates de funo podem tambm serem usados para mtodos de classe, por exemplo:
class CFile
{
...
public:
...
template<typename T>
uint WriteStruct(T &data);
};
template<typename T>
uint CFile::WriteStruct(T &data)
{
...
return(FileWriteStruct(m_handle,data));
}

2000-2015, MetaQuotes Software Corp.

238

Elementos Bsicos da Linguagem

Os templates de funo no deve ser declarados com as palavras-chave export, virtual e #import.

2000-2015, MetaQuotes Software Corp.

239

Constantes Padro, Enumeradores e Estruturas

Constantes Padro, Enumeradores e Estruturas


Para simplificar a escrita do programa e tornar os textos do programa mais convenientes para
percepo, a linguagem MQL5 fornece constantes e enumeradores padres pr-definidos. Alm disso,
estruturas de servio so usados para armazenar informao.
Constantes padro so similares a macros e so do tipo int.
As constantes so agrupadas por seus propsitos:
Constantes de Grfico so usadas ao trabalhar com grficos de preos: abertura, navegao,
definio de parmetros;
Constantes de objetos so destinadas para processar objetos grficos que podem ser criados e
exibidos em grficos;
Constantes de indicadores so usadas para trabalhar com indicadores padres ou customizadas;
Constantes do estado do ambiente descrevem propriedades do programa MQL5, mostram
informaes sobre o terminal do cliente, instrumentos financeiros e conta corrente;
Constantes de negociao permite especificar uma variedade de informaes no decorrer da
negociao;
Constantes nomeadas so constantes da linguagem MQL5;
Estruturas de dados descrevem formatos de armazenamento de dados utilizados;
Cdigos de erros e avisos descrevem mensagens do compilador e respostas do servidor de
negociao a solicitaes de negociao;
Constantes de entrada/sada so projetados para trabalhar com funes de arquivo e exibir de
mensagens na tela atravs da funo MessageBox().

2000-2015, MetaQuotes Software Corp.

240

Constantes Padro, Enumeradores e Estruturas

Constantes de Grfico
As constantes descrevendo vrias propriedades de grficos so agrupadas na seguinte forma:
Tipos de eventos eventos que ocorrem quando se trabalha com grficos;
Janelas de tempo (timeframes) de grfico perodos incorporados padro;
Propriedades de grfico identificadores que so usados como parmetros de funes de grfico;
Constantes de posicionamento - valor de um parmetro da funo ChartNavigate();
Exibio de grficos - definio da aparncia do grfico.

2000-2015, MetaQuotes Software Corp.

241

Constantes Padro, Enumeradores e Estruturas

Tipos de Eventos de Grficos


Existem 9 tipos de eventos que podem ser processados usando a funo pr-definida OnChartEvent().
Para eventos customizados 65535 identificadores so fornecidos na faixa de CHARTEVENT_CUSTOM a
CHARTEVENT_CUSTOM_LAST inclusive. Para gerar um evento customizado, a funo
EventChartCustom() deve ser usada.
ENUM_CHART_EVENT
ID

Descrio

CHARTEVENT_KEYDOWN

Teclada

CHARTEVENT_MOUSE_MOVE

Movimento de mouse, cliques de mouse (se


CHART_EVENT_MOUSE_MOVE=true definido
para o grfico)

CHARTEVENT_OBJECT_CREATE

Objeto
grfico
criado
(se
CHART_EVENT_OBJECT_CREATE=true definido
para o grfico)

CHARTEVENT_OBJECT_CHANGE

Propriedade do objeto grfico alterada via


janela de dilogo de propriedades

CHARTEVENT_OBJECT_DELETE

Objeto
grficoexcludo
(se
CHART_EVENT_OBJECT_DELETE=true definido
para o grfico)

CHARTEVENT_CLICK

Dar um clique em um grfico

CHARTEVENT_OBJECT_CLICK

Dar um clique em um objeto grfico

CHARTEVENT_OBJECT_DRAG

Arrastar e soltar um objeto grfico

CHARTEVENT_OBJECT_ENDEDIT

Fim de edio de texto no objeto grfico Edit

CHARTEVENT_CHART_CHANGE

Alterao do tamanho do grfico ou modificao


das propriedades do grfico atravs da janela de
Propriedades

CHARTEVENT_CUSTOM

O nmero inicial de um evento de uma faixa de


eventos customizados

CHARTEVENT_CUSTOM_LAST

O nmero final de um evento de uma faixa de


eventos customizados

Para cada tipo de evento, os parmetros de entrada da funo OnChartEvent() tm valores definidos
que so requeridos para o processamento deste evento. Os eventos e valores passados atravs destes
parmetros so listados na tabela abaixo.
Evento

Valor
do
parmetro id

Valor
parmetro
lparam

do

Evento de uma

CHARTEVENT_KE

cdigo de uma

Valor
parmetro
dparam
Repita

2000-2015, MetaQuotes Software Corp.

do

Valor
parmetro
sparam

do

O valor da string

242

Constantes Padro, Enumeradores e Estruturas

teclada

YDOWN

tecla pressionada

contagem
(o
nmero de vezes
que a tecla
repetida
como
um resultado de
que o usurio
pressiona
a
tecla)

de uma pequena
mscara
de
descrever
o
estado de botes
do teclado

Eventos
de
mouse(se
CHART_EVENT_
MOUSE_MOVE=tr
ue definido
para o grfico)

CHARTEVENT_MO
USE_MOVE

a coordenada X

a coordenada Y

O valor de string
de uma mscara
de
bites
descrevendo
o
estado de botes
de mouse

evento
de
criao
de
objeto grfico(se
CHART_EVENT_O
BJECT_CREATE=t
rue definido
para o grfico)

CHARTEVENT_OB
JECT_CREATE

Nome do objeto
grfico criado

Evento
de
mudana de uma
propriedade de
objeto via janela
de dilogo de
propriedades

CHARTEVENT_OB
JECT_CHANGE

Nome do objeto
grfico
modificado

Evento
de
excluso
de
objeto
grfico
(se
CHART_EVENT_O
BJECT_DELETE=t
rue est definido
para o grfico)

CHARTEVENT_OB
JECT_DELETE

Nome do objeto
grfico excludo

Evento de um
click de mouse
no grfico

CHARTEVENT_C
LICK

a coordenada X

a coordenada Y

Evento de um
click de mouse
num
objeto
grfico
pertencente ao
grfico

CHARTEVENT_OB
JECT_CLICK

a coordenada X

a coordenada Y

Nome do objeto
grfico, na qual
o evento ocorreu

Evento
objeto

CHARTEVENT_OB
JECT_DRAG

Nome do objeto
grfico movido

de um
grfico

2000-2015, MetaQuotes Software Corp.

243

Constantes Padro, Enumeradores e Estruturas

arrastado usando
o mouse
Evento da edio
de
texto
finalizada
na
caixa de entrada
do objeto grfico
LabelEdit

CHARTEVENT_OB
JECT_ENDEDIT

Nome do objeto
grfico
LabelEdit, cuja
edio de texto
foi concluda

Evento
de
alterao
do
tamanho
do
grfico
ou
modificao das
propriedades do
grfico atravs
da janela de
Propriedades

CHARTEVENT_C
HART_CHANGE

ID do evento de
usurio sob N
nmero

CHARTEVENT_CU
STOM+N

Valor
definido
pela
funo
EventChartCusto
m()

Valor
definido
pela
funo
EventChartCusto
m()

Valor
definido
pela
funo
EventChartCusto
m()

Exemplo:
#define KEY_NUMPAD_5

12

#define KEY_LEFT

37

#define KEY_UP

38

#define KEY_RIGHT

39

#define KEY_DOWN

40

#define KEY_NUMLOCK_DOWN

98

#define KEY_NUMLOCK_LEFT

100

#define KEY_NUMLOCK_5

101

#define KEY_NUMLOCK_RIGHT 102


#define KEY_NUMLOCK_UP

104

//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--Print("O expert com nome ",MQL5InfoString(MQL5_PROGRAM_NAME)," est executando");
//--- enable object create events
ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_CREATE,true);
//--- enable object delete events
ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_DELETE,true);
//--return(INIT_SUCCEEDED);
}

2000-2015, MetaQuotes Software Corp.

244

Constantes Padro, Enumeradores e Estruturas


//+------------------------------------------------------------------+
//| ChartEvent function

//+------------------------------------------------------------------+
void OnChartEvent(const int id,

// Identificador de evento

const long& lparam,

// Parmetro de evento de tipo long

const double& dparam, // Parmetro de evento de tipo double


const string& sparam

// Parmetro de evento de tipo string

)
{
//--- o boto esquerdo do mouse foi pressionado no grfico
if(id==CHARTEVENT_CLICK)
{
Print("As coordenadas do clique do mouse sobre o grfico so: x = ",lparam,"

y = ",dparam);

}
//--- o mouse foi clicado sobre o objeto grfico
if(id==CHARTEVENT_OBJECT_CLICK)
{
Print("O mouse foi clicado sobre o objeto com o nome '"+sparam+"'");
}
//--- a tecla foi pressionada
if(id==CHARTEVENT_KEYDOWN)
{
switch(lparam)
{
case KEY_NUMLOCK_LEFT:

Print("O KEY_NUMLOCK_LEFT foi pressionado");

break;

case KEY_LEFT:

Print("O KEY_LEFT foi pressionado");

break;

case KEY_NUMLOCK_UP:

Print("O KEY_NUMLOCK_UP foi pressionado");

break;

case KEY_UP:

Print("O KEY_UP foi pressionado");

break;

case KEY_NUMLOCK_RIGHT: Print("O KEY_NUMLOCK_RIGHT foi pressionado");

break;

case KEY_RIGHT:

Print("O KEY_RIGHT foi pressionado");

break;

case KEY_NUMLOCK_DOWN:

Print("O KEY_NUMLOCK_DOWN foi pressionado");

break;

case KEY_DOWN:

Print("O KEY_DOWN foi pressionado");

break;

case KEY_NUMPAD_5:

Print("O KEY_NUMPAD_5 foi pressionado");

break;

case KEY_NUMLOCK_5:

Print("O KEY_NUMLOCK_5 foi pressionado");

break;

default:

Print("Algumas teclas no listadas foram pressionadas");

}
ChartRedraw();
}
//--- o objeto foi excludo
if(id==CHARTEVENT_OBJECT_DELETE)
{
Print("O objeto com o nome ",sparam," foi excludo");
}
//--- o objeto foi criado
if(id==CHARTEVENT_OBJECT_CREATE)
{
Print("O objeto com o nome ",sparam," foi criado");
}
//--- o objeto foi movido ou suas coordenadas de ponto de ancoragem foram alteradas

2000-2015, MetaQuotes Software Corp.

245

Constantes Padro, Enumeradores e Estruturas


if(id==CHARTEVENT_OBJECT_DRAG)
{
Print("O ponto de ancoragem das coordenadas do objeto com o nome ",sparam," foi alterado");
}
//--- o texto na Edio do objeto foi alterado
if(id==CHARTEVENT_OBJECT_ENDEDIT)
{
Print("O texto no campo da Edio do objeto com o nome ",sparam," foi alterado");
}
}

For CHARTEVENT_MOUSE_MOVE event the sparam string parameter contains information about state
of the keyboard and mouse buttons:
Bit

Description
1

State of the left mouse button

State of the right mouse button

State of the SHIFT button

State of the CTRL button

State of the middle mouse button

State of the first extra mouse button

State of the second extra mouse button

Example:
//+------------------------------------------------------------------+
//| Expert initialization function

//+------------------------------------------------------------------+
void OnInit()
{
//--- enable CHART_EVENT_MOUSE_MOVE messages
ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1);
}
//+------------------------------------------------------------------+
//| MouseState

//+------------------------------------------------------------------+
string MouseState(uint state)
{
string res;
res+="\nML: "

+(((state& 1)== 1)?"DN":"UP");

// mouse left

res+="\nMR: "

+(((state& 2)== 2)?"DN":"UP");

// mouse right

res+="\nMM: "

+(((state&16)==16)?"DN":"UP");

// mouse middle

res+="\nMX: "

+(((state&32)==32)?"DN":"UP");

// mouse first X key

res+="\nMY: "

+(((state&64)==64)?"DN":"UP");

// mouse second X key

res+="\nSHIFT: "+(((state& 4)== 4)?"DN":"UP");

// shift key

2000-2015, MetaQuotes Software Corp.

246

Constantes Padro, Enumeradores e Estruturas


res+="\nCTRL: " +(((state& 8)== 8)?"DN":"UP");

// control key

return(res);
}
//+------------------------------------------------------------------+
//| ChartEvent function

//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
if(id==CHARTEVENT_MOUSE_MOVE)
Comment("POINT: ",(int)lparam,",",(int)dparam,"\n",MouseState((uint)sparam));
}

Tambm Veja
Funes de Manipulao de Evento, Trabalhando com eventos

2000-2015, MetaQuotes Software Corp.

247

Constantes Padro, Enumeradores e Estruturas

Janela temporal de Grfico


Todas as janelas de tempo (timeframes) pr-definidas de grficos tm identificadores nicos. O
identificador PERIOD_CURRENT significa o perodo corrente de um grfico, no qual um programa MQL5
est rodando.
ENUM_TIMEFRAMES
ID

Descrio

PERIOD_CURRENT

Janela de tempo corrente

PERIOD_M1

1 minuto

PERIOD_M2

2 minutos

PERIOD_M3

3 minutos

PERIOD_M4

4 minutos

PERIOD_M5

5 minutos

PERIOD_M6

6 minutos

PERIOD_M10

10 minutos

PERIOD_M12

12 minutos

PERIOD_M15

15 minutos

PERIOD_M20

20 minutos

PERIOD_M30

30 minutos

PERIOD_H1

1 hora

PERIOD_H2

2 horas

PERIOD_H3

3 horas

PERIOD_H4

4 horas

PERIOD_H6

6 horas

PERIOD_H8

8 horas

PERIOD_H12

12 horas

PERIOD_D1

1 dia

PERIOD_W1

1 semana

PERIOD_MN1

1 ms

Exemplo:
string chart_name="test_Object_Chart";
Print("Vamos tentar criar um objeto grfico com o nome ",chart_name);
//--- Se tal objeto no existir - cri-lo

2000-2015, MetaQuotes Software Corp.

248

Constantes Padro, Enumeradores e Estruturas


if(ObjectFind(0,chart_name)<0)ObjectCreate(0,chart_name,OBJ_CHART,0,0,0,0,0);
//--- Define o ativo
ObjectSetString(0,chart_name,OBJPROP_SYMBOL,"EURUSD");
//--- Define a coordenada X do ponto de ancoragem
ObjectSetInteger(0,chart_name,OBJPROP_XDISTANCE,100);
//--- Define a coordenada Y do ponto de ancoragem
ObjectSetInteger(0,chart_name,OBJPROP_YDISTANCE,100);
//--- Define a largura do grfico
ObjectSetInteger(0,chart_name,OBJPROP_XSIZE,400);
//--- Define a altura
ObjectSetInteger(0,chart_name,OBJPROP_YSIZE,300);
//--- Define a janela de tempo
ObjectSetInteger(0,chart_name,OBJPROP_PERIOD,PERIOD_D1);
//--- Define escala (de 0 a 5)
ObjectSetDouble(0,chart_name,OBJPROP_SCALE,4);
//--- Desativa a seleo por mouse
ObjectSetInteger(0,chart_name,OBJPROP_SELECTABLE,false);

Tambm Veja
PeriodSeconds, Period, Data e Hora, Visibilidade de objetos

2000-2015, MetaQuotes Software Corp.

249

Constantes Padro, Enumeradores e Estruturas

Propriedades de Grfico
Identificadores de enumeradores ENUM_CHART_PROPERTY so usados como parmetros de funes
para trabalhar com grficos. A abreviatura de r/o na coluna "Tipo de Propriedade" significa que esta
propriedade somente leitura e no pode ser alterada. A abreviatura w/o na coluna "Tipo de
Propriedade" significa que esta propriedade somente leitura e no pode ser recebida. Ao acessar
certas propriedades, necessrio especificar um parmetro adicional, que serve para indicar o
nmero da sub-janela do grfico. 0 significa a janela principal.
The functions defining the chart properties are actually used for sending change commands to the
chart. If these functions are executed successfully, the command is included in the common queue of
the chart events. The changes are implemented to the chart when handling the queue of the chart
events.
Thus, do not expect an immediate visual update of the chart after calling these functions. Generally,
the chart is updated automatically by the terminal following the change events - a new quote arrival,
resizing the chart window, etc. Use ChartRedraw() function to forcefully update the chart.
Para funes ChartSetInteger() e ChartGetInteger()
ENUM_CHART_PROPERTY_INTEGER
ID

Descrio

Tipo de Propriedade

CHART_IS_OBJECT

Identificado
objeto
de
"Grfico"
(OBJ_CHART)
retorna verdadeiro para um
objeto grfico. Retorna falso
para um grfico real

bool r/o

CHART_BRING_TO_TOP

Exibe o grfico no topo de


outros grficos

bool w/o

CHART_MOUSE_SCROLL

Rolagem
do
grfico
horizontalmente
usando
o
boto esquerdo do mouse.
Rolagem vertical tambm est
disponvel se for definido como
verdadeiro o valor de todas as
seguintes
propriedades:
CHART_SCALEFIX,
CHART_SCALEFIX_11
ou
CHART_SCALE_PT_PER_BAR

bool

CHART_EVENT_MOUSE_MOVE

Eventos
CHARTEVENT_MOUSE_MOVE)
envia
notificaes
de
movimento de mouse e clique
de mouse a todos os programas
MQL5 num grfico

bool

CHART_EVENT_OBJECT_CREAT
E

Envia uma notificao de um


evento de criao de novo

bool

2000-2015, MetaQuotes Software Corp.

250

Constantes Padro, Enumeradores e Estruturas

objeto
(CHARTEVENT_OBJECT_CREAT
E) para todos os programas
MQL5 em um grfico
CHART_EVENT_OBJECT_DELET
E

Envia uma notificao de um


evento de excluso de objeto
(CHARTEVENT_OBJECT_DELETE
) para todos os programas
MQL5 em um grfico

bool

CHART_MODE

Tipo de grfico
barras ou linha)

enum

CHART_FOREGROUND

Grfico de preos no primeiro


plano

bool

CHART_SHIFT

Modo de encaixe do grfico de


preo a partir da borda direita

bool

CHART_AUTOSCROLL

Modo
de
movimentao
automtica para a borda
direita do grfico

bool

CHART_SCALE

Escala

int

CHART_SCALEFIX

Modo de escala fixo

bool

CHART_SCALEFIX_11

Modo de escala 1:1

bool

CHART_SCALE_PT_PER_BAR

Escala para ser especificada


em pontos por barra

bool

CHART_SHOW_OHLC

Exibe valores OHLC no canto


superior esquerdo

bool

CHART_SHOW_BID_LINE

Exibe valores de preo de


venda
como
uma
linha
horizontal em um grfico

bool

CHART_SHOW_ASK_LINE

Exibe valores de preo de


compra como
uma
linha
horizontal em um grfico

bool

CHART_SHOW_LAST_LINE

Exibe valores de ltimo preo


como uma linha horizontal em
um grfico

bool

CHART_SHOW_PERIOD_SEP

Exibe separadores verticais


entre perodos adjacentes

bool

CHART_SHOW_GRID

Exibe grade no grfico

bool

CHART_SHOW_VOLUMES

Exibe volume no grfico

enum
ENUM_CHART_VOLUME_MODE

CHART_SHOW_OBJECT_DESCR

Descries pop-up de objetos


grficos

bool

(candles,

2000-2015, MetaQuotes Software Corp.

ENUM_CHART_MODE

de 0 a 5

251

Constantes Padro, Enumeradores e Estruturas

CHART_VISIBLE_BARS

O nmero de barras no grfico


que podem ser exibidas

int r/o

CHART_WINDOWS_TOTAL

O nmero total de janelas de


grficos, incluindo sub-janelas
de indicadores

int r/o

CHART_WINDOW_IS_VISIBLE

Visibilidade de sub-janelas

bool r/o modificador - nmero


de sub-janela

CHART_WINDOW_HANDLE

Manuseio da janela do grfico


(HWND)

int r/o

CHART_WINDOW_YDISTANCE

A distncia entre a moldura


superior da sub-janela do
indicador e a moldura superior
da janela do grfico principal,
ao longo do eixo Y vertical, in
pixels. No caso de um evento
de mouse, as coordenadas do
cursor so passadas em termos
das coordenadas da janela do
grfico principal, enquanto que
as coordenadas de objetos
grficos em uma sub-janela do
indicador so definidas em
relao ao canto superior
esquerdo da sub-janela.
O valor requerido para
converter
as
coordenadas
absolutas do grfico principal
em coordenadas locais da subjanela para correto trabalho
com os objetos grficos, cujas
coordenadas so definidas em
relao ao canto superior
esquerdo da moldura da subjanela.

int r/o
modificador - nmero
de sub-janela

CHART_FIRST_VISIBLE_BAR

Nmero das primeiras barras


visveis
no
grfico.
A
indexao de barras a mesma
para sries de tempo.

int r/o

CHART_WIDTH_IN_BARS

Largura de grfico em barras

int r/o

CHART_WIDTH_IN_PIXELS

Largura de grfico em pixels

int r/o

CHART_HEIGHT_IN_PIXELS

Altura de grfico em pixels

int
modificador - nmero de
sub-janela

CHART_COLOR_BACKGROUND

Cor de fundo do grfico

color

CHART_COLOR_FOREGROUND

Cor dos eixos, escalas e linha


OHLC

color

2000-2015, MetaQuotes Software Corp.

252

Constantes Padro, Enumeradores e Estruturas

CHART_COLOR_GRID

Cor da grade

color

CHART_COLOR_VOLUME

Cor dos volumes e nveis de


abertura de posio

color

CHART_COLOR_CHART_UP

Cor para a barra de alta,


sombras e bordas de candles de
alta

color

CHART_COLOR_CHART_DOWN

Cor para a barra de baixa,


sombras e bordas de candles de
baixa

color

CHART_COLOR_CHART_LINE

Cor de grfico de linha e cor de


candles "Doji" japoneses

color

CHART_COLOR_CANDLE_BULL

Cor de corpo de um candle de


alta

color

CHART_COLOR_CANDLE_BEAR

Cor de corpo de um candle de


baixa

color

CHART_COLOR_BID

Cor de nvel de preo de venda

color

CHART_COLOR_ASK

Cor de nvel de preo de


compra

color

CHART_COLOR_LAST

Cor de linha do ltimo preo de


operao executada

color

CHART_COLOR_STOP_LEVEL

Cor de nveis de ordem de stop


(Stop Loss e Take Profit)

color

CHART_SHOW_TRADE_LEVELS

Exibio
de
nveis
de
negociao no grfico (nveis
de abertura de posio, Stop
Loss, Take Profit e ordens
pendentes

bool

CHART_DRAG_TRADE_LEVELS

Permisso para arrastar os


nveis de negociao num
grfico com um mouse. O
modo de arrastar ativado
pelo padro (valor verdadeiro)

bool

CHART_SHOW_DATE_SCALE

Exibio da escala de tempo


em um grfico

bool

CHART_SHOW_PRICE_SCALE

Exibio da escala de preo em


um grfico

bool

CHART_SHOW_ONE_CLICK

Showing the "One click trading"


panel on a chart

bool

Para funes ChartSetDouble() e ChartGetDouble()


ENUM_CHART_PROPERTY_DOUBLE

2000-2015, MetaQuotes Software Corp.

253

Constantes Padro, Enumeradores e Estruturas


ID

Descrio

Tipo de Propriedade

CHART_SHIFT_SIZE

O tamanho da barra zero


encaixada a partir da borda
direita em porcentagens

double (de 10 to 50 porcento)

CHART_FIXED_POSITION

Posio fixa do grfico a partir


da borda esquerda em valor
percentual. A posio fixa do
grfico marcada por um
pequeno tringulo cinza no eixo
do tempo horizontal. Ele
exibido somente se a rolagem
automtica do grfico para a
direita na chegada de um tick
(preo
novo)
estiver
desabilitada
(veja
a
propriedade
CHART_AUTOSCROLL). A barra
em
uma
posio
fixa
permanece no mesmo lugar ao
se ampliar e reduzir o grfico.

double

CHART_FIXED_MAX

Mximo fixo do grfico

double

CHART_FIXED_MIN

Mnimo fixo do grfico

double

CHART_POINTS_PER_BAR

Escala em pontos por barra

double

CHART_PRICE_MIN

Mnimo do grfico

double r/o
modificador nmero de sub-janela

CHART_PRICE_MAX

Mximo do grfico

double r/o
modificador nmero de sub-janela

Para funes ChartSetString() e ChartGetString()


ENUM_CHART_PROPERTY_STRING
ID

Descrio

CHART_COMMENT

Tipo de Propriedade

Texto de um comentrio em
um grfico

Exemplo:
int chartMode=ChartGetInteger(0,CHART_MODE);
switch(chartMode)
{
case(CHART_BARS):

Print("CHART_BARS");

break;

case(CHART_CANDLES): Print("CHART_CANDLES");break;
default:Print("CHART_LINE");
}
bool shifted=ChartGetInteger(0,CHART_SHIFT);
if(shifted) Print("CHART_SHIFT = true");

2000-2015, MetaQuotes Software Corp.

string

254

Constantes Padro, Enumeradores e Estruturas


else Print("CHART_SHIFT = false");
bool autoscroll=ChartGetInteger(0,CHART_AUTOSCROLL);
if(autoscroll) Print("CHART_AUTOSCROLL = true");
else Print("CHART_AUTOSCROLL = false");
int chartHandle=ChartGetInteger(0,CHART_WINDOW_HANDLE);
Print("CHART_WINDOW_HANDLE = ",chartHandle);
int windows=ChartGetInteger(0,CHART_WINDOWS_TOTAL);
Print("CHART_WINDOWS_TOTAL = ",windows);
if(windows>1)
{
for(int i=0;i<windows;i++)
{
int height=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,i);
double priceMin=ChartGetDouble(0,CHART_PRICE_MIN,i);
double priceMax=ChartGetDouble(0,CHART_PRICE_MAX,i);
Print(i+": CHART_HEIGHT_IN_PIXELS = ",height," pixels");
Print(i+": CHART_PRICE_MIN = ",priceMin);
Print(i+": CHART_PRICE_MAX = ",priceMax);
}
}

Tambm Veja
Exemplos de como trabalhar com um grfico

2000-2015, MetaQuotes Software Corp.

255

Constantes Padro, Enumeradores e Estruturas

Constantes de Posicionamento
Trs identificadores a partir da lista ENUM_CHART_POSITION so os possveis valores do parmetro
de posio para a funo ChartNavigate().
ENUM_CHART_POSITION
ID

Descrio

CHART_BEGIN

Comeo do grfico (o preo mais antigo)

CHART_CURRENT_POS

Posio corrente

CHART_END

Final do grfico (os preos mais recentes)

Exemplo:
long handle=ChartOpen("EURUSD",PERIOD_H12);
if(handle!=0)
{
ChartSetInteger(handle,CHART_AUTOSCROLL,false);
ChartSetInteger(handle,CHART_SHIFT,true);
ChartSetInteger(handle,CHART_MODE,CHART_LINE);
ResetLastError();
bool res=ChartNavigate(handle,CHART_END,150);
if(!res) Print("Navegar falhou. Erro = ",GetLastError());
ChartRedraw();
}

2000-2015, MetaQuotes Software Corp.

256

Constantes Padro, Enumeradores e Estruturas

Representao de Grfico
Os grficos de preo podem ser exibidos de trs maneiras:
como barras;
como candles;
como um linha.
A maneira especfica de exibir o grfico de preo definida definida pela funo
ChartSetInteger(chart_handle,CHART_MODE, chart_mode), onde chart_mode um dos valores da
enumerao ENUM_CHART_MODE.
ENUM_CHART_MODE
ID

Descrio

CHART_BARS

Exibe como uma seqncia de barras

CHART_CANDLES

Exibe como candles japoneses

CHART_LINE

Exibe como uma linha desenha por preos de


fechamento

Para especificar o modo de exibio de volumes em um grfico de preos a funo


ChartSetInteger(chart_handle, CHART_SHOW_VOLUMES, volume_mode) usada, onde volume_mode
um dos valores da enumerao ENUM_CHART_VOLUME_MODE.

ENUM_CHART_VOLUME_MODE
ID

Descrio

CHART_VOLUME_HIDE

Volumes no so exibidos

CHART_VOLUME_TICK

Volumes de tick (mudana de preo)

CHART_VOLUME_REAL

Volume de negociao

Exemplo:
//--- Obtm o manuseio do grfico corrente
long handle=ChartID();
if(handle>0) // Se bem sucedido, customiza adicionalmente
{
//--- Desativa auto-rolagem
ChartSetInteger(handle,CHART_AUTOSCROLL,false);
//--- Define o encaixe da borda direita do grfico
ChartSetInteger(handle,CHART_SHIFT,true);
//--- Exibe como candles
ChartSetInteger(handle,CHART_MODE,CHART_CANDLES);
//--- Rola por 100 barras a partir do comeo do histrico
ChartNavigate(handle,CHART_CURRENT_POS,100);
//--- Define o modo de exibio de volume de tick

2000-2015, MetaQuotes Software Corp.

257

Constantes Padro, Enumeradores e Estruturas


ChartSetInteger(handle,CHART_SHOW_VOLUMES,CHART_VOLUME_TICK);
}

Tambm Veja
ChartOpen, ChartID

2000-2015, MetaQuotes Software Corp.

258

Constantes Padro, Enumeradores e Estruturas

Exemplos de como trabalhar com um grfico


Exemplos de como trabalhar com propriedades do grfico. Uma ou duas funes completas so
exibidas para cada propriedade. Estas funes permitem configurar/receber o valor da propriedade.
Essas funes podem ser utilizadas "como esto" em aplicativos personalizados MQL5.
a imagem abaixo mostra o painel grfico ilustrando como modificara propriedade do grficomudando
sua aparncia. Clicando prximo boto permite definir o novo valor da propriedade apropriada e
visualizar as alteraes na janela do grfico.

O cdigo fonte do painel est localizado abaixo.

Propriedades do Grfico e Exemplos de Funes para Trabalhar


com Eles
CHART_IS_OBJECT define se um objeto um grfico real ou um objeto grfico.
//+-------------------------------------------------------------------------+
//| Definir se um objeto um grfico. Se ele for

//| um objeto grfico, o resultado verdadeiro. Se ele for um grfico real|


//| o resultado da varivel foi o valor falso.

//+-------------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

259

Constantes Padro, Enumeradores e Estruturas


bool ChartIsObject(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- obter a propriedade do grfico
if(!ChartGetInteger(chart_ID,CHART_IS_OBJECT,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
//--- retorna false
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}

CHART_BRING_TO_TOP exibe o grfico no topo de outros grficos.


//+-------------------------------------------------------------------------+
//| Enviar comando para o terminal para exibir o grfico acima dos outros.

//+-------------------------------------------------------------------------+
bool ChartBringToTop(const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- exibe o grfico no topo de outros grficos
if(!ChartSetInteger(chart_ID,CHART_BRING_TO_TOP,0,true))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_MOUSE_SCROLL uma propriedade para rolagem do grfico usando boto esquerdo do


mouse.
//+--------------------------------------------------------------------------+
//| A funo define se a rolagem do grfico usando o boto esquerdo do mouse|
//| est habilitado.

//+--------------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

260

Constantes Padro, Enumeradores e Estruturas


bool ChartMouseScrollGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_MOUSE_SCROLL,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+--------------------------------------------------------------------+
//| A funo habilita/desabilita a rolagem do grfico usando boto

//| esquerdo do mouse.

//+--------------------------------------------------------------------+
bool ChartMouseScrollSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_MOUSE_SCROLL,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_EVENT_MOUSE_MOVE uma propriedade de enviar mensagens sobre mudana de eventos


e cliques de mouse para aplicaes MQL5 CHARTEVENT_MOUSE_MOVE).
//+------------------------------------------------------------------+
//| Verificar se mudana de eventos e cliques de mouse

//| so enviadas para todas as aplicaes mql5 no grfico.

//+------------------------------------------------------------------+
bool ChartEventMouseMoveGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;

2000-2015, MetaQuotes Software Corp.

261

Constantes Padro, Enumeradores e Estruturas


//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_EVENT_MOUSE_MOVE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de envio de mensagens sobre mudana

//| de eventos e cliques de mouse para aplicaes no

//| grfico.

//+------------------------------------------------------------------------------+
bool ChartEventMouseMoveSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_EVENT_MOUSE_MOVE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_EVENT_OBJECT_CREATE uma propriedade de enviar mensagens sobre o evento da


criao do objeto grfico para aplicaes MQL5 (CHARTEVENT_OBJECT_CREATE).
//+---------------------------------------------------------------------+
//| Verificar se mensagens do evento da criao de um objeto grfico |
//| so enviadas para todas as aplicaes mql5 no grfico.

//+---------------------------------------------------------------------+
bool ChartEventObjectCreateGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade

2000-2015, MetaQuotes Software Corp.

262

Constantes Padro, Enumeradores e Estruturas


if(!ChartGetInteger(chart_ID,CHART_EVENT_OBJECT_CREATE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+--------------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de envio de mensagens sobre

//| o evento da criao do objeto grfico para aplicaes mql5 no

//| grfico.

//+--------------------------------------------------------------------------+
bool ChartEventObjectCreateSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_EVENT_OBJECT_CREATE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_EVENT_OBJECT_DELETE uma propriedade de enviar mensagens sobre o evento da


excluso do objeto grfico para aplicaes MQL5 (CHARTEVENT_OBJECT_DELETE).
//+---------------------------------------------------------------------+
//| Verificar se mensagens do evento da excluso de um objeto grfico |
//| so enviadas para todas as aplicaes mql5 no grfico.

//+---------------------------------------------------------------------+
bool ChartEventObjectDeleteGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_EVENT_OBJECT_DELETE,0,value))
{
//--- exibe uma mensagem para o dirio Experts

2000-2015, MetaQuotes Software Corp.

263

Constantes Padro, Enumeradores e Estruturas


Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+--------------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de envio de mensagens sobre

//| o evento da excluso do objeto grfico para aplicaes mql5 no

//| grfico.

//+--------------------------------------------------------------------------+
bool ChartEventObjectDeleteSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_EVENT_OBJECT_DELETE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_MODE tipo de grfico (candles, barras ou linha).


//+------------------------------------------------------------------+
//| Obter tipo de grfico (candles, barras ou

//| linha).

//+------------------------------------------------------------------+
ENUM_CHART_MODE ChartModeGet(const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long result=WRONG_VALUE;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_MODE,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((ENUM_CHART_MODE)result);

2000-2015, MetaQuotes Software Corp.

264

Constantes Padro, Enumeradores e Estruturas


}
//+------------------------------------------------------------------+
//| Define tipo de grfico (candles, barras ou

//| linha).

//+------------------------------------------------------------------+
bool ChartModeSet(const long value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_MODE,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_FOREGROUND uma propriedade de exibio do grfico de preo no primeiro plano.


//+------------------------------------------------------------------+
//| A funo define se um grfico de preo exibido no

//| primeiro plano.

//+------------------------------------------------------------------+
bool ChartForegroundGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_FOREGROUND,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+---------------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de exibio do grfico de preo no

//| primeiro plano.

//+---------------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

265

Constantes Padro, Enumeradores e Estruturas


bool ChartForegroundSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_FOREGROUND,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SHIFT modo de encaixe do grfico de preo a partir da borda direita.


//+------------------------------------------------------------------------------------+
//| A funo define se o modo de deslocamento do grfico de preo do limite direito

//| est habilitado.

//+------------------------------------------------------------------------------------+
bool ChartShiftGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SHIFT,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+--------------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de exibio do grfico de preo com |
//| deslocamento do limite direito.

//+--------------------------------------------------------------------------+
bool ChartShiftSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade

2000-2015, MetaQuotes Software Corp.

266

Constantes Padro, Enumeradores e Estruturas


if(!ChartSetInteger(chart_ID,CHART_SHIFT,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_AUTOSCROLL modo de movimentao automtica para a borda direita do grfico.


//+---------------------------------------------------------------------+
//| A funo define o modo de auto-rolamento do grfico

//| para a direita no caso de chegada de novos ticks estar habilitado. |


//+---------------------------------------------------------------------+
bool ChartAutoscrollGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_AUTOSCROLL,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de auto-rolamento do grfico |
//| para a direita no caso da chegada de novos ticks.

//+------------------------------------------------------------------+
bool ChartAutoscrollSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_AUTOSCROLL,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);

2000-2015, MetaQuotes Software Corp.

267

Constantes Padro, Enumeradores e Estruturas


}
//--- sucesso na execuo
return(true);
}

CHART_SCALE chart scale property.


//+------------------------------------------------------------------+
//| Obter escala do grfico (de 0 a 5).

//+------------------------------------------------------------------+
int ChartScaleGet(const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long result=-1;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SCALE,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((int)result);
}
//+------------------------------------------------------------------+
//| Definir escala do grfico (de 0 a 5).

//+------------------------------------------------------------------+
bool ChartScaleSet(const long value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SCALE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SCALEFIX o modo de especificar a escala do grfico em pontos por barra.


//+------------------------------------------------------------------+
//| A funo define se o modo de fixar a escala est habilitado.

2000-2015, MetaQuotes Software Corp.

268

Constantes Padro, Enumeradores e Estruturas


//+------------------------------------------------------------------+
bool ChartScaleFixGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SCALEFIX,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de fixar a escala.

//+------------------------------------------------------------------+
bool ChartScaleFixSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SCALEFIX,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SCALEFIX_11 modo de escala 1:1.


//+------------------------------------------------------------------+
//| A funo define se a escala "1:1" est habilitada.

//+------------------------------------------------------------------+
bool ChartScaleFix11Get(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();

2000-2015, MetaQuotes Software Corp.

269

Constantes Padro, Enumeradores e Estruturas


//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SCALEFIX_11,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de escala "1:1"

//+------------------------------------------------------------------+
bool ChartScaleFix11Set(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SCALEFIX_11,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SCALE_PT_PER_BAR o modo de especificar a escala do grfico em pontos por barra.


//+------------------------------------------------------------------------------+
//| A funo define se o modo de especificar a escala do grfico por pontos

//| barra est habilitada.

//+------------------------------------------------------------------------------+
bool ChartScalePerBarGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SCALE_PT_PER_BAR,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);

2000-2015, MetaQuotes Software Corp.

270

Constantes Padro, Enumeradores e Estruturas


}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de definir a escala do grfico em pontos por

//| barra.

//+------------------------------------------------------------------------------------+
bool ChartScalePerBarSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SCALE_PT_PER_BAR,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SHOW_OHLC propriedade de exibe valores OHLC no canto superior esquerdo.


//+------------------------------------------------------------------+
//| A funo define se o modo de exibio dos valores OHLC

//| no canto superior esquerdo est habilitado.

//+------------------------------------------------------------------+
bool ChartShowOHLCGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SHOW_OHLC,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);

2000-2015, MetaQuotes Software Corp.

271

Constantes Padro, Enumeradores e Estruturas


}
//+--------------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de exibio dos valores OHLC no

//| canto superior esquerdo do grfico.

//+--------------------------------------------------------------------------+
bool ChartShowOHLCSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SHOW_OHLC,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SHOW_BID_LINE a propriedade mostra o valor Bid como uma linha horizontal no grfico.
//+-----------------------------------------------------------------------------+
//| A funo define se o modo de exibio da linha do valor Bid no grfico

//| est habilitado.

//+-----------------------------------------------------------------------------+
bool ChartShowBidLineGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SHOW_BID_LINE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+--------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de exibio da linha Bid no

//| grfico.

//+--------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

272

Constantes Padro, Enumeradores e Estruturas


bool ChartShowBidLineSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SHOW_BID_LINE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SHOW_ASK_LINE a propriedade de mostrar o valor Ask como uma linha horizontal no


grfico.
//+-----------------------------------------------------------------------+
//| A funo define se o modo de exibio da linha de valor Ask no

//| grfico.

//+-----------------------------------------------------------------------+
bool ChartShowAskLineGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SHOW_ASK_LINE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+-----------------------------------------------------------------------+
//| A funo habibita/desabilita o modo de exibio da linha ASk no

//| grfico.

//+-----------------------------------------------------------------------+
bool ChartShowAskLineSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();

2000-2015, MetaQuotes Software Corp.

273

Constantes Padro, Enumeradores e Estruturas


//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SHOW_ASK_LINE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SHOW_LAST_LINE a propriedade de exibir ltimo valor como uma linha horizontal no


grfico.
//+---------------------------------------------------------------------------------+
//| A funo define se o modo da exibio da linha para a ltima execuo

//| do preo de negociao est habilitada.

//+---------------------------------------------------------------------------------+
bool ChartShowLastLineGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SHOW_LAST_LINE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+--------------------------------------------------------------------------------------+
//| A funo habilita/desabilita o modo da exibio da linha para a ltima execuo

//| do preo de negociao.

//+--------------------------------------------------------------------------------------+
bool ChartShowLastLineSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SHOW_LAST_LINE,0,value))
{
//--- exibe uma mensagem para o dirio Experts

2000-2015, MetaQuotes Software Corp.

274

Constantes Padro, Enumeradores e Estruturas


Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SHOW_PERIOD_SEP a propriedade de exibir separadores verticais entre os perodos


adjacentes.
//+------------------------------------------------------------------+
//| A funo define se o modo da exibio dos separadores vertical

//| entre os perodos adjacentes est habilitado.

//+------------------------------------------------------------------+
bool ChartShowPeriodSeparatorGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SHOW_PERIOD_SEP,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de exibio dos separadores |
//| vertical entre os perodos adjacentes.

//+------------------------------------------------------------------+
bool ChartShowPeriodSepapatorSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SHOW_PERIOD_SEP,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo

2000-2015, MetaQuotes Software Corp.

275

Constantes Padro, Enumeradores e Estruturas


return(true);
}

CHART_SHOW_GRID a propriedade de mostrar a grade do grfico.


//+------------------------------------------------------------------+
//| A funo define se a grade do grfico exibida.

//+------------------------------------------------------------------+
bool ChartShowGridGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SHOW_GRID,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| A funo habilita/desabilita a grade do grfico.

//+------------------------------------------------------------------+
bool ChartShowGridSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- definir o valor da propriedade
if(!ChartSetInteger(chart_ID,CHART_SHOW_GRID,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SHOW_VOLUMES a propriedade de mostrar os volumes num grfico.


//+------------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

276

Constantes Padro, Enumeradores e Estruturas


//| A funo define se os volumes so exibidos no grfico (ou no so

//| mostrados, ticks so mostrados, os atuais so mostrados).

//+------------------------------------------------------------------------+
ENUM_CHART_VOLUME_MODE ChartShowVolumesGet(const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long result=WRONG_VALUE;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SHOW_VOLUMES,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((ENUM_CHART_VOLUME_MODE)result);
}
//+------------------------------------------------------------------+
//| A funo define o mode de exibio dos volumes no grfico.

//+------------------------------------------------------------------+
bool ChartShowVolumesSet(const long value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SHOW_VOLUMES,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SHOW_OBJECT_DESCR a propriedade mostrar descries pop-up do objeto grfico.


//+-------------------------------------------------------------------+
//| A funo define se descries pop-up de objetos grficos so

//| exibidas quando colocado o cursor do mouse sobre eles.

//+-------------------------------------------------------------------+
bool ChartShowObjectDescriptionGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();

2000-2015, MetaQuotes Software Corp.

277

Constantes Padro, Enumeradores e Estruturas


//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SHOW_OBJECT_DESCR,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+--------------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de exibio de descries pop-up

//| de objetos grficos quando colocado o cursor do mouse sobre eles.

//+--------------------------------------------------------------------------+
bool ChartShowObjectDescriptionSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SHOW_OBJECT_DESCR,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_VISIBLE_BARS define o nmero de barras no grfico que so disponibilizadas para exibio.


//+-----------------------------------------------------------------------+
//| A funo recebe o nmero de barras que so mostradas (visveis)

//| na janela do grfico.

//+-----------------------------------------------------------------------+
int ChartVisibleBars(const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long result=-1;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_VISIBLE_BARS,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());

2000-2015, MetaQuotes Software Corp.

278

Constantes Padro, Enumeradores e Estruturas


}
//--- retorna o valor da propriedade do grfico
return((int)result);
}

CHART_WINDOWS_TOTAL define o nmero total de janelas do grfico incluindo sub-janelas do


indicador.
//+--------------------------------------------------------------------------+
//| A funo obtm o nmero total de janelas do grfico incluindo

//| subjanelas do indicador.

//+--------------------------------------------------------------------------+
int ChartWindowsTotal(const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long result=-1;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_WINDOWS_TOTAL,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((int)result);
}

CHART_WINDOW_IS_VISIBLE define a visibilidade da sub-janela.


//+------------------------------------------------------------------+
//| A funo define se a atual janela do grfico ou sub-janela

//| est visvel.

//+------------------------------------------------------------------+
bool ChartWindowsIsVisible(bool &result,const long chart_ID=0,const int sub_window=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_WINDOW_IS_VISIBLE,sub_window,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}

2000-2015, MetaQuotes Software Corp.

279

Constantes Padro, Enumeradores e Estruturas


//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}

CHART_WINDOW_HANDLE retorna o manipulador do grfico.


//+------------------------------------------------------------------+
//| A funo obtm o manipulador do grfico

//+------------------------------------------------------------------+
int ChartWindowsHandle(const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long result=-1;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_WINDOW_HANDLE,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((int)result);
}

CHART_WINDOW_YDISTANCE define a distncia em pixels entre a quadro superior do sub-janela do


indicador e o quadro superior da janela principal do grfico.
//+------------------------------------------------------------------+
//| A funo obtm a distncia em pixels entre a quadro superior da |
//| sub-janela e o quadro superior da janela principal do grfico.

//+------------------------------------------------------------------+
int ChartWindowsYDistance(const long chart_ID=0,const int sub_window=0)
{
//--- preparar a varivel para obter o valor da propriedade
long result=-1;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_WINDOW_YDISTANCE,sub_window,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico

2000-2015, MetaQuotes Software Corp.

280

Constantes Padro, Enumeradores e Estruturas


return((int)result);
}

CHART_FIRST_VISIBLE_BAR retorna o nmero da primeira barra visvel no grfico (barra de


indexao que corresponde a srie temporal).
//+---------------------------------------------------------------------------------------+
//| A funo recebe o nmero da primeira barra visvel no grfico.

//| Indexao executada como em sries temporais, as ltimas barras tm ndices menores |
//+---------------------------------------------------------------------------------------+
int ChartFirstVisibleBar(const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long result=-1;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_FIRST_VISIBLE_BAR,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((int)result);
}

CHART_WIDTH_IN_BARS retorna a largura do grfico de barras.


//+------------------------------------------------------------------+
//| A funo recebe a largura do grfico de barras.

//+------------------------------------------------------------------+
int ChartWidthInBars(const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long result=-1;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_WIDTH_IN_BARS,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((int)result);
}

2000-2015, MetaQuotes Software Corp.

281

Constantes Padro, Enumeradores e Estruturas

CHART_WIDTH_IN_PIXELS retorna a largura da do grfico em pixels.


//+------------------------------------------------------------------+
//| A funo recebe a largura da do grfico em pixels.

//+------------------------------------------------------------------+
int ChartWidthInPixels(const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long result=-1;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_WIDTH_IN_PIXELS,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((int)result);
}

CHART_HEIGHT_IN_PIXELS propriedade em pixels da altura do grfico.


//+------------------------------------------------------------------+
//| A funo recebe o valor da altura do grfico em pixels.

//+------------------------------------------------------------------+
int ChartHeightInPixelsGet(const long chart_ID=0,const int sub_window=0)
{
//--- preparar a varivel para obter o valor da propriedade
long result=-1;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_HEIGHT_IN_PIXELS,sub_window,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((int)result);
}
//+------------------------------------------------------------------+
//| A funo define o valor da altura do grfico em pixels.

//+------------------------------------------------------------------+
bool ChartHeightInPixelsSet(const int value,const long chart_ID=0,const int sub_window=0)
{

2000-2015, MetaQuotes Software Corp.

282

Constantes Padro, Enumeradores e Estruturas


//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_HEIGHT_IN_PIXELS,sub_window,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_COLOR_BACKGROUND - cor do fundo do grfico.


//+------------------------------------------------------------------+
//| A funo recebe a cor do fundo do grfico.

//+------------------------------------------------------------------+
color ChartBackColorGet(const long chart_ID=0)
{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- receber a cor do fundo do grfico
if(!ChartGetInteger(chart_ID,CHART_COLOR_BACKGROUND,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo define a cor de fundo do grfico.

//+------------------------------------------------------------------+
bool ChartBackColorSet(const color clr,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- definir a cor do fundo do grfico
if(!ChartSetInteger(chart_ID,CHART_COLOR_BACKGROUND,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo

2000-2015, MetaQuotes Software Corp.

283

Constantes Padro, Enumeradores e Estruturas


return(true);
}

CHART_COLOR_FOREGROUND Cor dos eixos, escala e linha OHLC.


//+------------------------------------------------------------------+
//| A funo recebe a cor dos eixos, da escala e da linha OHLC.

//+------------------------------------------------------------------+
color ChartForeColorGet(const long chart_ID=0)
{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- receber cor dos eixos, escala e linha OHLC
if(!ChartGetInteger(chart_ID,CHART_COLOR_FOREGROUND,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo configura a cor dos eixos, da escala e da linha OHLC.

//+------------------------------------------------------------------+
bool ChartForeColorSet(const color clr,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- definir cor dos eixos, escala e linha OHLC
if(!ChartSetInteger(chart_ID,CHART_COLOR_FOREGROUND,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_COLOR_GRID cor da grade do grfico.


//+------------------------------------------------------------------+
//| A funo recebe a cor da grade do grfico.

//+------------------------------------------------------------------+
color ChartGridColorGet(const long chart_ID=0)

2000-2015, MetaQuotes Software Corp.

284

Constantes Padro, Enumeradores e Estruturas


{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- receber a cor da grade do grfico
if(!ChartGetInteger(chart_ID,CHART_COLOR_GRID,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo configura a cor da grade do grfico.

//+------------------------------------------------------------------+
bool ChartGridColorSet(const color clr,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- configurar a cor da grade do grfico
if(!ChartSetInteger(chart_ID,CHART_COLOR_GRID,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_COLOR_VOLUME - cor dos volumes e nveis de abertura de posio.


//+------------------------------------------------------------------+
//| A funo recebe cor de volumes e nveis de entrada
//| no mercado.

|
|

//+------------------------------------------------------------------+
color ChartVolumeColorGet(const long chart_ID=0)
{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- recebe cor de volumes e nveis de entrada no mercado
if(!ChartGetInteger(chart_ID,CHART_COLOR_VOLUME,0,result))
{
//--- exibe uma mensagem para o dirio Experts

2000-2015, MetaQuotes Software Corp.

285

Constantes Padro, Enumeradores e Estruturas


Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo configura a cor de volumes e entrada

//| no mercado.

//+------------------------------------------------------------------+
bool ChartVolumeColorSet(const color clr,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- configurar cor de volumes e nveis de entrada no mercado
if(!ChartSetInteger(chart_ID,CHART_COLOR_VOLUME,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_COLOR_CHART_UP cor da barra de alta, sombra e borda da barra de alta (tambm


denominado como castial ou vela de alta).
//+------------------------------------------------------------------+
//| A funo recebe cor da barra de alta, a sua sombra e

//| o limite do corpo do candlestick de alta.

//+------------------------------------------------------------------+
color ChartUpColorGet(const long chart_ID=0)
{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- recebe cor da barra de alta, a sua sombra e o limite do corpo do candlestick de alta
if(!ChartGetInteger(chart_ID,CHART_COLOR_CHART_UP,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo configura cor da barra de alta, sua sombra e

2000-2015, MetaQuotes Software Corp.

286

Constantes Padro, Enumeradores e Estruturas


//| o limite do corpo do candlestick de alta.

//+------------------------------------------------------------------+
bool ChartUpColorSet(const color clr,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- configurar a cor da barra de alta, a sua sombra e o limite do corpo do candlestick de alta
if(!ChartSetInteger(chart_ID,CHART_COLOR_CHART_UP,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_COLOR_CHART_DOWN cor da barra de baixa, a sua sombra e limite do corpo do


candlestick de baixa.
//+------------------------------------------------------------------+
//| A funo recebe cor da barra de alta, a sua sombra e

//| limite do corpo do candlestick de baixa.

//+------------------------------------------------------------------+
color ChartDownColorGet(const long chart_ID=0)
{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- recebe cor da barra de baixa, a sua sombra e o limite do corpo do candlestick de baixa
if(!ChartGetInteger(chart_ID,CHART_COLOR_CHART_DOWN,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo configura a cor da barra de baixa, sua sombra e

//| limite do corpo do candlestick de baixa.

//+------------------------------------------------------------------+
bool ChartDownColorSet(const color clr,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- configurar a cor da barra de baixa, sua sombra e e o limite do corpo do candlestick de baixa

2000-2015, MetaQuotes Software Corp.

287

Constantes Padro, Enumeradores e Estruturas


if(!ChartSetInteger(chart_ID,CHART_COLOR_CHART_DOWN,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_COLOR_CHART_LINE Cor da linha do grfico e barra Doji (tambm denominado como


castial ou vela Doji).
//+------------------------------------------------------------------------+
//| A funo recebe cor da linha do grfico e candlesticks Doji.

//+------------------------------------------------------------------------+
color ChartLineColorGet(const long chart_ID=0)
{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- receber cor da linha do grfico e candlesticks Doji.
if(!ChartGetInteger(chart_ID,CHART_COLOR_CHART_LINE,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo configura a cor da linha do grfico e

//| candlesticks Doji.

//+------------------------------------------------------------------+
bool ChartLineColorSet(const color clr,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- configurar a cor da linha do grfico e candlesticks Doji
if(!ChartSetInteger(chart_ID,CHART_COLOR_CHART_LINE,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);

2000-2015, MetaQuotes Software Corp.

288

Constantes Padro, Enumeradores e Estruturas


}

CHART_COLOR_CANDLE_BULL cor do corpo da barra de alta (tambm denominado como castial


ou vela de alta).
//+------------------------------------------------------------------+
//| A funo recebe a cor do corpo do candlestick de alta.

//+------------------------------------------------------------------+
color ChartBullColorGet(const long chart_ID=0)
{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- receber a cor do corpo do candlestick de alta
if(!ChartGetInteger(chart_ID,CHART_COLOR_CANDLE_BULL,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo configura a cor do corpo do candlestick de alta.

//+------------------------------------------------------------------+
bool ChartBullColorSet(const color clr,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- configurar a cor do corpo do candlestick de alta.
if(!ChartSetInteger(chart_ID,CHART_COLOR_CANDLE_BULL,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_COLOR_CANDLE_BEAR cor do corpo da barra de baixa (tambm denominado como castial


ou vela de baixa).
//+------------------------------------------------------------------+
//| A funo recebe a cor do corpo do candlestick de baixa.

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

289

Constantes Padro, Enumeradores e Estruturas


color ChartBearColorGet(const long chart_ID=0)
{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- receber a cor do corpo do candlestick de baixa
if(!ChartGetInteger(chart_ID,CHART_COLOR_CANDLE_BEAR,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo configura a cor do corpo do candlestick de baixa.

//+------------------------------------------------------------------+
bool ChartBearColorSet(const color clr,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- configurar a cor do corpo do candlestick de baixa
if(!ChartSetInteger(chart_ID,CHART_COLOR_CANDLE_BEAR,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_COLOR_BID Cor de linha de preo de venda.


//+------------------------------------------------------------------+
//| A funo recebe a cor da linha Bid.

//+------------------------------------------------------------------+
color ChartBidColorGet(const long chart_ID=0)
{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- receber a cor da linha Bid
if(!ChartGetInteger(chart_ID,CHART_COLOR_BID,0,result))
{
//--- exibe uma mensagem para o dirio Experts

2000-2015, MetaQuotes Software Corp.

290

Constantes Padro, Enumeradores e Estruturas


Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo configura a cor da linha Bid.

//+------------------------------------------------------------------+
bool ChartBidColorSet(const color clr,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- configurar a cor da linha Bid.
if(!ChartSetInteger(chart_ID,CHART_COLOR_BID,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_COLOR_ASK Cor de linha de preo de compra.


//+------------------------------------------------------------------+
//| A funo recebe a cor da linha Ask.

//+------------------------------------------------------------------+
color ChartAskColorGet(const long chart_ID=0)
{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- receber a cor da linha Ask
if(!ChartGetInteger(chart_ID,CHART_COLOR_ASK,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo configura a cor da linha Ask.

//+------------------------------------------------------------------+
bool ChartAskColorSet(const color clr,const long chart_ID=0)
{

2000-2015, MetaQuotes Software Corp.

291

Constantes Padro, Enumeradores e Estruturas


//--- redefine o valor de erro
ResetLastError();
//--- configurar a cor da linha Ask
if(!ChartSetInteger(chart_ID,CHART_COLOR_ASK,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_COLOR_LAST cor de linha do ltimo preo de operao executada.


//+----------------------------------------------------------------------+
//| A funo recebe a cor da linha do preo do ltimo negcio realizado. |
//+----------------------------------------------------------------------+
color ChartLastColorGet(const long chart_ID=0)
{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- receber cor de linha do ltimo preo de operao executada.
if(!ChartGetInteger(chart_ID,CHART_COLOR_LAST,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo configura a cor do preo do ltimo negcio realizado

//| linha.

//+------------------------------------------------------------------+
bool ChartLastColorSet(const color clr,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- configurar a cor da linha do preo do ltimo negcio realizado (Last)
if(!ChartSetInteger(chart_ID,CHART_COLOR_LAST,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}

2000-2015, MetaQuotes Software Corp.

292

Constantes Padro, Enumeradores e Estruturas


//--- sucesso na execuo
return(true);
}

CHART_COLOR_STOP_LEVEL cor de nveis de ordem de stop (Stop Loss e Take Profit).


//+--------------------------------------------------------------------+
//| A funo recebe as cores dos nveis de Stop Loss e Take Profit.

//+--------------------------------------------------------------------+
color ChartStopLevelColorGet(const long chart_ID=0)
{
//--- preparar a varivel para receber a cor
long result=clrNONE;
//--- redefine o valor de erro
ResetLastError();
//--- receber a cor de nveis de ordem de stop (Stop Loss e Take Profit)
if(!ChartGetInteger(chart_ID,CHART_COLOR_STOP_LEVEL,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return((color)result);
}
//+------------------------------------------------------------------+
//| A funo configura cores dos nveis de Stop Loss e Take Profit.

//+------------------------------------------------------------------+
bool ChartStopLevelColorSet(const color clr,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- definir a cor de nveis de ordem de stop (Stop Loss e Take Profit)
if(!ChartSetInteger(chart_ID,CHART_COLOR_STOP_LEVEL,clr))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SHOW_TRADE_LEVELS propriedade de exibio de nveis de negociao no grfico (nveis


de abertura de posio, Stop Loss, Take Profit e ordens pendentes.
//+---------------------------------------------------------------------+
//| A funo define se nveis de negociao so exibidos no grfico.

2000-2015, MetaQuotes Software Corp.

293

Constantes Padro, Enumeradores e Estruturas


//+---------------------------------------------------------------------+
bool ChartShowTradeLevelsGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SHOW_TRADE_LEVELS,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+----------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de exibio nveis de negociao |
//+----------------------------------------------------------------------+
bool ChartShowTradeLevelsSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SHOW_TRADE_LEVELS,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_DRAG_TRADE_LEVELS propriedade de habilitar a capacidade de arrastar os nveis de


negociao no grfico usando o mouse.
//+---------------------------------------------------------------------------+
//| Funo define se arrastar os nveis de negociao no grfico com o mouse |
//| permitido.

//+---------------------------------------------------------------------------+
bool ChartDragTradeLevelsGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;

2000-2015, MetaQuotes Software Corp.

294

Constantes Padro, Enumeradores e Estruturas


//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_DRAG_TRADE_LEVELS,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Funo habilita/desabilita o modo arrastar os nveis de negcios|
//| no grfico usando o mouse.

//+------------------------------------------------------------------+
bool ChartDragTradeLevelsSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_DRAG_TRADE_LEVELS,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SHOW_DATE_SCALE propriedade de exibio da escala de tempo em um grfico.


//+--------------------------------------------------------------------+
//| A funo configura se a escala de tempo exibida no grfico.

//+--------------------------------------------------------------------+
bool ChartShowDateScaleGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SHOW_DATE_SCALE,0,value))
{
//--- exibe uma mensagem para o dirio Experts

2000-2015, MetaQuotes Software Corp.

295

Constantes Padro, Enumeradores e Estruturas


Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo
return(true);
}
//+--------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de exibir a escala de tempo no |
//| grfico.

//+--------------------------------------------------------------------+
bool ChartShowDateScaleSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SHOW_DATE_SCALE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SHOW_PRICE_SCALE propriedade de mostrar a escala de preos no grfico.


//+--------------------------------------------------------------------+
//| A funo define se a escala de preos exibida no grfico.

//+--------------------------------------------------------------------+
bool ChartShowPriceScaleGet(bool &result,const long chart_ID=0)
{
//--- preparar a varivel para obter o valor da propriedade
long value;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetInteger(chart_ID,CHART_SHOW_PRICE_SCALE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- armazenar o valor da propriedade do grfico na memria
result=value;
//--- sucesso na execuo

2000-2015, MetaQuotes Software Corp.

296

Constantes Padro, Enumeradores e Estruturas


return(true);
}
//+----------------------------------------------------------------------------+
//| A funo habilita/desabilita o modo de exibir a escala de preos no

//| grfico.

//+----------------------------------------------------------------------------+
bool ChartShowPriceScaleSet(const bool value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetInteger(chart_ID,CHART_SHOW_PRICE_SCALE,0,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_SHOW_ONE_CLICK property of displaying the "One click trading" panel on a chart.


//+------------------------------------------------------------------+
//| Checks if the "One click trading" panel is displayed on chart

//+------------------------------------------------------------------+
bool ChartShowOneClickPanelGet(bool &result,const long chart_ID=0)
{
//--- prepare the variable to get the property value
long value;
//--- reset the error value
ResetLastError();
//--- receive the property value
if(!ChartGetInteger(chart_ID,CHART_SHOW_ONE_CLICK,0,value))
{
//--- display the error message in Experts journal
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- store the value of the chart property in memory
result=value;
//--- successful execution
return(true);
}
//+------------------------------------------------------------------+
//| Enables/disables displaying of the "One click trading" panel

//| on chart

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

297

Constantes Padro, Enumeradores e Estruturas


bool ChartShowOneClickPanelSet(const bool value,const long chart_ID=0)
{
//--- reset the error value
ResetLastError();
//--- set property value
if(!ChartSetInteger(chart_ID,CHART_SHOW_ONE_CLICK,0,value))
{
//--- display the error message in Experts journal
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//--- successful execution
return(true);
}

CHART_SHIFT_SIZE o tamanho da barra zero encaixada a partir da borda direita em porcentagens.


//+---------------------------------------------------------------------------+
//| A funo recebe a tamanho do deslocamento da barra zero do limite direito |
//| do grfico em valores percentuais (de 10% at 50%).

//+---------------------------------------------------------------------------+
double ChartShiftSizeGet(const long chart_ID=0)
{
//--- preparar a varivel para obter o resultado
double result=EMPTY_VALUE;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetDouble(chart_ID,CHART_SHIFT_SIZE,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return(result);
}
//+--------------------------------------------------------------------------------------+
//| A funo configura o tamanho do deslocamento da barra zero da direita

//| limite do grfico em valores percentuais (de 10% at 50%).

//| Para habilitar o deslocamento modo, valor da propriedade CHART_SHIFT

//| ser configurada para true.

//+--------------------------------------------------------------------------------------+
bool ChartShiftSizeSet(const double value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetDouble(chart_ID,CHART_SHIFT_SIZE,value))

2000-2015, MetaQuotes Software Corp.

298

Constantes Padro, Enumeradores e Estruturas


{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_FIXED_POSITION posio fixa do grfico a partir da borda esquerda em valor percentual.


//+--------------------------------------------------------------------------+
//| A funo recebe a a localizao da posio fixa do grfico de limite

//| esquerdo em valor percentual.

//+--------------------------------------------------------------------------+
double ChartFixedPositionGet(const long chart_ID=0)
{
//--- preparar a varivel para obter o resultado
double result=EMPTY_VALUE;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetDouble(chart_ID,CHART_FIXED_POSITION,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return(result);
}
//+---------------------------------------------------------------------+
//| Funo configura a localizao da posio fixa do grfico de limite|
//| esquerdo em valor percentual.

Para visualizar a localizao da

//| posio fixa do grfico, o valor de propriedade

//| CHART_AUTOSCROLL deve ser definida como falsa.

//+---------------------------------------------------------------------+
bool ChartFixedPositionSet(const double value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetDouble(chart_ID,CHART_FIXED_POSITION,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo

2000-2015, MetaQuotes Software Corp.

299

Constantes Padro, Enumeradores e Estruturas


return(true);
}

CHART_FIXED_MAX propriedade para fixao mxima do grfico.


//+------------------------------------------------------------------+
//| A funo recebe o valor de fixao mxima do grfico.

//+------------------------------------------------------------------+
double ChartFixedMaxGet(const long chart_ID=0)
{
//--- preparar a varivel para obter o resultado
double result=EMPTY_VALUE;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetDouble(chart_ID,CHART_FIXED_MAX,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return(result);
}
//+------------------------------------------------------------------+
//| A funo configura o valor de fixao mxima do grfico.

//| Para alterar o valor da propriedade, valor da propriedade

//| CHART_SCALEFIX ser preliminarmente definida para

//| true.

//+------------------------------------------------------------------+
bool ChartFixedMaxSet(const double value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetDouble(chart_ID,CHART_FIXED_MAX,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_FIXED_MIN propriedade para fixao mnima do grfico.


//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

300

Constantes Padro, Enumeradores e Estruturas


//| A funo recebe o valor de fixao mnima do grfico.

//+------------------------------------------------------------------+
double ChartFixedMinGet(const long chart_ID=0)
{
//--- preparar a varivel para obter o resultado
double result=EMPTY_VALUE;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetDouble(chart_ID,CHART_FIXED_MIN,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return(result);
}
//+------------------------------------------------------------------+
//| A funo configura o valor de fixao mnima do grfico.

//| Para alterar o valor da propriedade, valor da propriedade

//| CHART_SCALEFIX ser preliminarmente definida para

//| true.

//+------------------------------------------------------------------+
bool ChartFixedMinSet(const double value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetDouble(chart_ID,CHART_FIXED_MIN,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_POINTS_PER_BAR valor da escala em pontos por barra.


//+---------------------------------------------------------------------------+
//| A funo recebe a o valor da escala do grfico em pontos por barra.

//+---------------------------------------------------------------------------+
double ChartPointsPerBarGet(const long chart_ID=0)
{
//--- preparar a varivel para obter o resultado
double result=EMPTY_VALUE;
//--- redefine o valor de erro

2000-2015, MetaQuotes Software Corp.

301

Constantes Padro, Enumeradores e Estruturas


ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetDouble(chart_ID,CHART_POINTS_PER_BAR,0,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return(result);
}
//+----------------------------------------------------------------------+
//| Funo configura o valor da escala do grfico em pontos por barra.

//| Para ver o resultado da mudana do valor dessa propriedade,

//| o valor de propriedade

//| CHART_SCALE_PT_PER_BAR deve ser preliminarmente definido como true. |


//+----------------------------------------------------------------------+
bool ChartPointsPerBarSet(const double value,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetDouble(chart_ID,CHART_POINTS_PER_BAR,value))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

CHART_PRICE_MIN retorna o valor do mnimo do grfico.


//+---------------------------------------------------------------------------------+
//| A funo recebe a o valor mnimo do grfico na janela principal, ou numa

//| subjanela.

//+---------------------------------------------------------------------------------+
double ChartPriceMin(const long chart_ID=0,const int sub_window=0)
{
//--- preparar a varivel para obter o resultado
double result=EMPTY_VALUE;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetDouble(chart_ID,CHART_PRICE_MIN,sub_window,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());

2000-2015, MetaQuotes Software Corp.

302

Constantes Padro, Enumeradores e Estruturas


}
//--- retorna o valor da propriedade do grfico
return(result);
}

CHART_PRICE_MAX retorna o valor do mximo do grfico.


//+--------------------------------------------------------------------------------+
//| A funo recebe a o valor mximo grfico na janela principal, ou numa

//| subjanela.

//+--------------------------------------------------------------------------------+
double ChartPriceMax(const long chart_ID=0,const int sub_window=0)
{
//--- preparar a varivel para obter o resultado
double result=EMPTY_VALUE;
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetDouble(chart_ID,CHART_PRICE_MAX,sub_window,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
}
//--- retorna o valor da propriedade do grfico
return(result);
}

CHART_COMMENT comentar sobre o grfico.


//+----------------------------------------------------------------------+
//| A funo recebe comentrio no canto superior esquerdo do grfico.

//+----------------------------------------------------------------------+
bool ChartCommentGet(string &result,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- receber o valor da propriedade
if(!ChartGetString(chart_ID,CHART_COMMENT,result))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

303

Constantes Padro, Enumeradores e Estruturas


//| A funo configura comentrio no canto superior esquerda do

//| grfico.

//+------------------------------------------------------------------+
bool ChartCommentSet(const string str,const long chart_ID=0)
{
//--- redefine o valor de erro
ResetLastError();
//--- define valor de propriedade
if(!ChartSetString(chart_ID,CHART_COMMENT,str))
{
//--- exibe uma mensagem para o dirio Experts
Print(__FUNCTION__+", Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

Painel para propriedades do grfico


//--- conectar a biblioteca de elementos de controle
#include <ChartObjects\ChartObjectsTxtControls.mqh>
//--- constantes predefinidas
#define X_PROPERTY_NAME_1

10

// coordenadas do nome da propriedade na primeira coluna

#define X_PROPERTY_VALUE_1

225 // coordenadas do valor da propriedade na primeira coluna

#define X_PROPERTY_NAME_2

345 // coordenadas do nome da propriedade na segunda e terceira colu

#define X_PROPERTY_VALUE_2

550 // coordenadas do valor da propriedade na segunda e terceira col

#define X_BUTTON_1

285 // coordenadas do boto na primeira coluna

#define X_BUTTON_2

700 // coordenadas do boto na segunda coluna

#define Y_PROPERTY_1

30

#define Y_PROPERTY_2

286 // y coordenadas do incio da terceira coluna

#define Y_DISTANCE

16

// y coordenadas do do incio da primeira e segunda coluna


// eixo y da distncia entre as linhas

#define LAST_PROPERTY_NUMBER 111 // nmero da ltima propriedade grfica


//--- parmetros de entrada
input color InpFirstColor=clrDodgerBlue; // Cor de linhas mpares
input color InpSecondColor=clrGoldenrod; // Cor de linhas pares
//--- variveis e arrays
CChartObjectLabel

ExtLabelsName[];

// etiquetas para exibir nomes das propriedades

CChartObjectLabel

ExtLabelsValue[]; // etiquetas para exibio dos valores da propriedade

CChartObjectButton ExtButtons[];

// botes

int

ExtNumbers[];

// ndices das propriedades

string

ExtNames[];

// nomes das propriedades

uchar

ExtDataTypes[];

// tipos de dados de propriedade (integer, double, string)

uint

ExtGroupTypes[];

// array que armazena os dados de propriedades pertencente a u

uchar

ExtDrawTypes[];

// array que armazena os dados sobre o tipo de exibio da pro

double

ExtMaxValue[];

// valores mximos possveis das propriedades para se trabalha

double

ExtMinValue[];

// valores mnimos possveis das propriedades para se trabalha

double

ExtStep[];

// passos para alterar as propriedades

2000-2015, MetaQuotes Software Corp.

304

Constantes Padro, Enumeradores e Estruturas


int

ExtCount;

// nmero total de todas as propriedades

color

ExtColors[2];

// array de cores para exibio das linhas

string

ExtComments[2];

// array de comentrios (para propriedade CHART_COMMENT)

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- exibir a comentrio no grfico
Comment("SomeComment");
//--- armazenam cores no array para alternarem entre eles mais tarde
ExtColors[0]=InpFirstColor;
ExtColors[1]=InpSecondColor;
//--- armazenam comentrios no array para alternarem entre eles mais tarde
ExtComments[0]="FirstComment";
ExtComments[1]="SecondComment";
//--- preparar e exibir o painel de controle para o gerenciamento das propriedades do grfico
if(!PrepareControls())
return(INIT_FAILED);
//--- sucesso na execuo
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de finalizao do expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- remover o comentrio no grfico
Comment("");
}
//+------------------------------------------------------------------+
//| Manipular eventos de um grfico

//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- verificar o evento clicando no objeto do grfico
if(id==CHARTEVENT_OBJECT_CLICK)
{
//--- divide o nome do objeto pelo separador
string obj_name[];
StringSplit(sparam,'_',obj_name);
//--- verifica se o objeto um boto
if(obj_name[0]=="Button")
{
//--- receber ndice de boto
int index=(int)StringToInteger(obj_name[1]);

2000-2015, MetaQuotes Software Corp.

305

Constantes Padro, Enumeradores e Estruturas


//--- desfazer pressionando o boto
ExtButtons[index].State(false);
//--- definir o novo valor da propriedade dependendo do seu tipo
if(ExtDataTypes[index]=='I')
ChangeIntegerProperty(index);
if(ExtDataTypes[index]=='D')
ChangeDoubleProperty(index);
if(ExtDataTypes[index]=='S')
ChangeStringProperty(index);
}
}
//--- re-desenhar valores de propriedades
RedrawProperties();
ChartRedraw();
}
//+------------------------------------------------------------------+
//| Alterar a propriedade inteira do grfico

//+------------------------------------------------------------------+
void ChangeIntegerProperty(const int index)
{
//--- receber o valor atual da propriedade
long value=ChartGetInteger(0,(ENUM_CHART_PROPERTY_INTEGER)ExtNumbers[index]);
//--- definir o seguinte valor da propriedade
switch(ExtDrawTypes[index])
{
case 'C':
value=GetNextColor((color)value);
break;
default:
value=(long)GetNextValue((double)value,index);
break;
}
//--- definir o novo valor de propriedade
ChartSetInteger(0,(ENUM_CHART_PROPERTY_INTEGER)ExtNumbers[index],0,value);
}
//+------------------------------------------------------------------+
//| Alterar a propriedade double do grfico

//+------------------------------------------------------------------+
void ChangeDoubleProperty(const int index)
{
//--- receber o valor atual da propriedade
double value=ChartGetDouble(0,(ENUM_CHART_PROPERTY_DOUBLE)ExtNumbers[index]);
//--- definir o seguinte valor da propriedade
value=GetNextValue(value,index);
//--- definir o novo valor de propriedade
ChartSetDouble(0,(ENUM_CHART_PROPERTY_DOUBLE)ExtNumbers[index],value);
}
//+------------------------------------------------------------------+
//| Alterar a propriedade string do grfico

2000-2015, MetaQuotes Software Corp.

306

Constantes Padro, Enumeradores e Estruturas


//+------------------------------------------------------------------+
void ChangeStringProperty(const int index)
{
//--- varivel esttica para comutao dentro do array ExtComments
static uint comment_index=1;
//--- alterar o ndice para receber outro comentrio
comment_index=1-comment_index;
//--- definir o novo valor de propriedade
ChartSetString(0,(ENUM_CHART_PROPERTY_STRING)ExtNumbers[index],ExtComments[comment_index]);
}
//+------------------------------------------------------------------+
//| Definir o prximos valor da propriedade

//+------------------------------------------------------------------+
double GetNextValue(const double value,const int index)
{
if(value+ExtStep[index]<=ExtMaxValue[index])
return(value+ExtStep[index]);
else
return(ExtMinValue[index]);
}
//+------------------------------------------------------------------+
//| Receber a prxima cor para a propriedade tipo color

//+------------------------------------------------------------------+
color GetNextColor(const color clr)
{
//--- retornar o seguinte valor de cor
switch(clr)
{
case clrWhite: return(clrRed);
case clrRed:

return(clrGreen);

case clrGreen: return(clrBlue);


case clrBlue:

return(clrBlack);

default:

return(clrWhite);

}
}
//+------------------------------------------------------------------+
//| Re-desenhar valores de propriedades

//+------------------------------------------------------------------+
void RedrawProperties(void)
{
//--- texto de valor da propriedade
string text;
long

value;

//--- loop do nmero de propriedades


for(int i=0;i<ExtCount;i++)
{
text="";
switch(ExtDataTypes[i])
{

2000-2015, MetaQuotes Software Corp.

307

Constantes Padro, Enumeradores e Estruturas


case 'I':
//--- receber o valor atual da propriedade
if(!ChartGetInteger(0,(ENUM_CHART_PROPERTY_INTEGER)ExtNumbers[i],0,value))
break;
//--- texto de propriedade inteiro
switch(ExtDrawTypes[i])
{
//--- propriedade color
case 'C':
text=(string)((color)value);
break;
//--- propriedade boolean
case 'B':
text=(string)((bool)value);
break;
//--- propriedade do enumerador ENUM_CHART_MODE
case 'M':
text=EnumToString((ENUM_CHART_MODE)value);
break;
//--- propriedade do enumerador ENUM_CHART_VOLUME_MODE
case 'V':
text=EnumToString((ENUM_CHART_VOLUME_MODE)value);
break;
//--- nmero tipo int
default:
text=IntegerToString(value);
break;
}
break;
case 'D':
//--- texto de propriedade double
text=DoubleToString(ChartGetDouble(0,(ENUM_CHART_PROPERTY_DOUBLE)ExtNumbers[i]),4);
break;
case 'S':
//--- texto de propriedade string
text=ChartGetString(0,(ENUM_CHART_PROPERTY_STRING)ExtNumbers[i]);
break;
}
//--- mostrar valor de propriedade
ExtLabelsValue[i].Description(text);
}
}
//+------------------------------------------------------------------+
//| Criar o painel para o gerenciamento das propriedades do grfico |
//+------------------------------------------------------------------+
bool PrepareControls(void)
{
//--- alocar memria para arrays com uma reserva
MemoryAllocation(LAST_PROPERTY_NUMBER+1);

2000-2015, MetaQuotes Software Corp.

308

Constantes Padro, Enumeradores e Estruturas


//--- variveis
int i=0;

// loop varivel

int col_1=0; // nmero de propriedades na primeira coluna


int col_2=0; // nmero de propriedade na segunda coluna
int col_3=0; // mmero de propriedade na terceira coluna
//--- nmero atual de propriedades - 0
ExtCount=0;
//--- observando propriedades no loop
while(i<=LAST_PROPERTY_NUMBER)
{
//--- armazenar o nmero atual de propriedades
ExtNumbers[ExtCount]=i;
//--- incrementar o valor da varivel do loop
i++;
//--- verificar se existe uma propriedade com tal nmero

if(CheckNumber(ExtNumbers[ExtCount],ExtNames[ExtCount],ExtDataTypes[ExtCount],ExtGroupTypes[E
{
//--- criar elementos de controle para a propriedade
switch(ExtGroupTypes[ExtCount])
{
case 1:
//--- criar etiquetas e um boto para a propriedade

if(!ShowProperty(ExtCount,0,X_PROPERTY_NAME_1,X_PROPERTY_VALUE_1,X_BUTTON_1,Y_PROPER
return(false);
//--- nmero de elementos na primeira coluna foi incrementado
col_1++;
break;
case 2:
//--- criar etiquetas e um boto para a propriedade

if(!ShowProperty(ExtCount,1,X_PROPERTY_NAME_2,X_PROPERTY_VALUE_2,X_BUTTON_2,Y_PROPER
return(false);
//--- nmero de elementos na segunda coluna foi incrementado
col_2++;
break;
case 3:
//--- criar apenas etiquetas para a propriedade

if(!ShowProperty(ExtCount,2,X_PROPERTY_NAME_2,X_PROPERTY_VALUE_2,0,Y_PROPERTY_2+col_
return(false);
//--- nmero de elementos na terceira coluna foi incrementado
col_3++;
break;
}
//--- definir o mximo e o mnimo do valor e da etapa da propriedade

GetMaxMinStep(ExtNumbers[ExtCount],ExtMaxValue[ExtCount],ExtMinValue[ExtCount],ExtStep[Ext
//--- incrementar o nmero de propriedades
ExtCount++;
}
}
//--- liberar a memria no usada pelos arrays

2000-2015, MetaQuotes Software Corp.

309

Constantes Padro, Enumeradores e Estruturas


MemoryAllocation(ExtCount);
//--- re-desenhar valores de propriedades
RedrawProperties();
ChartRedraw();
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alocar memria para os arrays

//+------------------------------------------------------------------+
void MemoryAllocation(const int size)
{
ArrayResize(ExtLabelsName,size);
ArrayResize(ExtLabelsValue,size);
ArrayResize(ExtButtons,size);
ArrayResize(ExtNumbers,size);
ArrayResize(ExtNames,size);
ArrayResize(ExtDataTypes,size);
ArrayResize(ExtGroupTypes,size);
ArrayResize(ExtDrawTypes,size);
ArrayResize(ExtMaxValue,size);
ArrayResize(ExtMinValue,size);
ArrayResize(ExtStep,size);
}
//+------------------------------------------------------------------+
//| Verificar se o ndice de propriedade pertence a um de

//| enumerador ENUM_CHART_PROPERTIES

//+------------------------------------------------------------------+
bool CheckNumber(const int ind,string &name,uchar &data_type,uint &group_type,uchar &draw_type)
{
//--- verificar se a propriedade do tipo integer
ResetLastError();
name=EnumToString((ENUM_CHART_PROPERTY_INTEGER)ind);
if(_LastError==0)
{
data_type='I';

// propriedade do enumerador ENUM_CHART_PROPERTY_INTEGER

GetTypes(ind,group_type,draw_type); // definir parmetros da propriedade display


return(true);
}
//--- verificar se a propriedade do tipo double
ResetLastError();
name=EnumToString((ENUM_CHART_PROPERTY_DOUBLE)ind);
if(_LastError==0)
{
data_type='D';

// propriedade do enumerador ENUM_CHART_PROPERTY_DOUBLE

GetTypes(ind,group_type,draw_type); // definir parmetros da propriedade display


return(true);
}
//--- verificar se a proprieade do tipo string

2000-2015, MetaQuotes Software Corp.

310

Constantes Padro, Enumeradores e Estruturas


ResetLastError();
name=EnumToString((ENUM_CHART_PROPERTY_STRING)ind);
if(_LastError==0)
{
data_type='S';

// propriedade do enumerador ENUM_CHART_PROPERTY_STRING

GetTypes(ind,group_type,draw_type); // definir parmetros da propriedade display


return(true);
}
//--- propriedade no pertence a qualquer enumerao
return(false);
}
//+------------------------------------------------------------------+
//| Definir o grupo que a propriedade ser armazenada em

//| bem como seu tipo de exibio

//+------------------------------------------------------------------+
void GetTypes(const int property_number,uint &group_type,uchar &draw_type)
{
//--- verificar se a propriedade pertence ao terceiro grupo

//--- propriedades terceiro grupo so apresentados na segunda coluna, a partir de CHART_BRING_TO_TO


if(CheckThirdGroup(property_number,group_type,draw_type))
return;
//--- verificar se a propriedade pertence ao segundo grupo
//--- propriedades segundo grupo so apresentados no incio da segunda coluna
if(CheckSecondGroup(property_number,group_type,draw_type))
return;
//--- se voc est aqui, a propriedade pertence ao primeiro grupo (primeira coluna)
CheckFirstGroup(property_number,group_type,draw_type);
}
//+----------------------------------------------------------------------+
//| A funo verifica se a propriedade pertence ao terceiro grupo e

//| define o seu tipo display no caso de uma resposta positiva

//+----------------------------------------------------------------------+
bool CheckThirdGroup(const int property_number,uint &group_type,uchar &draw_type)
{
//--- verificar se a propriedade pertence ao terceiro grupo
switch(property_number)
{
//--- propriedades boolean
case CHART_IS_OBJECT:
case CHART_WINDOW_IS_VISIBLE:
draw_type='B';
break;
//--- propriedades inteiro
case CHART_VISIBLE_BARS:
case CHART_WINDOWS_TOTAL:
case CHART_WINDOW_HANDLE:
case CHART_WINDOW_YDISTANCE:
case CHART_FIRST_VISIBLE_BAR:
case CHART_WIDTH_IN_BARS:

2000-2015, MetaQuotes Software Corp.

311

Constantes Padro, Enumeradores e Estruturas


case CHART_WIDTH_IN_PIXELS:
draw_type='I';
break;
//--- propriedades double
case CHART_PRICE_MIN:
case CHART_PRICE_MAX:
draw_type='D';
break;
//--- na verdade, esta propriedade um comando para exibir o grfico em cima de todos os
//--- no h necessidade de aplicar este painel, como a janela sempre ser
//--- em cima das outras antes de a usarmos
case CHART_BRING_TO_TOP:
draw_type=' ';
break;
//--- propriedade no pertencem ao terceiro grupo
default:
return(false);
}
//--- propriedade pertencem ao terceiro grupo
group_type=3;
return(true);
}
//+----------------------------------------------------------------------+
//| A funo verifica se a propriedade pertence ao segundo grupo e

//| define o seu tipo display no caso de uma resposta positiva

//+----------------------------------------------------------------------+
bool CheckSecondGroup(const int property_number,uint &group_type,uchar &draw_type)
{
//--- verificar se a propriedade pertence ao segundo grupo
switch(property_number)
{
//--- propriedade de tipo ENUM_CHART_MODE
case CHART_MODE:
draw_type='M';
break;
//--- propriedade de tipo ENUM_CHART_VOLUME_MODE
case CHART_SHOW_VOLUMES:
draw_type='V';
break;
//--- propriedade string
case CHART_COMMENT:
draw_type='S';
break;
//--- propriedade color
case CHART_COLOR_BACKGROUND:
case CHART_COLOR_FOREGROUND:
case CHART_COLOR_GRID:
case CHART_COLOR_VOLUME:
case CHART_COLOR_CHART_UP:

2000-2015, MetaQuotes Software Corp.

312

Constantes Padro, Enumeradores e Estruturas


case CHART_COLOR_CHART_DOWN:
case CHART_COLOR_CHART_LINE:
case CHART_COLOR_CANDLE_BULL:
case CHART_COLOR_CANDLE_BEAR:
case CHART_COLOR_BID:
case CHART_COLOR_ASK:
case CHART_COLOR_LAST:
case CHART_COLOR_STOP_LEVEL:
draw_type='C';
break;
//--- propriedade no pertence ao segundo grupo
default:
return(false);
}
//--- propriedade pertence ao segundo grupo
group_type=2;
return(true);
}
//+-----------------------------------------------------------------------+
//| Esta funo chamada apenas se ela j conhecida

//| a propriedade no do segundo e terceiro grupos de propriedades

//+-----------------------------------------------------------------------+
void CheckFirstGroup(const int property_number,uint &group_type,uchar &draw_type)
{
//--- a propriedade pertence ao primeiro grupo
group_type=1;
//--- definir a propriedade tipo display
switch(property_number)
{
//--- propriedades inteiro
case CHART_SCALE:
case CHART_HEIGHT_IN_PIXELS:
draw_type='I';
return;
//--- propriedades double
case CHART_SHIFT_SIZE:
case CHART_FIXED_POSITION:
case CHART_FIXED_MAX:
case CHART_FIXED_MIN:
case CHART_POINTS_PER_BAR:
draw_type='D';
return;
//--- ficaram apenas as propriedades boolean
default:
draw_type='B';
return;
}
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

313

Constantes Padro, Enumeradores e Estruturas


//| Criar uma etiqueta e um boto para a propriedade

//+------------------------------------------------------------------+
bool ShowProperty(const int ind,const int type,const int x1,const int x2,
const int xb,const int y,const bool btn)
{
//--- array esttico para comutar dentro do array de cor ExtColors
static uint color_index[3]={1,1,1};
//--- alterar o ndice para receber uma outra cor
color_index[type]=1-color_index[type];
//--- etiquetas display e um boto (se btn = true) para a propriedade

if(!LabelCreate(ExtLabelsName[ind],"name_"+(string)ind,ExtNames[ind],ExtColors[color_index[type]
return(false);
if(!LabelCreate(ExtLabelsValue[ind],"value_"+(string)ind,"",ExtColors[color_index[type]],x2,y))
return(false);
if(btn && !ButtonCreate(ExtButtons[ind],(string)ind,xb,y+1))
return(false);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| criar um rtulo

//+------------------------------------------------------------------+
bool LabelCreate(CChartObjectLabel &lbl,const string name,const string text,
const color clr,const int x,const int y)
{
if(!lbl.Create(0,"Label_"+name,0,x,y)) return(false);
if(!lbl.Description(text))

return(false);

if(!lbl.FontSize(10))

return(false);

if(!lbl.Color(clr))

return(false);

//--- sucesso na execuo


return(true);
}
//+------------------------------------------------------------------+
//| Criar o boto

//+------------------------------------------------------------------+
bool ButtonCreate(CChartObjectButton &btn,const string name,
const int x,const int y)
{
if(!btn.Create(0,"Button_"+name,0,x,y,50,15)) return(false);
if(!btn.Description("Prximo"))

return(false);

if(!btn.FontSize(10))

return(false);

if(!btn.Color(clrBlack))

return(false);

if(!btn.BackColor(clrWhite))

return(false);

if(!btn.BorderColor(clrBlack))

return(false);

//--- sucesso na execuo


return(true);
}
//+------------------------------------------------------------------+
//| Definir o mximo e o mnimo do valor e da etapa propriedade

2000-2015, MetaQuotes Software Corp.

314

Constantes Padro, Enumeradores e Estruturas


//+------------------------------------------------------------------+
void GetMaxMinStep(const int property_number,double &max,double &min,double &step)
{
double value;
//--- definir os valores dependendo do tipo de propriedade
switch(property_number)
{
case CHART_SCALE:
max=5;
min=0;
step=1;
break;
case CHART_MODE:
case CHART_SHOW_VOLUMES:
max=2;
min=0;
step=1;
break;
case CHART_SHIFT_SIZE:
max=50;
min=10;
step=2.5;
break;
case CHART_FIXED_POSITION:
max=90;
min=0;
step=15;
break;
case CHART_POINTS_PER_BAR:
max=19;
min=1;
step=3;
break;
case CHART_FIXED_MAX:
value=ChartGetDouble(0,CHART_FIXED_MAX);
max=value*1.25;
min=value;
step=value/32;
break;
case CHART_FIXED_MIN:
value=ChartGetDouble(0,CHART_FIXED_MIN);
max=value;
min=value*0.75;
step=value/32;
break;
case CHART_HEIGHT_IN_PIXELS:
max=700;
min=520;
step=30;

2000-2015, MetaQuotes Software Corp.

315

Constantes Padro, Enumeradores e Estruturas


break;
//--- valores default
default:
max=1;
min=0;
step=1;
}
}

2000-2015, MetaQuotes Software Corp.

316

Constantes Padro, Enumeradores e Estruturas

Constantes de Objetos
Existem 44 objetos grficos que podem ser criados e exibidos no grfico de preos. Todas as
constantes para se trabalhar com objetos esto divididos em 9 grupos:
Tipos de Objetos Identificadores de objetos grficos;
Propriedades de objeto atribuio e obteno de propriedades de objetos grficos;
Mtodos de vinculao de objeto constantes de posicionamento no grfico;
Canto de vinculao uma indicao do ngulo da tabela, que est posicionada sobre o objeto;
Visibilidade de objetos definio de janelas de tempo em que um objeto visvel;
Nveis de Ondas de Elliott marcao de gradao de onda;
Objetos Gann constantes de tendncia para ventilador de Gann e grade de Gann;
Cores Web constantes de cores Web pr-definidos;
Wingdings cdigos de caracteres da fonte Wingdings.

2000-2015, MetaQuotes Software Corp.

317

Constantes Padro, Enumeradores e Estruturas

Tipos de Objeto
Quando um objeto grfico criado usando a funo ObjectCreate(), necessrio especificar o tipo de
objeto a ser criado, que pode ser um dos valores da enumerao ENUM_OBJECT. Especificaes
adicionais de propriedades de objetos so possveis usando funes para trabalhar com objetos
grficos.
ENUM_OBJECT
ID

Descrio

OBJ_VLINE

Linha Vertical

OBJ_HLINE

Linha Horizontal

OBJ_TREND

Linha de Tendncia

OBJ_TRENDBYANGLE

Linha de Tendncia por ngulo

OBJ_CYCLES

Linhas de Ciclo

OBJ_ARROWED_LINE

Linha de Seta

OBJ_CHANNEL

Canal Eqidistante

OBJ_STDDEVCHANNEL

Canal de Desvio Padro

OBJ_REGRESSION

Canal de Regresso Linear

OBJ_PITCHFORK

Forquilha de Andrews

OBJ_GANNLINE

Linha Gann

OBJ_GANNFAN

Ventilador Gann

OBJ_GANNGRID

Grade Gann

OBJ_FIBO

Retrao de Fibonacci

OBJ_FIBOTIMES

Fusos Horrios de Fibonacci

OBJ_FIBOFAN

Fibonacci Fan

OBJ_FIBOARC

Arcos de Fibonacci

OBJ_FIBOCHANNEL

Canal de Fibonacci

OBJ_EXPANSION

Expanso de Fibonacci

OBJ_ELLIOTWAVE5

Onda Motriz de Elliott

OBJ_ELLIOTWAVE3

Onde de Correo de Elliott

OBJ_RECTANGLE

Retngulo

OBJ_TRIANGLE

Tringulo

OBJ_ELLIPSE

Elipse

OBJ_ARROW_THUMB_UP

Polegares para cima

OBJ_ARROW_THUMB_DOWN

Polegar para Baixo

2000-2015, MetaQuotes Software Corp.

318

Constantes Padro, Enumeradores e Estruturas


OBJ_ARROW_UP

Seta para cima

OBJ_ARROW_DOWN

Seta para baixo

OBJ_ARROW_STOP

Sinal Stop

OBJ_ARROW_CHECK

Conferido

OBJ_ARROW_LEFT_PRICE

Etiqueta de Preo Esquerda

OBJ_ARROW_RIGHT_PRICE

Rtulo de Preo Direito

OBJ_ARROW_BUY

Comprar

OBJ_ARROW_SELL

Vender

OBJ_ARROW

Seta

OBJ_TEXT

Texto

OBJ_LABEL

Rtulo

OBJ_BUTTON

Boto

OBJ_CHART

Grfico

OBJ_BITMAP

Bitmap

OBJ_BITMAP_LABEL

Rtulo Bitmap

OBJ_EDIT

Edio

OBJ_EVENT

O
objeto
"Evento"
correspondendo a um evento
no calendrio econmico

OBJ_RECTANGLE_LABEL

O objeto "Rtulo de Retngulo"


para criao e design de
interface grfico customizada.

2000-2015, MetaQuotes Software Corp.

319

Constantes Padro, Enumeradores e Estruturas

OBJ_VLINE
Linha vertical.

Observao
Ao desenhar uma linha vertical, possvel definir o modo de exibio de linha para todas as janelas
do (propriedade OBJPROP_RAY).
Exemplo
O seguinte script cria e move a linha vertical no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.
//--- descrio
#property description "Script desenha objeto grfico \" Linha Vertical\"."
#property description "Coordenadas do ponto de ancoragem configurado em porcentagem da"
#property description "largura da janela do grfico em barras."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="VLine";

// Nome da Linha

input int

InpDate=25;

// Data do Evento, %

input color

InpColor=clrRed;

// Cor da linha

input ENUM_LINE_STYLE InpStyle=STYLE_DASH; // Estilo da linha


input int

InpWidth=3;

// Largura da linha

input bool

InpBack=false;

// Linha de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpRay=true;

// Continuao da linha para baixo

2000-2015, MetaQuotes Software Corp.

320

Constantes Padro, Enumeradores e Estruturas


input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar a linha vertical

//+------------------------------------------------------------------+
bool VLineCreate(const long

chart_ID=0,

// ID do grfico

const string

name="VLine",

// nome da linha

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// tempo da linha

const color

clr=clrRed,

// cor da linha

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo da linha


const int

width=1,

// largura da linha

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

ray=true,

// continuao da linha para baixo

const bool

hidden=true,

//ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- se o tempo de linha no est definido, desenh-lo atravs da ltima barra
if(!time)
time=TimeCurrent();
//--- redefine o valor de erro
ResetLastError();
//--- criar uma linha vertical
if(!ObjectCreate(chart_ID,name,OBJ_VLINE,sub_window,time,0))
{
Print(__FUNCTION__,
": falha ao criar uma linha vertical! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir cor da linha
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de exibio da linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo do movimento da seta com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- habilitar (verdadeiro) ou desabilitar (falso) o modo de exibio da linha no grfico sub-jane
ObjectSetInteger(chart_ID,name,OBJPROP_RAY,ray);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico

2000-2015, MetaQuotes Software Corp.

321

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover a linha vertical

//+------------------------------------------------------------------+
bool VLineMove(const long

chart_ID=0,

// ID do grfico

const string name="VLine", // nome da linha


datetime

time=0)

// tempo da linha

{
//--- se o tempo de linha no est definido, mover a linha para a ltima barra
if(!time)
time=TimeCurrent();
//--- redefine o valor de erro
ResetLastError();
//--- mover a linha vertical
if(!ObjectMove(chart_ID,name,0,time,0))
{
Print(__FUNCTION__,
": falhou ao mover a linha vertical! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir a linha vertical

//+------------------------------------------------------------------+
bool VLineDelete(const long

chart_ID=0,

// ID do grfico

const string name="VLine") // nome da linha


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir a linha vertical
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao deletar a linha vertical! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{

2000-2015, MetaQuotes Software Corp.

322

Constantes Padro, Enumeradores e Estruturas


//--- verificar a exatido dos parmetros de entrada
if(InpDate<0 || InpDate>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- array para armazenar a data de valores a serem utilizados
//--- para definir e alterar as coordenadas de pontos de ancoragem
datetime date[];
//--- alocao de memria
ArrayResize(date,bars);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- definir os pontos para desenhar a linha
int d=InpDate*(bars-1)/100;
//--- criar uma linha vertical
if(!VLineCreate(0,InpName,0,date[d],InpColor,InpStyle,InpWidth,InpBack,
InpSelection,InpRay,InpHidden,InpZOrder))
return;
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover a linha
//--- contador de loop
int h_steps=bars/2;
//--- mover a linha
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d<bars-1)
d+=1;
//--- mover o ponto
if(!VLineMove(0,InpName,date[d]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.03 segundos de atraso
Sleep(30);
}

2000-2015, MetaQuotes Software Corp.

323

Constantes Padro, Enumeradores e Estruturas


//--- 1 segundo de atraso
Sleep(1000);
//--- excluir o canal do grfico
VLineDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

324

Constantes Padro, Enumeradores e Estruturas

OBJ_HLINE
Linha Horizontal.

Exemplo
O seguinte script cria e move uma linha horizontal no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha o objeto grfico \"Linha Horizontal\"."
#property description "Ponto de ancoragem do preo est definido em percentagem da altura do"
#property description "janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="HLine";

// Nome da linha

input int

InpPrice=25;

// Preo da linha, %

input color

InpColor=clrRed;

// Cor da linha

input ENUM_LINE_STYLE InpStyle=STYLE_DASH; // Estilo da linha


input int

InpWidth=3;

// Largura da linha

input bool

InpBack=false;

// Linha de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar a linha horizontal

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

325

Constantes Padro, Enumeradores e Estruturas


bool HLineCreate(const long

chart_ID=0,

// ID de grfico

const string

name="HLine",

// nome da linha

const int

sub_window=0,

// ndice da sub-janela

double

price=0,

// line price

const color

clr=clrRed,

// cor da linha

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo da linha


const int

width=1,

// largura da linha

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

//ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- se o preo no est definido, defina-o no atual nvel de preo Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- criar um linha horizontal
if(!ObjectCreate(chart_ID,name,OBJ_HLINE,sub_window,0,price))
{
Print(__FUNCTION__,
": falha ao criar um linha horizontal! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir cor da linha
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de exibio da linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo do movimento da seta com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover linha horizontal

//+------------------------------------------------------------------+
bool HLineMove(const long

chart_ID=0,

// ID do grfico

2000-2015, MetaQuotes Software Corp.

326

Constantes Padro, Enumeradores e Estruturas


const string name="HLine", // nome da linha
double

price=0)

// preo da linha

{
//--- se o preo no est definido, defina-o no atual nvel de preo Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover um linha horizontal
if(!ObjectMove(chart_ID,name,0,0,price))
{
Print(__FUNCTION__,
": falha ao mover um linha horizontal! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir uma linha horizontal

//+------------------------------------------------------------------+
bool HLineDelete(const long

chart_ID=0,

// ID do grfico

const string name="HLine") // nome da linha


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir uma linha horizontal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao Excluir um linha horizontal! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpPrice<0 || InpPrice>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- tamanho do array de preo
int accuracy=1000;

2000-2015, MetaQuotes Software Corp.

327

Constantes Padro, Enumeradores e Estruturas


//--- array para armazenar data de valores a serem utilizados
//--- para definir e alterar as coordenadas de pontos de ancoragem
double price[];
//--- alocao de memria
ArrayResize(price,accuracy);
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar a linha
int p=InpPrice*(accuracy-1)/100;
//--- criar um linha horizontal
if(!HLineCreate(0,InpName,0,price[p],InpColor,InpStyle,InpWidth,InpBack,
InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover a linha
//--- contador de loop
int v_steps=accuracy/2;
//--- mover a linha
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p<accuracy-1)
p+=1;
//--- mover o ponto
if(!HLineMove(0,InpName,price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a partir do grfico
HLineDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);

2000-2015, MetaQuotes Software Corp.

328

Constantes Padro, Enumeradores e Estruturas


//--}

2000-2015, MetaQuotes Software Corp.

329

Constantes Padro, Enumeradores e Estruturas

OBJ_TREND
Linha de Tendncia.

Observao
Para Linha de Tendncia, possvel especificar o modo de continuao da sua exibio para a
direita e/ou esquerda (de acordo com as propriedadesOBJPROP_RAY_RIGHT e
OBJPROP_RAY_LEFT).
Exemplo
O script a seguir cria e movimenta a linha de tendncia no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha o objeto grfico \"Linha de Tendncia\"."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Trend";

// Nome da linha

input int

InpDate1=35;

// Data do 1 ponto, %

input int

InpPrice1=60;

// Preo do 1 ponto, %

input int

InpDate2=65;

// Data do 2 ponto, %

input int

InpPrice2=40;

// Preo do 2 ponto, %

input color

InpColor=clrRed;

// Cor da linha

2000-2015, MetaQuotes Software Corp.

330

Constantes Padro, Enumeradores e Estruturas


input ENUM_LINE_STYLE InpStyle=STYLE_DASH; // Estilo da linha
input int

InpWidth=2;

// Largura da linha

input bool

InpBack=false;

// Linha de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpRayLeft=false;

// Continuao da Linha para a esquerda

input bool

InpRayRight=false;

// Continuao da Linha para a direita

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar uma linha de tendncia pelas coordenadas fornecidas

//+------------------------------------------------------------------+
bool TrendCreate(const long

chart_ID=0,

// ID do grfico

const string

name="TrendLine",

// nome da linha

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

const color

clr=clrRed,

// cor da linha

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo da linha


const int

width=1,

// largura da linha

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

ray_left=false,

// continuao da linha para a esquerda

const bool

ray_right=false,

// continuao da linha para a direita

const bool

hidden=true,

//ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeTrendEmptyPoints(time1,price1,time2,price2);
//--- redefine o valor de erro
ResetLastError();
//--- criar uma linha de tendncia pelas coordenadas fornecidas
if(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": falha ao criar uma linha de tendncia! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir cor da linha
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de exibio da linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo do movimento da seta com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser

2000-2015, MetaQuotes Software Corp.

331

Constantes Padro, Enumeradores e Estruturas


//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio da linha esquerda
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);
//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio da linha direita
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover o ponto de ancoragem da linha de tendncia

//+------------------------------------------------------------------+
bool TrendPointChange(const long

chart_ID=0,

// ID do grfico

const string name="TrendLine", // nome da linha


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem de preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover ponto de ancoragem da linha de tendncia
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| A funo exclui a linha de tendncia do grfico.

//+------------------------------------------------------------------+
bool TrendDelete(const long

chart_ID=0,

// ID do grfico

const string name="TrendLine") // nome da linha


{
//--- redefine o valor de erro
ResetLastError();

2000-2015, MetaQuotes Software Corp.

332

Constantes Padro, Enumeradores e Estruturas


//--- excluir uma linha de tendncia
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir uma linha de tendncia! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verifique os valores de pontos de ancoragem da linha de tendncia|
//| e definir padres valores padro para aqueles vazios

//+------------------------------------------------------------------+
void ChangeTrendEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time1)
time1=TimeCurrent();
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do segundo ponto no est definido, est localizado a 9 barras deixadas a partir d
if(!time2)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time1,10,temp);
//--- definir o segundo ponto 9 barras a esquerda do primeiro
time2=temp[0];
}
//--- se o preo do segundo ponto no est definido, igual ao primeiro ponto
if(!price2)
price2=price1;
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico

2000-2015, MetaQuotes Software Corp.

333

Constantes Padro, Enumeradores e Estruturas


int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem da linha
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar a linha
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
//--- criar uma linha de tendncia
if(!TrendCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],InpColor,InpStyle,
InpWidth,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem da linha
//--- contador de loop
int v_steps=accuracy/5;
//--- mover o primeiro ponto de ancoragem vertical
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p1>1)
p1-=1;
//--- mover o ponto

2000-2015, MetaQuotes Software Corp.

334

Constantes Padro, Enumeradores e Estruturas


if(!TrendPointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- mover o segundo ponto de ancoragem vertical
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p2<accuracy-1)
p2+=1;
//--- mover o ponto
if(!TrendPointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- meio segundo de atraso
Sleep(500);
//--- contador de loop
int h_steps=bars/2;
//--- mover ambos os pontos de ancoragem na horizontal, ao mesmo tempo
for(int i=0;i<h_steps;i++)
{
//--- usar os seguintes valores
if(d1<bars-1)
d1+=1;
if(d2>1)
d2-=1;
//--- deslocar os pontos
if(!TrendPointChange(0,InpName,0,date[d1],price[p1]))
return;
if(!TrendPointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.03 segundos de atraso
Sleep(30);
}
//--- 1 segundo de atraso

2000-2015, MetaQuotes Software Corp.

335

Constantes Padro, Enumeradores e Estruturas


Sleep(1000);
//--- excluir uma linha de tendncia
TrendDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

336

Constantes Padro, Enumeradores e Estruturas

OBJ_TRENDBYANGLE
Linha de Tendncia Por ngulo.

Observao
Para Linha de Tendncia Por Angulo, possvel determinar o modo de continuao da sua exibio
para a direita e/ou esquerda (de acordo com as propriedades OBJPROP_RAY_RIGHT e
OBJPROP_RAY_LEFT).
Tanto ngulo e coordenadas do segundo ponto de ancoragem podem ser usados para definir a
inclinao da linha.
Exemplo
O script a seguir cria e movimenta a linha de tendncia no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha objeto grfico \"Linha de Tendncia Por ngulo\"."
#property description "Coordenadas dos pontos de ancoragem so definidos em percentagem do tamanho
#property description "janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Trend";

// Nome da linha

input int

InpDate1=50;

// Data do 1 ponto, %

input int

InpPrice1=75;

// Preo do 1 ponto, %

input int

InpAngle=0;

// ngulo de inclinao da linha

2000-2015, MetaQuotes Software Corp.

337

Constantes Padro, Enumeradores e Estruturas


input color

InpColor=clrRed;

// Cor da linha

input ENUM_LINE_STYLE InpStyle=STYLE_DASH; // Estilo da linha


input int

InpWidth=2;

// Largura da linha

input bool

InpBack=false;

// Linha de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpRayLeft=false;

// Continuao da Linha para a esquerda

input bool

InpRayRight=true;

// Continuao da Linha para a direita

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar uma linha de tendncia por ngulo

//+------------------------------------------------------------------+
bool TrendByAngleCreate(const long

chart_ID=0,

// ID do grfico

const string

name="TrendLine",

// nome da linha

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// tempo do ponto

double

price=0,

// preo do ponto

const double

angle=45.0,

// ngulo de inclinao

const color

clr=clrRed,

// cor da linha

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo da linha


const int

width=1,

// largura da linha

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

ray_left=false,

// continuao da linha para a esq

const bool

ray_right=true,

// continuao da linha para a dir

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- criar o segundo ponto para facilitar, arrastando a linha de tendncia com o mouse
datetime time2=0;
double

price2=0;

//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos


ChangeTrendEmptyPoints(time,price,time2,price2);
//--- redefine o valor de erro
ResetLastError();
//--- criar uma linha de tendncia usando dois pontos
if(!ObjectCreate(chart_ID,name,OBJ_TRENDBYANGLE,sub_window,time,price,time2,price2))
{
Print(__FUNCTION__,
": falha ao criar uma linha de tendncia! Cdigo de erro = ",GetLastError());
return(false);
}

//--- alterar o ngulo de inclinao da linha de tendncia, quando se muda o ngulo, as coordenadas
//--- ponto da linha so redefinidos automaticamente de acordo com o novo valor do ngulo
ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
//--- definir cor da linha
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir estilo de linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);

2000-2015, MetaQuotes Software Corp.

338

Constantes Padro, Enumeradores e Estruturas


//--- definir a largura da linha
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo do movimento da seta com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio da linha esquerda
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);
//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio da linha direita
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar ponto de ancoragem das coordenadas da linha de tendncia|
//+------------------------------------------------------------------+
bool TrendPointChange(const long

chart_ID=0,

// ID do grfico

const string name="TrendLine", // nome da linha


datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem de preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover ponto de ancoragem da linha de tendncia
if(!ObjectMove(chart_ID,name,0,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mudar o ngulo de inclinao da linha de tendncia

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

339

Constantes Padro, Enumeradores e Estruturas


bool TrendAngleChange(const long

chart_ID=0,

// ID do grafico

const string name="TrendLine", // nome da linha de tendncia


const double angle=45)

// inclinao do ngulo da linha de tendncia

{
//--- redefine o valor de erro
ResetLastError();
//--- mudar o ngulo de inclinao da linha de tendncia
if(!ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle))
{
Print(__FUNCTION__,
": falha ao mudar a inclinao da linha! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir a linha de tendncia

//+------------------------------------------------------------------+
bool TrendDelete(const long

chart_ID=0,

// ID do grfico

const string name="TrendLine") // nome da linha


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir uma linha de tendncia
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir uma linha de tendncia! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verifique os valores de pontos de ancoragem da linha de tendncia|
//| e definir padres valores padro para aqueles vazios

//+------------------------------------------------------------------+
void ChangeTrendEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time1)
time1=TimeCurrent();
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- coordenadas do segundo ponto auxiliar
//--- o segundo ponto ser 9 barras a esquerda e tendo o mesmo preo

2000-2015, MetaQuotes Software Corp.

340

Constantes Padro, Enumeradores e Estruturas


datetime second_point_time[10];
CopyTime(Symbol(),Period(),time1,10,second_point_time);
time2=second_point_time[0];
price2=price1;
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem da linha
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar a linha
int d1=InpDate1*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
//--- criar uma linha de tendncia
if(!TrendByAngleCreate(0,InpName,0,date[d1],price[p1],InpAngle,InpColor,InpStyle,
InpWidth,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
{

2000-2015, MetaQuotes Software Corp.

341

Constantes Padro, Enumeradores e Estruturas


return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover e girar a linha
//--- contador de loop
int v_steps=accuracy/2;
//--- mover o ponto de ancoragem e alterar o ngulo de inclinao da linha
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p1>1)
p1-=1;
//--- mover o ponto
if(!TrendPointChange(0,InpName,date[d1],price[p1]))
return;
if(!TrendAngleChange(0,InpName,18*(i+1)))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a partir do grfico
TrendDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

342

Constantes Padro, Enumeradores e Estruturas

OBJ_CYCLES
Linhas Cycle.

Observao
A distncia entre as linhas definida por coordenadas de tempo de dois pontos de ancoragem do
objeto.
Exemplo
O seguinte script cria e move a linha cycle no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.

//--- descrio
#property description "script cria a linha cycle no grfico."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "porcentagem do tamanho da janela de grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Cycles";

// Nome do objeto

input int

InpDate1=10;

// Data do 1 ponto, %

input int

InpPrice1=45;

// Preo do 1 ponto, %

input int

InpDate2=20;

// Data do 2 ponto, %

input int

InpPrice2=55;

// Preo do 2 ponto, %

input color

InpColor=clrRed;

// Cor das linhas cycle

input ENUM_LINE_STYLE InpStyle=STYLE_DOT; // Estilo das linhas cycle

2000-2015, MetaQuotes Software Corp.

343

Constantes Padro, Enumeradores e Estruturas


input int

InpWidth=1;

// Largura das linhas cycle

input bool

InpBack=false;

// Objeto de Fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criao das linhas cycle

//+------------------------------------------------------------------+
bool CyclesCreate(const long

chart_ID=0,

// ID de grfico

const string

name="Cycles",

// nome do objeto

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

const color

clr=clrRed,

// cor das linhas cycle

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo das linhas cycle


const int

width=1,

// largura das linhas cycle

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetot

const long

z_order=0)

// prioridade para clicar no mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeCyclesEmptyPoints(time1,price1,time2,price2);
//--- redefine o valor de erro
ResetLastError();
//--- criar linhas cycle pelas coordenadas dadas
if(!ObjectCreate(chart_ID,name,OBJ_CYCLES,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": falha ao criar linhas cycle! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir a cor das linhas
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir a exibio do estilo das linhas
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura das linhas
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- permitir (true) ou desabilitar (false) o modo de movimento das linhas com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto

2000-2015, MetaQuotes Software Corp.

344

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool CyclesPointChange(const long

chart_ID=0,

// ID do grfico

const string name="Cycles", // nome do objeto


const int

point_index=0, // ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem do tempo

double

price=0)

// coordenada do ponto de ancoragem de preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir as linhas cycle

//+------------------------------------------------------------------+
bool CyclesDelete(const long

chart_ID=0,

// ID do grfico

const string name="Cycles") // nome do objeto


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir as linhas cycle
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir linhas cycle! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);

2000-2015, MetaQuotes Software Corp.

345

Constantes Padro, Enumeradores e Estruturas


}
//+-----------------------------------------------------------------------+
//| Ver os valores de pontos de ancoragem das linhas cycle e definir

//| valores padro para valores vazios

//+-----------------------------------------------------------------------+
void ChangeCyclesEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time1)
time1=TimeCurrent();
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do segundo ponto no est definido, est localizado a 9 barras deixadas a partir d
if(!time2)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time1,10,temp);
//--- definir o segundo ponto 9 barras a esquerda do primeiro
time2=temp[0];
}
//--- se o preo do segundo ponto no est definido, igual ao primeiro ponto
if(!price2)
price2=price1;
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas dos pontos de ancoragem das linhas cycle
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);

2000-2015, MetaQuotes Software Corp.

346

Constantes Padro, Enumeradores e Estruturas


ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar as linhas cycle
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
//--- criar uma linha de tendncia
if(!CyclesCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],InpColor,
InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem
//--- contador de loop
int h_steps=bars/5;
//--- mover o segundo ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d2<bars-1)
d2+=1;
//--- mover o ponto
if(!CyclesPointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);

2000-2015, MetaQuotes Software Corp.

347

Constantes Padro, Enumeradores e Estruturas


}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
h_steps=bars/4;
//--- mover o primeiro ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d1<bars-1)
d1+=1;
//--- mover o ponto
if(!CyclesPointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a etiqueta do grfico
CyclesDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

348

Constantes Padro, Enumeradores e Estruturas

OBJ_ARROWED_LINE
Linha de seta.

Exemplo
O seguinte script cria e move uma linha de seta no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha objeto grfico \" linha Arrowed\"."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="ArrowedLine"; // Nome da linha

input int

InpDate1=35;

// Data do 1 ponto, %

input int

InpPrice1=60;

// Preo do 1 ponto, %

input int

InpDate2=65;

// Data do 2 ponto, %

input int

InpPrice2=40;

// Preo do 2 ponto, %

input color

InpColor=clrRed;

// Cor da linha

input ENUM_LINE_STYLE InpStyle=STYLE_DASH;

// Estilo da linha

input int

InpWidth=2;

// Largura da linha

input bool

InpBack=false;

// Linha de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

2000-2015, MetaQuotes Software Corp.

349

Constantes Padro, Enumeradores e Estruturas


//+------------------------------------------------------------------+
//| Criar uma linha de setas pelas coordenadas determinadas

//+------------------------------------------------------------------+
bool ArrowedLineCreate(const long

chart_ID=0,

// ID do grfico

const string

name="ArrowedLine", // nome da linha

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

const color

clr=clrRed,

// cor da linha

const ENUM_LINE_STYLE style=STYLE_SOLID,

// estilo da linha

const int

width=1,

// largura da linha

const bool

back=false,

// no fundo

const bool

selection=true,

// destacar para mover

const bool

hidden=true,

// ocultar na lista de objeto

const long

z_order=0)

// prioridade para clicar no mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeArrowedLineEmptyPoints(time1,price1,time2,price2);
//--- redefine o valor de erro
ResetLastError();
//--- criar uma linha de setas pelas coordenadas determinadas
if(!ObjectCreate(chart_ID,name,OBJ_ARROWED_LINE,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": falha ao criar uma linha de seta! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir cor da linha
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de exibio da linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo do movimento da seta com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);

2000-2015, MetaQuotes Software Corp.

350

Constantes Padro, Enumeradores e Estruturas


}
//+------------------------------------------------------------------+
//| Mover o ponto de ancoragem da linha de seta

//+------------------------------------------------------------------+
bool ArrowedLinePointChange(const long

chart_ID=0,

// ID do grfico

const string name="ArrowedLine", // nome da linha


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de

double

price=0)

// coordenada do ponto de ancoragem de

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover ponto de ancoragem da linha
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| A funo remove a linha de setas a partir do grfico

//+------------------------------------------------------------------+
bool ArrowedLineDelete(const long

chart_ID=0,

// ID do grfico

const string name="ArrowedLine") // nome da linha


{
//--- redefine o valor de erro
ResetLastError();
//--- deletar uma linha de seta
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao criar uma linha de seta! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Conferir valores dos pontos de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

351

Constantes Padro, Enumeradores e Estruturas


void ChangeArrowedLineEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time1)
time1=TimeCurrent();
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do segundo ponto no est definido, est localizado a 9 barras deixadas a partir d
if(!time2)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time1,10,temp);
//--- definir o segundo ponto 9 barras a esquerda do primeiro
time2=temp[0];
}
//--- se o preo do segundo ponto no est definido, igual ao primeiro ponto
if(!price2)
price2=price1;
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem da linha
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{

2000-2015, MetaQuotes Software Corp.

352

Constantes Padro, Enumeradores e Estruturas


Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar a linha
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
//--- criar uma linha de seta
if(!ArrowedLineCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],
InpColor,InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem da linha
//--- contador de loop
int v_steps=accuracy/5;
//--- mover o segundo ponto de ancoragem vertical
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p2<accuracy-1)
p2+=1;
//--- mover o ponto
if(!ArrowedLinePointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- mover o primeiro ponto de ancoragem vertical
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p1>1)
p1-=1;

2000-2015, MetaQuotes Software Corp.

353

Constantes Padro, Enumeradores e Estruturas


//--- mover o ponto
if(!ArrowedLinePointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- meio segundo de atraso
Sleep(500);
//--- contador de loop
int h_steps=bars/2;
//--- mover ambos os pontos de ancoragem na horizontal, ao mesmo tempo
for(int i=0;i<h_steps;i++)
{
//--- usar os seguintes valores
if(d1<bars-1)
d1+=1;
if(d2>1)
d2-=1;
//--- deslocar os pontos
if(!ArrowedLinePointChange(0,InpName,0,date[d1],price[p1]))
return;
if(!ArrowedLinePointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.03 segundos de atraso
Sleep(30);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- deletar uma linha de seta
ArrowedLineDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

354

Constantes Padro, Enumeradores e Estruturas

OBJ_CHANNEL
Canal Eqidistante

Observao
Para um canal eqidistante, possvel especificar o modo de sua continuao para a direita e/ou
esquerda (de acordo com as propriedades (OBJPROP_RAY_RIGHT e OBJPROP_RAY_LEFT). O modo de
preenchimento colorido do canal tambm pode ser definido.
Exemplo
O seguinte script cria e move um canal eqidistante no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha um objeto grfico tipo \"canal eqidistante\"."
#property description "Coordenadas dos pontos de ancoragem so definidos em percentagem do tamanho
#property description "janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Channel";

// Nome do canal

input int

InpDate1=25;

// Data do 1 ponto, %

input int

InpPrice1=60;

// Preo do 1 ponto, %

input int

InpDate2=65;

// Data do 2 ponto, %

input int

InpPrice2=80;

// Preo do 2 ponto, %

input int

InpDate3=30;

// Data do 3 ponto, %

2000-2015, MetaQuotes Software Corp.

355

Constantes Padro, Enumeradores e Estruturas


input int

InpPrice3=40;

// Preo do 3 ponto, %

input color

InpColor=clrRed;

// Cor do canal

input ENUM_LINE_STYLE InpStyle=STYLE_DASH; // Estilo das linhas do canal


input int

InpWidth=2;

// Largura da linha do canal

input bool

InpBack=false;

// Canal de Fundo

input bool

InpFill=false;

// Preenchendo o canal com cor

input bool

InpSelection=true;

// Destaque para mover

input bool

InpRayLeft=false;

// Continuao do canal para a esquerda

input bool

InpRayRight=false;

// Continuao do canal para a direita

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar um canal eqidistante pelas coordenadas dadas

//+------------------------------------------------------------------+
bool ChannelCreate(const long

chart_ID=0,

// ID de grfico

const string

name="Channel",

// nome do canal

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

datetime

time3=0,

// terceiro ponto de tempo

double

price3=0,

// terceiro ponto de preo

const color

clr=clrRed,

// cor do sinal

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo das linhas do canal


const int

width=1,

// largura das linhas do canal

const bool

fill=false,

// preenchendo o canal cor

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

ray_left=false,

// continuao do canal para a esquerda

const bool

ray_right=false,

// continuao do canal para a direita

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeChannelEmptyPoints(time1,price1,time2,price2,time3,price3);
//--- redefine o valor de erro
ResetLastError();
//--- criar um canal pelas coordenadas dadas
if(!ObjectCreate(chart_ID,name,OBJ_CHANNEL,sub_window,time1,price1,time2,price2,time3,price3))
{
Print(__FUNCTION__,
": falha ao criar um canal eqidistante! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir a cor do canal
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de linha do canal
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);

2000-2015, MetaQuotes Software Corp.

356

Constantes Padro, Enumeradores e Estruturas


//--- definir a largura da linha do canal
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do canal
ObjectSetInteger(chart_ID,name,OBJPROP_FILL,fill);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do canal
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do canal a esquerda
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);
//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do canal a direita
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool ChannelPointChange(const long

chart_ID=0,

// ID do grfico

const string name="Channel", // nome do canal


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem do preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}

2000-2015, MetaQuotes Software Corp.

357

Constantes Padro, Enumeradores e Estruturas


//+------------------------------------------------------------------+
//| Excluir o canal

//+------------------------------------------------------------------+
bool ChannelDelete(const long

chart_ID=0,

// ID do grfico

const string name="Channel") // nome do canal


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o canal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o canal! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+-------------------------------------------------------------------------+
//| Ver os valores de pontos de ancoragem do canal e definir valores padro|
//| para aqueles que esto vazios

//+-------------------------------------------------------------------------+
void ChangeChannelEmptyPoints(datetime &time1,double &price1,datetime &time2,
double &price2,datetime &time3,double &price3)
{
//--- se o tempo do segundo ponto (a direita)no est definido, ser na barra atual
if(!time2)
time2=TimeCurrent();
//--- se o preo do segundo ponto no est definido, ele ter valor Bid
if(!price2)
price2=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do primeiro ponto (a esquerda) no est definido, est localizado 9 barras a esque
if(!time1)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- definir o primeiro ponto 9 barras a esquerda do segundo
time1=temp[0];
}
//--- se o preo do primeiro ponto no est definido, mover 300 pontos a mais do que o segundo
if(!price1)
price1=price2+300*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
//--- se o tempo do terceiro ponto no est definido,ele coincide com o tempo do primeiro ponto
if(!time3)
time3=time1;
//--- se o preo do terceiro ponto no est definido, igual ao preo do segundo ponto
if(!price3)
price3=price2;

2000-2015, MetaQuotes Software Corp.

358

Constantes Padro, Enumeradores e Estruturas


}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100 ||
InpDate3<0 || InpDate3>100 || InpPrice3<0 || InpPrice3>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem do canal
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir pontos para desenhar o canal
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int d3=InpDate3*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
int p3=InpPrice3*(accuracy-1)/100;
//--- criar o canal eqidistante

if(!ChannelCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],date[d3],price[p3],InpColor,

2000-2015, MetaQuotes Software Corp.

359

Constantes Padro, Enumeradores e Estruturas


InpStyle,InpWidth,InpFill,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem do canal
//--- contador de loop
int h_steps=bars/6;
//--- mover o segundo ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d2<bars-1)
d2+=1;
//--- mover o ponto
if(!ChannelPointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- mover o primeiro ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d1>1)
d1-=1;
//--- mover o ponto
if(!ChannelPointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop

2000-2015, MetaQuotes Software Corp.

360

Constantes Padro, Enumeradores e Estruturas


int v_steps=accuracy/10;
//--- mover o terceiro ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p3>1)
p3-=1;
//--- mover o ponto
if(!ChannelPointChange(0,InpName,2,date[d3],price[p3]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir o canal do grfico
ChannelDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

361

Constantes Padro, Enumeradores e Estruturas

OBJ_STDDEVCHANNEL
Desvio Padro do Canal.

Observao
Para Desvio Padro do Canal, possvel determinar o modo da continuao da sua exibio para a
direita e/ou esquerda (de acordo com as propriedades OBJPROP_RAY_RIGHT e
OBJPROP_RAY_LEFT). O modo de preenchimento colorido do canal tambm pode ser definido.
Propriedade OBJPROP_DEVIATION usada para alterar o valor do desvio do canal.
Exemplo
O seguinte script cria e move um Desvio Padro do Canal no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha objeto grfico \"Desvio Padro do Canal\"."
#property description "Coordenadas dos pontos de ancoragem so definidos em percentagem do tamanho
#property description "janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="StdDevChannel";

// Nome do canal

input int

InpDate1=10;

// Data do 1 ponto, %

input int

InpDate2=40;

// Data do 2 ponto, %

input double

InpDeviation=1.0;

// Desvio

input color

InpColor=clrRed;

// Cor do canal

2000-2015, MetaQuotes Software Corp.

362

Constantes Padro, Enumeradores e Estruturas


input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo de linhas do canal
input int

InpWidth=2;

// Largura das linhas do canal

input bool

InpFill=false;

// Preenchendo o canal com cor

input bool

InpBack=false;

// Canal de Fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpRayLeft=false;

// Continuao do Canal para a esquerda

input bool

InpRayRight=false;

// Continuao do Canal para a direita

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Regresso Linear do Canal pelas coordenadas dadas

//+------------------------------------------------------------------+
bool StdDevChannelCreate(const long

chart_ID=0,

// ID do grfico

const string

name="Channel",

// nome do canal

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

datetime

time2=0,

// segundo ponto de tempo

const double

deviation=1.0,

// desvio

const color

clr=clrRed,

// cor do canal

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo das linhas do canal


const int

width=1,

// largura das linhas do canal

const bool

fill=false,

// preenchendo o canal cor

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

ray_left=false,

// continuao do canal para a es

const bool

ray_right=false,

// continuao do canal para a di

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mous

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeChannelEmptyPoints(time1,time2);
//--- redefine o valor de erro
ResetLastError();
//--- criar um canal pelas coordenadas dadas
if(!ObjectCreate(chart_ID,name,OBJ_STDDEVCHANNEL,sub_window,time1,0,time2,0))
{
Print(__FUNCTION__,
": falha ao criar o desvio padro do canal! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir o valor de desvio que afeta a largura do canal
ObjectSetDouble(chart_ID,name,OBJPROP_DEVIATION,deviation);
//--- definir a cor do canal
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de linha do canal
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha do canal
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do canal

2000-2015, MetaQuotes Software Corp.

363

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_FILL,fill);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do canal
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do canal a esquerda
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);
//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do canal a direita
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool StdDevChannelPointChange(const long

chart_ID=0,

// Id do Grfico

const string name="Channel", // nome do canal


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0)

// coordenada do ponto de ancoragem do t

{
//--- se o tempo de ponto no est definido, mover o ponto para o barra atual
if(!time)
time=TimeCurrent();
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,0))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o desvio do canal

//+------------------------------------------------------------------+
bool StdDevChannelDeviationChange(const long

chart_ID=0,

// ID do grfico

const string name="Channel", // nome do canal


const double deviation=1.0)

2000-2015, MetaQuotes Software Corp.

// desvio

364

Constantes Padro, Enumeradores e Estruturas


{
//--- redefine o valor de erro
ResetLastError();
//--- mudar o ngulo de inclinao da linha de tendncia
if(!ObjectSetDouble(chart_ID,name,OBJPROP_DEVIATION,deviation))
{
Print(__FUNCTION__,
": falha ao mudar o desvio de canal! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir o canal

//+------------------------------------------------------------------+
bool StdDevChannelDelete(const long

chart_ID=0,

// ID do grfico

const string name="Channel") // nome do canal


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o canal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o canal! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+-------------------------------------------------------------------------+
//| Ver os valores de pontos de ancoragem do canal e definir valores padro|
//| para aqueles que esto vazios

//+-------------------------------------------------------------------------+
void ChangeChannelEmptyPoints(datetime &time1,datetime &time2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time2)
time2=TimeCurrent();

//--- se o tempo do primeiro ponto no est definido, est localizado 9 barras a esquerda partir da
if(!time1)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- definir o primeiro ponto 9 barras a esquerda do segundo
time1=temp[0];
}

2000-2015, MetaQuotes Software Corp.

365

Constantes Padro, Enumeradores e Estruturas


}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 ||
InpDate2<0 || InpDate2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem do canal
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir pontos para desenhar o canal
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
//--- criar desvio padro do canal
if(!StdDevChannelCreate(0,InpName,0,date[d1],date[d2],InpDeviation,InpColor,InpStyle,
InpWidth,InpFill,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo

2000-2015, MetaQuotes Software Corp.

366

Constantes Padro, Enumeradores e Estruturas


ChartRedraw();
Sleep(1000);
//--- agora, o canal horizontal para a direita e expandi-lo
//--- contador de loop
int h_steps=bars/2;
//--- mover o canal
for(int i=0;i<h_steps;i++)
{
//--- usar os seguintes valores
if(d1<bars-1)
d1+=1;
if(d2<bars-1)
d2+=1;
//--- mover os pontos de ancoragem
if(!StdDevChannelPointChange(0,InpName,0,date[d1]))
return;
if(!StdDevChannelPointChange(0,InpName,1,date[d2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
double v_steps=InpDeviation*2;
//--- expandir o canal
for(double i=InpDeviation;i<v_steps;i+=10.0/accuracy)
{
if(!StdDevChannelDeviationChange(0,InpName,i))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir o canal do grfico
StdDevChannelDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//---

2000-2015, MetaQuotes Software Corp.

367

Constantes Padro, Enumeradores e Estruturas


}

2000-2015, MetaQuotes Software Corp.

368

Constantes Padro, Enumeradores e Estruturas

OBJ_REGRESSION
Regresso Linear do Canal.

Observao
Para Regresso Linear do Canal, possvel determinar o modo da continuao da sua exibio para
a direita e/ou esquerda (de acordo com as propriedades OBJPROP_RAY_RIGHT e
OBJPROP_RAY_LEFT). O modo de preenchimento colorido do canal tambm pode ser definido.
Exemplo
O seguinte script cria e move uma Regresso Linear do Canal no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha objeto grfico \"Regresso Linear do Canal\"."
#property description "Coordenadas dos pontos de ancoragem so definidos em percentagem do tamanho
#property description "janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Regression"; // Nome do canal

input int

InpDate1=10;

// Data do 1 ponto, %

input int

InpDate2=40;

// Data do 2 ponto, %

input color

InpColor=clrRed;

// Cor do canal

input ENUM_LINE_STYLE InpStyle=STYLE_DASH;

// Estilo das linhas do canal

input int

// Largura das linhas do canal

InpWidth=2;

2000-2015, MetaQuotes Software Corp.

369

Constantes Padro, Enumeradores e Estruturas


input bool

InpFill=false;

// Preenchendo o canal com cor

input bool

InpBack=false;

// Canal de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpRayLeft=false;

// Continuao do canal para a esquerda

input bool

InpRayRight=false;

// Continuao do canal para a direita

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Regresso Linear do Canal pelas coordenadas dadas

//+------------------------------------------------------------------+
bool RegressionCreate(const long

chart_ID=0,

// ID do grfico

const string

name="Regression", // nome do canal

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

datetime

time2=0,

// segundo ponto de tempo

const color

clr=clrRed,

// cor do canal

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo das linhas do canal


const int

width=1,

// largura das linhas do canal

const bool

fill=false,

/// preenchendo o canal com cor

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

ray_left=false,

// continuao do canal para a esque

const bool

ray_right=false,

// continuao do canal para a direi

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeRegressionEmptyPoints(time1,time2);
//--- redefine o valor de erro
ResetLastError();
//--- criar um canal pelas coordenadas dadas
if(!ObjectCreate(chart_ID,name,OBJ_REGRESSION,sub_window,time1,0,time2,0))
{
Print(__FUNCTION__,
": falha ao criar a regresso linear do canal! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir a cor do canal
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de linha do canal
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha do canal
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do canal
ObjectSetInteger(chart_ID,name,OBJPROP_FILL,fill);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do canal
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser

2000-2015, MetaQuotes Software Corp.

370

Constantes Padro, Enumeradores e Estruturas


//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do canal a esquerda
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);
//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do canal a direita
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool RegressionPointChange(const long

chart_ID=0,

// ID do grfico

const string name="Channel", // nome do canal


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0)

// coordenada do ponto de ancoragem do temp

{
//--- se o tempo de ponto no est definido, mover o ponto para o barra atual
if(!time)
time=TimeCurrent();
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,0))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir o canal

//+------------------------------------------------------------------+
bool RegressionDelete(const long

chart_ID=0,

// ID do grfico

const string name="Channel") // nome do canal


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o canal
if(!ObjectDelete(chart_ID,name))
{

2000-2015, MetaQuotes Software Corp.

371

Constantes Padro, Enumeradores e Estruturas


Print(__FUNCTION__,
": falha ao excluir o canal! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+-------------------------------------------------------------------------+
//| Ver os valores de pontos de ancoragem do canal e definir valores padro|
//| para aqueles que esto vazios

//+-------------------------------------------------------------------------+
void ChangeRegressionEmptyPoints(datetime &time1,datetime &time2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time2)
time2=TimeCurrent();

//--- se o tempo do primeiro ponto no est definido, est localizado 9 barras a esquerda partir da
if(!time1)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- definir o primeiro ponto 9 barras a esquerda do segundo
time1=temp[0];
}
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 ||
InpDate2<0 || InpDate2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem do canal
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);

2000-2015, MetaQuotes Software Corp.

372

Constantes Padro, Enumeradores e Estruturas


//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir pontos para desenhar o canal
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
//--- criar regresso linear do canal
if(!RegressionCreate(0,InpName,0,date[d1],date[d2],InpColor,InpStyle,InpWidth,
InpFill,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, o canal horizontal para a direita
//--- contador de loop
int h_steps=bars/2;
//--- mover o canal
for(int i=0;i<h_steps;i++)
{
//--- usar os seguintes valores
if(d1<bars-1)
d1+=1;
if(d2<bars-1)
d2+=1;
//--- mover os pontos de ancoragem
if(!RegressionPointChange(0,InpName,0,date[d1]))
return;
if(!RegressionPointChange(0,InpName,1,date[d2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso

2000-2015, MetaQuotes Software Corp.

373

Constantes Padro, Enumeradores e Estruturas


Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir o canal do grfico
RegressionDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

374

Constantes Padro, Enumeradores e Estruturas

OBJ_PITCHFORK
Tridente Andrews.

Observao
Para Tridente Andrews, possvel determinar o modo da continuao da sua exibio para a direita
e/ou esquerda (de acordo com as propriedades OBJPROP_RAY_RIGHT e OBJPROP_RAY_LEFT).
Voc tambm pode especificar o nmero de linhas de nveis, os seus valores e cores.
Exemplo
O seguinte script cria e move o Tridente Andrews no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.
//--- descrio
#property description "Script desenha o objeto grfico \"Tridente Andrews\"."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Pitchfork";

// Nome do Tridente

input int

InpDate1=14;

// Data do 1 ponto, %

input int

InpPrice1=40;

// Preo do 1 ponto, %

input int

InpDate2=18;

// Data do 2 ponto, %

input int

InpPrice2=50;

// Preo do 2 ponto, %

input int

InpDate3=18;

// Data do 3 ponto, %

input int

InpPrice3=30;

// Preo do 3 ponto, %

2000-2015, MetaQuotes Software Corp.

375

Constantes Padro, Enumeradores e Estruturas


input color

InpColor=clrRed;

// Cor do tridente

input ENUM_LINE_STYLE InpStyle=STYLE_SOLID; // Estilo de linhas do tridente


input int

InpWidth=1;

// Largura das linhas do tridente

input bool

InpBack=false;

// Tridente de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpRayLeft=false;

// Continuao do Tridente para a esquerda

input bool

InpRayRight=false;

// Continuao do Tridente para a direita

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Tridente Andrews pelas coordenadas fornecidas

//+------------------------------------------------------------------+
bool PitchforkCreate(const long

chart_ID=0,

// ID de grfico

const string

name="Pitchfork",

// nome do tridente

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

datetime

time3=0,

// terceiro ponto de tempo

double

price3=0,

// terceiro ponto de preo

const color

clr=clrRed,

// cor das linhas do tridente

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo das linhas do tridente


const int

width=1,

// largura das linhas do tridente

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

ray_left=false,

// continuao do tridente para a esq

const bool

ray_right=false,

// continuao do tridente para a dir

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeChannelEmptyPoints(time1,price1,time2,price2,time3,price3);
//--- redefine o valor de erro
ResetLastError();
//--- criar tridente Andrews pelas coordenadas fornecidas

if(!ObjectCreate(chart_ID,name,OBJ_PITCHFORK,sub_window,time1,price1,time2,price2,time3,price3))
{
Print(__FUNCTION__,
": falha ao criar \" Tridente Andrews\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir cor
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura das linhas
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)

2000-2015, MetaQuotes Software Corp.

376

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de destaque para mover o tridente
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do tridente esque
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do tridente direi
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Definir o nmero de nveis do Andrews e seus parmetros

//+------------------------------------------------------------------+
bool PitchforkLevelsSet(int

levels,

// nmero de linhas dos nveis

double

&values[],

// valores de linhas dos nveis

color

&colors[],

// cor das linhas dos nveis

ENUM_LINE_STYLE &styles[],

// estilo das linhas dos nveis

int

&widths[],

// largura das linhas dos nveis

const long

chart_ID=0,

// ID do grfico

const string

name="Pitchfork") // nome do tridente

{
//--- verificar tamanhos do array
if(levels!=ArraySize(colors) || levels!=ArraySize(styles) ||
levels!=ArraySize(widths) || levels!=ArraySize(widths))
{
Print(__FUNCTION__,": comprimento do array no corresponder ao nmero de nveis, erro!");
return(false);
}
//--- definir o nmero de nveis
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELS,levels);
//--- definir as propriedades de nveis no loop
for(int i=0;i<levels;i++)
{
//--- valor do nvel
ObjectSetDouble(chart_ID,name,OBJPROP_LEVELVALUE,i,values[i]);
//--- cor do nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELCOLOR,i,colors[i]);
//--- estilo de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELSTYLE,i,styles[i]);
//--- largura de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELWIDTH,i,widths[i]);

2000-2015, MetaQuotes Software Corp.

377

Constantes Padro, Enumeradores e Estruturas


//--- descrio de nvel
ObjectSetString(chart_ID,name,OBJPROP_LEVELTEXT,i,DoubleToString(100*values[i],1));
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Movimentar ponto de ancoragem do Tridente Andrews

//+------------------------------------------------------------------+
bool PitchforkPointChange(const long

chart_ID=0,

// ID do grfico

const string name="Pitchfork", // nome do canal


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de tem

double

price=0)

// coordenada do ponto de ancoragem de pre

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir Tridente Andrews

//+------------------------------------------------------------------+
bool PitchforkDelete(const long

chart_ID=0,

// ID do grfico

const string name="Pitchfork") // nome do canal


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o canal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir \" Tridente Andrews\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);

2000-2015, MetaQuotes Software Corp.

378

Constantes Padro, Enumeradores e Estruturas


}
//+----------------------------------------------------------------------+
//| Ver valores dos pontos de ancoragem do Tridente Andrews e definir

//| valores para aqueles vazios

//+----------------------------------------------------------------------+
void ChangeChannelEmptyPoints(datetime &time1,double &price1,datetime &time2,
double &price2,datetime &time3,double &price3)
{
//--- se o tempo do segundo ponto (acima direita) no est definido, ser na barra atual
if(!time2)
time2=TimeCurrent();
//--- se o preo do segundo ponto no est definido, ele ter valor Bid
if(!price2)
price2=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do primeiro ponto (a esquerda) no est definido, est localizado 9 barras a esque
if(!time1)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- definir o primeiro ponto 9 barras a esquerda do segundo
time1=temp[0];
}
//--- se o preo do primeiro ponto no est definido, mover 200 pontos a mais do que o segundo
if(!price1)
price1=price2-200*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
//--- se o tempo do terceiro ponto no est definido, ele coincide com o tempo do segundo ponto
if(!time3)
time3=time2;
//--- se o preo do primeiro ponto no est definido, mover 200 pontos a mais do que o primeiro
if(!price3)
price3=price1-200*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100 ||
InpDate3<0 || InpDate3>100 || InpPrice3<0 || InpPrice3>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo

2000-2015, MetaQuotes Software Corp.

379

Constantes Padro, Enumeradores e Estruturas


int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas dos pontos de ancoragem do Tridente Andrews
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir pontos para desenhar o Tridente Andrews
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int d3=InpDate3*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
int p3=InpPrice3*(accuracy-1)/100;
//--- criar o tridente
if(!PitchforkCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],date[d3],price[p3],
InpColor,InpStyle,InpWidth,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem do tridente
//--- contador de loop
int v_steps=accuracy/10;
//--- mover o primeiro ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p1>1)
p1-=1;
//--- mover o ponto

2000-2015, MetaQuotes Software Corp.

380

Constantes Padro, Enumeradores e Estruturas


if(!PitchforkPointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
int h_steps=bars/8;
//--- mover o terceiro ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d3<bars-1)
d3+=1;
//--- mover o ponto
if(!PitchforkPointChange(0,InpName,2,date[d3],price[p3]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
v_steps=accuracy/10;
//--- mover o segundo ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p2>1)
p2-=1;
//--- mover o ponto
if(!PitchforkPointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();

2000-2015, MetaQuotes Software Corp.

381

Constantes Padro, Enumeradores e Estruturas


}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a tridente do grfico
PitchforkDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

382

Constantes Padro, Enumeradores e Estruturas

OBJ_GANNLINE
Linha Gann.

Observao
Para Linha Gann, possvel determinar o modo da continuao da sua exibio para a direita e/ou
esquerda (de acordo com as propriedades OBJPROP_RAY_RIGHT e OBJPROP_RAY_LEFT).
Ambos ngulo de Gann com uma escala e as coordenadas do segundo ponto de ancoragem podem ser
usados para definir a inclinao da linha.
Exemplo
O seguinte script cria e move o Linha Gann no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.

//--- descrio
#property description "Script desenha objeto grfico \"Linha Gann\"."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="GannLine";

// Nome da linha

input int

InpDate1=20;

// Data do 1 ponto, %

input int

InpPrice1=75;

// Preo do 1 ponto, %

input int

InpDate2=80;

// Data do 2 ponto, %

input double

InpAngle=0.0;

// Angulo Gann

2000-2015, MetaQuotes Software Corp.

383

Constantes Padro, Enumeradores e Estruturas


input double

InpScale=1.0;

// Escala

input color

InpColor=clrRed;

// Cor da linha

input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo da linha


input int

InpWidth=2;

// Largura da linha

input bool

InpBack=false;

// Linha de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpRayLeft=false;

// Continuao da Linha para a esquerda

input bool

InpRayRight=true;

// Continuao da Linha para a direita

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Linha Gann pelas coordenadas, ngulo e escala

//+------------------------------------------------------------------+
bool GannLineCreate(const long

chart_ID=0,

// ID de grfico

const string

name="GannLine",

// nome da linha

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

const double

angle=1.0,

// angulo Gann

const double

scale=1.0,

// escala

const color

clr=clrRed,

// cor da linha

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo da linha


const int

width=1,

// largura da linha

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

ray_left=false,

// continuao da linha para a esquerd

const bool

ray_right=true,

// continuao da linha para a direita

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para o clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeGannLineEmptyPoints(time1,price1,time2);
//--- redefine o valor de erro
ResetLastError();
//--- criar Linha Gann pelas coordenadas fornecidas
//--- corretas coordenadas do segundo ponto de ancoragem so redefinida
//--- automaticamente aps o angulo Gann e/ou as mudanas de escala,
if(!ObjectCreate(chart_ID,name,OBJ_GANNLINE,sub_window,time1,price1,time2,0))
{
Print(__FUNCTION__,
": falha ao criar \"Linha Gann\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- alterar angulo Gann
ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
//--- alterar a escala (nmero de pips por barra)
ObjectSetDouble(chart_ID,name,OBJPROP_SCALE,scale);
//--- definir cor da linha

2000-2015, MetaQuotes Software Corp.

384

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de exibio da linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de destaque para mover as linhas
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio da linha esquerda
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);
//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio da linha direita
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem do Linha Gann

//+------------------------------------------------------------------+
bool GannLinePointChange(const long

chart_ID=0,

// ID do grfico

const string name="GannLine", // nome da linha


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem de preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover ponto de ancoragem da linha
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);

2000-2015, MetaQuotes Software Corp.

385

Constantes Padro, Enumeradores e Estruturas


}
//+------------------------------------------------------------------+
//| Alterar angulo Gann

//+------------------------------------------------------------------+
bool GannLineAngleChange(const long

chart_ID=0,

// ID do grfico

const string name="GannLine", // nome da linha


const double angle=1.0)

// angulo Gann

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar angulo Gann
if(!ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle))
{
Print(__FUNCTION__,
": falha ao alterar o angulo Gann! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar escala Gann Line

//+------------------------------------------------------------------+
bool GannLineScaleChange(const long

chart_ID=0,

// ID do grfico

const string name="GannLine", // nome da linha


const double scale=1.0)

// escala

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar a escala (nmero de pips por barra)
if(!ObjectSetDouble(chart_ID,name,OBJPROP_SCALE,scale))
{
Print(__FUNCTION__,
": falha ao alterar a escala! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| A funo remove a Linha Gann grfico

//+------------------------------------------------------------------+
bool GannLineDelete(const long

chart_ID=0,

// ID do grfico

const string name="GannLine") // nome da linha


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir linha Gann
if(!ObjectDelete(chart_ID,name))

2000-2015, MetaQuotes Software Corp.

386

Constantes Padro, Enumeradores e Estruturas


{
Print(__FUNCTION__,
": falha ao excluir \"Linha Gann\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Ver valores pontos de ancoragem da linha Gann e definir

//| valores padro para aqueles vazios

//+------------------------------------------------------------------+
void ChangeGannLineEmptyPoints(datetime &time1,double &price1,datetime &time2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time2)
time2=TimeCurrent();

//--- se o tempo do primeiro ponto no est definido, est localizado 9 barras a esquerda partir da
if(!time1)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- definir o primeiro ponto 9 barras a esquerda do segundo
time1=temp[0];
}
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem da linha
datetime date[];

2000-2015, MetaQuotes Software Corp.

387

Constantes Padro, Enumeradores e Estruturas


double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar a linha Gann
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
//--- criar Linha Gann
if(!GannLineCreate(0,InpName,0,date[d1],price[p1],date[d2],InpAngle,InpScale,InpColor,
InpStyle,InpWidth,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover o ponto de ancoragem da linha e mudar o angulo
//--- contador de loop
int v_steps=accuracy/2;
//--- mover o primeiro ponto de ancoragem vertical
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p1>1)
p1-=1;
//--- mover o ponto
if(!GannLinePointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();

2000-2015, MetaQuotes Software Corp.

388

Constantes Padro, Enumeradores e Estruturas


}
//--- meio segundo de atraso
Sleep(500);
//--- definir o valor atual de angulo Gann (alterar
//--- depois de mover o primeiro ponto de ancoragem)
double curr_angle;
if(!ObjectGetDouble(0,InpName,OBJPROP_ANGLE,0,curr_angle))
return;
//--- contador de loop
v_steps=accuracy/8;
//--- alterar angulo Gann
for(int i=0;i<v_steps;i++)
{
if(!GannLineAngleChange(0,InpName,curr_angle-0.05*i))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a linha do grfico
GannLineDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

389

Constantes Padro, Enumeradores e Estruturas

OBJ_GANNFAN
Gann Fan.

Observao
Para Gann Fan, possvel determinar o tipo de tendncia a partir enumerao
ENUM_GANN_DIRECTION. Ao ajustar o valor da escala(OBJPROP_SCALE), possvel alterar o ngulo
de inclinao das linhas do fan.
Exemplo
O seguinte script cria e move o Gann Fan no grfico. Funes especiais tm sido desenvolvidas para
criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em seus
prprios aplicativos.

//--- descrio
#property description "Script desenha o objeto grfico tipo \"Gann Fan\"."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="GannFan";

// Nome do fan

input int

InpDate1=15;

// Data do 1 ponto, %

input int

InpPrice1=25;

// Preo do 1 ponto, %

input int

InpDate2=85;

// Data do 2 ponto, %

input double

InpScale=2.0;

// Escala

input bool

InpDirection=false;

// Direo da tendncia

2000-2015, MetaQuotes Software Corp.

390

Constantes Padro, Enumeradores e Estruturas


input color

InpColor=clrRed;

// Cor da linha fan

input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo de linhas fan


input int

InpWidth=1;

// Largura das linhas fan

input bool

InpBack=false;

// Canal de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Gann Fan

//+------------------------------------------------------------------+
bool GannFanCreate(const long

chart_ID=0,

// ID de grfico

const string

name="GannFan",

// nome do fan

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

const double

scale=1.0,

// escala

const bool

direction=true,

// direo da tendncia

const color

clr=clrRed,

// cor da linha fan

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo das linhas fan


const int

width=1,

// largura das linhas fan

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeGannFanEmptyPoints(time1,price1,time2);
//--- redefine o valor de erro
ResetLastError();
//--- criar Gann Fan pelas coordenadas fornecidas
if(!ObjectCreate(chart_ID,name,OBJ_GANNFAN,sub_window,time1,price1,time2,0))
{
Print(__FUNCTION__,
": falha ao criar \"Gann Fan\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- alterar a escala (nmero de pips por barra)
ObjectSetDouble(chart_ID,name,OBJPROP_SCALE,scale);
//--- mudar a direo de tendncia Gann Fan (true - descendente, false - ascendente)
ObjectSetInteger(chart_ID,name,OBJPROP_DIRECTION,direction);
//--- definir cor do fan
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir a exibio do estilo das linhas fan
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha do fan
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

2000-2015, MetaQuotes Software Corp.

391

Constantes Padro, Enumeradores e Estruturas


//--- habilitar (true) ou desabilitar (false) o modo de destaque para mover o fan
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem do Gann Fan

//+------------------------------------------------------------------+
bool GannFanPointChange(const long

chart_ID=0,

// ID do grfico

const string name="GannFan", // nome do fan


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem do preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover ponto de ancoragem do fan
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar a escala Gann Fan

//+------------------------------------------------------------------+
bool GannFanScaleChange(const long

chart_ID=0,

// ID do grfico

const string name="GannFan", // nome do fan


const double scale=1.0)

// escala

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar a escala (nmero de pips por barra)

2000-2015, MetaQuotes Software Corp.

392

Constantes Padro, Enumeradores e Estruturas


if(!ObjectSetDouble(chart_ID,name,OBJPROP_SCALE,scale))
{
Print(__FUNCTION__,
": falha ao alterar a escala! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar a direo de tendncia Gann Fan

//+------------------------------------------------------------------+
bool GannFanDirectionChange(const long

chart_ID=0,

// ID do grfico

const string name="GannFan", // nome do fan


const bool

direction=true) // direo da tendncia

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar a direo de tendncia Gann Fan
if(!ObjectSetInteger(chart_ID,name,OBJPROP_DIRECTION,direction))
{
Print(__FUNCTION__,
": falha ao alterar a direo de tendncia! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| A funo remove o Gann Fan do grfico

//+------------------------------------------------------------------+
bool GannFanDelete(const long

chart_ID=0,

// ID do grfico

const string name="GannFan") // nome do fan


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir Gann Fan
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir \"Gann Fan\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Ver valores dos pontos de ancoragem do Gann Fan e definir

//| valores padro para aqueles vazios

2000-2015, MetaQuotes Software Corp.

393

Constantes Padro, Enumeradores e Estruturas


//+------------------------------------------------------------------+
void ChangeGannFanEmptyPoints(datetime &time1,double &price1,datetime &time2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time2)
time2=TimeCurrent();

//--- se o tempo do primeiro ponto no est definido, est localizado 9 barras a esquerda partir da
if(!time1)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- definir o primeiro ponto 9 barras a esquerda do segundo
time1=temp[0];
}
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas dos pontos de ancoragem do fan
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}

2000-2015, MetaQuotes Software Corp.

394

Constantes Padro, Enumeradores e Estruturas


//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar Gann Fan
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
//--- criar Gann Fan
if(!GannFanCreate(0,InpName,0,date[d1],price[p1],date[d2],InpScale,InpDirection,
InpColor,InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem do fan
//--- contador de loop
int v_steps=accuracy/2;
//--- mover o primeiro ponto de ancoragem vertical
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p1<accuracy-1)
p1+=1;
//--- mover o ponto
if(!GannFanPointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- alterar a direo tendncia do fan para um descendente
GannFanDirectionChange(0,InpName,true);
//--- redesenhar o grfico
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir o fan do grfico
GannFanDelete(0,InpName);

2000-2015, MetaQuotes Software Corp.

395

Constantes Padro, Enumeradores e Estruturas


ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

396

Constantes Padro, Enumeradores e Estruturas

OBJ_GANNGRID
Grade Gann.

Observao
Para Grade Gann, possvel determinar o tipo de tendncia a partir do enumerador
ENUM_GANN_DIRECTION. Ao ajustar o valor da escala(OBJPROP_SCALE), possvel alterar o ngulo
de inclinao das linhas do grade.
Exemplo
O seguinte script cria e move o Grade Gann no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.

//--- descrio
#property description "Script desenha o objeto grfico tipo \"Grade Gann\"."

#property description "Coordenadas dos pontos de ancoragem do grade so definidos em percentagem do


#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="GannGrid";

// Nome do grade

input int

InpDate1=15;

// Data do 1 ponto, %

input int

InpPrice1=25;

// Preo do 1 ponto, %

input int

InpDate2=35;

// Data do 2 ponto, %

input double

InpScale=3.0;

// Escala

input bool

InpDirection=false;

// Direo da tendncia

2000-2015, MetaQuotes Software Corp.

397

Constantes Padro, Enumeradores e Estruturas


input color

InpColor=clrRed;

// Cor do grade

input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo de linhas do grade


input int

InpWidth=1;

// Largura das linhas fan

input bool

InpBack=false;

// Grade de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Grade Gann

//+------------------------------------------------------------------+
bool GannGridCreate(const long

chart_ID=0,

// ID de grfico

const string

name="GannGrid",

// nome do grade

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

const double

scale=1.0,

// escala

const bool

direction=true,

// direo da tendncia

const color

clr=clrRed,

// cor do grade

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo das linhas grade


const int

width=1,

// largura das linhas grade

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para o clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeGannGridEmptyPoints(time1,price1,time2);
//--- redefine o valor de erro
ResetLastError();
//--- Criar Grade Gann pelas coordenadas fornecidas
if(!ObjectCreate(chart_ID,name,OBJ_GANNGRID,sub_window,time1,price1,time2,0))
{
Print(__FUNCTION__,
": falha ao criar \"Grade Gann\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- alterar a escala (nmero de pips por barra)
ObjectSetDouble(chart_ID,name,OBJPROP_SCALE,scale);
//--- mudar a direo de tendncia Gann Fan (true - descendente, false - ascendente)
ObjectSetInteger(chart_ID,name,OBJPROP_DIRECTION,direction);
//--- definir cor do grade
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir a exibio do estilo das linhas grade
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha do grade
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

2000-2015, MetaQuotes Software Corp.

398

Constantes Padro, Enumeradores e Estruturas


//--- habilitar (true) ou desabilitar (false) o modo de destaque para mover o grid
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem do Grade Gann

//+------------------------------------------------------------------+
bool GannGridPointChange(const long

chart_ID=0,

// ID do grfico

const string name="GannGrid", // nome do grade


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem de preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover ponto de ancoragem do grade
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar a escala Grade Gann

//+------------------------------------------------------------------+
bool GannGridScaleChange(const long

chart_ID=0,

// ID do grfico

const string name="GannGrid", // nome do grade


const double scale=1.0)

// escala

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar a escala (nmero de pips por barra)

2000-2015, MetaQuotes Software Corp.

399

Constantes Padro, Enumeradores e Estruturas


if(!ObjectSetDouble(chart_ID,name,OBJPROP_SCALE,scale))
{
Print(__FUNCTION__,
": falha ao alterar a escala! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar a direo de tendncia Grade Gann

//+------------------------------------------------------------------+
bool GannGridDirectionChange(const long

chart_ID=0,

// ID do grfico

const string name="GannGrid", // nome do grade


const bool

direction=true)

// direo da tendncia

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar a direo de tendncia Grade Gann
if(!ObjectSetInteger(chart_ID,name,OBJPROP_DIRECTION,direction))
{
Print(__FUNCTION__,
": falha ao alterar a direo de tendncia! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| A funo remove o Gann Fan do grfico

//+------------------------------------------------------------------+
bool GannGridDelete(const long

chart_ID=0,

// ID do grfico

const string name="GannGrid") // nome do grade


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir Grade Gann
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir \"Grade Gann\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Ver valores dos pontos de ancoragem do Grade Gann e definir

//| valores padro para aqueles vazios

2000-2015, MetaQuotes Software Corp.

400

Constantes Padro, Enumeradores e Estruturas


//+------------------------------------------------------------------+
void ChangeGannGridEmptyPoints(datetime &time1,double &price1,datetime &time2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time2)
time2=TimeCurrent();

//--- se o tempo do primeiro ponto no est definido, est localizado 9 barras a esquerda partir da
if(!time1)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- definir o primeiro ponto 9 barras a esquerda do segundo
time1=temp[0];
}
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem do grade
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}

2000-2015, MetaQuotes Software Corp.

401

Constantes Padro, Enumeradores e Estruturas


//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar Grade Gann
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
//--- criar Grade Gann
if(!GannGridCreate(0,InpName,0,date[d1],price[p1],date[d2],InpScale,InpDirection,
InpColor,InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem do grade
//--- contador de loop
int v_steps=accuracy/4;
//--- mover o primeiro ponto de ancoragem vertical
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p1<accuracy-1)
p1+=1;
if(!GannGridPointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
int h_steps=bars/4;
//--- mover o segundo ponto de ancoragem vertical
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d2<bars-1)
d2+=1;
if(!GannGridPointChange(0,InpName,1,date[d2],0))

2000-2015, MetaQuotes Software Corp.

402

Constantes Padro, Enumeradores e Estruturas


return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- alterar a direo tendncia do grade para um descendente
GannGridDirectionChange(0,InpName,true);
//--- redesenhar o grfico
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir o grade do grfico
GannGridDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

403

Constantes Padro, Enumeradores e Estruturas

OBJ_FIBO
Retrao Fibonacci.

Observao
Para "Retrao Fibonacci", possvel determinar o modo da continuao da sua exibio para a
direita e/ou esquerda (de acordo com a propriedade OBJPROP_RAY_RIGHT e
OBJPROP_RAY_LEFT).
Voc tambm pode especificar o nmero de linhas de nveis, os seus valores e cores.
Exemplo
O seguinte script cria e move a Retrao Fibonacci no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
[parcial]#property description "Script desenha objeto grfico \"Retrao Fibonacci\"."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="FiboLevels";

// Nome do objeto

input int

InpDate1=10;

// Data do 1 ponto, %

input int

InpPrice1=65;

// Preo do 1 ponto, %

input int

InpDate2=90;

// Data do 2 ponto, %

input int

InpPrice2=85;

// Preo do 2 ponto, %

2000-2015, MetaQuotes Software Corp.

404

Constantes Padro, Enumeradores e Estruturas


input color

InpColor=clrRed;

// Cor do objeto

input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo da linha


input int

InpWidth=2;

// Largura da linha

input bool

InpBack=false;

// Objeto de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpRayLeft=false;

// Continuao do objeto para a esquerda

input bool

InpRayRight=false;

// Continuao do objeto para a direita

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Retrao Fibonacci pelas coordenadas fornecidas

//+------------------------------------------------------------------+
bool FiboLevelsCreate(const long

chart_ID=0,

// ID de grfico

const string

name="FiboLevels", // nome do objeto

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

const color

clr=clrRed,

// cor do objeto

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo de linha do objeto


const int

width=1,

// largura da linha do objeto

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

ray_left=false,

// continuao do objeto para a esqu

const bool

ray_right=false,

// continuao do objeto para a dire

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeFiboLevelsEmptyPoints(time1,price1,time2,price2);
//--- redefine o valor de erro
ResetLastError();
//--- Criar Retrao Fibonacci pelas coordenadas fornecidas
if(!ObjectCreate(chart_ID,name,OBJ_FIBO,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": falha para criar \"Retrao Fibonacci\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir cor
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir estilo de linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do canal

2000-2015, MetaQuotes Software Corp.

405

Constantes Padro, Enumeradores e Estruturas


//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do objeto esquerd
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do objeto direita
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Definir o nmero de nveis e seus parmetros

//+------------------------------------------------------------------+
bool FiboLevelsSet(int

levels,

// nmero de linhas dos nveis

double

&values[],

// valores de linhas dos nveis

color

&colors[],

// cor das linhas dos nveis

ENUM_LINE_STYLE &styles[],

// estilo das linhas dos nveis

int

&widths[],

// largura das linhas dos nveis

const long

chart_ID=0,

// ID do grfico

const string

name="FiboLevels") // nome do objeto

{
//--- verificar tamanhos do array
if(levels!=ArraySize(colors) || levels!=ArraySize(styles) ||
levels!=ArraySize(widths) || levels!=ArraySize(widths))
{
Print(__FUNCTION__,": comprimento do array no corresponder ao nmero de nveis, erro!");
return(false);
}
//--- definir o nmero de nveis
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELS,levels);
//--- definir as propriedades de nveis no loop
for(int i=0;i<levels;i++)
{
//--- valor do nvel
ObjectSetDouble(chart_ID,name,OBJPROP_LEVELVALUE,i,values[i]);
//--- cor do nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELCOLOR,i,colors[i]);
//--- estilo de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELSTYLE,i,styles[i]);
//--- largura de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELWIDTH,i,widths[i]);
//--- descrio de nvel
ObjectSetString(chart_ID,name,OBJPROP_LEVELTEXT,i,DoubleToString(100*values[i],1));

2000-2015, MetaQuotes Software Corp.

406

Constantes Padro, Enumeradores e Estruturas


}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem da Retrao Fibonacci

//+------------------------------------------------------------------+
bool FiboLevelsPointChange(const long

chart_ID=0,

// ID do grfico

const string name="FiboLevels", // nome do objeto


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem do t

double

price=0)

// coordenada do ponto de ancoragem de p

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir Retrao Fibonacci

//+------------------------------------------------------------------+
bool FiboLevelsDelete(const long

chart_ID=0,

// ID do grfico

const string name="FiboLevels") // nome do objeto


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o objeto
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir \"Retrao Fibonacci\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

407

Constantes Padro, Enumeradores e Estruturas


//|V valores dos pontos de ancoragem da Retrao Fibonacci e

//| definir os valores padres estabelecidos para os pontos vazio

//+------------------------------------------------------------------+
void ChangeFiboLevelsEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time2)
time2=TimeCurrent();
//--- se o preo do segundo ponto no est definido, ele ter valor Bid
if(!price2)
price2=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do primeiro ponto no est definido, est localizado 9 barras a esquerda partir da
if(!time1)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- definir o primeiro ponto 9 barras a esquerda do segundo
time1=temp[0];
}
//--- se o preo do primeiro ponto no est definido, mover 200 pontos a mais do que o segundo
if(!price1)
price1=price2-200*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas dos pontos de ancoragem da Retrao Fibonacci
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas

2000-2015, MetaQuotes Software Corp.

408

Constantes Padro, Enumeradores e Estruturas


ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar Retrao Fibonacci
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
//--- criar um objeto
if(!FiboLevelsCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],InpColor,
InpStyle,InpWidth,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem
//--- contador de loop
int v_steps=accuracy*2/5;
//--- mover o primeiro ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p1>1)
p1-=1;
//--- mover o ponto
if(!FiboLevelsPointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop

2000-2015, MetaQuotes Software Corp.

409

Constantes Padro, Enumeradores e Estruturas


v_steps=accuracy*4/5;
//--- mover o segundo ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p2>1)
p2-=1;
//--- mover o ponto
if(!FiboLevelsPointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a etiqueta do grfico
FiboLevelsDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

410

Constantes Padro, Enumeradores e Estruturas

OBJ_FIBOTIMES
Fibonacci Zonas de Tempo.

Observao
Para "Fibonacci Zonas de Tempo", possvel determinar o nmero de linhas de nveis, os seus
valores e cores.
Exemplo
O seguinte script cria e move a Fibonacci Zonas de Tempo no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.
//--- descrio
#property description "Script desenha objeto grfico \"Fibonacci Zonas de Tempo\"."
#property description "Coordenadas dos pontos de ancoragem so definidos em percentagem do tamanho
#property description "janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="FiboTimes";

// Nome do objeto

input int

InpDate1=10;

// Data do 1 ponto, %

input int

InpPrice1=45;

// Preo do 1 ponto, %

input int

InpDate2=20;

// Data do 2 ponto, %

input int

InpPrice2=55;

// Preo do 2 ponto, %

input color

InpColor=clrRed;

// Cor do objeto

input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo da linha


input int

InpWidth=2;

// Largura da linha

2000-2015, MetaQuotes Software Corp.

411

Constantes Padro, Enumeradores e Estruturas


input bool

InpBack=false;

// Objeto de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Fibonacci Zonas de Tempo pelas coordenadas fornecidas

//+------------------------------------------------------------------+
bool FiboTimesCreate(const long

chart_ID=0,

// ID de grfico

const string

name="FiboTimes",

// nome do objeto

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

const color

clr=clrRed,

// cor do objeto

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo de linha do objeto


const int

width=1,

// largura da linha do objeto

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeFiboTimesEmptyPoints(time1,price1,time2,price2);
//--- redefine o valor de erro
ResetLastError();
//--- criar Fibonacci Zonas de Tempo pelas coordenadas fornecidas
if(!ObjectCreate(chart_ID,name,OBJ_FIBOTIMES,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": falha ao criar \"Fibonacci Zonas de Tempo\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir cor
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir estilo de linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do canal
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

2000-2015, MetaQuotes Software Corp.

412

Constantes Padro, Enumeradores e Estruturas


//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Definir o nmero de nveis e seus parmetros

//+------------------------------------------------------------------+
bool FiboTimesLevelsSet(int

levels,

// nmero de linhas dos nveis

double

&values[],

// valores de linhas dos nveis

color

&colors[],

// cor das linhas dos nveis

ENUM_LINE_STYLE &styles[],

// estilo das linhas dos nveis

int

&widths[],

// largura das linhas dos nveis

const long

chart_ID=0,

// ID do grfico

const string

name="FiboTimes") // nome do objeto

{
//--- verificar tamanhos do array
if(levels!=ArraySize(colors) || levels!=ArraySize(styles) ||
levels!=ArraySize(widths) || levels!=ArraySize(widths))
{
Print(__FUNCTION__,": comprimento do array no corresponder ao nmero de nveis, erro!");
return(false);
}
//--- definir o nmero de nveis
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELS,levels);
//--- definir as propriedades de nveis no loop
for(int i=0;i<levels;i++)
{
//--- valor do nvel
ObjectSetDouble(chart_ID,name,OBJPROP_LEVELVALUE,i,values[i]);
//--- cor do nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELCOLOR,i,colors[i]);
//--- estilo de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELSTYLE,i,styles[i]);
//--- largura de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELWIDTH,i,widths[i]);
//--- descrio de nvel
ObjectSetString(chart_ID,name,OBJPROP_LEVELTEXT,i,DoubleToString(values[i],1));
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover pontos de ancoragem da Fibonacci Zonas de Tempo

//+------------------------------------------------------------------+
bool FiboTimesPointChange(const long

chart_ID=0,

// ID grfico

const string name="FiboTimes", // nome do objeto


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de tem

2000-2015, MetaQuotes Software Corp.

413

Constantes Padro, Enumeradores e Estruturas


double

price=0)

// coordenada do ponto de ancoragem de pre

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir Fibonacci Zonas de Tempo

//+------------------------------------------------------------------+
bool FiboTimesDelete(const long

chart_ID=0,

// ID grfico

const string name="FiboTimes") // nome do objeto


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o objeto
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir \"Fibonacci Zonas de Tempo\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar os valores da Fibonacci Zonas de Tempo e

//| definir os valores padres estabelecidos para aqueles vazios

//+------------------------------------------------------------------+
void ChangeFiboTimesEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time1)
time1=TimeCurrent();
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)

2000-2015, MetaQuotes Software Corp.

414

Constantes Padro, Enumeradores e Estruturas


price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- se o tempo do segundo ponto no est definido, est localizado 2 barras deixadas a partir da
if(!time2)
{
//--- array para receber o tempo de abertura das ltimos 3 barras
datetime temp[3];
CopyTime(Symbol(),Period(),time1,3,temp);
//--- definir o primeiro ponto 2 barras a esquerda do segundo
time2=temp[0];
}
//--- se o preo do segundo ponto no est definido, igual ao primeiro ponto
if(!price2)
price2=price1;
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas dos pontos de ancoragem da Fibonacci Zonas de Tempo
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array

2000-2015, MetaQuotes Software Corp.

415

Constantes Padro, Enumeradores e Estruturas


double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- define pontos para desenhar Fibonacci Zonas de Tempo
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
//--- criar um objeto
if(!FiboTimesCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],
InpColor,InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem
//--- contador de loop
int h_steps=bars*2/5;
//--- mover o segundo ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d2<bars-1)
d2+=1;
//--- mover o ponto
if(!FiboTimesPointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
h_steps=bars*3/5;
//--- mover o primeiro ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d1<bars-1)
d1+=1;
//--- mover o ponto
if(!FiboTimesPointChange(0,InpName,0,date[d1],price[p1]))

2000-2015, MetaQuotes Software Corp.

416

Constantes Padro, Enumeradores e Estruturas


return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a etiqueta do grfico
FiboTimesDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

417

Constantes Padro, Enumeradores e Estruturas

OBJ_FIBOFAN
Fibonacci Fan.

Observao
Para "Fibonacci Fan", possvel determinar o nmero de linhas de nveis, os seus valores e cores.
Exemplo
O seguinte script cria e move o Fibonacci Fan no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.

//--- descrio
#property description "Script desenha o objeto grfico tipo \"Fibonacci Fan\"."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="FiboFan";

// Nome do fan

input int

InpDate1=10;

// Data do 1 ponto, %

input int

InpPrice1=25;

// Preo do 1 ponto, %

input int

InpDate2=30;

// Data do 2 ponto, %

input int

InpPrice2=50;

// Preo do 2 ponto, %

input color

InpColor=clrRed;

// Cor da linha fan

input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo da linha


input int

InpWidth=2;

// Largura da linha

2000-2015, MetaQuotes Software Corp.

418

Constantes Padro, Enumeradores e Estruturas


input bool

InpBack=false;

// Objeto de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Fibonacci Fan pelas coordenadas fornecidas

//+------------------------------------------------------------------+
bool FiboFanCreate(const long

chart_ID=0,

// ID de grfico

const string

name="FiboFan",

// nome do fan

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

const color

clr=clrRed,

// cor da linha fan

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo de linha fan


const int

width=1,

// largura da linha fan

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeFiboFanEmptyPoints(time1,price1,time2,price2);
//--- redefine o valor de erro
ResetLastError();
//--- criar Fibonacci Fan pelas coordenadas fornecidas
if(!ObjectCreate(chart_ID,name,OBJ_FIBOFAN,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": falha para criar \" Fibonacci Fan\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir cor
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir estilo de linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de destaque para mover o fan
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

2000-2015, MetaQuotes Software Corp.

419

Constantes Padro, Enumeradores e Estruturas


//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Definir o nmero de nveis e seus parmetros

//+------------------------------------------------------------------+
bool FiboFanLevelsSet(int

levels,

// nmero de linhas dos nveis

double

&values[],

// valores de linhas dos nveis

color

&colors[],

// cor das linhas dos nveis

ENUM_LINE_STYLE &styles[],

// estilo das linhas dos nveis

int

&widths[],

// largura das linhas dos nveis

const long

chart_ID=0,

// ID do grfico

const string

name="FiboFan") // nome do fan

{
//--- verificar tamanhos do array
if(levels!=ArraySize(colors) || levels!=ArraySize(styles) ||
levels!=ArraySize(widths) || levels!=ArraySize(widths))
{
Print(__FUNCTION__,": comprimento do array no corresponder ao nmero de nveis, erro!");
return(false);
}
//--- definir o nmero de nveis
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELS,levels);
//--- definir as propriedades de nveis no loop
for(int i=0;i<levels;i++)
{
//--- valor do nvel
ObjectSetDouble(chart_ID,name,OBJPROP_LEVELVALUE,i,values[i]);
//--- cor do nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELCOLOR,i,colors[i]);
//--- estilo de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELSTYLE,i,styles[i]);
//--- largura de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELWIDTH,i,widths[i]);
//--- descrio de nvel
ObjectSetString(chart_ID,name,OBJPROP_LEVELTEXT,i,DoubleToString(100*values[i],1));
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem da Fibonacci Fan

//+------------------------------------------------------------------+
bool FiboFanPointChange(const long

chart_ID=0,

// ID do grfico

const string name="FiboFan", // nome do fan


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de tempo

2000-2015, MetaQuotes Software Corp.

420

Constantes Padro, Enumeradores e Estruturas


double

price=0)

// coordenada do ponto de ancoragem do preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir nome da Fibo

//+------------------------------------------------------------------+
bool FiboFanDelete(const long

chart_ID=0,

// ID do grfico

const string name="FiboFan") // nome do fan


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir Gann Fan
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir \" Fibonacci Fan\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Ver valores dos pontos de ancoragem Fibonacci Fan e

//| definir os valores padres estabelecidos para os pontos vazio

//+------------------------------------------------------------------+
void ChangeFiboFanEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time2)
time2=TimeCurrent();
//--- se o preo do segundo ponto no est definido, ele ter valor Bid
if(!price2)

2000-2015, MetaQuotes Software Corp.

421

Constantes Padro, Enumeradores e Estruturas


price2=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do primeiro ponto no est definido, est localizado 9 barras a esquerda partir da
if(!time1)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- definir o primeiro ponto 9 barras a esquerda do segundo
time1=temp[0];
}
//--- se o preo do primeiro ponto no est definido, mover 200 pontos a mais do que o segundo
if(!price1)
price1=price2-200*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas dos pontos de ancoragem da Fibonacci Fan
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array

2000-2015, MetaQuotes Software Corp.

422

Constantes Padro, Enumeradores e Estruturas


double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar a Fibonacci Fan
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
//--- criar um objeto
if(!FiboFanCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],
InpColor,InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem do fan
//--- contador de loop
int v_steps=accuracy/2;
//--- mover o primeiro ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p1<accuracy-1)
p1+=1;
//--- mover o ponto
if(!FiboFanPointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
int h_steps=bars/4;
//--- mover o segundo ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d2<bars-1)
d2+=1;
//--- mover o ponto
if(!FiboFanPointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora

2000-2015, MetaQuotes Software Corp.

423

Constantes Padro, Enumeradores e Estruturas


if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a etiqueta do grfico
FiboFanDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

424

Constantes Padro, Enumeradores e Estruturas

OBJ_FIBOARC
Arcos Fibonacci.

Observao
Para "Arcos Fibonacci Arcs", possvel determinar o modo de exibio da elipse inteira. O raio de
curvatura pode ser especificado, alterando a escala e as coordenadas dos pontos de ancoragem.
Voc tambm pode especificar o nmero de linhas de nveis, os seus valores e cores.
Exemplo
O seguinte script cria e move a Arcos Fibonacci no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha objeto grfico \"Arcos Fibonacci\"."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="FiboArc";

// Nome do objeto

input int

InpDate1=25;

// Data do 1 ponto, %

input int

InpPrice1=25;

// Preo do 1 ponto, %

input int

InpDate2=35;

// Data do 2 ponto, %

input int

InpPrice2=55;

// Preo do 2 ponto, %

input double

InpScale=3.0;

// Escala

2000-2015, MetaQuotes Software Corp.

425

Constantes Padro, Enumeradores e Estruturas


input bool

InpFullEllipse=true;

// Formas dos arcos

input color

InpColor=clrRed;

// Cor da linha

input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo da linha


input int

InpWidth=2;

// Largura da linha

input bool

InpBack=false;

// Objeto de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Arcos Fibonacci pelas coordenadas fornecidas

//+------------------------------------------------------------------+
bool FiboArcCreate(const long

chart_ID=0,

// ID do grfico

const string

name="FiboArc",

// nome do objeto

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

const double

scale=1.0,

// escala

const bool

full_ellipse=false, // forma dos arcos

const color

clr=clrRed,

// cor da linha

const ENUM_LINE_STYLE style=STYLE_SOLID,

// estilo da linha

const int

width=1,

// largura da linha

const bool

back=false,

// no fundo

const bool

selection=true,

// destacar para mover

const bool

hidden=true,

// ocultar na lista de objeto

const long

z_order=0)

// prioridade para clicar no mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeFiboArcEmptyPoints(time1,price1,time2,price2);
//--- redefine o valor de erro
ResetLastError();
//--- criar Arcos Fibonacci pelas coordenadas fornecidas
if(!ObjectCreate(chart_ID,name,OBJ_FIBOARC,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": falha ao criar \"Arcos Fibonacci\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir a escala
ObjectSetDouble(chart_ID,name,OBJPROP_SCALE,scale);
//--- definir visualizao dos arcos como uma elipse completa (true) ou a metade dela (false)
ObjectSetInteger(chart_ID,name,OBJPROP_ELLIPSE,full_ellipse);
//--- definir cor
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir estilo de linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);

2000-2015, MetaQuotes Software Corp.

426

Constantes Padro, Enumeradores e Estruturas


//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de destaque para mover os arcos
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Definir o nmero de nveis e seus parmetros

//+------------------------------------------------------------------+
bool FiboArcLevelsSet(int

levels,

// nmero de linhas dos nveis

double

&values[],

// valores de linhas dos nveis

color

&colors[],

// cor das linhas dos nveis

ENUM_LINE_STYLE &styles[],

// estilo das linhas dos nveis

int

&widths[],

// largura das linhas dos nveis

const long

chart_ID=0,

// ID do grfico

const string

name="FiboArc") // nome do objeto

{
//--- verificar tamanhos do array
if(levels!=ArraySize(colors) || levels!=ArraySize(styles) ||
levels!=ArraySize(widths) || levels!=ArraySize(widths))
{
Print(__FUNCTION__,": comprimento do array no corresponder ao nmero de nveis, erro!");
return(false);
}
//--- definir o nmero de nveis
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELS,levels);
//--- definir as propriedades de nveis no loop
for(int i=0;i<levels;i++)
{
//--- valor do nvel
ObjectSetDouble(chart_ID,name,OBJPROP_LEVELVALUE,i,values[i]);
//--- cor do nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELCOLOR,i,colors[i]);
//--- estilo de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELSTYLE,i,styles[i]);
//--- largura de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELWIDTH,i,widths[i]);
//--- descrio de nvel
ObjectSetString(chart_ID,name,OBJPROP_LEVELTEXT,i,DoubleToString(100*values[i],1));
}

2000-2015, MetaQuotes Software Corp.

427

Constantes Padro, Enumeradores e Estruturas


//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem dos Arcos Fibonacci

//+------------------------------------------------------------------+
bool FiboArcPointChange(const long

chart_ID=0,

// ID do grfico

const string name="FiboArc", // nome do objeto


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem do preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir Arcos Fibonacci

//+------------------------------------------------------------------+
bool FiboArcDelete(const long

chart_ID=0,

// ID do grfico

const string name="FiboArc") // nome do objeto


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o objeto
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir\"Arcos Fibonacci\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Ver valores dos pontos de ancoragem dos Arcos Fibonacci e definir|

2000-2015, MetaQuotes Software Corp.

428

Constantes Padro, Enumeradores e Estruturas


//| valores padro para aqueles vazios

//+------------------------------------------------------------------+
void ChangeFiboArcEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time2)
time2=TimeCurrent();
//--- se o preo do segundo ponto no est definido, ele ter valor Bid
if(!price2)
price2=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do primeiro ponto no est definido, est localizado 9 barras a esquerda partir da
if(!time1)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- definir o primeiro ponto 9 barras a esquerda do segundo
time1=temp[0];
}
//--- se o preo do primeiro ponto no est definido, mover 300 pontos a mais do que o segundo
if(!price1)
price1=price2-300*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas dos pontos de ancoragem dos Arcos Fibonacci
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();

2000-2015, MetaQuotes Software Corp.

429

Constantes Padro, Enumeradores e Estruturas


if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar Arcos Fibonacci
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
//--- criar um objeto
if(!FiboArcCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],InpScale,
InpFullEllipse,InpColor,InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem
//--- contador de loop
int v_steps=accuracy/5;
//--- mover o primeiro ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p1<accuracy-1)
p1+=1;
//--- mover o ponto
if(!FiboArcPointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
int h_steps=bars/5;

2000-2015, MetaQuotes Software Corp.

430

Constantes Padro, Enumeradores e Estruturas


//--- mover o segundo ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d2<bars-1)
d2+=1;
//--- mover o ponto
if(!FiboArcPointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a etiqueta do grfico
FiboArcDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

431

Constantes Padro, Enumeradores e Estruturas

OBJ_FIBOCHANNEL
Canal Fibonacci.

Observao
Para "Canal Fibonacci", possvel determinar o modo da continuao da sua exibio para a direita
e/ou esquerda (de acordo com as propriedades OBJPROP_RAY_RIGHT e OBJPROP_RAY_LEFT).
Voc tambm pode especificar o nmero de linhas de nveis, os seus valores e cores.
Exemplo
O seguinte script cria e move o Canal Fibonacci no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha um objeto grfico tipo \"Canal Fibonacci\"."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="FiboChannel";

// Nome do canal

input int

InpDate1=20;

// Data do 1 ponto, %

input int

InpPrice1=10;

// Preo do 1 ponto, %

input int

InpDate2=60;

// Data do 2 ponto, %

input int

InpPrice2=30;

// Preo do 2 ponto, %

input int

InpDate3=20;

// Data do 3 ponto, %

2000-2015, MetaQuotes Software Corp.

432

Constantes Padro, Enumeradores e Estruturas


input int

InpPrice3=25;

// Preo do 3 ponto, %

input color

InpColor=clrRed;

// Cor do canal

input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo de linhas do canal


input int

InpWidth=2;

// Largura das linhas do canal

input bool

InpBack=false;

// Canal de Fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpRayLeft=false;

// Continuao do Canal para a esquerda

input bool

InpRayRight=false;

// Continuao do Canal para a direita

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Canal Fibonacci pelas coordenadas fornecidas

//+------------------------------------------------------------------+
bool FiboChannelCreate(const long

chart_ID=0,

// ID do grfico

const string

name="FiboChannel", // nome do canal

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

datetime

time3=0,

// terceiro ponto de tempo

double

price3=0,

// terceiro ponto de preo

const color

clr=clrRed,

// cor do sinal

const ENUM_LINE_STYLE style=STYLE_SOLID,

// estilo das linhas do canal

const int

width=1,

// largura das linhas do canal

const bool

back=false,

// no fundo

const bool

selection=true,

// destacar para mover

const bool

ray_left=false,

// continuao do canal para a esq

const bool

ray_right=false,

// continuao do canal para a dir

const bool

hidden=true,

// ocultar na lista de objeto

const long

z_order=0)

// prioridade para clicar no mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeFiboChannelEmptyPoints(time1,price1,time2,price2,time3,price3);
//--- redefine o valor de erro
ResetLastError();
//--- criar um canal pelas coordenadas dadas

if(!ObjectCreate(chart_ID,name,OBJ_FIBOCHANNEL,sub_window,time1,price1,time2,price2,time3,price3
{
Print(__FUNCTION__,
": falha ao criar \"Canal Fibonacci\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir a cor do canal
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de linha do canal
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha do canal
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);

2000-2015, MetaQuotes Software Corp.

433

Constantes Padro, Enumeradores e Estruturas


//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do canal
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do canal a esquerda
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);
//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do canal a direita
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Definir o nmero de nveis e seus parmetros

//+------------------------------------------------------------------+
bool FiboChannelLevelsSet(int

levels,

// nmero de linhas dos nveis

double

&values[],

// valores de linhas dos nveis

color

&colors[],

// cor das linhas dos nveis

ENUM_LINE_STYLE &styles[],

// estilo das linhas dos nveis

int

&widths[],

// largura das linhas dos nveis

const long

chart_ID=0,

// ID do grfico

const string

name="FiboChannel") // nome do objeto

{
//--- verificar tamanhos do array
if(levels!=ArraySize(colors) || levels!=ArraySize(styles) ||
levels!=ArraySize(widths) || levels!=ArraySize(widths))
{
Print(__FUNCTION__,": comprimento do array no corresponder ao nmero de nveis, erro!");
return(false);
}
//--- definir o nmero de nveis
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELS,levels);
//--- definir as propriedades de nveis no loop
for(int i=0;i<levels;i++)
{
//--- valor do nvel
ObjectSetDouble(chart_ID,name,OBJPROP_LEVELVALUE,i,values[i]);
//--- cor do nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELCOLOR,i,colors[i]);
//--- estilo de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELSTYLE,i,styles[i]);
//--- largura de nvel

2000-2015, MetaQuotes Software Corp.

434

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_LEVELWIDTH,i,widths[i]);
//--- descrio de nvel
ObjectSetString(chart_ID,name,OBJPROP_LEVELTEXT,i,DoubleToString(100*values[i],1));
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem do Canal Fibonacci

//+------------------------------------------------------------------+
bool FiboChannelPointChange(const long

chart_ID=0,

// ID do grfico

const string name="FiboChannel", // nome do canal


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de

double

price=0)

// coordenada do ponto de ancoragem de

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir o canal

//+------------------------------------------------------------------+
bool FiboChannelDelete(const long

chart_ID=0,

// ID do grfico

const string name="FiboChannel") // nome do canal


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o canal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir \"Canal Fibonacci\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo

2000-2015, MetaQuotes Software Corp.

435

Constantes Padro, Enumeradores e Estruturas


return(true);
}
//+------------------------------------------------------------------+
//| Ver valores dos pontos de ancoragem do Canal Fibonacci e

//| definir os valores padres estabelecidos para os pontos vazio

//+------------------------------------------------------------------+
void ChangeFiboChannelEmptyPoints(datetime &time1,double &price1,datetime &time2,
double &price2,datetime &time3,double &price3)
{
//--- se o tempo do segundo ponto (a direita)no est definido, ser na barra atual
if(!time2)
time2=TimeCurrent();
//--- se o preo do segundo ponto no est definido, ele ter valor Bid
if(!price2)
price2=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do primeiro ponto (a esquerda) no est definido, est localizado 9 barras a esque
if(!time1)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- definir o primeiro ponto 9 barras a esquerda do segundo
time1=temp[0];
}
//--- se o preo do primeiro ponto no est definido, mover 300 pontos a mais do que o segundo
if(!price1)
price1=price2+300*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
//--- se o tempo do terceiro ponto no est definido,ele coincide com o tempo do primeiro ponto
if(!time3)
time3=time1;
//--- se o preo do terceiro ponto no est definido, igual ao preo do segundo ponto
if(!price3)
price3=price2;
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100 ||
InpDate3<0 || InpDate3>100 || InpPrice3<0 || InpPrice3>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);

2000-2015, MetaQuotes Software Corp.

436

Constantes Padro, Enumeradores e Estruturas


//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem do canal
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir pontos para desenhar o canal
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int d3=InpDate3*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
int p3=InpPrice3*(accuracy-1)/100;
//--- criar Canal Fibonacci
if(!FiboChannelCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],date[d3],price[p3],
InpColor,InpStyle,InpWidth,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem do canal
//--- contador de loop
int h_steps=bars/10;
//--- mover o primeiro ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d1>1)
d1-=1;

2000-2015, MetaQuotes Software Corp.

437

Constantes Padro, Enumeradores e Estruturas


//--- mover o ponto
if(!FiboChannelPointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
int v_steps=accuracy/10;
//--- mover o segundo ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p2>1)
p2-=1;
//--- mover o ponto
if(!FiboChannelPointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
v_steps=accuracy/15;
//--- mover o terceiro ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p3<accuracy-1)
p3+=1;
//--- mover o ponto
if(!FiboChannelPointChange(0,InpName,2,date[d3],price[p3]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}

2000-2015, MetaQuotes Software Corp.

438

Constantes Padro, Enumeradores e Estruturas


//--- 1 segundo de atraso
Sleep(1000);
//--- excluir o canal do grfico
FiboChannelDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

439

Constantes Padro, Enumeradores e Estruturas

OBJ_EXPANSION
Fibonacci Expansion.

Observao
Para "Expanso Fibonacci", possvel determinar o modo da continuao da sua exibio para a
direita e/ou esquerda (de acordo com a propriedade OBJPROP_RAY_RIGHT e
OBJPROP_RAY_LEFT).
Voc tambm pode especificar o nmero de linhas de nveis, os seus valores e cores.
Exemplo
O seguinte script cria e move a Expanso Fibonacci no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha objeto grfico \"Expanso Fibonacci\"."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="FiboExpansion";

// Nome do objeto

input int

InpDate1=10;

// Data do 1 ponto, %

input int

InpPrice1=55;

// Preo do 1 ponto, %

input int

InpDate2=30;

// Data do 2 ponto, %

input int

InpPrice2=10;

// Preo do 2 ponto, %

2000-2015, MetaQuotes Software Corp.

440

Constantes Padro, Enumeradores e Estruturas


input int

InpDate3=80;

// Data do 3 ponto, %

input int

InpPrice3=75;

// Preo do 3 ponto, %

input color

InpColor=clrRed;

// Cor do objeto

input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo de linhas


input int

InpWidth=2;

// Largura das linha

input bool

InpBack=false;

// Objeto de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpRayLeft=false;

// Continuao do objeto para a esquerda

input bool

InpRayRight=false;

// Continuao do objeto para a direita

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Extenso Fibonacci pelas coordenadas fornecidas

//+------------------------------------------------------------------+
bool FiboExpansionCreate(const long

chart_ID=0,

// ID de grfico

const string

name="FiboExpansion", // nome do canal

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

datetime

time3=0,

// terceiro ponto de tempo

double

price3=0,

// terceiro ponto de preo

const color

clr=clrRed,

// cor do objeto

const ENUM_LINE_STYLE style=STYLE_SOLID,

// estilo das linhas

const int

width=1,

// largura das linhas

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

ray_left=false,

// continuao do objeto para

const bool

ray_right=false,

// continuao do objeto para

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clicar no m

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeFiboExpansionEmptyPoints(time1,price1,time2,price2,time3,price3);
//--- redefine o valor de erro
ResetLastError();
//--- Criar Extenso Fibonacci pelas coordenadas fornecidas

if(!ObjectCreate(chart_ID,name,OBJ_EXPANSION,sub_window,time1,price1,time2,price2,time3,price3))
{
Print(__FUNCTION__,
": falha para criar \"Extenso Fibonacci\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir cor do objeto
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura das linhas

2000-2015, MetaQuotes Software Corp.

441

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do canal
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do objeto esquerd
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);

//--- habilitar (true) ou desabilitar (false) o modo de continuao da exibio do objeto direita
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Definir o nmero de nveis e seus parmetros

//+------------------------------------------------------------------+
bool FiboExpansionLevelsSet(int

levels,

// nmero de linhas dos nveis

double

&values[],

// valores de linhas dos nveis

color

&colors[],

// cor das linhas dos nveis

ENUM_LINE_STYLE &styles[],

// estilo das linhas dos nveis

int

&widths[],

// largura das linhas dos nveis

const long

chart_ID=0,

// ID do grfico

const string

name="FiboExpansion") // nome do objeto

{
//--- verificar tamanhos do array
if(levels!=ArraySize(colors) || levels!=ArraySize(styles) ||
levels!=ArraySize(widths) || levels!=ArraySize(widths))
{
Print(__FUNCTION__,": comprimento do array no corresponder ao nmero de nveis, erro!");
return(false);
}
//--- definir o nmero de nveis
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELS,levels);
//--- definir as propriedades de nveis no loop
for(int i=0;i<levels;i++)
{
//--- valor do nvel
ObjectSetDouble(chart_ID,name,OBJPROP_LEVELVALUE,i,values[i]);
//--- cor do nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELCOLOR,i,colors[i]);
//--- estilo de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELSTYLE,i,styles[i]);

2000-2015, MetaQuotes Software Corp.

442

Constantes Padro, Enumeradores e Estruturas


//--- largura de nvel
ObjectSetInteger(chart_ID,name,OBJPROP_LEVELWIDTH,i,widths[i]);
//--- descrio de nvel
ObjectSetString(chart_ID,name,OBJPROP_LEVELTEXT,i,"FE "+DoubleToString(100*values[i],1));
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem da Expanso Fibonacci

//+------------------------------------------------------------------+
bool FiboExpansionPointChange(const long

chart_ID=0,

// ID do grfico

const string name="FiboExpansion", // nome do objeto


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancorage

double

price=0)

// coordenada do ponto de ancorage

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir Expanso Fibonacci

//+------------------------------------------------------------------+
bool FiboExpansionDelete(const long

chart_ID=0,

// ID do grfico

const string name="FiboExpansion") // nome do objeto


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o objeto
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir \"Expanso Fibonacci\"! Cdigo de erro = ",GetLastError());
return(false);
}

2000-2015, MetaQuotes Software Corp.

443

Constantes Padro, Enumeradores e Estruturas


//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| V valores dos pontos de ancoragem da Expanso Fibonacci e

//| definir os valores padres estabelecidos para os pontos vazio

//+------------------------------------------------------------------+
void ChangeFiboExpansionEmptyPoints(datetime &time1,double &price1,datetime &time2,
double &price2,datetime &time3,double &price3)
{
//--- se o tempo do terceiro ponto (a direita)no est definido, ser na barra atual
if(!time3)
time3=TimeCurrent();
//--- se o preo do terceiro ponto no est definido, ele ter valor Bid
if(!price3)
price3=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do primeiro ponto (a esquerda) no est definido, ele est localizado 9 barras a e
//--- array para receber o tempo de abertura das ltimas 10 barras
datetime temp[];
ArrayResize(temp,10);
if(!time1)
{
CopyTime(Symbol(),Period(),time3,10,temp);
//--- definir o primeiro ponto 9 barras a esquerda do segundo
time1=temp[0];
}
//--- se o preo do primeiro ponto no est definido, igual ao terceiro ponto
if(!price1)
price1=price3;

//--- se o tempo do segundo ponto no est definido, est localizado a 7 barras deixadas a partir d
if(!time2)
time2=temp[2];
//--- se o preo do primeiro ponto no est definido, mover 250 pontos a mais do que o primeiro
if(!price2)
price2=price1-250*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100 ||
InpDate3<0 || InpDate3>100 || InpPrice3<0 || InpPrice3>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}

2000-2015, MetaQuotes Software Corp.

444

Constantes Padro, Enumeradores e Estruturas


//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar Expanso Fibonacci
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int d3=InpDate3*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
int p3=InpPrice3*(accuracy-1)/100;
//--- criar Expanso Fibonacci
if(!FiboExpansionCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],date[d3],price[p3],
InpColor,InpStyle,InpWidth,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem
//--- contador de loop
int v_steps=accuracy/10;
//--- mover o primeiro ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor

2000-2015, MetaQuotes Software Corp.

445

Constantes Padro, Enumeradores e Estruturas


if(p1>1)
p1-=1;
//--- mover o ponto
if(!FiboExpansionPointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
v_steps=accuracy/2;
//--- mover o terceiro ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p3>1)
p3-=1;
//--- mover o ponto
if(!FiboExpansionPointChange(0,InpName,2,date[d3],price[p3]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
v_steps=accuracy*4/5;
//--- mover o segundo ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p2<accuracy-1)
p2+=1;
//--- mover o ponto
if(!FiboExpansionPointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}

2000-2015, MetaQuotes Software Corp.

446

Constantes Padro, Enumeradores e Estruturas


//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a etiqueta do grfico
FiboExpansionDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

447

Constantes Padro, Enumeradores e Estruturas

OBJ_ELLIOTWAVE5
Onda Mvel Elliott.

Observao
Para "Onda Mvel Elliott", possvel habilitar/desabilitar o modo de pontos de conexo das linhas
(propriedade OBJPROP_DRAWLINES), bem como definir o nvel de posicionamento da onda (a partir
da enumerao ENUM_ELLIOT_WAVE_DEGREE).
Exemplo
[parcial]O seguinte script cria e move onda mvel Elliott no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha \"Onda Mvel Elliott\"."
#property description "Coordenadas dos pontos de ancoragem so definidos em percentagem do tamanho
#property description "janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="ElliotWave5";

// Nome do objeto

input int

InpDate1=10;

// Data do 1 ponto, %

input int

InpPrice1=90;

// Preo do 1 ponto, %

input int

InpDate2=20;

// Data do 2 ponto, %

input int

InpPrice2=40;

// Preo do 2 ponto, %

input int

InpDate3=30;

// Data do 3 ponto, %

2000-2015, MetaQuotes Software Corp.

448

Constantes Padro, Enumeradores e Estruturas


input int

InpPrice3=60;

// Preo do 3 ponto, %

input int

InpDate4=40;

// Data do 4 ponto, %

input int

InpPrice4=10;

// Preo do 4 ponto, %

input int

InpDate5=60;

// Data do 5 ponto, %

input int

InpPrice5=40;

// Preo do 5 ponto, %

input ENUM_ELLIOT_WAVE_DEGREE InpDegree=ELLIOTT_MINOR; // Nvel


input bool

InpDrawLines=true;

// Exibindo as linhas

input color

InpColor=clrRed;

// Cor das linhas

input ENUM_LINE_STYLE

InpStyle=STYLE_DASH;

// Estilo das linhas

input int

InpWidth=2;

// Largura das linha

input bool

InpBack=false;

// Objeto de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objetos

input long

InpZOrder=0;

// Prioridade para clique do mouse

//+------------------------------------------------------------------+
//| Criar "Onda Mvel Elliott" pelas coordenadas fornecidas

//+------------------------------------------------------------------+
bool ElliotWave5Create(const long

chart_ID=0,

// ID do grfico

name="ElliotWave3",

// nome da onda

const int

sub_window=0,

// ndice da sub-jane

datetime

time1=0,

// primeiro ponto de

double

price1=0,

//primeiro ponto de p

datetime

time2=0,

// segundo ponto de t

double

price2=0,

// segundo ponto de p

datetime

time3=0,

// terceiro ponto de

double

price3=0,

// terceiro ponto de

datetime

time4=0,

// quarto ponto de te

double

price4=0,

// quarto ponto de pr

datetime

time5=0,

// quinto ponto de te

double

price5=0,

// quinto ponto de pr

const string

const ENUM_ELLIOT_WAVE_DEGREE degree=ELLIOTT_MINUETTE, // grau


const bool

draw_lines=true,

// exibindo as linhas

const color

clr=clrRed,

// cor do objeto

const ENUM_LINE_STYLE

style=STYLE_SOLID,

// estilo das linhas

const int

width=1,

// largura das linhas

const bool

back=false,

// no fundo

const bool

selection=true,

// destacar para move

const bool

hidden=true,

// ocultar na lista d

const long

z_order=0)

// prioridade para cl

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeElliotWave5EmptyPoints(time1,price1,time2,price2,time3,price3,time4,price4,time5,price5);
//--- redefine o valor de erro
ResetLastError();
//--- Criar "Onda Mvel Elliott" pelas coordenadas fornecidas
if(!ObjectCreate(chart_ID,name,OBJ_ELLIOTWAVE5,sub_window,time1,price1,time2,price2,time3,
price3,time4,price4,time5,price5))
{
Print(__FUNCTION__,

2000-2015, MetaQuotes Software Corp.

449

Constantes Padro, Enumeradores e Estruturas


": falha ao criar \""Onda Mvel Elliott"\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir grau (tamanho da onda)
ObjectSetInteger(chart_ID,name,OBJPROP_DEGREE,degree);
//--- habilitar (true) ou desabilitar (false) o modo de exibio das linhas
ObjectSetInteger(chart_ID,name,OBJPROP_DRAWLINES,draw_lines);
//--- definir cor do objeto
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura das linhas
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do canal
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Move o ponto de ancoragem da Onda Mvel Elliott

//+------------------------------------------------------------------+
bool ElliotWave5PointChange(const long

chart_ID=0,

// ID do grfico

const string name="ElliotWave5", // nome do objeto


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de

double

price=0)

// coordenada do ponto de ancoragem de

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());

2000-2015, MetaQuotes Software Corp.

450

Constantes Padro, Enumeradores e Estruturas


return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir Onda Mvel Elliott

//+------------------------------------------------------------------+
bool ElliotWave5Delete(const long

chart_ID=0,

// ID do grfico

const string name="ElliotWave5") // nome do objeto


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o objeto
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir \""Onda Mvel Elliott"\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de pontos de ancoragem da Onda Mvel Elliott

//| definir os valores padres estabelecidos para aqueles vazios

//+------------------------------------------------------------------+
void ChangeElliotWave5EmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2,
datetime &time3,double &price3,
datetime &time4,double &price4,
datetime &time5,double &price5)
{
//--- array para receber o tempo de abertura das ltimas 10 barras
datetime temp[];
ArrayResize(temp,10);
//--- receber dados
CopyTime(Symbol(),Period(),TimeCurrent(),10,temp);
//--- receber o valor de um ponto no grfico atual
double point=SymbolInfoDouble(Symbol(),SYMBOL_POINT);
//--- se o tempo do primeiro ponto no est definido, sero 9 barras a esquerda a partir da ltima
if(!time1)
time1=temp[0];
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- se o tempo do primeiro ponto no est definido, sero 7 barras a esquerda a partir da ltima
if(!time2)
time2=temp[2];

2000-2015, MetaQuotes Software Corp.

451

Constantes Padro, Enumeradores e Estruturas


//--- se o preo do primeiro ponto no est definido, mover 300 pontos a mais do que o segundo
if(!price2)
price2=price1-300*point;
//--- se o tempo do primeiro ponto no est definido, sero 5 barras a esquerda a partir da ltima
if(!time3)
time3=temp[4];
//--- se o preo do primeiro ponto no est definido, mover 250 pontos a mais do que o primeiro
if(!price3)
price3=price1-250*point;
//--- se o tempo do primeiro ponto no est definido, sero 3 barras a esquerda a partir da ltima
if(!time4)
time4=temp[6];
//--- se o preo do primeiro ponto no est definido, mover 550 pontos a mais do que o primeiro
if(!price4)
price4=price1-550*point;
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time5)
time5=temp[9];
//--- se o preo do primeiro ponto no est definido, mover 450 pontos a mais do que o primeiro
if(!price5)
price5=price1-450*point;
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100 ||
InpDate3<0 || InpDate3>100 || InpPrice3<0 || InpPrice3>100 ||
InpDate4<0 || InpDate4>100 || InpPrice4<0 || InpPrice4>100 ||
InpDate5<0 || InpDate5>100 || InpPrice5<0 || InpPrice5>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas

2000-2015, MetaQuotes Software Corp.

452

Constantes Padro, Enumeradores e Estruturas


ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar a Onda Mvel Elliott
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int d3=InpDate3*(bars-1)/100;
int d4=InpDate4*(bars-1)/100;
int d5=InpDate5*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
int p3=InpPrice3*(accuracy-1)/100;
int p4=InpPrice4*(accuracy-1)/100;
int p5=InpPrice5*(accuracy-1)/100;
//--- Criar Onda Mvel Elliott
if(!ElliotWave5Create(0,InpName,0,date[d1],price[p1],date[d2],price[p2],date[d3],price[p3],
date[d4],price[p4],date[d5],price[p5],InpDegree,InpDrawLines,InpColor,InpStyle,InpWidth,
InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem
//--- contador de loop
int v_steps=accuracy/5;
//--- mover o quinto ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p5<accuracy-1)
p5+=1;
//--- mover o ponto
if(!ElliotWave5PointChange(0,InpName,4,date[d5],price[p5]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())

2000-2015, MetaQuotes Software Corp.

453

Constantes Padro, Enumeradores e Estruturas


return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
v_steps=accuracy/5;
//--- mover o segundo e terceiro ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar os seguintes valores
if(p2<accuracy-1)
p2+=1;
if(p3>1)
p3-=1;
//--- deslocar os pontos
if(!ElliotWave5PointChange(0,InpName,1,date[d2],price[p2]))
return;
if(!ElliotWave5PointChange(0,InpName,2,date[d3],price[p3]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
v_steps=accuracy*4/5;
//--- mover o primeiro e quarto ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar os seguintes valores
if(p1>1)
p1-=1;
if(p4<accuracy-1)
p4+=1;
//--- deslocar os pontos
if(!ElliotWave5PointChange(0,InpName,0,date[d1],price[p1]))
return;
if(!ElliotWave5PointChange(0,InpName,3,date[d4],price[p4]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();

2000-2015, MetaQuotes Software Corp.

454

Constantes Padro, Enumeradores e Estruturas


}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a etiqueta do grfico
ElliotWave5Delete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

455

Constantes Padro, Enumeradores e Estruturas

OBJ_ELLIOTWAVE3
Correo Onda Elliott.

Observao
Para "Correo Onda Elliott", possvel habilitar/desabilitar o modo de pontos de conexo das linhas
(propriedade OBJPROP_DRAWLINES), bem como definir o nvel de posicionamento da onda (a partir
da enumerao ENUM_ELLIOT_WAVE_DEGREE).
Exemplo
O seguinte script cria e move a correo da onda Elliott no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha objeto grfico \"Correo da Onda Elliott\"."

#property description "Coordenadas dos pontos de ancoragem so definidos em percentagem da janela d


#property description "tamanho."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="ElliotWave3";

// Nome do objeto

input int

InpDate1=10;

// Data do 1 ponto, %

input int

InpPrice1=90;

// Preo do 1 ponto, %

input int

InpDate2=30;

// Data do 2 ponto, %

input int

InpPrice2=10;

// Preo do 2 ponto, %

input int

InpPrice2=10;

// Data do 3 ponto, %

2000-2015, MetaQuotes Software Corp.

456

Constantes Padro, Enumeradores e Estruturas


input int

InpPrice3=40;

// Preo do 3 ponto, %

input ENUM_ELLIOT_WAVE_DEGREE InpDegree=ELLIOTT_MINOR; // Nvel


input bool

InpDrawLines=true;

// Exibindo as linhas

input color

InpColor=clrRed;

// Cor das linhas

input ENUM_LINE_STYLE

InpStyle=STYLE_DASH;

// Estilo das linhas

input int

InpWidth=2;

// Largura das linha

input bool

InpBack=false;

// Objeto de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objetos

input long

InpZOrder=0;

// Prioridade para clique do mouse

//+------------------------------------------------------------------+
//| Criar "Correo da Onda Elliott" pelas coordenadas fornecidas

//+------------------------------------------------------------------+
bool ElliotWave3Create(const long

chart_ID=0,

// ID do grfico

const string

name="ElliotWave3",

// nome da onda

const int

sub_window=0,

// ndice da sub-jane

datetime

time1=0,

// primeiro ponto de

double

price1=0,

//primeiro ponto de p

datetime

time2=0,

// segundo ponto de t

double

price2=0,

// segundo ponto de p

datetime

time3=0,

// terceiro ponto de

double

price3=0,

// terceiro ponto de

const ENUM_ELLIOT_WAVE_DEGREE degree=ELLIOTT_MINUETTE, // grau


const bool

draw_lines=true,

// exibindo as linhas

const color

clr=clrRed,

// cor do objeto

const ENUM_LINE_STYLE

style=STYLE_SOLID,

// estilo das linhas

const int

width=1,

// largura das linhas

const bool

back=false,

// no fundo

const bool

selection=true,

// destacar para move

const bool

hidden=true,

// ocultar na lista d

const long

z_order=0)

// prioridade para cl

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeElliotWave3EmptyPoints(time1,price1,time2,price2,time3,price3);
//--- redefine o valor de erro
ResetLastError();
//--- Criar "Correo da Onda Elliott" pelas coordenadas fornecidas

if(!ObjectCreate(chart_ID,name,OBJ_ELLIOTWAVE3,sub_window,time1,price1,time2,price2,time3,price3
{
Print(__FUNCTION__,
": falha ao criar \""Correo da Onda Elliott"\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir grau (tamanho da onda)
ObjectSetInteger(chart_ID,name,OBJPROP_DEGREE,degree);
//--- habilitar (true) ou desabilitar (false) o modo de exibio das linhas
ObjectSetInteger(chart_ID,name,OBJPROP_DRAWLINES,draw_lines);
//--- definir cor do objeto
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

2000-2015, MetaQuotes Software Corp.

457

Constantes Padro, Enumeradores e Estruturas


//--- definir o estilo da linha
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura das linhas
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do canal
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Move o ponto de ancoragem de Correo da Elliott

//+------------------------------------------------------------------+
bool ElliotWave3PointChange(const long

chart_ID=0,

// ID do grfico

const string name="ElliotWave3", // nome do objeto


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de

double

price=0)

// coordenada do ponto de ancoragem de

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir Correo da Onda Elliott

//+------------------------------------------------------------------+
bool ElliotWave3Delete(const long

chart_ID=0,

// ID do grfico

2000-2015, MetaQuotes Software Corp.

458

Constantes Padro, Enumeradores e Estruturas


const string name="ElliotWave3") // nome do objeto
{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o objeto
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,

": falha ao excluir \""Correo da Onda Elliott"\"! Cdigo de erro = ",GetLastError());


return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de pontos de ancoragem da Correo Onda Elliott|
//| e os valores padro estabelecidos para os pontos vazios

//+------------------------------------------------------------------+
void ChangeElliotWave3EmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2,
datetime &time3,double &price3)
{
//--- array para receber o tempo de abertura das ltimas 10 barras
datetime temp[];
ArrayResize(temp,10);
//--- receber dados
CopyTime(Symbol(),Period(),TimeCurrent(),10,temp);
//--- receber o valor de um ponto no grfico atual
double point=SymbolInfoDouble(Symbol(),SYMBOL_POINT);
//--- se o tempo do primeiro ponto no est definido, sero 9 barras a esquerda a partir da ltima
if(!time1)
time1=temp[0];
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- se o tempo do primeiro ponto no est definido, sero 5 barras a esquerda a partir da ltima
if(!time2)
time2=temp[4];
//--- se o preo do primeiro ponto no est definido, mover 300 pontos a mais do que o segundo
if(!price2)
price2=price1-300*point;
//--- se o tempo do primeiro ponto no est definido, ser uma barra a esquerda a partir da ltima
if(!time3)
time3=temp[8];
//--- se o preo do primeiro ponto no est definido, mover 200 pontos a mais do que o primeiro
if(!price3)
price3=price1-200*point;
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

459

Constantes Padro, Enumeradores e Estruturas


//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100 ||
InpDate3<0 || InpDate3>100 || InpPrice3<0 || InpPrice3>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar a Correo da Onda Elliott
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int d3=InpDate3*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
int p3=InpPrice3*(accuracy-1)/100;
//--- Criar Correo da Onda Elliott
if(!ElliotWave3Create(0,InpName,0,date[d1],price[p1],date[d2],price[p2],date[d3],price[p3],
InpDegree,InpDrawLines,InpColor,InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{

2000-2015, MetaQuotes Software Corp.

460

Constantes Padro, Enumeradores e Estruturas


return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem
//--- contador de loop
int v_steps=accuracy/5;
//--- mover o terceiro ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p3<accuracy-1)
p3+=1;
//--- mover o ponto
if(!ElliotWave3PointChange(0,InpName,2,date[d3],price[p3]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
v_steps=accuracy*4/5;
//--- movimentar o primeiro e segundo ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar os seguintes valores
if(p1>1)
p1-=1;
if(p2<accuracy-1)
p2+=1;
//--- deslocar os pontos
if(!ElliotWave3PointChange(0,InpName,0,date[d1],price[p1]))
return;
if(!ElliotWave3PointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a etiqueta do grfico

2000-2015, MetaQuotes Software Corp.

461

Constantes Padro, Enumeradores e Estruturas


ElliotWave3Delete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

462

Constantes Padro, Enumeradores e Estruturas

OBJ_RECTANGLE
Retngulo.

Observao
Para retngulo, o modo de preenchimento com a cor pode ser definida usando a propriedade
OBJPROP_FILL.
Exemplo
O seguinte script cria e move o retngulo no grfico. Funes especiais tm sido desenvolvidas para
criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em seus
prprios aplicativos.

//--- descrio
#property description "Script cria o retngulo no grfico."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "porcentagem do tamanho da janela de grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Rectangle"; // Nome do retngulo

input int

InpDate1=40;

// Data do 1 ponto, %

input int

InpPrice1=40;

// Preo do 1 ponto, %

input int

InpDate2=60;

// Data do 2 ponto, %

input int

InpPrice2=60;

// Preo do 2 ponto, %

input color

InpColor=clrRed;

// Cor do retngulo

input ENUM_LINE_STYLE InpStyle=STYLE_DASH; // Estilo das linhas do retngulo

2000-2015, MetaQuotes Software Corp.

463

Constantes Padro, Enumeradores e Estruturas


input int

InpWidth=2;

// Largura das linhas do retngulo

input bool

InpFill=true;

// Preenchendo o retngulo com cor

input bool

InpBack=false;

// Retngulo de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar retngulo pelas coordenadas fornecidas

//+------------------------------------------------------------------+
bool RectangleCreate(const long

chart_ID=0,

// ID do grfico

const string

name="Rectangle",

// nome do retngulo

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

const color

clr=clrRed,

// cor do retngulo

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo das linhas do retngulo


const int

width=1,

// largura das linhas do retngulo

const bool

fill=false,

// preenchimento do retngulo com cor

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeRectangleEmptyPoints(time1,price1,time2,price2);
//--- redefine o valor de erro
ResetLastError();
//--- criar um retngulo pelas coordenadas dadas
if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": falha ao criar um retngulo! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir a cor do retngulo
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de linhas do retngulo
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura das linhas do retngulo
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento do retngulo
ObjectSetInteger(chart_ID,name,OBJPROP_FILL,fill);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de destaque para mover o retngulo
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo

2000-2015, MetaQuotes Software Corp.

464

Constantes Padro, Enumeradores e Estruturas


//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem do retngulo

//+------------------------------------------------------------------+
bool RectanglePointChange(const long

chart_ID=0,

// ID do grfico

const string name="Rectangle", // nome do retngulo


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de tem

double

price=0)

// coordenada do ponto de ancoragem de pre

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir o retngulo

//+------------------------------------------------------------------+
bool RectangleDelete(const long

chart_ID=0,

// ID do grfico

const string name="Rectangle") // nome do retngulo


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o retngulo
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o retngulo! Cdigo de erro = ",GetLastError());

2000-2015, MetaQuotes Software Corp.

465

Constantes Padro, Enumeradores e Estruturas


return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Ver valores pontos de ancoragem do retngulo e definir

//| valores padro para aqueles vazios

//+------------------------------------------------------------------+
void ChangeRectangleEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time1)
time1=TimeCurrent();
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do segundo ponto no est definido, est localizado a 9 barras deixadas a partir d
if(!time2)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time1,10,temp);
//--- definir o segundo ponto 9 barras a esquerda do primeiro
time2=temp[0];
}
//--- se o preo do primeiro ponto no est definido, mover 300 pontos a mais do que o segundo
if(!price2)
price2=price1-300*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem do retngulo

2000-2015, MetaQuotes Software Corp.

466

Constantes Padro, Enumeradores e Estruturas


datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir pontos para desenhar o retngulo
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
//--- criar o retngulo
if(!RectangleCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],InpColor,
InpStyle,InpWidth,InpFill,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem do retngulo
//--- contador de loop
int h_steps=bars/2;
//--- mover os pontos de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar os seguintes valores
if(d1<bars-1)
d1+=1;
if(d2>1)
d2-=1;
//--- deslocar os pontos
if(!RectanglePointChange(0,InpName,0,date[d1],price[p1]))
return;
if(!RectanglePointChange(0,InpName,1,date[d2],price[p2]))

2000-2015, MetaQuotes Software Corp.

467

Constantes Padro, Enumeradores e Estruturas


return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
int v_steps=accuracy/2;
//--- mover os pontos de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar os seguintes valores
if(p1<accuracy-1)
p1+=1;
if(p2>1)
p2-=1;
//--- deslocar os pontos
if(!RectanglePointChange(0,InpName,0,date[d1],price[p1]))
return;
if(!RectanglePointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir o retngulo do grfico
RectangleDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

468

Constantes Padro, Enumeradores e Estruturas

OBJ_TRIANGLE
Tringulo.

Observao
Para tringulo, o modo de preenchimento com pode ser definido usando a propriedade
OBJPROP_FILL.
Exemplo
O seguinte script cria e movimenta o tringulo no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.

//--- descrio
#property description "Script cria o tringulo no grfico."
#property description "Coordenadas de ponto de ancoragem so definidas em porcentagem de"
#property description "porcentagem do tamanho da janela de grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Triangle";

// Nome do tringulo

input int

InpDate1=25;

// Data do 1 ponto, %

input int

InpPrice1=50;

// Preo do 1 ponto, %

input int

InpDate2=70;

// Data do 2 ponto, %

input int

InpPrice2=70;

// Preo do 2 ponto, %

input int

InpDate3=65;

// Data do 3 ponto, %

input int

InpPrice3=20;

// Preo do 3 ponto, %

2000-2015, MetaQuotes Software Corp.

469

Constantes Padro, Enumeradores e Estruturas


input color

InpColor=clrRed;

// Cor do tringulo

input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo das linhas triangulo


input int

InpWidth=2;

// Largura das linhas do tringulo

input bool

InpFill=false;

// Preenchendo tringulos com cor

input bool

InpBack=false;

// Tringulo de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar tringulo pelas coordenadas determinadas

//+------------------------------------------------------------------+
bool TriangleCreate(const long

chart_ID=0,

// ID do grfico

const string

name="Triangle",

// nome do tringulo

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

datetime

time3=0,

// terceiro ponto de tempo

double

price3=0,

// terceiro ponto de preo

const color

clr=clrRed,

// cor do tringulo

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo das linhas do tringulo


const int

width=1,

// largura das linhas do tringulo

const bool

fill=false,

// preenchendo tringulo com cor

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para o clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeTriangleEmptyPoints(time1,price1,time2,price2,time3,price3);
//--- redefine o valor de erro
ResetLastError();
//--- criar tringulo pelas coordenadas determinadas
if(!ObjectCreate(chart_ID,name,OBJ_TRIANGLE,sub_window,time1,price1,time2,price2,time3,price3))
{
Print(__FUNCTION__,
": falha ao criar tringulo! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir a cor do tringulo
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo das linhas do tringulo
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da linha dos tringulos
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- habilitar (true) ou desabilitar (false) o modo de preencher o tringulo
ObjectSetInteger(chart_ID,name,OBJPROP_FILL,fill);
//--- exibir em primeiro plano (false) ou fundo (true)

2000-2015, MetaQuotes Software Corp.

470

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de destacar o tringulo para mover
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover a ponto de ancoragem do tringulo

//+------------------------------------------------------------------+
bool TrianglePointChange(const long

chart_ID=0,

// ID do grafico

const string name="Triangle", // nome do tringulo


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem de preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir o tringulo

//+------------------------------------------------------------------+
bool TriangleDelete(const long

chart_ID=0,

// ID do grfico

const string name="Triangle") // nome do tringulo


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o tringulo

2000-2015, MetaQuotes Software Corp.

471

Constantes Padro, Enumeradores e Estruturas


if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao deletar o tringulo! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Confira valores dos pontos de ancoragem do tringulo

//| e definir padro valores padro para aqueles vazios

//+------------------------------------------------------------------+
void ChangeTriangleEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2,
datetime &time3,double &price3)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time1)
time1=TimeCurrent();
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do segundo ponto no est definido, est localizado a 9 barras deixadas a partir d
if(!time2)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time1,10,temp);
//--- definir o segundo ponto 9 barras a esquerda do primeiro
time2=temp[0];
}
//--- se o preo do primeiro ponto no est definido, mover 300 pontos a mais do que o segundo
if(!price2)
price2=price1-300*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
//--- se o tempo do terceiro ponto no est definido,ele coincide com o tempo do segundo ponto
if(!time3)
time3=time2;
//--- se o preo do terceiro ponto no est definido, igual aquele do primeiro ponto
if(!price3)
price3=price1;
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||

2000-2015, MetaQuotes Software Corp.

472

Constantes Padro, Enumeradores e Estruturas


InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100 ||
InpDate3<0 || InpDate3>100 || InpPrice3<0 || InpPrice3>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas dos pontos de ancoragem do tringulo
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar o tringulo
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int d3=InpDate3*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
int p3=InpPrice3*(accuracy-1)/100;
//--- criar um tringulo
if(!TriangleCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],date[d3],price[p3],
InpColor,InpStyle,InpWidth,InpFill,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem da elipse

2000-2015, MetaQuotes Software Corp.

473

Constantes Padro, Enumeradores e Estruturas


//--- contador de loop
int v_steps=accuracy*3/10;
//--- mover o primeiro ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p1>1)
p1-=1;
//--- mover o ponto
if(!TrianglePointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
int h_steps=bars*9/20-1;
//--- mover o segundo ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d2>1)
d2-=1;
//--- mover o ponto
if(!TrianglePointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
v_steps=accuracy/4;
//--- mover o terceiro ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p3<accuracy-1)
p3+=1;
//--- mover o ponto

2000-2015, MetaQuotes Software Corp.

474

Constantes Padro, Enumeradores e Estruturas


if(!TrianglePointChange(0,InpName,2,date[d3],price[p3]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir tringulo do grfico
TriangleDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

475

Constantes Padro, Enumeradores e Estruturas

OBJ_ELLIPSE
Elipse.

Observao
Para elipse, o modo de preenchimento com a cor pode ser definida usando a propriedade
OBJPROP_FILL.
Exemplo
O seguinte script cria e move a Elipse no grfico. Funes especiais tm sido desenvolvidas para
criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em seus
prprios aplicativos.
//--- descrio
#property description "Script cria a Elipse no grfico."
#property description "Coordenadas dos pontos de ancoragem so definidas"
#property description "em porcentagem do tamanho da janela de grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Ellipse";

// Nome da elipse

input int

InpDate1=30;

// Data do 1 ponto, %

input int

InpPrice1=20;

// Preo do 1 ponto, %

input int

InpDate2=70;

// Data do 2 ponto, %

input int

InpPrice2=80;

// Preo do 2 ponto, %

input int

InpDate3=50;

// Data do 3 ponto, %

input int

InpPrice3=60;

// Preo do 3 ponto, %

input color

InpColor=clrRed;

// Cor da elipse

2000-2015, MetaQuotes Software Corp.

476

Constantes Padro, Enumeradores e Estruturas


input ENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Estilo de linhas da elipse
input int

InpWidth=2;

// Largura das linhas da elipse

input bool

InpFill=false;

// Preenchendo elipse com cor

input bool

InpBack=false;

// Elipse de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar uma elipse pelas coordenadas fornecidas

//+------------------------------------------------------------------+
bool EllipseCreate(const long

chart_ID=0,

// ID de grfico

const string

name="Ellipse",

// nome da elipse

const int

sub_window=0,

// ndice da sub-janela

datetime

time1=0,

// primeiro ponto de tempo

double

price1=0,

// primeiro ponto de preo

datetime

time2=0,

// segundo ponto de tempo

double

price2=0,

// segundo ponto de preo

datetime

time3=0,

// terceiro ponto de tempo

double

price3=0,

// terceiro ponto de preo

const color

clr=clrRed,

// cor da elipse

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo das linhas da elipse


const int

width=1,

// largura das linhas da elipse

const bool

fill=false,

// preenchimento da elipse com cor

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- definir coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeEllipseEmptyPoints(time1,price1,time2,price2,time3,price3);
//--- redefine o valor de erro
ResetLastError();
//--- criar uma elipse pelas coordenadas fornecidas
if(!ObjectCreate(chart_ID,name,OBJ_ELLIPSE,sub_window,time1,price1,time2,price2,time3,price3))
{
Print(__FUNCTION__,
": falha ao criar uma elipse! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir uma cor de elipse
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de linhas da elipse
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura das linhas da elipse
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- habilitar (true) ou desabilitar (false) o modo de preenchimento da elipse
ObjectSetInteger(chart_ID,name,OBJPROP_FILL,fill);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

2000-2015, MetaQuotes Software Corp.

477

Constantes Padro, Enumeradores e Estruturas


//--- habilitar (true) ou desabilitar (false) o modo de destaque para mover a elipse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem da elipse

//+------------------------------------------------------------------+
bool EllipsePointChange(const long

chart_ID=0,

// ID do grfico

const string name="Ellipse", // nome da elipse


const int

point_index=0,

// ndice do ponto de ancoragem

datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem do preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir elipse

//+------------------------------------------------------------------+
bool EllipseDelete(const long

chart_ID=0,

// ID do grfico

const string name="Ellipse") // nome da elipse


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir uma elipse
if(!ObjectDelete(chart_ID,name))

2000-2015, MetaQuotes Software Corp.

478

Constantes Padro, Enumeradores e Estruturas


{
Print(__FUNCTION__,
": falha ao excluir uma elipse! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Ver valores de pontos ncora da elipse e definir valores padres|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeEllipseEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2,
datetime &time3,double &price3)
{
//--- se o tempo do primeiro ponto no est definido, ser na barra atual
if(!time1)
time1=TimeCurrent();
//--- se o preo do primeiro ponto no est definido, ele ter valor Bid
if(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- se o tempo do segundo ponto no est definido, est localizado a 9 barras deixadas a partir d
if(!time2)
{
//--- array para receber o tempo de abertura das ltimos 10 barras
datetime temp[10];
CopyTime(Symbol(),Period(),time1,10,temp);
//--- definir o segundo ponto 9 barras a esquerda do primeiro
time2=temp[0];
}
//--- se o preo do primeiro ponto no est definido, mover 300 pontos a mais do que o segundo
if(!price2)
price2=price1-300*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
//--- se o tempo do terceiro ponto no est definido,ele coincide com o tempo do segundo ponto
if(!time3)
time3=time2;
//--- se o preo do terceiro ponto no est definido, igual aquele do primeiro ponto
if(!price3)
price3=price1;
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100 ||

2000-2015, MetaQuotes Software Corp.

479

Constantes Padro, Enumeradores e Estruturas


InpDate3<0 || InpDate3>100 || InpPrice3<0 || InpPrice3>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar as coordenadas de pontos de ancoragem da elipse
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir pontos para desenhar a elipse
int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int d3=InpDate3*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
int p3=InpPrice3*(accuracy-1)/100;
//--- criar uma elipse
if(!EllipseCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],date[d3],price[p3],
InpColor,InpStyle,InpWidth,InpFill,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover os pontos de ancoragem da elipse
//--- contador de loop

2000-2015, MetaQuotes Software Corp.

480

Constantes Padro, Enumeradores e Estruturas


int v_steps=accuracy/5;
//--- movimentar o primeiro e segundo ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar os seguintes valores
if(p1<accuracy-1)
p1+=1;
if(p2>1)
p2-=1;
//--- deslocar os pontos
if(!EllipsePointChange(0,InpName,0,date[d1],price[p1]))
return;
if(!EllipsePointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
int h_steps=bars/5;
//--- mover o terceiro ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d3>1)
d3-=1;
//--- mover o ponto
if(!EllipsePointChange(0,InpName,2,date[d3],price[p3]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir elipse a partir do grfico
EllipseDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//---

2000-2015, MetaQuotes Software Corp.

481

Constantes Padro, Enumeradores e Estruturas


}

2000-2015, MetaQuotes Software Corp.

482

Constantes Padro, Enumeradores e Estruturas

OBJ_ARROW_THUMB_UP
Sinal Thumbs Up.

Observao
Posio do ponto de ancoragem relativa ao sinal pode ser selecionado a partir do enumerador
ENUM_ARROW_ANCHOR.
Sinais de grande porte (mais de 5) somente sero criados, definindo corretamente o valor da
propriedade OBJPROP_WIDTH ao escrever um cdigo no MetaEditor.
Exemplo
O seguinte script cria e move sinal Thumbs Up no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.

//--- descrio
#property description "Script desenha sinal \"Thumbs Up\"."
#property description "Coordenadas do ponto de ancoragem configurado em porcentagem do"
#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="ThumbUp";

// Nome do sinal

input int

InpDate=75;

// Ponto de ancoragem da data em %

input int

InpPrice=25;

// Ponto de ancoragem do preo em %

input ENUM_ARROW_ANCHOR InpAnchor=ANCHOR_TOP; // Tipo de ancoragem


input color

InpColor=clrRed;

// Cor do sinal

2000-2015, MetaQuotes Software Corp.

483

Constantes Padro, Enumeradores e Estruturas


input ENUM_LINE_STYLE

InpStyle=STYLE_DOT;

// Estilo da linha da borda

input int

InpWidth=5;

// Tamanho do sinal

input bool

InpBack=false;

// Sinal do fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objetos

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar sinal Thumbs Up

//+------------------------------------------------------------------+
bool ArrowThumbUpCreate(const long

chart_ID=0,

// ID do grfico

const string

name="ThumbUp",

// nome do sinal

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// ponto de ancoragem do temp

double

price=0,

// ponto de ancoragem do pre

const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // tipo de ancoragem


const color

clr=clrRed,

// cor do sinal

const ENUM_LINE_STYLE

style=STYLE_SOLID,

// estilo de linha da borda

const int

width=3,

// tamanho do sinal

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objeto

const long

z_order=0)

// prioridade para clicar no

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeArrowEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar o sinal
if(!ObjectCreate(chart_ID,name,OBJ_ARROW_THUMB_UP,sub_window,time,price))
{
Print(__FUNCTION__,
": falha ao criar sinal \"Thumbs Up\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- tipo de definio de ancoragem
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- definir uma cor de sinal
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha da borda
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- tamanho da definio do sinal
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- permitir (true) ou desabilitar (false) o modo de movimento do sinal com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);

2000-2015, MetaQuotes Software Corp.

484

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool ArrowThumbUpMove(const long

chart_ID=0,

// ID do grfico

const string name="ThumbUp", // nome do objeto


datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem do preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar tipo de ancoragem do sinal Thumbs Up

//+------------------------------------------------------------------+
bool ArrowThumbUpAnchorChange(const long
const string

chart_ID=0,

// ID do Grfico

name="ThumbUp",

// nome do objeto

const ENUM_ARROW_ANCHOR anchor=ANCHOR_TOP) // tipo de ancoragem


{
//--- redefine o valor de erro
ResetLastError();
//--- alterar tipo de ancoragem
if(!ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor))
{
Print(__FUNCTION__,
": falha para alterar o tipo de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}

2000-2015, MetaQuotes Software Corp.

485

Constantes Padro, Enumeradores e Estruturas


//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir sinal Thumbs Up

//+------------------------------------------------------------------+
bool ArrowThumbUpDelete(const long

chart_ID=0,

// ID do grfico

const string name="ThumbUp") // nome do sinal


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o sinal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o sinal \"Thumbs Up\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeArrowEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();
//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate<0 || InpDate>100 || InpPrice<0 || InpPrice>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;

2000-2015, MetaQuotes Software Corp.

486

Constantes Padro, Enumeradores e Estruturas


//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar sinal das coordenadas do ponto de ancoragem
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar o sinal
int d=InpDate*(bars-1)/100;
int p=InpPrice*(accuracy-1)/100;
//--- criar sinal Thumbs Up no grfico
if(!ArrowThumbUpCreate(0,InpName,0,date[d],price[p],InpAnchor,InpColor,
InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover o ponto de ancoragem e alterar sua posio em relao ao sinal
//--- contador de loop
int h_steps=bars/4;
//--- mover o ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d>1)
d-=1;
//--- mover o ponto
if(!ArrowThumbUpMove(0,InpName,date[d],price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;

2000-2015, MetaQuotes Software Corp.

487

Constantes Padro, Enumeradores e Estruturas


//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
int v_steps=accuracy/4;
//--- mover o ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p<accuracy-1)
p+=1;
//--- mover o ponto
if(!ArrowThumbUpMove(0,InpName,date[d],price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- alterar a localizao do ponto de ancoragem relativa ao sinal
ArrowThumbUpAnchorChange(0,InpName,ANCHOR_BOTTOM);
//--- redesenhar o grfico
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--- deletar o sinal do grfico
ArrowThumbUpDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

488

Constantes Padro, Enumeradores e Estruturas

OBJ_ARROW_THUMB_DOWN
Sinal Thumbs Down.

Observao
Posio do ponto de ancoragem relativa ao sinal pode ser selecionado a partir do enumerador
ENUM_ARROW_ANCHOR.
Sinais de grande porte (mais de 5) somente sero criados, definindo corretamente o valor da
propriedade OBJPROP_WIDTH ao escrever um cdigo no MetaEditor.
Exemplo
O seguinte script cria e move o sinal Thumbs Down no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script desenha sinal \"Thumbs Down\"."
#property description "Coordenadas do ponto de ancoragem configurado em porcentagem do"
#property description "tamanho da janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="ThumbDown";

// nome do sinal

input int

InpDate=25;

// Ponto de ancoragem da data em %

input int

InpPrice=75;

// Ponto de ancoragem do preo em %

input ENUM_ARROW_ANCHOR InpAnchor=ANCHOR_BOTTOM; // Tipo de ancoragem

2000-2015, MetaQuotes Software Corp.

489

Constantes Padro, Enumeradores e Estruturas


input color

InpColor=clrRed;

// Cor do sinal

input ENUM_LINE_STYLE

InpStyle=STYLE_DOT;

// Estilo de linha da borda

input int

InpWidth=5;

// Tamanho do Sinal

input bool

InpBack=false;

// Fundo do sinal

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objetos

input long

InpZOrder=0;

// Prioridade para clique do mouse

//+------------------------------------------------------------------+
//| Criar sinal Thumbs Down

//+------------------------------------------------------------------+
bool ArrowThumbDownCreate(const long

chart_ID=0,

// ID do grfico

name="ThumbDown",

// nome do sinal

const int

sub_window=0,

// ndice de sub-janela

datetime

time=0,

// ponto de ancoragem do te

double

price=0,

// ponto de ancoragem do pr

const string

const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // tipo de ancoragem


const color

clr=clrRed,

// cor do sinal

const ENUM_LINE_STYLE

style=STYLE_SOLID,

// estilo de linha da borda

const int

width=3,

// tamanho do sinal

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de obje

const long

z_order=0)

// prioridade para clicar n

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeArrowEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar o sinal
if(!ObjectCreate(chart_ID,name,OBJ_ARROW_THUMB_DOWN,sub_window,time,price))
{
Print(__FUNCTION__,
": falha ao criar sinal \"Thumbs Down\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- tipo de definio de ancoragem
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- definir uma cor de sinal
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha da borda
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- tamanho da definio do sinal
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- permitir (true) ou desabilitar (false) o modo de movimento do sinal com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto

2000-2015, MetaQuotes Software Corp.

490

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool ArrowThumbDownMove(const long

chart_ID=0,

// ID do grfico

const string name="ThumbDown", // nome do objeto


datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem de tempo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar tipo de ancoragem do sinal Thumbs Down

//+------------------------------------------------------------------+
bool ArrowThumbDownAnchorChange(const long
const string

chart_ID=0,

// ID do grfico

name="ThumbDown",

// nome do objeto

const ENUM_ARROW_ANCHOR anchor=ANCHOR_TOP) // tipo de ancoragem


{
//--- redefine o valor de erro
ResetLastError();
//--- alterar tipo de ancoragem
if(!ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor))
{
Print(__FUNCTION__,
": falha para alterar o tipo de ancoragem! Cdigo de erro = ",GetLastError());
return(false);

2000-2015, MetaQuotes Software Corp.

491

Constantes Padro, Enumeradores e Estruturas


}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir sinal Thumbs Down

//+------------------------------------------------------------------+
bool ArrowThumbDownDelete(const long

chart_ID=0,

// ID do grfico

const string name="ThumbDown") // nome do sinal


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o sinal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o sinal \"Thumbs Down\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeArrowEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();
//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate<0 || InpDate>100 || InpPrice<0 || InpPrice>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo

2000-2015, MetaQuotes Software Corp.

492

Constantes Padro, Enumeradores e Estruturas


int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar sinal das coordenadas do ponto de ancoragem
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar o sinal
int d=InpDate*(bars-1)/100;
int p=InpPrice*(accuracy-1)/100;
//--- criar sinal Thumbs Down no grfico
if(!ArrowThumbDownCreate(0,InpName,0,date[d],price[p],InpAnchor,InpColor,
InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover o ponto de ancoragem e alterar sua posio em relao ao sinal
//--- contador de loop
int h_steps=bars/4;
//--- mover o ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d<bars-1)
d+=1;
//--- mover o ponto
if(!ArrowThumbDownMove(0,InpName,date[d],price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())

2000-2015, MetaQuotes Software Corp.

493

Constantes Padro, Enumeradores e Estruturas


return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- contador de loop
int v_steps=accuracy/4;
//--- mover o ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p>1)
p-=1;
//--- mover o ponto
if(!ArrowThumbDownMove(0,InpName,date[d],price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- alterar a localizao do ponto de ancoragem relativa ao sinal
ArrowThumbDownAnchorChange(0,InpName,ANCHOR_TOP);
//--- redesenhar o grfico
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--- deletar o sinal do grfico
ArrowThumbDownDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

494

Constantes Padro, Enumeradores e Estruturas

OBJ_ARROW_UP
Sinal Arrow Up.

Observao
Posio do ponto de ancoragem relativa ao sinal pode ser selecionado a partir do enumerador
ENUM_ARROW_ANCHOR.
Sinais de grande porte (mais de 5) somente sero criados, definindo corretamente o valor da
propriedade OBJPROP_WIDTH ao escrever um cdigo no MetaEditor.
Exemplo
O seguinte script cria e move sinal Arrow Up no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.

//--- descrio
#property description "Script desenha sinal \"Arrow Up\"."
#property description "Coordenadas do ponto de ancoragem definido em"
#property description "porcentagem do tamanho da janela de grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="ArrowUp";

// Nome do sinal

input int

InpDate=25;

// Ponto de ancoragem da data em %

input int

InpPrice=25;

// Ponto de ancoragem do preo em %

input ENUM_ARROW_ANCHOR InpAnchor=ANCHOR_TOP; // Tipo de ancoragem


input color

InpColor=clrRed;

// Cor do sinal

2000-2015, MetaQuotes Software Corp.

495

Constantes Padro, Enumeradores e Estruturas


input ENUM_LINE_STYLE

InpStyle=STYLE_DOT;

// Estilo da linha da borda

input int

InpWidth=5;

// Tamanho do sinal

input bool

InpBack=false;

// Sinal do fundo

input bool

InpSelection=false;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objetos

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar sinal Arrow Up

//+------------------------------------------------------------------+
bool ArrowUpCreate(const long

chart_ID=0,

// ID do grfico

const string

name="ArrowUp",

// nome do sinal

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// ponto de ancoragem do tempo

double

price=0,

// ponto de ancoragem do preo

const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // tipo de ancoragem


const color

clr=clrRed,

// cor do sinal

const ENUM_LINE_STYLE

style=STYLE_SOLID,

// estilo de linha da borda

const int

width=3,

// tamanho do sinal

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clicar no mouse

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeArrowEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar o sinal
if(!ObjectCreate(chart_ID,name,OBJ_ARROW_UP,sub_window,time,price))
{
Print(__FUNCTION__,
": falha ao criar o sinal \"Arrow Up\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- tipo de definio de ancoragem
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- definir uma cor de sinal
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha da borda
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- tamanho da definio do sinal
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- permitir (true) ou desabilitar (false) o modo de movimento do sinal com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);

2000-2015, MetaQuotes Software Corp.

496

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool ArrowUpMove(const long

chart_ID=0,

// ID do grfico

const string name="ArrowUp", // nome do objeto


datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem de preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o tipo de ancoragem do sinal Arrow Down

//+------------------------------------------------------------------+
bool ArrowUpAnchorChange(const long
const string

chart_ID=0,

// ID do grfico

name="ArrowUp",

// nome do objeto

const ENUM_ARROW_ANCHOR anchor=ANCHOR_TOP) // tipo de ancoragem


{
//--- redefine o valor de erro
ResetLastError();
//--- alterar a ancoragem do ponto de locao
if(!ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor))
{
Print(__FUNCTION__,
": falha para alterar o tipo de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}

2000-2015, MetaQuotes Software Corp.

497

Constantes Padro, Enumeradores e Estruturas


//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir sinal Arrow Up

//+------------------------------------------------------------------+
bool ArrowUpDelete(const long

chart_ID=0,

// ID do grfico

const string name="ArrowUp") // nome sinal


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o sinal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o sinal \"Arrow Up\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeArrowEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();
//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate<0 || InpDate>100 || InpPrice<0 || InpPrice>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;

2000-2015, MetaQuotes Software Corp.

498

Constantes Padro, Enumeradores e Estruturas


//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar sinal das coordenadas do ponto de ancoragem
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar o sinal
int d=InpDate*(bars-1)/100;
int p=InpPrice*(accuracy-1)/100;
//--- criar sinal Arrow Up no grfico
if(!ArrowUpCreate(0,InpName,0,date[d],price[p],InpAnchor,InpColor,
InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover o ponto de ancoragem e alterar sua posio em relao ao sinal
//--- contador de loop
int v_steps=accuracy/2;
//--- mover o ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p<accuracy-1)
p+=1;
//--- mover o ponto
if(!ArrowUpMove(0,InpName,date[d],price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;

2000-2015, MetaQuotes Software Corp.

499

Constantes Padro, Enumeradores e Estruturas


//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- alterar a localizao do ponto de ancoragem relativa ao sinal
ArrowUpAnchorChange(0,InpName,ANCHOR_BOTTOM);
//--- redesenhar o grfico
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--- deletar o sinal do grfico
ArrowUpDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

500

Constantes Padro, Enumeradores e Estruturas

OBJ_ARROW_DOWN
Sinal Arrow Down.

Observao
Posio do ponto de ancoragem relativa ao sinal pode ser selecionado a partir do enumerador
ENUM_ARROW_ANCHOR.
Sinais de grande porte (mais de 5) somente sero criados, definindo corretamente o valor da
propriedade OBJPROP_WIDTH ao escrever um cdigo no MetaEditor.
Exemplo
O seguinte script cria e move sinal Arrow Down no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.
//--- descrio
#property description "Script desenha sinal \"Arrow Down\"."
#property description "Coordenadas do ponto de ancoragem definido em"
#property description "porcentagem do tamanho da janela de grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="ArrowDown";

// Nome do Sinal

input int

InpDate=75;

// Ponto de ancoragem da data em %

input int

InpPrice=75;

// Ponto de ancoragem do preo em %

input ENUM_ARROW_ANCHOR InpAnchor=ANCHOR_BOTTOM; // Tipo de Ancoragem


input color

InpColor=clrRed;

// Cor do sinal

input ENUM_LINE_STYLE

InpStyle=STYLE_DOT;

// Estilo de linha da borda

2000-2015, MetaQuotes Software Corp.

501

Constantes Padro, Enumeradores e Estruturas


input int

InpWidth=5;

// Tamanho do Sinal

input bool

InpBack=false;

// Fundo do sinal

input bool

InpSelection=false;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objetos

input long

InpZOrder=0;

// Prioridade para clique do mouse

//+------------------------------------------------------------------+
//| Criar sinal Arrow Down

//+------------------------------------------------------------------+
bool ArrowDownCreate(const long

chart_ID=0,

// ID do grfico

name="ArrowDown",

// nome do sinal

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// ponto de ancoragem do tempo

double

price=0,

// ponto de ancoragem do preo

const string

const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // tipo de ancoragem


const color

clr=clrRed,

// cor do sinal

const ENUM_LINE_STYLE

style=STYLE_SOLID,

// estilo da linha da borda

const int

width=3,

// tamanho do sinal

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// Ocultar na lista de objetos

const long

z_order=0)

// prioridade para clicar no mou

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeArrowEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar o sinal
if(!ObjectCreate(chart_ID,name,OBJ_ARROW_DOWN,sub_window,time,price))
{
Print(__FUNCTION__,
": falha ao criar o sinal \"Arrow Down\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- tipo de ancoragem
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- definir uma cor de sinal
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha da borda
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- tamanho da definio do sinal
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- permitir (true) ou desabilitar (false) o modo de movimento do sinal com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

2000-2015, MetaQuotes Software Corp.

502

Constantes Padro, Enumeradores e Estruturas


//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool ArrowDownMove(const long

chart_ID=0,

// ID do grfico

const string name="ArrowDown", // nome do objeto


datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem de preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o tipo de ancoragem do sinal Arrow Down

//+------------------------------------------------------------------+
bool ArrowDownAnchorChange(const long
const string

chart_ID=0,

// ID do grfico

name="ArrowDown",

// nome do objeto

const ENUM_ARROW_ANCHOR anchor=ANCHOR_TOP) // tipo de ancoragem


{
//--- redefine o valor de erro
ResetLastError();
//--- alterar a ancoragem do ponto de locao
if(!ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor))
{
Print(__FUNCTION__,
": falha para alterar o tipo de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo

2000-2015, MetaQuotes Software Corp.

503

Constantes Padro, Enumeradores e Estruturas


return(true);
}
//+------------------------------------------------------------------+
//| Excluir sinal Arrow Down

//+------------------------------------------------------------------+
bool ArrowDownDelete(const long

chart_ID=0,

// ID do grfico

const string name="ArrowDown") // nome do sinal


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o sinal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o sinal\"Arrow Down\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeArrowEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();
//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate<0 || InpDate>100 || InpPrice<0 || InpPrice>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados

2000-2015, MetaQuotes Software Corp.

504

Constantes Padro, Enumeradores e Estruturas


//--- para definir e alterar sinal das coordenadas do ponto de ancoragem
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar o sinal
int d=InpDate*(bars-1)/100;
int p=InpPrice*(accuracy-1)/100;
//--- criar o sinal Arrow Down no grfico
if(!ArrowDownCreate(0,InpName,0,date[d],price[p],InpAnchor,InpColor,
InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover o ponto de ancoragem e alterar sua posio em relao ao sinal
//--- contador de loop
int v_steps=accuracy/2;
//--- mover o ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p>1)
p-=1;
//--- mover o ponto
if(!ArrowDownMove(0,InpName,date[d],price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico

2000-2015, MetaQuotes Software Corp.

505

Constantes Padro, Enumeradores e Estruturas


ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- alterar a localizao do ponto de ancoragem relativa ao sinal
ArrowDownAnchorChange(0,InpName,ANCHOR_TOP);
//--- redesenhar o grfico
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--- deletar o sinal do grfico
ArrowDownDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

506

Constantes Padro, Enumeradores e Estruturas

OBJ_ARROW_STOP
Sinal Stop.

Observao
Posio do ponto de ancoragem relativa ao sinal pode ser selecionado a partir do enumerador
ENUM_ARROW_ANCHOR.
Sinais de grande porte (mais de 5) somente sero criados, definindo corretamente o valor da
propriedade OBJPROP_WIDTH ao escrever um cdigo no MetaEditor.
Exemplo
O seguinte script cria e move sinal Stop no grfico. Funes especiais tm sido desenvolvidas para
criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em seus
prprios aplicativos.

//--- descrio
#property description "Script desenha sinal\"Stop\"."
#property description "Coordenadas do ponto de ancoragem definido em"
#property description "porcentagem do tamanho da janela de grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="ArrowStop";

// Nome do sinal

input int

InpDate=10;

// Ponto de ancoragem da data em %

input int

InpPrice=50;

// Ponto de ancoragem do preo em %

input ENUM_ARROW_ANCHOR InpAnchor=ANCHOR_BOTTOM; // Tipo de ancoragem


input color

InpColor=clrRed;

// Cor do sinal

2000-2015, MetaQuotes Software Corp.

507

Constantes Padro, Enumeradores e Estruturas


input ENUM_LINE_STYLE

InpStyle=STYLE_DOT;

// Estilo de linha da borda

input int

InpWidth=5;

// Tamanho do Sinal

input bool

InpBack=false;

// Fundo do sinal

input bool

InpSelection=false;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objetos

input long

InpZOrder=0;

// Prioridade para clique do mouse

//+------------------------------------------------------------------+
//| Criar sinal Stop

//+------------------------------------------------------------------+
bool ArrowStopCreate(const long

chart_ID=0,

// ID do grfico

const string

name="ArrowStop",

// nome do sinal

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// ponto de ancoragem do tempo

double

price=0,

// ponto de ancoragem do preo

const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // tipo de ancoragem


const color

clr=clrRed,

// cor do sinal

const ENUM_LINE_STYLE

style=STYLE_SOLID,

// estilo da linha da borda

const int

width=3,

// tamanho do sinal

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// Ocultar na lista de objetos

const long

z_order=0)

// prioridade para clicar no mou

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeArrowEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar o sinal
if(!ObjectCreate(chart_ID,name,OBJ_ARROW_STOP,sub_window,time,price))
{
Print(__FUNCTION__,
": falha ao criar o sinal\"Stop\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- tipo de definio de ancoragem
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- definir uma cor de sinal
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha da borda
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- tamanho da definio do sinal
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- permitir (true) ou desabilitar (false) o modo de movimento do sinal com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);

2000-2015, MetaQuotes Software Corp.

508

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool ArrowStopMove(const long

chart_ID=0,

// ID do grfico

const string name="ArrowStop", // nome do objeto


datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem de preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar tipo de ancoragem do sinal Stop

//+------------------------------------------------------------------+
bool ArrowStopAnchorChange(const long
const string

chart_ID=0,

// ID do grfico

name="ArrowStop",

// nome do objeto

const ENUM_ARROW_ANCHOR anchor=ANCHOR_TOP) // posio do ponto de ancora


{
//--- redefine o valor de erro
ResetLastError();
//--- alterar tipo de ancoragem
if(!ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor))
{
Print(__FUNCTION__,
": falha para alterar o tipo de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}

2000-2015, MetaQuotes Software Corp.

509

Constantes Padro, Enumeradores e Estruturas


//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir sinal Stop

//+------------------------------------------------------------------+
bool ArrowStopDelete(const long

chart_ID=0,

// ID do grfico

const string name="ArrowStop") // nome da etiqueta


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o sinal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o sinal \"Stop\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeArrowEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();
//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate<0 || InpDate>100 || InpPrice<0 || InpPrice>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;

2000-2015, MetaQuotes Software Corp.

510

Constantes Padro, Enumeradores e Estruturas


//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar sinal das coordenadas do ponto de ancoragem
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar o sinal
int d=InpDate*(bars-1)/100;
int p=InpPrice*(accuracy-1)/100;
//--- criar sinal Stop no grfico
if(!ArrowStopCreate(0,InpName,0,date[d],price[p],InpAnchor,InpColor,
InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover o ponto de ancoragem e alterar sua posio em relao ao sinal
//--- contador de loop
int h_steps=bars*2/5;
//--- mover o ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d<bars-1)
d+=1;
//--- mover o ponto
if(!ArrowStopMove(0,InpName,date[d],price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;

2000-2015, MetaQuotes Software Corp.

511

Constantes Padro, Enumeradores e Estruturas


//--- redesenhar o grfico
ChartRedraw();
// 0.025 segundos de atraso
Sleep(25);
}
//--- alterar a localizao do ponto de ancoragem relativa ao sinal
ArrowStopAnchorChange(0,InpName,ANCHOR_TOP);
//--- redesenhar o grfico
ChartRedraw();
//--- contador de loop
h_steps=bars*2/5;
//--- mover o ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d<bars-1)
d+=1;
//--- mover o ponto
if(!ArrowStopMove(0,InpName,date[d],price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.025 segundos de atraso
Sleep(25);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- deletar o sinal do grfico
ArrowStopDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

512

Constantes Padro, Enumeradores e Estruturas

OBJ_ARROW_STOP
Check sign.

Observao
Posio do ponto de ancoragem relativa ao sinal pode ser selecionado a partir do enumerador
ENUM_ARROW_ANCHOR.
Sinais de grande porte (mais de 5) somente sero criados, definindo corretamente o valor da
propriedade OBJPROP_WIDTH ao escrever um cdigo no MetaEditor.
Exemplo
O script seguinte cria e move o sinal Check no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.

//--- descrio
#property description "Script desenha o sinal \"Check\"."
#property description "Coordenadas do ponto de ancoragem definido em"
#property description "porcentagem do tamanho da janela de grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="ArrowCheck"; // Nome do sinal

input int

InpDate=10;

// Ponto de ancoragem da data em %

input int

InpPrice=50;

// Ponto de ancoragem do preo em %

input ENUM_ARROW_ANCHOR InpAnchor=ANCHOR_TOP; // Tipo de ancoragem


input color

InpColor=clrRed;

// Cor do sinal

2000-2015, MetaQuotes Software Corp.

513

Constantes Padro, Enumeradores e Estruturas


input ENUM_LINE_STYLE

InpStyle=STYLE_DOT;

// Estilo da linha da borda

input int

InpWidth=5;

// Tamanho do sinal

input bool

InpBack=false;

// Sinal do fundo

input bool

InpSelection=false;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objetos

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar sinal Check

//+------------------------------------------------------------------+
bool ArrowCheckCreate(const long

chart_ID=0,

// ID do grfico

const string

name="ArrowCheck",

// nome do sinal

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// ponto de ancoragem de tempo

double

price=0,

// ponto de ancoragem de preo

const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // tipo de ancoragem


const color

clr=clrRed,

// cor do sinal

const ENUM_LINE_STYLE

style=STYLE_SOLID,

// estilo a linha da borda

const int

width=3,

// tamanho do sinal

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// Ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mo

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeArrowEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar o sinal
if(!ObjectCreate(chart_ID,name,OBJ_ARROW_CHECK,sub_window,time,price))
{
Print(__FUNCTION__,
": falha ao criar o sinal\"Check\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- tipo de definio de ancoragem
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- definir uma cor de sinal
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha da borda
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- tamanho da definio do sinal
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- permitir (true) ou desabilitar (false) o modo de movimento do sinal com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);

2000-2015, MetaQuotes Software Corp.

514

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool ArrowCheckMove(const long

chart_ID=0,

// ID do grfico

const string name="ArrowCheck", // nome do objeto


datetime

time=0,

// coordenada do ponto de ancoragem do tempo

double

price=0)

// coordenada do ponto de ancoragem do preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o tipo de ancoragem Check

//+------------------------------------------------------------------+
bool ArrowCheckAnchorChange(const long
const string

chart_ID=0,

// ID do grfico

name="ArrowCheck", // nome do objeto

const ENUM_ARROW_ANCHOR anchor=ANCHOR_TOP) // tipo de ancoragem


{
//--- redefine o valor de erro
ResetLastError();
//--- alterar tipo de ancoragem
if(!ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor))
{
Print(__FUNCTION__,
": falha para alterar o tipo de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}

2000-2015, MetaQuotes Software Corp.

515

Constantes Padro, Enumeradores e Estruturas


//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir os sinal Check

//+------------------------------------------------------------------+
bool ArrowCheckDelete(const long

chart_ID=0,

// ID do grfico

const string name="ArrowCheck") // nome do sinal


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o sinal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o sinal \"Check\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeArrowEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();
//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate<0 || InpDate>100 || InpPrice<0 || InpPrice>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;

2000-2015, MetaQuotes Software Corp.

516

Constantes Padro, Enumeradores e Estruturas


//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar sinal das coordenadas do ponto de ancoragem
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos para desenhar o sinal
int d=InpDate*(bars-1)/100;
int p=InpPrice*(accuracy-1)/100;
//--- criar o sinal Check no grfico
if(!ArrowCheckCreate(0,InpName,0,date[d],price[p],InpAnchor,InpColor,
InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover o ponto de ancoragem e alterar sua posio em relao ao sinal
//--- contador de loop
int h_steps=bars*2/5;
//--- mover o ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d<bars-1)
d+=1;
//--- mover o ponto
if(!ArrowCheckMove(0,InpName,date[d],price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;

2000-2015, MetaQuotes Software Corp.

517

Constantes Padro, Enumeradores e Estruturas


//--- redesenhar o grfico
ChartRedraw();
// 0.025 segundos de atraso
Sleep(25);
}
//--- alterar a localizao do ponto de ancoragem relativa ao sinal
ArrowCheckAnchorChange(0,InpName,ANCHOR_BOTTOM);
//--- redesenhar o grfico
ChartRedraw();
//--- contador de loop
h_steps=bars*2/5;
//--- mover o ponto de ancoragem
for(int i=0;i<h_steps;i++)
{
//--- usar o seguinte valor
if(d<bars-1)
d+=1;
//--- mover o ponto
if(!ArrowCheckMove(0,InpName,date[d],price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.025 segundos de atraso
Sleep(25);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- deletar o sinal do grfico
ArrowCheckDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

518

Constantes Padro, Enumeradores e Estruturas

OBJ_ARROW_LEFT_PRICE
Etiqueta de Preo Esquerda

Exemplo
O seguinte script cria e move a Etiqueta Preo Lado Esquerdo no grfico. Funes especiais tm
sido desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script cria a Etiqueta Preo Lado Esquerdo no grfico."
#property description "Coordenadas do ponto de ancoragem definido em"
#property description "porcentagem do tamanho da janela de grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="LeftPrice";

// Nome da Etiqueta Preo

input int

InpDate=100;

// Ponto de ancoragem da data em %

input int

InpPrice=10;

// Ponto de ancoragem do preo em %

input color

InpColor=clrRed;

// Cor da Etiqueta Preo

input ENUM_LINE_STYLE

InpStyle=STYLE_SOLID; // Estilo de linha da borda

input int

InpWidth=2;

// Tamanho da Etiqueta Preo

input bool

InpBack=false;

// Fundo Etiqueta

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objetos

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar Etiqueta Preo Lado Esquerdo

2000-2015, MetaQuotes Software Corp.

519

Constantes Padro, Enumeradores e Estruturas


//+------------------------------------------------------------------+
bool ArrowLeftPriceCreate(const long

chart_ID=0,

// ID do grfico

const string

name="LeftPrice",

// nome da etiqueta de preo

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// ponto de ancoragem do tempo

double

price=0,

// ponto de ancoragem do preo

const color

clr=clrRed,

// cor da etiqueta de preo

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo de linha da borda


const int

width=1,

// tamanho da etiqueta de preo

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clicar no mou

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeArrowEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar uma etiqueta de preo
if(!ObjectCreate(chart_ID,name,OBJ_ARROW_LEFT_PRICE,sub_window,time,price))
{
Print(__FUNCTION__,
": falha ao criar a etiqueta preo lado esquerdo! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir a cor da etiqueta
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha da borda
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir o tamanho da etiqueta
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

520

Constantes Padro, Enumeradores e Estruturas


bool ArrowLeftPriceMove(const long

chart_ID=0,

// ID do grfico

const string name="LeftPrice", // nome da etiqueta


datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem de tempo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir a etiqueta preo lado esquerdo do grfico

//+------------------------------------------------------------------+
bool ArrowLeftPriceDelete(const long

chart_ID=0,

// ID grfico

const string name="LeftPrice") // nome etiqueta


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir a etiqueta
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,

": falha ao excluir a etiqueta preo lado esquerda! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeArrowEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();

2000-2015, MetaQuotes Software Corp.

521

Constantes Padro, Enumeradores e Estruturas


//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate<0 || InpDate>100 || InpPrice<0 || InpPrice>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para configurao e alterao das coordenadas do ponto de ancoragem da etiqueta
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos por desenhar a etiqueta
int d=InpDate*(bars-1)/100;
int p=InpPrice*(accuracy-1)/100;
//--- criar etiqueta preo lado esquerdo no grfico
if(!ArrowLeftPriceCreate(0,InpName,0,date[d],price[p],InpColor,
InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;

2000-2015, MetaQuotes Software Corp.

522

Constantes Padro, Enumeradores e Estruturas


}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover o ponto de ancoragem
//--- contador de loop
int v_steps=accuracy*4/5;
//--- mover o ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p<accuracy-1)
p+=1;
//--- mover o ponto
if(!ArrowLeftPriceMove(0,InpName,date[d],price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a etiqueta do grfico
ArrowLeftPriceDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

523

Constantes Padro, Enumeradores e Estruturas

OBJ_ARROW_RIGHT_PRICE
Etiqueta Preo Lado Direito.

Exemplo
O seguinte script cria e move a Etiqueta Preo Lado Direito no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script cria a Etiqueta Preo Lado Direito no grfico."
#property description "Coordenadas do ponto de ancoragem definido em"
#property description "porcentagem do tamanho da janela de grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="RightPrice"; // Nome da Etiqueta Preo

input int

InpDate=0;

// Ponto de ancoragem da data em %

input int

InpPrice=90;

// Ponto de ancoragem do preo em %

input color

InpColor=clrRed;

// Cor da Etiqueta Preo

input ENUM_LINE_STYLE

InpStyle=STYLE_SOLID; // Estilo de linha da borda

input int

InpWidth=2;

// Tamanho da Etiqueta Preo

input bool

InpBack=false;

// Fundo Etiqueta

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objetos

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar a etiqueta preo lado direito

2000-2015, MetaQuotes Software Corp.

524

Constantes Padro, Enumeradores e Estruturas


//+------------------------------------------------------------------+
bool ArrowRightPriceCreate(const long

chart_ID=0,

// ID do grfico

const string

name="RightPrice", // nome do preo da etiqueta

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// ponto de ancoragem do tempo

double

price=0,

// ponto de ancoragem do preo

const color

clr=clrRed,

// cor da etiqueta de preo

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo de linha da borda


const int

width=1,

// tamanho da etiqueta de preo

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clicar no mo

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeArrowEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar uma etiqueta de preo
if(!ObjectCreate(chart_ID,name,OBJ_ARROW_RIGHT_PRICE,sub_window,time,price))
{
Print(__FUNCTION__,

": falha ao criar a etiqueta de preo lado direito! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir a cor da etiqueta
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha da borda
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir o tamanho da etiqueta
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

525

Constantes Padro, Enumeradores e Estruturas


bool ArrowRightPriceMove(const long

chart_ID=0,

// ID do grfico

const string name="RightPrice", // nome da etiqueta


datetime

time=0,

// coordenada do ponto de ancoragem de tem

double

price=0)

// coordenada do ponto de ancoragem de pre

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir a etiqueta de preo lado direito do grfico

//+------------------------------------------------------------------+
bool ArrowRightPriceDelete(const long

chart_ID=0,

// ID Grfico

const string name="RightPrice") // nome da etiqueta


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir a etiqueta
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,

": falha ao excluir a etiqueta de preo lado direito! Cdigo de erro = ",GetLastError()
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeArrowEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();

2000-2015, MetaQuotes Software Corp.

526

Constantes Padro, Enumeradores e Estruturas


//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate<0 || InpDate>100 || InpPrice<0 || InpPrice>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para configurao e alterao das coordenadas do ponto de ancoragem da etiqueta
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir os pontos por desenhar a etiqueta
int d=InpDate*(bars-1)/100;
int p=InpPrice*(accuracy-1)/100;
//--- criar a etiqueta de preo lado direito
if(!ArrowRightPriceCreate(0,InpName,0,date[d],price[p],InpColor,
InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;

2000-2015, MetaQuotes Software Corp.

527

Constantes Padro, Enumeradores e Estruturas


}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover o ponto de ancoragem
//--- contador de loop
int v_steps=accuracy*4/5;
//--- mover o ponto de ancoragem
for(int i=0;i<v_steps;i++)
{
//--- usar o seguinte valor
if(p>1)
p-=1;
//--- mover o ponto
if(!ArrowRightPriceMove(0,InpName,date[d],price[p]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a etiqueta do grfico
ArrowRightPriceDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

528

Constantes Padro, Enumeradores e Estruturas

OBJ_ARROW_BUY
Sinal Buy.

Exemplo
O seguinte script cria e move o sinal Buy no grfico. Funes especiais tm sido desenvolvidas para
criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em seus
prprios aplicativos.

//--- descrio
#property description "Script desenha sinais \"Buy\" na janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input color InpColor=C'3,95,172'; // Cores dos sinais
//+------------------------------------------------------------------+
//| Criar sinal Buy

//+------------------------------------------------------------------+
bool ArrowBuyCreate(const long

chart_ID=0,

// ID de grfico

const string

name="ArrowBuy",

// nome do sinal

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// ponto de ancoragem do tempo

double

price=0,

// ponto de ancoragem do preo

const color

clr=C'3,95,172',

// cor do sinal

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo de linha (quando destacada)


const int

width=1,

// tamanho da linha (quando destacada)

const bool

back=false,

// no fundo

const bool

selection=false,

// destaque para mover

2000-2015, MetaQuotes Software Corp.

529

Constantes Padro, Enumeradores e Estruturas


const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para o clique do mouse

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeArrowEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar o sinal
if(!ObjectCreate(chart_ID,name,OBJ_ARROW_BUY,sub_window,time,price))
{
Print(__FUNCTION__,
": falha ao criar sinal \"Buy\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir uma cor de sinal
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir um estilo de linha (quando destacado)
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir um tamanho de linha (quando destacado)
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- permitir (true) ou desabilitar (false) o modo de movimento do sinal com o mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool ArrowBuyMove(const long

chart_ID=0,

// ID do grfico

const string name="ArrowBuy", // nome do objeto


datetime

time=0,

// coordenar o ponto de ancoragem do tempo

double

price=0)

// coordenar o ponto de ancoragem do preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))

2000-2015, MetaQuotes Software Corp.

530

Constantes Padro, Enumeradores e Estruturas


{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir sinal Buy

//+------------------------------------------------------------------+
bool ArrowBuyDelete(const long

chart_ID=0,

// ID do grfico

const string name="ArrowBuy") // nome do sinal


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o sinal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o sinal \"Buy\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeArrowEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();
//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
datetime date[]; // array para armazenar datas das barras visveis
double

low[];

// array para armazenar preos Baixos das barras visveis

double

high[]; // array para armazenar preos Altos das barras visveis

//--- nmero de barras visveis na janela do grfico


int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);

2000-2015, MetaQuotes Software Corp.

531

Constantes Padro, Enumeradores e Estruturas


//--- alocao de memria
ArrayResize(date,bars);
ArrayResize(low,bars);
ArrayResize(high,bars);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array dos preos Baixos
if(CopyLow(Symbol(),Period(),0,bars,low)==-1)
{
Print("Falha ao copiar os valores dos preos Baixos! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array dos preos Altos
if(CopyHigh(Symbol(),Period(),0,bars,high)==-1)
{
Print("Falha ao copiar os valores dos preos Altos! Cdigo de erro = ",GetLastError());
return;
}
//--- criar sinais Buy de ponto de baixa para cada barra visvel
for(int i=0;i<bars;i++)
{
if(!ArrowBuyCreate(0,"ArrowBuy_"+(string)i,0,date[i],low[i],InpColor))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- mover sinal Buy de ponto alto para cada barra visvel
for(int i=0;i<bars;i++)
{
if(!ArrowBuyMove(0,"ArrowBuy_"+(string)i,date[i],high[i]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}

2000-2015, MetaQuotes Software Corp.

532

Constantes Padro, Enumeradores e Estruturas


//--- excluir sinais Buy
for(int i=0;i<bars;i++)
{
if(!ArrowBuyDelete(0,"ArrowBuy_"+(string)i))
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--}

2000-2015, MetaQuotes Software Corp.

533

Constantes Padro, Enumeradores e Estruturas

OBJ_ARROW_SELL
Sell sign.

Exemplo
O seguinte script cria e move o sinal Sell no grfico. Funes especiais tm sido desenvolvidas para
criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em seus
prprios aplicativos.

//--- descrio
#property description "Script desenha sinal \"Sell\" na janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input color InpColor=C'225,68,29'; // Cor do sinal
//+------------------------------------------------------------------+
//| Criar sinal Sell

//+------------------------------------------------------------------+
bool ArrowSellCreate(const long

chart_ID=0,

// ID do grfico

const string

name="ArrowSell",

// nome do sinal

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// ponto de ancoragem do tempo

double

price=0,

// ponto de ancoragem do preo

const color

clr=C'225,68,29',

// cor do sinal

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo de linha (quando destacado)


const int

width=1,

// tamanho da linha (quando destacada

const bool

back=false,

// no fundo

const bool

selection=false,

// destaque para mover

2000-2015, MetaQuotes Software Corp.

534

Constantes Padro, Enumeradores e Estruturas


const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeArrowEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar o sinal
if(!ObjectCreate(chart_ID,name,OBJ_ARROW_SELL,sub_window,time,price))
{
Print(__FUNCTION__,
": falha ao criar sinal \"Sell\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir uma cor de sinal
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir um estilo de linha (quando destacado)
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir um tamanho de linha (quando destacado)
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- permitir (true) ou desabilitar (false) o modo de movimento do sinal com o mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool ArrowSellMove(const long

chart_ID=0,

// ID do grfico

const string name="ArrowSell", // nome do objeto


datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem de preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))

2000-2015, MetaQuotes Software Corp.

535

Constantes Padro, Enumeradores e Estruturas


{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir sinal Sell

//+------------------------------------------------------------------+
bool ArrowSellDelete(const long

chart_ID=0,

// ID do grfico

const string name="ArrowSell") // nome do sinal


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o sinal
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o sinal\"Sell\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeArrowEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();
//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
datetime date[]; // array para armazenar datas das barras visveis
double

low[];

// array para armazenar preos Baixos das barras visveis

double

high[]; // array para armazenar preos Altos das barras visveis

//--- nmero de barras visveis na janela do grfico


int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);

2000-2015, MetaQuotes Software Corp.

536

Constantes Padro, Enumeradores e Estruturas


//--- alocao de memria
ArrayResize(date,bars);
ArrayResize(low,bars);
ArrayResize(high,bars);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array dos preos Baixos
if(CopyLow(Symbol(),Period(),0,bars,low)==-1)
{
Print("Falha ao copiar os valores dos preos Baixos! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array dos preos Altos
if(CopyHigh(Symbol(),Period(),0,bars,high)==-1)
{
Print("Falha ao copiar os valores dos preos Altos! Cdigo de erro = ",GetLastError());
return;
}
//--- criar sinais Sell no ponto Alto para cada barra visvel
for(int i=0;i<bars;i++)
{
if(!ArrowSellCreate(0,"ArrowSell_"+(string)i,0,date[i],high[i],InpColor))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- mover sinais Sell para ponto Baixo em cada barra visvel
for(int i=0;i<bars;i++)
{
if(!ArrowSellMove(0,"ArrowSell_"+(string)i,date[i],low[i]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}

2000-2015, MetaQuotes Software Corp.

537

Constantes Padro, Enumeradores e Estruturas


//--- excluir sinal Sell
for(int i=0;i<bars;i++)
{
if(!ArrowSellDelete(0,"ArrowSell_"+(string)i))
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--}

2000-2015, MetaQuotes Software Corp.

538

Constantes Padro, Enumeradores e Estruturas

OBJ_ARROW
Objeto Seta.

Observao
Posio do ponto de
ENUM_ARROW_ANCHOR.

ancoragem

relativo

ao

objeto

ser

selecionado

partir

do

As setas grandes (mais do que 5) somente sero criadas pela configurao de valores apropriados da
propriedade OBJPROP_WIDTH quando escrever um cdigo no MetaEditor.
O tipo de seta necessrio podem ser selecionado, definindo um dos cdigos dos smbolos da fonte
Wingdings.
Exemplo
O seguinte script cria um objeto Seta no grfico e altera seu tipo. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script cria uma seta aleatria na janela do grfico."
#property description "Coordenadas do ponto de ancoragem definido em"
#property description "porcentagem do tamanho da janela de grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Arrow";

// Nome da seta

input int

InpDate=50;

// Ponto de ancoragem da data em %

2000-2015, MetaQuotes Software Corp.

539

Constantes Padro, Enumeradores e Estruturas


input int

InpPrice=50;

// Ponto de ancoragem do preo em %

input ENUM_ARROW_ANCHOR InpAnchor=ANCHOR_TOP;

// Tipo de ancoragem

input color

InpColor=clrDodgerBlue; // Cor da seta

input ENUM_LINE_STYLE

InpStyle=STYLE_SOLID;

// Estilo de linha da borda

input int

InpWidth=10;

// Tamanho da seta

input bool

InpBack=false;

// Seta do fundo

input bool

InpSelection=false;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar a seta

//+------------------------------------------------------------------+
bool ArrowCreate(const long

chart_ID=0,

// ID do grfico

name="Arrow",

// nome da seta

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// ponto de ancoragem do tmepo

double

price=0,

// ponto de ancoragem do preo

const uchar

arrow_code=252,

// cdigo da seta

const string

const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // posio do ponto de ancoragem


const color

clr=clrRed,

// cor da seta

const ENUM_LINE_STYLE

style=STYLE_SOLID,

// estilo da linha da borda

const int

width=3,

// tamanho da seta

const bool

back=false,

// no fundo

const bool

selection=true,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objeto

const long

z_order=0)

// prioridade para clicar no mouse

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeArrowEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar uma seta
if(!ObjectCreate(chart_ID,name,OBJ_ARROW,sub_window,time,price))
{
Print(__FUNCTION__,
": falha ao criar uma seta! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir o cdigo da seta
ObjectSetInteger(chart_ID,name,OBJPROP_ARROWCODE,arrow_code);
//--- tipo de definio de ancoragem
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- definir a cor da seta
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha da borda
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir o tamanho da seta
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)

2000-2015, MetaQuotes Software Corp.

540

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (true) o modo do movimento da seta com o mouse
//--- ao criar um objeto grfico usando a funo ObjectCreate, o objeto no pode ser
//--- destacado e movimentado por padro. Dentro deste mtodo, o parmetro de seleo
//--- verdade por padro, tornando possvel destacar e mover o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool ArrowMove(const long

chart_ID=0,

// ID do grfico

const string name="Arrow", // nome do objeto


datetime

time=0,

// coordenada do ponto de ancoragem de tempo

double

price=0)

// coordenada do ponto de ancoragem de preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o cdigo da seta

//+------------------------------------------------------------------+
bool ArrowCodeChange(const long

chart_ID=0,

// ID do grfico

const string name="Arrow", // nome do objeto


const uchar

code=252)

// cdigo da seta

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar o cdigo da seta

2000-2015, MetaQuotes Software Corp.

541

Constantes Padro, Enumeradores e Estruturas


if(!ObjectSetInteger(chart_ID,name,OBJPROP_ARROWCODE,code))
{
Print(__FUNCTION__,
": falha ao alterar o cdigo da seta! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar tipo de ancoragem

//+------------------------------------------------------------------+
bool ArrowAnchorChange(const long
const string

chart_ID=0,

// ID do grfico

name="Arrow",

// nome do objeto

const ENUM_ARROW_ANCHOR anchor=ANCHOR_TOP) // tipo de ancoragem


{
//--- redefine o valor de erro
ResetLastError();
//--- alterar tipo de ancoragem
if(!ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor))
{
Print(__FUNCTION__,
": falha para alterar o tipo de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir uma seta

//+------------------------------------------------------------------+
bool ArrowDelete(const long

chart_ID=0,

// ID do grfico

const string name="Arrow") // nome da seta


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir uma seta
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir uma seta! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

2000-2015, MetaQuotes Software Corp.

542

Constantes Padro, Enumeradores e Estruturas


//+------------------------------------------------------------------+
void ChangeArrowEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();
//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate<0 || InpDate>100 || InpPrice<0 || InpPrice>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- tamanho do array de preo
int accuracy=1000;
//--- arrays para armazenar data e valores de preo para serem usados
//--- para definir e alterar sinal das coordenadas do ponto de ancoragem
datetime date[];
double

price[];

//--- alocao de memria


ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array de preos
//--- encontrar os maiores e menores valores do grfico
double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- definir uma etapa de mudana de um preo e preencher o array
double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- definir pontos para desenhar a seta
int d=InpDate*(bars-1)/100;

2000-2015, MetaQuotes Software Corp.

543

Constantes Padro, Enumeradores e Estruturas


int p=InpPrice*(accuracy-1)/100;
//--- criar uma seta no grfico
if(!ArrowCreate(0,InpName,0,date[d],price[p],32,InpAnchor,InpColor,
InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico
ChartRedraw();
//--- analisar todos os casos de criao de setas no loop
for(int i=33;i<256;i++)
{
if(!ArrowCodeChange(0,InpName,(uchar)i))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// meio segundo de atraso
Sleep(500);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a seta do grfico
ArrowDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

544

Constantes Padro, Enumeradores e Estruturas

OBJ_TEXT
Objeto Texto.

Observao
Posio de ponto de ancoragem em relao ao texto pode ser selecionado a partir do enumerador
ENUM_ANCHOR_POINT. Voc tambm pode alterar o ngulo de inclinao de texto usando a
propriedade OBJPROP_ANGLE.
Exemplo
O seguinte o script cria vrios objetos de texto no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script cria objeto grfico de \"Texto\"."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpFont="Arial";

// Fonte

input int

InpFontSize=10;

// Tamanho da fonte

input color

InpColor=clrRed;

// Cor

input double

InpAngle=90.0;

// ngulo de inclinao em graus

input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_BOTTOM; // Tipo de ancoragem


input bool

InpBack=false;

// Objeto de fundo

input bool

InpSelection=false;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objetos

2000-2015, MetaQuotes Software Corp.

545

Constantes Padro, Enumeradores e Estruturas


input long

InpZOrder=0;

// Prioridade para clique do mouse

//+------------------------------------------------------------------+
//| Criando objeto Texto

//+------------------------------------------------------------------+
bool TextCreate(const long

chart_ID=0,

// ID do grfico

const string

name="Text",

// nome do objeto

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// ponto de ancoragem do tempo

double

price=0,

// ponto de ancoragem do preo

const string

text="Text",

// o prprio texto

const string

font="Arial",

// fonte

const int

font_size=10,

// tamanho da fonte

const color

clr=clrRed,

// cor

const double

angle=0.0,

// inclinao do texto

const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // tipo de ancoragem


const bool

back=false,

/ no fundo

const bool

selection=false,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clicar no mous

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeTextEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar objeto Texto
if(!ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price))
{
Print(__FUNCTION__,
": falha ao criar objeto \"Texto\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir o texto
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- definir o texto fonte
ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- definir tamanho da fonte
ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- definir o ngulo de inclinao do texto
ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
//--- tipo de definio de ancoragem
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- definir cor
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- habilitar (true) ou desabilitar (false) o modo de mover o objeto com o mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto

2000-2015, MetaQuotes Software Corp.

546

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover ponto de ancoragem

//+------------------------------------------------------------------+
bool TextMove(const long

chart_ID=0,

// ID do grfico

const string name="Text", // nome do objeto


datetime

time=0,

// coordenada do ponto de ancoragem do tempo

double

price=0)

// coordenada do ponto de ancoragem do preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid
if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o texto do objeto

//+------------------------------------------------------------------+
bool TextChange(const long

chart_ID=0,

// ID do Grfico

const string name="Text", // nome do objeto


const string text="Text") // texto
{
//--- redefine o valor de erro
ResetLastError();
//--- alterar texto do objeto
if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
{
Print(__FUNCTION__,
": falha ao alterar texto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);

2000-2015, MetaQuotes Software Corp.

547

Constantes Padro, Enumeradores e Estruturas


}
//+------------------------------------------------------------------+
//| Excluir objeto Texto

//+------------------------------------------------------------------+
bool TextDelete(const long

chart_ID=0,

// Id do Grfico

const string name="Text") // nome do objeto


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o objeto
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o objeto \"Texto\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeTextEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();
//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
datetime date[]; // array para armazenar datas das barras visveis
double

low[];

// array para armazenar preos Baixos das barras visveis

double

high[]; // array para armazenar preos Altos das barras visveis

//--- nmero de barras visveis na janela do grfico


int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- alocao de memria
ArrayResize(date,bars);
ArrayResize(low,bars);
ArrayResize(high,bars);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)

2000-2015, MetaQuotes Software Corp.

548

Constantes Padro, Enumeradores e Estruturas


{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array dos preos Baixos
if(CopyLow(Symbol(),Period(),0,bars,low)==-1)
{
Print("Falha ao copiar os valores dos preos Baixos! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array dos preos Altos
if(CopyHigh(Symbol(),Period(),0,bars,high)==-1)
{
Print("Falha ao copiar os valores dos preos Altos! Cdigo de erro = ",GetLastError());
return;
}
//--- definir a forma como muitas vezes os textos sero exibidos
int scale=(int)ChartGetInteger(0,CHART_SCALE);
//--- definir o passo
int step=1;
switch(scale)
{
case 0:
step=12;
break;
case 1:
step=6;
break;
case 2:
step=4;
break;
case 3:
step=2;
break;
}
//--- criar textos para os valores de barras de Alta e de Baixa (com intervalos)
for(int i=0;i<bars;i+=step)
{
//--- criar os textos

if(!TextCreate(0,"TextHigh_"+(string)i,0,date[i],high[i],DoubleToString(high[i],5),InpFont,In
InpColor,InpAngle,InpAnchor,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}

if(!TextCreate(0,"TextLow_"+(string)i,0,date[i],low[i],DoubleToString(low[i],5),InpFont,InpFo
InpColor,-InpAngle,InpAnchor,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}

2000-2015, MetaQuotes Software Corp.

549

Constantes Padro, Enumeradores e Estruturas


//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- meio segundo de atraso
Sleep(500);
//--- excluir os textos
for(int i=0;i<bars;i+=step)
{
if(!TextDelete(0,"TextHigh_"+(string)i))
return;
if(!TextDelete(0,"TextLow_"+(string)i))
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--}

2000-2015, MetaQuotes Software Corp.

550

Constantes Padro, Enumeradores e Estruturas

OBJ_LABEL
Objeto Etiqueta.

Observao
Posio do ponto de ancoragem relativa a etiqueta pode ser selecionada do enumerador
ENUM_ANCHOR_POINT. Coordenadas do ponto de ancoragem so em pixels.
Voc tambm pode selecionar uma ancoragem de etiqueta de texto no canto a partir do enumerador
ENUM_BASE_CORNER.
Exemplo
O seguinte script cria e move o objeto Edit no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.

//--- descrio
#property description "Script cria objeto grfico \"Etiqueta\"."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Label";

// Nome etiqueta

input int

InpX=150;

// distncia do eixo X

input int

InpY=150;

// distncia do eixo Y

input string

InpFont="Arial";

// Fonte

input int

InpFontSize=14;

// Tamanho da fonte

input color

InpColor=clrRed;

// Cor

input double

InpAngle=0.0;

// ngulo de inclinao em graus

2000-2015, MetaQuotes Software Corp.

551

Constantes Padro, Enumeradores e Estruturas


input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER; // Tipo de ancoragem
input bool

InpBack=false;

// Objeto de fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objetos

input long

InpZOrder=0;

// Prioridade para clique do mouse

//+------------------------------------------------------------------+
//| Criar um a etiqueta de texto

//+------------------------------------------------------------------+
bool LabelCreate(const long

chart_ID=0,

// ID do grfico

const string

name="Label",

// nome da etiqueta

const int

sub_window=0,

// ndice da sub-janela

const int

x=0,

// coordenada X

const int

y=0,

// coordenada Y

const ENUM_BASE_CORNER

corner=CORNER_LEFT_UPPER, // canto do grfico para ancorag

const string

text="Label",

// texto

const string

font="Arial",

// fonte

const int

font_size=10,

// tamanho da fonte

const color

clr=clrRed,

// cor

const double

angle=0.0,

// inclinao do texto

const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // tipo de ancoragem


const bool

back=false,

// no fundo

const bool

selection=false,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clicar no mou

{
//--- redefine o valor de erro
ResetLastError();
//--- criar um a etiqueta de texto
if(!ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0))
{
Print(__FUNCTION__,
": falha ao criar uma etiqueta de texto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir coordenadas da etiqueta
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- determinar o canto do grfico onde as coordenadas do ponto so definidas
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- definir o texto
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- definir o texto fonte
ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- definir tamanho da fonte
ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- definir o ngulo de inclinao do texto
ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
//--- tipo de definio de ancoragem
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);

2000-2015, MetaQuotes Software Corp.

552

Constantes Padro, Enumeradores e Estruturas


//--- definir cor
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover a etiqueta de texto

//+------------------------------------------------------------------+
bool LabelMove(const long

chart_ID=0,

// ID do grfico

const string name="Label", // nome da etiqueta


const int

x=0,

// coordenada X

const int

y=0)

// coordenada Y

{
//--- redefine o valor de erro
ResetLastError();
//--- mover a etiqueta de texto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
{
Print(__FUNCTION__,
": falha para mover coordenada X do objeto! Cdigo de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
{
Print(__FUNCTION__,
": falha para mover coordenada X do objeto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar canto do grfico para vinculao da etiqueta

//+------------------------------------------------------------------+
bool LabelChangeCorner(const long
const string

chart_ID=0,

// ID do grfico

name="Label",

// nome da etiqueta

const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER) // canto do grfico para an


{
//--- redefine o valor de erro
ResetLastError();

2000-2015, MetaQuotes Software Corp.

553

Constantes Padro, Enumeradores e Estruturas


//--- alterar canto de ancoragem
if(!ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner))
{
Print(__FUNCTION__,
": falha ao alterar canto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o texto do objeto

//+------------------------------------------------------------------+
bool LabelTextChange(const long

chart_ID=0,

// ID do grfico

const string name="Label", // nome do objeto


const string text="Text")

// texto

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar texto do objeto
if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
{
Print(__FUNCTION__,
": falha ao alterar texto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Apagar uma etiqueta de texto

//+------------------------------------------------------------------+
bool LabelDelete(const long

chart_ID=0,

// ID do grfico

const string name="Label") // nome da etiqueta


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir a etiqueta
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir a etiqueta de texto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

2000-2015, MetaQuotes Software Corp.

554

Constantes Padro, Enumeradores e Estruturas


//+------------------------------------------------------------------+
void OnStart()
{
//--- armazenar as coordenadas das etiquetas nas variveis locais
int x=InpX;
int y=InpY;
//--- tamanho da janela do grfico
long x_distance;
long y_distance;
//--- definir tamanho da janela
if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
{
Print("Falha ao obter a largura do grfico! Cdigo de erro = ",GetLastError());
return;
}
if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
{
Print("Falha ao obter a altura do grfico! Cdigo de erro = ",GetLastError());
return;
}
//--- verificar a exatido dos parmetros de entrada
if(InpX<0 || InpX>x_distance-1 || InpY<0 || InpY>y_distance-1)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- preparar texto inicial para a etiqueta
string text;
StringConcatenate(text,"Canto inferior direito: ",x,",",y);
//--- criar uma etiqueta de texto no grfico
if(!LabelCreate(0,InpName,0,InpX,InpY,CORNER_LEFT_UPPER,text,InpFont,InpFontSize,
InpColor,InpAngle,InpAnchor,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(500);
//--- mover a etiqueta e alterar o seu texto simultaneamente
//--- nmero de iteraes por eixos
int h_steps=(int)(x_distance/2-InpX);
int v_steps=(int)(y_distance/2-InpY);
//--- mover a etiqueta para baixo
for(int i=0;i<v_steps;i++)
{
//--- alterar a coordenada
y+=2;
//--- mover a etiqueta e alterar o seu texto
MoveAndTextChange(x,y,"Canto superior esquerdo: ");

2000-2015, MetaQuotes Software Corp.

555

Constantes Padro, Enumeradores e Estruturas


}
//--- meio segundo de atraso
Sleep(500);
//--- mover a etiqueta para a direita
for(int i=0;i<h_steps;i++)
{
//--- alterar a coordenada
x+=2;
//--- mover a etiqueta e alterar o seu texto
MoveAndTextChange(x,y,"Canto superior esquerdo: ");
}
//--- meio segundo de atraso
Sleep(500);
//--- mover a etiqueta para cima
for(int i=0;i<v_steps;i++)
{
//--- alterar a coordenada
y-=2;
//--- mover a etiqueta e alterar o seu texto
MoveAndTextChange(x,y,"Canto superior esquerdo: ");
}
//--- meio segundo de atraso
Sleep(500);
//--- mover a etiqueta para a esquerda
for(int i=0;i<h_steps;i++)
{
//--- alterar a coordenada
x-=2;
//--- mover a etiqueta e alterar o seu texto
MoveAndTextChange(x,y,"Canto superior esquerdo: ");
}
//--- meio segundo de atraso
Sleep(500);
//--- agora, mover o ponto para mudar o canto de ancoragem
//--- mover para o canto inferior esquerdo
if(!LabelChangeCorner(0,InpName,CORNER_LEFT_LOWER))
return;
//--- alterar texto da etiqueta
StringConcatenate(text,"Canto inferior direito: ",x,",",y);
if(!LabelTextChange(0,InpName,text))
return;
//--- redesenhar o grfico e esperar por dois segundos
ChartRedraw();
Sleep(2000);
//--- mover para o canto inferior direito
if(!LabelChangeCorner(0,InpName,CORNER_RIGHT_LOWER))
return;
//--- alterar texto da etiqueta
StringConcatenate(text,"Canto direito inferior: ",x,",",y);

2000-2015, MetaQuotes Software Corp.

556

Constantes Padro, Enumeradores e Estruturas


if(!LabelTextChange(0,InpName,text))
return;
//--- redesenhar o grfico e esperar por dois segundos
ChartRedraw();
Sleep(2000);
//--- mover para o canto superior direito
if(!LabelChangeCorner(0,InpName,CORNER_RIGHT_UPPER))
return;
//--- alterar texto da etiqueta
StringConcatenate(text,"Canto inferior direito: ",x,",",y);
if(!LabelTextChange(0,InpName,text))
return;
//--- redesenhar o grfico e esperar por dois segundos
ChartRedraw();
Sleep(2000);
//--- mover para o canto superior esquerdo
if(!LabelChangeCorner(0,InpName,CORNER_LEFT_UPPER))
return;
//--- alterar texto da etiqueta
StringConcatenate(text,"Canto inferior direito: ",x,",",y);
if(!LabelTextChange(0,InpName,text))
return;
//--- redesenhar o grfico e esperar por dois segundos
ChartRedraw();
Sleep(2000);
//--- excluir a etiqueta
LabelDelete(0,InpName);
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(500);
//--}
//+------------------------------------------------------------------+
//| A funo movimenta o objeto e altera o seu texto

//+------------------------------------------------------------------+
bool MoveAndTextChange(const int x,const int y,string text)
{
//--- mover a etiqueta
if(!LabelMove(0,InpName,x,y))
return(false);
//--- alterar texto da etiqueta
StringConcatenate(text,text,x,",",y);
if(!LabelTextChange(0,InpName,text))
return(false);
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return(false);
//--- redesenhar o grfico
ChartRedraw();

2000-2015, MetaQuotes Software Corp.

557

Constantes Padro, Enumeradores e Estruturas


// 0.01 segundos de atraso
Sleep(10);
//--- sair da funo
return(true);
}

2000-2015, MetaQuotes Software Corp.

558

Constantes Padro, Enumeradores e Estruturas

OBJ_BUTTON
Objeto Boto.

Observao
Coordenadas do ponto de ancoragem so em pixels. Voc pode selecionar o boto de ancoragem de
canto a partir da ENUM_BASE_CORNER.
Exemplo
O seguinte script cria e move o objeto Boto no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.
//--- descrio
#property description "Script cria o Boto no grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Button";

// Nome do Boto

input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Canto do grfico para ancoragem


input string

InpFont="Arial";

// Fonte

input int

InpFontSize=14;

// Tamanho da fonte

input color

InpColor=clrBlack;

// Cor do texto

input color

InpBackColor=C'236,233,216'; // Fundo da cor

input color

InpBorderColor=clrNONE;

// Cor da Borda

input bool

InpState=false;

// Pressionado/Liberado

input bool

InpBack=false;

// Objeto de Fundo

input bool

InpSelection=false;

// Destaque para mover

2000-2015, MetaQuotes Software Corp.

559

Constantes Padro, Enumeradores e Estruturas


input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clique do mouse

//+------------------------------------------------------------------+
//| Criar o boto

//+------------------------------------------------------------------+
bool ButtonCreate(const long

chart_ID=0,

// ID do grfico

const string

name="Button",

// nome do boto

const int

sub_window=0,

// ndice da sub-janela

const int

x=0,

// coordenada X

const int

y=0,

// coordenada Y

const int

width=50,

// largura do boto

const int

height=18,

// altura do boto

const ENUM_BASE_CORNER

corner=CORNER_LEFT_UPPER, // canto do grfico para ancora

const string

text="Button",

// texto

const string

font="Arial",

// fonte

const int

font_size=10,

// tamanho da fonte

const color

clr=clrBlack,

// cor do texto

const color

back_clr=C'236,233,216',

// cor do fundo

const color

border_clr=clrNONE,

// cor da borda

const bool

state=false,

// pressionada/liberada

const bool

back=false,

// no fundo

const bool

selection=false,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objeto

const long

z_order=0)

// prioridade para clicar no mo

{
//--- redefine o valor de erro
ResetLastError();
//--- criar o boto
if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
{
Print(__FUNCTION__,
": falha ao criar o boto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir coordenadas do boto
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- definir tamanho do boto
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- determinar o canto do grfico onde as coordenadas do ponto so definidas
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- definir o texto
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- definir o texto fonte
ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- definir tamanho da fonte
ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- definir a cor do texto

2000-2015, MetaQuotes Software Corp.

560

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir a cor de fundo
ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- definir a cor da borda
ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- set button state
ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- habilitar (true) ou desabilitar (false) o modo do movimento do boto com o mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover o boto

//+------------------------------------------------------------------+
bool ButtonMove(const long

chart_ID=0,

// ID do grfico

const string name="Button", // nome do boto


const int

x=0,

// coordenada X

const int

y=0)

// coordenada Y

{
//--- redefine o valor de erro
ResetLastError();
//--- mover o boto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
{
Print(__FUNCTION__,
": falha para mover coordenada X do boto! Cdigo de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
{
Print(__FUNCTION__,
": falha para mover coordenada Y do boto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o tamanho do boto

//+------------------------------------------------------------------+
bool ButtonChangeSize(const long

chart_ID=0,

// ID do grfico

2000-2015, MetaQuotes Software Corp.

561

Constantes Padro, Enumeradores e Estruturas


const string name="Button", // nome do boto
const int

width=50,

// largura do boto

const int

height=18)

// altura do boto

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar o tamanho do boto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
{
Print(__FUNCTION__,
": falha ao alterar a largura do boto! Cdigo de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
{
Print(__FUNCTION__,
": falha ao alterar a altura do boto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar canto do grfico para vinculao do boto

//+------------------------------------------------------------------+
bool ButtonChangeCorner(const long
const string

chart_ID=0,

// ID do grfico

name="Button",

// nome do boto

const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER) // canto do grfico para a


{
//--- redefine o valor de erro
ResetLastError();
//--- alterar canto de ancoragem
if(!ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner))
{
Print(__FUNCTION__,
": falha ao alterar canto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar texto do boto

//+------------------------------------------------------------------+
bool ButtonTextChange(const long

chart_ID=0,

// ID do grfico

const string name="Button", // nome do boto


const string text="Text")

// texto

{
//--- redefine o valor de erro

2000-2015, MetaQuotes Software Corp.

562

Constantes Padro, Enumeradores e Estruturas


ResetLastError();
//--- alterar texto do objeto
if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
{
Print(__FUNCTION__,
": falha ao alterar texto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir o boto

//+------------------------------------------------------------------+
bool ButtonDelete(const long

chart_ID=0,

// ID do grfico

const string name="Button") // nome do boto


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o boto
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir o boto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- tamanho da janela do grfico
long x_distance;
long y_distance;
//--- definir tamanho da janela
if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
{
Print("Falha ao obter a largura do grfico! Cdigo de erro = ",GetLastError());
return;
}
if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
{
Print("Falha ao obter a altura do grfico! Cdigo de erro = ",GetLastError());
return;
}
//--- definir a etapa de alterar o tamanho do boto

2000-2015, MetaQuotes Software Corp.

563

Constantes Padro, Enumeradores e Estruturas


int x_step=(int)x_distance/32;
int y_step=(int)y_distance/32;
//--- definir as coordenadas boto e seu tamanho
int x=(int)x_distance/32;
int y=(int)y_distance/32;
int x_size=(int)x_distance*15/16;
int y_size=(int)y_distance*15/16;
//--- criar o boto
if(!ButtonCreate(0,InpName,0,x,y,x_size,y_size,InpCorner,"Press",InpFont,InpFontSize,
InpColor,InpBackColor,InpBorderColor,InpState,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico
ChartRedraw();
//--- reduzir o boto no loop
int i=0;
while(i<13)
{
//--- meio segundo de atraso
Sleep(500);
//--- mudar o boto para o estado pressionado
ObjectSetInteger(0,InpName,OBJPROP_STATE,true);
//--- redesenhar o grfico e esperar por 0.2 segundos
ChartRedraw();
Sleep(200);
//--- redefinir as coordenadas e tamanho do boto
x+=x_step;
y+=y_step;
x_size-=x_step*2;
y_size-=y_step*2;
//--- reduzir o boto
ButtonMove(0,InpName,x,y);
ButtonChangeSize(0,InpName,x_size,y_size);
//--- trazer o boto de volta ao estado liberado
ObjectSetInteger(0,InpName,OBJPROP_STATE,false);
//--- redesenhar o grfico
ChartRedraw();
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- incrementar um contador de loop
i++;
}
//--- meio segundo de atraso
Sleep(500);
//--- excluir o boto
ButtonDelete(0,InpName);
ChartRedraw();

2000-2015, MetaQuotes Software Corp.

564

Constantes Padro, Enumeradores e Estruturas


//--- esperar por um segundo
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

565

Constantes Padro, Enumeradores e Estruturas

OBJ_CHART
Objeto Chart.

Observao
Coordenadas do ponto de ancoragem so em pixels. Voc tambm pode selecionar uma ancoragem
do bitmap no canto a partir do enumerador ENUM_BASE_CORNER.
Smbolo, perodo e escala podem ser selecionados para o objeto Chart. Escala de preo e modo de
exibio de data tambm pode ser habilitado/desabilitado.
Exemplo
O seguinte script cria e move o objeto Chart no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.

//--- descrio
#property description "Script cria objeto \"Chart\"."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Chart";

// Nome do objeto

input string

InpSymbol="EURUSD";

// Smbolo

input ENUM_TIMEFRAMES

InpPeriod=PERIOD_H1;

// Perodo

input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Canto de ancoragem


input int

InpScale=2;

// Escala

input bool

InpDateScale=true;

// Exibio da escala de tempo

input bool

InpPriceScale=true;

// Exibio da escala de preo

2000-2015, MetaQuotes Software Corp.

566

Constantes Padro, Enumeradores e Estruturas


input color

InpColor=clrRed;

// Cor da borda quando destacada

input ENUM_LINE_STYLE

InpStyle=STYLE_DASHDOTDOT;

// Estilo da linha quando destacada

input int

InpPointWidth=1;

// Tamanho do ponto para movimento

input bool

InpBack=false;

// Objeto de Fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clique do mouse

//+------------------------------------------------------------------+
//| Criando objeto Chart

//+------------------------------------------------------------------+
bool ObjectChartCreate(const long

chart_ID=0,

// ID do grfico

name="Chart",

// nome do objeto

const int

sub_window=0,

// ndice da sub-janela

const string

symbol="EURUSD",

// smbolo

const ENUM_TIMEFRAMES

period=PERIOD_H1,

// perodo

const int

x=0,

// coordenada X

const int

y=0,

// coordenada Y

const int

width=300,

// largura

const int

height=200,

// altura

const string

const ENUM_BASE_CORNER

corner=CORNER_LEFT_UPPER, // canto de ancoragem

const int

scale=2,

// escala

const bool

date_scale=true,

// exibio escala de temp

const bool

price_scale=true,

// exibio escala de pre

const color

clr=clrRed,

// a cor da borda quando d

const ENUM_LINE_STYLE

style=STYLE_SOLID,

// estilo da linha quando

const int

point_width=1,

// mover tamanho do ponto

const bool

back=false,

// no fundo

const bool

selection=false,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de obj

const long

z_order=0)

// prioridade para clicar

{
//--- redefine o valor de erro
ResetLastError();
//--- criar objeto Chart
if(!ObjectCreate(chart_ID,name,OBJ_CHART,sub_window,0,0))
{
Print(__FUNCTION__,
": falha ao criar objeto \"Chart\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir coordenadas do objeto
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- definir tamanho do objeto
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- determinar o canto do grfico onde as coordenadas do ponto so definidas
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- definir o smbolo

2000-2015, MetaQuotes Software Corp.

567

Constantes Padro, Enumeradores e Estruturas


ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol);
//--- definir o perodo
ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period);
//--- definir a escala
ObjectSetInteger(chart_ID,name,OBJPROP_CHART_SCALE,scale);
//--- exibir (true) ou ocultar (false) a escala de tempo
ObjectSetInteger(chart_ID,name,OBJPROP_DATE_SCALE,date_scale);
//--- exibir (true) ou ocultar (false) a escala de preo
ObjectSetInteger(chart_ID,name,OBJPROP_PRICE_SCALE,price_scale);
//--- definir a cor da borda quando o modo de destaque do objeto habilitado
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de linha quando o modo de destaque do objeto habilitado
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir o tamanho do ponto de ancoragem para movimentar o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Definir o smbolo e perodo de tempo do objeto Chart

//+------------------------------------------------------------------+
bool ObjectChartSetSymbolAndPeriod(const long

chart_ID=0,

// ID do grfico (no ob

const string

name="Chart",

// nome do objeto

const string

symbol="EURUSD",

// smbolo

const ENUM_TIMEFRAMES period=PERIOD_H1) // perodo de tempo


{
//--- redefine o valor de erro
ResetLastError();
//--- definir smbolo e perodo de tempo do objeto Chart
if(!ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol))
{
Print(__FUNCTION__,

": falha para definir o smbolo do objeto \"Chart\"! Cdigo de erro = ",GetLastError())
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period))
{
Print(__FUNCTION__,

": falha para definir o smbolo do objeto \"Chart\"! Cdigo de erro = ",GetLastError())
return(false);

2000-2015, MetaQuotes Software Corp.

568

Constantes Padro, Enumeradores e Estruturas


}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover objeto Chart

//+------------------------------------------------------------------+
bool ObjectChartMove(const long

chart_ID=0,

// ID do grfico (no objeto de um Grfico)

const string name="Chart", // nome do objeto


const int

x=0,

// coordenada X

const int

y=0)

// coordenada Y

{
//--- redefine o valor de erro
ResetLastError();
//--- mover o objeto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
{
Print(__FUNCTION__,

": falha ao mover coordenada X do objeto \"Chart\"! Cdigo de erro = ",GetLastError());


return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
{
Print(__FUNCTION__,

": falha ao mover coordenada Y do objeto \"Chart\"! Cdigo de erro = ",GetLastError());


return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o tamanho do objeto Chart

//+------------------------------------------------------------------+
bool ObjectChartChangeSize(const long

chart_ID=0,

// ID do grfico (no objeto de um Grfico)

const string name="Chart", // nome do objeto


const int

width=300,

// largura

const int

height=200)

// altura

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar o tamanho do objeto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
{
Print(__FUNCTION__,

": falha ao alterar a largura do objeto \"Chart\" ! Cdigo de erro = ",GetLastError());


return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
{

2000-2015, MetaQuotes Software Corp.

569

Constantes Padro, Enumeradores e Estruturas


Print(__FUNCTION__,
": falha ao alterar a altura do objeto \"Chart\" ! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Retorno do ID do objeto Chart

//+------------------------------------------------------------------+
long ObjectChartGetID(const long

chart_ID=0,

// ID do grfico (no objeto de um Grfico)

const string name="Chart") // nome do objeto


{
//--- preparar a varivel para obter o ID do objeto Chart
long id=-1;
//--- redefine o valor de erro
ResetLastError();
//--- obter ID
if(!ObjectGetInteger(chart_ID,name,OBJPROP_CHART_ID,0,id))
{
Print(__FUNCTION__,
": falha ao obter o ID do objeto \"Chart\"! Cdigo de erro = ",GetLastError());
}
//--- retorno do resultado
return(id);
}
//+------------------------------------------------------------------+
//| Deletar o objeto Chart

//+------------------------------------------------------------------+
bool ObjectChartDelete(const long

chart_ID=0,

// ID do grfico (no objeto de um Grfico)

const string name="Chart") // nome do objeto


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o boto
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao deletar objeto \"Chart\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{

2000-2015, MetaQuotes Software Corp.

570

Constantes Padro, Enumeradores e Estruturas


//--- obter o nmero de smbolos na Observao do Mercado
int

symbols=SymbolsTotal(true);

//--- verificar se o smbolo com um nome especifico est presente na lista de smbolo
bool exist=false;
for(int i=0;i<symbols;i++)
if(InpSymbol==SymbolName(i,true))
{
exist=true;
break;
}
if(!exist)
{
Print("Erro! ",InpSymbol," smbolo no est presente na \"Observao do Mercado\"!");
return;
}
//--- verificar a validade dos parmetros de entrada
if(InpScale<0 || InpScale>5)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- tamanho da janela do grfico
long x_distance;
long y_distance;
//--- definir tamanho da janela
if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
{
Print("Falha ao obter a largura do grfico! Cdigo de erro = ",GetLastError());
return;
}
if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
{
Print("Falha ao obter a altura do grfico! Cdigo de erro = ",GetLastError());
return;
}
//--- definir as coordenadas do objeto grfico e seu tamanho
int x=(int)x_distance/16;
int y=(int)y_distance/16;
int x_size=(int)x_distance*7/16;
int y_size=(int)y_distance*7/16;
//--- criar objeto Chart

if(!ObjectChartCreate(0,InpName,0,InpSymbol,InpPeriod,x,y,x_size,y_size,InpCorner,InpScale,InpDa
InpPriceScale,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();

2000-2015, MetaQuotes Software Corp.

571

Constantes Padro, Enumeradores e Estruturas


Sleep(1000);
//--- estender objeto Chart
int steps=(int)MathMin(x_distance*7/16,y_distance*7/16);
for(int i=0;i<steps;i++)
{
//--- redimensionar
x_size+=1;
y_size+=1;
if(!ObjectChartChangeSize(0,InpName,x_size,y_size))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico e esperar por 0.01 segundos
ChartRedraw();
Sleep(10);
}
//--- meio segundo de atraso
Sleep(500);
//--- alterar perodo de tempo do grfico
if(!ObjectChartSetSymbolAndPeriod(0,InpName,InpSymbol,PERIOD_M1))
return;
ChartRedraw();
//--- trs segundos de atraso
Sleep(3000);
//--- excluir o objeto
ObjectChartDelete(0,InpName);
ChartRedraw();
//--- esperar por um segundo
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

572

Constantes Padro, Enumeradores e Estruturas

OBJ_BITMAP
Objeto Bitmap.

Observao
Para objeto Bitmap, voc pode selecionar o escopo de visibilidade de uma imagem.
Exemplo
O seguinte script cria vrios bitmaps no grfico. Funes especiais tm sido desenvolvidas para
criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em seus
prprios aplicativos.

//--- descrio
#property description "Script cria um bitmap na janela do grfico."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpFile="\\Images\\dollar.bmp"; // Nome do arquivo Bitmap

input int

InpWidth=24;

// Coordenada X do escopo de visibilidade

input int

InpHeight=24;

// Coordenada Y do escopo de visibilidade

input int

InpXOffset=4;

// Deslocamento do escopo de visibilidade pel

input int

InpYOffset=4;

// Deslocamento do escopo de visibilidade pel

input color

InpColor=clrRed;

// Cor da borda quando destacada

input ENUM_LINE_STYLE InpStyle=STYLE_SOLID;

// Estilo de linha quando destacada

input int

InpPointWidth=1;

// Tamanho do ponto para movimento

input bool

InpBack=false;

// Objeto de Fundo

input bool

InpSelection=false;

// Destaque para mover

2000-2015, MetaQuotes Software Corp.

573

Constantes Padro, Enumeradores e Estruturas


input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar um bitmap na janela do grfico

//+------------------------------------------------------------------+
bool BitmapCreate(const long

chart_ID=0,

// ID do grfico

const string

name="Bitmap",

// nome do bitmap

const int

sub_window=0,

// ndice da sub-janela

datetime

time=0,

// ponto de ancoragem do tempo

double

price=0,

// ponto de ancoragem do preo

const string

file="",

// nome do arquivo bitmap

const int

width=10,

// coordenada X do escopo de visibilidad

const int

height=10,

// coordenada Y do escopo de visibilidad

const int

x_offset=0,

// escopo de visibilidade deslocado pelo

const int

y_offset=0,

// escopo de visibilidade deslocado pelo

const color

clr=clrRed,

// cor da borda quando destacada

const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo de linha quando destacada


const int

point_width=1,

// mover tamanho do ponto

const bool

back=false,

// no fundo

const bool

selection=false,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objetot

const long

z_order=0)

// prioridade para clicar no mouse

{
//--- definir as coordenadas de pontos de ancoragem, se eles no esto definidos
ChangeBitmapEmptyPoint(time,price);
//--- redefine o valor de erro
ResetLastError();
//--- criar um bitmap
if(!ObjectCreate(chart_ID,name,OBJ_BITMAP,sub_window,time,price))
{
Print(__FUNCTION__,
": falha ao criar um bitmap na janela do grfico! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir o caminho para o arquivo da imagem
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,file))
{
Print(__FUNCTION__,
": falha ao carregar a imagem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir escopo de visibilidade para a imagem, se os valores da largura ou altura
//--- excederem a largura e a altura (respectivamente) de uma imagem de origem,
//--- no ser desenhada, no caso oposto
//--- apenas a parte correspondente a esses valores ser desenhada
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- definir a parte de uma imagem que est sendo exibida no escopo de visibilidade,
//--- a parte padro a rea superior esquerda de uma imagem, os valores permitem

2000-2015, MetaQuotes Software Corp.

574

Constantes Padro, Enumeradores e Estruturas


//--- realizar uma mudana a partir desta rea de exibio de uma outra parte da imagem
ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset);
ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
//--- definir a cor da borda quando o modo de destaque do objeto habilitado
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de linha quando o modo de destaque do objeto habilitado
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir o tamanho do ponto de ancoragem para movimentar o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Definir uma nova imagem para o bitmap

//+------------------------------------------------------------------+
bool BitmapSetImage(const long

chart_ID=0,

// ID do grfico

const string name="Bitmap", // nome do bitmap


const string file="")

// caminho para o arquivo

{
//--- redefine o valor de erro
ResetLastError();
//--- definir o caminho para o arquivo da imagem
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,file))
{
Print(__FUNCTION__,
": falha ao carregar a imagem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Criar um bitmap na janela do grfico

//+------------------------------------------------------------------+
bool BitmapMove(const long

chart_ID=0,

// ID do grfico

const string name="Bitmap", // nome do bitmap


datetime

time=0,

// ponto de ancoragem do tempo

double

price=0)

// ponto de ancoragem do preo

{
//--- se a posio do ponto no est definida, mover para a barra atual tendo o preo Bid

2000-2015, MetaQuotes Software Corp.

575

Constantes Padro, Enumeradores e Estruturas


if(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- redefine o valor de erro
ResetLastError();
//--- mover o ponto de ancoragem
if(!ObjectMove(chart_ID,name,0,time,price))
{
Print(__FUNCTION__,
": falha ao mover o ponto de ancoragem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar tamanho do escopo de visibilidade (objeto)

//+------------------------------------------------------------------+
bool BitmapChangeSize(const long

chart_ID=0,

// ID do grfico

const string name="Bitmap", // nome do bitmap


const int

width=0,

// largura do bitmap

const int

height=0)

// altura do bitmap

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar tamanho do bitmap
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
{
Print(__FUNCTION__,
": falha ao alterar a largura do bitmap! Cdigo de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
{
Print(__FUNCTION__,
": falha ao alterar a altura do bitmap! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+--------------------------------------------------------------------+
//| Mudar coordenada canto superior esquerdo do escopo de visibilidade |
//+--------------------------------------------------------------------+
bool BitmapMoveVisibleArea(const long

chart_ID=0,

// ID do grfico

const string name="Bitmap", // nome do bitmap


const int

x_offset=0,

// coordenada X do escopo de visibilidade

const int

y_offset=0)

// coordenada Y do escopo de visibilidade

2000-2015, MetaQuotes Software Corp.

576

Constantes Padro, Enumeradores e Estruturas


{
//--- redefine o valor de erro
ResetLastError();
//--- alterar as coordenadas do escopo de visibilidade do bitmap
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset))
{
Print(__FUNCTION__,

": falha para alterar coordenada X do escopo de visibilidade! Cdigo de erro = ",GetLas
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset))
{
Print(__FUNCTION__,

": falha para alterar coordenada Y do escopo de visibilidade! Cdigo de erro = ",GetLas
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir um bitmap

//+------------------------------------------------------------------+
bool BitmapDelete(const long

chart_ID=0,

// ID do grfico

const string name="Bitmap") // nome do bitmap


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir a etiqueta
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir um bitmap! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar valores de ponto de ancoragem e definir valores padro|
//| para aqueles vazios

//+------------------------------------------------------------------+
void ChangeBitmapEmptyPoint(datetime &time,double &price)
{
//--- se o tempo do ponto no est definido, ser na barra atual
if(!time)
time=TimeCurrent();
//--- se o preo do ponto no est definido, ele ter valor Bid
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);

2000-2015, MetaQuotes Software Corp.

577

Constantes Padro, Enumeradores e Estruturas


}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
datetime date[];
double

// array para armazenar datas das barras visveis

close[]; // array para armazenar Fechamento de preos

//--- nome do arquivo bitmap


string

file="\\Images\\dollar.bmp";

//--- nmero de barras visveis na janela do grfico


int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- alocao de memria
ArrayResize(date,bars);
ArrayResize(close,bars);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- preencher o array dos preos Baixos
if(CopyClose(Symbol(),Period(),0,bars,close)==-1)
{
Print("Falha ao copiar os valores dos preos Baixos! Cdigo de erro = ",GetLastError());
return;
}
//--- definir como frequentemente as imagens devem ser exibidas
int scale=(int)ChartGetInteger(0,CHART_SCALE);
//--- definir o passo
int step=1;
switch(scale)
{
case 0:
step=27;
break;
case 1:
step=14;
break;
case 2:
step=7;
break;
case 3:
step=4;
break;
case 4:
step=2;
break;

2000-2015, MetaQuotes Software Corp.

578

Constantes Padro, Enumeradores e Estruturas


}
//--- criar bitmaps para valores de barra Alta e Baixa (com intervalos)
for(int i=0;i<bars;i+=step)
{
//--- criar os bitmaps

if(!BitmapCreate(0,"Bitmap_"+(string)i,0,date[i],close[i],InpFile,InpWidth,InpHeight,InpXOffs
InpYOffset,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- meio segundo de atraso
Sleep(500);
//--- excluir sinal Sell
for(int i=0;i<bars;i+=step)
{
if(!BitmapDelete(0,"Bitmap_"+(string)i))
return;
if(!BitmapDelete(0,"Bitmap_"+(string)i))
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--}

2000-2015, MetaQuotes Software Corp.

579

Constantes Padro, Enumeradores e Estruturas

OBJ_BITMAP_LABEL
Objeto Etiqueta Bitmap.

Observao
Posio do ponto de ancoragem relativa a etiqueta pode ser selecionada do enumerador
ENUM_ANCHOR_POINT. Coordenadas do ponto de ancoragem so em pixels.
Voc tambm pode selecionar uma ancoragem do bitmap no canto a partir da enumerao
ENUM_BASE_CORNER.
Para etiqueta bitmap, voc pode selecionar no escopo de visibilidade de uma imagem.
Exemplo
O seguinte script cria vrios bitmaps no grfico. Funes especiais tm sido desenvolvidas para
criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em seus
prprios aplicativos.
//--- descrio
#property description "Script criando objeto \"Bitmap Label\"."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="BmpLabel";

input string

InpFileOn="\\Images\\dollar.bmp"; // O nome do arquivo para o modo On

input string

InpFileOff="\\Images\\euro.bmp";

// O nome do arquivo para o modo Off

input bool

InpState=false;

// Etiqueta pressionada/liberada

input ENUM_BASE_CORNER

InpCorner=CORNER_LEFT_UPPER;

// Canto do grfico para ancoragem

input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER;

2000-2015, MetaQuotes Software Corp.

// Nome etiqueta

// Tipo de ancoragem

580

Constantes Padro, Enumeradores e Estruturas


input color

InpColor=clrRed;

// A cor da borda quando destacada

input ENUM_LINE_STYLE

InpStyle=STYLE_SOLID;

// Estilo da linha quando destacada

input int

InpPointWidth=1;

// Tamanho do ponto para mover

input bool

InpBack=false;

// Objeto de fundo

input bool

InpSelection=false;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Criar objeto Etiqueta Bitmap

//+------------------------------------------------------------------+
bool BitmapLabelCreate(const long

chart_ID=0,

// ID do grfico

const string

name="BmpLabel",

// nome da etiqueta

const int

sub_window=0,

// ndice da sub-janela

const int

x=0,

// coordenada X

const int

y=0,

// coordenada Y

const string

file_on="",

// imagem em modo On

const string

file_off="",

// imagem em modo Off

const int

width=0,

// coordenada X do escopo

const int

height=0,

// coordenada Y do escopo

const int

x_offset=10,

// escopo de visibilidade

const int

y_offset=10,

// escopo de visibilidade

const bool

state=false,

// pressionada/liberada

const ENUM_BASE_CORNER

corner=CORNER_LEFT_UPPER, // canto do grfico para a

const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // tipo de ancoragem


const color

clr=clrRed,

// a cor da borda quando d

const ENUM_LINE_STYLE

style=STYLE_SOLID,

// estilo da linha quando

const int

point_width=1,

// mover tamanho do ponto

const bool

back=false,

// no fundo

const bool

selection=false,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de obj

const long

z_order=0)

// prioridade para clicar

{
//--- redefine o valor de erro
ResetLastError();
//--- criar uma etiqueta bitmap
if(!ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0))
{
Print(__FUNCTION__,
": falha ao criar objeto \"Etiqueta Bitmap\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir as imagens para os modos ligar (On) e desligar (Off)
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,0,file_on))
{
Print(__FUNCTION__,
": falha para carregar a imagem para o modo On! Cdigo de erro = ",GetLastError());
return(false);
}
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,1,file_off))

2000-2015, MetaQuotes Software Corp.

581

Constantes Padro, Enumeradores e Estruturas


{
Print(__FUNCTION__,
": falha para carregar a imagem para o modo Off! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir coordenadas da etiqueta
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- definir escopo de visibilidade para a imagem, se os valores da largura ou altura
//--- excederem a largura e a altura (respectivamente) de uma imagem de origem,
//--- no ser desenhada, no caso oposto
//--- apenas a parte correspondente a esses valores ser desenhada
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- definir a parte de uma imagem que est sendo exibida no escopo de visibilidade,
//--- a parte padro a rea superior esquerda de uma imagem, os valores permitem
//--- realizar uma mudana a partir desta rea de exibio de uma outra parte da imagem
ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset);
ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
//--- definir os status da etiqueta(pressionada ou liberada)
ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- determinar o canto do grfico onde as coordenadas do ponto so definidas
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- tipo de definio de ancoragem
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- definir a cor da borda quando o modo de destaque do objeto habilitado
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de linha quando o modo de destaque do objeto habilitado
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir o tamanho do ponto de ancoragem para movimentar o objeto
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Definir uma nova imagem para objeto etiqueta Bitmap

//+------------------------------------------------------------------+
bool BitmapLabelSetImage(const long

chart_ID=0,

// ID do grfico

const string name="BmpLabel", // nome da etiqueta


const int

on_off=0,

// modificador (On ou Off)

2000-2015, MetaQuotes Software Corp.

582

Constantes Padro, Enumeradores e Estruturas


const string file="")

// caminho para o arquivo

{
//--- redefine o valor de erro
ResetLastError();
//--- definir o caminho para o arquivo da imagem
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,on_off,file))
{
Print(__FUNCTION__,
": falha para carregar a imagem! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover objeto Etiqueta Bitmap

//+------------------------------------------------------------------+
bool BitmapLabelMove(const long

chart_ID=0,

// ID do grfico

const string name="BmpLabel", // nome da etiqueta


const int

x=0,

// coordenada X

const int

y=0)

// coordenada Y

{
//--- redefine o valor de erro
ResetLastError();
//--- mover o objeto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
{
Print(__FUNCTION__,
": falha para mover coordenada X do objeto! Cdigo de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
{
Print(__FUNCTION__,
": falha para mover coordenada Y do objeto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar tamanho do escopo de visibilidade (objeto)

//+------------------------------------------------------------------+
bool BitmapLabelChangeSize(const long

chart_ID=0,

// ID do grfico

const string name="BmpLabel", // nome da etiqueta


const int

width=0,

// largura da etiqueta

const int

height=0)

// altura da etiqueta

{
//--- redefine o valor de erro

2000-2015, MetaQuotes Software Corp.

583

Constantes Padro, Enumeradores e Estruturas


ResetLastError();
//--- alterar o tamanho do objeto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
{
Print(__FUNCTION__,
": falha ao alterar a largura do objeto! Cdigo de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
{
Print(__FUNCTION__,
": falha ao alterar a altura do objeto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+--------------------------------------------------------------------+
//| Mudar coordenada canto superior esquerdo do escopo de visibilidade |
//+--------------------------------------------------------------------+
bool BitmapLabelMoveVisibleArea(const long

chart_ID=0,

// ID do grafico

const string name="BmpLabel", // nome da etiqueta


const int

x_offset=0,

// coordenada X do escopo de visibili

const int

y_offset=0)

// coordenada Y do escopo de visibili

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar as coordenadas do escopo de visibilidade do objeto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset))
{
Print(__FUNCTION__,

": falha para alterar coordenada X do escopo de visibilidade! Cdigo de erro = ",GetLas
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset))
{
Print(__FUNCTION__,

": falha para alterar coordenada Y do escopo de visibilidade! Cdigo de erro = ",GetLas
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir o Objeto "Bitmap label"

//+------------------------------------------------------------------+
bool BitmapLabelDelete(const long

chart_ID=0,

// ID do grfico

const string name="BmpLabel") // nome da etiqueta


{

2000-2015, MetaQuotes Software Corp.

584

Constantes Padro, Enumeradores e Estruturas


//--- redefine o valor de erro
ResetLastError();
//--- excluir a etiqueta
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao excluir objeto \"Bitmap label\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- tamanho da janela do grfico
long x_distance;
long y_distance;
//--- definir tamanho da janela
if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
{
Print("Falha ao obter a largura do grfico! Cdigo de erro = ",GetLastError());
return;
}
if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
{
Print("Falha ao obter a altura do grfico! Cdigo de erro = ",GetLastError());
return;
}
//--- definir coordenadas da etiqueta bitmap
int x=(int)x_distance/2;
int y=(int)y_distance/2;
//--- definir o tamanho da etiqueta e a coordenada do escopo de visibilidade
int width=32;
int height=32;
int x_offset=0;
int y_offset=0;
//--- local da etiqueta bitmap no centro da janela

if(!BitmapLabelCreate(0,InpName,0,x,y,InpFileOn,InpFileOff,width,height,x_offset,y_offset,InpSta

InpCorner,InpAnchor,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder)
{
return;
}
//--- redesenhar o grfico e esperar um segundo
ChartRedraw();
Sleep(1000);
//--- alterar tamanho do escopo de visibilidade da etiqueta em loop

2000-2015, MetaQuotes Software Corp.

585

Constantes Padro, Enumeradores e Estruturas


for(int i=0;i<6;i++)
{
//--- alterar o tamanho do escopo
width--;
height--;
if(!BitmapLabelChangeSize(0,InpName,width,height))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.3 segundos de atraso
Sleep(300);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- alterar as coordenadas do escopo de visibilidade da etiqueta em loop
for(int i=0;i<2;i++)
{
//--- alterar coordenadas do escopo de visibilidade
x_offset++;
y_offset++;
if(!BitmapLabelMoveVisibleArea(0,InpName,x_offset,y_offset))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.3 segundos de atraso
Sleep(300);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir a etiqueta
BitmapLabelDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

586

Constantes Padro, Enumeradores e Estruturas

OBJ_EDIT
Objeto Edit.

Observao
Coordenadas do ponto de ancoragem so em pixels. Voc tambm pode selecionar uma ancoragem
do Edit no canto a partir do enumerador ENUM_BASE_CORNER.
Voc tambm pode selecionar um dos tipos de alinhamento de texto dentro de Edit a partir da
enumerao ENUM_ALIGN_MODE.
Exemplo
O seguinte script cria e move o objeto Edit no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.
//--- descrio
#property description "Script cria objeto \"Edit\"."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Edit";

// Nome do objeto

input string

InpText="Text";

// Texto de objeto

input string

InpFont="Arial";

// Fonte

input int

InpFontSize=14;

// Tamanho da fonte

input ENUM_ALIGN_MODE

InpAlign=ALIGN_CENTER;

// Tipo de alinhamento de texto

input bool

InpReadOnly=false;

// Habilidade de editar

input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Canto do grfico para ancoragem


input color

InpColor=clrBlack;

// Cor do texto

2000-2015, MetaQuotes Software Corp.

587

Constantes Padro, Enumeradores e Estruturas


input color

InpBackColor=clrWhite;

// Fundo da cor

input color

InpBorderColor=clrBlack;

// Cor da borda

input bool

InpBack=false;

// Objeto de Fundo

input bool

InpSelection=false;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clique do mouse

//+------------------------------------------------------------------+
//| Criar o objeto Edit

//+------------------------------------------------------------------+
bool EditCreate(const long

chart_ID=0,

// ID do grfico

const string

name="Edit",

// nome do objeto

const int

sub_window=0,

// ndice da sub-janela

const int

x=0,

// coordenada X

const int

y=0,

// coordenada Y

const int

width=50,

// largura

const int

height=18,

// altura

const string

text="Text",

// texto

const string

font="Arial",

// fonte

const int

font_size=10,

// tamanho da fonte

const ENUM_ALIGN_MODE

align=ALIGN_CENTER,

// tipo de alinhamento

const bool

read_only=false,

// habilidade para editar

const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // canto do grfico para ancoragem


const color

clr=clrBlack,

// cor do texto

const color

back_clr=clrWhite,

// cor do fundo

const color

border_clr=clrNONE,

// cor da borda

const bool

back=false,

// no fundo

const bool

selection=false,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objeto

const long

z_order=0)

// prioridade para clicar no mouse

{
//--- redefine o valor de erro
ResetLastError();
//--- criar campo de edio
if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0))
{
Print(__FUNCTION__,
": falha ao criar objeto \"Edit\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir coordenadas do objeto
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- definir tamanho do objeto
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- definir o texto
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- definir o texto fonte
ObjectSetString(chart_ID,name,OBJPROP_FONT,font);

2000-2015, MetaQuotes Software Corp.

588

Constantes Padro, Enumeradores e Estruturas


//--- definir tamanho da fonte
ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- definir o tipo de alinhamento do texto no objeto
ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align);
//--- habilitar (true) ou cancelar (false) modo de somente leitura
ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only);
//--- definir o canto do grfico onde as coordenadas do objeto so definidas
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- definir a cor do texto
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir a cor de fundo
ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- definir a cor da borda
ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover objeto Edit

//+------------------------------------------------------------------+
bool EditMove(const long

chart_ID=0,

// ID do grfico

const string name="Edit", // nome do objeto


const int

x=0,

// coordenada X

const int

y=0)

// coordenada Y

{
//--- redefine o valor de erro
ResetLastError();
//--- mover o objeto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
{
Print(__FUNCTION__,
": falha para mover coordenada X do objeto! Cdigo de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
{
Print(__FUNCTION__,
": falha para mover coordenada Y do objeto! Cdigo de erro = ",GetLastError());
return(false);
}

2000-2015, MetaQuotes Software Corp.

589

Constantes Padro, Enumeradores e Estruturas


//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Redimensionar objeto Edit

//+------------------------------------------------------------------+
bool EditChangeSize(const long

chart_ID=0,

// ID do grfico

const string name="Edit", // nome do objeto


const int

width=0,

// largura

const int

height=0)

// altura

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar o tamanho do objeto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
{
Print(__FUNCTION__,
": falha ao alterar a largura do objeto! Cdigo de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
{
Print(__FUNCTION__,
": falha ao alterar a altura do objeto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar texto do objeto Edit

//+------------------------------------------------------------------+
bool EditTextChange(const long

chart_ID=0,

// ID do grfico

const string name="Edit", // nome do objeto


const string text="Text") // texto
{
//--- redefine o valor de erro
ResetLastError();
//--- alterar texto do objeto
if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
{
Print(__FUNCTION__,
": falha ao alterar texto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

590

Constantes Padro, Enumeradores e Estruturas


//| Retornar texto de objeto

//+------------------------------------------------------------------+
bool EditTextGet(string
const long

&text,
chart_ID=0,

// texto
// ID do grfico

const string name="Edit") // nome do objeto


{
//--- redefine o valor de erro
ResetLastError();
//--- obter texto do objeto
if(!ObjectGetString(chart_ID,name,OBJPROP_TEXT,0,text))
{
Print(__FUNCTION__,
": falha ao obter o texto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir objeto Edit

//+------------------------------------------------------------------+
bool EditDelete(const long

chart_ID=0,

// ID do grfico

const string name="Edit") // nome do objeto


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir a etiqueta
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": falha ao deletar objeto \"Edit\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- tamanho da janela do grfico
long x_distance;
long y_distance;
//--- definir tamanho da janela
if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
{
Print("Falha ao obter a largura do grfico! Cdigo de erro = ",GetLastError());
return;

2000-2015, MetaQuotes Software Corp.

591

Constantes Padro, Enumeradores e Estruturas


}
if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
{
Print("Falha ao obter a altura do grfico! Cdigo de erro = ",GetLastError());
return;
}
//--- definir o passo para mudar o campo edit
int x_step=(int)x_distance/64;
//--- definir coordenadas do campo edit e seu tamanho
int x=(int)x_distance/8;
int y=(int)y_distance/2;
int x_size=(int)x_distance/8;
int y_size=InpFontSize*2;
//--- armazenar o texto na varivel local
string text=InpText;
//--- criar campo de edio
if(!EditCreate(0,InpName,0,x,y,x_size,y_size,InpText,InpFont,InpFontSize,InpAlign,InpReadOnly,
InpCorner,InpColor,InpBackColor,InpBorderColor,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- estender o campo edit
while(x_size-x<x_distance*5/8)
{
//--- aumentar a largura do campo edit
x_size+=x_step;
if(!EditChangeSize(0,InpName,x_size,y_size))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico e esperar por 0.05 segundos
ChartRedraw();
Sleep(50);
}
//--- meio segundo de atraso
Sleep(500);
//--- alterar o texto
for(int i=0;i<20;i++)
{
//--- adicionar "+" no incio e no final
text="+"+text+"+";
if(!EditTextChange(0,InpName,text))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())

2000-2015, MetaQuotes Software Corp.

592

Constantes Padro, Enumeradores e Estruturas


return;
//--- redesenhar o grfico e esperar por 0.1 segundos
ChartRedraw();
Sleep(100);
}
//--- meio segundo de atraso
Sleep(500);
//--- excluir campo edit
EditDelete(0,InpName);
ChartRedraw();
//--- esperar por um segundo
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

593

Constantes Padro, Enumeradores e Estruturas

OBJ_EVENT
Objeto Evento.

Observao
Quando mover o mouse sobre o evento, o texto aparece.
Exemplo
O seguinte script cria e move o objeto Evento no grfico. Funes especiais tm sido desenvolvidas
para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas funes "as is" em
seus prprios aplicativos.

//--- descrio
#property description "Script desenha objeto grfico \"Evento\"."
#property description "Coordenadas do ponto de ancoragem configurado em porcentagem da"
#property description "largura da janela do grfico em barras."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="Event";

// Nome do evento

input int

InpDate=25;

// Data do Evento, %

input string

InpText="Text";

// Texto do Evento

input color

InpColor=clrRed;

// Cor do Evento

input int

InpWidth=1;

// Tamanho do ponto quando destacado

input bool

InpBack=false;

// Evento de Fundo

input bool

InpSelection=false; // Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

2000-2015, MetaQuotes Software Corp.

594

Constantes Padro, Enumeradores e Estruturas


input long

InpZOrder=0;

// Prioridade para clicar no mouse

//+------------------------------------------------------------------+
//| Create objeto Evento no grfico

//+------------------------------------------------------------------+
bool EventCreate(const long

chart_ID=0,

// ID de grfico

const string

name="Event",

// nome do evento

const int

sub_window=0,

// ndice da sub-janela

const string

text="Text",

// texto do evento

datetime

time=0,

// tempo

const color

clr=clrRed,

// cor

const int

width=1,

// largura do ponto quando em destaque

const bool

back=false,

// no fundo

const bool

selection=false, // destaque para mover

const bool

hidden=true,

// ocultar na lista de objetos

const long

z_order=0)

// prioridade para clique do mouse

{
//--- se o tempo no estiver definido, criar o objeto no ltimo bar
if(!time)
time=TimeCurrent();
//--- redefine o valor de erro
ResetLastError();
//--- criar objeto Evento
if(!ObjectCreate(chart_ID,name,OBJ_EVENT,sub_window,time,0))
{
Print(__FUNCTION__,
": falha ao criar objeto \"Evento\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir texto do evento
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- definir cor
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir a largura de ponto de ancoragem se o objeto destacado
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- permitir (true) ou desabilitar (false) o modo de movimento do evento com o mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o texto do objeto Evento

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

595

Constantes Padro, Enumeradores e Estruturas


bool EventTextChange(const long

chart_ID=0,

// ID do grfico

const string name="Event", // nome do evento


const string text="Text")

// texto

{
//--- redefine o valor de erro
ResetLastError();
//--- alterar texto do objeto
if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
{
Print(__FUNCTION__,
": falha ao alterar texto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover objeto Evento

//+------------------------------------------------------------------+
bool EventMove(const long

chart_ID=0,

// ID do grfico

const string name="Event", // nome do evento


datetime

time=0)

// tempo

{
//--- se o tempo no estiver definido, mover evento at o ltimo bar
if(!time)
time=TimeCurrent();
//--- redefine o valor de erro
ResetLastError();
//--- mover o objeto
if(!ObjectMove(chart_ID,name,0,time,0))
{
Print(__FUNCTION__,
": falha ao mover objeto \"Evento\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir objeto Evento

//+------------------------------------------------------------------+
bool EventDelete(const long

chart_ID=0,

// ID do grfico

const string name="Event") // nome do evento


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir o objeto
if(!ObjectDelete(chart_ID,name))
{

2000-2015, MetaQuotes Software Corp.

596

Constantes Padro, Enumeradores e Estruturas


Print(__FUNCTION__,
": falha ao deletar objeto \"Evento\"! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- verificar a exatido dos parmetros de entrada
if(InpDate<0 || InpDate>100)
{
Print("Erro! Valores incorretos dos parmetros de entrada!");
return;
}
//--- nmero de barras visveis na janela do grfico
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- array para armazenar a data de valores a serem utilizados
//--- para definir e alterar as coordenadas de pontos de ancoragem
datetime date[];
//--- alocao de memria
ArrayResize(date,bars);
//--- preencher o array das datas
ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Falha ao copiar valores de tempo! Cdigo de erro = ",GetLastError());
return;
}
//--- definir os pontos para criar um objeto
int d=InpDate*(bars-1)/100;
//--- criar objeto Evento
if(!EventCreate(0,InpName,0,InpText,date[d],InpColor,InpWidth,
InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- agora, mover o objeto
//--- contador de loop
int h_steps=bars/2;
//--- mover o objeto
for(int i=0;i<h_steps;i++)
{

2000-2015, MetaQuotes Software Corp.

597

Constantes Padro, Enumeradores e Estruturas


//--- usar o seguinte valor
if(d<bars-1)
d+=1;
//--- mover o ponto
if(!EventMove(0,InpName,date[d]))
return;
//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico
ChartRedraw();
// 0.05 segundos de atraso
Sleep(50);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- excluir o canal do grfico
EventDelete(0,InpName);
ChartRedraw();
//--- 1 segundo de atraso
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

598

Constantes Padro, Enumeradores e Estruturas

OBJ_RECTANGLE_LABEL
Objeto Etiqueta Retangular.

Observao
Coordenadas do ponto de ancoragem so em pixels. possvel a ancoragem no canto de uma
etiqueta retangular a partir do enumerador ENUM_BASE_CORNER. O tipo de borda da etiqueta
retangular pode ser selecionado a partir do enumerador ENUM_BORDER_TYPE.
O objeto usado para criar e projetar a interface grfica personalizada.
Exemplo
O seguinte script cria e move o objeto Etiqueta Retangular no grfico. Funes especiais tm sido
desenvolvidas para criar e alterar as propriedades do objeto grfico. Voc pode utilizar estas
funes "as is" em seus prprios aplicativos.

//--- descrio
#property description "Script cria objeto grfico \"Etiqueta Retangular\"."
//--- janela de exibio dos parmetros de entrada durante inicializao do script
#property script_show_inputs
//--- entrada de parmetros do script
input string

InpName="RectLabel";

// Nome etiqueta

input color

InpBackColor=clrSkyBlue;

// Fundo da cor

input ENUM_BORDER_TYPE InpBorder=BORDER_FLAT;

// Tipo de Borda

input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Canto do grfico para ancoragem


input color

InpColor=clrDarkBlue;

// Cor da borda plana (Flat)

input ENUM_LINE_STYLE

InpStyle=STYLE_SOLID;

// Estilo da borda plana (Flat)

input int

InpLineWidth=3;

// Largura da borda plana (Flat)

2000-2015, MetaQuotes Software Corp.

599

Constantes Padro, Enumeradores e Estruturas


input bool

InpBack=false;

// Objeto de Fundo

input bool

InpSelection=true;

// Destaque para mover

input bool

InpHidden=true;

// Ocultar na lista de objeto

input long

InpZOrder=0;

// Prioridade para clique do mouse

//+------------------------------------------------------------------+
//| Criar etiqueta retangular

//+------------------------------------------------------------------+
bool RectLabelCreate(const long

chart_ID=0,

// ID do grfico

const string

name="RectLabel",

// nome da etiqueta

const int

sub_window=0,

// ndice da sub-janela

const int

x=0,

// coordenada X

const int

y=0,

// coordenada Y

const int

width=50,

// largura

const int

height=18,

// altura

const color

back_clr=C'236,233,216',

// cor do fundo

const ENUM_BORDER_TYPE border=BORDER_SUNKEN,

// tipo de borda

const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // canto do grfico para anco


const color

clr=clrRed,

// cor da borda plana (Flat)

const ENUM_LINE_STYLE

style=STYLE_SOLID,

// estilo da borda plana

const int

line_width=1,

// largura da borda plana

const bool

back=false,

// no fundo

const bool

selection=false,

// destaque para mover

const bool

hidden=true,

// ocultar na lista de objeto

const long

z_order=0)

// prioridade para clicar no

{
//--- redefine o valor de erro
ResetLastError();
//--- criar uma etiqueta retangular
if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0))
{
Print(__FUNCTION__,
": falha ao criar uma etiqueta retangular! Cdigo de erro = ",GetLastError());
return(false);
}
//--- definir coordenadas da etiqueta
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- definir tamanho da etiqueta
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- definir a cor de fundo
ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- definir o tipo de borda
ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border);
//--- determinar o canto do grfico onde as coordenadas do ponto so definidas
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- definir a cor da borda plana (no modo Flat)
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo da linha da borda plana

2000-2015, MetaQuotes Software Corp.

600

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir a largura da borda plana
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
//--- exibir em primeiro plano (false) ou fundo (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo mouse
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto grfico na lista de objeto
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no grfico
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Mover a etiqueta retangular

//+------------------------------------------------------------------+
bool RectLabelMove(const long

chart_ID=0,

// ID do grfico

const string name="RectLabel", // nome da etiqueta


const int

x=0,

// coordenada X

const int

y=0)

// coordenada Y

{
//--- redefine o valor de erro
ResetLastError();
//--- mover a etiqueta retangular
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
{
Print(__FUNCTION__,
": falha para mover coordenada X do objeto! Cdigo de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
{
Print(__FUNCTION__,
": falha para mover coordenada X do objeto! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o tamanho da etiqueta retangular

//+------------------------------------------------------------------+
bool RectLabelChangeSize(const long

chart_ID=0,

// ID do grfico

const string name="RectLabel", // nome da etiqueta


const int

width=50,

// largura da etiqueta

const int

height=18)

// altura da etiqueta

2000-2015, MetaQuotes Software Corp.

601

Constantes Padro, Enumeradores e Estruturas


//--- redefine o valor de erro
ResetLastError();
//--- alterar tamanho da etiqueta
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
{
Print(__FUNCTION__,
": falha ao alterar a largura da etiqueta! Cdigo de erro = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
{
Print(__FUNCTION__,
": falha ao alterar a altura da etiqueta! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Alterar o tipo de borda da etiqueta retangular

//+------------------------------------------------------------------+
bool RectLabelChangeBorderType(const long
const string

chart_ID=0,

// ID do grfico

name="RectLabel",

// nome da etiqueta

const ENUM_BORDER_TYPE border=BORDER_SUNKEN) // tipo de borda


{
//--- redefine o valor de erro
ResetLastError();
//--- alterar tipo de borda
if(!ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border))
{
Print(__FUNCTION__,
": falha ao alterar tipo de borda! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Excluir etiqueta retangular

//+------------------------------------------------------------------+
bool RectLabelDelete(const long

chart_ID=0,

// ID do grfico

const string name="RectLabel") // nome da etiqueta


{
//--- redefine o valor de erro
ResetLastError();
//--- excluir a etiqueta
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,

2000-2015, MetaQuotes Software Corp.

602

Constantes Padro, Enumeradores e Estruturas


": falha ao excluir a etiqueta retangular! Cdigo de erro = ",GetLastError());
return(false);
}
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- tamanho da janela do grfico
long x_distance;
long y_distance;
//--- definir tamanho da janela
if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
{
Print("Falha ao obter a largura do grfico! Cdigo de erro = ",GetLastError());
return;
}
if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
{
Print("Falha ao obter a altura do grfico! Cdigo de erro = ",GetLastError());
return;
}
//--- definir as coordenadas da etiqueta retangular
int x=(int)x_distance/4;
int y=(int)y_distance/4;
//--- definir tamanho da etiqueta
int width=(int)x_distance/4;
int height=(int)y_distance/4;
//--- criar uma etiqueta retangular
if(!RectLabelCreate(0,InpName,0,x,y,width,height,InpBackColor,InpBorder,InpCorner,
InpColor,InpStyle,InpLineWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- redesenhar o grfico e esperar um segundo
ChartRedraw();
Sleep(1000);
//--- alterar o tamanho da etiqueta retangular
int steps=(int)MathMin(x_distance/4,y_distance/4);
for(int i=0;i<steps;i++)
{
//--- redimensionar
width+=1;
height+=1;
if(!RectLabelChangeSize(0,InpName,width,height))
return;

2000-2015, MetaQuotes Software Corp.

603

Constantes Padro, Enumeradores e Estruturas


//--- verificar se o funcionamento do script foi desativado a fora
if(IsStopped())
return;
//--- redesenhar o grfico e esperar por 0.01 segundos
ChartRedraw();
Sleep(10);
}
//--- 1 segundo de atraso
Sleep(1000);
//--- alterar tipo de borda
if(!RectLabelChangeBorderType(0,InpName,BORDER_RAISED))
return;
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- alterar tipo de borda
if(!RectLabelChangeBorderType(0,InpName,BORDER_SUNKEN))
return;
//--- redesenhar o grfico e esperar por um segundo
ChartRedraw();
Sleep(1000);
//--- excluir a etiqueta
RectLabelDelete(0,InpName);
ChartRedraw();
//--- esperar por um segundo
Sleep(1000);
//--}

2000-2015, MetaQuotes Software Corp.

604

Constantes Padro, Enumeradores e Estruturas

Propriedades do Objeto
Todo objeto em um grfico de preo tm um certo conjunto de propriedades. Os valores de
propriedades de objetos so configurados e recebidos por funes correspondentes para trabalhar com
objetos grficos. Para cada tipo de objeto existe seu prprio conjunto de propriedades. Aqui todas os
possveis valores da famlia de enumerao ENUM_OBJECT_PROPERTY so listados. Algumas
propriedades requerem esclarecimento, tais como o nmero de nvel para o objeto de extenso de
Fibonacci. Em tais casos necessrio especificar o valor do parmetro modificador nas funes
ObjectSet...() e ObjectGet...().
The functions defining the properties of graphical objects, as well as ObjectCreate() and ObjectMove()
operations for creating and moving objects along the chart are actually used for sending commands to
the chart. If these functions are executed successfully, the command is included in the common queue
of the chart events. Visual changes in the properties of graphical objects are implemented when
handling the queue of the chart events.
Thus, do not expect an immediate visual update of graphical objects after calling these functions.
Generally, the graphical objects on the chart are updated automatically by the terminal following the
change events - a new quote arrival, resizing the chart window, etc. Use ChartRedraw() function to
forcefully update the graphical objects.
Para funes ChartSetDouble() e ChartGetDouble()
ENUM_OBJECT_PROPERTY_INTEGER
Identificador

Descrio

Tipo de Propriedade

OBJPROP_COLOR

Cor

color

OBJPROP_STYLE

Estilo

ENUM_LINE_STYLE

OBJPROP_WIDTH

Espessura de linha

int

OBJPROP_BACK

Objeto no pano de fundo

bool

OBJPROP_ZORDER

Prioridade de um objeto
grfico para receber eventos
de clickagem em um grfico
(CHARTEVENT_CLICK). O valor
zero default definido ao se
criar um objeto; a prioridade
pode ser
aumentada
se
necessrio. Ao colocar objetos
um sobre o outro, somente
aquele com a maior prioridade
receber
o
evento
CHARTEVENT_CLICK.

long

OBJPROP_FILL

Preenche um objeto com cor


(para
OBJ_RECTANGLE,
OBJ_TRIANGLE, OBJ_ELLIPSE,
OBJ_CHANNEL,
OBJ_STDDEVCHANNEL,
OBJ_REGRESSION)

bool

2000-2015, MetaQuotes Software Corp.

605

Constantes Padro, Enumeradores e Estruturas


OBJPROP_HIDDEN

Probe exibir o nome de um


objeto grfico na lista de
objetos do menu do terminal
"Grficos" - "Objetos" - "Lista
de objetos". O valor true
permite ocultar um objeto da
lista. Por default, true
definido para os objetos que
exibem eventos de calendrio,
histrico de negociao e para
objetos criados a partir de
programas MQL5. Para ver
tais objetos grficos e acessar
suas propriedades, clique no
boto "TODOS" na janela "Lista
de objetos".

bool

OBJPROP_SELECTED

Objeto selecionado

bool

OBJPROP_READONLY

Capacidade de editar texto no


objeto Edit

bool

OBJPROP_TYPE

Tipo de objeto

ENUM_OBJECT r/o

OBJPROP_TIME

Coordenada de tempo

datetime modificador=nmero
do ponto de ancoragem

OBJPROP_SELECTABLE

Disponibilidade de objeto

bool

OBJPROP_CREATETIME

Hora de criao do objeto

datetime

OBJPROP_LEVELS

Nmero de nveis

int

OBJPROP_LEVELCOLOR

Cor das linhas de nvel

color
nvel

OBJPROP_LEVELSTYLE

Estilo da linha de nvel

ENUM_LINE_STYLE
modificador=nmero de nvel

OBJPROP_LEVELWIDTH

Espessura do nvel de linha

texto
objeto

int
nvel

OBJPROP_ALIGN

Alinhamento
de
horizontal
no
"Edit" (OBJ_EDIT)

OBJPROP_FONTSIZE

Tamanho de fonte

int

OBJPROP_RAY_LEFT

Raios indo para esquerda

bool

OBJPROP_RAY_RIGHT

Raios indo para direita

bool

OBJPROP_RAY

Uma linha vertical indo atravs


de todas as janelas de um
grfico

bool

OBJPROP_ELLIPSE

Exibio da elipse completa do


objeto Arco de Fibonacci

bool

2000-2015, MetaQuotes Software Corp.

r/o

modificador=nmero de

modificador=nmero de

ENUM_ALIGN_MODE

606

Constantes Padro, Enumeradores e Estruturas


(OBJ_FIBOARC)
OBJPROP_ARROWCODE

Cdigo de seta para o objeto


Seta

char

OBJPROP_TIMEFRAMES

Visibilidade de um objeto nas


janelas de tempo

conjunto de flags

OBJPROP_ANCHOR

Localizao
ancoragem
grfico

ENUM_ARROW_ANCHOR
OBJ_ARROW),
ENUM_ANCHOR_POINT
OBJ_LABEL,
OBJ_BITMAP_LABEL
OBJ_TEXT)

do ponto
de
de um objeto

(for
(for
and

OBJPROP_XDISTANCE

A distncia em pixels ao longo


do eixo X a partir do canto de
vinculao (see note)

int

OBJPROP_YDISTANCE

A distncia em pixels ao longo


do eixo Y a partir do canto de
vinculao (see note)

int

OBJPROP_DIRECTION

Tendncia do objeto Gann

ENUM_GANN_DIRECTION

OBJPROP_DEGREE

Nvel de marcao da Onda de


Elliott

ENUM_ELLIOT_WAVE_DEGREE

OBJPROP_DRAWLINES

Exibio
de
linhas
para
marcao da Onda de Elliott

bool

OBJPROP_STATE

Estado de boto (pressionado /


no pressionado)

bool

OBJPROP_CHART_ID

ID
do
objeto
"Chart" (OBJ_CHART). Permite
trabalhar com as propriedades
deste objeto como um grfico
normal usando as funes
descritas em Operaes de
Grfico, mas existem algumas
excees.

long r/o

OBJPROP_XSIZE

O tamanho do objeto Chart ao


longo do eixo X (largura em
pixels)
Especificado
para
objetos OBJ_LABEL (read only),
OBJ_BUTTON,
OBJ_CHART,
OBJ_BITMAP,
OBJ_BITMAP_LABEL, OBJ_EDIT,
OBJ_RECTANGLE_LABEL.

int

OBJPROP_YSIZE

O tamanho do objeto Chart ao


longo do eixo X (largura em
pixels)
Especificado
para
objetos OBJ_LABEL (read only),

int

2000-2015, MetaQuotes Software Corp.

607

Constantes Padro, Enumeradores e Estruturas


OBJ_BUTTON,
OBJ_CHART,
OBJ_BITMAP,
OBJ_BITMAP_LABEL, OBJ_EDIT,
OBJ_RECTANGLE_LABEL.
OBJPROP_XOFFSET

A coordenada X do canto
superior esquerdo da rea
visvel retangular nos objetos
grficos "Bitmap Label" e
"Bitmap" (OBJ_BITMAP_LABEL
e OBJ_BITMAP). O valor
definido em pixels em relao
ao canto superior esquerdo da
imagem original.

int

OBJPROP_YOFFSET

A coordenada X do canto
superior esquerdo da rea
visvel retangular nos objetos
grficos "Bitmap Label" e
"Bitmap" (OBJ_BITMAP_LABEL
e OBJ_BITMAP). O valor
definido em pixels em relao
ao canto superior esquerdo da
imagem original.

int

OBJPROP_PERIOD

Janela de tempo para o objeto


Chart

ENUM_TIMEFRAMES

OBJPROP_DATE_SCALE

Exibio da escala de tempo


para o objeto Chart

bool

OBJPROP_PRICE_SCALE

Exibio da escala de preo


para o objeto Chart

bool

OBJPROP_CHART_SCALE

A escala para o objeto Chart

int valor na faixa de 05

OBJPROP_BGCOLOR

A cor de fundo para OBJ_EDIT,


OBJ_BUTTON,
OBJ_RECTANGLE_LABEL

color

OBJPROP_CORNER

O canto do grfico para linkar


um objeto grfico

ENUM_BASE_CORNER

OBJPROP_BORDER_TYPE

Tipo de borda para o objeto


"Rectangle label"

ENUM_BORDER_TYPE

OBJPROP_BORDER_COLOR

Cor de borda para os objetos


OBJ_EDIT e OBJ_BUTTON

color

Ao usar operaes de grfico para o objeto "Chart" (OBJ_CHART), as seguintes limitaes so


impostas:
Ele no pode ser fechado usando ChartClose();
Ativo/perodo no podem ser alterados usando a funo ChartSetSymbolPeriod();
As

seguintes

propriedades

so

sem

efeito:

CHART_SCALE,

2000-2015, MetaQuotes Software Corp.

CHART_BRING_TO_TOP,

608

Constantes Padro, Enumeradores e Estruturas


CHART_SHOW_DATE_SCALE e CHART_SHOW_PRICE_SCALE (ENUM_CHART_PROPERTY_INTEGER).

Para os objetos OBJ_BITMAP_LABEL e OBJ_BITMAP, um modo especial de exibio de imagem pode


ser definido por programao. Neste modo, somente parte da imagem original (na qual uma rea
visvel retangular aplicada) exibida, enquanto o resto da imagem fica invisvel. O tamanho desta
rea deve ser definido usando a propriedade OBJPROP_XSIZE e OBJPROP_YSIZE. A rea visvel pode
ser "movida" somente dentro da imagem original usando as propriedades OBJPROP_XOFFSET e
OBJPROP_YOFFSET.

For the fixed-sized objects: OBJ_BUTTON, OBJ_RECTANGLE_LABEL, OBJ_EDIT and OBJ_CHART


properties OBJPROP_XDISTANCE and OBJPROP_YDISTANCE set the position of the top left point of the
object relative to the chart corner (OBJPROP_CORNER), from which the X and Y coordinates will be
counted in pixels.

Para as funes ObjectSetDouble() e ObjectGetDouble()


ENUM_OBJECT_PROPERTY_DOUBLE
Identificador

Descrio

Tipo de Propriedade

OBJPROP_PRICE

Coordenada de Preo

double
modificador=nmero
do ponto de ancoragem

OBJPROP_LEVELVALUE

Valor de nvel

double
de nvel

OBJPROP_SCALE

Escala
(propriedades
objetos Gann e Arcos
Fibonnacci)

de
de

double

OBJPROP_ANGLE

ngulo. Para os objetos sem


ngulo especificado, criado a
partir de um programa, o valor
igual a EMPTY_VALUE

double

OBJPROP_DEVIATION

Desvio para o Canal de Desvio


Padro

double

modificador=nmero

Para as funes ObjectSetString() e ObjectGetString()


ENUM_OBJECT_PROPERTY_STRING
Identificador

Descrio

Tipo de Propriedade

OBJPROP_NAME

Nome de objeto

string

OBJPROP_TEXT

Descrio do objeto (o texto


contido no objeto)

string

2000-2015, MetaQuotes Software Corp.

609

Constantes Padro, Enumeradores e Estruturas


OBJPROP_TOOLTIP

O texto de um "tooltip" (dica).


Se a propriedade no
definida, ento o "tooltip"
gerado automaticamente pelo
terminal
exibido.
Um
"tooltip" pode ser desabilitado
atravs da atribuio do valor
"\n" (quebra de linha) a ele

string

OBJPROP_LEVELTEXT

Nvel de descrio

string
de nvel

OBJPROP_FONT

Font

string

OBJPROP_BMPFILE

O nome do arquivo BMP para


rtulo Bitmap. Veja tambm
Recursos

string
modificador: 0-estado
Ligado, 1-estado Desligado

OBJPROP_SYMBOL

Ativo para o objeto Chart

string

modificador=nmero

Para o objeto OBJ_RECTANGLE_LABEL ("Rtulo de Retngulo") um dentre os trs modos de design


podem ser definidos, correspondendo aos valores de ENUM_BORDER_TYPE.
ENUM_BORDER_TYPE
Identificador

Descrio

BORDER_FLAT

Forma lisa

BORDER_RAISED

Forma em relevo

BORDER_SUNKEN

Forma cavada

Para o objeto OBJ_EDIT ("Edit") e para a funo ChartScreenShot(), pode-se especificar o tipo de
alinhamento horizontal usando os valores da enumerao ENUM_ALIGN_MODE.
ENUM_ALIGN_MODE
Identificador

Descrio

ALIGN_LEFT

Alinhamento a esquerda

ALIGN_CENTER

Centrado (somente para o objeto Edit)

ALIGN_RIGHT

Alinhamento a direita

Exemplo:
#define

UP

"\x0431"

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

610

Constantes Padro, Enumeradores e Estruturas


void OnStart()
{
//--string label_name="my_OBJ_LABEL_object";
if(ObjectFind(0,label_name)<0)
{
Print("Objeto ",label_name," no encontrado. Cdigo de erro = ",GetLastError());
//--- cria objeto Rtulo
ObjectCreate(0,label_name,OBJ_LABEL,0,0,0);
//--- define coordenada X
ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,200);
//--- define coordenada Y
ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,300);
//--- define cor de texto
ObjectSetInteger(0,label_name,OBJPROP_COLOR,clrWhite);
//--- define texto para objeto Rtulo
ObjectSetString(0,label_name,OBJPROP_TEXT,UP);
//--- define fonte
ObjectSetString(0,label_name,OBJPROP_FONT,"Wingdings");
//--- define tamanho de fonte
ObjectSetInteger(0,label_name,OBJPROP_FONTSIZE,10);
//--- rotao de 45 graus no sentido horrio
ObjectSetDouble(0,label_name,OBJPROP_ANGLE,-45);
//--- desabilita seleo de mouse
ObjectSetInteger(0,label_name,OBJPROP_SELECTABLE,false);
//--- desenha o objeto no grfico
ChartRedraw(0);
}
}

2000-2015, MetaQuotes Software Corp.

611

Constantes Padro, Enumeradores e Estruturas

Mtodos de Vinculao de Objeto


Objetos grficos de Texto e Rtulo (OBJ_TEXT, OBJ_BITMAP_LABEL e OBJ_LABEL) podem ter uma
dentre 9 diferentes formas de vinculao de coordenada. A variante necessria pode ser especificada
usando
a
funo
ObjectSetInteger(chart_handle,
object_name,
OBJPROP_ANCHOR,
anchor_point_mode), onde anchor_point_mode um dos valores de ENUM_ANCHOR_POINT.
ENUM_ANCHOR_POINT
ID

Descrio

ANCHOR_LEFT_UPPER

Ponto de ancoragem no canto superior esquerdo

ANCHOR_LEFT

Ponto de ancoragem para a esquerda no centro

ANCHOR_LEFT_LOWER

Ponto de ancoragem no canto inferior esquerdo

ANCHOR_LOWER

Ponto de ancoragem abaixo no centro

ANCHOR_RIGHT_LOWER

Ponto de ancoragem no canto inferior direito

ANCHOR_RIGHT

Ponto de ancoragem para a direita no centro

ANCHOR_RIGHT_UPPER

Ponto de ancoragem no canto superior direito

ANCHOR_UPPER

Ponto de ancoragem acima no centro

ANCHOR_CENTER

Ponto de ancoragem rigorosamente no centro


do objeto

The OBJ_BUTTON, OBJ_RECTANGLE_LABEL, OBJ_EDIT and OBJ_CHART objects have a fixed anchor
point in the upper left corner (ANCHOR_LEFT_UPPER).
Exemplo:
string text_name="my_OBJ_TEXT_object";
if(ObjectFind(0,text_name)<0)
{
Print("Objeto ",text_name," no encontrado. Cdigo de erro = ",GetLastError());
//--- Obtm o preo mximo do grfico
double chart_max_price=ChartGetDouble(0,CHART_PRICE_MAX,0);
//--- Cria o objeto Label (Rtulo)
ObjectCreate(0,text_name,OBJ_TEXT,0,TimeCurrent(),chart_max_price);
//--- Define cor do texto
ObjectSetInteger(0,text_name,OBJPROP_COLOR,clrWhite);
//--- Define cor de fundo
ObjectSetInteger(0,text_name,OBJPROP_BGCOLOR,clrGreen);
//--- Define texto para o objeto Label (Rtulo)
ObjectSetString(0,text_name,OBJPROP_TEXT,TimeToString(TimeCurrent()));
//--- Define fonte de texto
ObjectSetString(0,text_name,OBJPROP_FONT,"Trebuchet MS");
//--- Define tamanho de fonte
ObjectSetInteger(0,text_name,OBJPROP_FONTSIZE,10);
//--- Vincula no canto superior direito

2000-2015, MetaQuotes Software Corp.

612

Constantes Padro, Enumeradores e Estruturas


ObjectSetInteger(0,text_name,OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
//--- Gira 90 graus anti-horrio
ObjectSetDouble(0,text_name,OBJPROP_ANGLE,90);
//--- Probe a seleo do objeto pelo mouse
ObjectSetInteger(0,text_name,OBJPROP_SELECTABLE,false);
//--- redesenha objeto
ChartRedraw(0);
}

Objetos grficos de Seta (OBJ_ARROW) tm somente 2 formas de linkar suas coordenadas. Os


identificadores esto listados em ENUM_ARROW_ANCHOR.
ENUM_ARROW_ANCHOR
ID

Descrio

ANCHOR_TOP

Ancoragem no lado de cima

ANCHOR_BOTTOM

Ancoragem no lado de baixo

Exemplo:
void OnStart()
{
//--- Arrays auxiliares
double Ups[],Downs[];
datetime Time[];
//--- Define os arrays como sries de tempo
ArraySetAsSeries(Ups,true);
ArraySetAsSeries(Downs,true);
ArraySetAsSeries(Time,true);
//--- Cria handle do Indicador Fractais
int FractalsHandle=iFractals(NULL,0);
Print("FractalsHandle = ",FractalsHandle);
//--- Define valor do ltimo erro para Zero
ResetLastError();
//--- Tenta copiar os valores do indicador
int copied=CopyBuffer(FractalsHandle,0,0,1000,Ups);
if(copied<=0)
{
Print("No possvel copiar os fractais de alta. Erro = ",GetLastError());
return;
}
ResetLastError();
//--- Tenta copiar os valores do indicador
copied=CopyBuffer(FractalsHandle,1,0,1000,Downs);
if(copied<=0)
{
Print("No possvel copiar os fractais de baixa. Erro = ",GetLastError());
return;

2000-2015, MetaQuotes Software Corp.

613

Constantes Padro, Enumeradores e Estruturas


}
ResetLastError();
//--- Copia a srie de tempo contendo as barras de abertura das ltimas 1000 barras
copied=CopyTime(NULL,0,0,1000,Time);
if(copied<=0)
{
Print("No possvel copiar o tempo de abertura das ltimas 1000 barras");
return;
}
int upcounter=0,downcounter=0; // conta o nmero de setas
bool created;// recebe o resultado das tentativas de criar um objeto
for(int i=2;i<copied;i++)// Passa pelos valores do indicador iFractals
{
if(Ups[i]!=EMPTY_VALUE)// Encontrado o fractal de cima
{
if(upcounter<10)// No cria mais que 10 setas "Up"
{
//--- Tenta criar um objeto "Up"
created=ObjectCreate(0,string(Time[i]),OBJ_ARROW_THUMB_UP,0,Time[i],Ups[i]);
if(created)// Se construdo - vamos fazer ajuste nele
{
//--- Ponto de ancoragem em baixo, a fim de no cobrir a barra
ObjectSetInteger(0,string(Time[i]),OBJPROP_ANCHOR,ANCHOR_BOTTOM);
//--- Toque final - colorido
ObjectSetInteger(0,string(Time[i]),OBJPROP_COLOR,clrBlue);
upcounter++;
}
}
}
if(Downs[i]!=EMPTY_VALUE)// Encontrado o menor fractal
{
if(downcounter<10)// No cria mais que 10 setas "Down"
{
//--- Tenta criar um objeto "Down"
created=ObjectCreate(0,string(Time[i]),OBJ_ARROW_THUMB_DOWN,0,Time[i],Downs[i]);
if(created)// Se construdo - vamos fazer ajuste nele
{
//--- Ponto de ancoragem em acima, a fim de no cobrir a barra
ObjectSetInteger(0,string(Time[i]),OBJPROP_ANCHOR,ANCHOR_TOP);
//--- Toque final - colorido
ObjectSetInteger(0,string(Time[i]),OBJPROP_COLOR,clrRed);
downcounter++;
}
}
}
}
}

2000-2015, MetaQuotes Software Corp.

614

Constantes Padro, Enumeradores e Estruturas


Aps a execuo do script o grfico se parecer com esta figura.

2000-2015, MetaQuotes Software Corp.

615

Constantes Padro, Enumeradores e Estruturas

O Canto do Grfico no Qual um Objeto Fica Ligado


H um nmero de objetos grficos, para o qual voc pode definir o canto de um grfico, no qual as
coordenadas so especificadas em pixels. Existem os seguintes tipos de objetos (entre parnteses
esto especificados os identificadores do tipo do objeto):
Rtulo (OBJ_LABEL);
Boto (OBJ_BUTTON);
Grfico (OBJ_CHART);
Rtulo Bitmap (OBJ_BITMAP_LABEL);
Rtulo Rectngulo (OBJ_RECTANGLE_LABEL);
Edit (OBJ_EDIT).
A fim de especificar o canto do grfico, a partir do qual as coordenadas X e Y sero medidas em
pixels, use ObjectSetInteger(chartID, name, OBJPROP_CORNER, chart_corner), onde:
chartID - identificador do grfico;
name nome de um objeto grfico;
OBJPROP_CORNER propriedade ID para especificar o canto para vinculao;
chart_corner o canto desejado do grfico, pode ser um dos valores da enumerao
ENUM_BASE_CORNER.
ENUM_BASE_CORNER
ID

Descrio

CORNER_LEFT_UPPER

Centro de coordenadas est no canto superior


esquerdo do grfico

CORNER_LEFT_LOWER

Centro de coordenadas est no canto inferior


esquerdo do grfico

CORNER_RIGHT_LOWER

Centro de coordenadas est no canto inferior


direito do grfico

CORNER_RIGHT_UPPER

Centro de coordenadas est no canto superior


direito do grfico

Exemplo:
void CreateLabel(long

chart_id,

string name,
int

chart_corner,

string text_label,
int

x_ord,

int

y_ord)

{
//--ObjectCreate(chart_id,name,OBJ_LABEL,0,0,0);
ResetLastError();
if(!ObjectSetInteger(chart_id,name,OBJPROP_CORNER,chart_corner))

2000-2015, MetaQuotes Software Corp.

616

Constantes Padro, Enumeradores e Estruturas


Print("No possvel definir o ngulo para vincular o objeto ",
name,", cdigo de erro ",GetLastError());
ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,x_ord);
ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,y_ord);
ObjectSetString(chart_id,name,OBJPROP_TEXT,text_label);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--int height=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0);
int width=ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0);
string arrows[4]={"LEFT_UPPER","RIGHT_UPPER","RIGHT_LOWER","LEFT_LOWER"};
CreateLabel(0,arrows[0],CORNER_LEFT_UPPER,"0",50,50);
CreateLabel(0,arrows[1],CORNER_RIGHT_UPPER,"1",50,50);
CreateLabel(0,arrows[2],CORNER_RIGHT_LOWER,"2",50,50);
CreateLabel(0,arrows[3],CORNER_LEFT_LOWER,"3",50,50);
}

2000-2015, MetaQuotes Software Corp.

617

Constantes Padro, Enumeradores e Estruturas

Visibilidade de Objetos
A combinao de flags de visibilidade de objeto determina as janelas de tempo de grfico, onde o
objeto visvel. Para definir/obter o valor da propriedade OBJPROP_TIMEFRAMES, voc pode usar as
funes ObjectSetInteger()/ObjectGetInteger().
ID

Valor

Descrio

OBJ_NO_PERIODS

O objeto no desenhado em
nenhuma janela de tempo

OBJ_PERIOD_M1

0x00000001

O objeto desenhado em
grficos de 1 minuto

OBJ_PERIOD_M2

0x00000002

O objeto desenhado em
grficos de 2 minutos

OBJ_PERIOD_M3

0x00000004

O objeto desenhado em
grficos de 3 minutos

OBJ_PERIOD_M4

0x00000008

O objeto desenhado em
grficos de 4 minutos

OBJ_PERIOD_M5

0x00000010

O objeto desenhado em
grficos de 5 minutos

OBJ_PERIOD_M6

0x00000020

O objeto desenhado em
grficos de 6 minutos

OBJ_PERIOD_M10

0x00000040

O objeto desenhado em
grficos de 10 minutos

OBJ_PERIOD_M12

0x00000080

O objeto desenhado em
grficos de 12 minutos

OBJ_PERIOD_M15

0x00000100

O objeto desenhado em
grficos de 15 minutos

OBJ_PERIOD_M20

0x00000200

O objeto desenhado em
grficos de 20 minutos

OBJ_PERIOD_M30

0x00000400

O objeto desenhado em
grficos de 30 minutos

OBJ_PERIOD_H1

0x00000800

O objeto desenhado em
grficos de 1 hora

OBJ_PERIOD_H2

0x00001000

O objeto desenhado em
grficos de 2 horas

OBJ_PERIOD_H3

0x00002000

O objeto desenhado em
grficos de 3 horas

OBJ_PERIOD_H4

0x00004000

O objeto desenhado em
grficos de 4 horas

OBJ_PERIOD_H6

0x00008000

O objeto desenhado em
grficos de 6 horas

2000-2015, MetaQuotes Software Corp.

618

Constantes Padro, Enumeradores e Estruturas


OBJ_PERIOD_H8

0x00010000

O objeto desenhado em
grficos de 8 horas

OBJ_PERIOD_H12

0x00020000

O objeto desenhado em
grficos de 12 horas

OBJ_PERIOD_D1

0x00040000

O objeto desenhado em
grficos dirios

OBJ_PERIOD_W1

0x00080000

O objeto desenhado em
grficos semanais

OBJ_PERIOD_MN1

0x00100000

O objeto desenhado em
grficos mensais

OBJ_ALL_PERIODS

0x001fffff

O objeto desenhado em
todas das janelas de tempo

Os flags de visibilidade podem ser combinados usando o smbolo "|", por exemplo, a combinao de
flags OBJ_PERIOD_M10|OBJ_PERIOD_H4 significa que o objeto ser visvel nas janelas de tempo de
10-minutos e 4-horas.
Exemplo:
void OnStart()
{
//--string highlevel="PreviousDayHigh";
string lowlevel="PreviousDayLow";
double prevHigh;

// O Mxima do dia anterior

double prevLow;

// O Mnimo do dia anterior

double highs[],lows[];

// Arrays de Mximo e Mnimo

//--- redefine o cdigo de erro


ResetLastError();
//--- Obtm os 2 ltimos valores de Mximo na janela de tempo diria
int highsgot=CopyHigh(Symbol(),PERIOD_D1,0,2,highs);
if(highsgot>0) // Se cpia foi bem sucedida
{
Print("Os preos em alta dos ltimos dois dias foram obtidos com sucesso");
prevHigh=highs[0]; // O Mximo do dia anterior
Print("prevHigh = ",prevHigh);
if(ObjectFind(0,highlevel)<0) // Objeto com o mesmo highlevel no encontrado
{
ObjectCreate(0,highlevel,OBJ_HLINE,0,0,0); // Cria o objeto de linha Horizontal
}
//--- Define valor para nvel de preo para a linha highlevel
ObjectSetDouble(0,highlevel,OBJPROP_PRICE,0,prevHigh);
//--- Define a visibilidade apenas para PERIOD_M10 e PERIOD_H4
ObjectSetInteger(0,highlevel,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M10|OBJ_PERIOD_H4);
}
else

2000-2015, MetaQuotes Software Corp.

619

Constantes Padro, Enumeradores e Estruturas


{

Print("No foi possvel obter preos em lata nos ltimos dois dias, Erro = ",GetLastError());
}
//--- redefine o cdigo de erro
ResetLastError();
//--- Obtm os 2 ltimos valores de Mnimo na janela de tempo diria
int lowsgot=CopyLow(Symbol(),PERIOD_D1,0,2,lows);
if(lowsgot>0) // Se cpia foi bem sucedida
{
Print("Os preos em baixa dos ltimos dois dias foram obtidos com sucesso");
prevLow=lows[0]; // O Mnimo do dia anterior
Print("prevLow = ",prevLow);
if(ObjectFind(0,lowlevel)<0) // Objeto com o mesmo lowlevel no encontrado
{
ObjectCreate(0,lowlevel,OBJ_HLINE,0,0,0); // Cria o objeto linha Horizontal
}
//--- Define valor para o nvel de preo para a linha lowlevel
ObjectSetDouble(0,lowlevel,OBJPROP_PRICE,0,prevLow);
//--- Define a visibilidade apenas para PERIOD_M10 e PERIOD_H4
ObjectSetInteger(0,lowlevel,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M10|OBJ_PERIOD_H4);
}

else Print("No foi possvel obter preos em baixa nos ltimos dois dias, Erro = ",GetLastError(
ChartRedraw(0); // redesenha o grfico de forma forada
}

Tambm Veja
PeriodSeconds, Period, Janela de Tempo de Grfico, Data e Hora

2000-2015, MetaQuotes Software Corp.

620

Constantes Padro, Enumeradores e Estruturas

Nveis de Onda de Elliott


Ondas de Elliott so representadas por dois objetos grficos do tipo OBJ_ELLIOTWAVE5 e
OBJ_ELLIOTWAVE3. Para definir o tamanho da onda (mtodo de rotulao de onda), a propriedade
OBJPROP_DEGREE usada, para a qual os valores da enumerao ENUM_ELLIOT_WAVE_DEGREE
podem ser atribudos.
ENUM_ELLIOT_WAVE_DEGREE
ID

Descrio

ELLIOTT_GRAND_SUPERCYCLE

Grande Super-ciclo

ELLIOTT_SUPERCYCLE

Super-ciclo

ELLIOTT_CYCLE

Ciclo

ELLIOTT_PRIMARY

Primrio

ELLIOTT_INTERMEDIATE

Intermedirio

ELLIOTT_MINOR

Menor

ELLIOTT_MINUTE

Minuto

ELLIOTT_MINUETTE

Minuette

ELLIOTT_SUBMINUETTE

Subminuette

Exemplo:
for(int i=0;i<ObjectsTotal(0);i++)
{
string currobj=ObjectName(0,i);
if((ObjectGetInteger(0,currobj,OBJPROP_TYPE)==OBJ_ELLIOTWAVE3) ||
((ObjectGetInteger(0,currobj,OBJPROP_TYPE)==OBJ_ELLIOTWAVE5)))
{
//--- define o nvel de marcao para INTERMEDIRIO
ObjectSetInteger(0,currobj,OBJPROP_DEGREE,ELLIOTT_INTERMEDIATE);
//--- exibe linhas entre topos de ondas
ObjectSetInteger(0,currobj,OBJPROP_DRAWLINES,true);
//--- define cor de linha
ObjectSetInteger(0,currobj,OBJPROP_COLOR,clrBlue);
//--- define largura de linha
ObjectSetInteger(0,currobj,OBJPROP_WIDTH,5);
//--- define descrio
ObjectSetString(0,currobj,OBJPROP_TEXT,"test script");
}
}

2000-2015, MetaQuotes Software Corp.

621

Constantes Padro, Enumeradores e Estruturas

Objetos Gann
Para objetos Gann Fan (OBJ_GANNFAN) e Gann Grade (OBJ_GANNGRID) voc pode especificar dois
valores da enumerao ENUM_GANN_DIRECTION que definem a direo da tendncia.
ENUM_GANN_DIRECTION
ID

Descrio

GANN_UP_TREND

Linha correspondente tendncia de alta

GANN_DOWN_TREND

Linha correspondente tendncia de baixa

Para definir a escala da linha principal como 1x1, use a funo ObjectSetDouble(chart_handle,
gann_object_name, OBJPROP_SCALE, scale), onde:
chart_handle janela do grfico onde o objeto est localizado;
gann_object_name nome do objeto;
OBJPROP_SCALE identificador da propriedade "Escala";
scale escala requerida em unidades de Pips/Barra.

Exemplo de criao de um Ventilador Gann:


void OnStart()
{
//--string my_gann="OBJ_GANNFAN object";
if(ObjectFind(0,my_gann)<0)// Objeto no encontrado
{
//--- Informe sobre a falha
Print("Objeto ",my_gann," no encontrado. Cdigo de erro = ",GetLastError());
//--- Obtm o preo mximo do grfico
double chart_max_price=ChartGetDouble(0,CHART_PRICE_MAX,0);
//--- Obtm o preo mnimo do grfico
double chart_min_price=ChartGetDouble(0,CHART_PRICE_MIN,0);
//--- Quantas barras esto exibidas no grfico

2000-2015, MetaQuotes Software Corp.

622

Constantes Padro, Enumeradores e Estruturas


int bars_on_chart=ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- Cria um array, para escrever nele a hora de abertura de cada barra
datetime Time[];
//--- Arruma acesso ao array como o de srie de tempo
ArraySetAsSeries(Time,true);
//--- Agora copia dados de barras visveis no grfico para dentro deste array
int times=CopyTime(NULL,0,0,bars_on_chart,Time);
if(times<=0)
{
Print("No foi possvel copiar o array com o tempo aberto!");
return;
}
//--- Preparaes preliminares concludas
//--- ndice da barra central no grfico
int center_bar=bars_on_chart/2;
//--- Equador do grfico - entre o mximo e mnimo
double mean=(chart_max_price+chart_min_price)/2.0;
//--- Define as coordenadas do primeiro ponto de ancoragem para o centro
ObjectCreate(0,my_gann,OBJ_GANNFAN,0,Time[center_bar],mean,
//--- Segundo ponto de ancoragem para a direita
Time[center_bar/2],(mean+chart_min_price)/2.0);
Print("Time[center_bar] = "+(string)Time[center_bar]+"
//Print("Time[center_bar]/="+Time[center_bar]+"

Time[center_bar/2] = "+(string)Time[c

Time[center_bar/2]="+Time[center_bar/2]);

//--- Define a escala em unidades de Pips / Barra


ObjectSetDouble(0,my_gann,OBJPROP_SCALE,10);
//--- Define a tendncia da linha
ObjectSetInteger(0,my_gann,OBJPROP_DIRECTION,GANN_UP_TREND);
//--- Define a largura da linha
ObjectSetInteger(0,my_gann,OBJPROP_WIDTH,1);
//--- Define o estilo da linha
ObjectSetInteger(0,my_gann,OBJPROP_STYLE,STYLE_DASHDOT);
//--- Define a cor da linha
ObjectSetInteger(0,my_gann,OBJPROP_COLOR,clrYellowGreen);
//--- Permite ao usurio selecionar um objeto
ObjectSetInteger(0,my_gann,OBJPROP_SELECTABLE,true);
//--- Seleciona ele voc mesmo
ObjectSetInteger(0,my_gann,OBJPROP_SELECTED,true);
//--- Desenha ele no grfico
ChartRedraw(0);
}
}

2000-2015, MetaQuotes Software Corp.

623

Constantes Padro, Enumeradores e Estruturas

Cores Web
As seguintes contantes de cor so definidas para o tipo color:
clrBlack

clrDarkGre
en

clrDarkSlat
eGray

clrOlive

clrGreen

clrTeal

clrNavy

clrPurple

clrM aroon

clrIndigo

clrM idnigh
tBlue

clrDarkBlu
e

clrDarkOliv
eGreen

clrSaddleB
rown

clrForestG
reen

clrOliveDra
b

clrSeaGre
en

clrDarkGol
denrod

clrDarkSlat
eBlue

clrSienna

clrM edium
Blue

clrBrown

clrDarkTur
quoise

clrDimGray

clrLightSe
aGreen

clrDarkViol
et

clrFireBric
k

clrM edium
VioletRed

clrM edium
SeaGreen

clrChocola
te

clrCrimson

clrSteelBlu
e

clrGoldenr
od

clrM edium
SpringGre
en

clrLawnGr
een

clrCadetBl
ue

clrDarkOrc
hid

clrYellowG
reen

clrLimeGre
en

clrOrange
Red

clrDarkOra
nge

clrOrange

clrGold

clrYellow

clrChartre
use

clrLime

clrSpringG
reen

clrAqua

clrDeepSk
yBlue

clrBlue

clrM agent
a

clrRed

clrGray

clrSlateGra
y

clrPeru

clrBlueViol
et

clrLightSla
teGray

clrDeepPin
k

clrM edium
Turquoise

clrDodgerB
lue

clrTurquoi
se

clrRoyalBlu
e

clrSlateBlu
e

clrDarkKha
ki

clrIndianR
ed

clrM edium
Orchid

clrGreenY
ellow

clrM edium
Aquamarin
e

clrDarkSea
Green

clrTomato

clrRosyBro
wn

clrOrchid

clrM edium
Purple

clrPaleViol
etRed

clrCoral

clrCornflo
werBlue

clrDarkGra
y

clrSandyBr
own

clrM edium
SlateBlue

clrTan

clrDarkSal
mon

clrBurlyWo
od

clrHotPink

clrSalmon

clrViolet

clrLightCor
al

clrSkyBlue

clrLightSal
mon

clrPlum

clrKhaki

clrLightGr
een

clrAquama
rine

clrSilver

clrLightSky
Blue

clrLightSte
elBlue

clrLightBlu
e

clrPaleGre
en

clrThistle

clrPowder
Blue

clrPaleGol
denrod

clrPaleTur
quoise

clrLightGra
y

clrWheat

clrNavajoW
hite

clrM occasi
n

clrLightPin
k

clrGainsbo
ro

clrPeachP
uff

clrPink

clrBisque

clrLightGol
denrod

clrBlanche
dAlmond

clrLemonC
hiffon

clrBeige

clrAntique
White

clrPapaya
Whip

clrCornsilk

clrLightYel
low

clrLightCya
n

clrLinen

clrLavende
r

clrM istyRo
se

clrOldLace

clrWhiteS
moke

clrSeashell

clrIvory

clrHoneyd
ew

clrAliceBlu
e

clrLavend
erBlush

clrM intCre
am

clrSnow

clrWhite

A cor pode ser definida para um objeto usando a funo ObjectSetInteger(). Para definir a cor de um
indicador customizado a funo PlotIndexSetInteger() usada. Para obter valores de cor existem
funes similares ObjectGetInteger() e PlotIndexGetInteger().

2000-2015, MetaQuotes Software Corp.

624

Constantes Padro, Enumeradores e Estruturas


Exemplo:
//---- configurando um indicador
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots

#property indicator_type1

DRAW_LINE

#property indicator_type2

DRAW_LINE

#property indicator_type3

DRAW_LINE

#property indicator_color1

clrBlue

#property indicator_color2

clrRed

#property indicator_color3

clrLime

2000-2015, MetaQuotes Software Corp.

625

Constantes Padro, Enumeradores e Estruturas

Wingdings
Caracteres de Wingdings usados com o objeto OBJ_ARROW:

Um caractere necessrio pode ser definido usando a funo ObjectSetInteger().


Exemplo:
void OnStart()
{
//--string up_arrow="up_arrow";
datetime time=TimeCurrent();
double lastClose[1];
int close=CopyClose(Symbol(),Period(),0,1,lastClose);

// Obtm o preo de Fechamento

//--- Se o preo foi obtido


if(close>0)
{
ObjectCreate(0,up_arrow,OBJ_ARROW,0,0,0,0,0);

// Cria uma seta

ObjectSetInteger(0,up_arrow,OBJPROP_ARROWCODE,241);

// Define o cdigo da seta

ObjectSetInteger(0,up_arrow,OBJPROP_TIME,time);

// Define hora

ObjectSetDouble(0,up_arrow,OBJPROP_PRICE,lastClose[0]);// Define preo


ChartRedraw(0);

// Desenha a seta agora

}
else
Print("No foi possvel obter o ltimo Fechamento de preo!");
}

2000-2015, MetaQuotes Software Corp.

626

Constantes Padro, Enumeradores e Estruturas

Constantes de Indicador
Existem 37 indicadores tcnicos pr-definidos, que podem ser usados em programas escritos na
linguagem MQL5. Alm disso, existe uma oportunidade para criar indicadores customizados usando a
funo iCustom(). Todas as constantes requeridas para isso esto divididas em 5 grupos:
Constantes de preo para seleo do tipo de preo ou volume, sob o qual um indicador calculado;
Mtodos de suavizao mtodos de suavizao internos usados em indicadores;
Linhas de indicador identificadores de buffers do indicador ao acessar valores do indicador usando
CopyBuffer();
Estilos de desenho para indicar um dos 18 tipos de desenhos e configuraes de estilo de desenho
da linha;
Propriedades de indicadores customizados so usados em funes para trabalhar com indicadores
customizados;
Tipos de indicadores so usados para especificar o tipo de indicador tcnico ao criar um handle
usando IndicatorCreate();
Identificadores de tipos de dado so usados para especificar o tipo de dado passado em um array do
tipo MqlParam para dentro de uma funo IndicatorCreate().

2000-2015, MetaQuotes Software Corp.

627

Constantes Padro, Enumeradores e Estruturas

Constantes de Preo
Clculos de indicatores tcnicos requerem valores de preo e/ou valores de volumes, sob os quais
clculos sero realizados. Existem 7 indicadores pr-definidos a partir da enumerao
ENUM_APPLIED_PRICE, usados para especificar o preo base desejado para os clculos.
ENUM_APPLIED_PRICE
ID

Descrio

PRICE_CLOSE

Preo de Fechamento

PRICE_OPEN

Preo de Abertura

PRICE_HIGH

O preo mximo para o perodo

PRICE_LOW

O preo mnimo para o perodo

PRICE_MEDIAN

O preo mediano, (mximo + mnimo)/2

PRICE_TYPICAL

Preo
tpico,
fechamento)/3

PRICE_WEIGHTED

Preo mdio, (mximo + mnimo + fechamento +


fechamento)/4

(mximo

mnimo

Caso o volume seja usado nos clculos, necessrio especificar um dos dois valores a partir da
enumerao ENUM_APPLIED_VOLUME.
ENUM_APPLIED_VOLUME
ID

Descrio

VOLUME_TICK

Volume de Tick

VOLUME_REAL

Volume de negociao

O indicador tcnico iStochastic() pode ser calculado de duas formas usando:


ou somente preos de Fechamento;
ou preos de Mximo e Mnimo.
Para selecionar uma variante necessria para o clculo, especifique um dos valores da enumerao
ENUM_STO_PRICE.
ENUM_STO_PRICE
ID

Descrio

STO_LOWHIGH

Clculo baseado em preos Mnimo/Mximo

STO_CLOSECLOSE

Clculo baseado em preos Fechamento/


Fechamento

Se um indicador tcnico usa nos clculos dados de preo, seu tipo definido por
ENUM_APPLIED_PRICE, ento o handle de qualquer indicador (incorporado no terminal ou escrito por
um usurio) pode ser usado como a srie de preo de entrada. Neste caso, os valores do buffer zero

2000-2015, MetaQuotes Software Corp.

628

Constantes Padro, Enumeradores e Estruturas


do indicador sero utilizados para os clculos. Isso torna fcil construir valores de um indicador usando
valores de um outro indicador. O handle de um indicador customizado criado por meio de chamada
da funo iCustom().
Exemplo:
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots

//--- parmetros de entrada


input int

RSIperiod=14;

// Perodo para clculo do RSI

input int

Smooth=8;

// Perodo de suavizao do RSI

input ENUM_MA_METHOD meth=MODE_SMMA; // Mtodo de suavizao


//---- plotar RSI
#property indicator_label1

"RSI"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//---- plotar RSI_Smoothed


#property indicator_label2

"RSI_Smoothed"

#property indicator_type2

DRAW_LINE

#property indicator_color2

clrNavy

#property indicator_style2

STYLE_SOLID

#property indicator_width2

//--- buffers do indicador


double

RSIBuffer[];

// Aqui ns armazenamos os valores do RSI

double

RSI_SmoothedBuffer[]; // Aqui estaro os valores suavizados dos RSI

int

RSIhandle;

// Handle do indicador RSI

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
void OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,RSIBuffer,INDICATOR_DATA);
SetIndexBuffer(1,RSI_SmoothedBuffer,INDICATOR_DATA);
IndicatorSetString(INDICATOR_SHORTNAME,"iRSI");
IndicatorSetInteger(INDICATOR_DIGITS,2);
//--RSIhandle=iRSI(NULL,0,RSIperiod,PRICE_CLOSE);
//--}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,

2000-2015, MetaQuotes Software Corp.

629

Constantes Padro, Enumeradores e Estruturas


const double &price[]
)
{
//---

Redefine o valor do ltimo erro

ResetLastError();
//--- Obtm dados do indicador RSI em um array RSIBuffer[]
int copied=CopyBuffer(RSIhandle,0,0,rates_total,RSIBuffer);
if(copied<=0)
{
Print("No possvel copiar os valores do indicador RSI. Erro = ",
GetLastError(),",

copiado =",copied);

return(0);
}
//--- Cria o indicador de valores mdios usando valores do RSI
int RSI_MA_handle=iMA(NULL,0,Smooth,0,meth,RSIhandle);
copied=CopyBuffer(RSI_MA_handle,0,0,rates_total,RSI_SmoothedBuffer);
if(copied<=0)
{
Print("No possvel copiar o indicador suavizado do RSI. Erro = ",
GetLastError(),",

copiado =",copied);

return(0);
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

2000-2015, MetaQuotes Software Corp.

630

Constantes Padro, Enumeradores e Estruturas

Mtodos de Suavizao
Muitos indicadores tcnicos so baseados em vrios mtodos de suavizao de sries de preo. Alguns
indicadores tcnicos padres requerem especificao da tipo de suavizao como um parmetro de
entrada. Para especificar o tipo desejado de suavizao, identificadores listados na enumerao
ENUM_MA_METHOD so usados.
ENUM_MA_METHOD
ID

Descrio

MODE_SMA

Mdia simples

MODE_EMA

Mdia exponencial

MODE_SMMA

Mdia suavizada

MODE_LWMA

Mdia linear-ponderada

Exemplo:
double ExtJaws[];
double ExtTeeth[];
double ExtLips[];
//---- handles para mdias mveis
int

ExtJawsHandle;

int

ExtTeethHandle;

int

ExtLipsHandle;

//--- obtm handles de MA's


ExtJawsHandle=iMA(NULL,0,JawsPeriod,0,MODE_SMMA,PRICE_MEDIAN);
ExtTeethHandle=iMA(NULL,0,TeethPeriod,0,MODE_SMMA,PRICE_MEDIAN);
ExtLipsHandle=iMA(NULL,0,LipsPeriod,0,MODE_SMMA,PRICE_MEDIAN);

2000-2015, MetaQuotes Software Corp.

631

Constantes Padro, Enumeradores e Estruturas

Linhas de Indicadores
Alguns indicadores tcnicos tm vrios buffers desenhados no grfico. A numerao de buffers de um
indicador comea com 0. Ao copiar valores de indicador usando a funo CopyBuffer() em um array do
tipo double, para alguns indicadores, pode-se indicar o identificador de um buffer copiado ao invs de
seu nmero.

Identificadores de linhas de indicador permitidos ao copiar valores de iMACD(), iRVI() e iStochastic().


Constante

Valor

Descrio

MAIN_LINE

Linha principal

SIGNAL_LINE

Linha de sinal

Identificadores de linhas de indicador permitidos ao copiar valores de ADX() e ADXW().


Constante

Valor

Descrio

MAIN_LINE

Linha principal

PLUSDI_LINE

Linha +DI

MINUSDI_LINE

Linha DI

Identificadores de linhas de indicador permitidos ao copiar valores de iBands().


Constante

Valor

Descrio

BASE_LINE

Linha principal

UPPER_BAND

Limite superior

LOWER_BAND

Limite inferior

Identificadores de linhas de indicador permitidos ao copiar valores de iEnvelopes() e iFractals().


Constante

Valor

Descrio

UPPER_LINE

Linha de cima

LOWER_LINE

Linha de baixo

Identificadores de linhas de indicador permitidos ao copiar valores de iGator()


Constante

Valor

Descrio

UPPER_HISTOGRAM

Histograma superior

LOWER_HISTOGRAM

Histograma inferior

Identificadores de linhas de indicador permitidos ao copiar valores de iAlligator().


Constante

Valor

2000-2015, MetaQuotes Software Corp.

Descrio

632

Constantes Padro, Enumeradores e Estruturas


GATORJAW_LINE

Linha Jaw

GATORTEETH_LINE

Linha Teeth

GATORLIPS_LINE

Linha Lips

Identificadores de linhas de indicador permitidos ao copiar valores de iIchimoku().


Constante

Valor

Descrio

TENKANSEN_LINE

Linha Tenkan-sen

KIJUNSEN_LINE

Linha Kijun-sen

SENKOUSPANA_LINE

Linha Senkou Span A

SENKOUSPANB_LINE

Linha Senkou Span B

CHIKOUSPAN_LINE

Linha Chikou Span

2000-2015, MetaQuotes Software Corp.

633

Constantes Padro, Enumeradores e Estruturas

Estilos de Desenho
Ao criarum indicador customizado, pode-se especificar um dos 18 tipos de plotagem grfica (como
exibidos na janela do grfico principal ou em uma sub-janela do grfico), cujos valores so
especificados na enumerao ENUM_DRAW_TYPE.
Em um indicador customizado, permitido usar quaisquer tipos de indicador construdo/desenho.
Cada tipo de construo requer especificao de um a cinco arrays globais para armazenar dados
necessrios para o desenho. Estes arrays de dados devem ser associados com buffers de indicador
usando a funo SetIndexBuffer(). O tipo de dados de ENUM_INDEXBUFFER_TYPE deve ser especificado
para cada buffer.
Dependendo do estilo de desenho, pode-se necessitar de um a quatro buffers de valor (marcados como
INDICADOR_DATA). Se um estilo admite alternao dinmica de cores (todos os estilos contm COLOR
nos seus nomes), ento voc precisar de um buffer adicional de cor (tipo indicado
INDICATOR_COLOR_INDEX). Os buffers de cor so sempre vinculados aps os buffers de valores
correspondendo ao estilo.
ENUM_DRAW_TYPE
ID

Descrio

Estruturas de Dados

Buffers de cor

DRAW_NONE

No desenhado

DRAW_LINE

Linha

DRAW_SECTION

Seo

DRAW_HISTOGRAM

Histograma a partir da
linha zero

DRAW_HISTOGRAM2

Histograma de dois
buffers do indicador

DRAW_ARROW

Desenha setas

DRAW_ZIGZAG

Estilo Zigzag permite


diviso vertical na
barra

DRAW_FILLING

Preenchimento de cor
entre dos dois nveis

DRAW_BARS

Exibe
como
uma
seqncia de barras

DRAW_CANDLES

Exibe
como
um
seqncia de candles

DRAW_COLOR_LINE

Linha Multicolorida

DRAW_COLOR_SECTIO
N

Diviso Multicolorida

DRAW_COLOR_HISTO
GRAM

Histograma
multicolorida a partir
da linha zero

2000-2015, MetaQuotes Software Corp.

634

Constantes Padro, Enumeradores e Estruturas


DRAW_COLOR_HISTO
GRAM2

Histograma
multicolorido dos dois
buffers do indicador

DRAW_COLOR_ARRO
W

Desenho
de
multicoloridas

DRAW_COLOR_ZIGZAG

ZigZag Multicolorido

DRAW_COLOR_BARS

Barras multicoloridas

DRAW_COLOR_CANDL
ES

Candles multicoloridos

Para refinar a exibio dos tipos


ENUM_PLOT_PROPERTY so usados.

setas

de desenho selecionados, identificadores

listados

em

Para funes PlotIndexSetInteger() e PlotIndexGetInteger()


ENUM_PLOT_PROPERTY_INTEGER
ID

Descrio

Tipo da Propriedade

PLOT_ARROW

Cdigo de seta para estilo


DRAW_ARROW

uchar

PLOT_ARROW_SHIFT

Deslocamento vertical de setas


para estilo DRAW_ARROW

int

PLOT_DRAW_BEGIN

Nmero de barras iniciais sem


desenho e valores na Janela de
Dados

int

PLOT_DRAW_TYPE

Tipo de construo grfica

ENUM_DRAW_TYPE

PLOT_SHOW_DATA

Sinal de exibio de valores de


construo na Janela de Dados

bool

PLOT_SHIFT

Deslocamento da plotagem do
indicador ao longo do eixo
tempo em barras

int

PLOT_LINE_STYLE

Estilo de linha de desenho

ENUM_LINE_STYLE

PLOT_LINE_WIDTH

A espessura
desenho

PLOT_COLOR_INDEXES

O nmero de cores

int

PLOT_LINE_COLOR

O ndice de um buffer contendo


a cor de desenho

color
modificador = nmero
de ndice de cores

da

linha

de

Para a funo PlotIndexSetDouble()


ENUM_PLOT_PROPERTY_DOUBLE

2000-2015, MetaQuotes Software Corp.

int

635

Constantes Padro, Enumeradores e Estruturas


ID

Descrio

PLOT_EMPTY_VALUE

Tipo da Propriedade

Um valor vazio para plotagem,


para a qual no h desenho

double

Para a funo PlotIndexSetString()


ENUM_PLOT_PROPERTY_STRING
ID

Descrio

PLOT_LABEL

Tipo da Propriedade

O nome da srie grfica do


indicador para exibir na Janela
de Dados Ao trabalhar com
estilos
grficos
complexos
exigindo vrios buffers de
indicador para a exposio, os
nomes para cada buffer pode
ser especificado utilizando ";"
como separador. O cdigo de
exemplo
mostrado
na
DRAW_CANDLES

string

5 estilos podem ser usados para desenhar linhas em indicadores customizados. Eles so vlidos
somente para a espessura de linha 0 ou 1.
ENUM_LINE_STYLE
ID

Descrio

STYLE_SOLID

Linha slida

STYLE_DASH

Linha tracejada

STYLE_DOT

Linha pontilhada

STYLE_DASHDOT

Linha trao-ponto

STYLE_DASHDOTDOT

Trao - dois pontos

Para definir o estilo de desenho de linha e o tipo de desenho, a funo PlotIndexSetInteger() usada.
Para as extenses de Fibonacci, a espessura e o estilo de desenho dos nveis podem ser indicados
usando a funo ObjectSetInteger().
Exemplo:
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//--- buffers do indicador


double

MABuffer[];

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

636

Constantes Padro, Enumeradores e Estruturas


void OnInit()
{
//--- Associa o array ao buffer do indicador com ndice 0
SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
//--- Define o desenho da linha
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
//--- Define o estilo da linha
PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_DOT);
//--- Define cor de linha
PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrRed);
//--- Define espessura de linha
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,1);
//--- Define rtulos para a linha
PlotIndexSetString(0,PLOT_LABEL,"Moving Average");
//--}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--for(int i=prev_calculated;i<rates_total;i++)
{
MABuffer[i]=close[i];
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

2000-2015, MetaQuotes Software Corp.

637

Constantes Padro, Enumeradores e Estruturas

Propriedades de Indicador Customizado


O nmero de buffers de indicador que podem ser usados em um indicador customizado ilimitado.
Mas para cada array que designado como um buffer de indicador usando a funo SetIndexBuffer(),
necessrio especificar o tipo de dado que ele armazenar. Este pode ser um dos valores da
enumerao ENUM_INDEXBUFFER_TYPE.
ENUM_INDEXBUFFER_TYPE
ID

Descrio

INDICATOR_DATA

Dados para desenho

INDICATOR_COLOR_INDEX

Cor

INDICATOR_CALCULATIONS

Buffers auxiliares para clculos intermedirios

Um indicador customizado tem muitas configuraes para fornecer uma exibio conveniente. Estas
configuraes so feitas atravs da atribuio de propriedades de indicador correspondentes usando a
funes IndicatorSetDouble(), IndicatorSetInteger() e IndicatorSetString(). Identificadores de
propriedades de indicador so listados na enumerao ENUM_CUSTOMIND_PROPERTY.
ENUM_CUSTOMIND_PROPERTY_INTEGER
ID

Descrio

Tipo da Propriedade

INDICATOR_DIGITS

Acuracidade de desenho de
valores de indicador

int

INDICATOR_HEIGHT

Altura fixa da janela do


indicador (o comando de prprocessador
#property
indicator_height)

int

INDICATOR_LEVELS

Nmero de nveis na janela do


indicador

int

INDICATOR_LEVELCOLOR

Cor da linha de nvel

color
modificador
= nmero de nvel

INDICATOR_LEVELSTYLE

Estilo da linha de nvel

ENUM_LINE_STYLE
modificador = nmero de nvel

INDICATOR_LEVELWIDTH

Espessura da linha de nvel

int
modificador
= nmero de nvel

ENUM_CUSTOMIND_PROPERTY_DOUBLE
ID

Descrio

Tipo da Propriedade

INDICATOR_MINIMUM

Mnimo da janela do indicador

double

INDICATOR_MAXIMUM

Mximo da janela do indicador

double

INDICATOR_LEVELVALUE

Valor de nvel

double
modificador = nmero de nvel

2000-2015, MetaQuotes Software Corp.

638

Constantes Padro, Enumeradores e Estruturas


ENUM_CUSTOMIND_PROPERTY_STRING
ID

Descrio

Tipo da Propriedade

INDICATOR_SHORTNAME

Nome do indicador abreviado

string

INDICATOR_LEVELTEXT

Nvel de descrio

string
modificador
= nmero de nvel

Exemplos:
//--- configuraes do indicador
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots

#property indicator_type1

DRAW_LINE

#property indicator_type2

DRAW_LINE

#property indicator_color1

clrLightSeaGreen

#property indicator_color2

clrRed

//--- parmetros de entrada


extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
//--- buffers do indicador
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
void OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,MainBuffer,INDICATOR_DATA);
SetIndexBuffer(1,SignalBuffer,INDICATOR_DATA);
SetIndexBuffer(2,HighesBuffer,INDICATOR_CALCULATIONS);
SetIndexBuffer(3,LowesBuffer,INDICATOR_CALCULATIONS);
//--- define acuracidade
IndicatorSetInteger(INDICATOR_DIGITS,2);
//--- define nveis
IndicatorSetInteger(INDICATOR_LEVELS,2);
IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);
IndicatorSetDouble(INDICATOR_LEVELVALUE,1,80);
//--- define mximo e mnimo para sub-janela
IndicatorSetDouble(INDICATOR_MINIMUM,0);
IndicatorSetDouble(INDICATOR_MAXIMUM,100);
//--- define a primeira barra a partir do qual o ndice ser desenhado
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,KPeriod+Slowing-2);
PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,KPeriod+Slowing+DPeriod);

2000-2015, MetaQuotes Software Corp.

639

Constantes Padro, Enumeradores e Estruturas


//--- define estilo STYLE_DOT para a segunda linha
PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_DOT);
//--- nome para Janela de Dados e rtulo da sub-janela do indicador
IndicatorSetString(INDICATOR_SHORTNAME,"Stoch("+KPeriod+","+DPeriod+","+Slowing+")");
PlotIndexSetString(0,PLOT_LABEL,"Main");
PlotIndexSetString(1,PLOT_LABEL,"Signal");
//--- define valor vazio para linha de desenho
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
//--- inicializao concluda
}

2000-2015, MetaQuotes Software Corp.

640

Constantes Padro, Enumeradores e Estruturas

Indicadores Tcnicos
Existem duas formas de criar via programao um indicador para posteriormente acessar seus
valores. A primeira forma especificar diretamente um nome de funo da lista de indicadores
tcnicos. A segunda forma , usando a funo IndicatorCreate(), criar de forma uniforme um handle
de qualquer indicador atravs da atribuio de um identificador da enumerao ENUM_INDICATOR.
Ambos as formas de criar handles so iguais, voc pode usar aquela que for mais conveniente em um
caso particular ao escrever um programa em MQL5.
Ao criar um indicador do tipo IND_CUSTOM, o campo type do primeiro elemento de um array de
parmetros de entrada MqlParam deve ter valor TYPE_STRING da enumerao ENUM_DATATYPE,
enquanto que o campo string_value do primeiro elemento deve conter o nome do indicador
customizado.
ENUM_INDICATOR
Identificador

Indicador

IND_AC

Accelerator Oscillator

IND_AD

Accumulation/Distribution

IND_ADX

Average Directional Index

IND_ADXW

ADX by Welles Wilder

IND_ALLIGATOR

Alligator

IND_AMA

Adaptive Moving Average

IND_AO

Awesome Oscillator

IND_ATR

Average True Range

IND_BANDS

Bollinger Bands

IND_BEARS

Bears Power

IND_BULLS

Bulls Power

IND_BWMFI

Market Facilitation Index

IND_CCI

Commodity Channel Index

IND_CHAIKIN

Chaikin Oscillator

IND_CUSTOM

Custom indicator

IND_DEMA

Double Exponential Moving Average

IND_DEMARKER

DeMarker

IND_ENVELOPES

Envelopes

IND_FORCE

Force Index

IND_FRACTALS

Fractals

IND_FRAMA

Fractal Adaptive Moving Average

IND_GATOR

Gator Oscillator

2000-2015, MetaQuotes Software Corp.

641

Constantes Padro, Enumeradores e Estruturas


IND_ICHIMOKU

Ichimoku Kinko Hyo

IND_MA

Moving Average

IND_MACD

MACD

IND_MFI

Money Flow Index

IND_MOMENTUM

Momentum

IND_OBV

On Balance Volume

IND_OSMA

OsMA

IND_RSI

Relative Strength Index

IND_RVI

Relative Vigor Index

IND_SAR

Parabolic SAR

IND_STDDEV

Standard Deviation

IND_STOCHASTIC

Stochastic Oscillator

IND_TEMA

Triple Exponential Moving Average

IND_TRIX

Triple Exponential Moving Averages Oscillator

IND_VIDYA

Variable Index Dynamic Average

IND_VOLUMES

Volumes

IND_WPR

Williams' Percent Range

2000-2015, MetaQuotes Software Corp.

642

Constantes Padro, Enumeradores e Estruturas

Identificadores de Tipo de Dados


Quando criar um indicador usando a funo IndicatorCreate(), um array de tipo MqlParam deve ser
especificado como o ltimo parmetro. Por sua vez, a estrutura MqlParam, descrevendo o indicador,
contm um tipo de campo especial. Este campo contm informao sobre o tipo de dado (real, integer
pi string type) que passado por um elemento especfico do array. O valor deste campo da estrutura
MqlParam pode ser um dos valores ENUM_DATATYPE.
ENUM_DATATYPE
Identificador

Tipo de dado

TYPE_BOOL

bool

TYPE_CHAR

char

TYPE_UCHAR

uchar

TYPE_SHORT

short

TYPE_USHORT

ushort

TYPE_COLOR

color

TYPE_INT

int

TYPE_UINT

uint

TYPE_DATETIME

datetime

TYPE_LONG

long

TYPE_ULONG

ulong

TYPE_FLOAT

float

TYPE_DOUBLE

double

TYPE_STRING

string

Cada elemento do array descreve o correspondente parmetro de entrada de um indicador tcnico


criado, assim o tipo e a ordem dos elementos no array devem ser rigorosamente mantidos em
concordncia com a descrio.

2000-2015, MetaQuotes Software Corp.

643

Constantes Padro, Enumeradores e Estruturas

Estado de Ambiente
As constantes que descrevem o ambiente de execuo corrente de um programa MQL5 esto divididas
em grupos:
Propriedades do terminal cliente informaes sobre o terminal cliente;
Propriedades do programa-MQL5 executado propriedades do programa MQL5, que ajuda a
controlar sua execuo;
Propriedades do ativo obteno de informaes sobre um ativo;
Propriedades da conta informaes sobre a conta atual;
Estatsticas de teste resultados de teste de um Expert Advisor.

2000-2015, MetaQuotes Software Corp.

644

Constantes Padro, Enumeradores e Estruturas

Propriedades do Terminal Cliente


Informaes sobre o terminal cliente podem ser obtidos atravs de duas funes:
TerminalInfoInteger() e TerminalInfoString(). Por parmetros, estas funes aceitam valores do
ENUM_TERMINAL_INFO_INTEGER e ENUM_TERMINAL_INFO_STRING respectivamente.
ENUM_TERMINAL_INFO_INTEGER
Identificador

Descrio

Tipo

TERMINAL_BUILD

O nmero de compilao (build)


do terminal cliente

int

TERMINAL_COMMUNITY_ACCO
UNT

The flag indicates the presence


of
MQL5.community
authorization data in the
terminal

int

TERMINAL_COMMUNITY_CONNE
CTION

Connection
MQL5.community

to

bool

TERMINAL_CONNECTED

Conexo com um servidor de


negociao

bool

TERMINAL_DLLS_ALLOWED

Permisso para usar DLL

bool

TERMINAL_TRADE_ALLOWED

Permisso para negociar

bool

TERMINAL_EMAIL_ENABLED

Permisso para enviar e-mails


usando servidor-SMTP e login,
especificado nas configuraes
do terminal

bool

TERMINAL_FTP_ENABLED

Permisso
para
enviar
relatrios usando servidor-FTP
e login, especificado nas
configuraes do terminal

bool

TERMINAL_NOTIFICATIONS_EN
ABLED

Permission
to
send
notifications to smartphone

bool

TERMINAL_MAXBARS

A quantidade mxima
barras no grfico

int

TERMINAL_MQID

The flag indicates the presence


of MetaQuotes ID data to send
Push notifications

bool

TERMINAL_CODEPAGE

Nmero do cdigo de pgina da


linguagem
instalado
no
terminal cliente

int

TERMINAL_CPU_CORES

O nmero de ncleos de CPU no


sistema

int

TERMINAL_DISK_SPACE

Espao livre de disco para a


pasta MQL5\Files do terminal

int

de

2000-2015, MetaQuotes Software Corp.

645

Constantes Padro, Enumeradores e Estruturas


(agente), MB
TERMINAL_MEMORY_PHYSICAL

Memria fsica no sistema, MB

int

TERMINAL_MEMORY_TOTAL

Memria disponvel para o


processo do terminal (agente),
MB

int

TERMINAL_MEMORY_AVAILABL
E

Memria livre do processo do


terminal (agente), MB

int

TERMINAL_MEMORY_USED

Memria usada pelo terminal


(agente), MB

int

TERMINAL_X64

Indicao do "terminal 64-bit"

bool

TERMINAL_OPENCL_SUPPORT

A verso do OpenCL suportado


no formato 0x00010002 = 1.2.
"0" significa que OpenCL no
suportado

int

ENUM_TERMINAL_INFO_DOUBLE
Identifier
TERMINAL_COMMUNITY_BALAN
CE

Description

Type

Balance in MQL5.community

double

Operaes de arquivo podem ser realizadas somente em dois diretrios; os caminhos correspondentes
podem ser obtidos usando solicitao para as propriedades TERMINAL_DATA_PATH e
TERMINAL_COMMONDATA_PATH.
ENUM_TERMINAL_INFO_STRING
Identificador

Descrio

Tipo

TERMINAL_LANGUAGE

Linguagem do terminal

string

TERMINAL_COMPANY

Nome da empresa

string

TERMINAL_NAME

Nome do terminal

string

TERMINAL_PATH

Pasta a partir da
terminal foi iniciado

TERMINAL_DATA_PATH

Pasta na qual dados


terminal so armazenados

do

string

TERMINAL_COMMONDATA_PAT
H

Caminho comum para todos os


terminais instalados em um
computador

string

qual o

string

Para um melhor entendimento dos caminhos armazenados nas propriedades dos parmetros

2000-2015, MetaQuotes Software Corp.

646

Constantes Padro, Enumeradores e Estruturas


TERMINAL_PATH, TERMINAL_DATA_PATH e TERMINAL_COMMONDATA_PATH, recomendado executar
o script, que retornar estes valores para a cpia corrente do terminal cliente, instalado em seu
computador.
Example: Script retorna informaes sobre os caminhos do terminal cliente
//+------------------------------------------------------------------+
//|

Check_TerminalPaths.mq5 |

//|

Copyright 2009, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--Print("TERMINAL_PATH = ",TerminalInfoString(TERMINAL_PATH));
Print("TERMINAL_DATA_PATH = ",TerminalInfoString(TERMINAL_DATA_PATH));
Print("TERMINAL_COMMONDATA_PATH = ",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
}

Como resultado da execuo do script no Dirio de Experts, voc ver mensagens, como as seguintes:

2000-2015, MetaQuotes Software Corp.

647

Constantes Padro, Enumeradores e Estruturas

Propriedades do Programa MQL5 em Execuo


Para obter informaes sobre o programa mql5 em execuo no momento, as constantes
ENUM_MQL_INFO_INTEGER e ENUM_MQL_INFO_STRING so usadas.
Para a funo MQLInfoInteger
ENUM_MQL_INFO_INTEGER
Identificador

Descrio

Tipo

MQL_MEMORY_LIMIT

Maximum possible amount of


dynamic memory for MQL5
program in MB

int

MQL_MEMORY_USED

The memory size used by MQL5


program in MB

int

MQL_PROGRAM_TYPE

Tipo do programa MQL5

ENUM_PROGRAM_TYPE

MQL_DLLS_ALLOWED

A permisso para usar DLL


para
o
dado
programa
executado

bool

MQL_TRADE_ALLOWED

A permisso para negociar


para
o
dado
programa
executado

bool

MQL_SIGNALS_ALLOWED

The permission to modify the


Signals for the given executed
program

bool

MQL_DEBUG

O flag, que indica o modo de


depurao

bool

MQL_PROFILER

O flag, que indica que o


programa est operando em
modo de profiling de cdigo

bool

MQL_TESTER

O flag, que indica o processo


do testador

bool

MQL_OPTIMIZATION

O flag, que indica o processo


de otimizao

bool

MQL_VISUAL_MODE

O flag, que indica o processo


de testador visual

bool

MQL_FRAME_MODE

O sinalizador, indicando que o


Expert Advisor est operando
na coleta de resultado no modo
de otimizao dos quadros

bool

MQL_LICENSE_TYPE

Tipo de licena do mdulo EX5.


A licena refere-se ao mdulo
EX5, a partir do qual feita
uma
solicitao
usando

ENUM_LICENSE_TYPE

2000-2015, MetaQuotes Software Corp.

648

Constantes Padro, Enumeradores e Estruturas


MQLInfoInteger(MQL_LICENSE_
TYPE).
Para a funo MQLInfoString
ENUM_MQL_INFO_STRING
Identificador

Descrio

Tipo

MQL_PROGRAM_NAME

Nome do
executado

programa

MQL5

string

MQL_PROGRAM_PATH

Caminho
para
o
programa executado

dado

string

Para obter informaes sobre o tipo do programa em execuo, so utilizados valores de


ENUM_PROGRAM_TYPE.
ENUM_PROGRAM_TYPE
Identificador

Descrio

PROGRAM_SCRIPT

Script

PROGRAM_EXPERT

Expert

PROGRAM_INDICATOR

Indicador

ENUM_LICENSE_TYPE
Identificador

Descrio

LICENSE_FREE

Um verso gratuita ilimitada

LICENSE_DEMO

Um verso trial de um produto pago do Market.


Funciona somente no Provador de Estratgia

LICENSE_FULL

Uma verso licenciada adquirida permite pelo


menos 5 ativaes. O vendedor pode aumentar
o nmero permitido de ativaes.

LICENSE_TIME

Uma verso com termo de licena limitada

Exemplo:
ENUM_PROGRAM_TYPE mql_program=(ENUM_PROGRAM_TYPE)MQLInfoInteger(MQL_PROGRAM_TYPE);
switch(mql_program)
{
case PROGRAM_SCRIPT:
{
Print(__FILE__+" um script");
break;

2000-2015, MetaQuotes Software Corp.

649

Constantes Padro, Enumeradores e Estruturas


}
case PROGRAM_EXPERT:
{
Print(__FILE__+" um Expert Advisor");
break;
}
case PROGRAM_INDICATOR:
{
Print(__FILE__+" um indicador customizado");
break;
}
default:Print("Valor do tipo MQL5 ",mql_program);
}

2000-2015, MetaQuotes Software Corp.

650

Constantes Padro, Enumeradores e Estruturas

Propriedades do Ativo
Para obter as informaes correntes do mercado existem vrias funes: SymbolInfoInteger(),
SymbolInfoDouble() e SymbolInfoString(). O primeiro parmetro o nome do ativo, os valores do
segundo parmetro da funo podem ser um dos identificadores de ENUM_SYMBOL_INFO_INTEGER,
ENUM_SYMBOL_INFO_DOUBLE e ENUM_SYMBOL_INFO_STRING.
Para a funo SymbolInfoInteger()
ENUM_SYMBOL_INFO_INTEGER
Identificador

Descrio

Tipo

SYMBOL_SELECT

O ativo (smbolo) selecionado


na janela Observao de
Mercador

bool

SYMBOL_SESSION_DEALS

Nmero de operaes (deals)


na sesso corrente

long

SYMBOL_SESSION_BUY_ORDERS

Nmero de ordens de Compra


no momento

long

SYMBOL_SESSION_SELL_ORDER
S

Nmero de ordens de Venda no


momento

long

SYMBOL_VOLUME

Volume da ltima
(deal)

long

SYMBOL_VOLUMEHIGH

Volume dirio mximo

long

SYMBOL_VOLUMELOW

Volume dirio mnimo

long

SYMBOL_TIME

Hora da ltima cotao

datetime

SYMBOL_DIGITS

Dgitos aps um ponto decimal

int

SYMBOL_SPREAD_FLOAT

Indicao
flutuante

bool

SYMBOL_SPREAD

Valor do spread em pontos

int

SYMBOL_TICKS_BOOKDEPTH

Nmero mximo de solicitaes


exibidas na Profundidade do
Mercado. Para ativos que no
tem fila de solicitaes, o valor
igual a zero.

int

SYMBOL_TRADE_CALC_MODE

Modo de clculo de preo de


contrato

ENUM_SYMBOL_CALC_MODE

SYMBOL_TRADE_MODE

Tipo de execuo de ordem

ENUM_SYMBOL_TRADE_MODE

SYMBOL_START_TIME

Data do incio de negociao do


ativo (geralmente usado para
futuros)

datetime

SYMBOL_EXPIRATION_TIME

Data do fim de negociao do

datetime

de

um

operao

spread

2000-2015, MetaQuotes Software Corp.

651

Constantes Padro, Enumeradores e Estruturas


ativo (geralmente usado para
futuros)
SYMBOL_TRADE_STOPS_LEVEL

Mnima distncia em pontos a


partir do preo de fechamento
corrente para colocar ordens de
Stop

int

SYMBOL_TRADE_FREEZE_LEVEL

Distncia
para
congelar
operaes de negociao em
pontos

int

SYMBOL_TRADE_EXEMODE

Modo de execuo de operao


(deal)

ENUM_SYMBOL_TRADE_EXECUT
ION

SYMBOL_SWAP_MODE

Modelo de clculo de Swap

ENUM_SYMBOL_SWAP_MODE

SYMBOL_SWAP_ROLLOVER3DA
YS

Dia da semana para cobrar


rolagem de swap de 3 dias

ENUM_DAY_OF_WEEK

SYMBOL_EXPIRATION_MODE

Flags de modos de expirao


de ordens permitidas

int

SYMBOL_FILLING_MODE

Flags
de
preenchimento
permitidas

modos
de
de
ordens

int

SYMBOL_ORDER_MODE

Flags
de
preenchimento
permitidas

modos
de
de
ordens

int

SYMBOL_OPTION_MODE

Option type

ENUM_SYMBOL_OPTION_MODE

SYMBOL_OPTION_RIGHT

Option right (Call/Put)

ENUM_SYMBOL_OPTION_MODE

Para a funo SymbolInfoDouble()


ENUM_SYMBOL_INFO_DOUBLE
Identificador

Descrio

Tipo

SYMBOL_BID

Preo de Venda (Bid) - melhor


oferta de venda

double

SYMBOL_BIDHIGH

Mximo Preo de Venda do dia

double

SYMBOL_BIDLOW

Mnimo Preo de Venda do dia

double

SYMBOL_ASK

Preo de Compra (Ask)


melhor oferta de compra

double

SYMBOL_ASKHIGH

Mximo Preo de Compra do


dia

double

SYMBOL_ASKLOW

Mnimo Preo de Compra do dia

double

SYMBOL_LAST

Preo da ltimo operao (deal)

double

SYMBOL_LASTHIGH

Mximo dos preos negociados

double

2000-2015, MetaQuotes Software Corp.

652

Constantes Padro, Enumeradores e Estruturas


do dia
SYMBOL_LASTLOW

Mnimo dos preos negociados


do dia

double

SYMBOL_OPTION_STRIKE

The strike price of an option.


The price at which an option
buyer can buy (in a Call option)
or sell (in a Put option) the
underlying asset, and the
option seller is obliged to sell
or buy the appropriate amount
of the underlying asset.

double

SYMBOL_POINT

Valor de um ponto do ativo

double

SYMBOL_TRADE_TICK_VALUE

Valor
do
SYMBOL_TRADE_TICK_VALUE_P
ROFIT

double

SYMBOL_TRADE_TICK_VALUE_P
ROFIT

Preo de tick calculado para


uma posio lucrativa

double

SYMBOL_TRADE_TICK_VALUE_L
OSS

Preo de tick calculado para um


posio perdedora

double

SYMBOL_TRADE_TICK_SIZE

Mnima mudana de preo

double

SYMBOL_TRADE_CONTRACT_SI
ZE

Tamanho do
negociao

SYMBOL_VOLUME_MIN

Mnimo volume
operao (deal)

SYMBOL_VOLUME_MAX

Mximo volume
operao (deal)

contrato

de

double

para

uma

double

para

uma

double

SYMBOL_VOLUME_STEP

Mnimo passo de mudana de


volume para execuo de uma
operao (deal)

double

SYMBOL_VOLUME_LIMIT

Mximo
volume
agregado
permitido de uma posio
aberta e ordens pendentes em
uma direo (compra ou venda)
para um ativo. Por exemplo,
com a limitao de 5 lotes,
voc pode ter uma posio
comprada aberta com o volume
de 5 lotes e colocar uma ordem
pendente de Sell Limit com o
volume de 5 lotes. Mas neste
caso voc no pode colocar um
ordem pendente de Buy Limite
(j que o total de volume em
uma direo excederia o

double

2000-2015, MetaQuotes Software Corp.

653

Constantes Padro, Enumeradores e Estruturas


limite) ou colocar Sell Limit
com o volume maior que 5
lotes.
SYMBOL_SWAP_LONG

Valor de swap comprado

double

SYMBOL_SWAP_SHORT

Valor de swap vendido

double

SYMBOL_MARGIN_INITIAL

Margem inicial significa a


quantia de moeda de margem
requerida para abrir uma
posio com o volume de um
lote. usada para verificar os
ativos de um cliente quando ele
ou ele entra no mercado.

double

SYMBOL_MARGIN_MAINTENANC
E

A margem de manuteno. Se
for definida, ele representa a
quantia de margem na moeda
de margem do ativo cobrada de
um lote. usada parar
verificar os ativos de um
cliente quando o estado da
conta dele/dela muda. Se a
margem de manuteno igual
a 0, a margem inicial usada.

double

SYMBOL_SESSION_VOLUME

Volume resumo de operaes


da sesso corrente

double

SYMBOL_SESSION_TURNOVER

Rotatividade resumo da sesso


corrente

double

SYMBOL_SESSION_INTEREST

Juros de abertura resumo

double

SYMBOL_SESSION_BUY_ORDERS
_VOLUME

Volume atual de ordens de


Compra

double

SYMBOL_SESSION_SELL_ORDER
S_VOLUME

Volume atual de ordens de


Venda

double

SYMBOL_SESSION_OPEN

Preo de abertura da sesso


atual

double

SYMBOL_SESSION_CLOSE

Preo de fechamento da sesso


atual

double

SYMBOL_SESSION_AW

Preo mdio
sesso atual

da

double

SYMBOL_SESSION_PRICE_SETT
LEMENT

Preo de liquidao da sesso


atual

double

SYMBOL_SESSION_PRICE_LIMIT
_MIN

Mnimo preo da sesso atual

double

SYMBOL_SESSION_PRICE_LIMIT

Mximo preo da sesso atual

double

ponderado

2000-2015, MetaQuotes Software Corp.

654

Constantes Padro, Enumeradores e Estruturas


_MAX
Para a funo SymbolInfoString()
ENUM_SYMBOL_INFO_STRING
Identificador

Descrio

Tipo

SYMBOL_BASIS

The underlying asset


derivative

of

string

SYMBOL_CURRENCY_BASE

Moeda base de um ativo

string

SYMBOL_CURRENCY_PROFIT

Moeda de lucro

string

SYMBOL_CURRENCY_MARGIN

Moeda de margem

string

SYMBOL_BANK

Fornecedor da cotao corrente

string

SYMBOL_DESCRIPTION

Descrio do ativo

string

SYMBOL_ISIN

O nome de um ativo no
sistema ISIN (International
Securities
Identification
Number).
O
International
Securities
Identification
Number um cdigo de 12
dgitos
alfanumrico
que
identifica de forma nica um
ativo financeiro. A presena
desta propriedade de ativo
determinada
no
lado
do
servidor de negociao.

string

SYMBOL_PATH

Caminho da rvore de ativos

string

Para cada ativo vrios modos de expirao de ordens pendentes podem ser especificados. Um flag
associado a cada modo. Flags pode ser combinados usando a operao de OR lgico (|), por exemplo,
SYMBOL_EXPIRATION_GTC|SYMBOL_EXPIRATION_SPECIFIED. A fim de verificar se um certo modo
permitido para um ativo, o resultado doAND(&)deve ser comparado ao flag do modo.
Se o flag SYMBOL_EXPIRATION_SPECIFIED for especificado para um ativo, ento ao enviar uma ordem
pendente, voc pode especificar at que momento esta ordem pendente vlida.
Identificador

Valor

Descrio

SYMBOL_EXPIRATION_GTC

A ordem vlida durante um


perodo de tempo ilimitado,
at que ela seja explicitamente
cancelada

SYMBOL_EXPIRATION_DAY

A ordem vlida at o fim do


dia

2000-2015, MetaQuotes Software Corp.

655

Constantes Padro, Enumeradores e Estruturas


SYMBOL_EXPIRATION_SPECIFIE
D

A hora de expirao
especificada na ordem

SYMBOL_EXPIRATION_SPECIFIE
D_DAY

A data de expirao
especificada na ordem

Exemplo:
//+------------------------------------------------------------------+
//| Verifica se um modo de expirao especifico permitido

//+------------------------------------------------------------------+
bool IsExpirationTypeAllowed(string symbol,int exp_type)
{
//--- Obtm o valor da propriedade que descreve os modos de expirao permitidos
int expiration=(int)SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_MODE);
//--- Retorna true, se o modo exp_type permitido
return((expiration&exp_type)==exp_type);
}

Ao enviar um ordem, voc pode especificar a poltica de preenchimento para o volume definido na
ordem. Modos de preenchimento de ordem permitidos para cada ativo so especificados na tabela.
Voc pode definir vrios modos para um ativo atravs da combinao de flags. Os flags podem ser
combinados atravs da operao do OR lgico (|), por exemplo, SYMBOL_FILLING_ALL_OR_NONE|
SYMBOL_CANCEL_REMAIND. A fim de verificar se um certo modo permitido para o ativo, o resultado
doANDlgico (&)deve ser comparado com o flag do modo.
Poltica de
Preenchimento

Identificador

Valor

Descrio

Fill or Kill

SYMBOL_FILLING_FOK

Esta poltica significa


que uma transao
somente pode ser
executada
com
o
volume especificado.
Se
a
quantidade
desejada do ativo no
est disponvel no
mercado, a ordem no
ser executada. O
volume requerido pode
ser preenchido usando
vrias
ofertas
disponveis
no
mercado no momento.

Immediate or Cancel

SYMBOL_FILLING_IOC

Neste
caso,
o
investidor
concorda
em
executar
uma
transao
com
o
volume
mximo
disponvel no mercado,

2000-2015, MetaQuotes Software Corp.

656

Constantes Padro, Enumeradores e Estruturas


em que foi indicado na
ordem. No caso da
ordem no poder ser
completamente
preenchida, o volume
disponvel da ordem
ser executado, e o
volume remanescente
ser
cancelado.
A
possibilidade
de
utilizao de ordens
"IOC" determinado
no servidor.
Return

No identificador

Esta
poltica

utilizada apenas para


as ordens (compra e
venda), ordens limit e
stop limit, e somente
para os ativos com
execuo de Mercado
ou Exchange. No caso
de um preenchimento
parcial, uma ordem a
mercado ou do tipo
limit
com
volume
remanescente no
cancelada,
mas
processada
posteriormente.

No Pedido e modos de execuo Instantnea a poltica Fill or Kill sempre usado para ordens de
mercado, a poltica de Return sempre usado para ordens de limite. Neste caso, ao enviar ordens
atravs de OrderSend ou OrderSendAsync, no h necessidade de especificar uma poltica de
preenchimento para elas.
Nos modos de execuo de Mercado e de Cmbio a poltica Return sempre permitida para todos os
tipos de pedidos. Para saber se as outras polticas so permitidas, use as propriedades
SYMBOL_FILLING_FOK e SYMBOL_FILLING_IOC.
Exemplo:
//+------------------------------------------------------------------+
//| Verifica se um modo de preenchimento especfico permitido

//+------------------------------------------------------------------+
bool IsFillingTypeAllowed(string symbol,int fill_type)
{
//--- Obtm o valor da propriedade que descreve os modos de preenchimento permitidos
int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- Retorna true, se o modo fill_type permitido
return((filling & fill_type)==fill_type);
}

2000-2015, MetaQuotes Software Corp.

657

Constantes Padro, Enumeradores e Estruturas

Ao enviar um pedido de comrcio usando a funo OrderSend(), um tipo de ordem do enumerador


ENUM_ORDER_TYPE enumeration deve ser especificada para algumas operaes. Nem todos os tipos
de ordens podem ser autorizadas por um smbolo especfico. Propriedade SYMBOL_ORDER_MODE
descreve os sinalizadores dos tipos de ordens permitidas.
Identificador

Valor

Descrio

SYMBOL_ORDER_MARKET

Ordens
de mercado
permitidas (Buy e Sell)

SYMBOL_ORDER_LIMIT

Ordens
de
limite
so
permitidas (Buy Limit e Sell
Limit)

SYMBOL_ORDER_STOP

Ordens
de
parada
so
permitidas (Buy Stop e Sell
Stop)

SYMBOL_ORDER_STOP_LIMIT

Ordens de limite de parada so


permitidas (Buy Stop Limit e
Sell Stop Limit)

SYMBOL_ORDER_SL

16

Stop Loss permitido

SYMBOL_ORDER_TP

32

Take Profit permitido

Exemplo:
//+------------------------------------------------------------------+
//| A funo imprime tipos de ordens permitidas para um smbolo

//+------------------------------------------------------------------+
void Check_SYMBOL_ORDER_MODE(string symbol)
{
//--- receber o valor da propriedade descrevendo os tipos de ordens permitidas
int symbol_order_mode=(int)SymbolInfoInteger(symbol,SYMBOL_ORDER_MODE);
//--- verificar se h ordens de mercado (Execuo de Mercado)
if((SYMBOL_ORDER_MARKET&symbol_order_mode)==SYMBOL_ORDER_MARKET)
Print(symbol+": Ordens de mercado so permitidas (Buy e Sell)");
//--- verificar se h ordens de Limite
if((SYMBOL_ORDER_LIMIT&symbol_order_mode)==SYMBOL_ORDER_LIMIT)
Print(symbol+": Ordens Buy Limit e Sell Limit so permitidas");
//--- verificar se h ordens de Parada
if((SYMBOL_ORDER_STOP&symbol_order_mode)==SYMBOL_ORDER_STOP)
Print(symbol+": Ordens Buy Stop e Sell Stop so permitidas");
//--- verificar se h ordens Stop Limit
if((SYMBOL_ORDER_STOP_LIMIT&symbol_order_mode)==SYMBOL_ORDER_STOP_LIMIT)
Print(symbol+": Ordens Buy Stop Limit e Sell Stop Limit so permitidas");
//--- verificar se a colocao de uma ordem Stop Loss permitida
if((SYMBOL_ORDER_SL&symbol_order_mode)==SYMBOL_ORDER_SL)
Print(symbol+": Ordens de Stop Loss so permitidas");
//--- Verificar se a colocao de uma ordem Take Profit permitida

2000-2015, MetaQuotes Software Corp.

so

658

Constantes Padro, Enumeradores e Estruturas


if((SYMBOL_ORDER_TP&symbol_order_mode)==SYMBOL_ORDER_TP)
Print(symbol+": Ordens de Take Profit so permitidas");
//--}

A enumerao ENUM_SYMBOL_CALC_MODE usada para obter informao sobre como os


requerimentos de margem para um ativo so calculados.
ENUM_SYMBOL_CALC_MODE
Identificador

Descrio

Frmula

SYMBOL_CALC_MODE_FOREX

Modo Forex - clculo de lucro e


margem para Forex

Margin: Lots*Contract_Size/
Leverage
Profit:
(close_priceopen_price)
*Contract_Size*Lots

SYMBOL_CALC_MODE_FUTUR
ES

Modo Futuros - clculo de margem


e lucro para futuros

Margin:
Lots
*InitialMargin*Percentage/100
Profit:
(close_priceopen_price)*TickPrice/
TickSize*Lots

SYMBOL_CALC_MODE_CFD

Modo CFD - clculo de margem e


lucro para CFD

Margin:
Lots
*ContractSize*MarketPrice*Per
centage/100
Profit:
(close_priceopen_price)
*Contract_Size*Lots

SYMBOL_CALC_MODE_CFDIND
EX

Modo ndice CFD - clculo de


margem e lucro para CFD por
ndices

Margin:
(Lots*ContractSize*MarketPric
e)*TickPrice/TickSize
Profit:
(close_priceopen_price)
*Contract_Size*Lots

SYMBOL_CALC_MODE_CFDLEV
ERAGE

Modo Alavancado CFD - clculo de


margem e lucro para CFD em
negociao alavancada

Margin:
(Lots*ContractSize*MarketPric
e*Percentage)/Leverage
Profit:
(close_priceopen_price)
*Contract_Size*Lots

SYMBOL_CALC_MODE_EXCH_S
TOCKS

Modo Exchange - clculo de


margem e lucro para negociao
de ttulos na bolsa de valores

Margin:
Lots*ContractSize*OpenPrice
Profit:
(close_priceopen_price)
*Contract_Size*Lots

SYMBOL_CALC_MODE_EXCH_F
UTURES

Modo Futures - clculo da margem


e lucro para os contratos futuros

Margin: Lots*InitialMargin or
Lots*MaintenanceMargin

2000-2015, MetaQuotes Software Corp.

659

Constantes Padro, Enumeradores e Estruturas


de negociao na bolsa de valores

Profit:
(close_priceopen_price)*Lots*TickPrice/
TickSize

SYMBOL_CALC_MODE_EXCH_F
UTURES_FORTS

Modo FORTS Futures - clculo de


margem e lucro para futuros
contratos de comercializao nos
FORTS. A margem pode ser
reduzida pela quantidade de
desvio MarginDiscount de acordo
com as regras seguintes:
1. Se o preo de uma posio long
(ordem BUY) menor do que o
preo estimado, MarginDiscount =
Lots*((PriceSettle-PriceOrder)
*TickPrice/TickSize)
2. Se o preo de uma posio
short (ordem SELL) superior ao
preo estimado, MarginDiscount =
Lots*((PriceOrder-PriceSettle)
*TickPrice/TickSize)
onde:
o PriceSettle preo estimado
(limpando)
da
sesso
anterior;
o PriceOrder - preo mdio
ponderado de posio ou
preo de abertura definido na
ordem (pedido);
o TickPrice - Preo de tick
(custo da mudana do preo
por um ponto)
o TickSize - tamanho tick
(passo de alterao de preo
mnima)

Margin: Lots*InitialMargin or
Lots*MaintenanceMargin
Profit:
(close_priceopen_price)*Lots*TickPrice/
TickSize

SYMBOL_CALC_MODE_SERV_C
OLLATERAL

Collateral mode - a symbol is used


as a non-tradable asset on a
trading account. The market
value of an open position is
calculated based on the volume,
current market price, contract
size and liquidity ratio. The value
is included into Assets, which are
added to Equity. Open positions
of such symbols increase the Free
Margin amount and are used as
additional margin (collateral) for
open positions
of
tradable
instruments.

Margin: no
Profit: no
Market Value:
Lots*ContractSize*MarketPrice
*LiqudityRate

2000-2015, MetaQuotes Software Corp.

660

Constantes Padro, Enumeradores e Estruturas


Existem vrios modos de negociao de ativos. Informao sobre modos de negociao de um certo
ativo refletido nos valores da enumerao ENUM_SYMBOL_TRADE_MODE.
ENUM_SYMBOL_TRADE_MODE
Identificador

Descrio

SYMBOL_TRADE_MODE_DISABLED

Negociao est desabilitada para o ativo

SYMBOL_TRADE_MODE_LONGONLY

Permitido somente posies compradas

SYMBOL_TRADE_MODE_SHORTONLY

Permitido somente posies vendidas

SYMBOL_TRADE_MODE_CLOSEONLY

Permitido somente operaes de fechamento de


posio

SYMBOL_TRADE_MODE_FULL

Sem restries de negociao

Os possveis modos de execuo de uma operao (deal) para um certo ativo so definidos na
enumerao ENUM_SYMBOL_TRADE_EXECUTION.
ENUM_SYMBOL_TRADE_EXECUTION
Identificador

Descrio

SYMBOL_TRADE_EXECUTION_REQUEST

Execuo por solicitao

SYMBOL_TRADE_EXECUTION_INSTANT

Execuo instantnea

SYMBOL_TRADE_EXECUTION_MARKET

Execuo a Mercado

SYMBOL_TRADE_EXECUTION_EXCHANGE

Execuo em um sistema de negociao externo


(Exchange)

Mtodos de clculo de swap na transferncia de posio so especificados na enumerao


ENUM_SYMBOL_SWAP_MODE. O mtodo de clculo de swap determina a unidade de medida dos
parmetros SYMBOL_SWAP_LONG e SYMBOL_SWAP_SHORT. Por exemplo, se swaps so cobrados na
moeda de depsito do cliente, ento os valores destes parmetros so especificados como uma
quantia de dinheiro na moeda de depsito do cliente.
ENUM_SYMBOL_SWAP_MODE
Identificador

Descrio

SYMBOL_SWAP_MODE_DISABLED

Desabilita swaps (sem swaps)

SYMBOL_SWAP_MODE_POINTS

Swaps so cobrados em pontos

SYMBOL_SWAP_MODE_CURRENCY_SYMBOL

Swaps so cobrados em dinheiro na moeda base


do ativo

SYMBOL_SWAP_MODE_CURRENCY_MARGIN

Swaps so cobrados em dinheiro na moeda de


margem do ativo

2000-2015, MetaQuotes Software Corp.

661

Constantes Padro, Enumeradores e Estruturas


SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT

Swaps so cobrados em dinheiro na moeda de


depsito do cliente

SYMBOL_SWAP_MODE_INTEREST_CURRENT

Swaps so cobrados como juro anual


especificado a partir do preo de instrumento no
clculo do swap (ano bancrio padro 360 dias)

SYMBOL_SWAP_MODE_INTEREST_OPEN

Swaps so cobradas como juro anual


especificado a partir do preo de abertura da
posio (ano bancrio padro 360 dias)

SYMBOL_SWAP_MODE_REOPEN_CURRENT

Swaps so cobradas atravs de posies


reabertas Ao final de um dia de negociao a
posio encerrada. No dia seguinte ela
reaberta atravs do preo de fechamento +/um nmero especfico de pontos (parmetros
SYMBOL_SWAP_LONG e SYMBOL_SWAP_SHORT)

SYMBOL_SWAP_MODE_REOPEN_BID

Swaps so cobradas atravs de posies


reabertas Ao final de um dia de negociao a
posio encerrada. No dia seguinte ela
reaberta atravs do preo de Venda (Bid)
corrente +/- um nmero especfico de pontos
(parmetros
SYMBOL_SWAP_LONG
e
SYMBOL_SWAP_SHORT)

Os valores da enumerao ENUM_DAY_OF_WEEK so usados para especificar dias da semana.


ENUM_DAY_OF_WEEK
Identificador

Descrio

SUNDAY

Domingo

MONDAY

Segunda-feira

TUESDAY

Tera-feira

WEDNESDAY

Quarta-feira

THURSDAY

Quinta-feira

FRIDAY

Sexta-feira

SATURDAY

Sbado

An option is a contract, which gives the right, but not the obligation, to buy or sell an underlying asset
(goods, stocks, futures, etc.) at a specified price on or before a specific date. The following
enumerations describe option properties, including the option type and the right arising from it.
ENUM_SYMBOL_OPTION_RIGHT
Identifier

Description

2000-2015, MetaQuotes Software Corp.

662

Constantes Padro, Enumeradores e Estruturas


SYMBOL_OPTION_RIGHT_CALL

A call option gives you the right to buy an asset


at a specified price

SYMBOL_OPTION_RIGHT_PUT

A put option gives you the right to sell an asset


at a specified price

ENUM_SYMBOL_OPTION_MODE
Identifier

Description

SYMBOL_OPTION_MODE_EUROPEAN

European option may only be exercised on a


specified date (expiration, execution date,
delivery date)

SYMBOL_OPTION_MODE_AMERICAN

American option may be exercised on any


trading day on or before expiry. The period
within which a buyer can exercise the option is
specified for it

2000-2015, MetaQuotes Software Corp.

663

Constantes Padro, Enumeradores e Estruturas

Propriedades da Conta
Para obter informaes sobre a conta atual existem vrias funes: AccountInfoInteger(),
AccountInfoDouble() e AccountInfoString(). Os valores dos parmetros destas funes podem aceitar
valores das enumeraes de ENUM_ACCOUNT_INFO.
Para a funo AccountInfoInteger()
ENUM_ACCOUNT_INFO_INTEGER
Identificador

Descrio

Tipo

ACCOUNT_LOGIN

Nmero da conta

long

ACCOUNT_TRADE_MODE

Modo de negociao da conta

ENUM_ACCOUNT_TRADE_MODE

ACCOUNT_LEVERAGE

Alavancagem da conta

long

ACCOUNT_LIMIT_ORDERS

Nmero permitido mximo de


ordens pendentes ativas

int

ACCOUNT_MARGIN_SO_MODE

Modo para definir a margem


permitida mnima

ENUM_ACCOUNT_STOPOUT_MO
DE

ACCOUNT_TRADE_ALLOWED

Negociao permitida para a


conta atual

bool

ACCOUNT_TRADE_EXPERT

Negociao permitida para um


Expert Advisor

bool

Para a funo AccountInfoDouble()


ENUM_ACCOUNT_INFO_DOUBLE
Identificador

Descrio

Tipo

ACCOUNT_BALANCE

Saldo da conta na moeda de


depsito

double

ACCOUNT_CREDIT

Crdito da conta na moeda de


depsito

double

ACCOUNT_PROFIT

Lucro atual de uma conta na


moeda de depsito

double

ACCOUNT_EQUITY

Saldo a mercado da conta na


moeda de depsito

double

ACCOUNT_MARGIN

Margem da conta usada na


moeda de depsito

double

ACCOUNT_MARGIN_FREE

Margem livre de uma conta na


moeda de depsito

double

ACCOUNT_MARGIN_LEVEL

Nvel de margem de conta em


percentagem

double

ACCOUNT_MARGIN_SO_CALL

Nvel de chamada de margem.

double

2000-2015, MetaQuotes Software Corp.

664

Constantes Padro, Enumeradores e Estruturas


Dependendo
da
definio,
ACCOUNT_MARGIN_SO_MODE
expresso em percentagem ou
em moeda de depsito
ACCOUNT_MARGIN_SO_SO

Nvel de margem de Stop Out


(encerramento
forado).
Dependendo
da
definio,
ACCOUNT_MARGIN_SO_MODE
expresso em percentagem ou
em moeda de depsito

double

ACCOUNT_MARGIN_INITIAL

Initial margin. The amount


reserved on an account to
cover the margin of all pending
orders

double

ACCOUNT_MARGIN_MAINTENA
NCE

Maintenance
margin.
The
minimum equity reserved on an
account to cover the minimum
amount of all open positions

double

ACCOUNT_ASSETS

The current
account

an

double

ACCOUNT_LIABILITIES

The current liabilities on an


account

double

ACCOUNT_COMMISSION_BLOCK
ED

The
current
commission amount
account

double

assets

of

blocked
on an

Para a funo AccountInfoString()


ENUM_ACCOUNT_INFO_STRING
Identificador

Descrio

Tipo

ACCOUNT_NAME

Nome do cliente

string

ACCOUNT_SERVER

Nome
do
negociao

ACCOUNT_CURRENCY

Moeda da conta

string

ACCOUNT_COMPANY

Nome de uma empresa que


serve a conta

string

servidor

de

string

Existem vrios tipos de contas que podem ser abertos em um servidor de negociao. O tipo de conta
sobre o qual um programa MQL5 est sendo executado pode ser encontrado usando a enumerao
ENUM_ACCOUNT_TRADE_MODE.
ENUM_ACCOUNT_TRADE_MODE
Identificador

Descrio

2000-2015, MetaQuotes Software Corp.

665

Constantes Padro, Enumeradores e Estruturas


ACCOUNT_TRADE_MODE_DEMO

Conta de Demonstrao

ACCOUNT_TRADE_MODE_CONTEST

Conta de torneio

ACCOUNT_TRADE_MODE_REAL

Conta real

No caso do saldo a mercado no ser suficiente para manter posies em aberto ocorre a situao de
Stop Out, ou seja o encerramento forado. O nvel de margem mnimo no qual o Stop Out ocorre pode
ser definido em percentagem ou em termos monetrios. Para descobrir a configurao de modo da
conta use a enumerao ENUM_ACCOUNT_STOPOUT_MODE.
ENUM_ACCOUNT_STOPOUT_MODE
Identificador

Descrio

ACCOUNT_STOPOUT_MODE_PERCENT

Modo stop out da conta em percentagem

ACCOUNT_STOPOUT_MODE_MONEY

Modo stop out da conta em dinheiro

Dados do tipo float so exibidos com 5 dgitos aps o ponto decimal.


//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Nome da empresa
string company=AccountInfoString(ACCOUNT_COMPANY);
//--- Nome do cliente
string name=AccountInfoString(ACCOUNT_NAME);
//--- Nmero da conta
long login=AccountInfoInteger(ACCOUNT_LOGIN);
//--- Nome do servidor
string server=AccountInfoString(ACCOUNT_SERVER);
//--- Moeda da conta
string currency=AccountInfoString(ACCOUNT_CURRENCY);
//--- Conta demo, de torneio ou real

ENUM_ACCOUNT_TRADE_MODE account_type=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_M
//--- Agora transforma o valor da enumerao em uma forma inteligvel
string trade_mode;
switch(account_type)
{
case

ACCOUNT_TRADE_MODE_DEMO:

trade_mode="demo";
break;
case

ACCOUNT_TRADE_MODE_CONTEST:

trade_mode="concurso";
break;
default:
trade_mode="real";
break;
}

2000-2015, MetaQuotes Software Corp.

666

Constantes Padro, Enumeradores e Estruturas


//--- Stop Out definida em percentagem ou dinheiro

ENUM_ACCOUNT_STOPOUT_MODE stop_out_mode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MA

//--- Obtm os valores dos nveis quando a Chamada de Margem e Stop Out (encerramento forado) ocor
double margin_call=AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL);
double stop_out=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
//--- Exibe informaes resumidas sobre a conta
PrintFormat("A conta do do cliente '%s' #%d %s aberta em '%s' no servidor '%s'",
name,login,trade_mode,company,server);
PrintFormat("Moeda da conta - %s, nveis de MarginCall e StopOut so configurados em %s",
currency,(stop_out_mode==ACCOUNT_STOPOUT_MODE_PERCENT)?"porcentagem":" dinheiro");
PrintFormat("MarginCall=%G, StopOut=%G",margin_call,stop_out);
}

2000-2015, MetaQuotes Software Corp.

667

Constantes Padro, Enumeradores e Estruturas

Estatsticas de Teste
Depois que o teste finalizado, diferentes parmetros das estatsticas dos resultados das negociaes
so calculados. Os valores dos parmetros podem ser obtidos usando a funo TesterStatistics(),
atravs da especificao do parmetro ID a partir da enumerao ENUM_STATISTICS.
Embora dois tipo de parmetros (int e double) serem usados nos clculos das estticas, a funo
retorna todos os valores na forma double. Todos os valores estatsticos do tipo double so expressos
na moeda corrente por default, a mesmo que especificado de outro modo.
ENUM_STATISTICS
ID

Descrio do parmetro
estatstico

Tipo

STAT_INITIAL_DEPOSIT

O valor do depsito inicial

double

STAT_WITHDRAWAL

Dinheiro sacado da conta

double

STAT_PROFIT

Lucro lquido aps o teste, a


soma de STAT_GROSS_PROFIT
e
STAT_GROSS_LOSS
(STAT_GROSS_LOSS sempre
menor ou igual a zero)

double

STAT_GROSS_PROFIT

Lucro total, a soma de todas as


negociaes
lucrativas
(positivas). O valor maior ou
igual a zero

double

STAT_GROSS_LOSS

Prejuzo total, a soma de todas


as negociaes negativas. O
valor menor ou igual a zero

double

STAT_MAX_PROFITTRADE

Lucro mximo - o maior valor


dentre todas as negociaes
lucrativas O valor maior ou
igual a zero

double

STAT_MAX_LOSSTRADE

Prejuzo Mximo - o menor


valor
dentre
todos
as
negociaes
(trades)
perdedoras O valor menor ou
igual a zero

double

STAT_CONPROFITMAX

Lucro mximo em uma srie de


negociaes lucrativas. O valor
maior ou igual a zero

double

STAT_CONPROFITMAX_TRADES

O nmero de negociaes que


formaram
oSTAT_CONPROFITMAX(lucro
mximo em uma srie de
negociaes lucrativas)

int

STAT_MAX_CONWINS

O lucro total da mais longa

double

2000-2015, MetaQuotes Software Corp.

668

Constantes Padro, Enumeradores e Estruturas


srie de negociaes lucrativas
STAT_MAX_CONPROFIT_TRADE
S

O nmero de negociaes na
mais
longa
srie
de
negociaes
lucrativasSTAT_MAX_CONWINS

int

STAT_CONLOSSMAX

Prejuzo mximo em uma srie


de negociaes perdedoras. O
valor menor ou igual a zero

double

STAT_CONLOSSMAX_TRADES

O nmero de negociaes
(trades)
que
formaram
oSTAT_CONLOSSMAX(mximo
prejuzo em uma srie de
negociaes perdedoras)

int

STAT_MAX_CONLOSSES

O total de prejuzo da mais


longa srie de negociaes
perdedoras

double

STAT_MAX_CONLOSS_TRADES

O nmero de negociaes na
mais
longa
srie
de
negociaes
perdedoras
STAT_MAX_CONLOSSES

int

STAT_BALANCEMIN

Valor do saldo mnimo

double

STAT_BALANCE_DD

Mxima queda de saldo em


termos monetrios Em um
processo de negociao, um
saldo pode sofrer numerosas
quedas; aqui o maior valor
tomado

double

STAT_BALANCEDD_PERCENT

Queda de saldo como uma


percentagem que foi registrada
no momento da mxima queda
do saldo em termos monetrios
(STAT_BALANCE_DD).

double

STAT_BALANCE_DDREL_PERCE
NT

Mxima queda de saldo com


uma percentagem. Em um
processo de negociao, um
saldo pode sofrer numerosas
quedas, para cada qual a valor
da
queda
relativa
em
percentagem calculada. O
maior valor retornado

double

STAT_BALANCE_DD_RELATIVE

Queda de saldo em termos


monetrios que foi registrada
no momento da mxima queda
do
saldo
como
uma
percentagem

double

2000-2015, MetaQuotes Software Corp.

669

Constantes Padro, Enumeradores e Estruturas


(STAT_BALANCE_DDREL_PERCE
NT).
STAT_EQUITYMIN

Mnimo valor
mercado

do

double

STAT_EQUITY_DD

Mxima queda do saldo a


mercado
em
termos
monetrios. Em um processo
de negociao, numerosas
quedas podem ocorrer no saldo
a mercado; aqui o maior valor
tomado

double

STAT_EQUITYDD_PERCENT

Queda em percentagem que foi


registrada no momento da
mxima queda do saldo a
mercado
em
termos
monetrios
(STAT_EQUITY_DD).

double

STAT_EQUITY_DDREL_PERCENT

Mxima queda do saldo a


mercado
como
uma
percentagem. Em um processo
de negociao, um saldo a
mercado
pode
sofrer
numerosas quedas, para cada
qual o valor da queda relativa
em percentagem calculado. O
maior valor retornado

double

STAT_EQUITY_DD_RELATIVE

Queda do saldo a mercado em


termos monetrios que foi
registrada no momento da
mxima queda do saldo a
mercado
em
percentagem
(STAT_EQUITY_DDREL_PERCEN
T).

double

STAT_EXPECTED_PAYOFF

Recompensa esperada

double

STAT_PROFIT_FACTOR

Fator de lucro, igual a razo


de
STAT_GROSS_PROFIT/
STAT_GROSS_LOSS.
Se
STAT_GROSS_LOSS=0, o fator
de lucro igual aDBL_MAX

double

STAT_RECOVERY_FACTOR

Fator de recuperao, igual a


razo
de
STAT_PROFIT/
STAT_BALANCE_DD

double

STAT_SHARPE_RATIO

Razo Sharpe

double

STAT_MIN_MARGINLEVEL

Valor mnimo
margem

do

saldo

nvel

de

2000-2015, MetaQuotes Software Corp.

double

670

Constantes Padro, Enumeradores e Estruturas


STAT_CUSTOM_ONTESTER

O valor do critrio
de
otimizao
customizado
calculado retornado atravs da
funo OnTester()

double

STAT_DEALS

Nmero de operaes (deals)

int

STAT_TRADES

Nmero
(trades)

negociaes

int

STAT_PROFIT_TRADES

Negociaes
lucrativas

compradas

int

STAT_LOSS_TRADES

Negociaes perdedoras

int

STAT_SHORT_TRADES

Negociaes Vendidas

int

STAT_LONG_TRADES

Negociaes Compradas

int

STAT_PROFIT_SHORTTRADES

Negociaes
lucrativas

vendidas

int

STAT_PROFIT_LONGTRADES

Negociaes
lucrativas

compradas

int

STAT_PROFITTRADES_AVGCON

Comprimento mdio de uma


srie de negociaes lucrativas

int

STAT_LOSSTRADES_AVGCON

Comprimento mdio de uma


srie
de
negociaes
perdedores

int

de

2000-2015, MetaQuotes Software Corp.

671

Constantes Padro, Enumeradores e Estruturas

Constantes de Negociao (Trade)


As vrias constantes usadas para programar estratgias de negociao esto divididas nos seguintes
grupos:
Propriedades de banco de dados de histrico recebimento de informaes gerais sobre um ativo;
Propriedades de ordem obteno de informaes sobre ordens de negociao;
Propriedades de posio obteno de informaes sobre posies correntes;
Propriedades de uma operao (deal) obteno de informaes sobre operaes (deals);
Tipos de operaes de negociao (trade) descrio das operaes de negociao disponveis;
Tipos de transao de negociao - descrio dos possveis tipos de transaes de negociao;
Ordens de negociao no DOM (Profundidade de Mercado) separao de ordens de acordo com a
direo de uma operao solicitada.

2000-2015, MetaQuotes Software Corp.

672

Constantes Padro, Enumeradores e Estruturas

Propriedades de uma Base Histrica de Dados


Ao acessar uma srie de tempo a funo SeriesInfoInteger() usada para obter informaes adicionais
de um ativo (symbol). Um identificador de uma propriedade solicitada passada como parmetro da
funo. O identificar pode ser um dos valores do ENUM_SERIES_INFO_INTEGER.
ENUM_SERIES_INFO_INTEGER
Identificador

Descrio

Tipo

SERIES_BARS_COUNT

Quantidade de barras para o


ativo-perodo para o momento
corrente

long

SERIES_FIRSTDATE

A primeira data para o ativoperodo para o momento


corrente

datetime

SERIES_LASTBAR_DATE

Hora de abertura da ltima


barra do ativo-perodo

datetime

SERIES_SERVER_FIRSTDATE

A primeira data no histrico do


ativo
no
servidor
independentemente da janela
de tempo

datetime

SERIES_TERMINAL_FIRSTDATE

A primeira data no histrico do


ativo no terminal cliente,
independentemente da janela
de tempo

datetime

SERIES_SYNCHRONIZED

Flag de sincronizao de dados


de um ativo/perodo para o
momento corrente

bool

2000-2015, MetaQuotes Software Corp.

673

Constantes Padro, Enumeradores e Estruturas

Propriedades de uma Ordem


As solicitaes para executar operaes de negociao so formalizadas como ordens. Cada ordem
tem uma variedade de propriedades para leitura. As informaes sobre elas podem ser obtidas usando
as funes OrderGet...() e HistoryOrderGet...().
Para as funes OrderGetInteger() e HistoryOrderGetInteger()
ENUM_ORDER_PROPERTY_INTEGER
Identificador

Descrio

Tipo

ORDER_TIME_SETUP

Hora de configurao de uma


ordem

datetime

ORDER_TYPE

Tipo de ordem

ENUM_ORDER_TYPE

ORDER_STATE

Estado de uma ordem

ENUM_ORDER_STATE

ORDER_TIME_EXPIRATION

Hora de expirao de uma


ordem

datetime

ORDER_TIME_DONE

Hora
de
execuo
ou
cancelamento de uma ordem

datetime

ORDER_TIME_SETUP_MSC

O tempo para colocar uma


ordem
de
execuo
em
milissegundos
desde
01.01.1970

long

ORDER_TIME_DONE_MSC

Tempo
de
execuo
e
cancelamento de ordens em
milissegundos
desde
01.01.1970

long

ORDER_TYPE_FILLING

Type de preenchimento de uma


ordem

ENUM_ORDER_TYPE_FILLING

ORDER_TYPE_TIME

tempo de durao de uma


ordem

ENUM_ORDER_TYPE_TIME

ORDER_MAGIC

ID de um Expert Advisor que


colocou a ordem (projetado
para garantir que cada Expert
Advisor coloque seu prprio
nmero nico)

long

ORDER_POSITION_ID

Identificador de posio que


definido para uma ordem to
logo ela executada. Cada
ordem executada resulta em
uma operao que abre ou
modifica uma posio j
existente.
O
identificador
desta exata posio atribuda
ordem executada neste

long

2000-2015, MetaQuotes Software Corp.

674

Constantes Padro, Enumeradores e Estruturas


momento.
Para as funes OrderGetDouble() e HistoryOrderGetDouble()
ENUM_ORDER_PROPERTY_DOUBLE
Identificador

Descrio

Tipo

ORDER_VOLUME_INITIAL

Volume inicial de uma ordem

double

ORDER_VOLUME_CURRENT

Volume corrente de uma ordem

double

ORDER_PRICE_OPEN

Preo especificado na ordem

double

ORDER_SL

Valor de Stop Loss

double

ORDER_TP

Valor de Take Profit

double

ORDER_PRICE_CURRENT

O preo corrente do ativo de


uma ordem

double

ORDER_PRICE_STOPLIMIT

O preo de ordem Limit para


uma ordem StopLimit

double

Para as funes OrderGetString() e HistoryOrderGetString()


ENUM_ORDER_PROPERTY_STRING
Identificador

Descrio

Tipo

ORDER_SYMBOL

Ativo (symbol) de uma ordem

string

ORDER_COMMENT

Comentrio sobre a ordem

string

Ao enviar uma solicitao de negociao usando a funo OrderSend(), algumas operaes requerem a
indicao do tipo da ordem. O tipo de uma ordem especificado no campo type da estrutura especial
MqlTradeRequest, e pode aceitar valores da enumerao ENUM_ORDER_TYPE.
ENUM_ORDER_TYPE
Identificador

Descrio

ORDER_TYPE_BUY

Ordem de Comprar a Mercado

ORDER_TYPE_SELL

Ordem de Vender a Mercado

ORDER_TYPE_BUY_LIMIT

Ordem pendente Buy Limit

ORDER_TYPE_SELL_LIMIT

Ordem pendente Sell Limit

ORDER_TYPE_BUY_STOP

Ordem pendente Buy Stop

ORDER_TYPE_SELL_STOP

Ordem pendente Sell Stop

ORDER_TYPE_BUY_STOP_LIMIT

Ao alcanar o preo da ordem, uma ordem


pendente Buy Limit colocada no preo
StopLimit

2000-2015, MetaQuotes Software Corp.

675

Constantes Padro, Enumeradores e Estruturas


ORDER_TYPE_SELL_STOP_LIMIT

Ao alcanar o preo da ordem, uma ordem


pendente Sell Limit colocada no preo
StopLimit

Cada ordem tem um status que descreve seu estado. Para obter informaes, use OrderGetInteger()
ou HistoryOrderGetInteger() com o modificador ORDER_STATE. Valores permitidos so armazenados
na enumerao ENUM_ORDEM_STATE.
ENUM_ORDER_STATE
Identificador

Descrio

ORDER_STATE_STARTED

Ordem verificada, mas ainda no aceita pela


corretora (broker)

ORDER_STATE_PLACED

Ordem aceita

ORDER_STATE_CANCELED

Ordem cancelada pelo cliente

ORDER_STATE_PARTIAL

Ordem executada parcialmente

ORDER_STATE_FILLED

Ordem executada completamente

ORDER_STATE_REJECTED

Ordem rejeitada

ORDER_STATE_EXPIRED

Ordem expirada

ORDER_STATE_REQUEST_ADD

Ordem est sendo registrada (aplicao para o


sistema de negociao)

ORDER_STATE_REQUEST_MODIFY

Ordem est sendo modificada (alterando seus


parmetros)

ORDER_STATE_REQUEST_CANCEL

Ordem est sendo excluda (excluindo a partir


do sistema de negociao)

Ao enviar uma solicitao de negociao usando a funo OrderSend(), a poltica de preenchimento


pode ser atribuda para uma ordem no campo type_filling da estrutura especial MqlTradeRequest.
Valores da enumerao ENUM_ORDER_TYPE_FILLING so permitidos. Para obter o valor desta
propriedade, usa a funo OrderGetInteger() ou HistoryOrderGetInteger() com o modificador
ORDER_TYPE_FILLING.
ENUM_ORDER_TYPE_FILLING
Identificador
ORDER_FILLING_FOK

Descrio
Esta poltica de preenchimento significa que
uma ordem pode ser preenchida somente na
quantidade especificada. Se a quantidade
desejada do ativo no est disponvel no
mercado, a ordem no ser executada. O
volume requerido pode ser preenchido usando

2000-2015, MetaQuotes Software Corp.

676

Constantes Padro, Enumeradores e Estruturas


vrias ofertas
momento.

disponveis

no mercado no

ORDER_FILLING_IOC

Este modo significa que um negociador concorda


em executar uma operao com o volume
mximo disponvel no mercado conforme
indicado na ordem. No caso do volume integral
de uma ordem no puder ser preenchido, o
volume disponvel dele ser preenchido, e o
volume restante ser cancelado.

ORDER_FILLING_RETURN

Esta poltica usada somente para ordens a


mercado
(ORDER_TYPE_BUY
e
ORDER_TYPE_SELL), ordens limit e stop limit
(ORDER_TYPE_BUY_LIMIT,
ORDER_TYPE_SELL_LIMIT,
ORDER_TYPE_BUY_STOP_LIMIT
e
ORDER_TYPE_SELL_STOP_LIMIT ) e somente
para os ativos com execuo a Mercado ou
execuo em um sistema de negociao externo
(Exchange)***. No caso de um preenchimento
parcial, uma ordem a mercado ou do tipo limit
com volume remanescente no cancelada, mas
processada posteriormente.
Para
a
ativao
das
ordens
ORDER_TYPE_BUY_STOP_LIMIT
e
ORDER_TYPE_SELL_STOP_LIMIT, uma ordem
limit correspondente, ORDER_TYPE_BUY_LIMIT/
ORDER_TYPE_SELL_LIMIT com o tipo de
execuo ORDER_FILLING_RETURN, criada.

O perodo de validade de uma ordem pode ser definida no campo type_time da estrutura especial
MqlTradeRequest ao enviar uma solicitao de negociao usando a funo OrderSend(). Valores da
enumerao ENUM_ORDER_TYPE_TIME enumeration so permitidos. Para obter o valor desta
propriedade use a funo OrderGetInteger() ou HistoryOrderGetInteger() com o modificador
ORDER_TYPE_TIME.
ENUM_ORDER_TYPE_TIME
Identificador

Descrio

ORDER_TIME_GTC

Ordem vlida at cancelamento

ORDER_TIME_DAY

Ordem vlida at o final do dia corrente de


negociao

ORDER_TIME_SPECIFIED

Ordem vlida at expirao

ORDER_TIME_SPECIFIED_DAY

A ordem permanecer efetiva at 23:59:59 do


dia especificado. Se esta hora est fora de uma
sesso de negociao, a ordem expira na hora
de negociao mais prxima.

2000-2015, MetaQuotes Software Corp.

677

Constantes Padro, Enumeradores e Estruturas

Propriedades de uma Posio


A execuo de operaes de negociao resulta na abertura de uma posio, alterao de seu volume,
e/ou direo, ou no seu desaparecimento . Operaes de negociao so conduzidos baseados em
ordens, enviados pela funo OrderSend() na forma de solicitaes de negociao. Para cada ativo
financeiro (symbol) apenas uma posio em aberto possvel. Uma posio tem um conjunto de
propriedades disponveis para leitura atravs de funes PositionGet...().
Para a funo PositionGetInteger()
ENUM_POSITION_PROPERTY_INTEGER
Identificador

Descrio
abertura

Tipo

POSITION_TIME

Hora de
posio

de

uma

datetime

POSITION_TIME_MSC

Posio de tempo de abertura


em
milissegundos
desde
01.01.1970

long

POSITION_TIME_UPDATE

Posio de tempo de alterao


em segundos desde 01.01.1970

long

POSITION_TIME_UPDATE_MSC

Posio de tempo de alterao


em
milissegundo
desde
01.01.1970

long

POSITION_TYPE

Tipo de posio

ENUM_POSITION_TYPE

POSITION_MAGIC

Nmero mgico de uma posio


(veja ORDER_MAGIC)

long

POSITION_IDENTIFIER

Identificador de posio um
nmero nico que atribudo
para toda nova posio aberta
e no se altera durante todo o
tempo de vida da posio.
Movimentaes de uma posio
no alteram seu identificador.

long

Para a funo PositionGetDouble()


ENUM_POSITION_PROPERTY_DOUBLE
Identificador

Descrio

Tipo

POSITION_VOLUME

Volume de uma posio

double

POSITION_PRICE_OPEN

Preo de abertura de uma


posio

double

POSITION_SL

Nvel de Stop Loss de uma


posio aberta

double

POSITION_TP

Nvel de Take Profit de uma

double

2000-2015, MetaQuotes Software Corp.

678

Constantes Padro, Enumeradores e Estruturas


posio aberta
POSITION_PRICE_CURRENT

Preo corrente do ativo de uma


posio

double

POSITION_SWAP

Swap acumulativo

double

POSITION_PROFIT

Lucro corrente

double

Para a funo PositionGetString()


ENUM_POSITION_PROPERTY_STRING
Identificador

Descrio

Tipo

POSITION_SYMBOL

Ativo (symbol) da posio

string

POSITION_COMMENT

Comentrio de uma posio

string

A direo de uma posio em aberto (comprada ou vendida) definida atravs do valor proveniente
da enumerao ENUM_POSITION_TYPE. A fim de obter o tipo de uma posio em aberto use a funo
PositionGetInteger() com o modificador POSITION_TYPE.
ENUM_POSITION_TYPE
Identificador

Descrio

POSITION_TYPE_BUY

Compra

POSITION_TYPE_SELL

Venda

2000-2015, MetaQuotes Software Corp.

679

Constantes Padro, Enumeradores e Estruturas

Propriedades de uma Operao (Deal)


Uma operao (deal) o reflexo de uma execuo de uma negociao baseada em uma ordem que
contm uma solicitao de negociao. Cada negociao descrita atravs de propriedades que
permitem obter informaes sobre ela. A fim de ler valores destas propriedades, as funes do tipo
HistoryDealGet...() so usadas, que retornam valores provenientes das enumeraes correspondentes.
Para a funo PlotIndexSetDouble()
ENUM_DEAL_PROPERTY_INTEGER
Identificador

Descrio

Tipo

DEAL_ORDER

Nmero da ordem de uma


operao (deal).

long

DEAL_TIME

Propriedades de uma Operao


(Deal)

datetime

DEAL_TIME_MSC

O tempo de execuo de
negociaes em milissegundos
desde 01.01.1970

long

DEAL_TYPE

Tipo de operao

ENUM_DEAL_TYPE

DEAL_ENTRY

Entrada de uma operao entrada, sada, reverso

ENUM_DEAL_ENTRY

DEAL_MAGIC

Nmero
mgico
de uma
operao (veja ORDER_MAGIC)

long

DEAL_POSITION_ID

Identificador de uma posio,


na abertura, modificao ou
fechamento da qual esta
operao (deal) tomou parte.
Cada
posio
tem
um
identificador nico que
atribudo a todas as operaes
(deals) executadas para o ativo
durante todo o tempo de vida
da posio.

long

Para a funo HistoryDealGetDouble()


ENUM_DEAL_PROPERTY_DOUBLE
Identificador

Descrio

Tipo

DEAL_VOLUME

Volume de uma operao

double

DEAL_PRICE

Preo de uma operao

double

DEAL_COMMISSION

Comisso de uma operao

double

DEAL_SWAP

Swap
acumulativo
fechamento

no

2000-2015, MetaQuotes Software Corp.

double

680

Constantes Padro, Enumeradores e Estruturas


DEAL_PROFIT

Lucro de uma operao (deal)

double

Para a funo HistoryDealGetString()


ENUM_DEAL_PROPERTY_STRING
Identificador

Descrio

Tipo

DEAL_SYMBOL

Ativo
(symbol)
operao

de

uma

DEAL_COMMENT

Comentrio de uma operao

string

string

Cada operao (deal) caracterizada por um tipo, cujos valores permitidos so enumerados em
ENUM_DEAL_TYPE. A fim de obter informaes sobre o tipo da operao (deal), use a funo
HistoryDealGetInteger() com o modificador DEAL_TYPE.
ENUM_DEAL_TYPE
Identificador

Descrio

DEAL_TYPE_BUY

Compra

DEAL_TYPE_SELL

Venda

DEAL_TYPE_BALANCE

Saldo

DEAL_TYPE_CREDIT

Crdito

DEAL_TYPE_CHARGE

Cobrana adicional

DEAL_TYPE_CORRECTION

Correo

DEAL_TYPE_BONUS

Bonus

DEAL_TYPE_COMMISSION

Comisso adicional

DEAL_TYPE_COMMISSION_DAILY

Comisso diria

DEAL_TYPE_COMMISSION_MONTHLY

Comisso mensal

DEAL_TYPE_COMMISSION_AGENT_DAILY

Comisso de agente dirio

DEAL_TYPE_COMMISSION_AGENT_MONTHLY

Comisso de agente mensal

DEAL_TYPE_INTEREST

Taxa de juros

DEAL_TYPE_BUY_CANCELED

Operao de compra cancelada. Pode haver uma


situao quando uma operao (deal) de compra
executada anteriormente cancelada. Neste
caso, o
tipo
da
operao
executada
anteriormente (DEAL_TYPE_BUY) alterada
para DEAL_TYPE_BUY_CANCELED, e seu lucro/
prejuzo zerado Lucro/prejuzo obtido
anteriormente cobrado/sacado usando uma
operao de saldo separada

2000-2015, MetaQuotes Software Corp.

681

Constantes Padro, Enumeradores e Estruturas


DEAL_TYPE_SELL_CANCELED

Operao de venda cancelada. Pode haver uma


situao quando uma operao (deal) de venda
executada anteriormente cancelada. Neste
caso, o
tipo
da
operao
executada
anteriormente (DEAL_TYPE_SELL) alterada
para DEAL_TYPE_SELL_CANCELED, e seu lucro/
prejuzo zerado. Lucro/prejuzo obtido
anteriormente cobrado/sacado usando uma
operao de saldo separada

As operaes (deal) diferem entre si no somente no seu conjunto de tipos em ENUM_DEAL_TYPE, mas
tambm na forma como elas alteram posies. Isto pode ser uma simples abertura de posio, ou
acumulao de uma posio aberta anteriormente (entrada de mercado), encerramento de posio
atravs de uma operao oposta no volume correspondente (sada de mercado), ou reverso de
posio, se a operao em direo oposta cobrir o volume da posio aberta anteriormente.
Todas estas situaes so descritas pelos valores provenientes da enumerao ENUM_DEAL_ENTRY. A
fim de receber esta informao sobre um operao, use a funo HistoryDealGetInteger() com o
modificador DEAL_ENTRY.
ENUM_DEAL_ENTRY
Identificador

Descrio

DEAL_ENTRY_IN

Entrada

DEAL_ENTRY_OUT

Sada

DEAL_ENTRY_INOUT

Reverso

2000-2015, MetaQuotes Software Corp.

682

Constantes Padro, Enumeradores e Estruturas

Tipos de Operaes de Negociao (Trade)


A negociao feita atravs do envio de ordens para abrir posies usando a funo OrderSend(),
bem como colocar, modificar ou excluir ordens pendentes. Cada ordem de negociao refere-se a um
tipo de operao solicitada. Operaes de negociao so descritas na enumerao
ENUM_TRADE_REQUEST_ACTIONS.
ENUM_TRADE_REQUEST_ACTIONS
Identificador

Descrio

TRADE_ACTION_DEAL

Coloca um ordem de negociao para execuo


imediata com os parmetros especficos (ordem
a mercado)

TRADE_ACTION_PENDING

Coloca um ordem de negociao para execuo


sob condies especficas (ordem pendente)

TRADE_ACTION_SLTP

Modifica valores de Stop Loss e Take Profit de


uma posio em aberto

TRADE_ACTION_MODIFY

Modifca os parmetros de uma ordem coloca


anteriormente

TRADE_ACTION_REMOVE

Exclui
uma
anteriormente

2000-2015, MetaQuotes Software Corp.

ordem

pendente

colocada

683

Constantes Padro, Enumeradores e Estruturas

Tipos de Transao de Negociao


Ao realizar algumas aes especficas em uma conta de negociao, seu estado muda. Tais aes
includem:
Envio de uma solicitao de negociao a partir de algum aplicativo MQL5 no terminal usando as
funes OrderSend e OrderSendAsync e sua posterior execuo.
Envio de uma solicitao de negociao por meio da interface grfica do terminal e sua posterior
execuo.
Ativao de ordens pendentes e ordens de stop no servidor.
Realizao de operaes no lado de um servidor de negociao.
As seguintes transaes de negociao so realizadas como resultado destas aes:
tratamento de uma solicitao de negociao
mudana de ordens de abertura
mudana de histrico de ordens
mudana de histrico de operaes (deals)
mudana de posies
Por exemplo, ao enviar uma ordem de compra de mercado, ela tratada, uma ordem de compra
apropriada criada para a conta, a ordem ento executada e removida da lista de ordens em
aberto, e ento ela adicionada ao histrico de ordens, uma apropriada operao (deal) adicionada
ao histrico e uma nova posio criada. Todas estas aes so transaes de negociao.
Para deixar um programador rastrear as aes realizadas em relao a uma conta de negociao, a
funo OnTradeTransaction foi fornecida. Este handler permite obter transaes de negociao
aplicadas a uma conta em aplicaes MQL5 A descrio de uma transao de negociao submetida
no primeiro parmetro de OnTradeTransation usando a estrutura MqlTradeTransaction.
O tipo de transao de negociao submetida no parmetro de tipo de estrutura
MqlTradeTransaction. Os possveis tipos de transaes de negociao so descritos atravs da
seguinte enumerao:
ENUM_TRADE_TRANSACTION_TYPE
Identificador

Descrio

TRADE_TRANSACTION_ORDER_ADD

Adio de uma nova ordem de abertura.

TRADE_TRANSACTION_ORDER_UPDATE

Atualizao de uma ordem de aberturar. As


atualizaes incluem no somente mudanas
evidentes provenientes do terminal cliente ou do
lado de um servidor de negociao, mas
tambm alteraes de estado de uma ordem ao
configur-lo (por exemplo, transio de
ORDER_STATE_STARTED
para
ORDER_STATE_PLACED
ou
de
ORDER_STATE_PLACED
para
ORDER_STATE_PARTIAL, etc.).

TRADE_TRANSACTION_ORDER_DELETE

Remoo de uma ordem da lista de ordens em

2000-2015, MetaQuotes Software Corp.

684

Constantes Padro, Enumeradores e Estruturas


aberto. Uma ordem pode ser excluda da lista de
ordens em aberto como resultado da
configurao de um solicitao apropriada ou
execuo (preenchimento) ou movimentao
para o histrico.
TRADE_TRANSACTION_DEAL_ADD

Adio de uma operao (deal) para o histrico.


A ao realizada como resultado de uma
execuo de uma ordem ou realizao de
operaes com o saldo da conta.

TRADE_TRANSACTION_DEAL_UPDATE

Atualizao de uma operao (deal) no histrico.


Pode haver caso quando uma operao (deal)
executada previamente alterada em um
servidor. Por exemplo, uma operao (deal) foi
alterada em um sistema de negociao externo
(exchange)
onde
ela
foi
transferida
anteriormente por uma corretora (broker).

TRADE_TRANSACTION_DEAL_DELETE

Excluso de uma operao (deal) do histrico.


Pode haver casos quando uma operao (deal)
executada anteriormente excluda de um
servidor. Por exemplo, uma operao (deal) foi
excluda de um sistema de negociao externo
(exchange)
onde
ela
foi
transferida
anteriormente por uma corretora (broker).

TRADE_TRANSACTION_HISTORY_ADD

Adio de uma ordem no histrico como


resultado de uma execuo ou cancelamento.

TRADE_TRANSACTION_HISTORY_UPDATE

Alterao de uma ordem localizada no histrico


de ordens. Este tipo fornecido para aumentar
a funcionalidade no lado de um servidor de
negociao.

TRADE_TRANSACTION_HISTORY_DELETE

Excluso de uma ordem do histrico de ordens.


Este tipo fornecido para aumentar a
funcionalidade no lado de um servidor de
negociao.

TRADE_TRANSACTION_POSITION

Alterao de uma posio no relacionada com a


execuo de uma operao (deal). Este tipo de
transao mostra que uma posio foi alterada
pelo lado de um servidor de negociao. O
volume de uma posio, o preo de abertura, os
nveis de Stop Loss e Take Profit podem ter sido
alterados. Dados sobre alterao so submetidos
na estrutura MqlTradeTransaction via o handler
OnTradeTransaction. Alteraes de posio
(adio, alterao ou encerramento), como
resultado de uma execuo de operao (deal),
no levam a ocorrncia de uma transao
TRADE_TRANSACTION_POSITION.

2000-2015, MetaQuotes Software Corp.

685

Constantes Padro, Enumeradores e Estruturas


TRADE_TRANSACTION_REQUEST

Notificao do fato de que uma solicitao de


negociao foi processada por um servidor e o
resultado processado foi recebido. Apenas o
campo type (tipo de transao de negociao)
deve ser analisado em tais transaes na
estrutura MqlTradeTransaction. O segundo e
terceiro parmetros de OnTradeTransaction
(request e result) devem ser analisados para
dados adicionais.

Dependendo do tipo da transao de negociao, vrios parmetros so preenchidos na estrutura


MqlTradeTransaction, descrevendo-a. Uma descrio detalhada dos dados submetidos mostrada em
Estrutura de uma Transao de Negociao.
Tambm Veja
Estrutura de uma Transao de Negociao, OnTradeTransaction

2000-2015, MetaQuotes Software Corp.

686

Constantes Padro, Enumeradores e Estruturas

Ordens de Negociao na Profundidade de Mercado


Para aes, a janela Profundidade de Mercado disponvel, onde voc pode ver as ordens de Compra e
Venda correntes. A direo desejada de uma operao de negociao, a quantidade requerida e o
preo solicitado so especificados em cada ordem.
Para obter informaes sobre o estado corrente do DOM por meio de MQL5, a funo MarketBookGet()
usada, que coloca uma "fotografia instantnea" do DOM no array de estruturas MqlBookInfo. Cada
elemento do array no campo type contm informaes sobre a direo da ordem - o valor da
enumerao ENUM_BOOK_TYPE.
ENUM_BOOK_TYPE
Identificador

Descrio

BOOK_TYPE_SELL

Ordem de venda (Offer)

BOOK_TYPE_BUY

Ordem de compra (Bid)

BOOK_TYPE_SELL_MARKET

Ordem de venda (Offer)

BOOK_TYPE_BUY_MARKET

Ordem de venda (Offer)

Tambm Veja
Estruturas e classes, Estruturas do DOM, Tipos de operaes de negociao, Informaes de
Mercado

2000-2015, MetaQuotes Software Corp.

687

Constantes Padro, Enumeradores e Estruturas

Signal Properties
The following enumerations are used when working with trading signals and signal copy settings.
Enumeration of double type properties of the trading signal:
ENUM_SIGNAL_BASE_DOUBLE
ID

Description

SIGNAL_BASE_BALANCE

Account balance

SIGNAL_BASE_EQUITY

Account equity

SIGNAL_BASE_GAIN

Account gain

SIGNAL_BASE_MAX_DRAWDOWN

Account maximum drawdown

SIGNAL_BASE_PRICE

Signal subscription price

SIGNAL_BASE_ROI

Return on Investment (%)

Enumeration of integer type properties of the trading signal:


ENUM_SIGNAL_BASE_INTEGER
ID

Description

SIGNAL_BASE_DATE_PUBLISHED

Publication date (date when it become available


for subscription)

SIGNAL_BASE_DATE_STARTED

Monitoring starting date

SIGNAL_BASE_ID

Signal ID

SIGNAL_BASE_LEVERAGE

Account leverage

SIGNAL_BASE_PIPS

Profit in pips

SIGNAL_BASE_RATING

Position in rating

SIGNAL_BASE_SUBSCRIBERS

Number of subscribers

SIGNAL_BASE_TRADES

Number of trades

SIGNAL_BASE_TRADE_MODE

Account type (0-real, 1-demo, 2-contest)

Enumeration of string type properties of the trading signal:


ENUM_SIGNAL_BASE_STRING
ID

Description

SIGNAL_BASE_AUTHOR_LOGIN

Author login

SIGNAL_BASE_BROKER

Broker name (company)

SIGNAL_BASE_BROKER_SERVER

Broker server

2000-2015, MetaQuotes Software Corp.

688

Constantes Padro, Enumeradores e Estruturas


SIGNAL_BASE_NAME

Signal name

SIGNAL_BASE_CURRENCY

Signal base currency

Enumeration of double type properties of the signal copy settings:


ENUM_SIGNAL_INFO_DOUBLE
ID

Description

SIGNAL_INFO_EQUITY_LIMIT

Equity limit

SIGNAL_INFO_SLIPPAGE

Slippage (used when placing market orders in


synchronization of positions and copying of
trades)

SIGNAL_INFO_VOLUME_PERCENT

Maximum percent of deposit used (%), r/o

Enumeration of integer type properties of the signal copy settings:


ENUM_SIGNAL_INFO_INTEGER
ID

Description

SIGNAL_INFO_CONFIRMATIONS_DISABLED

The flag enables


confirmation dialog

SIGNAL_INFO_COPY_SLTP

Copy Stop Loss and Take Profit flag

SIGNAL_INFO_DEPOSIT_PERCENT

Deposit percent (%)

SIGNAL_INFO_ID

Signal id, r/o

SIGNAL_INFO_SUBSCRIPTION_ENABLED

"Copy trades by subscription" permission flag

SIGNAL_INFO_TERMS_AGREE

"Agree to terms of use of Signals service" flag,


r/o

Enumeration of string type properties of the signal copy settings:


ENUM_SIGNAL_INFO_STRING
ID
SIGNAL_INFO_NAME

Description
Signal name, r/o

See also
Trade signals

2000-2015, MetaQuotes Software Corp.

synchronization

without

689

Constantes Padro, Enumeradores e Estruturas

Constantes Nomeados
Todas as constantes usadas em MQL5 podem ser divididas nos seguintes grupos:
Substituies macro predefinidas valores so substitudos durante compilao;
Constantes matemticas valores de algumas expresses matemticas;
Constantes de tipo numrico algumas restries de tipo simples;
Cdigos de motivos de Desinicializao descrio de motivos de no inicializao;
Verificao de Ponteiro de Objeto enumerao dos tipos de ponteiros retornados pela funo
CheckPointer();
Outras constantes todas as outras constantes.

2000-2015, MetaQuotes Software Corp.

690

Constantes Padro, Enumeradores e Estruturas

Substituies de Macro Predefinidas


Para simplificar o processo de depurao e obter informaes sobre a operao de um programa-mql5,
existem constantes de macro especiais, valores que so definidos no momento da compilao. A
forma mais fcil de usar estas constantes imprimir estes valores atravs da funo Print(), como
mostrado no exemplo.
Constante

Descrio

__DATE__

Data de compilao do arquivo sem a hora


(horas, minutos e segundos so iguais a 0)

__DATETIME__

Data e hora de compilao do arquivo

__LINE__

Assinatura da funo em cujo corpo a macro


est localizada.

__FILE__

Nome do arquivo compilado corrente

__PATH__

O caminho absoluto para o arquivo que est


sendo compilado correntemente

__FUNCTION__

Nome da funo, em cujo corpo a macro est


localizada

__FUNCSIG__

Assinatura da funo em cujo corpo a macro


est localizada. O registro da descrio
completa de funes pode ser til na
identificao de funes sobrecarregadas

__MQLBUILD__, __MQL5BUILD__

Nmero do compilao

Exemplo:
#property copyright "Copyright 2009, MetaQuotes Software Corp."
#property link

"http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
void OnInit()
{
//--- um exemplo de impresso de informao na inicializao de um Expert Advisor
Print(" __FUNCTION__ = ",__FUNCTION__,"

__LINE__ = ",__LINE__);

//--- define o intervalo entre os eventos timer


EventSetTimer(5);
//--}
//+------------------------------------------------------------------+
//| Funo de Desinicializao do Expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- um exemplo de impresso de informao na desinicializao de um Expert Advisor

2000-2015, MetaQuotes Software Corp.

691

Constantes Padro, Enumeradores e Estruturas


Print(" __FUNCTION__ = ",__FUNCTION__,"

__LINE__ = ",__LINE__);

//--}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

//+------------------------------------------------------------------+
void OnTick()
{
//--- impresso de informao no recebimento de um tick
Print(" __MQLBUILD__ = ",__MQLBUILD__,"

__FILE__ = ",__FILE__);

Print(" __FUNCTION__ = ",__FUNCTION__,"

__LINE__ = ",__LINE__);

test1(__FUNCTION__);
test2();
//--}
//+------------------------------------------------------------------+
//| test1

//+------------------------------------------------------------------+
void test1(string par)
{
//--- impresso de informao dentro da funo
Print(" __FUNCTION__ = ",__FUNCTION__,"

__LINE__ = ",__LINE__," par = ",par);

}
//+------------------------------------------------------------------+
//| test2

//+------------------------------------------------------------------+
void test2()
{
//--- impresso de informao dentro da funo
Print(" __FUNCTION__ = ",__FUNCTION__,"

__LINE__ = ",__LINE__);

}
//+------------------------------------------------------------------+
//| OnTimer event handler

//+------------------------------------------------------------------+
void OnTimer()
{
//--Print(" __FUNCTION__ = ",__FUNCTION__,"

__LINE__ = ",__LINE__);

test1(__FUNCTION__);
}

2000-2015, MetaQuotes Software Corp.

692

Constantes Padro, Enumeradores e Estruturas

Constantes Matemticas
Constantes especiais contendo valores que so reservados para algumas expresses matemticas.
Estas constantes podem ser usadas em qualquer lugar no programa ao invs de calcular seus valores
usando funes matemticas.
Constante

Descrio

Valor

M_E

2.71828182845904523536

M_LOG2E

log2(e)

1.44269504088896340736

M_LOG10E

log10(e)

0.434294481903251827651

M_LN2

ln(2)

0.693147180559945309417

M_LN10

ln(10)

2.30258509299404568402

M_PI

pi

3.14159265358979323846

M_PI_2

pi/2

1.57079632679489661923

M_PI_4

pi/4

0.785398163397448309616

M_1_PI

1/pi

0.318309886183790671538

M_2_PI

2/pi

0.636619772367581343076

M_2_SQRTPI

2/sqrt(pi)

1.12837916709551257390

M_SQRT2

sqrt(2)

1.41421356237309504880

M_SQRT1_2

1/sqrt(2)

0.707106781186547524401

Exemplo:
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- imprime os valores das constantes
Print("M_E = ",DoubleToString(M_E,16));
Print("M_LOG2E = ",DoubleToString(M_LOG2E,16));
Print("M_LOG10E = ",DoubleToString(M_LOG10E,16));
Print("M_LN2 = ",DoubleToString(M_LN2,16));
Print("M_LN10 = ",DoubleToString(M_LN10,16));
Print("M_PI = ",DoubleToString(M_PI,16));
Print("M_PI_2 = ",DoubleToString(M_PI_2,16));
Print("M_PI_4 = ",DoubleToString(M_PI_4,16));
Print("M_1_PI = ",DoubleToString(M_1_PI,16));
Print("M_2_PI = ",DoubleToString(M_2_PI,16));
Print("M_2_SQRTPI = ",DoubleToString(M_2_SQRTPI,16));
Print("M_SQRT2 = ",DoubleToString(M_SQRT2,16));
Print("M_SQRT1_2 = ",DoubleToString(M_SQRT1_2,16));

2000-2015, MetaQuotes Software Corp.

693

Constantes Padro, Enumeradores e Estruturas


}

2000-2015, MetaQuotes Software Corp.

694

Constantes Padro, Enumeradores e Estruturas

Constantes de Tipo Numrico


Cada tipo numrico simples destinado para um certo tipo de tarefa e permite otimizar a operao de
um programa-mql5 quando usado corretamente. Para uma melhor legibilidade de cdigo e correto
manejo dos resultados de clculos, existem constantes que permitem receber informaes sobre um
conjunto de restries definido a um certo tipo de dados simples.
Constante

Descrio

Valor

CHAR_MIN

Valor mnimo, que pode ser


representado pelo tipo char

-128

CHAR_MAX

Valor mximo, que pode ser


representado pelo tipo char

127

UCHAR_MAX

Valor mximo, que pode ser


representado pelo tipo uchar

255

SHORT_MIN

Valor mnimo, que pode ser


representado pelo tipo short

-32768

SHORT_MAX

Valor mximo, que pode ser


representado pelo tipo short

32767

USHORT_MAX

Valor mximo, que pode ser


representado pelo tipo ushort

65535

INT_MIN

Valor mnimo, que pode ser


representado pelo tipo int

-2147483648

INT_MAX

Valor mximo, que pode ser


representado pelo tipo int

2147483647

UINT_MAX

Valor mximo, que pode ser


representado pelo tipo uint

4294967295

LONG_MIN

Valor mnimo, que pode ser


representado pelo tipo long

-9223372036854775808

LONG_MAX

Valor mximo, que pode ser


representado pelo tipo long

9223372036854775807

ULONG_MAX

Valor mximo, que pode ser


representado pelo tipo ulong

18446744073709551615

DBL_MIN

Valor positivo mnimo, que


pode ser representado pelo
tipo double

2.2250738585072014e-308

DBL_MAX

Valor mximo, que pode ser


representado pelo tipo double

1.7976931348623158e+308

DBL_EPSILON

Valor mnimo, que satisfaz a


condio:
1.0+DBL_EPSILON != 1.0 (para
o tipo double)

2.2204460492503131e-016

DBL_DIG

Nmero

15

de

algarismos

2000-2015, MetaQuotes Software Corp.

695

Constantes Padro, Enumeradores e Estruturas


decimais significativos para o
tipo double
DBL_MANT_DIG

Quantidade de bits em uma


mantissa para o tipo double

53

DBL_MAX_10_EXP

Valor decimal mximo de grau


de expoente para o tipo double

308

DBL_MAX_EXP

Valor binrio mximo de grau


de expoente para o tipo double

1024

DBL_MIN_10_EXP

Valor decimal mnimo de grau


de expoente para o tipo double

(-307)

DBL_MIN_EXP

Valor binrio mnimo de grau


de expoente para o tipo double

(-1021)

FLT_MIN

Valor positivo mnimo, que


pode ser representado pelo
tipo float

1.175494351e-38

FLT_MAX

Valor mximo, que pode ser


representado pelo tipo float

3.402823466e+38

FLT_EPSILON

Valor mnimo, que satisfaz a


condio:
1.0+DBL_EPSILON != 1.0 (para
o tipo float)

1.192092896e07

FLT_DIG

Nmero
de
algarismos
decimais significativos para o
tipo float

FLT_MANT_DIG

Quantidade de bits em uma


mantissa para o tipo float

24

FLT_MAX_10_EXP

Valor decimal mximo de grau


de expoente para o tipo float

38

FLT_MAX_EXP

Valor binrio mximo de grau


de expoente para o tipo float

128

FLT_MIN_10_EXP

Valor decimal mnimo de grau


de expoente para o tipo float

-37

FLT_MIN_EXP

Valor binrio mnimo de grau


de expoente para o tipo float

(-125)

Exemplo:
void OnStart()
{
//--- imprime os valores de constantes
printf("CHAR_MIN = %d",CHAR_MIN);
printf("CHAR_MAX = %d",CHAR_MAX);
printf("UCHAR_MAX = %d",UCHAR_MAX);

2000-2015, MetaQuotes Software Corp.

696

Constantes Padro, Enumeradores e Estruturas


printf("SHORT_MIN = %d",SHORT_MIN);
printf("SHORT_MAX = %d",SHORT_MAX);
printf("USHORT_MAX = %d",USHORT_MAX);
printf("INT_MIN = %d",INT_MIN);
printf("INT_MAX = %d",INT_MAX);
printf("UINT_MAX = %u",UINT_MAX);
printf("LONG_MIN = %I64d",LONG_MIN);
printf("LONG_MAX = %I64d",LONG_MAX);
printf("ULONG_MAX = %I64u",ULONG_MAX);
printf("EMPTY_VALUE = %.16e",EMPTY_VALUE);
printf("DBL_MIN = %.16e",DBL_MIN);
printf("DBL_MAX = %.16e",DBL_MAX);
printf("DBL_EPSILON = %.16e",DBL_EPSILON);
printf("DBL_DIG = %d",DBL_DIG);
printf("DBL_MANT_DIG = %d",DBL_MANT_DIG);
printf("DBL_MAX_10_EXP =

%d",DBL_MAX_10_EXP);

printf("DBL_MAX_EXP = %d",DBL_MAX_EXP);
printf("DBL_MIN_10_EXP = %d",DBL_MIN_10_EXP);
printf("DBL_MIN_EXP = %d",DBL_MIN_EXP);
printf("FLT_MIN = %.8e",FLT_MIN);
printf("FLT_MAX = %.8e",FLT_MAX);
printf("FLT_EPSILON = %.8e",FLT_EPSILON);
}

2000-2015, MetaQuotes Software Corp.

697

Constantes Padro, Enumeradores e Estruturas

Cdigos de Motivos de Desinicializao


Uninitialization reason codes are returned by the UninitializeReason() function. The possible values are
the following:
Constante

Value

Description

REASON_PROGRAM

Expert Advisor terminated its


operation by calling the
ExpertRemove() function

REASON_REMOVE

Program has been


from the chart

REASON_RECOMPILE

Program has been recompiled

REASON_CHARTCHANGE

Symbol or chart period has


been changed

REASON_CHARTCLOSE

Chart has been closed

REASON_PARAMETERS

Input parameters have been


changed by a user

REASON_ACCOUNT

Another account has been


activated or reconnection to
the trade server has occurred
due to changes in the account
settings

REASON_TEMPLATE

A new template has


applied

REASON_INITFAILED

This value means that OnInit()


handler has returned a nonzero
value

REASON_CLOSE

Terminal has been closed

deleted

been

The uninitialization reason code is also passed as a parameter of the predetermined function
OnDeinit(const int reason).
Exemplo:
//+------------------------------------------------------------------+
//| get text description

//+------------------------------------------------------------------+
string getUninitReasonText(int reasonCode)
{
string text="";
//--switch(reasonCode)
{
case REASON_ACCOUNT:
text="Account was changed";break;

2000-2015, MetaQuotes Software Corp.

698

Constantes Padro, Enumeradores e Estruturas


case REASON_CHARTCHANGE:
text="Symbol or timeframe was changed";break;
case REASON_CHARTCLOSE:
text="Chart was closed";break;
case REASON_PARAMETERS:
text="Input-parameter was changed";break;
case REASON_RECOMPILE:
text="Program "+__FILE__+" was recompiled";break;
case REASON_REMOVE:
text="Program "+__FILE__+" was removed from chart";break;
case REASON_TEMPLATE:
text="New template was applied to chart";break;
default:text="Another reason";
}
//--return text;
}
//+------------------------------------------------------------------+
//| Funo de Desinicializao do Expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- The first way to get the uninitialization reason code
Print(__FUNCTION__,"_Uninitalization reason code = ",reason);
//--- The second way to get the uninitialization reason code
Print(__FUNCTION__,"_UninitReason = ",getUninitReasonText(_UninitReason));
}

2000-2015, MetaQuotes Software Corp.

699

Constantes Padro, Enumeradores e Estruturas

Verificao de Ponteiro de Objeto


A funo CheckPointer() usado para verificar o tipo do ponteiro de objeto. A funo retorna um valor
da enumerao ENUM_POINTER_TYPE. Caso um ponteiro incorreto seja usado, a execuo do
programa ser imediatamente finalizada.
Objetos criados por meio do operador new() so do tipo POINTER_DYNAMIC. O operador delete() pode
e deve ser usado somente para tais ponteiros.
Todos os outros ponteiros so do tipo POINTER_AUTOMATIC, que significa que este objeto foi criado
automaticamente pelo ambiente do programa mql5. Tais objetos so excludos automaticamente aps
serem usados.
ENUM_POINTER_TYPE
Constante

Descrio

POINTER_INVALID

Ponteiro incorreto

POINTER_DYNAMIC

Ponteiro do objeto criado por meio do operador


new()

POINTER_AUTOMATIC

Ponteiro
de
qualquer
objeto
automaticamente (sem usar new())

Tambm Veja
Erros em Tempo de Execuo, Excluso de Objeto Operador delete, CheckPointer

2000-2015, MetaQuotes Software Corp.

criado

700

Constantes Padro, Enumeradores e Estruturas

Outras Constantes
A constante CLR_NONE usada para indicar a ausncia de cor, ela significa que o objeto grfico ou a
srie grfica de um indicador no sero plotados. Esta constante no foi includa na lista de
constantes Web-color, mas ela pode ser aplicada em todo lugar onde os argumentos de cor forem
requeridos.
A constante INVALID_HANDLE pode ser usada para verificar handles de arquivo (veja FileOpen() e
FileFindFirst()).
Constante

Descrio

Valor

CHARTS_MAX

O nmero possvel mximo de


grficos
abertos
simultaneamente
em
um
terminal

100

clrNONE

Ausncia de cor

-1

EMPTY_VALUE

Valor vazio em um buffer de


indicador

DBL_MAX

INVALID_HANDLE

Manipulador incorreto

-1

IS_DEBUG_MODE

Flag que indica que


programa MQL5 opera
modo de depurao

um
em

no-zero para
modo
de
depurao, zero caso contrrio

IS_PROFILE_MODE

Flag que indica que


programa MQL5 opera
modo de profiling

um
em

no-zero para
modo
de
profiling, zero caso contrrio

NULL

Zero para quaisquer tipos

WHOLE_ARRAY

Significa o nmero de itens


restantes at o final do array,
isto , o array inteiro ser
processado

-1

WRONG_VALUE

A
constante
pode
ser
implicitamente
convertido
para
qualquer
tipo
de
enumerao

-1

A constante EMPTY_VALUE geralmente corresponde aos valores de indicadores que no so exibidos no


grfico. Por exemplo, para o indicador incorporado Desvio Padro (Standard Deviation) com um
perodo de 20, a linha para as primeiras 19 barras no histrico no exibida no grfico. Se voc criar
um handle deste indicador com a funo iStdDev() e copiar os valores do indicador destas barras para
um array atravs de CopyBuffer(), ento estes valores sero iguais a EMPTY_VALUE.
Voc pode escolher especificar em um indicador customizado seus prprios valores vazios, indicando
quando o indicador no deve ser desenhado no grfico. Use a funo PlotIndexSetDouble() com a
modificador PLOT_EMPTY_VALUE.
A constante NULL pode ser atribudo a uma varivel de qualquer tipo simples ou a um objeto,

2000-2015, MetaQuotes Software Corp.

701

Constantes Padro, Enumeradores e Estruturas


estrutura ou ponteiro de classe. A atribuio NULL a uma varivel string significa a completa
desinicializao desta varivel.
A constante WRONG_VALUE destinada para casos em que necessrio retornar valor de uma
enumerao, e ela deve ser um valor errado. Por exemplo, quando ns precisamos informar que um
valor de retorno um valor proveniente desta enumerao. Vamos considerar como um exemplo a
funo CheckLineStyle(), que retorna o estilo de linha para um objeto, especificado seu nome. Se na
verificao de estilo por ObjectGetInteger() o resultado for true, um valor proveniente de
ENUM_LINE_STYLE retornado; caso contrrio WRONG_VALUE retornado.
void OnStart()
{
if(CheckLineStyle("MyChartObject")==WRONG_VALUE)
printf("Erro ao obter estilo de linha.");
}
//+------------------------------------------------------------------+
//| retorna o estilo de linha para um obj. espec. atrves de seu nome|
//+------------------------------------------------------------------+
ENUM_LINE_STYLE CheckLineStyle(string name)
{
long style;
//--if(ObjectGetInteger(0,name,OBJPROP_STYLE,0,style))
return((ENUM_LINE_STYLE)style);
else
return(WRONG_VALUE);
}

A constante WHOLE_ARRAY destinada para funes que requerem especificar o nmero de


elementos nos arrays processados:
ArrayCopy();
ArrayMinimum();
ArrayMaximum();
FileReadArray();
FileWriteArray().
Se voc quiser especificar que todos os valores do array a partir de uma posio especificada at o
final devem ser processados, voc deve especificar apenas o valor WHOLE_ARRAY.
A constante IS_PROFILE_MODE permite alterar uma operao de programa para correta coleta de
dados no modo de profiling. Profiling permite medir o tempo de execuo de fragmentos individuais
do programa (geralmente abrangendo funes), bem como calcular o nmero de tais chamadas.
Chamadas a funo Sleep() podem ser desabilitadas para determinar o tempo de execuo no modo de
profiling, como neste exemplo:
//--- Sleep pode afetar (alterar) enormemente o resultado do profiling
if(!IS_PROFILE_MODE) Sleep(100); // desabilita a chamada Sleep() no modo de profiling

O valor da constante IS_PROFILE_MODE definida pelo compilador durante a compilao, enquanto

2000-2015, MetaQuotes Software Corp.

702

Constantes Padro, Enumeradores e Estruturas


que ela definida para zero no modo convencional. Ao iniciar um programa no modo de profiling, uma
compilao especial realizada e IS_PROFILE_MODE substituda com um valor no-zero.
A constante IS_DEBUG_MODE pode ser til quando se precisar alterar levemente a operao de um
programa MQL5 no modo de depurao. Por exemplo, no modo de depurao voc pode precisar exibir
informaes de depurao adicionais no log do terminal ou criar objetos grficos adicionais em um
grfico.
O seguinte exemplo cria um objeto Label e define sua descrio e cor dependendo do modo de
execuo do script. A fim de executar um script em modo de depurao a partir do MetaEditor,
pressione F5. Se voc executar um script a partir da janela de navegao do terminal, ento a cor e o
texto do objeto Label sero diferentes.
Exemplo:
//+------------------------------------------------------------------+
//|

Check_DEBUG_MODE.mq5 |

//|

Copyright 2009, MetaQuotes Software Corp. |

//|

http://www.metaquotes.net |

//+------------------------------------------------------------------+
#property copyright "Copyright 2009, MetaQuotes Software Corp."
#property link

"http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--string label_name="invisible_label";
if(ObjectFind(0,label_name)<0)
{
Print("Objeto",label_name,"no encontrado. Cdigo de erro = ",GetLastError());
//--- cria um Rtulo (Label)
ObjectCreate(0,label_name,OBJ_LABEL,0,0,0);
//--- define coordenada X
ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,200);
//--- define coordenada Y
ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,300);
ResetLastError();
if(IS_DEBUG_MODE) // modo de depurao
{
//--- exibe mensagem sobre o modo de execuo do script
ObjectSetString(0,label_name,OBJPROP_TEXT,"DEBUG MODE");
//--- defini a cor de texto para vermelho
if(!ObjectSetInteger(0,label_name,OBJPROP_COLOR,clrRed))
Print("No possvel definir a cor. Error",GetLastError());
}
else

// modo de operao

{
ObjectSetString(0,label_name,OBJPROP_TEXT,"RELEASE MODE");

2000-2015, MetaQuotes Software Corp.

703

Constantes Padro, Enumeradores e Estruturas


//--- defini a cor de texto para vermelho
if(!ObjectSetInteger(0,label_name,OBJPROP_COLOR,CLR_NONE))
Print("No possvel definir a cor. Error ",GetLastError());
}
ChartRedraw();
DebugBreak();

// aqui finalizao ocorrer, se ns estivermos em modo de depurao

}
}

Crypt Methods
The ENUM_CRYPT_METHOD enumeration is used to specify the data tranformation method, used in
CryptEncode() and CryptDecode() functions.
ENUM_CRYPT_METHOD
Constant

Description

CRYPT_BASE64

BASE64

CRYPT_AES128

AES encryption with 128 bit key (16 bytes)

CRYPT_AES256

AES encryption with 256 bit key (32 bytes)

CRYPT_DES

DES encryption with 56 bit key (7 bytes)

CRYPT_HASH_SHA1

SHA1 HASH caculation

CRYPT_HASH_SHA256

SHA256 HASH caculation

CRYPT_HASH_MD5

MD5 HASH caculation

CRYPT_ARCH_ZIP

ZIP archives

Tambm Veja
DebugBreak, Propriedades de programas MQL5 executados, CryptEncode(), CryptDecode()

2000-2015, MetaQuotes Software Corp.

704

Constantes Padro, Enumeradores e Estruturas

Estruturas de Dados
A linguagem MQL5 oferece 8 estruturas predefinidas:
MqlDateTime destinado para trabalhar com data e hora;
MqlParam pode enviar parmetros de entrada quando criar um indicador usando a funo
IndicatorCreate();
MqlRates destinado para manipular dados histricos, ela contm informaes sobre o preo,
volume e spread;
MqlBookInfo destinado para obter informaes sobre a Profundidade de Mercado;
MqlTradeRequest usado para criar uma solicitao de negociao para operaes de negociao;
MqlTradeResult contm uma resposta do servidor de negociao a uma solicitao de negcio,
enviado via funo OrderSend();
MqlTradeTransaction contm a descrio de uma transao de negociao;
MqlTick projetado para recuperao rpida da maioria das informaes requeridas sobre os preos
correntes.

2000-2015, MetaQuotes Software Corp.

705

Constantes Padro, Enumeradores e Estruturas

MqlDateTime
A estrutura de tipo data contm oito campos do tipo int:
struct MqlDateTime
{
int year;

// Ano

int mon;

// Ms

int day;

// Dia

int hour;

// Hora

int min;

// Minutos

int sec;

// Segundos

int day_of_week;

// Dia da semana (0-domingo, 1-segunda, ... ,6-sbado)

int day_of_year;

// Nmero do dia do ano (1 de Janeiro atribudo o valor 0)

};

Observao
O nmero do dia do ano, day_of_year, para ano bissexto, a partir de maro, diferir do nmero do
dia correspondente a um ano no bissexto.
Exemplo:
void OnStart()
{
//--datetime date1=D'2008.03.01';
datetime date2=D'2009.03.01';
MqlDateTime str1,str2;
TimeToStruct(date1,str1);
TimeToStruct(date2,str2);
printf("%02d.%02d.%4d, day of year = %d",str1.day,str1.mon,
str1.year,str1.day_of_year);
printf("%02d.%02d.%4d, day of year = %d",str2.day,str2.mon,
str2.year,str2.day_of_year);
}
/*

Resultado:
01.03.2008, day of year = 60
01.03.2009, day of year = 59

*/

Tambm Veja
TimeToStruct, Estruturas e Classes

2000-2015, MetaQuotes Software Corp.

706

Constantes Padro, Enumeradores e Estruturas

A Estrutura de Entrada de Parmetros de Indicadores


(MqlParam)
A estrutura MqlParam foi projetada especialmente para fornecer parmetros de entrada quando criar
um um indicador tcnico usando a funo IndicatorCreate().
struct MqlParam
{
ENUM_DATATYPE

type;

// tipo de parmetro de entrada, valor de ENUM_DATATY

long

integer_value;

// campo para armazenar um tipo inteiro

double

double_value;

// campo para armazenar um tipo double

string

string_value;

// campo para armazenar um tipo string

};

Todos os parmetros de entrada de um indicador so transmitidos na forma de um array do tipo


MqlParam, o campo type de cada elemento deste array especifica o tipo de dado transmitido pelo
elemento. Os valores do indicador devem ser primeiro colocados nos campos apropriados para cada
elemento (in integer_value, in double_value or string_value) dependendo de qual valor da enumerao
ENUM_DATATYPE especificado no campo type.
Se o valor IND_CUSTOM for passado como tipo do indicador para funo IndicatorCreate(), o primeiro
elemento do array de parmetros de entrada deve ter o campo type com o valor de TYPE_STRING
proveniente da enumerao ENUM_DATATYPE, e o campo string_value deve conter o nome do
indicador customizado.

2000-2015, MetaQuotes Software Corp.

707

Constantes Padro, Enumeradores e Estruturas

MqlRates
Esta estrutura armazena informaes sobre os preos, volumes e spread.
struct MqlRates
{
datetime time;

// Hora inicial do perodo

double

open;

// Preo de abertura

double

high;

// O preo mais alto do perodo

double

low;

// O preo mais baixo do perodo

double

close;

// Preo de fechamento

long

tick_volume;

// Volume de Tick

int

spread;

// Spread

long

real_volume;

// Volume de negociao

};

Exemplo:
void OnStart()
{
MqlRates rates[];
int copied=CopyRates(NULL,0,0,100,rates);
if(copied<=0)
Print("Erro ao copiar dados de preos ",GetLastError());
else Print("Copied ",ArraySize(rates)," bars");
}

Tambm Veja
CopyRates, Acesso a sries de tempo

2000-2015, MetaQuotes Software Corp.

708

Constantes Padro, Enumeradores e Estruturas

MqlBookInfo
Fornece informaes sobre os dados de profundidade de mercado.
struct MqlBookInfo
{
ENUM_BOOK_TYPE

type;

// Tipo de ordem proveniente da enumerao ENUM_BOOK_TYPE

double

price;

// Preo

long

volume;

// Volume

};

Observao
A estrutura MqlBookInfo predefinida, portanto ela no requer nenhuma declarao ou descrio.
Para usar a estrutura, apenas declare a varivel deste tipo.
O DOM (Profundidade de Mercado) disponvel somente para alguns ativos (symbols).
Exemplo:
MqlBookInfo priceArray[];
bool getBook=MarketBookGet(NULL,priceArray);
if(getBook)
{
int size=ArraySize(priceArray);
Print("MarketBookInfo sobre ",Symbol());
}
else
{
Print("Falha ao receber DOM para o smbolo ",Symbol());
}

Tambm Veja
MarketBookAdd, MarketBookRelease, MarketBookGet, Ordens de Negociao em DOM, Tipos de
Dados

2000-2015, MetaQuotes Software Corp.

709

Constantes Padro, Enumeradores e Estruturas

A Estrutura de Solicitao de Negociao (MqlTradeRequest)


A interao entre o terminal cliente e um servidor de negociao para executar a operao de
colocao de ordens realizada atravs do uso de solicitaes de negociao. A solicitao de
negociao representada atravs da estrutura predefinida especial de tipo MqlTradeRequest, que
contm todos os campos necessrios para realizar operaes (deals) de negociao. O resultado do
processamento da solicitao representado atravs da estrutura de tipo MqlTradeResult.
struct MqlTradeRequest
{
ENUM_TRADE_REQUEST_ACTIONS

action;

// Tipo de operao de negociao

ulong

magic;

// Expert Advisor ID (nmero mgico)

ulong

order;

// Bilhetagem da ordem

string

symbol;

// Smbolo de negociao

double

volume;

// Volume solicitado para uma encomenda em lotes

double

price;

// Preo

double

stoplimit;

// Nvel StopLimit da ordem

double

sl;

// Nvel Stop Loss da ordem

double

tp;

// Nvel Take Profit da ordem

ulong

deviation;

// Mximo desvio possvel a partir do preo requ

ENUM_ORDER_TYPE

type;

// Tipo de ordem

ENUM_ORDER_TYPE_FILLING

type_filling;

// Tipo de execuo da ordem

ENUM_ORDER_TYPE_TIME

type_time;

// Tipo de expirao da ordem

datetime

expiration;

// Hora de expirao da ordem (para ordens do ti

string

comment;

// Comentrio sobre a ordem

};

Descrio dos Campos


Campo

Descrio

action

Tipo de operao de negociao. Pode ser um


dos
valores
da
enumerao
ENUM_TRADE_REQUEST_ACTIONS.

magic

Expert Advisor ID. Permite organizar um


processamento analtico de ordens
de
negociao. Cada Expert Advisor pode definir
seu prprio ID (identificador) nico ao enviar
uma solicitao de negociao.

order

Bilhetagem (ticket) da ordem. usado para


modificar ordens pendentes.

symbol

Ativo da ordem. No necessrio para


modificao de ordens e operaes de
encerramento de posio.

volume

Volume da ordem solicitada em lotes. Note que


o volume real de uma operao (deal)
depender do tipo de execuo da ordem.

2000-2015, MetaQuotes Software Corp.

710

Constantes Padro, Enumeradores e Estruturas

price

Preo no qual a ordem deve ser executada.


Ordens a mercado de ativos, cujo tipo de
execuo

"Market
Execution" (SYMBOL_TRADE_EXECUTION_MARK
ET), de tipo TRADE_ACTION_DEAL, no
necessitam que se especifique o preo.

stoplimit

O valor do preo, no qual a ordem pendente


Limit ser colocada, quando o preo corrente
alcana o valor deste preo(esta condio
obrigatria). At l, a ordem pendente no
colocada.

sl

Preo de Stop Loss no caso de um movimento


desfavorvel de preo

tp

Preo de Take Profit no caso de um movimento


favorvel de preo

deviation

O mximo desvio de preo, especificado em


pontos

type

Tipo de ordem. Pode ser um dos valores da


enumerao ENUM_ORDER_TYPE.

type_filling

Tipo de execuo da ordem. Pode ser um dos


valores
da
enumerao
ENUM_ORDER_TYPE_FILLING.

type_time

Tipo de expirao da ordem. Pode ser um dos


valores
da
enumerao
ENUM_ORDER_TYPE_TIME.

expiration

Hora de expirao da ordem (para ordens do


tipo ORDER_TIME_SPECIFIED)

comment

Comentrio sobre a ordem

Para enviar ordens para realizaroperaes de negociao (trade) necessrio usar a


funoOrderSend(). Para cada operao de negociao necessrio especificar campos obrigatrios;
campos opcionais tambm podem ser preenchidos. Existem sete possveis casos para enviar uma
ordem de negociao:
Execuo a Pedido
Esta uma ordem de negociao para abrir uma posio no modo Request Execution (negociao
sobre preos solicitados). Ela requer que se especifique os seguintes 9 campos:
action
symbol
volume
price
sl
tp
deviation

2000-2015, MetaQuotes Software Corp.

711

Constantes Padro, Enumeradores e Estruturas


type
type_filling
Tambm possvel especificar valores dos campos "magic" e "comment".
Execuo Instantnea
Esta uma ordem de negociao para abrir uma posio no modo Instant Execution (negociao
pelos preos correntes). Ela requer que se especifique os seguintes 9 campos:
action
symbol
volume
price
sl
tp
deviation
type
type_filling
Tambm possvel especificar valores dos campos "magic" e "comment".
Execuo de Mercado
Esta uma ordem de negociao para abrir uma posio no modo Market Execution (execuo a
mercado). Ela requer que se especifique os seguintes 5 campos:
action
symbol
volume
type
type_filling
Tambm possvel especificar valores dos campos "magic" e "comment".
Execuo Exchange
Esta uma ordem de negociao para abrir uma posio no modo Exchange Execution (execuo em
um sistema de negociao externo). Ela requer que se especifique os seguintes 5 campos:
action
symbol
volume
type
type_filling
Tambm possvel especificar valores dos campos "magic" e "comment".
SL & TP Modificao
Ordem de negociao para modificar os nveis de preo StopLoss e/ou TakeProfit Ela requer que se
especifique os seguintes 4 campos:
action
symbol
sl
tp
2000-2015, MetaQuotes Software Corp.

712

Constantes Padro, Enumeradores e Estruturas

Ordem Pendente
Ordem de negociao para colocar uma ordem pendente. Ela requer que se especifique os seguintes
11 campos:
action
symbol
volume
price
stoplimit
sl
tp
type
type_filling
type_time
expiration
Tambm possvel especificar valores dos campos "magic" e "comment".
Modificar Ordem Pendente
Ordem de negociao para modificar os preos de uma ordem pendente. Ela requer que se
especifique os seguintes 7 campos:
action
order
price
sl
tp
type_time
expiration
Excluir Ordem Pendente
Ordem de negociao para excluir uma ordem pendente. Ela requer que se especifique os seguintes
2 campos:
action
order
Tambm Veja
Estruturas e Classes, Funes de Negociao (Trade), Propriedades de Ordem

2000-2015, MetaQuotes Software Corp.

713

Constantes Padro, Enumeradores e Estruturas

A Estrutura de Resultados de uma Verificao de Solicitao


de Negociao (MqlTradeCheckResult)
Antes de enviarumasolicitaode umaoperao de negociaopara um servidor de negociao,
recomendado verific-la. A verificao realizada usando a funo OrderCheck(), para a qual a
solicitao a ser verifica e uma varivel estrutura do tipo MqlTradeCheckResult so passadas. O
resultado da verificao ser escrita nesta varivel.
struct MqlTradeCheckResult
{
uint

retcode;

// Cdigo da resposta

double

balance;

// Saldo aps a execuo da operao (deal)

double

equity;

// Saldo a mercado (equity) aps a execuo da operao

double

profit;

// Lucro flutuante

double

margin;

// Requerimentos de Margem

double

margin_free;

// Margem livre

double

margin_level;

// Nvel de margem

string

comment;

// Comentrio sobre o cdigo da resposta (descrio do erro)

};

Descrio dos Campos


Campo

Descrio

retcode

Cdigo de retorno

balance

Valor de saldo aps a execuo da operao de


negociao

equity

Valor de saldo a mercado aps a execuo da


operao de negociao

profit

Valor do lucro flutuante aps a execuo da


operao de negociao

margin

Margem requerida
negociao

margin_free

Margem livre que sobrar aps a execuo da


operao de negociao

margin_level

Nvel de margem que ser definida aps a


execuo da operao de negociao

comment

Comentrio sobre
descrio do erro

para

cdigo

operao

da

de

resposta,

Tambm Veja
Estrutura de Solicitao de Negociao, Estrutura para Preos Correntes, OrderSend, OrderCheck

2000-2015, MetaQuotes Software Corp.

714

Constantes Padro, Enumeradores e Estruturas

A Estrutura de um Resultado de Solicitao de Negociao


(MqlTradeResult)
Como resultado de uma solicitao de negociao, um servidor de negociao retorna dados sobre o
resultado do processamento da solicitao de negociao na forma de uma estrutura predefinida
especial de tipo MqlTradeResult.
struct MqlTradeResult
{
uint

retcode;

// Cdigo de retorno da operao

ulong

deal;

// Bilhetagem (ticket) da operao (deal),se ela for realizada

ulong

order;

// Bilhetagem (ticket) da ordem, se ela for colocada

double

volume;

// Volume da operao (deal), confirmada pela corretora

double

price;

// Preo da operao (deal), se confirmada pela corretora

double

bid;

// Preo de Venda corrente

double

ask;

// Preo de Compra corrente

string

comment;

// Comentrio da corretora para a operao (por default, ele preenc

uint

request_id;

// Identificador da solicitao definida pelo terminal durante o desp

};

Descrio dos Campos


Campo

Descrio

retcode

Cdigo de retorno de um servidor de negociao

deal

Bilhetagem (ticket) da operao (deal), caso


uma operao tenha sido realizada. disponvel
para uma operao de negociao de tipo
TRADE_ACTION_DEAL

order

Bilhetagem (ticket) da ordem, caso uma ordem


tenha sido colocada. disponvel para uma
operao
de
negociao
de
tipo
TRADE_ACTION_PENDING

volume

Volume de operao (deal), confirmado pela


corretora. Depende do tipo de preenchimento
da ordem

price

Preo da operao (deal), confirmado pela


corretora. Depende da rea de desvio da
requisio de negcio e/ou sobre operao de
negcios

bid

O preo corrente de venda de mercado (preo


re-cotado)

ask

O preo corrente de compra de mercado (preo


re-cotado)

comment

O comentrio da corretora para a operao (por


default, ele preenchido com a descrio

2000-2015, MetaQuotes Software Corp.

715

Constantes Padro, Enumeradores e Estruturas

cdigo de retorno
negociao)
request_id

de

um

servidor

de

Identificador da solicitao definida pelo


terminal ao enviar para o servidor de
negociao

O resultado da operao de negociao retornado para varivel do tipo MqlTradeResult, que


passado como o segundo parmetro da funo OrderSend() para realizar operaes de negociao.
O terminal fixa um identificador (ID) de solicitao no campo request_id ao enviar-la para o servidor
de negociao usando as funes OrdersSend() e OrderSendAsync(). O terminal recebe mensagens
sobre transaes realizadas provenientes do servidor de negociao e as submete para processamento
atravs da funo OnTradeTransaction() contendo os seguintes componentes como parmetros:
Descrio da transao de negociao na estrutura MqlTradeTransaction;
Descrio da solicitao de negociao enviado a partir da funo OrderSend() ou
OrdersSendAsync(). O ID da solicitao enviado pelo terminal para o servidor de negociao,
enquanto a solicitao em si e seu request_id so armazenados na memria do terminal;
O resultado de execuo da solicitao de negociao como estrutura MqlTradeResult com o campo
request_id contendo o ID desta solicitao.
A funo OnTradeTransaction() recebe trs parmetros de entrada mas os ltimos dois devem ser
analisados somente para transaes do tipo TRADE_TRANSACTION_REQUEST. Em todos os outros
casos, dados sobre a solicitao de negociao e seu resultado de execuo no so preenchidos.
Exemplo de anlise de parmetros pode ser encontrado em Estrutura de uma Solicitao de
Negociao.
A definio do request_id pelo terminal na solicitao de negociao quando envi-la para o servidor
introduzido principalmente para trabalhar com a funo assncrona OrderSendAsync(). Este
identificador permite associar a ao realizada (chamada a funes OrderSend ou OrderSendAsync)
com o resultado desta ao enviada para OnTradeTransaction().
Exemplo:
//+------------------------------------------------------------------+
//| Enviando uma solicitao de negociao com o proc. de resultado

//+------------------------------------------------------------------+
bool MyOrderSend(MqlTradeRequest request,MqlTradeResult result)
{
//--- redefine o ltimo cdigo de erro para zero
ResetLastError();
//--- envia solicitao
bool success=OrderSend(request,result);
//--- se o resultado falha - tentar descobrir o porqu
if(!success)
{
int answer=result.retcode;
Print("TradeLog: Requisio de negociao falhou. Erro = ",GetLastError());
switch(answer)
{

2000-2015, MetaQuotes Software Corp.

716

Constantes Padro, Enumeradores e Estruturas


//--- nova cotao
case 10004:
{
Print("TRADE_RETCODE_REQUOTE");
Print("request.price = ",request.price,"

result.ask = ",

result.ask," result.bid = ",result.bid);


break;
}
//--- ordem no aceita pelo servidor
case 10006:
{
Print("TRADE_RETCODE_REJECT");
Print("request.price = ",request.price,"

result.ask = ",

result.ask," result.bid = ",result.bid);


break;
}
//--- preo invlido
case 10015:
{
Print("TRADE_RETCODE_INVALID_PRICE");
Print("request.price = ",request.price,"

result.ask = ",

result.ask," result.bid = ",result.bid);


break;
}
//--- SL e/ou TP invlidos
case 10016:
{
Print("TRADE_RETCODE_INVALID_STOPS");
Print("request.sl = ",request.sl," request.tp = ",request.tp);
Print("result.ask = ",result.ask," result.bid = ",result.bid);
break;
}
//--- volume invlido
case 10014:
{
Print("TRADE_RETCODE_INVALID_VOLUME");
Print("request.volume = ",request.volume,"

result.volume = ",

result.volume);
break;
}
//--- sem dinheiro suficiente para uma operao de negociao
case 10019:
{
Print("TRADE_RETCODE_NO_MONEY");
Print("request.volume = ",request.volume,"
result.volume,"

result.volume = ",

result.comment = ",result.comment);

break;
}
//--- alguma outra razo, sada com o cdigo de resposta do servidor

2000-2015, MetaQuotes Software Corp.

717

Constantes Padro, Enumeradores e Estruturas


default:
{
Print("Outra resposta = ",answer);
}
}
//--- notifica sobre o resultado sem sucesso da solicitao de negociao retornando false
return(false);
}
//--- OrderSend() retorna true - repete a resposta
return(true);
}

2000-2015, MetaQuotes Software Corp.

718

Constantes Padro, Enumeradores e Estruturas

Estrutura
de
um
(MqlTradeTransaction)

Transao

de

Negociao

Ao realizar algumas aes especficas em uma conta de negociao, seu estado muda. Tais aes
includem:
Envio de uma solicitao de negociao a partir de algum aplicativo MQL5 no terminal usando as
funes OrderSend e OrderSendAsync e sua posterior execuo.
Envio de uma solicitao de negociao por meio da interface grfica do terminal e sua posterior
execuo.
Ativao de ordens pendentes e ordens de stop no servidor.
Realizao de operaes no lado de um servidor de negociao.
As seguintes transaes de negociao so realizadas como resultado destas aes:
tratamento de uma solicitao de negociao
mudana de ordens de abertura
mudana de histrico de ordens
mudana de histrico de operaes (deals)
mudana de posies
Por exemplo, ao enviar uma ordem de compra de mercado, ela tratada, uma ordem de compra
apropriada criada para a conta, a ordem ento executada e removida da lista de ordens em
aberto, e ento ela adicionada ao histrico de ordens, uma apropriada operao (deal) adicionada
ao histrico e uma nova posio criada. Todas estas aes so transaes de negociao.
O handler especial OnTradeTransaction() fornecido no MQL5 para obter transaes de negociao
aplicados a uma conta. O primeiro parmetro do handler obtm a estrutura MqlTradeTransaction
descrevendo transaes de negociao.
struct MqlTradeTransaction
{
ulong

deal;

// Bilhetagem da operao (deal)

ulong

order;

// Bilhetagem da ordem

string

symbol;

// Nome do ativo da negociao

ENUM_TRADE_TRANSACTION_TYPE

type;

// Tipo de transao da negociao

ENUM_ORDER_TYPE

order_type;

// Tipo de ordem

ENUM_ORDER_STATE

order_state;

// Estado da ordem

ENUM_DEAL_TYPE

deal_type;

// Tipo de operao (deal)

ENUM_ORDER_TYPE_TIME

time_type;

// Tipo de ordem por perodo de ao

datetime

time_expiration;

// Hora de expirao da ordem

double

price;

// Preo

double

price_trigger;

// Preo de ativao de ordem tipo Stop limit

double

price_sl;

// Nvel de Stop Loss

double

price_tp;

// Nvel de Take Profit

double

volume;

// Volume em lotes

};

Descrio dos Campos

2000-2015, MetaQuotes Software Corp.

719

Constantes Padro, Enumeradores e Estruturas

Campo

Descrio

deal

Bilhetagem (ticket) da operao.

order

Bilhetagem (ticket) da ordem.

symbol

O nome do ativo da negociao, para o qual a


transao realizada.

type

Tipo de transao de negociao. O valor pode


ser um dos
valores
da
enumerao
ENUM_TRADE_TRANSACTION_TYPE.

order_type

Tipo de ordem de negociao. O valor pode ser


um
dos
valores
da
enumerao
ENUM_ORDER_TYPE.

order_state

Estado da ordem de negociao. O valor pode


ser um dos
valores
da
enumerao
ENUM_ORDER_STATE.

deal_type

Tipo de operao. O valor pode ser um dos


valores da enumerao ENUM_DEAL_TYPE.

type_time

Tipo de ordem quanto a expirao. O valor


pode ser um dos valores da enumerao
ENUM_ORDER_TYPE_TIME.

time_expiration

Perodo de expirao de uma ordem pendente


(para ordens dos tipos ORDER_TIME_SPECIFIED
e ORDER_TIME_SPECIFIED_DAY).

price

Preo. Dependendo do tipo de transao de


negociao, ele pode ser um preo de uma
ordem, de uma operao (deal), ou de uma
posio.

price_trigger

Preo stop (de ativao) de uma ordem Stop


Limit
(ORDER_TYPE_BUY_STOP_LIMIT
e
ORDER_TYPE_SELL_STOP_LIMIT).

price_sl

Preo Stop Loss. Dependendo do tipo de


transao de negociao, ele pode estar
relacionado a uma ordem, a uma operao
(deal) ou a uma posio.

price_tp

Preo Take Profit. Dependendo do tipo de


transao de negociao, ele pode estar
relacionado a uma ordem, a uma operao
(deal) ou a uma posio.

volume

Volume em lotes. Dependendo do tipo de


transao de negociao, ele pode indicar o
valor corrente de uma ordem, de uma operao
(deal), ou de uma posio.

O parmetro essencial para anlise de uma transao recebida o seu tipo, especificado no campo

2000-2015, MetaQuotes Software Corp.

720

Constantes Padro, Enumeradores e Estruturas


type. Por exemplo, se uma transao do tipo TRADE_TRANSACTION_REQUEST (um resultado de
operar uma negociao requisitada pelo servidor foi recebido), a estrutura possui apenas um campo
nico que completamente preenchido - type. Outros campos no so analisados. Neste caso, ns
podemos analisar dois parmetros adicionais, request e result, submetidos ao handler
OnTradeTransaction(), como mostrado abaixo.
Tendo dados sobre um tipo de operao de negociao, voc pode decidir sobre a anlise do estado
corrente de ordens, posies e operaes (deals) em um conta de negociao. Lembre-se que uma
solicitao de negociao enviada ao servidor a partir do terminal pode gerar vrias novas transaes.
A prioridade de chegada delas no terminal no garantida.
A estrutura MqlTradeTransaction preenchida de diferentes maneiras dependendo do tipo de
transao de negociao (ENUM_TRADE_TRANSACTION_TYPE):
TRADE_TRANSACTION_ORDER_* e TRADE_TRANSACTION_HISTORY_*
Os seguintes campos na estrutura MqlTradeTransaction so preenchidos para transaes de
negociao relacionados a manipulao de abertura de ordens (TRADE_TRANSACTION_ORDER_ADD,
TRADE_TRANSACTION_ORDER_UPDATE e TRADE_TRANSACTION_ORDER_DELETE) e histrico de
ordens
(TRADE_TRANSACTION_HISTORY_ADD,
TRADE_TRANSACTION_HISTORY_UPDATE,
TRADE_TRANSACTION_HISTORY_DELETE):
order - bilhetagem da ordem;
symbol - nome do ativo da ordem;
type - tipo de transao de negociao;
order_type - tipo de ordem;
orders_state - estado corrente da ordem;
time_type - tipo de expirao da ordem;
time_expiration - hora de expirao da ordem (para ordens tendo tipos de expirao
ORDER_TIME_SPECIFIED e ORDER_TIME_SPECIFIED_DAY);
price - preo da ordem especificado por um cliente;
price_trigger - preo de stop de ordem stop limit (somente para ORDER_TYPE_BUY_STOP_LIMIT e
ORDER_TYPE_SELL_STOP_LIMIT);
price_sl - Preo de ordem Stop Loss (preenchido, se especificado na ordem);
price_tp - Preo de ordem Take Profit (preenchido, se especificado na ordem);
volume - volume corrente da ordem (no preenchida). Volume inicial da ordem pode ser encontra
no histrico de ordens usando a funo HistoryOrders*.
TRADE_TRANSACTION_DEAL_*
Os seguintes campos na estrutura MqlTradeTransaction so preenchidos para transaes de
negociao relacionados a manipulao de operaes (TRADE_TRANSACTION_DEAL_ADD,
TRADE_TRANSACTION_DEAL_UPDATE e TRADE_TRANSACTION_DEAL_DELETE):
deal - bilhetagem da operao (deal);
order - bilhetagem da ordem, baseado na qual uma operao (deal) foi realizada;
symbol - nome de ativo da operao (deal);
type - tipo de transao de negociao;
deal_type - tipo de operao (deal);
price - preo de operao (deal);
price_sl - preo de Stop Loss (preenchido, se especificado na ordem, baseado na qual uma
operao foi realizada);

2000-2015, MetaQuotes Software Corp.

721

Constantes Padro, Enumeradores e Estruturas


price_tp - preo de Take Profit (preenchido, se especificado na ordem, baseado na qual uma
operao foi realizada);
volume - volume de operao em lotes.
TRADE_TRANSACTION_POSITION
Os seguintes campos na estrutura MqlTradeTransaction so preenchidos para transaes de
negociao relacionado a mudana de posies no conectados com execuo de operaes (deals)
(TRADE_TRANSACTION_POSITION):
symbol - nome de ativo da posio;
type - tipo de transao de negociao;
deal_type - tipo de posio (DEAL_TYPE_BUY ou DEAL_TYPE_SELL);
price - preo mdio ponderado de abertura de posio;
price_sl - preo de Stop Loss;
price_tp - preo de Take Profit;
volume - volume de posio em lotes, se ele foi alterado.
Alterao de Posio (adio, alterao, encerramento), como resultado de uma execuo de
operao (deal), no leva a ocorrncia de transao de TRADE_TRANSACTION_POSITION.
TRADE_TRANSACTION_REQUEST
Somente um campo na estrutura MqlTradeTransaction preenchido para transaes de negociao
descrevendo o fato de que uma solicitao de negociao foi processada por um servidor e que o
resultado do processamento foi recebido (TRADE_TRANSACTION_REQUEST):
type - tipo de transao de negociao;
Somente o campo type (tipo de transao de negociao) de ser analisado para tais transaes.
O segundo e terceiro parmetros (request e result) da funo OnTradeTransaction deve ser
analisado para dados adicionais.
Exemplo:
input int MagicNumber=1234567;
//--- habilita a classe de negociao CTrade e declara a varivel desta classe
#include <Trade\Trade.mqh>
CTrade trade;
//--- flags para instalao e excluso de ordens pendentes
bool pending_done=false;
bool pending_deleted=false;
//--- bilhetagem da ordem pendente ser armazenada aqui
ulong order_ticket;
//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--- define o MagicNumber para marcar todas as nossas ordens
trade.SetExpertMagicNumber(MagicNumber);

//--- solicitaes de negociao sero enviadas em modo assncrono usando a funo OrderSendAsync()

2000-2015, MetaQuotes Software Corp.

722

Constantes Padro, Enumeradores e Estruturas


trade.SetAsyncMode(true);
//--- inicializa a varivel em zero
order_ticket=0;
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

//+------------------------------------------------------------------+
void OnTick()
{
//---instalando uma ordem pendente
if(!pending_done)
{
double ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);

double buy_stop_price=NormalizeDouble(ask+1000*_Point,(int)SymbolInfoInteger(_Symbol,SYMBOL_D
bool res=trade.BuyStop(0.1,buy_stop_price,_Symbol);
//--- caso a funo BuyStop() executou com sucesso
if(res)
{
pending_done=true;
//--- obtm um resultado da solicitao enviando para CTrade
MqlTradeResult trade_result;
trade.Result(trade_result);
//--- obtm o request_id para a solicitaes enviada
uint request_id=trade_result.request_id;
Print("Pedido foi enviado para definir uma ordem pendente. Request_ID=",request_id);

//--- armazena a bilhetagem da ordem (ser zero se usar o modo assncrono de envio para CT
order_ticket=trade_result.order;
//--- tudo est feito, sa cedo do handler OnTick()
return;
}
}
//--- exclui a ordem pendente
if(!pending_deleted)
//--- verificao adicional
if(pending_done && (order_ticket!=0))
{
//--- tenda excluir a ordem pendente
bool res=trade.OrderDelete(order_ticket);
Print("OrderDelete=",res);
//--- quando solicitao de excluso enviada com sucesso
if(res)
{
pending_deleted=true;
//--- obtm o resultado da execuo da solicitao
MqlTradeResult trade_result;
trade.Result(trade_result);
//--- peque o ID da solicitao proveniente do resultado

2000-2015, MetaQuotes Software Corp.

723

Constantes Padro, Enumeradores e Estruturas


uint request_id=trade_result.request_id;
//--- exibe no Dirio
Print("O pedido foi enviado para eliminar uma ordem pendente #",order_ticket,
". Request_ID=",request_id,
"\r\n");
//--- fixa a bilhetagem da ordem proveniente do resultado da solicitao
order_ticket=trade_result.order;
}
}
//--}
//+------------------------------------------------------------------+
//| Funo TradeTransaction

//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
//--- obtm o tipo de transao como valor de enumerao
ENUM_TRADE_TRANSACTION_TYPE type=(ENUM_TRADE_TRANSACTION_TYPE)trans.type;
//--- se a transao a solicitao de manipulao do resultado, somente seu nome exibido
if(type==TRADE_TRANSACTION_REQUEST)
{
Print(EnumToString(type));
//--- exibe o a string do nome da solicitao manipulada
Print("------------RequestDescription\r\n",RequestDescription(request));
//--- exibe a descrio do resultado da solicitao
Print("------------ResultDescription\r\n",TradeResultDescription(result));
//--- armazena a bilhetagem da ordem para sua excluso na prxima manipulao em OnTick()
if(result.order!=0)
{
//--- exclui esta ordem atravs de sua bilhetagem na prxima chamada de OnTick()
order_ticket=result.order;
Print(" Bilhetagem da ordem pendente ",order_ticket,"\r\n");
}
}
else // exibe a descrio completa para transaes de um outro tipo
//--- exibe a descria da transao recebida no Dirio
Print("------------TransactionDescription\r\n",TransactionDescription(trans));
//--}
//+------------------------------------------------------------------+
//| Retorna a descrio textual da transao

//+------------------------------------------------------------------+
string TransactionDescription(const MqlTradeTransaction &trans)
{
//--string desc=EnumToString(trans.type)+"\r\n";

2000-2015, MetaQuotes Software Corp.

724

Constantes Padro, Enumeradores e Estruturas


desc+="Ativo: "+trans.symbol+"\r\n";
desc+="Bilhetagem (ticket) da operao: "+(string)trans.deal+"\r\n";
desc+="Tipo de operao: "+EnumToString(trans.deal_type)+"\r\n";
desc+="Bilhetagem (ticket) da ordem: "+(string)trans.order+"\r\n";
desc+="Tipo de ordem: "+EnumToString(trans.order_type)+"\r\n";
desc+="Estado da ordem: "+EnumToString(trans.order_state)+"\r\n";
desc+="Ordem do tipo time: "+EnumToString(trans.time_type)+"\r\n";
desc+="Expirao da ordem: "+TimeToString(trans.time_expiration)+"\r\n";
desc+="Preo: "+StringFormat("%G",trans.price)+"\r\n";
desc+="Gatilho do preo: "+StringFormat("%G",trans.price_trigger)+"\r\n";
desc+="Stop Loss: "+StringFormat("%G",trans.price_sl)+"\r\n";
desc+="Take Profit: "+StringFormat("%G",trans.price_tp)+"\r\n";
desc+="Volume: "+StringFormat("%G",trans.volume)+"\r\n";
//--- retorna a string obtida
return desc;
}
//+------------------------------------------------------------------+
//| Retorna a descrio textual da solicitao de negociao

//+------------------------------------------------------------------+
string RequestDescription(const MqlTradeRequest &request)
{
//--string desc=EnumToString(request.action)+"\r\n";
desc+="Ativo: "+request.symbol+"\r\n";
desc+="Nmero mgico: "+StringFormat("%d",request.magic)+"\r\n";
desc+="Bilhetagem (ticket) da ordem: "+(string)request.order+"\r\n";
desc+="Tipo de ordem: "+EnumToString(request.type)+"\r\n";
desc+="Preenchimento da ordem: "+EnumToString(request.type_filling)+"\r\n";
desc+="Ordem do tipo time: "+EnumToString(request.type_time)+"\r\n";
desc+="Expirao da ordem: "+TimeToString(request.expiration)+"\r\n";
desc+="Preo: "+StringFormat("%G",request.price)+"\r\n";
desc+="Pontos de desvio: "+StringFormat("%G",request.deviation)+"\r\n";
desc+="Stop Loss: "+StringFormat("%G",request.sl)+"\r\n";
desc+="Take Profit: "+StringFormat("%G",request.tp)+"\r\n";
desc+="Stop Limit: "+StringFormat("%G",request.stoplimit)+"\r\n";
desc+="Volume: "+StringFormat("%G",request.volume)+"\r\n";
desc+="Comentrio: "+request.comment+"\r\n";
//--- retorna a string obtida
return desc;
}
//+------------------------------------------------------------------+
//| Retorna a desc. textual do resultado da manipulao da solic.

//+------------------------------------------------------------------+
string TradeResultDescription(const MqlTradeResult &result)
{
//--string desc="Retcode "+(string)result.retcode+"\r\n";
desc+="ID da solicitao: "+StringFormat("%d",result.request_id)+"\r\n";
desc+="Bilhetagem (ticket) da ordem: "+(string)result.order+"\r\n";

2000-2015, MetaQuotes Software Corp.

725

Constantes Padro, Enumeradores e Estruturas


desc+="Bilhetagem (ticket) da operao: "+(string)result.deal+"\r\n";
desc+="Volume: "+StringFormat("%G",result.volume)+"\r\n";
desc+="Preo: "+StringFormat("%G",result.price)+"\r\n";
desc+="Compra: "+StringFormat("%G",result.ask)+"\r\n";
desc+="Venda: "+StringFormat("%G",result.bid)+"\r\n";
desc+="Comentrio: "+result.comment+"\r\n";
//--- retorna a string obtida
return desc;
}

Tambm Veja
Tipos de Transao de Negociao, OnTradeTransaction()

2000-2015, MetaQuotes Software Corp.

726

Constantes Padro, Enumeradores e Estruturas

A Estrutura para Retornar Preos Correntes (MqlTick)


Esta uma estrutura para armazenar os ltimos preos do ativo. Ela projetada para recuperao
rpida da maioria das informaes solicitadas sobre preos correntes.
struct MqlTick
{
datetime

time;

// Hora da ltima atualizao de preos

double

bid;

// Preo corrente de venda

double

ask;

// Preo corrente de compra

double

last;

// Preo da ltima operao (preo ltimo)

ulong

volume;

// Volume para o preo ltimo corrente

};

A varivel do tipo MqlTick permite obter valores de Preo de Compra, Preo de Venda, Preo ltimo e
Volume com uma nica chamada da funo SymbolInfoTick().
Exemplo:
void OnTick()
{
MqlTick last_tick;
//--if(SymbolInfoTick(Symbol(),last_tick))
{
Print(last_tick.time,": Bid = ",last_tick.bid,
" Ask = ",last_tick.ask,"

Volume = ",last_tick.volume);

}
else Print("SymbolInfoTick() falhou, erro = ",GetLastError());
//--}

Tambm Veja
Estruturas e Classes

2000-2015, MetaQuotes Software Corp.

727

Constantes Padro, Enumeradores e Estruturas

Cdigos de Erros e Avisos


Esta seo contm as seguintes descries:
Cdigos de retorno do servidor de negociao analisando resultados da solicitao de negociao
enviada pela funo OrderSend();
Avisos do compilador cdigos de mensagens de aviso que aparecem na compilao (no erros);
Erros de compilao cdigos de mensagens de erro em uma tentativa sem sucesso de compilar;
Erros em tempo de execuo cdigos de erro na execuo de programas-mql5, que podem ser
obtidos usando a funo GetLastErtror().

2000-2015, MetaQuotes Software Corp.

728

Constantes Padro, Enumeradores e Estruturas

Cdigos de Retorno do Servidor de Negociao


Todas as solicitaes para executar operaes de negociao so enviadas como uma estrutura de
uma solicitao de negociaoMqlTradeRequestusando a funoOrderSend(). O resultado da execuo
da funo colocado na estrutura MqlTradeResult, cujo campo retcode contm o cdigo de retorno do
servidor de negociao.
Cdigo

Constante

Descrio

10004

TRADE_RETCODE_REQUOTE

Nova Cotao

10006

TRADE_RETCODE_REJECT

Solicitao rejeitada

10007

TRADE_RETCODE_CANCEL

Solicitao
negociador

10008

TRADE_RETCODE_PLACED

Ordem colocada

10009

TRADE_RETCODE_DONE

Solicitao concluda

10010

TRADE_RETCODE_DONE_PARTI
AL

Somente parte da solicitao


foi concluda

10011

TRADE_RETCODE_ERROR

Erro de processamento
solicitao

10012

TRADE_RETCODE_TIMEOUT

Solicitao
cancelada
por
expirao de tempo (timeout)

10013

TRADE_RETCODE_INVALID

Solicitao invlida

10014

TRADE_RETCODE_INVALID_VOL
UME

Volume invlido na solicitao

10015

TRADE_RETCODE_INVALID_PRI
CE

Preo invlido na solicitao

10016

TRADE_RETCODE_INVALID_STO
PS

Stops invlidos na solicitao

10017

TRADE_RETCODE_TRADE_DISA
BLED

Negociao est desabilitada

10018

TRADE_RETCODE_MARKET_CL
OSED

Mercado est fechado

10019

TRADE_RETCODE_NO_MONEY

No existe dinheiro suficiente


para completar a solicitao

10020

TRADE_RETCODE_PRICE_CHAN
GED

Os preos se alteraram

10021

TRADE_RETCODE_PRICE_OFF

No existem cotaes
processar a solicitao

10022

TRADE_RETCODE_INVALID_EXPI
RATION

Data de expirao da ordem


invlida na solicitao

10023

TRADE_RETCODE_ORDER_CHA

Estado da ordem alterada

2000-2015, MetaQuotes Software Corp.

cancelada

pelo

de

para

729

Constantes Padro, Enumeradores e Estruturas


NGED
10024

TRADE_RETCODE_TOO_MANY_
REQUESTS

Solicitaes com freqncia em


excesso

10025

TRADE_RETCODE_NO_CHANGE
S

Sem alteraes na solicitao

10026

TRADE_RETCODE_SERVER_DISA
BLES_AT

Autotrading desabilitado pelo


servidor

10027

TRADE_RETCODE_CLIENT_DISA
BLES_AT

Autotrading desabilitado pelo


terminal cliente

10028

TRADE_RETCODE_LOCKED

Solicitao bloqueada
processamento

10029

TRADE_RETCODE_FROZEN

Ordem ou posio congeladas

10030

TRADE_RETCODE_INVALID_FILL

Tipo de preenchimento
ordem invlido

10031

TRADE_RETCODE_CONNECTION

Sem conexo com o servidor de


negociao

10032

TRADE_RETCODE_ONLY_REAL

Operao permitida somente


para contas reais

10033

TRADE_RETCODE_LIMIT_ORDE
RS

O nmero de ordens pendentes


atingiu o limite

10034

TRADE_RETCODE_LIMIT_VOLU
ME

O volume de ordens e posies


para o ativo atingiu o limite

10035

TRADE_RETCODE_INVALID_ORD
ER

Incorreto ou proibida tipo de


ordem

10036

TRADE_RETCODE_POSITION_CL
OSED

Posio com a especificao


POSITION_IDENTIFIER j foi
fechado

2000-2015, MetaQuotes Software Corp.

para

de

730

Constantes Padro, Enumeradores e Estruturas

Avisos do Compilador
Os avisos do compilador so exibidos com propsitos informativos somente e no so mensagens de
erro.
Cdigo

Descrio
21

Registro incompleto de uma data na string


datetime.

22

Nmero errado na string datetime para a data.


Requerimentos:
Ano 1970 <= X <= 3000
Ms 0 <X <= 12
Dia 0 <X <= 31/30/28 (29 )....

23

Nmero errado na string datetime para hora.


Requerimentos:
Hora 0 <= X <24
Minuto 0 <= X <60

24

Cor invlida no formato RGB: um dos


componentes RGB menor que 0 ou maior que
255

25

Caractere desconhecido das seqncias de


escape.
Conhecido: \n \r \t \\ \" \' \X \x

26

Volume grande demais de variveis locais (>


512Kb) da funo, reduza o nmero

29

Enumerao j definida (duplicao) - membros


sero adicionados primeira definio

30

Sobreposio (overriding) de macro

31

A varivel est declarada mas no usada em


nenhum lugar

32

Construtor deve ser do tipo void

33

Destrutor deve ser do tipo void

34

Constante no se encaixa na faixa de inteiros


(X > _UI64_MAX || X < _I64_MIN) e ser
convertido para o tipo double

35

HEX longo demais - mais que 16 caracteres


significativos (grupos de 4 bits de posies
mais elevadas so cortados)

36

Sem grupos de 4 bits na string HEX "0x"

37

Sem funo - nada a ser executado

38

Uma varivel no inicializada sendo usada

2000-2015, MetaQuotes Software Corp.

731

Constantes Padro, Enumeradores e Estruturas

41

Funo no tem corpo, e no chamada

43

Possvel perda de dados na converso Exemplo:


int x = (double) z;

44

Perda de preciso (de dados) durante converso


de uma constante. Exemplo: int x = M_PI

45

Diferena entre os sinais de operandos em


operaes de comparao. Exemplo: (char) c1>
(uchar) c2

46

Problemas com importao de funo declarao de #import requerida ou o import


de funes est fechado

47

Descrio grande demais - caracteres extras


no sero includos no arquivo executvel

48

O nmero de buffers de indicador declarados


menor que o requerido

49

Sem cor para plotar um srie grfica no


indicador

50

Sem srie grfica para desenhar o indicador

51

Funo Handler 'OnStart' no encontrado no


script

52

Funo handler 'OnStart' est definido com


parmetros errados

53

Funo 'OnStart' pode ser definida somente em


um script

54

Funo 'OnInit' est definida com parmetros


errados

55

Funo 'OnInit' no usada em scripts

56

Funo 'OnDeinit' est definida com parmetros


errados

57

Funo 'OnDeinit' no usada em scripts

58

Duas funes 'OnCalculate' esto definidas.


OnCalculate() com um array de preoser usada

59

Sobre-preenchimento detectado ao calcular uma


constante inteira complexa

60

Provavelmente, a varivel no est inicializada.

61

Este declarao torna impossvel de referenciar


a varivel local declarada na linha especificada

62

Esta declarao torna impossvel de referenciar


a varivel global declarada na linha especificada

2000-2015, MetaQuotes Software Corp.

732

Constantes Padro, Enumeradores e Estruturas

63

64

No pode ser usada


estaticamente

para

array

alocado

Esta declarao de varivel oculta varivel


predefinida

65

O valor da expresso sempre true/false

66

Usar um varivel ou expresso de tipo bool em


operaes matemticas no seguro

67

O resultado da aplicao de operador menos


unrio para um tipo sem sinal ulong
indefinido

68

A verso especificada na propriedade #property


version no aceitvel para a seo Market;o
formato correto de #property version
"XXX.YYY"

69

Declarao controlada vazia encontrada

70

Tipo de retorno de funo invlido ou


parmetros incorretos durante declarao da
funo de manipulao de evento

71

Uma implcita converso de estruturas para um


tipo requerida

72

Esta declarao torna direto acesso ao membro


de uma classe declarada na string especificada
impossvel. Acesso somente ser possvel com
o operador de resoluo de escopo ::

73

A constante binria muito grande, os dgitos


de alta ordem sero truncados

74

O parmetro no mtodo da classe herana tem


um diferente modificador const, a funo
derivada tem sobrecarregado a funo geradora

75

Negativo ou deslocamento com valor muito


grande em deslocamento de operao bit a bit,
resultado da execuo indefinido

76

Funo deve retornar um valor

77

funo void retorna um valor

78

Nem todos os caminhos de controle retornam


um valor

79

Expresses no so permitidas em uma escala


global

80

Verifica a precedncia do operador para um


possvel erro; usa parnteses para esclarecer a
precedncia

2000-2015, MetaQuotes Software Corp.

733

Constantes Padro, Enumeradores e Estruturas

81

Foi definido duas OnCalCulate(). Ser utilizado


o modo OHLC

82

Struct sem membros, atribudo o tamanho de 1


byte

83

Valor de retorno da funo deve ser verificado

84

Recursos do indicador compilado para


depurao. Isso retarda o desempenho. Por
favor, recompile o indicador para aumentar o
desempenho

85

Cdigo de caracteres muito grande na linha,


deve estar na faixa de 0 a 65535

86

Caractere no reconhecido na linha

87

Nenhuma propriedade da janela do indicador


(definindo a exibio na janela principal ou na
sub-janela) foi definida. Propriedade #property
indicator_chart_window foi aplicada

2000-2015, MetaQuotes Software Corp.

734

Constantes Padro, Enumeradores e Estruturas

Erros de Compilao
O MetaEditor 5 exibe mensagens de erro sobre os erros de programa detectados pelo compilador
interno durante a compilao. A lista destes erros esto na tabela dada abaixo. Para compilar um
cdigo fonte em um cdigo executvel, pressione F7. Programas que contm erros no podem ser
compilados at que os erros identificados pelo compilador sejam eliminados.
Cdigo

Descrio
100

Erro de leitura de arquivo

101

Erro de abertura de arquivo *. EX5 para


escrever nele para gravao

103

Sem memria livre suficiente para completar


compilao

104

Unidade sinttica vazia no reconhecida pelo


compilador

105

Nome de arquivo incorreto em #include

106

Erro acessando um arquivo em #include


(provavelmente o arquivo no existe)

108

Nome inapropriado para #define

109

Comando desconhecido de preprocessador


(vlidos #include, #define, #property, #import)

110

Ativo desconhecido para compilador

111

Funo no implementada (descrio est


presente, mas sem corpo)

112

Dupla aspas (") omitida

113

Chave angular de abertura (<) ou aspas duplas


(") omitida

114

Aspas simples (') omitida

115

Chave angular de fechamento ">" omitida

116

Tipo no especificado na declarao

117

Sem operador return ou return no encontrado


em todas as ramificaes da implementao

118

Colchete de abertura de parmetros de


chamada era esperada

119

Erro escrevendo EX5

120

Acesso invlido a um array

121

A funo no do tipo void e o operador return


deve retornar um valor

122

Declarao incorreta do destrutor

2000-2015, MetaQuotes Software Corp.

735

Constantes Padro, Enumeradores e Estruturas

123

Dois pontos ":" est faltando

124

Varivel j esta declarada

125

Varivel com tal identificador j declarado

126

Nome de varivel longo demais (> 250


caracteres)

127

Estrutura com tal identificador j definida

128

Estrutura no est definida

129

Membro de estrutura com o mesmo nome j


definido

130

Sem tal membro de estrutura

131

Emparelhamento de chaves violado

132

Parnteses de abertura "(" esperada

133

Chaves desbalanceadas (sem "}")

134

Dificuldade para compilar (ramificaes


demais, nveis de empilhamento interno so
sobre-preenchidos

135

Erro de abertura de arquivo para leitura

136

Sem memria suficiente para baixar o arquivo


fonte em memria

137

Varivel esperada

138

Referncia no pode ser inicializada

140

Atribuio esperada (aparece na declarao)

141

Chave de abertura "{" esperada

142

Parmetro pode ser um array dinmico somente

143

Uso de tipo "void" no aceitvel

144

Sem par correspondente para ")" ou "]", isto ,


"(" ou "[" est ausente

145

Sem par correspondente para "(" ou "[", isto ,


")" ou "]" est ausente

146

Tamanho de array incorreto

147

Excesso de parmetros (> 64)

149

Este smbolo (token) no esperado aqui

150

Uso invlido de operao (operandos invlidos)

151

Expresso de tipo void no permitido

152

Operador esperado

2000-2015, MetaQuotes Software Corp.

736

Constantes Padro, Enumeradores e Estruturas

153

Uso incorreto do break

154

Ponto e vrgula ";" esperado

155

Vrgula "," esperada

156

Deve ser um tipo classe, no estrutura

157

Expresso esperada

158

"no caractere HEX" encontrado em HEX ou


nmero longo demais (nmero de dgitos > 511)

159

Constante-string tem mais que 65534


caracteres

160

Definio de funo no aceitvel aqui

161

Trmino de programa inesperado

162

Declarao adiantada proibida para estruturas

163

Funo com este nome j est definida e tem


um outro tipo de retorno

164

Funo com este nome j est definida e tem


um conjunto diferente de parmetros

165

Funo com este nome j est definida e


implementada

166

Sobrecarga de funo para esta chamada no


foi encontrada

167

Funo com um valor de retorno de tipo void


no pode retornar um valor

168

Funo no est definida

170

Valor esperado

171

Em expresso case somente constantes inteiras


so vlidas

172

O valor de case neste switch j usado

173

Inteiro esperado

174

Em expresso #import, nome de arquivo


esperado

175

Expresses no so permitidas em nvel global

176

Parnteses ")" omitido antes de ";"

177

Uma varivel esquerda do sinal de igualdade


esperada

178

O resultado de expresso no usado

179

Declarao de variveis no permitida em


case

2000-2015, MetaQuotes Software Corp.

737

Constantes Padro, Enumeradores e Estruturas

180

Converso implcita de uma string para um


nmero

181

Converso implcita de um nmero para uma


string

182

Chamada ambgua de uma funo


sobrecarregada (vrias sobrecargas se
enquadram)

183

else ilegal sem apropriado if

184

Invlido case ou default sem um switch

185

Uso inapropriado de reticncia

186

A seqncia de inicializao tem mais


elementos que a varivel inicializada

187

Uma constante paracaseesperada

188

Uma expresso constante requerida

189

Uma varivel constante no pode ser alterada

190

Colchete de fechamento ou uma vrgula


esperado (declarando membro de array)

191

Identificador de enumerao j definido

192

Enumerao no pode ter modificadores de


acesso (const, extern, static)

193

Membro de enumerao j declarado com um


valor diferente

194

Existe uma varivel definida com o mesmo


nome

195

Existe uma estrutura definida com o mesmo


nome

196

Nome de membro de enumerao esperado

197

Expresso de inteiro esperado

198

Diviso por zero em expresso constante

199

Nmero errado de parmetros na funo

200

Parmetro por referncia deve ser uma varivel

201

Varivel de mesmo tipo para passar por


referncia esperada

202

Uma varivel constante no pode ser passada


por uma referncia no constante

203

Requer uma constante inteira positiva

204

Falha em acessar membro protegido de classe

2000-2015, MetaQuotes Software Corp.

738

Constantes Padro, Enumeradores e Estruturas

205

Import j definido de uma outra forma

208

Arquivo executvel no criado

209

Ponto de entrada 'OnCalculate' no encontrado


para o indicador

210

O operador continue pode ser usado somente


dentro de um loop

211

Erro acessando membro privado (fechado) de


classe

213

Mtodo de estrutura ou classe no est


declarado

214

Erro acessando mtodo privado (fechado) de


classe

216

Cpia de estruturas com objetos no


permitida

218

ndice fora do intervalo do array

219

Inicializao de array em declarao de


estrutura ou classe no permitida

220

Construtor de classe no pode ter parmetros

221

Destrutor de classe no pode ter parmetros

222

Mtodo de classe ou estrutura com o mesmo


nome e parmetros j foi declarado

223

Operando esperado

224

Mtodo de classe ou estrutura com o mesmo


nome existe, mas com parmetros diferentes
(declarao!=implementao)

225

Funo importada no est descrita

226

ZeroMemory() is not allowed for objects with


protected members or inheritance

227

Chamada ambgua da funo sobrecarregada


(correspondncia exata de parmetros para
vrias sobrecargas)

228

Nome de varivel esperada

229

Um referncia no pode ser declarada neste


local

230

J usado como nome da enumerao

232

Classe ou estrutura esperada

235

No pode chamar operador 'delete' para excluir


o array

2000-2015, MetaQuotes Software Corp.

739

Constantes Padro, Enumeradores e Estruturas

236

Operador 'while' esperado

237

Operador 'delete' deve ter um ponteiro

238

J existe 'default' para este 'switch'

239

Erro de sintaxe

240

Seqncia-escape pode ocorrer somente em


strings (comeam com '\')

241

Array requerido - colchete '[' no se aplica a um


array, ou no arrays so passados como
parmetros de array

242

No pode ser inicializado atravs da seqncia


de inicializao

243

Import no est definido

244

Erro de otimizador na rvore sinttica

245

Estruturas declaradas em excesso (tente


simplificar o programa)

246

Converso do parmetro no permitida

247

Uso incorreto do operador 'delete'

248

No permitido declarar um ponteiro para uma


referncia

249

No permitido declarar uma referncia para


uma referncia

250

No permitido declarar um ponteiro para um


ponteiro

251

Declarao de estrutura na lista de parmetros


no permitida

252

Operao invlida de converso de tipo

253

Um ponteiro pode ser declarado somente para


uma classe ou estrutura

256

Identificador no declarado

257

Erro do otimizador de cdigo executvel

258

Erro de gerao de cdigo executvel

260

Expresso invlida para o operador 'switch'

261

Pool de constantes de string sobre-preenchido,


simplifique o programa

262

No pode converter para enumerao

263

No use 'virtual' para dados (membros de uma


classe ou estrutura)

2000-2015, MetaQuotes Software Corp.

740

Constantes Padro, Enumeradores e Estruturas

264

No pode chamar mtodo protegido de uma


classe

265

Funes virtuais sobrepostas retornam um tipo


diferente

266

Classe no pode ser herdada de uma estrutura

267

Estrutura no pode ser herdada de uma classe

268

Construtor no pode ser virtual (especificador


virtual no permitido)

269

Estrutura no pode ter mtodos virtuais

270

Funo deve ter um corpo

271

Sobrecarga de funes de sistema (funes de


terminal) proibida

272

Especificador const no vlido para funes


que no so membros de uma classe ou
estrutura

274

No permitido alterar membros de classe em


mtodo constante

276

Seqncia de inicializao inapropriada

277

Valor default faltante para o parmetro


(declarao especfica de parmetros default)

278

Sobreposio do parmetro default (valores


diferentes na declarao e implementao)

279

No permitido chamar mtodo no constante


para um objeto constante

280

Um objeto necessrio para acessar membros


(um ponteiro para uma no classe/estrutura
est definido)

281

O nome de uma estrutura j declarada no pode


ser usado em declarao

284

Converso no autorizada (em herana


fechada)

285

Estruturas e arrays no podem ser usados como


variveis de input

286

Especificador const no vlido para


construtor/destrutor

287

Expresso de string incorreta para um datetime

288

Propriedade desconhecida (#property)

289

Valor incorreto de uma propriedade

2000-2015, MetaQuotes Software Corp.

741

Constantes Padro, Enumeradores e Estruturas

290

ndice invlido para uma propriedade em


#property

291

Chamar parmetro omitido - <func (x,)>

293

Objeto deve ser passado por referncia

294

Array deve ser passado por referncia

295

Funo foi declarada como exportvel

296

Funo no foi declarada como exportvel

297

proibido exportar funes importadas

298

Funo importada no pode ter este parmetro


(proibido passar um ponteiro, classe ou
estrutura contendo um array dinmico,
ponteiro, classe, etc.)

299

Deve ser uma classe

300

#import no foi fechado

302

Tipo incompatvel

303

Varivel externa (extern)j est inicializada

304

Nenhuma
funoexportadaouponto
entradaencontrado

305

Chamada explcita aoconstrutorno permitida

306

Mtodo foi declarado comoconstante

307

Mtodo no foi declarado comoconstante

308

Tamanho incorreto do arquivo de recurso

309

Nome de recurso incorreto

310

Erro de abertura de arquivo de recurso

311

Erro de leitura de arquivo de recurso

312

Tipo de recurso desconhecido

313

Caminho incorreto para o arquivo de recurso

314

O nome dorecursoespecificado j usado

315

Argumento esperado para a macro tipo-funo

316

Smbolo inesperado na definio de macro

317

Erro em parmetros formais da macro

318

Nmero invlido de parmetros para uma macro

319

Parmetro em excesso para uma macro

320

Complexo demais, simplifique a macro

2000-2015, MetaQuotes Software Corp.

de

742

Constantes Padro, Enumeradores e Estruturas

321

Parametro para EnumToString() somente pode


ser uma enumerao

322

O nome do recurso longo demais

323

Formato de imagem no suportado (somente


BMP com cor de 24 ou 32 bits de profundidade
suportado)

324

Um array no pode ser declarado em operador

325

A funo pode ser declarada somente no


escopo global

326

A declarao no permitida para o escopo


corrente

327

Inicializao de variveis estticas com os


valores de variveis locais no permitida

328

Declarao ilegal de um array de objetos que


no tem um construtor default

329

Lista de inicializao permitida somente para


construtores

330

Sem definio
inicializao

331

Lista de inicializao est vazia

332

Inicializao de array em um construtor no


permitida

333

Inicializar membros de uma classe pai na lista


de inicializao no permitido

334

Expresso do tipo inteiro esperado

335

Memria requerida para o array excede o valor


mximo

336

Memria requerida para a estrutura excede o


valor mximo

337

Memria requerida para as variveis declaradas


no nvel global excede o valor mximo

338

Memria requerida para variveis locais excede


o valor mximo

339

Construtorno definido

340

Nome invlido do arquivo de cone

341

No pode abrir o arquivo de coneno caminho


especificado

342

O arquivo de cone est incorreto e no do


formato ICO format

2000-2015, MetaQuotes Software Corp.

de

funo

aps

lista

de

743

Constantes Padro, Enumeradores e Estruturas

343

Reinicializao de um membro em um
construtor de uma classe/estrutura usando a
lista de inicializao

344

Inicializao de membros estticos na lista de


inicializao do construtor no permitida

345

Inicializao de um membro no-esttico de


uma classe/estrutura em nvel global no
permitida

346

O nome do mtodo da classe/estrutura


corresponde ao nome de um membro declarado
anteriormente

347

O nome do membro da classe/estrutura


corresponde ao nome de um mtodo declarado
anteriormente

348

Funo virtual no pode ser declarada como


esttica

349

O modificador const no permitido para


funes estticas

350

Construtor ou destrutor no pode ser esttico

351

Membros no-estticos de uma classe ou


estrutura no podem ser acessados a partir de
uma funo esttica

352

Uma operao de sobrecarregada (+,-,[],++,-etc.) esperada aps a palavra-chave operator

353

Nem todas as operaes


sobrecarregadas em MQL5

354

Definio no corresponde declarao

355

Um nmero invlido de
especificado para o operador

356

Funo de
encontrada

357

Mtodo no pode ser exportado

358

Um ponteiro para o objeto constante no pode


ser normalizado por um objeto no-constante

359

Templates de classe no so suportados ainda

360

Sobrecargade template
suportado ainda

361

Template de funo no pode ser aplicado

362

Parmetro ambguo em template de funo


(vrios tipos de parmetros podem ser

manipulao

2000-2015, MetaQuotes Software Corp.

de

podem

ser

parmetros

de

evento

funo

no

no

744

Constantes Padro, Enumeradores e Estruturas

aplicados)
363

Incapaz de determinar o tipo do parmetro,


atravs do qual o argumento do template de
funo deveria ser normalizado

364

Nmero incorreto de parmetros no template de


funo

365

Template de funo no pode ser virtual

366

Templates de funo no podem ser exportados

367

Templates de funo no podem ser importados

368

Estruturas contendo objetos no so permitidas

369

String arrays and structures containing the


objects are not allowed

370

A static class/structure member must be


explicitly initialized

371

Compiler limitation: the string cannot contain


more than 65 535 characters

372

Inconsistent #ifdef/#endif

373

Object of class cannot be returned, copy


constructor not found

374

Non-static members and methods cannot be


used

375

OnTesterInit() impossible
OnTesterDeinit()

376

Redefinition of formal parameter '%s'

377

Macro __FUNCSIG__ and __FUNCTION__ cannot


appear outside of a function body

378

Invalid returned type. For example, this error


will be produced for functions imported from
DLL that return structure or pointer.

2000-2015, MetaQuotes Software Corp.

to

use

without

745

Constantes Padro, Enumeradores e Estruturas

Erros em Tempo de Execuo


GetLastError() a funo que retorna o cdigo do ltimo erro que est armazenado na varivel
predefinida _LastError. Este valor pode ser redefinido para zero atravs da funo ResetLastError().
Constante

Cdigo

Descrio

ERR_SUCCESS

A operao
sucesso

ERR_INTERNAL_ERROR

4001

Erro interno inesperado

ERR_WRONG_INTERNAL_PARA
METER

4002

Parmetro errado na chamada


interna da funo do terminal
cliente

ERR_INVALID_PARAMETER

4003

Parmetro errado ao chamar a


funo de sistema

ERR_NOT_ENOUGH_MEMORY

4004

Sem memria suficiente para


executar a funo de sistema

ERR_STRUCT_WITHOBJECTS_
ORCLASS

4005

A estrutura contm objetos de


strings e/ou arrays dinmicos
e/ou estrutura de tais objetos
e/ou classes

ERR_INVALID_ARRAY

4006

Array de um tipo errado,


tamanho errado, ou um objeto
defeituoso de um array
dinmico

ERR_ARRAY_RESIZE_ERROR

4007

Sem memria suficiente para


a realocao de um array, ou
uma tentativa de alterar o
tamanho de um array esttico

ERR_STRING_RESIZE_ERROR

4008

Sem memria suficiente para


a realocao de string

ERR_NOTINITIALIZED_STRING

4009

String no inicializada

ERR_INVALID_DATETIME

4010

Data e/ou hora invlida

ERR_ARRAY_BAD_SIZE

4011

Tamanho de array solicitado


excede 2 GB

ERR_INVALID_POINTER

4012

Ponteiro errado

ERR_INVALID_POINTER_TYPE

4013

Tipo errado de ponteiro

ERR_FUNCTION_NOT_ALLOWE
D

4014

Funo de sistema no
permitida para chamar

ERR_RESOURCE_NAME_DUPLIC
ATED

4015

Os nomes do recurso dinmico


e do esttico equivalem

ERR_RESOURCE_NOT_FOUND

4016

Recurso com este nome no

2000-2015, MetaQuotes Software Corp.

concluda

com

746

Constantes Padro, Enumeradores e Estruturas

foi encontrado em EX5


ERR_RESOURCE_UNSUPPOTED
_TYPE

4017

Tipo de recurso no suportado


ou seu tamanho excede 16 Mb

ERR_RESOURCE_NAME_IS_TO
O_LONG

4018

O nome do recurso excede 63


caracteres

ERR_CHART_WRONG_ID

4101

Identificador de grfico (chart


ID) errado

ERR_CHART_NO_REPLY

4102

Grfico no responde

ERR_CHART_NOT_FOUND

4103

Grfico no encontrado

ERR_CHART_NO_EXPERT

4104

Nenhum Expert Advisor no


grfico que pudesse manipular
o evento

ERR_CHART_CANNOT_OPEN

4105

Erro de abertura de grfico

ERR_CHART_CANNOT_CHANG
E

4106

Falha ao alterar ativo


perodo de um grfico

ERR_CHART_WRONG_PARAME
TER

4107

Valor de erro do parmetro


para a funo que trabalha
com grficos

ERR_CHART_CANNOT_CREATE
_TIMER

4108

Falha ao criar timer

ERR_CHART_WRONG_PROPER
TY

4109

Identificador de propriedade
(property ID) do grfico errado

ERR_CHART_SCREENSHOT_FAI
LED

4110

Erro
criando
(screenshots)

ERR_CHART_NAVIGATE_FAILE
D

4111

Erro navegando atravs


grfico

ERR_CHART_TEMPLATE_FAILE
D

4112

Erro aplicando template

ERR_CHART_WINDOW_NOT_F
OUND

4113

Sub-janela
contendo
o
indicador no foi encontrada

ERR_CHART_INDICATOR_CANN
OT_ADD

4114

Erro adicionando um indicador


no grfico

ERR_CHART_INDICATOR_CANN
OT_DEL

4115

Erro excluindo um indicador do


grfico

ERR_CHART_INDICATOR_NOT_
FOUND

4116

Indicador no encontrado no
grfico especificado

4201

Erro

Grficos

telas

de

Objetos Grficos
ERR_OBJECT_ERROR

2000-2015, MetaQuotes Software Corp.

trabalhando

com

um

747

Constantes Padro, Enumeradores e Estruturas

objeto grfico
ERR_OBJECT_NOT_FOUND

4202

Objeto
grfico
encontrado

no

foi

ERR_OBJECT_WRONG_PROPER
TY

4203

Identificador (ID) de uma


propriedade de objeto grfico
errado

ERR_OBJECT_GETDATE_FAILE
D

4204

No foi possvel obter data


correspondente ao valor

ERR_OBJECT_GETVALUE_FAIL
ED

4205

No foi possvel obter valor


correspondente data

ERR_MARKET_UNKNOWN_SYM
BOL

4301

Ativo desconhecido

ERR_MARKET_NOT_SELECTED

4302

Ativo no est selecionado na


janela Observao de Mercado

ERR_MARKET_WRONG_PROPE
RTY

4303

Identificador
de
uma
propriedade de ativo errado

ERR_MARKET_LASTTIME_UNKN
OWN

4304

Hora do ltimo tick no


conhecida (sem ticks)

ERR_MARKET_SELECT_ERROR

4305

Erro adicionando ou excluindo


um ativo na janela Observao
de Marcado

ERR_HISTORY_NOT_FOUND

4401

Histrico
encontrado

ERR_HISTORY_WRONG_PROPE
RTY

4402

Identificador
propriedade
errado

MarketInfo

Acesso de Histrico
solicitado

de

no

(ID)
da
histrico

Variveis Globais
ERR_GLOBALVARIABLE_NOT_F
OUND

4501

Varivel global do terminal


cliente no foi encontrada

ERR_GLOBALVARIABLE_EXISTS

4502

Varivel global do terminal


cliente com o mesmo nome j
existe

ERR_MAIL_SEND_FAILED

4510

Envio de email falhou

ERR_PLAY_SOUND_FAILED

4511

Reproduo de som falhou

ERR_MQL5_WRONG_PROPERT
Y

4512

Identificador de propriedade
do programa errado

ERR_TERMINAL_WRONG_PROP

4513

Identificador de propriedade

2000-2015, MetaQuotes Software Corp.

748

Constantes Padro, Enumeradores e Estruturas

ERTY

do terminal errado

ERR_FTP_SEND_FAILED

4514

Envio de arquivo via ftp falhou

ERR_NOTIFICATION_SEND_FAI
LED

4515

Falha
ao
notificao

ERR_NOTIFICATION_WRONG_P
ARAMETER

4516

Parmetro invlido para enviar


uma notificao uma string
vazia ou NULL foi passada
para
a
funo
SendNotification()

ERR_NOTIFICATION_WRONG_S
ETTINGS

4517

Configuraes de notificaes
erradas no terminal (ID no
est
especificado
ou
permisso no est definida)

ERR_NOTIFICATION_TOO_FRE
QUENT

4518

Freqncia de envio
notificaes em excesso

ERR_BUFFERS_NO_MEMORY

4601

Sem memria suficiente para


a distribuio de buffers de
indicador

ERR_BUFFERS_WRONG_INDEX

4602

ndice de buffer de indicador


errado

4603

Identificador
(ID)
de
propriedade
do
indicador
customizado errado

ERR_ACCOUNT_WRONG_PROP
ERTY

4701

Identificador
(ID)
de
propriedade da conta errado

ERR_TRADE_WRONG_PROPER
TY

4751

Identificador
(ID)
de
propriedade da negociao
(trade) errado

ERR_TRADE_DISABLED

4752

Negociao
via
Advisors proibida

ERR_TRADE_POSITION_NOT_F
OUND

4753

Posio no encontrada

ERR_TRADE_ORDER_NOT_FOU
ND

4754

Ordem no encontrada

ERR_TRADE_DEAL_NOT_FOUN
D

4755

Operao
encontrada

enviar

uma

de

Buffers de Indicador
Customizado

Propriedades de Indicador
Customizado
ERR_CUSTOM_WRONG_PROPE
RTY

Conta

2000-2015, MetaQuotes Software Corp.

(deal)

Expert

no

749

Constantes Padro, Enumeradores e Estruturas

ERR_TRADE_SEND_FAILED

4756

Envio
de solicitao
negociao falhou

de

ERR_INDICATOR_UNKNOWN_S
YMBOL

4801

Ativo desconhecido

ERR_INDICATOR_CANNOT_CRE
ATE

4802

Indicador no pode ser criado

ERR_INDICATOR_NO_MEMORY

4803

Sem memria suficiente para


adicionar o indicador

ERR_INDICATOR_CANNOT_APP
LY

4804

O indicador no pode ser


aplicado a um outro indicador

ERR_INDICATOR_CANNOT_ADD

4805

Erro ao aplicar um indicador


ao grfico

ERR_INDICATOR_DATA_NOT_F
OUND

4806

Dado
solicitado
encontrado

ERR_INDICATOR_WRONG_HAN
DLE

4807

Manuseio de indicador errado

ERR_INDICATOR_WRONG_PAR
AMETERS

4808

Numero errado de parmetros


ao criar um indicador

ERR_INDICATOR_PARAMETERS
_MISSING

4809

Sem parmetros ao criar um


indicador

ERR_INDICATOR_CUSTOM_NA
ME

4810

O primeiro parmetro no array


deve ser o nome do indicador
customizado

ERR_INDICATOR_PARAMETER_
TYPE

4811

Tipo de parmetro invlido no


array ao criar um indicador

ERR_INDICATOR_WRONG_INDE
X

4812

ndice errado de buffer do


indicador solicitado

ERR_BOOKS_CANNOT_ADD

4901

Profundidade de Mercado no
pode ser adicionado

ERR_BOOKS_CANNOT_DELETE

4902

Profundidade de Mercado no
pode ser removido

ERR_BOOKS_CANNOT_GET

4903

Os dados da Profundidade de
Mercado no podem ser
obtidos

ERR_BOOKS_CANNOT_SUBSCRI
BE

4904

Erro em subscrever para


receber novos dados da
Profundidade de Mercado

Indicadores

no

Profundidade de Mercado

Operaes de Arquivo

2000-2015, MetaQuotes Software Corp.

750

Constantes Padro, Enumeradores e Estruturas

ERR_TOO_MANY_FILES

5001

Mais que 64 arquivos no


podem ser abertos ao mesmo
tempo

ERR_WRONG_FILENAME

5002

Nome de arquivo invlido

ERR_TOO_LONG_FILENAME

5003

Nome de arquivo longo demais

ERR_CANNOT_OPEN_FILE

5004

Erro de abertura de arquivo

ERR_FILE_CACHEBUFFER_ERR
OR

5005

Sem memria suficiente de


cache para leitura

ERR_CANNOT_DELETE_FILE

5006

Erro excluindo arquivo

ERR_INVALID_FILEHANDLE

5007

Um arquivo com este handle


foi fechado, ou simplesmente
no estava aberto

ERR_WRONG_FILEHANDLE

5008

Handle de arquivo errado

ERR_FILE_NOTTOWRITE

5009

O arquivo deve estar abertura


para escrita

ERR_FILE_NOTTOREAD

5010

O arquivo deve estar aberto


para leitura

ERR_FILE_NOTBIN

5011

O arquivo deve estar aberto


como um arquivo binrio

ERR_FILE_NOTTXT

5012

O arquivo deve estar aberto


como um texto

ERR_FILE_NOTTXTORCSV

5013

O arquivo deve estar aberto


como um texto ou CSV

ERR_FILE_NOTCSV

5014

O arquivo deve estar aberto


como CSV

ERR_FILE_READERROR

5015

Erro de leitura de arquivo

ERR_FILE_BINSTRINGSIZE

5016

Tamanho da string deve estar


especificado, porque o arquivo
est aberto como binrio

ERR_INCOMPATIBLE_FILE

5017

Um arquivo de texto deve ser


usado para arrays de strings,
para outros arrays - binrios

ERR_FILE_IS_DIRECTORY

5018

Isto no um arquivo, isto


um diretrio

ERR_FILE_NOT_EXIST

5019

Arquivo inexistente

ERR_FILE_CANNOT_REWRITE

5020

Arquivo no pode ser reescrito

ERR_WRONG_DIRECTORYNAM
E

5021

Nome de diretrio errado

ERR_DIRECTORY_NOT_EXIST

5022

Diretrio inexistente

2000-2015, MetaQuotes Software Corp.

751

Constantes Padro, Enumeradores e Estruturas

ERR_FILE_ISNOT_DIRECTORY

5023

Isto um arquivo, no um
diretrio

ERR_CANNOT_DELETE_DIRECT
ORY

5024

O diretrio
removido

ERR_CANNOT_CLEAN_DIRECT
ORY

5025

Falha ao limpar o diretrio


(provavelmente um ou mais
arquivos esto bloqueados e a
operao de remoo falhou)

ERR_FILE_WRITEERROR

5026

Falha ao escrever um recurso


para um arquivo

ERR_NO_STRING_DATE

5030

Sem data na string

ERR_WRONG_STRING_DATE

5031

Data errada na string

ERR_WRONG_STRING_TIME

5032

Hora errada na string

ERR_STRING_TIME_ERROR

5033

Erro convertendo string em


data

ERR_STRING_OUT_OF_MEMOR
Y

5034

Sem memria suficiente para


a string

ERR_STRING_SMALL_LEN

5035

O comprimento da string
menor que o esperado

ERR_STRING_TOO_BIGNUMBER

5036

Nmero grande demais, maior


que ULONG_MAX

ERR_WRONG_FORMATSTRING

5037

string de formato invlido

ERR_TOO_MANY_FORMATTER
S

5038

Quantidade de especificadores
de formato maior que de
parmetros

ERR_TOO_MANY_PARAMETERS

5039

Quantidade de parmetros
maior que de especificadores
de formato

ERR_WRONG_STRING_PARAME
TER

5040

Parmetro
defeituoso

ERR_STRINGPOS_OUTOFRANG
E

5041

Posio fora da string

ERR_STRING_ZEROADDED

5042

0 adicionado ao final da
string, uma operao intil

ERR_STRING_UNKNOWNTYPE

5043

Tipo de dado desconhecido ao


converter para uma string

ERR_WRONG_STRING_OBJECT

5044

Objeto de string defeituoso

no

pode

ser

Converso de String

Operaes com Arrays

2000-2015, MetaQuotes Software Corp.

de

tipo

string

752

Constantes Padro, Enumeradores e Estruturas

ERR_INCOMPATIBLE_ARRAYS

5050

Copiando
arrays
incompatveis. Array de string
pode ser copiado somente
para um array de string, e um
array numrico - somente em
um array numrico

ERR_SMALL_ASSERIES_ARRAY

5051

O array de recepo est


declarado como AS_SERIES, e
de tamanho insuficiente.

ERR_SMALL_ARRAY

5052

Array pequeno demais, a


posio inicial est fora do
array

ERR_ZEROSIZE_ARRAY

5053

Um array de comprimento zero

ERR_NUMBER_ARRAYS_ONLY

5054

Deve ser um array numrico

ERR_ONEDIM_ARRAYS_ONLY

5055

Deve
ser
unidimensional

ERR_SERIES_ARRAY

5056

Srie de tempo (timeseries)


no pode ser usada

ERR_DOUBLE_ARRAY_ONLY

5057

Deve ser um array de tipo


double

ERR_FLOAT_ARRAY_ONLY

5058

Deve ser um array de tipo


float

ERR_LONG_ARRAY_ONLY

5059

Deve ser um array de tipo long

ERR_INT_ARRAY_ONLY

5060

Deve ser um array de tipo int

ERR_SHORT_ARRAY_ONLY

5061

Deve ser um array de tipo


short

ERR_CHAR_ARRAY_ONLY

5062

Deve ser um array de tipo char

ERR_OPENCL_NOT_SUPPORTE
D

5100

Funes OpenCL no so
suportados neste computador

ERR_OPENCL_INTERNAL

5101

Erro interno ocorreu


executar OpenCL

ERR_OPENCL_INVALID_HANDL
E

5102

Handle de OpenCL invlido

ERR_OPENCL_CONTEXT_CREA
TE

5103

Erro criando o contexto de


OpenCL

ERR_OPENCL_QUEUE_CREATE

5104

Falha ao criar um fila de


execuo em OpenCL

ERR_OPENCL_PROGRAM_CREA
TE

5105

Erro ocorreu ao compilar um


programa OpenCL

um

array

Operaes com OpenCL

2000-2015, MetaQuotes Software Corp.

ao

753

Constantes Padro, Enumeradores e Estruturas

ERR_OPENCL_TOO_LONG_KER
NEL_NAME

5106

Nome
de
kernel
longo
demais(kernel de OpenCL)

ERR_OPENCL_KERNEL_CREATE

5107

Erro criando um kernel de


OpenCL

ERR_OPENCL_SET_KERNEL_PA
RAMETER

5108

Erro ocorreu ao configurar


parmetrospara o kernel de
OpenCL

ERR_OPENCL_EXECUTE

5109

Erro em tempo de execuo


de programa de OpenCL

ERR_OPENCL_WRONG_BUFFER
_SIZE

5110

Tamanho invlido do buffer de


OpenCL

ERR_OPENCL_WRONG_BUFFER
_OFFSET

5111

Deslocamento (offset) invlido


do buffer de OpenCL

ERR_OPENCL_BUFFER_CREATE

5112

Falha ao criar um buffer de


OpenCL

ERR_WEBREQUEST_INVALID_A
DDRESS

5200

Invalid URL

ERR_WEBREQUEST_CONNECT_
FAILED

5201

Failed to connect to specified


URL

ERR_WEBREQUEST_TIMEOUT

5202

Timeout exceeded

ERR_WEBREQUEST_REQUEST_
FAILED

5203

HTTP request failed

65536

Erros
definidos
usuriocomeam com
cdigo

Operations with WebRequest

Erros Definidos pelo Usurio


ERR_USER_ERROR_FIRST

Tambm Veja
Cdigos de Retorno do Servidor de Negociao

2000-2015, MetaQuotes Software Corp.

pelo
este

754

Constantes Padro, Enumeradores e Estruturas

Constantes de Entrada e Sada


Constantes:
Flags de abertura de arquivo
Propriedades de arquivo
Posicionamento dentro de um arquivo
Uso de code page
MessageBox

2000-2015, MetaQuotes Software Corp.

755

Constantes Padro, Enumeradores e Estruturas

Flags de Abertura de Arquivo


Valores de flags de abertura de arquivo especificam o modo de acesso do arquivo. Flags so definidos
como se segue:
Identificador

Valor

Descrio

FILE_READ

Arquivo aberto para leitura.


Flag usado em FileOpen(). Ao
abrir
um
arquivo,
a
especificao de FILE_WRITE
e/ou FILE_READ requerida.

FILE_WRITE

Arquivo aberto para escrita.


Flag usado em FileOpen(). Ao
abrir
um
arquivo,
a
especificao de FILE_WRITE
e/ou FILE_READ requerida.

FILE_BIN

Modo de leitura/escrita binria


(sem converso string para
string). Flag usado em
FileOpen()

FILE_CSV

Arquivo CSV (todos seus


elementos so convertidos para
strings do tipo apropriado,
unicode ou ansi, e separados
por separador). Flag usado
em FileOpen()

FILE_TXT

16

Arquivo de texto simples


(semelhando ao arquivo csv,
mas sem levar em conta os
separadores). Flag usado em
FileOpen()

FILE_ANSI

32

Strings de tipo ANSI (smbolos


de um byte). Flag usado em
FileOpen()

FILE_UNICODE

64

Strings de tipo UNICODE


(smbolos de dois bytes). Flag
usado em FileOpen()

FILE_SHARE_READ

128

Acesso compartilhado para


leitura a partir de vrios
programas. Flag usado em
FileOpen(), mas ele no
substitui a necessidade de
indicar o flag FILE_WRITE e/ou
FILE_READ
ao
abrir
um
arquivo.

FILE_SHARE_WRITE

256

Acesso

2000-2015, MetaQuotes Software Corp.

compartilhado

para

756

Constantes Padro, Enumeradores e Estruturas


escrita a partir de vrios
programas. Flag usado em
FileOpen(), mas ele no
substitui a necessidade de
indicar o flag FILE_WRITE e/ou
FILE_READ
ao
abrir
um
arquivo.
FILE_REWRITE

512

Possibilidade de reescrever o
arquivo usando as funes
FileCopy() e FileMove(). O
arquivo deve existir ou deve
estar aberto para escrita, de
outra forma o arquivo no ser
aberto.

FILE_COMMON

4096

O caminho do arquivo na pasta


comum de todos os terminais
cliente
\Terminal\Common
\Files. Flag usado em
funes FileOpen(), FileCopy(),
FileMove() e em FileIsExist().

Um ou vrios flags podem ser especificado ao abrir um arquivo. Esta uma combinao de flags. A
combinao de flags escrita usando o sinal de lgica OR (|), que posicionado entre os flags
enumerados. Por exemplo, para abrir um arquivo em formato CSV para leitura e escrita ao mesmo
tempo, especifique a combinao FILE_READ|FILE_WRITE|FILE_CSV.
Exemplo:
int filehandle=FileOpen(filename,FILE_READ|FILE_WRITE|FILE_CSV);

Existem algumas caractersticas especficas de funcionamento ao se especificar flags de leitura e


escrita:
Se FILE_READ especificado, uma tentativa feita para abrir um arquivo existente. Caso o arquivo
no exista, a abertura do arquivo falha, um novo arquivo no criado.
FILE_READ|FILE_WRITE um novo arquivo criado caso o arquivo com o nome especificado no
exista.
FILE_WRITE o arquivo criado novamente com tamanho zero.
Ao abrir um arquivo, a especificao de FILE_WRITE e/ou FILE_READ requerida.
Flags que definem o tipo de leitura de um arquivo aberto, possuem prioridade. O flag de mais alta
prioridade FILE_CSV, da vem FILE_BIN, e FILE_TXT o de mais baixa prioridade. Assim, se vrios
flags so especificados ao mesmo tempo (FILE_TXT|FILE_CSV ou FILE_TXT|FILE_BIN ou FILE_BIN|
FILE_CSV), o flag com a mais alta prioridade ser usado.
Flags que definem o tipo de codificao tambm tm prioridade. FILE_UNICODE de maior prioridade
que FILE_ANSI. Assim, se voc especificar a combinao FILE_UNICODE|FILE_ANSI, o flag
FILE_UNICODE ser usado.
Se nem FILE_UNICODE ou FILE_ANSI forem indicados, FILE_UNICODE fica implcito. Se nem FILE_CSV,
ou FILE_BIN, ou FILE_TXT forem especificados, FILE_CSV fica implcito.

2000-2015, MetaQuotes Software Corp.

757

Constantes Padro, Enumeradores e Estruturas


Se um arquivo aberto para leitura como um arquivo de texto (FILE_TXT ou FILE_CSV), e no incio do
arquivo uma indicao de dois-bytes 0xff,0xfe encontrada, o flag de codificao ser FILE_UNICODE,
mesmo se FILE_ANSI for especificado.
Tambm Veja
Funes de Arquivo

2000-2015, MetaQuotes Software Corp.

758

Constantes Padro, Enumeradores e Estruturas

Propriedades de Arquivo
A funo FileGetInteger() usada para obter propriedades de arquivo. O identificador da propriedade
requerida proveniente da enumerao ENUM_FILE_PROPERTY_INTEGER passado para ela durante a
chamada.
ENUM_FILE_PROPERTY_INTEGER
ID

Descrio

FILE_EXISTS

Verifica a existncia

FILE_CREATE_DATE

Data de criao

FILE_MODIFY_DATE

Data da ltima modificao

FILE_ACCESS_DATE

Data do ltimo acesso ao arquivo

FILE_SIZE

Tamanho de arquivo em bytes

FILE_POSITION

Posio de um ponteiro no arquivo

FILE_END

Obtm o sinal de trmino de arquivo

FILE_LINE_END

Obtm o sinal de termino de linha

FILE_IS_COMMON

O arquivo est aberto em uma pasta


compartilhada por todos os terminais (veja
FILE_COMMON)

FILE_IS_TEXT

O arquivo est aberto como um arquivo de


texto (veja FILE_TXT)

FILE_IS_BINARY

O arquivo est aberto como um arquivo binrio


(veja FILE_BIN)

FILE_IS_CSV

O arquivo
FILE_CSV)

FILE_IS_ANSI

O arquivo est aberto como ANSI (veja


FILE_ANSI)

FILE_IS_READABLE

O arquivo
FILE_READ)

FILE_IS_WRITABLE

O arquivo aberto pode ser escrito (veja


FILE_WRITE)

est

aberto

aberto

pode

como

ser

CSV

lido

(veja

(veja

A funo FileGetInteger() tem duas opes diferentes de chamada. Na primeira opo, para obter
propriedades de um arquivo, seu handle especificado, que obtido na abertura do arquivo usando a
funo FileOpen(). Esta opo permite obter todas as propriedades de um arquivo.
A segunda opo da funo FileGetInteger() retorna valores de propriedades de arquivo atravs do
nome do arquivo. Usando esta opo, somente as seguintes propriedades gerais podem ser obtidas:
FILE_EXISTS existncia de um arquivo com o nome especificado
FILE_CREATE_DATE data de criao do arquivo com o nome especificado

2000-2015, MetaQuotes Software Corp.

759

Constantes Padro, Enumeradores e Estruturas


FILE_MODIFY_DATE data de modificao do arquivo com o nome especificado
FILE_ACCESS_DATE - data do ltimo acesso ao arquivo com o nome especificado
FILE_SIZE tamanho do arquivo com o nome especificado
Ao tentar obter propriedades outras daquelas especificadas acima, a segunda opo de chamada de
FileGetInteger() retornar um erro.

2000-2015, MetaQuotes Software Corp.

760

Constantes Padro, Enumeradores e Estruturas

Posicionamento Dentro de um Arquivo


A maioria das funes de arquivo associada com operaes leitura/escrita de dados. Ao mesmo
tempo, usando a funo FileSeek() voc pode especificar a posio de um ponteiro de arquivo para
uma posio dentro do arquivo, a partir da qual a prxima operao de leitura ou escrita ser
realizada. A enumerao ENUM_FILE_POSITION contm posies vlidas de ponteiro, com a qual voc
pode especificar um deslocamento em bytes para a prxima operao.
ENUM_FILE_POSITION
Identificador

Descrio

SEEK_SET

Incio de arquivo

SEEK_CUR

Posio corrente de um ponteiro de arquivo

SEEK_END

Fim de arquivo

Tambm Veja
FileIsEnding, FileIsLineEnding

2000-2015, MetaQuotes Software Corp.

761

Constantes Padro, Enumeradores e Estruturas

Usando um Cdigo de Pgina (Codepage) em Operaes de


Converso de String
Ao converter variveis string em arrays de tipo char e vice-versa, a codificao que por default
correspodente ao ANSI corrente do sistema operacional Windows (CP_ACP) usada em MQL5. Se voc
quiser especificar um tipo diferente de codificao, isso pode ser definido como parmetro adicional
para as funes CharArrayToString(), StringToCharArray() e FileOpen().
A tabela lista as constantes internas de alguns dos mais populares cdigos de pgina. Cdigos de
pgina no mencionados podem ser especificados atravs de um cdigo correspondente pgina.
Constantes Internas de Cdigo de Pginas (Codepages)
Constante

Valor

Descrio

CP_ACP

O cdigo de pgina ANSI do


Windows corrente.

CP_OEMCP

O cdigo de pgina do sistema


OEM corrente.

CP_MACCP

O cdigo de pgina do sistema


Macintosh corrente.
Note: Este valor usado
principalmente em cdigos de
programa criados antigamente
e est sem uso atualmente, j
que computadores Macintosh
modernos usando Unicode para
codificao.

CP_THREAD_ACP

O cdigo de pgina ANSI do


Windows para
o
thread
corrente.

CP_SYMBOL

42

Cdigo de pgina de smbolo

CP_UTF7

65000

Cdigo de pgina UTF-7.

CP_UTF8

65001

Cdigo de pgina UTF-8.

Tambm Veja
Propriedades do Terminal Cliente

2000-2015, MetaQuotes Software Corp.

762

Constantes Padro, Enumeradores e Estruturas

Constantes da Janela de Dilogo MessageBox


Esta seo contm cdigos de retorno da funo MessageBox(). Se um janela de mensagem tem um
boto Cancel, a funo retorna IDCANCEL no caso da tecla ESC ou o boto Cancel serem pressionados.
Caso no exista nenhum boto Cancel na janela de mensagem, pressionar o ESC no produz nenhum
efeito.
Constante

Valor

Descrio

IDOK

Boto "OK" foi pressionado

IDCANCEL

Boto "Cancel" foi pressionado

IDABORT

Boto "Abort" foi pressionado

IDRETRY

Boto "Retry" foi pressionado

IDIGNORE

Boto "Ignore" foi pressionado

IDYES

Boto "Yes" foi pressionado

IDNO

Boto "No" foi pressionado

IDTRYAGAIN

10

Boto
"Try
pressionado

IDCONTINUE

11

Boto
"Continue"
pressionado

Again"

foi

foi

Os principais flags da funo MessageBox() definem o contedo e comportamento da janela de


dilogo. Este valor pode ser uma combinao dos seguintes grupos de flag:
Constante

Valor

Descrio

MB_OK

0x00000000

Janela de mensagem contm


somente um boto: OK.
Default

MB_OKCANCEL

0x00000001

Janela de mensagem contm


dois botes: OK e Cancel

MB_ABORTRETRYIGNORE

0x00000002

Janela de mensagem contm


trs botes: Abort, Retry e
Ignore

MB_YESNOCANCEL

0x00000003

Janela de mensagem contm


trs botes: Yes, No e Cancel

MB_YESNO

0x00000004

Janela de mensagem contm


dois botes: Yes e No

MB_RETRYCANCEL

0x00000005

Janela de mensagem contm


dois botes: Retry e Cancel

MB_CANCELTRYCONTINUE

0x00000006

Janela de mensagem contm

2000-2015, MetaQuotes Software Corp.

763

Constantes Padro, Enumeradores e Estruturas

trs botes: Cancel,


Again, Continue

Try

Para exibir um cone na janela de mensagem necessrio especificar flags adicionais:


Constante

Valor

Descrio

MB_ICONSTOP,
MB_ICONERROR,
MB_ICONHAND

0x00000010

O cone de sinal STOP

MB_ICONQUESTION

0x00000020

O
cone
de
interrogao

sinal

de

MB_ICONEXCLAMATION,
MB_ICONWARNING

0x00000030

O
cone
de
sinal
exclamao/aviso

de

MB_ICONINFORMATION,
MB_ICONASTERISK

0x00000040

O sinal icercado

Os botes default so definidos atravs dos seguintes flags:


Constante

Valor

Descrio

MB_DEFBUTTON1

0x00000000

O
primeiro
boto
MB_DEFBUTTON1 - o default,
se
os
outros
botes
MB_DEFBUTTON2,
MB_DEFBUTTON3,
ou
MB_DEFBUTTON4 no forem
especificados

MB_DEFBUTTON2

0x00000100

O segundo boto o default

MB_DEFBUTTON3

0x00000200

O terceiro boto o default

MB_DEFBUTTON4

0x00000300

O quarto boto o default

2000-2015, MetaQuotes Software Corp.

764

Programas MQL5

Programas MQL5
Para um programa-mql5 funcionar, ele deve ser compilado (boto Compilar ou tecla F7). A compilao
deve passar sem erros (alguns avisos so possveis; eles devem ser analisados). Neste processo, um
arquivo executvel com o mesmo nome e com extenso EX5 deve ser criado no diretrio
correspondente, terminal_dir\MQL5\Experts, terminal_dir\MQL5\indicators ou terminal_dir\MQL5
\scripts. Este arquivo pode ser executado.
Caractersticas operacionais de programas MQL5 so descritas nas seguintes sees:
Execuo de Programa ordem de chamada de manipuladores de eventos predefinidos.
Testando estratgias de negociao caractersticas operacionais de programas MQL5 no Provador
de Estratgias.
Eventos do terminal cliente descrio de eventos, que podem ser processados em programas.
Chamada de funes importadas ordem de descrio, parmetros permitidos, detalhes de busca e
conveno de chamada para funes importadas.
Erros em tempo de execuo obteno de informaes sobre erros crticos e em tempo de
execuo.
Expert Advisors, indicadores customizados e scripts so anexados a um dos grficos abertos atravs
do mtodo "Arrastar e Soltar" a partir da janela Navegador.
Para um Expert Advisor parar de funcionar, ele deve ser removido de um grfico. Para fazer isso
selecione a "Lista de Experts" no menu de contexto do grfico, ento selecione um Expert Advisor da
lista e clique no boto "Remover". O funcionamento de Expert Advisors tambm afetado pelo estado
do boto "AutoTrading".
A fim de parar um indicador customizado, ele deve ser removido de um grfico.
Indicadores customizados e Expert Advisors trabalham at eles serem explicitamente removidos de um
grfico; informaes sobre Expert Advisors e Indicadores so salvos entre sesses do terminal cliente.
Scripts so executados uma vez e so excludos automaticamente na concluso da operao ou
mudana de estado do grfico corrente, ou no encerramento do terminal cliente. Aps o reincio do
terminal cliente, scripts no so iniciados, porque as informaes sobre eles no so salvas.
Em um grfico podem operar no mximo um Expert Advisor, um script e um nmero ilimitado de
indicadores.

2000-2015, MetaQuotes Software Corp.

765

Programas MQL5

Execuo de Programa
Cada script e cada Expert Advisor executado em seu prprio segmento separado. Todos os
indicadores calculados sobre um smbolo, mesmo se eles estiverem anexados a difidentes grficos,
trabalham em um mesmo segmento. Assim, todos os indicadores sobre um smbolo compartilham os
recursos de um segmento.
Todas as outras aes associadas a um smbolo, como processamento de ticks e sincronizao de
histrico, tambm so consistentemente realizadas no mesmo segmento com indicadores. Isso
significa que se uma ao infinita realizada em um indicador, todos os outros eventos associados a
seu ativo nunca sero realizados.
Ao executar um Expert Advisor, certifique-se de que ele tem um ambiente de negociao real e pode
acessar o histrico do requerido ativo e perodo, e sincronizar dados entre o terminal e o servidor.
Para todos estes procedimentos, o terminal fornece um atraso de iniciao de no mais que 5
segundos, aps o qual o Expert Advisor ser iniciado com os dados disponveis. Portanto, no caso de
no haver conexo com o servidor, isso pode levar a um atraso na iniciao de um Expert Advisor.
A tabela abaixo contm um breve resumo sobre programas MQL5:
Programa

Execuo

Observao

Script

Um segmento separado, o
nmero de segmentos para
scripts igual ao nmero de
scripts

Um script em loop no capaz


de interromper a execuo de
outros programas

Expert Advisor

Um segmento separado, o
nmero de segmentos para
Expert Advisor igual ao
nmero de Expert Advisor

Um Expert Advisor em loop


no capaz de interromper a
execuo de outros programas

Indicador

Um segmento para todos os


indicadores de um smbolo. O
nmero de segmentos igual
ao nmero de smbolos com
indicadores

Um loop infinito em um
indicador ir parar todos os
outros indicadores sobre este
ativo

Logo aps um programa ser anexado a um grfico, ele carregado para a memria do terminal
cliente, bem como variveis globais so inicializadas. Caso alguma varivel global do tipo classe tiver
um construtor, este construtor ser chamado durante a inicializao das variveis globais.
Aps isso, o programa fica esperando por um evento do terminal cliente. Cada programa-MQL5 deve
ter ao menos um manipulador (handler) de evento, caso contrrio o programa carregado no ser
executado. Handlers de evento tm nomes pr-definidos, parmetros e tipos de retorno.
Tipo

int

Nome da
Funo
OnInit

Parmetros

nenhum

Aplicativo

Expert Advisors
e indicadores

2000-2015, MetaQuotes Software Corp.

Comentrio

Handler
de
evento Init. Ele
permite usar o

766

Programas MQL5

tipo de retorno
void.
void

OnDeinit

const int reason

Expert Advisors
e indicadores

Handler
de
evento Deinit.

void

OnStart

nenhum

scripts

Handler
de
evento Start.

int

OnCalculate

const
int
rates_total,
const
int
prev_calculated,
const datetime
&Time[],
const
double
&Open[],
const
double
&High[],
const
double
&Low[],
const
double
&Close[],
const
long
&TickVolume[],
const
long
&Volume[],
const
int
&Spread[]

indicadores

Handler de evento
Calculate
para
todos os preos.

int

OnCalculate

const
int
rates_total,
const
int
prev_calculated,
const int begin,
const
double
&price[]

indicadores

Handler
de
evento Calculate
sobre um array
nico de dados.
Um indicador no
pode
ter
simultaneamente
dois handlers de
evento.
Neste
caso
apenas
um
handler
(manipulador) de
evento
vai
trabalhar
na
array de dados.

void

OnTick

nenhum

Expert Advisors

Handler
de
evento NewTick.
Enquanto
o
evento
de
recebimento de

2000-2015, MetaQuotes Software Corp.

767

Programas MQL5

um novo tick
est
sendo
processado,
nenhum
outro
evento
deste
tipo recebido.
void

OnTimer

nenhum

Expert Advisors
e indicadores

Handler
de
evento Timer.

void

OnTrade

nenhum

Expert Advisors

Handler
de
evento Trade.

double

OnTester

nenhum

Expert Advisors

Handler
de
evento Tester.

void

OnChartEvent

const int id,


const
long
&lparam,
const
double
&dparam,
const
string
&sparam

Expert Advisors
e indicadores

Handler
evento
ChartEvent.

de

void

OnBookEvent

const
string
&symbol_name

Expert Advisors
e indicadores

Handler
evento
BookEvent.

de

Um terminal cliente envia novos eventos para o grfico aberto correspondente. Os eventos podem ser
gerados por grficos (Eventos de grfico) ou programas-MQL5 (eventos customizados). A gerao de
eventos de criao ou excluso de objetos grficos sobre um grfico pode ser habilitado ou
desabilitado atravs da definio das propriedades de grfico CHART_EVENT_OBJECT_CREATE e
CHART_EVENT_OBJECT_DELETE. Cada programa MQL5 e cada grfico tm sua prpria fila de eventos,
onde todos os novos eventos que chegam so adicionados.
Um programa recebe somente eventos do grfico no qual ele est rodando. Todos os eventos so
processados um aps o outro na ordem que em eles so recebidos. Se um fila j tiver um evento
NewTick, ou este evento est correntemente sendo processado, ento um novo evento NewTick no
colocado na fila do programa MQL5. Similarmente, se ChartEvent j esta enfileirado, ou este evento
est sendo processado, nenhum novo evento deste tipo enfileirado. Os eventos de timer so
tratados da mesma forma se o evento Timer est na filha ou sendo tratado, um novo evento timer
no enfileirado .
Filas de evento tm um tamanho limitado mas suficiente, de modo que a sobrecarga de uma fila em
programas bem escritos improvvel. No caso de uma sobrecarga de fila, novos eventos so
descartados sem enfileiramento.
No recomendvel usar loops infinitos para tratar eventos. A exceo a esta regra poderiam ser
scripts somente, que processam s um nico evento, Start.
Bibliotecas no tratam nenhum evento.

2000-2015, MetaQuotes Software Corp.

768

Programas MQL5

Funes proibidas em Indicadores e Expert Advisors


Indicatores, scripts e Expert Advisors so programas executveis escritos em MQL5. Eles so
projetados para diferentes tipos de tarefas. Portanto existem algumas restries quanto ao uso de
certas funes, dependendo do tipo de programa. As seguintes funes so proibidas em indicadores:
OrderCalcMargin();
OrderCalcProfit();
OrderCheck();
OrderSend();
SendFTP();
Sleep();
ExpertRemove();
MessageBox().

Todas as funes projetadas para indicadores so proibidas em Expert Advisors e scripts:


SetIndexBuffer();
IndicatorSetDouble();
IndicatorSetInteger();
IndicatorSetString();
PlotIndexSetDouble();
PlotIndexSetInteger();
PlotIndexSetString();
PlotIndexGetInteger.
A biblioteca (library) no um programa independente e executado no contexto do programa MQL5
que a chamou: script, indicador ou Expert Advisor. Desta forma, as restries acima se aplicam
biblioteca (library) chamada.

Carga e Descarga de Indicadores


Indicadores so carregados nos seguintes casos:
um indicador anexado a um grfico;
inicio do terminal (se o indicador estava anexado a um grfico antes do encerramento do terminal);
carga de um template (se o indicador anexado a um grfico estiver especificado no template);
alterao de um perfil (se o indicador estiver anexado a um dos grficos do perfil alterado);
alterao de um ativo e/ou perodo de um grfico, no qual o indicador est anexado;
aps uma bem sucedida recompilao de um indicador, se o indicador estiver anexado a um grfico;
alterao de parmetros de entrada do indicador.

2000-2015, MetaQuotes Software Corp.

769

Programas MQL5
Indicadores so descarregados nos seguintes casos:
ao desanexar um indicador de um grfico;
encerramento do terminal (se o indicador estiver anexado a um grfico);
carga de um template, se um indicador estiver anexado a um grfico;
fechamento de um grfico, no qual o indicador estava anexado;
alterao de um perfil, se o indicador estiver anexado a um dos grficos do perfil alterado;
alterao de um ativo e/ou perodo de um grfico, no qual o indicador est anexado;
alterao de parmetros de entrada do indicador.

Carga e Descarga de Expert Advisors


Expert Advisors so carregados nos seguintes casos:
ao anexar um Expert Advisor a um grfico;
incio de terminal (se o Expert Advisor estava anexado a um grfico antes do encerramento do
terminal);
carga de um template (se o Expert Advisor anexado a um grfico est especificado no template);
alterao de um perfil (se o Expert Advisor est anexado a um dos grficos do perfil);
conexo a uma conta, mesmo se o nmero da conta for o mesmo (se o Expert Advisor estava anexado
ao grfico antes da autorizao do terminal no servidor.
Expert Advisors so descarregados nos seguintes casos:
ao desanexar um Expert Advisor de um grfico;
Se um novo Expert Advisor anexo a um grfico, e um outro Expert Advisor j estava anexado,
este Expert Advisor descarregado.
encerramento do terminal (se o Expert Advisor estiver anexado a um grfico);
carga de um template, se um Expert Advisor est anexado a um grfico;
fechamento de um grfico, no qual o Expert Advisor est anexado.
alterao de um perfil, se o Expert Advisor est anexado a um dos grficos do perfil alterado;
alterao da conta na qual o terminal est conectado (se o Expert Advisor estava anexado a um
grfico antes da autorizao do terminal no servidor;
calling the ExpertRemove() function.
Em caso de alterao de ativo ou perodo de um grfico, no qual o Expert Advisor est anexado,
Expert Advisors no so carregados ou descarregados. Neste caso o terminal cliente
subseqentemente chama os handlers OnDeinit() sobre o ativo/perodo antigo e OnInit() sobre o novo
ativo/perodo; valores de variveis globais e variveis estticas no so redefinidos. Todos os
eventos que foram recebidos pelo Expert Advisor antes da inicializao ser concluda (funo OnInit())
so pulados.

Carga e Descarga de Scripts


Scripts so carregados imediatamente aps eles serem anexados a um grfico e descarregados

2000-2015, MetaQuotes Software Corp.

770

Programas MQL5
imediatamente aps eles conclurem sua operao. OnInit() e OnDeinit() no so chamados por
scripts.
Quando um programa descarregado (excludo de um grfico) o terminal cliente realiza a
desinicializao de variveis globais e exclu a fila de eventos. Neste caso a desinicializao significa
a redefinio de todas as variveis de tipo string, desalocao de objetos de array dinmico e
chamada de seus destrutores se eles estiverem disponveis.
Para um melhor entendimento do funcionamento de um Expert Advisor, ns recomendamos compilar o
cdigo do seguinte Expert Advisor e realizar aes de carga/descarga, alterao de template,
alterao de ativo, alterao de perodo, etc:
Exemplo:
//+------------------------------------------------------------------+
//|

TestExpert.mq5 |

//|

Copyright 2009, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

class CTestClass
{
public:
CTestClass() { Print("CTestClass construtor"); }
~CTestClass() { Print("CTestClass destruidor"); }
};
CTestClass global;
//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--Print("Inicializao");
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de Desinicializao do Expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--Print("Desinicializao com motivo",reason);
}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

2000-2015, MetaQuotes Software Corp.

771

Programas MQL5
//+------------------------------------------------------------------+
void OnTick()
{
//--}
//+------------------------------------------------------------------+

Tambm Veja
Eventos do terminal cliente, Handlers de Evento

2000-2015, MetaQuotes Software Corp.

772

Programas MQL5

Trade Permission
Trade Automation
MQL5 language provides a special group of trade functions designed for developing automated trading
systems. Programs developed for automated trading with no human intervention are called Expert
Advisors or trading robots. In order to create an Expert Advisor in MetaEditor, launch MQL5 Wizard
and select one of the two options:
Expert Advisor (template) allows you to create a template with ready-made event handling
functions that should be supplemented with all necessary functionality by means of programming.
Expert Advisor (generate) allows you to develop a full-fledged trading robot simply by selecting the
necessary modules: trading signals module, money management module and trailing stop module.

Trading functions can work only in Expert Advisors and scripts. Trading is not allowed for indicators.

Checking for Permission to Perform Automated Trading


In order to develop a reliable Expert Advisor capable of working without human intervention, it is
necessary to arrange a set of important checks. First, we should programmatically check if trading is
allowed at all. This is a basic check that is indispensable when developing any automated system.

Checking for permission to perform automated trading in the terminal


The terminal settings provide you with an ability to allow or forbid automated trading for all programs.

2000-2015, MetaQuotes Software Corp.

773

Programas MQL5

You can switch automated trading option right on the terminal's Standard panel:
automated trading enabled, trading functions in launched applications are allowed
for use.
automated trading disabled, running applications are unable to execute trading
functions.
Sample check:
if (!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
Alert("Check if automated trading is allowed in the terminal settings!");

Checking if trading is allowed for a certain running Expert Advisor/script


You can allow or forbid automated trading for a certain program when launching it. To do this, use the
special check box in the program properties.

2000-2015, MetaQuotes Software Corp.

774

Programas MQL5

Sample check:
if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
Alert("Check if automated trading is allowed in the terminal settings!");
else
{
if(!MQLInfoInteger(MQL_TRADE_ALLOWED))
Alert("Automated trading is forbidden in the program settings for ",__FILE__);
}

Checking if trading is allowed for any Expert Advisors/scripts for the current
account
Automated trading can be disabled at the trade server side. Sample check:
if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
Alert("Automated trading is forbidden for the account ",AccountInfoInteger(ACCOUNT_LOGIN),
" at the trade server side");

If automated trading is disabled for a trading account, trading operations of Expert Advisors/scripts
are not executed.

Checking if trading is allowed for the current account


In some cases, any trading operations are disabled for a certain trading account neither manual nor
automated trading can be performed. Sample check when an investor password has been used to
connect to a trading account:
if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED))
Comment("Trading is forbidden for the account ",AccountInfoInteger(ACCOUNT_LOGIN),

2000-2015, MetaQuotes Software Corp.

775

Programas MQL5
".\n Perhaps an investor password has been used to connect to the trading account.",
"\n Check the terminal journal for the following entry:",

"\n\'",AccountInfoInteger(ACCOUNT_LOGIN),"\': trading has been disabled - investor mode

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) may return false in the following cases:


no
connection
to
the
trade
server.
TerminalInfoInteger(TERMINAL_CONNECTED));

That

can

be

checked

trading account switched to read-only mode (sent to the archive);


trading on the account is disabled at the trade server side;
connection to a trading account has been performed in Investor mode.

See also
Client Terminal Properties, Account Properties, Properties of a Running MQL5 Program

2000-2015, MetaQuotes Software Corp.

using

776

Programas MQL5

Eventos do Terminal Cliente


Init
Imediatamente aps o terminal cliente carregar um programa (uma Expert Advisor ou um indicador
customizado) e comear o processo de inicializao de variveis globais, o evento Init ser enviado, e
ser processado pelo handler de evento OnInit(), caso exista. Este evento tambm gerado aps um
instrumento financeiro e / ou prazo grfico ser alterado, depois de um programa ser recompilado no
MetaEditor, depois dos parmetros de entrada serem alterados a partir da janela de configurao de
um Expert Advisor ou um indicador personalizado. Um Expert Advisor tambm inicializado aps a
conta ser alterada. O evento Init no gerado para scripts.
Deinit
Antes de variveis globais serem desinicializadas e o programa (Expert Advisor ou indicador
customizado) ser descarregado, o terminal cliente envia o evento Deinit para o programa. Deinit
tambm gerado quando o terminal cliente encerrado, quando um grfico fechado, logo antes o
ativo e/ou perodo ser alterado, em uma recompilao de programa bem sucedida, quando parmetros
de input so alterados e quando a conta alterada.
O motivo de desinicializao pode ser obtido a partir do parmetro passado para a funo OnDeinit().
A execuo da funo OnDeinit() est restrita a 2.5 segundos. Se durante este tempo a funo no for
concluda, ento ela finalizada de forma forada. O evento Deinit (Desinicializar) no gerada para
scripts.
Start
O evento Start um evento especial para ativao de script aps ele ser carregado. O evento
processado pelo handler (manipulador) OnStart. O evento Start no enviado para Expert Advisor ou
indicadores customizados.
NewTick
O evento NewTick gerado caso existam novas cotaes, ele processado pelo OnTick() de Expert
Advisors anexados. No caso de uma nova cotao ser recebida enquanto a funo OnTick estiver
processando a cotao anterior, a nova cotao ser ignorada pelo Expert Advisor, porque o evento
correspondente no ser enfileirado.
Todas as novas cotaes que so recebidas enquanto o programa est rodando so ignoradas at que
a execuo da funo OnTick() esteja concluda. Aps isso, a funo rodar somente aps uma nova
cotao ser recebida. O evento NewTick gerado independentemente da negociao automtica ser
permitida ou no (boto "AutoTrading Permite/Probe"). A proibio de negociao automtica
significa somente que o envio de solicitaes de negociao a partir de um Expert Advisor no
permitido, enquanto o Expert Advisor continua trabalhando.
A proibio de negociao automtica ao apertar o boto apropriado no parar a execuo corrente
da funo OnTick(). OnTick() no iniciado quando a janela de propriedades do Expert Adviso.
Calculate
O evento Calculate gerado somente para indicadores logo aps o evento Init ser enviado e em
qualquer alterao de dados de preos. Ele processado pela funo OnCalculate.

2000-2015, MetaQuotes Software Corp.

777

Programas MQL5

Timer
O evento Timer periodicamente gerado pelo terminal cliente para o Expert Advisor que ativou o
timer atravs da funo EventSetTimer. Geralmente, esta funo chamada na funo OnInit. O
processamento do evento Timer realizado pela funo OnTimer. Aps a operao do Expert Advisor
estar concluda, necessrio destruir o timer usando a funo EventKillTimer, que geralmente
chamada na funo OnDeinit.
Trade
O evento Trade gerado quando uma operao de trade concluda em um servidor de negociao. O
evento Trade tratado pela funo OnTrade() para as seguintes operaes de negociao:
envio, modificao e remoo de uma ordem pendente;
cancelamento de uma ordem pendente com ausncia de dinheiro suficiente ou expirao;
ativao de uma ordem pendente;
abertura, acrscimo ou encerramento de uma posio (ou parte da posio);
modificao da posio aberta (alterao de stops - Stop Loss e/ou Take Profit).
TradeTransaction
Ao realizar algumas aes especficas em uma conta de negociao, seu estado muda. Tais aes
includem:
Envio de uma solicitao de negociao a partir de algum aplicativo MQL5 no terminal usando as
funes OrderSend e OrderSendAsync e sua posterior execuo.
Envio de uma solicitao de negociao por meio da interface grfica do terminal e sua posterior
execuo.
Ativao de ordens pendentes e ordens de stop no servidor.
Realizao de operaes no lado de um servidor de negociao.
As seguintes transaes de negociao so realizadas como resultado destas aes:
tratamento de uma solicitao de negociao
mudana de ordens de abertura
mudana de histrico de ordens
mudana de histrico de operaes (deals)
mudana de posies
Por exemplo, ao enviar uma ordem de compra de mercado, ela tratada, uma ordem de compra
apropriada criada para a conta, a ordem ento executada e removida da lista de ordens em
aberto, e ento ela adicionada ao histrico de ordens, uma apropriada operao (deal) adicionada
ao histrico e uma nova posio criada. Todas estas aes so transaes de negociao. A chegada
de tal transao no terminal um evento TradeTransaction. Este evento tratado pela funo
OnTradeTransaction.
Tester
O evento Tester gerado aps um teste de um Expert Advisor sob dados de histrico ter acabado. O
evento tratado pela funo OnTester().

2000-2015, MetaQuotes Software Corp.

778

Programas MQL5

TesterInit
O evento TesterInit gerado no incio de uma otimizao no Provador de Estratgia antes do primeiro
passo de otimizao. O evento TesterInit tratado pela funo OnTesterInit().
TesterPass
O evento TesterPass gerado quando uma nova estrutura de dados recebido. O evento TesterPass
tratado pela funo OnTesterPass().
TesterDeinit
O evento TesterDeinit gerado aps o fim de um otimizao de um Expert Advisor no Provador de
Estratgia. O evento TesterDeinit tratado pela funo OnTesterDeinit().
ChartEvent
O evento ChartEvent gerado pelo terminal cliente quando um usurio est trabalhando com um
grfico:
pressionar de teclado, quando a janela de grfico est com foco
objeto grfico criado
objeto grfico excludo
pressionar de mouse sobre um objeto grfico do grfico
movimentao do objeto grfico usando o mouse
fim de edio de texto no LabelEdit
Tambm existe o evento customizado ChartEvent, que pode ser enviado para um Expert Advisor
atravs de qualquer programa mql5 por meio do uso da funo EventChartCustom. O evento
processado pela funo OnChartEvent.
BookEvent
O evento BookEvent gerado pelo terminal cliente aps a Profundida de Mercado ser alterada; ele
processado pela funo OnBookEvent. Para comear a gerao de BookEvent para um ativo
especificado, necessrio subscrever o ativo para este evento atravs do uso da funo
MarketBookAdd.
Para desfazer a subscrio de BookEvent para um ativo especificado, necessrio chamar a funo
MarketBookRelease. O evento BookEvent um evento do tipo-transmisso - isso significa que
suficiente inscrever apenas um Consultor Especializado (Expert Advisor) para este evento, e todos os
outros Consultores Especializados (Expert Advisors) que tm o manipulador de eventos OnBookEvent,
vo receb-lo. por isso que necessrio analisar o nome do ativo, que passado para um handler
como um parmetro.
Tambm Veja
Handlers de Evento, Execuo de Programa

2000-2015, MetaQuotes Software Corp.

779

Programas MQL5

Recursos
Usando grficos e som em programas MQL5
Programas em MQL5 permitem trabalhar com som e arquivos grficos:
PlaySound() executa um arquivo de som.
ObjectCreate() permite criar interfaces de usurio usando os objetos grficos OBJ_BITMAP e
OBJ_BITMAP_LABEL.

PlaySound()
Exemplo de chamada da funo PlaySound():
//+------------------------------------------------------------------+
//| A funo chama OrderSend() padro e toca um som

//+------------------------------------------------------------------+
void OrderSendWithAudio(MqlTradeRequest

&request, MqlTradeResult &result)

{
//--- envia uma solicitao para um servidor
OrderSend(request,result);
//--- se a solicitao for aceita, executa o som Ok.wav
if(result.retcode==TRADE_RETCODE_PLACED) PlaySound("Ok.wav");
//--- se falhar, toca um alarme a partir do arquivo timeout.wav
else PlaySound("timeout.wav");
}

O exemplo mostra como tocar sons a partir de arquivos 'Ok.wav' e 'timeout.wav', que esto inclusos no
pacote de terminal padro. Estes arquivos esto localizados na pasta terminal_directory\Sounds.
Aqui, terminal_directory uma pasta, a partir do qual o Terminal Cliente do MetaTrader 5 iniciado.
A localizao do diretrio do terminal pode ser encontrado a partir de um programa MQL5 da seguinte
forma:
//--- Pasta, na qual dados de terminal so armazenados
string terminal_path=TerminalInfoString(TERMINAL_PATH);

Voc pode usar arquivos de som no somente da pasta terminal_directory\Sounds, mas tambm de
qualquer sub-pasta localizada em terminal_data_directory\MQL5. Voc pode descobrir a localizao
do diretrio de dados do terminal a partir do menu do terminal "Arquivo" -> "Abrir" dados do terminal
ou usar um mtodo de programa:
//--- Pasta, na qual dados de terminal so armazenados
string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);

Por exemplo, se o arquivo de som 'Demo.wav' est localizado em terminal_data_directory\MQL5\Files,


ento a chamada de PlaySound() deveria ser escrita da seguinte forma:
//--- toca Demo.wav a partir da pasta terminal_directory_data\MQL5\Files\Demo.wav
PlaySound("\\Files\\Demo.wav");

Favor notar que no comentrio o caminho do arquivo est escrito usando uma barra invertida "\", e na

2000-2015, MetaQuotes Software Corp.

780

Programas MQL5
funo usado "\\".
Ao se especificar o caminho, sempre use barras invertidas duplas como separador, porque uma nica
barra invertida um controle de smbolo para o compilador ao lidar com constantes de strings e
constantes de caracteres no cdigo fonte do programa.
Call PlaySound() function with NULL parameter to stop playback:
//--- call of PlaySound() with NULL parameter stops playback
PlaySound(NULL);

ObjectCreate()
Exemplo de um Expert Advisor, que cria um rtulo grfico (OBJ_BITMAP_LABEL) usando a funo
ObjectCreate().
string label_name="currency_label";

// nome do objeto OBJ_BITMAP_LABEL

string euro

="\\Images\\euro.bmp";

// caminho do arquivo terminal_dara_directory\MQL5\Image

string dollar

="\\Images\\dollar.bmp";

// caminho do arquivo terminal_dara_directory\MQL5\Image

//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--- cria um boto OBJ_BITMAP_LABEL, se ele j no tiver sido criado
if(ObjectFind(0,label_name)<0)
{
//--- tenta criar objeto OBJ_BITMAP_LABEL
bool created=ObjectCreate(0,label_name,OBJ_BITMAP_LABEL,0,0,0);
if(created)
{
//--- vincula o boto ao canto superior esquerdo do grfico
ObjectSetInteger(0,label_name,OBJPROP_CORNER,CORNER_RIGHT_UPPER);
//--- agora configura as propriedades do objeto
ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,100);
ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,50);
//--- redefine o cdigo do ltimo erro para 0
ResetLastError();
//--- carrega uma figura para indicador o estado "Pressionado" do boto
bool set=ObjectSetString(0,label_name,OBJPROP_BMPFILE,0,euro);
//--- testa o resultado
if(!set)
{

PrintFormat("Falha no download a partir do arquivo de imagem %s. Cdigo de erro %d",eur


}
ResetLastError();
//--- carrega uma figura para indicador o estado "No pressionado" do boto
set=ObjectSetString(0,label_name,OBJPROP_BMPFILE,1,dollar);

2000-2015, MetaQuotes Software Corp.

781

Programas MQL5

if(!set)
{

PrintFormat("Falha no download a partir do arquivo de imagem %s. Cdigo de erro %d",dol


}

//--- envia um comando para um grfico para reatualizao, a fim de que o boto aparea im
ChartRedraw(0);
}
else
{
//--- falha ao criar um objeto, notificar
PrintFormat("Falha ao criar objeto OBJ_BITMAP_LABEL. Error code %d",GetLastError());
}
}
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de Desinicializao do Expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- exclui um objeto de um grfico
ObjectDelete(0,label_name);
}

A criao e configurao do objeto grfico de nome currency_label so executados na funo OnInit().


Os caminhos para os arquivos grficos so definidos nas variveis globais euro e dollar, uma barra
invertida dupla usada como separador:
string euro

="\\Images\\euro.bmp";

// caminho do arquivo terminal_dara_directory\MQL5\Image

string dollar

="\\Images\\dollar.bmp";

// caminho do arquivo terminal_dara_directory\MQL5\Image

Os arquivos esto localizados na pasta terminal_data_directory\MQL5\Images.


O Objeto OBJ_BITMAP_LABEL na realizada um boto, que exibe uma das duas imagens, dependendo
do estado do boto (pressionado ou no pressionado): euro.bmp ou dollar.bmp.

2000-2015, MetaQuotes Software Corp.

782

Programas MQL5

O tamanho do boto com uma interface grfico automaticamente ajustada para o tamanho da
figura. A imagem alterada por um clique do boto esquerdo do mouse sob o objeto
OBJ_BITMAP_LABEL ("Disable selection" deve estar definida nas propriedades). O objeto
OBJ_BITMAP criado da mesma forma - ele usado para criar o pano de fundo com um imagem
necessria.
O valor da propriedade OBJPROP_BMPFILE, que responsvel pela aparncia dos objetos OBJ_BITMAP
e OBJ_BITMAP_LABEL, e pode ser alterado dinamicamente. Isso permite criar vrias interfaces
interativas de usurio para programas MQL5.

Incluso de recursos em arquivos executveis durante compilao


de programas MQL5
Um programa mql5 pode precisar de um monte de diferentes recursos baixveis na forma de arquivos
de imagem e som. A fim de eliminar a necessidade de transferir todos estes arquivos ao mover um
arquivo executvel em MQL5, a diretriz do compilador #resource deve ser usada:
#resource path_to_resource_file

O comando #resource diz ao compilador que o recurso no caminho especificado path_to_resource_file


deve ser includo dentro do arquivo executvel EX5. Assim, todos os sons e imagens necessrios
podem ser alocados diretamente dentro de um arquivo EX5, de modo que no exista necessidade de
transferir separadamente os arquivos nele usados, caso voc queira executar o programa em um
terminal diferente. Qualquer arquivo EX5 pode conter recursos, e qualquer programa EX5 pode usar
recursos de um outro programa EX5.
Os arquivo em formato BMP e WAV so automaticamente comprimidos antes de serem includos em
um arquivo EX5. Isso significa que alm de criar programas completos em MQL5, o uso de recursos
tambm permite reduzir o tamanho total dos arquivos necessrios ao usar grficos e sons, quando
comparado com a forma usual de escrever um programa MQL5.
O arquivo de recurso no deve exceder 16 Mb.

2000-2015, MetaQuotes Software Corp.

783

Programas MQL5

Busca por recursos especficos pelo compilador


Um recurso inserido usando o comando #resorce "<path to the resource file>"
#resource "<path_to_resource_file>"

O comprimento da constante string <path_to_resource_file> no de exceder 63 caracteres.


O compilador busca por um recurso no caminho especificado na seguinte ordem:
se o separador barra invertida "\" (escrito como "\\") colocado no comeo do caminho, ele busca
pelo recurso referente ao diretrio terminal_data_directory\MQL5\,
se no houver barra invertida, ele busca pelo recurso referente localizao do arquivo de recurso,
na qual o recurso foi escrito.
O caminho do recurso no pode conter as sub-strings "..\\" e ":\\".
Exemplos de incluso de recurso:
//--- correct specification of resources
#resource "\\Images\\euro.bmp" // euro.bmp est localizado em terminal_data_directory\MQL5\Images\
#resource "picture.bmp"

// picture.bmp est localizado no mesmo diretoria que o arquivo font

#resource "Resource\\map.bmp"

// the resource is located in source_file_directory\Resource\map.bmp

//--- especificao incorreta de recursos


#resource ":picture_2.bmp"

// no deve conter ":"

#resource "..\\picture_3.bmp"

// no deve conter ".."

#resource "\\Files\\Images\\Folder_First\\My_panel\\Labels\\too_long_path.bmp" //mais que 63 smbol

Uso de Recursos
Nome de recurso
Aps um recurso ser declarado usando a diretiva #resource, ele pode ser usado em qualquer parte de
um programa. O nome do recurso seu caminho sem uma barra invertida no comeo da linha, que
define o caminho do recurso. Para usar seu prprio recurso no cdigo, o sinal especial "::" deve ser
adicionado antes do nome do recurso.
Exemplos:
//--- exemplos de especificao de recurso e seus nomes em comentrios
#resource "\\Images\\euro.bmp"

// nome do recurso - Images\euro.bmp

#resource "picture.bmp"

// nome do recurso - picture.bmp

#resource "Resource\\map.bmp"

// nome do recurso - Resource\map.bmp

#resource "\\Files\\Pictures\\good.bmp" // nome do recurso - Files\Pictures\good.bmp


#resource "\\Files\\Demo.wav";

// nome do recurso - Files\Demo.wav"

#resource "\\Sounds\\thrill.wav";

// nome do recurso - Sounds\thrill.wav"

...

2000-2015, MetaQuotes Software Corp.

784

Programas MQL5

//--- utilizao dos recursos


ObjectSetString(0,bitmap_name,OBJPROP_BMPFILE,0,"::Images\\euro.bmp");
...
ObjectSetString(0,my_bitmap,OBJPROP_BMPFILE,0,"::picture.bmp");
...
set=ObjectSetString(0,bitmap_label,OBJPROP_BMPFILE,1,"::Files\\Pictures\\good.bmp");
...
PlaySound("::Files\\Demo.wav");
...
PlaySound("::Sounds\\thrill.wav");

Deve se notar que ao definir imagens a partir de um recurso para os objetos OBJ_BITMAP e
OBJ_BITMAP_LABEL, o valor da propriedade OBJPROP_BMPFILE no pode ser modificado manualmente.
Por exemplo, para criar OBJ_BITMAP_LABEL ns usados euro.bmp e dollar.bmp.
#resource "\\Images\\euro.bmp";

// euro.bmp est localizado em terminal_data_directory\MQL5\Imag

#resource "\\Images\\dollar.bmp";

// dollar.bmp est localizado em terminal_data_directory\MQL5\Im

Ao visualizar as propriedades deste objeto, veremos que as propriedades BitMap File (On) e BitMap
File (Off) so esmaecidas e no podem ser alteradas manualmente:

Usando os recursos em outros programas MQL5


Existe uma outra vantagem no uso de recurso em qualquer programa MQL5, os recursos de um outro
arquivo EX5 podem ser usados. Assim, os recursos de um arquivo EX5 podem ser usados em muitos
outros programas MQL5.
A fim de usar um nome de recurso de um outro arquivo, ele deve ser especificado como
<path_EX5_file_name>::<resource_name>.
Por
exemplo,
suponha
que
o
script
Draw_Triangles_Script.mq5 contm um recurso para uma imagem no arquivo triangle.bmp:
#resource "\\Files\\triangle.bmp"

2000-2015, MetaQuotes Software Corp.

785

Programas MQL5
Ento seu nome, para uso no script em si, se assemelhar a "Files\triangle.bmp", e a fim de us-lo,
"::" deve ser adicionado ao nome do recurso.
//--- usando o curso no script
ObjectSetString(0,my_bitmap_name,OBJPROP_BMPFILE,0,"::Files\\triangle.bmp");

A fim de usar o mesmo recurso a partir de um outro programa, por exemplo, a partir de um Expert
Advisor, precisamos adicionar ao nome do recurso o caminho para o arquivo EX5 correspondente ao
terminal_data_directory\MQL5\ e o nome arquivo EX5 do script - Draw_Triangles_Script.ex5.
Suponha que o script est localizado na pasta padro terminal_data_directory\MQL5\Scripts\, ento
o chamado deve ser escrito da seguinte forma:
//--- usando um recurso de um script em um EA

ObjectSetString(0,my_bitmap_name,OBJPROP_BMPFILE,0,"\\Scripts\\Draw_Triangles_Script.ex5::Files\\tr

Se o caminho para o arquivo executvel no for especificado ao chamar o recurso de um outro EX5, o
arquivo executvel procurado na mesma pasta que contm o programa que chama o recurso. Isso
significa que se um Expert Advisor chamar um recurso de Draw_Triangles_Script.ex5 sem especificar o
caminho, como abaixo:
//--- chama recurso de script em um EA sem especificar o caminho

ObjectSetString(0,my_bitmap_name,OBJPROP_BMPFILE,0,"Draw_Triangles_Script.ex5::Files\\triangle.bmp"

ento o arquivo ser procurado na pasta terminal_data_directory\MQL5\Experts\, caso o Expert


Advisor esteja localizado em terminal_data_directory\MQL5\Experts\.

Working with custom indicators included as resources


One or several custom indicators may be necessary for the operation of MQL5 applications. All of them
can be included into the code of an executable MQL5 program. Inclusion of indicators as resources
simplifies the distribution of applications.
Below is an example of including and using SampleIndicator.ex5 custom indicator located in
terminal_data_folder\MQL5\Indicators\ directory:
//+------------------------------------------------------------------+
//|

SampleEA.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#resource "\\Indicators\\SampleIndicator.ex5"
int handle_ind;
//+------------------------------------------------------------------+
//| Expert initialization function

//+------------------------------------------------------------------+
int OnInit()
{
//--handle_ind=iCustom(_Symbol,_Period,"::Indicators\\SampleIndicator.ex5");
if(handle_ind==INVALID_HANDLE)

2000-2015, MetaQuotes Software Corp.

786

Programas MQL5
{
Print("Expert: iCustom call: Error code=",GetLastError());
return(INIT_FAILED);
}
//--- ...
return(INIT_SUCCEEDED);
}

The case when a custom indicator in OnInit() function creates one or more copies of itself requires
special consideration. Please keep in mind that the resource should be specified in the following way:
<path_EX5_file_name>::<resource_name>.
For example, if SampleIndicator.ex5 indicator is included to SampleEA.ex5 Expert Advisor as a
resource, the path to itself specified when calling iCustom() in the custom indicator's initialization
function looks the following way: "\\Experts\\SampleEA.ex5::Indicators\\SampleIndicator.ex5". When
this path is set explicitly, SampleIndicator.ex5 custom indicator is rigidly connected to SampleEA.ex5
Expert Advisor losing ability to work independently.
The path to itself can be received using GetRelativeProgramPath() function. The example of its usage
is provided below:
//+------------------------------------------------------------------+
//|

SampleIndicator.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_plots 0
int handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function

//+------------------------------------------------------------------+
int OnInit()
{
//--- the wrong way to provide a link to itself
//--- string path="\\Experts\\SampleEA.ex5::Indicators\\SampleIndicator.ex5";
//--- the right way to receive a link to itself
string path=GetRelativeProgramPath();
//--- indicator buffers mapping
handle=iCustom(_Symbol,_Period,path,0,0);
if(handle==INVALID_HANDLE)
{
Print("Indicator: iCustom call: Error code=",GetLastError());
return(INIT_FAILED);
}
else Print("Indicator handle=",handle);
//--return(INIT_SUCCEEDED);
}
///....

2000-2015, MetaQuotes Software Corp.

787

Programas MQL5
//+------------------------------------------------------------------+
//| GetRelativeProgramPath

//+------------------------------------------------------------------+
string GetRelativeProgramPath()
{
int pos2;
//--- receive the absolute path to the application
string path=MQLInfoString(MQL_PROGRAM_PATH);
//--- find the position of "\MQL5\" substring
int

pos =StringFind(path,"\\MQL5\\");

//--- substring not found - error


if(pos<0)
return(NULL);
//--- skip "\MQL5" directory
pos+=5;
//--- skip extra '\' symbols
while(StringGetCharacter(path,pos+1)=='\\')
pos++;
//--- if this is a resource, return the path relative to MQL5 directory
if(StringFind(path,"::",pos)>=0)
return(StringSubstr(path,pos));
//--- find a separator for the first MQL5 subdirectory (for example, MQL5\Indicators)
//--- if not found, return the path relative to MQL5 directory
if((pos2=StringFind(path,"\\",pos+1))<0)
return(StringSubstr(path,pos));
//--- return the path relative to the subdirectory (for example, MQL5\Indicators)
return(StringSubstr(path,pos2+1));
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double& price[])
{
//--- return value of prev_calculated for next call
return(rates_total);
}

Tambm Veja
ResourceCreate(), ResourceSave(), PlaySound(), ObjectSetInteger(), ChartApplyTemplate(), Funes
de Arquivo

2000-2015, MetaQuotes Software Corp.

788

Programas MQL5

Chamadas de Funes Importadas


Para importar funes durante a execuo de um programa-mql5, o terminal cliente usar "early
binding". Isso significa que se um programa tem uma chamada de uma funo importada, o
correspondente mdulo (ex5 ou dll) carregada durante a carga do programa. MQL5 e bibliotecas DLL
so executadas na thread do mdulo da chamada.
No recomendado usar o nome do mdulo com especificao completa para ser carregado, como
Drive:\Directory\FileName.Ext. As bibliotecas MQL5 so carregadas a partir da pasta terminal_dir
\MQL5\Libraries. Se a biblioteca no for encontrada, ento o terminal tenta carreg-la a partir da
pasta terminal_dir\experts.
As bibliotecas de sistema (DLL) so carregadas pelas regras do sistema operacional. Se a biblioteca j
estiver carregada (por exemplo, um outro Expert Advisor, e mesmo a partir de um outro terminal
cliente, executando em paralelo, ento ele faz solicitaes para a biblioteca j carregada. Caso
contrrio, ele realiza uma busca na seguinte seqncia:
1. Diretrio do qual o mdulo que importa a dll foi iniciado. O mdulo aqui um Expert Advisor, um
script, um indicador ou uma biblioteca EX5.
2. Diretrio terminal_data_directory\MQL5\Libraries (TERMINAL_DATA_PATH\MQL5\Libraries).
3. Diretrio do qual o terminal cliente MetaTrader 5 foi iniciado.
4. Diretrio de sistema.
5. Diretrio do Windows.
6. Diretrio corrente.
7. Diretrios listados na varivel de sistema PATH.
Se uma biblioteca DLL usa uma outra DLL no seu funcionamento, a primeira DLL no pode ser
carregada no caso de no existir a segunda DLL.
Antes de um Expert Advisor (script, indicador) ser carregado, uma lista comum de todos os mdulos
de biblioteca EX5 formada. Vai ser usado a partir de um Expert Advisor carregado(script, indicador)e
das bibliotecas desta lista. Assim, necessrio apenas uma nica carga de mdulos de bibliotecas EX5
usadas muitas vezes. Bibliotecas usam variveis predefinidas do Expert Advisor (script, indicador) que
as chamam.
A biblioteca importada EX5 procurada na seguinte seqncia:
1. Diretrio, caminho correspondente ao diretrio do Expert Advisor (script, indicador) que importa o
EX5).
2. Diretrio terminal_directory\MQL5\Libraries.
3. Diretrio MQL5\Libraries no diretrio comum a todos os terminais clientes MetaTrader 5 (Common
\MQL5\Libraries).
Funes importadas DLL em um programa-mql5 devem garantir a conformidade de chamadas do
Windows API. Para garantir tal conformidade, no texto fonte de programas escritos em C ou C++, use
a palavra-chave _stdcall, que especfico para os compiladores Microsoft(r). Esta conformidade
caraterizada pelo seguinte:
Chamador (no nosso caso, um programa-mql5) deve "ver" um proto-tipo de uma funo chamada
(importado da DLL), a fim de combinar parmetros em uma pilha de forma apropriada.
Chamador (em nosso caso, um programa-mql5) coloca parmetros na pilha em uma ordem

2000-2015, MetaQuotes Software Corp.

789

Programas MQL5
reversa, da direita para esquerda - nesta ordem uma funo l os parmetros passados para ela.
parmetros so passados por valor, exceto aqueles explicitamente passados por referncia (em
nossos casos de strings)
Uma funo importada limpa a pilha de forma independente atravs da leitura dos parmetros
passados para ela.
Ao descrever o proto-tipo de uma funo importada, parmetros padro podem ser usados.
Se a biblioteca correspondente incapaz de ser carregada, ou existe uma proibio quanto ao uso da
DLL, ou a funo importada no encontrada - o Expert Advisor interrompe sua operao com a
mensagem apropriada "Expert Advisor stopped" no Dirio (arquivo de log). Neste caso o Expert
Advisor no rodar at ser reiniciado. Um Expert Advisor pode ser reiniciado como resultado de
recompilao ou aps a tabela de suas propriedades ser aberto e OK ser pressionado.

Passando Parmetros
Todos os parmetros de tipos simples so passados por valor a menos que sejam explicitamente
indicados que eles devem ser passados por referncia. Quando uma string passada, o endereo do
buffer da string copiada passado; se uma string passada por referncia, o endereo do buffer
desta string sem copi-la passado para a funo importada da DLL.
Estruturas que contm arrays dinmicos, strings, classes, outras estruturas complexas, bem como
arrays estticos ou dinmicos dos objetos listados, no podem ser passados como parmetro para uma
funo importada.
Ao passar um array para uma DLL, o endereo do comeo do buffer de dados sempre passado
(independentemente da flag AS_SERIES). Uma funo dentro de uma DLL no sabe nada sobre a flag
AS_SERIES, o array passado um array esttico de um comprimento indefinido; um parmetro
adicional deve ser usado para especificar o tamanho do array.

2000-2015, MetaQuotes Software Corp.

790

Programas MQL5

Erros em Tempo de Execuo


O subsistema de execuo do terminal cliente tem a oportunidade de salvar o cdigo do erro em caso
de ocorrncia durante a execuo de um programa MQL5. Existe um varivel predefinida _LastError
para cada programa executvel MQL5.
Antes de iniciar a funo OnInit, a varivel _LastError zerada. Em caso de uma situao de erro
ocorrer durante a processamento de clculos ou no processo de chamada de funes internas, o a
varivel _LastError recebe o cdigo do erro correspondente. O valor armazenado nesta varivel pode
ser obtida usando a funo GetLastError().
Existem diversos erros crticos cuja ocorrncia faz com que um programa seja encerrado
imediatamente:
diviso por zero
ir alm dos limites de um array
usando um ponteiro de objeto incorreto

2000-2015, MetaQuotes Software Corp.

791

Programas MQL5

Testando Estratgias de Negociao


A ideia de negociao automtica atraente pelo fato de que o rob de negociao pode trabalhar
sem parar 24 horas por dia, sete dias por semana. O rob no fica cansado, em dvida, ou com medo,
ele totalmente livre de quaisquer problemas psicolgicos. Basta formalizar de forma clara as regras
de negociao e implement-las nos algoritmos, e o rob est pronto para trabalhar incansavelmente.
Mas primeiro, voc deve se certificar de que as duas condio importantes seguintes esto
satisfeitas:
O Expert Advisor realiza operaes de negociao em concordncia com as regras do sistema de
negociao;
A estratgia de negociao, implementada no EA, demonstra lucro no histrico.
Para obter respostas para estas questes, nos voltamos para o Provador de Estratgia, includo no
terminal cliente MetaTrader 5.
Esta seo aborda as caractersticas do teste e otimizao de programa no Provador de Estratgia:
Function Limitations in the Strategy Tester
Modos de Gerao de Tick
Simulao de Spread
As Variveis Globais do Terminal Cliente
O Clculo de Indicadores durante um Teste
Carregando Histrico durante Teste
Teste Multi-Moeda
Simulao de Tempo no Provador de Estratgia
Objetos Grficos no Teste
A Funo OnTimer() no Provador de Estratgia
A Funo Sleep() no Provador de Estratgia
Usando o Provador de Estratgia para Problemas de Otimizao em Clculos Matemticos
A Sincronizao de Barras no modo "Somente Preo de Abertura"
A funo IndicatorRelease() no Provador de Estratgia
Tratamento de Evento no Provador de Estratgia
Agentes de Teste
A Troca de Dados entre o Terminal e o Agente
Usando a Pasta Compartilhada para Todos os Terminais Cliente
Usando DLLs

Function Limitations in the Strategy Tester


There are operation limitations for some functions in the client terminal's Strategy Tester.

The Print() and PrintFormat() Functions

2000-2015, MetaQuotes Software Corp.

792

Programas MQL5
To increase performance, Print() and PrintFormat() functions are not executed when optimizing the
trading robot's parameters. The exception is the use of these functions inside the OnInit() handler.
This allows you to easily find the cause of errors when they occur.

The
Alert(),
MessageBox(),
PlaySound(),
SendNotification(), WebRequest() Functions

SendFTP,

SendMail(),

The Alert(), MessageBox(), PlaySound(), SendFTP(), SendMail(), SendNotification() WebRequest()


functions designed for interaction with the "outside world" are not executed in the Strategy Tester.

Modos de Gerao de Tick


Um Expert Advisor um programa, escrito em MQL5, que rodado a cada instante em resposta a
algum evento externo. O EA tem uma funo correspondente (handler de evento) para cada evento
pr-definido.
O evento NewTick (mudana de preo) o evento principal para o EA e, portanto, precisamos gerar
um seqncia de ticks para testar o EA. Existem 3 modos de gerao de tick implementada no
Provador de Estratgia do terminal cliente MetaTrader 5:
Cada Tick
OHLC por minuto (preos OHLC, Open-High-Low-Close, com barras de minuto)
Somente Preos de Abertura
O bsico e mais detalhado o modo "Cada Tick", os outros dois modos so simplificaes do modo
bsico, e sero descritos em comparao com o modo "Cada Tick". Considere todos os trs modos em
ordem para entender as diferenas entre eles.

"Cada Tick"
Os dados de cotao histrica para instrumentos financeiros so transferidos do servidor de
negociao para o terminal cliente MetaTrader 5 na forma de barras de minuto empacotadas.
Informaes detalhadas sobre a ocorrncia de solicitaes e a construo das janelas de tempo
requiridas podem ser obtidas a partir do captulo Organizando Acesso a Dados da Referncia MQL5.
O elemento mnimo do histrico de preos a barra de minuto, a partir do qual pode-se obter
informaes sobre os quatro valores de preos:
Abertura (Open) - o preo em que a barra de minuto foi aberta;
Mximo (High) - o mximo que foi alcanado durante esta barra de minuto;
Mnimo (Low) - o mnimo que foi alcanado durante esta barra de minuto;
Fechamento (Close) - o preo de fechamento da barra.
A nova barra de minuto no aberta no momento que o novo minuto comea (nmero de segundos se
torna igual a 0), mas quando um tick ocorre - uma alterao de preo de no mnimo um ponto. A
figura mostra a primeira barra de minuto da nova semana de negociao, que tem a hora de abertura
de 2011.01.10 00:00. A diferena de preos entre Sexta e Segunda, que ns vemos no grfico
comum, j que taxas de moeda flutuam mesmo em fins-de-semana em resposta ao surgimento de
notcias.

2000-2015, MetaQuotes Software Corp.

793

Programas MQL5

Para esta barra, ns sabemos apenas que a barra de minuto foi aberta em 10 de Janeiro de 2011 s 00
horas 00 minutos, mas ns no sabemos nada sobre os segundos. Ela poderia ter sido aberta s
00:00:12 ou 00:00:36 (12 ou 36 segundos aps o inicio de um novo dia) ou qualquer outro instante
dentro daquele minuto. Mas ns sabemos que o preo de Abertura do EURUSD foi de 1.28940 no
instante de abertura da nova barra de minuto.
Ns tambm no sabemos, em termos de segundos, quando o tick, correspondente ao preo de
fechamento da barra de minuto considerada, foi recebido. Ns s sabemos uma coisa - o ltimo preo
de Fechamento da barra de minuto. Para este minuto, o preo foi 1.28958. Os instantes de
aparecimento dos preos de Mximo e Mnimo tambm so desconhecidos, mas ns sabemos que os
preos mximo e mnimo foram nos nveis de 1.28958 e 1.28940, respectivamente.
Para testar a estratgia de negociao, ns precisamos de uma seqncia de ticks, na qual o trabalho
do Expert Advisor ser simulado. Assim, para toda barra de minuto, ns conhecemos os 4 pontos de
controle, onde os preos definitivamente estiveram. Se uma barra tem apenas 4 ticks, ento isso
informao suficiente para realizar um teste, mas geralmente o volume de tick maior que 4.
Portanto, existe a necessidade de gerar pontos de controle adicionais para ticks, que ocorreram entre
os preos de Abertura, Mximo, Mnimo, e Fechamento. O princpio do modo de gerao de ticks
"Cada tick" descrito dentro do O Algoritmo de Gerao de Ticks dentro da Testador de Estratgia do
Terminal MetaTrader 5, um nmero a partir do qual apresentado a baixo.

2000-2015, MetaQuotes Software Corp.

794

Programas MQL5

Ao testar no modo "Cada Tick", a funo OnTick() do EA ser chamado a cada ponto de controle. Cada
ponto de controle um tick de uma seqncia gerada. O EA receber a hora e preo do tick simulado,
assim como se estivesse trabalhando online.
Importante: o modo de teste "Cada Tick" o mais preciso, mas ao mesmo tempo, o que
consome mais tempo. Para um teste inicial da maioria das estratgias de negociao,
geralmente suficiente usar um dos outros dois modos de teste.

"OHLC por minuto"


O modo "Cada Tick" o mais preciso dos trs modos, mas ao mesmo tempo, o mais lento. A
execuo do handler OnTick() ocorre a cada tick, a mesmo tempo que o volume de tick pode ser muito
grande. Para uma estratgia, na qual a seqncia de ticks da movimentao de preos em toda barra
no importa, existe um modo de simulao mais rpido e grosseiro - "OHLC por minuto".
No modo "OHLC por minuto", a seqncia de ticks construda somente pelos preos OHLC das
barras de minuto, o nmero de pontos de controle gerados significativamente reduzido - assim
como o tempo de teste. O disparo da funo OnTick() realizada sob todos os pontos de controle, que
so construdos pelos preos OHLC das barras de minuto.
A opo de no gerar ticks intermedirios adicionais entre os preos de Abertura, Mximo, Mnimo e
Fechamento, leva ao aparecimento de um rgido determinismo na evoluo dos preos, a partir do
momento que o preo de Abertura determinado. Isso torna possvel criar um "Teste Graal", que
mostra um agradvel grfico ascendente do saldo do teste.
Um exemplo de tal Graal apresentado no Cdigo Base - Grr-al.

2000-2015, MetaQuotes Software Corp.

795

Programas MQL5

A figura mostra um grfico muito atrativo deste teste de EA. Como ele foi obtido? Ns conhecemos 4
preos para uma barra de minuto, e ns sabemos que o primeiro preo de Abertura, e o ltimo o
preo de Fechamento. Ns temos os preos Mximo e Mnimo entre eles, e a seqncia de suas
ocorrncias desconhecida, mas sabido que o preo Mximo maior ou igual que o preo de
Abertura (e o preo Mnimo menor ou igual ao preo de Abertura).
suficiente determinar o momento da recepo do preo de Abertura, e ento analisar o prximo tick
a fim de determinar que preo ns temos no momento - ou o Mximo ou o Mnimo. Se o preo for
abaixo do preo de Abertura, ento ns temos um preo Mnimo e comprarmos neste tick, o prximo
tick corresponder ao preo Mximo, no qual ns encerramos a compra e abrimos para venda. O
prximo tick o ltimo, este o preo de Fechamento, e encerramos a venda nele.
Se aps o preo, ns recebermos um tick com um preo maior que o preo de Abertura, ento a
seqncia de operaes (deals) invertida. Processe uma barra de minuto neste modo "trapaceiro", e
espere para pela prxima barra.
Ao testar tal EA no histrico, tudo vai bem, mas uma vez que lanamos ele online, a verdade comea a
ser revelada - a linha de saldo permanece regular, porm em direo descendente. Para expor este
truque, ns simplesmente precisamos executar o EA no modo "Cada Tick".
Observao: Se os resultados do teste do EA em modos de teste grosseiros ("OHLC por minuto" e
"Somente Preos de Abertura") parecerem muito bons, certifique-se de testar-lo no modo "Cada
Tick".

"Somente Preos de Abertura"


Neste modo os ticks so gerados baseados nos preos OHLC das janelas de tempo selecionados para
teste. A funo OnTick() do Expert Advisor roda somente no comeo da barra, no preo de Abertura.
Devido a este caracterstica, nveis de stop e ordens pendentes podem disparar em um preo que
difere do preo especificado (especialmente ao testar em janelas de tempo mais altas). Em
contrapartida, ns temos uma oportunidade de executar rapidamente um teste de avaliao do Expert
Advisor.
Os perodos W1 e MN1 so excees no modo de gerao de ticks "Somente Preos de Abertura": para
estas janelas de tempo, ticks so gerados para os preos OHLC de cada dia, e no preos OHLC da
semana ou ms.
Suponha que ns testemos um Expert Advisor sob EURUSD H1 no modo "Somente Preos de Abertura".
Neste caso o nmero total de ticks (pontos de controle) no ser mais que 4 * nmero de barras de

2000-2015, MetaQuotes Software Corp.

796

Programas MQL5
uma-hora dentro do intervalo testado. Mas o handler OnTick() chamado somente na abertura da
barra de uma-hora. As verificaes requeridas para um teste correto ocorrem no resto dos ticks (que
so "escondidas" do EA).
O clculo de requerimentos de margem;
O disparo de nveis de Stop Loss e Take Profit;
O disparo de ordens pendentes;
A remoo de ordens pendentes expiradas.
Se no existirem nenhum posio aberta ou ordens pendentes, ns no precisamos realizar destas
verificaes nos ticks escondidos, e o aumento da velocidade pode ser bastante substancial. Este
modo "Somente Preos de Abertura" bem adequado para testar estratgias que processam operaes
(deals) somente na abertura da barra e no usam ordens pendentes, bem como ordens Stop Loss e
Take Profit. Para estratgias deste tipo, a necessidade de preciso do teste preservada.
Vamos usar o Expert Advisor Moving Average (Mdia Mvel) do pacote padro como exemplo de um
EA, que pode ser testado em qualquer modo. A lgica deste EA construdo de tal forma que todas as
decises so feitas na abertura da barra, e operaes (deals) so executadas imediatamente, sem o
uso de ordens pendentes.
Executar um teste de EA no EURUSD H1 sobre um intervalo a partir de 2010.09.01 to 2010.12.31, e
comparar os grficos. A figura mostra o grfico de saldo do relatrio de teste para todos os trs
modos.

Como se pode ver, os grficos nos diferentes modos de teste so exatamente o mesmo para o EA
Moving Average do pacote padro.
Existem algumas limitaes no modo "Somente Preos de Abertura":
Voc no pode usar o modo de execuo Atraso Aleatrio.
No Expert testado, voc no pode acessar os dados do perodo inferior do perodo utilizado para o
teste/otimizao. Por exemplo, se voc rodar um teste em M20, voc no pode acessar dados de

2000-2015, MetaQuotes Software Corp.

797

Programas MQL5
M30, mas possvel acessar H1. Alm disso, os perodos superiores que so acessados devem ser
mltiplos do perodo do teste. Por exemplo, se voc rodar um teste em M20, voc no pode acessar
dados de M30, mas possvel acessar H1. Estas limitaes esto relacionadas com a
impossibilidade de se obter dados de perodos inferiores ou no mltiplos de fora das barras geradas
durante o teste/otimizao.
Limitaes no acesso a dados de outros perodos tambm se aplicam a outros ativos cujos dados
so usados pelo Expert Advisor. Neste caso, a limitao para cada ativo depende do primeiro
perodo acessado durante o teste/otimizao. Suponha que durante teste em EURUSD H1, um Expert
Advisor acesse dados de GBPUSD M20. Neste caso, o Expert ser capaz de continuar a usar os dados
de EURUSD H1, H2, etc, bem como GBPUSD M20, H1, H2, etc.
Observao: O modo "Somente Preos de Abertura" tem o mais rpido tempo de teste, mas no
adequado para todas as estratgias de negociao. Selecione o modo de teste desejado baseado
nas caractersticas do sistema de negociao.
Para concluir a seo sobre os modos de gerao de tick, vamos considerar uma comparao visual
dos diferentes modos de gerao de tick para EURUSD, para duas barras de M15 no intervalo de
2011.01.11 21:00:00 - 2011.01.11 21:30:00.
Os ticks foram salvos em arquivos diferentes usando o EA WriteTicksFromTester.mq5 e o fim desses
nomes de arquivos so especificados nos parmetros de entrada filenameEveryTick, filenameOHLC e
filenameOpenPrice input-parameters.

Para obter trs arquivos com trs seqncias de tick (para cada um dos seguintes modos: "Cada Tick",
"OHLC por minuto" e "Somente Preos de Abertura"), o EA foi disparado trs vezes nos modos
correspondentes, em execues individuais. Ento, os dados destes trs arquivos foram exibidos no
grfico usando o indicador TicksFromTester.mq5. O cdigo do indicador est anexado neste artigo.

2000-2015, MetaQuotes Software Corp.

798

Programas MQL5

Por padro, todos as operaes de arquivo na linguagem MQL5 so feitas dentro da "caixa de areia de
arquivo" e durante um teste o EA tem acesso somente a sua prpria "caixa de areia de arquivo". A fim
de que o indicador e o EA trabalhem com arquivos provenientes de uma pasta comum durante o teste,
ns usados o flag FILE_COMMON. Um exemplo de cdigo do EA:
//--- abre o arquivo
file=FileOpen(filename,FILE_WRITE|FILE_CSV|FILE_COMMON,";");
//--- verifica a handle de arquivo
if(file==INVALID_HANDLE)
{

PrintFormat("Erro na abertura do arquivo %s para escrever. Erro de codigo=%d",filename,GetLas


return;
}
else
{

PrintFormat("O arquivo ser criado na %s pasta",TerminalInfoString(TERMINAL_COMMONDATA_PATH))


}

Para ler dos dados no indicador, ns tambm usamos o flag FILE_COMMON. Isso ns permite evitar
transferir manualmente os arquivos necessrios de uma pasta para outra.
//--- abre o arquivo
int file=FileOpen(fname,FILE_READ|FILE_CSV|FILE_COMMON,";");
//--- verifica a handle de arquivo
if(file==INVALID_HANDLE)
{

PrintFormat("Erro na abertura do arquivo %s para leitura. Erro de codigo=%d",fname,GetLastErr


return;
}
else
{

2000-2015, MetaQuotes Software Corp.

799

Programas MQL5
PrintFormat("Arquivo ser aberto a partir %s",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
}

Simulao de Spread
A diferena de preo entre os preos de Venda (Bid) e Compra (Ask) chamado de spread. Durante um
teste, o spread no modelado mas obtido a partir de dados histricos. If the spread is less than or
equal to zero in the historical data, then the last known (at the moment of generation) spread of is
used by testing agent.
No Provador de Estratgia, o spread sempre considerado flutuante. Isto , a funo
SymbolInfoInteger(symbol, SYMBOL_SPREAD_FLOAT) sempre retorna true.
Alm disso, os dados histricos contm valores de tick e volumes de negociao. Para o
armazenamento e recuperao dos dados ns usamos a estrutura especial MqlRates:
struct MqlRates
{
datetime time;

// Hora de incio do perodo

double

open;

// Preo de Abertura

double

high;

// O mais alto preo do perodo

double

low;

// O mais baixo preo do perodo

double

close;

// Preo de Fechamento

long

tick_volume;

// Volume de Tick

int

spread;

// Spread

long

real_volume;

// Volume de Negociao

};

As Variveis Globais do Terminal Cliente


Durante um teste, as variveis globais do terminal cliente so tambm emulados, mas elas no esto
relacionadas como as variveis globais correntes do terminal, que podem ser vistas no terminal
usando a tecla F3. Significa que todas as operaes com as variveis globais do terminal, durante um
teste, acontecem fora terminal cliente (no agente de teste).

O Clculo de Indicadores durante um Teste


No modo tempo-real, os valores de um indicador so calculados a cada tick. O Provador de Estratgia
adotou um modelo de custo-benefcio para calcular indicadores - indicadores so recalculados somente
imediatamente antes da execuo do EA. Significa que o reclculo dos indicados feito antes da
chamada das funes OnTick(), OnTrade() e OnTimer().
No importa se existe ou no uma chamada para um indicador em um handler de evento
especfico, todos os indicadores, os handles que foram criados pelas funes iCustom() ou
IndicatorCreate(), sero recalculados antes de chamar o handler de evento.
Conseqentemente, ao testar no modo "Cada Tick", o clculo dos indicadores acontecem antes da
chamada da funo OnTick().
Se o timer est ativo no EA, usando a funo EventSetTimer(), ento os indicadores sero

2000-2015, MetaQuotes Software Corp.

800

Programas MQL5
recalculados antes de cada chamada ao handler de evento OnTimer(). Por conseqncia, o tempo de
teste pode ser aumentar consideravelmente com o uso de indicadores, escritos de uma forma no
otimizada.

Carregando Histrico durante Teste


O histrico de um ativo a ser testado sincronizado e carregado pelo terminal a partir do servidor de
negociao antes de comear o processo de teste. Durante a primeira vez, o terminal carrega todo o
histrico disponvel de um ativo de forma a no requerer este histrico mais tarde. Aps isso,
somente dados novos so carregados.
Um agente de teste recebe o histrico de um ativo a ser testado a partir do terminal cliente logo aps
o comeo do teste. Se os dados de outros instrumentos so usados no processo de teste (por exemplo,
um Expert Advisor multi-moeda), o agente de teste solicita o histrico requerido do terminal cliente
durante a primeira chamada a tais dados. Se os dados histricos estiverem disponveis no terminal,
eles so imediatamente passados para o agente de teste. Se os dados no estiverem disponveis, o
terminal solicita e os baixa do servidor, e ento os passa para o agente de teste.
Dados de instrumentos adicionais tambm so requeridos para calcular taxas-cruzadas de operaes
de negociao. Por exemplo, ao testar uma estratgia em EURCHF com a moeda de depsito em USD,
antes de processar a primeira operao de negociao, o agente de teste solicita os dados histricos
de EURUSD e USDCHF do terminal cliente, embora a estratgia no contenha chamadas de uso direta a
estes ativos.
Antes de testar um estratgia multi-moeda, recomendvel baixar todos os dados histricos
necessrios para o terminal cliente. Isso ajudar a evitar atrasos em um teste/otimizao associado
com a baixa dos dados requeridos. Voc pode baixar histrico, por exemplo, via abertura dos grficos
apropriados e rol-los para o comea do histrico. Um exemplo de carga forada de histrico para o
terminal est disponvel na seo Organizando Acesso a Dados da Referncia MQL5.
Agentes de teste, por sua vez, recebem o histrico do terminal no formato compactado. Durante o
prximo teste, o Provador de Estratgia no carrega o histrico do terminal, porque os dados
requeridos esto disponveis desde a execuo anterior do Provador de Estratgia.
O termianl carrega o histrico a partir de um servidor de negociao apenas uma vez, na
primeira vez que o agente solicita o histrico de um ativo a ser testado do terminal. O histrico
carregado em forma de pacote para reduzir o trfego.
Ticks no so enviados pela rede, eles so gerados nos agentes de teste.

Teste Multi-Moeda
O Provador de Estratgia nos permite realizar um teste de estratgias, negociando em mltiplos
ativos. Tais EAs so convencionalmente referidos como Expert Advisors multi-moedas, j que
originalmente, um teste era realizado somente para um nico ativo. No Provador de Estratgia do
terminal MetaTrader 5, ns podemos modelar negociao para todos os ativos disponveis.
O Provador de Estratgia carrega o histrico dos ativos usados do terminal cliente (no do servidor
de negociao!) automaticamente durante a primeira chamada aos dados do ativo.
O agente de teste baixa somente o histrico faltante, com uma pequena margem para fornecer os
dados necessrios no histrico para o clculo dos indicadores no perodo inicial do teste. Para as

2000-2015, MetaQuotes Software Corp.

801

Programas MQL5
janelas de tempo D1 ou menor, o volume mnimo de histrico baixado de um ano.
Assim, se ns rodarmos um teste no intervalo 2010.11.01-2010.12.01 (teste para um intervalo de um
ms) com um perodo de M15 (cada barra e igual a 15 minutos), ento ser solicitado ao terminal o
histrico do instrumento para o ano inteiro de 2010. Para a janela de tempo semanal, ns
solicitaremos um histrico de 100 barras, que aproximadamente dois anos (um ano tem 52
semanas). Para testar em uma janela de tempo mensal, o agente solicitar o histrico de 8 anos (12
meses x 8 anos = 96 meses).
Se no houver barras necessrias, a data de nicio do teste ser automaticamente deslocada do
passado para o presente para fornecer a reserva necessria de barras antes do teste.
Durante um teste, a janela "Observao de Mercado" tambm emulada, a partir do qual se pode
obter informaes sobre os ativos.
Por padro, no comeo de um teste, existe somente um ativo na "Observao de Mercado" do
Provador de Estratgia - o ativo em que o teste est rodando. Todos os ativos necessrios so
conectados janela "Observao de Mercado" do Provador de Estratgia (no ao terminal!)
automaticamente quando referenciados.
Antes de comear um teste de um Expert Advisor multi-moeda, necessrio selecionar os ativos
requeridos para o teste na janela "Observao de Mercado" do terminal e carregar os dados
requeridos. Durante a primeira chamada de um ativo "estrangeiro", seu histrico ser
automaticamente sincronizado entre o agente de teste e o terminal cliente. Um ativo
"estrangeiro" o outro ativo, diferente daquele em que o teste rodado.
Referncia aos dados de um "outro" ativo ocorre nos seguintes casos:
Ao usar a funo de indicadores tcnicos e IndicatorCreate() no ativo/perodo;
A solicitao aos dados da janela "Observao de Mercado" por de um outro ativo:
1. SeriesInfoInteger
2. Bars
3. SymbolSelect
4. SymbolIsSynchronized
5. SymbolInfoDouble
6. SymbolInfoInteger
7. SymbolInfoString
8. SymbolInfoTick
9. SymbolInfoSessionQuote
10.SymbolInfoSessionTrade
11.MarketBookAdd
12.MarketBookGet
Solicitao da srie de tempo para um ativo/janela de tempo atrves do uso das seguintes funes:
1. CopyBuffer
2. CopyRates
3. CopyTime

2000-2015, MetaQuotes Software Corp.

802

Programas MQL5
4. CopyOpen
5. CopyHigh
6. CopyLow
7. CopyClose
8. CopyTickVolume
9. CopyRealVolume
10.CopySpread
No momento da primeira chamada a um "outro" ativo, o processo de teste interrompido e o histrico
baixado para o ativo/perodo, do terminal para o agente de teste. Ao mesmo tempo, a gerao da
seqncia de tick para este ativo feita.
Uma seqncia de tick individual gerada para cada ativo, de acordo com o modo de gerao de tick
selecionado. Voc tambm pode solicitar explicitamente o histrico dos ativos desejados atravs de
chamada ao SymbolSelect() no handler OnInit() - a baixa do histrico ser feita imediatamente antes
do teste do Expert Advisor.
Assim, no necessrio nenhum esforo extra para realizar teste de multi-moeda no terminal cliente
MetaTrader 5. Apenas abra os grficos dos apropriados ativos no terminal cliente. O histrico ser
automaticamente carregado do servidor de negociao para todos os ativos requeridos, contanto que
ele contenha estes dados.

Simulao de Tempo no Provador de Estratgia


Durante um teste, a hora local TimeLocal() sempre igual a hora do servidor TimeTradeServer(). Por
sua vez, a hora do servidor sempre igual a hora correspondente hora GMT - TimeGMT(). Desta
forma, todas estas funes mostram a mesma hora durante um teste.
A ausncia de diferena entre as horas GMT, local, e do servidor no Provador de Estratgia feita
deliberadamente para o caso de no haver conexo com o servidor. Os resultados do teste devem
sempre ser os mesmos, independentemente de haver ou no uma conexo. Informaes sobre a hora
do servidor no armazenado localmente, e obtido do servidor.

Objetos Grficos no Teste


Durante um teste/otimizao objetos grficos no so plotados. Assim, ao referenciar as
propriedades de um objeto criado durante um teste/otimizao, um Expert Advisor receber valores
zero.
Este limitao no se aplica ao se testar em modo visual.

A Funo OnTimer() no Provador de Estratgia


MQL5 fornece a oportunidade de tratar eventos de timer. A chamada ao handler OnTimer() feita
independentemente do modo do teste. Isso significa que se um teste rodado no modo "Somente
Preos de Abertura" para o perodo H4, e o EA tem um timer definido para uma chamada por segundo,
ento na abertura de cada barra de H4, o handler OnTick() ser chamado uma vez, e o handler
OnTimer() ser chamado 14400 vezes (3600 segundos * 4 horas). A quantidade de tempo de teste do

2000-2015, MetaQuotes Software Corp.

803

Programas MQL5
EA que ser aumentada depende da lgica do EA.
Para verificar a dependncia do tempo de teste a partir de um dada freqncia do timer, ns temos
que criar um EA simples sem nenhum operao de negociao.
//--- parmetros de entrada
input int

timer=1;

// valor do timer, segundos

input bool

timer_switch_on=true; // timer ativado

//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--- rodar o timer se timer_switch_on==true
if(timer_switch_on)
{
EventSetTimer(timer);
}
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de Desinicializao do Expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- para o timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Funo Timer

//+------------------------------------------------------------------+
void OnTimer()
{
//--// nenhum ao tomada, o corpo do handler est vazio
}
//+------------------------------------------------------------------+

As medies de tempo de tempo so obtidas em valores diferentes do parmetro timer (periodicidade


do evento Timer). Sob os dados obtidos, ns plotamos o tempo do teste como funo do perodo do
Timer.

2000-2015, MetaQuotes Software Corp.

804

Programas MQL5

Pode-se ver claramente que quanto menor o parmetro do timer, durante a a inicializao da funo
EventSetTimer, menor o perodo entre as chamadas do handler OnTimer(), e maior o tempo de
teste, sob as mesmas outras condies.

A Funo Sleep() no Provador de Estratgia


A funo Sleep() permite ao EA ou script suspender a execuo do programa MQL5 por um tempo, ao
trabalhar no grfico. Isso pode ser til ao solicitar dados, que no esto prontos no momento da
solicitao e voc precisa esperar at eles estarem prontos. Um exemplo detalhado do uso da funo
Sleep() pode ser encontrado na seo Preparativo para acesso a dados.
O processo de teste no atrasado por chamadas funo Sleep(). Quando voc chama o Sleep(), os
ticks gerados so "jogados" com um atraso especificado, que pode resultar no disparo de ordens
pendentes, stops, etc. Aps uma chamada do Sleep(), o tempo simulado no Provador de Estratgia
aumenta em um intervalo, especificado no parmetro da funo Sleep.
Se como resultado da execuo da funo Sleep(), o tempo corrente no Provador de Estratgia passar
do perodo de teste, ento voc receber o erro "Infinite Sleep loop detected while testing". Se voc
receber este erro, os resultados do teste no sero rejeitados, todas as computaes so realizadas
em seus volumes completos (o nmero de operaes (deals), abrandamento, etc) e os resultados deste
teste so transmitidos para o terminal.
A funo Sleep() no funcionar em OnDeinit(), j que aps ele ser chamado, ser certo que o tempo
de teste ultrapassar a faixa do intervalo de teste.

2000-2015, MetaQuotes Software Corp.

805

Programas MQL5

Usando o Provador de Estratgia para Problemas de Otimizao em


Clculos Matemticos
O Provador de Estratgia no terminal MetaTrader 5 pode ser usado, no apenas para testar
estratgias de negociao, mas tambm para clculos matemticos. Para usar-lo, necessrio
selecionar o modo "Clculos matemticos"

Neste caso, somente trs funes sero chamadas: OnInit(), OnTester(), OnDeinit(). No modo
"Clculos matemticos" o Provador de Estratgia no gera nenhum tick e no baixa o histrico.
O Provador de Estratgia tambm trabalha em modo "Clculos matemticos" se voc especificar a
data inicial maior que a data final.
Ao usar o Provador de Estratgia para resolver problemas matemticos, a carga do histrico e a
gerao de ticks no ocorrem.
Um problema matemtico tpico para ser revolvido no Provador de Estratgias do MetaTrader 5 busca de um extremo de uma funo com muitas variveis.
Para resolv-lo nos precisamos que:
O clculo do valor da funo deve estar localizado na funo OnTester();

2000-2015, MetaQuotes Software Corp.

806

Programas MQL5
Os parmetros da funo devem estar definidos como variveis de entrada do Expert Advisor;
Compilar o EA, abrir a janela "Provador de Estratgia". Na guia "Parmetros de entrada", selecionar as
requeridas variveis de entrada, e definir o conjunto de valores de parmetros por meio da
especificao dos valores iniciar, parar, e passo de cada uma das variveis da funo.
Selecionar o tipo de otimizao - "Algoritmo completo lento" (busca completa do espao de
parmetros) ou "Rpido (algoritmo gentico)". Para uma busca simples do extremo da funo,
melhor escolher uma otimizao rpida, mas se voc quiser calcular os valores para conjunto inteiro
de variveis, ento melhor usar a otimizao lenta.
Selecione o modo "Clculo matemtico" e usando o boto "Iniciar", executar a procedimento de
otimizao. Note que ao otimizar, o Provador de Estratgia buscar pelos valores mximos da funo
OnTester. Para encontrar um mnimo local, retorne o inverso do valor computado da funo
proveniente da funo OnTester:
return(1/function_value);

necessrio verificar que o function_value no igual a zero, j que de outra forma ns podemos
obter um erro crtico de dividir por zero.
Existe uma outra forma, mais conveniente e que no distorce os resultados da otimizao, ela foi
sugerida pelos leitores deste artigo:
return(-function_value);

Esta opo no requer a verificao do function_value ser igual a zero, e a superfcie dos resultados
da otimizao em uma representao em 3D tem a mesma forma, porm espelhada da original.
Como exemplo, fornecemos a funo sink():

O cdigo do EA para encontrar o extremo desta funo colocada dentro do OnTester():


//+------------------------------------------------------------------+
//|

Sink.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- parmetros de entrada


input double

x=-3.0; // start=-3, step=0.05, stop=3

input double

y=-3.0; // start=-3, step=0.05, stop=3

//+------------------------------------------------------------------+
//| Tester function

//+------------------------------------------------------------------+
double OnTester()
{
//--double sink=MathSin(x*x+y*y);

2000-2015, MetaQuotes Software Corp.

807

Programas MQL5
//--return(sink);
}
//+------------------------------------------------------------------+

Execute uma otimizao e veja os resultados da otimizao na forma de um grfico 2D.

Quanto melhor for o valor para um dado par de parmetros (x,y), mais saturada a cor. Como era
esperado a partir da observao da forma da formula sink(), seus valores forma crculos concntricos
com centro em (0,0). Pode-se ver no grfico 3D, que a funo sink() no tem um nico extremo
global:

2000-2015, MetaQuotes Software Corp.

808

Programas MQL5

A Sincronizao de Barras no modo "Somente Preo de Abertura"


O Provador de Estratgia no terminal cliente do Metatrader 5 permite-nos verificar os chamados EAs
"multi-moedas". Uma EA multi-moeda - um EA que negocia sobre dois ou mais ativos.
O teste de estratgias, que negociam em ativos mltiplos, impe alguns requerimentos tcnicos
adicionais ao Provador de Estratgia:
A gerao de ticks para estes ativos;
O clculo de valores de indicadores para estes ativos;
O clculo de requerimentos de margem para estes ativos;
Sincronizao das seqncias de ticks geradas para todos os ativos negociados.
O Provador de Estratgia gera e joga uma seqncia de ticks para cada instrumento em concordncia
com o modo de negociao selecionado. Ao mesmo tempo e para cada ativo, uma nova barra aberta,
independentemente de como a barra abriu em outro ativo. Isso significa que ao testar um EA multimoeda, uma situao pode ocorrer (e freqentemente acontece), quando para um instrumento, uma
nova barra j abriu, e para o outro instrumento, ela no abriu. Assim, em um teste, tudo acontece
como na realizada.
Esta simulao autntica do histrico no Provador de Estratgia no causa nenhum problema contanto
que os modos de teste "Cada Tick" e "OHLC por minuto" sejam usados. Para estes modos, ticks
suficientes so gerados para um candlestick, para ser capaz de esperar at a sincronizao das barras
de diferentes ativos acontea. Mas como ns testamos estratgias multi-moeda no modo "Somente
Preos de Abertura", se a sincronizao das barras nos instrumentos de negociao obrigatria?
Neste modo, o EA chamado somente em um tick, que corresponde ao momento de abertura das
barras.
Ns ilustraremos isso com um exemplo: se ns estamos testando um EA no EURUSD, e um novo
candlestick de hora abriu em EURUSD, ento podemos reconhecer facilmente este fato - em um teste
no modo "Somente Preos de Abertura", o evento NewTick corresponde ao momento da abertura da
barra sobre o perodo do teste. Mas no exitem garantias que o novo candlestick abriu no ativo
USPJPY, que usado no EA.
Em condies normais, suficiente completar o trabalho da funo OnTick() e verificar pelo
surgimento de uma nova barra em USDJPY no prximo tick. Mas ao testar em modo "Somente Preos
de Abertura", no haver um outro tick, e assim pode parecer que este modo no adequado para
testar EAs multi-moedas. Mas isso no o caso - no se esquea que o testador no MetraTrader 5 se
comporta como se fosse no mundo real. Voc pode esperar at uma nova barra ser aberta em outros
ativos usando a funo Sleep()!
O cdigo do EA Synchronize_Bars_Use_Sleep.mq5, que mostra um exemplo da sincronizao de barras
no modo "Somente Preos de Abertura":
//+------------------------------------------------------------------+
//|

Synchronize_Bars_Use_Sleep.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

2000-2015, MetaQuotes Software Corp.

809

Programas MQL5
#property version

"1.00"

//--- parmetros de entrada


input string

other_symbol="USDJPY";

//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--- verifica ativo
if(_Symbol==other_symbol)
{

PrintFormat("Voc tem de especificar outro smbolo nos parmetros de entrada ou selecionar ou


//--- fora parar teste
return(INIT_PARAMETERS_INCORRECT);
}
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

//+------------------------------------------------------------------+
void OnTick()
{
//--- varivel esttica usada para armazenar a hora da ltima barra
static datetime last_bar_time=0;
//--- flag de sincronizao
static bool synchonized=false;
//--- caso a varivel esttica no esteja inicializada
if(last_bar_time==0)
{
//--- a primeira chamada, salva hora da barra e saiu
last_bar_time=(datetime)SeriesInfoInteger(_Symbol,Period(),SERIES_LASTBAR_DATE);

PrintFormat("A varivel last_bar_time inicializada com valor %s",TimeToString(last_bar_time


}
//--- obtm hora de abertura da ltima barra do ativo do grfico
datetime curr_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
//--- se as horas no so iguais
if(curr_time!=last_bar_time)
{
//--- salva a hora da barra aberta na varivel esttica
last_bar_time=curr_time;
//--- no sincronizado
synchonized=false;
//--- imprime mensagem

PrintFormat("Uma nova barra est aparecendo no smbolo %s em %s",_Symbol,TimeToString(TimeCur


}
//--- hora de abertura da barra de outra ativo
datetime other_time;
//--- loop at a hora de abertura do outro ativo ser igual a curr_time

2000-2015, MetaQuotes Software Corp.

810

Programas MQL5

while(!(curr_time==(other_time=(datetime)SeriesInfoInteger(other_symbol,Period(),SERIES_LASTBAR_
{
PrintFormat("Espera 5 segundos..");
//--- espera 5 segundos e chama SeriesInfoInteger(other_symbol,Period(),SERIES_LASTBAR_DATE)
Sleep(5000);
}
//--- barras so sincronizadas
synchonized=true;

PrintFormat("Tempo de abertura da barra do smbolo %s do grfico: %s",_Symbol,TimeToString(las

PrintFormat("Tempo de abertura da barra do smbolo %s: %s",other_symbol,TimeToString(other_tim


//--- TimeCurrent() no til, usar TimeTradeServer()
Print("As barras so sincronizadas em ",TimeToString(TimeTradeServer(),TIME_SECONDS));
}
//+------------------------------------------------------------------+

Perceba que a ltima linha no EA, que exibe a hora corrente quando o sincronizao de fato foi
estabelecida:
Print("As barras so sincronizadas em ",TimeToString(TimeTradeServer(),TIME_SECONDS));

Para exibir a hora corrente usamos a funo TimeTradeServer() ao invs de TimeCurrent(). A funo
TimeCurrent() retorna o hora do ltimo tick, que no se altera aps usar Sleep(). Executa o EA no
modo "Abertura de preos apenas",e voc ver uma mensagem sobre a sincronizao dos barras.

Use a funo TimeTradeServer() ao invs de TimeCurrent(), se voc precisar obter hora corrente do
servidor, e no a hora da chegado do ltimo tick.
Existe uma outra forma para sincronizar barras - usando um timer. Um exemplo de tal EA
Synchronize_Bars_Use_OnTimer.mq5, que est anexado neste artigo.

A funo IndicatorRelease() no Provador de Estratgia


Aps completar um teste individual, um grfico do instrumento automaticamente aberto, que exibe
as operaes (deals) completas e os indicadores usados no EA. Isso ajuda a verificar visualmente os
pontos de entrada e sada, e comprar-los com os valores dos indicadores.
Observao: indicadores, exibidos no grfico, que automaticamente abrem aps a concluso do
teste, so calculados novamente aps a concluso do teste. Mesmo se estes indicadores foram
usados no EA testado.
Mas em alguns casos, o programador pode querer ocultar a informao sobre quais indicadores
estavam envolvidos nos algoritmos de negociao. Por exemplo, o cdigo do EA alugado ou vendido
como um arquivo executvel, sem o fornecimento do cdigo fonte. Para este propsito, a funo

2000-2015, MetaQuotes Software Corp.

811

Programas MQL5
IndicatorRelease() apropriada.
Se o terminal define um template com o nome tester.tpl no directory/profiles/templates do terminal
cliente, ento ele ser aplicado ao grfico aberto. Na usa ausncia, o template padro aplicado.
(default.tpl).
A funo IndicatorRelease() originalmente destinada para liberar a poro de clculo do indicador,
caso ele mais mais seja necessrio. Isso permite economizar tanto a memria quando os recursos de
CPU, porque cada tick pede um clculo do indicador. Seu segundo propsito - proibir a exibio de
um indicador no grfico de teste, aps uma execuo de teste individual.
Para proibir a exibio do indicador no grfico aps um teste, chame o IndicatorRelease() com o
handle do indicator no handler OnDeinit(). A funo OnDeinit() sempre chamada aps a concluso e
antes da exibio do grfico de teste.
//+------------------------------------------------------------------+
//| Funo de Desinicializao do Expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--bool hidden=IndicatorRelease(handle_ind);
if(hidden) Print("IndicatorRelease() completado com sucesso");
else Print("IndicatorRelease() retorna false. Erro de cdigo ",GetLastError());
}

A fim de proibir a exibio do indicador no grfico, aps a concluso de um teste nico, use a funo
IndicatorRelease() no handler OnDeinit().

Tratamento de Evento no Provador de Estratgia


A presena do handler OnTick() no EA no obrigatria para que possa ser passvel de teste em dados
histricos no Provador de Estratgias do MetaTrader 5. suficiente para o EA conter pelo menos as
seguintes funes-handlers:
OnTick() - Handler de evento de uma nova chegada de tick;
OnTrade() - Handler de evento de negociao;
OnTimer() - Handler de evento de uma chegada de sinal do timer;
OnChartEvent() - um handler para eventos de cliente.
Ao testar um EA, ns pode tratar eventos customizados usando a funo OnChartEvent(), mas nos
indicadores, esta funo no pode ser chamada no testador. Mesmo se o indicador tiver o handler de
evento OnChartEvent() e este indicador for usado em um EA testado, o indicador em si no receber
nenhum evento customizado.
Durante um teste, um Indicador pode gerar eventos customizados
EventChartCustom(), e o EA pode processar este evento no OnChartEvent().

usando

funo

Alm destes eventos, eventos especiais associados com o processo de teste e otimizao so gerados
no Provador de Estratgia:
Tester - este evento gerado aps concluso do teste do Expert Advisor sobre dados histricos. O

2000-2015, MetaQuotes Software Corp.

812

Programas MQL5
evento Tester tratado usando a funo OnTester(). Esta funo pode ser usada apenas quando
testar Expert Advisor e est destinada sobretudo para o clculo de um valor que usado como um
critrio mximo personalizado para otimizao de parmetros de entrada genrica.
TesterInit - este evento gerado durante o incio da otimizao no Provador de Estratgia e antes
do primeiro passo. O evento TesterInit tratado usando a funo OnTesterInit(). Durante o incio
da otimizao, um Expert Advisor com este handler carregado automaticamente em um grfico de
terminal separado com o ativo e perodo especificados no testador, e recebe o evento TesterInit.
Esta funo usada para inicializar um Expert Advisor antes de iniciar a otimizao para posterior
processamento dos resultados da otimizao.
TesterPass - este evento gerado quanto um novo data frame recebido. O evento TesterPass
tratado usando a funo OnTesterPass(). Um Expert Advsor com este handler carregado
automaticamente em um grfico de terminal separado com o ativo/perodo especificados para
teste, e recebe um evento TesterPass quando um frame recebido durante otimizao. A funo
usado para tratamento dinmico de resultados de otimizao "in loco" sem esperar pela sua
concluso. Frames so adicionados usando a funo FrameAdd(), que pode ser chamada aps o fim
de um passo individual no handler OnTester().
TesterDeinit - este evento gerado aps o fim da otimizao do Expert Advisor no Provador de
Estratgia. O evento TesterDeinit tratado usando a funo OnTesterDeinit(). Um Expert Advisor
com este handler carregado automaticamente em um grfico no comeo da otimizao, e recebe
TesterDeInit aps sua concluso. A funo usado para o processamento final de todos os
resultados da otimizao.

Agentes de Teste
O teste no terminal cliente MetaTrader 5 realizado usando agentes de teste. Agentes locais so
criados e habilitados automaticamente. O nmero padro de agentes locais corresponde ao nmero de
ncleos em um computador.
Cada agente de teste tem sua prpria cpia das variveis globais, que no so relacionados com o
terminal cliente. O terminal em si o despachante, que distribui as tarefas para os agentes locais e
remotos. Apos executar uma tarefa no teste de um EA, com os parmetros dados, o agente retorna o
resultado para o terminal. Para um teste individual, somente um agente usado.
O agente armazena o histrico, recebido do terminal, em pastas separadas, pelo nome do
instrumento, assim o histrico para EURUSD armazenado em uma pasta chamada EURUSD. Alm
disso, o histrico dos instrumentos separado pelas suas fontes. A estrutura para armazenar o
histrico tem o seguinte forma:
tester_catalog\Agent-IPaddress-Port\bases\name_source\history\symbol_name

Por exemplo, o histrico para EURUSD proveniente do servidor MetaQuotes-Demo pode ser
armazenada na pasta tester_catalog\Agent-127.0.0.1-3000\bases\MetaQuotes-Demo\EURUSD.
Um agente local, aps a concluso de um teste, entra em modo de espera, aguardando a prxima
tarefa por mais 5 minutos, de modo a no perder tempo com o lanamento para a prxima chamada.
Somente aps o perodo de espera acabar, o agente local desliga e se descarrega da memria do CPU.
No caso de uma concluso antecipada do testador, por parte do usurio (o boto "Cancelar"), bem
como com o fechamento do terminal cliente, todos os agentes locais imediatamente param seu
trabalhar e so descarregados da memria.

2000-2015, MetaQuotes Software Corp.

813

Programas MQL5

A Troca de Dados entre o Terminal e o Agente


Ao rodar um teste, o terminal cliente prepara para enviar ao agente um nmero de blocos de
parmetros:
Parmetros de input para o teste (modo de simulao, o intervalo do teste, instrumentos, critrio
de otimizao, etc.)
A lista dos ativos selecionados na janela "Observao de Mercado"
A especificao do ativo do teste (o tamanho do contrato, as margens permitidas do mercado para
definir um StopLoss e Takeprofit, etc)
O Expert Advisor (robot) para ser testado e os valores de seus parmetros de entrada
Informaes sobre arquivos adicionais (bibliotecas, indicadores, arquivos de dados - # property
tester_ ...)
tester_indicator

string

Nome
de
um
indicador
customizado no formato de
"indicator_name.ex5".
Indicadores que requerem
teste
so
definidos
automaticamente a partir da
chamada funo iCustom(),
se
o
correspondente
parmetro estiver definido
atravs
de
um
string
constante. Para todos os
outros casos (use da funo
IndicatorCreate() ou uso de
uma string no constante no
parmetro que defini o nome
do indicador) esta propriedade
requerida

tester_file

string

Nome de arquivo para um


testador com a indicao de
extenso, entre aspas duplas
(como uma string constante).
O arquivo especificado ser
passado para o Provador de
Estratgia.
Arquivos
de
entrada para serem testados,
se houver necessidade de
algum, devem sempre ser
especificados.

tester_library

string

Nome da biblioteca (library)


com a extenso, entre aspas
duplas. Uma biblioteca pode
ter extenso dll ou ex5.
Bibliotecas que requerem teste
so
definidas

2000-2015, MetaQuotes Software Corp.

814

Programas MQL5

automaticamente. No entanto,
se alguma das bibliotecas
usada por um indicador
customizado, esta propriedade
requerida
Para cada bloco de parmetros, uma impresso digital na forma de MD5-hash criada, que enviado
para o agente. O MD5-hash nico para cada conjunto, seu volume muito menor que a quantidade
de informao na qual ele calculado
O agente recebe um hash de blocos e os compara com aqueles que ele j tem. Se a impresso digital
do bloco de parmetros dado no est presente no agente, ou o hash recebido diferente daquele
existente, o agente solicita este bloco de parmetros. Isso reduz o trfego entre o terminal e o
agente.
Aps o teste, o agente retorna ao terminal todos os resultados da execuo, que so exibidos nas
guias "Resultados" e "Resultados da Otimizao": o lucro recebido, o nmero de operaes (deals), o
coeficiente Sharpe, o resultdo da funo OnTester(), etc.
Durante a otimizao, o terminal distribui tarefas de teste para os agentes em pequenos pacotes,
cada pacote contendo vrias tarefas (cada tarefa significando testes individuais com um conjunto de
parmetros de entrada). Isso reduz o tempo de troca entre o terminal e o agente.
Os agentes nunca gravam no disco rgido o arquivo EX5, obtido do terminal (EA, indicadores,
bibliotecas, etc.) for razes de segurana, de modo que um computador com um agente em execuo
no pode usar os dados enviados. Todos os outros arquivos, incluindo DLL, so gravados na caixa de
areia. Em agentes remotos voc no pode testar EAs usando DLL.
Os resultados do teste so adicionados pelo terminal em uma cache especial de resultados (o cache de
resultado), para um acesso rpido a estes resultados quando necessrio. Para cada conjunto de
parmetros, o terminal busca o cache de resultados por resultados j disponveis a partir de execues
anteriores, a fim de evitar re-execues. Se o resultado com tal conjunto de parmetros no
encontrado, ao agente dado a tarefa de conduzir o teste.
Todo trfego entre o terminal e o agente encripto-grafado.
Ticks no so enviados pela rede, eles so gerados nos agentes de teste.

Usando a Pasta Compartilhada para Todos os Terminais Cliente


Todos os agentes de teste so isolados uns dos outros e do terminal cliente: cada agente tem sua
prpria pasta na qual seus logs so gravados. Alm disso, todas as operaes de arquivo durante o
teste do agente ocorrem na pasta agent_name/MQL5/Files. Contudo, ns podemos implementar a
interao entre os agentes locais e o terminal cliente atravs de uma pasta compartilhada para todos
os terminais clientes, se durante a abertura do arquivo voc especificar a flag FILE_COMMON:
//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()

2000-2015, MetaQuotes Software Corp.

815

Programas MQL5
{
//--- a pasta compartilhada para todos os terminais cliente
common_folder=TerminalInfoString(TERMINAL_COMMONDATA_PATH);
//--- imprime o nome desta pasta

PrintFormat("Abrir o arquivo na pasta compartilhada dos terminais de cliente %s", common_folder)


//--- abre um arquivo na pasta compartilhada (indicada pelo flag FILE_COMMON)
handle=FileOpen(filename,FILE_WRITE|FILE_READ|FILE_COMMON);
... novas aes
//--return(INIT_SUCCEEDED);
}

Usando DLLs
Para acelerar a otimizao ns podemos usar no somente agentes locais, mas tambm agentes
remotos. Neste caso, existem algumas limitaes para agentes remotos. Primeiramente, agentes
remotos no exibem em seus logs os resultados da execuo da funo Print(), mensagens sobre a
abertura e enceramento de posies. Um mnimo de informao exibida no log para impedir que EAs
escritos incorretamente de atolem o computador, no qual o agente remoto est trabalhando, com
mensagens.
A segunda limitao - a proibio no uso de DLL ao testar EAs. Chamadas de DLL so absolutamente
proibidas em agentes remotos por razes de segurana. Em agentes locais, chamadas de DLL em EAs
testados so permitidas somente com a apropriada permisso "Allow import DLL".

Observao: Ao usar os cdigos recebidos dos EAs (scripts, indicadores) que requerem a
permisso para fazer chamadas de DLL, voc deve estar ciente dos riscos, que voc assume ao
permitir este opo nas configuraes do terminal. Independentemente de como a EA ser usada para teste ou para execuo em um grfico.

2000-2015, MetaQuotes Software Corp.

816

Programas MQL5

2000-2015, MetaQuotes Software Corp.

817

Variveis Predefinidas

As variveis predefinidas
Para cada programa MQL5 executvel, um conjunto de variveis predefinidas suportado, que reflete
o estado do grfico de preo corrente no momento em que um programa-mql5 iniciado.
Os valores das variveis predefinidas so definidas pelo terminal cliente antes de um programa MQL5
ser iniciado. Variveis predefinidas so constantes e no podem ser alteradas a partir de um programa
MQL5. Como exceo, existe a variveis especial _LastError, que pode ser redefinida para 0 pela
funo ResetLastError.
Varivel

Valor

_Digits

Nmero de casas decimais

_Point

Tamanho do ponto do ativo corrente na moeda


de cotao

_LastError

O ltimo cdigo de erro

_Period

Janela de tempo do grfico corrente

_RandomSeed

Status atual do gerador de nmeros pseudoaleatrios

_StopFlag

Flag de parada de programa

_Symbol

Nome do ativo do grfico corrente

_UninitReason

Cdigo do motivo da no inicializao

Variveis predefinidas no podem ser definidas em uma biblioteca. Uma biblioteca usa tais variveis
que so definidas em um programa a partir do qual esta biblioteca chamada.

2000-2015, MetaQuotes Software Corp.

818

Variveis Predefinidas

int _Digits
A varivel _Digits armazena o nmero de dgitos aps o ponto decimal, que define a preciso do preo
do ativo do grfico corrente.
Voc pode tambm usar a funo Digits().

2000-2015, MetaQuotes Software Corp.

819

Variveis Predefinidas

double _Point
A varivel _Point contm o tamanho do ponto do ativo corrente na moeda de cotao.
Voc tambm pode usar a funo Point().

2000-2015, MetaQuotes Software Corp.

820

Variveis Predefinidas

int _LastError
A varivel _LastError contm o cdigo do ltimo erro, que ocorreu durante a execuo de um
programa-mql5. Seu valor pode ser redefinido para zero por ResetLastError().
Para obter o cdigo do ltimo erro, voc tambm pode usar a funo GetLastError().

2000-2015, MetaQuotes Software Corp.

821

Variveis Predefinidas

int _Period
A varivel _Period contm o valor da janela de tempo do grfico corrente.
Voc tambm pode usar a funo Period().
Tambm Veja
PeriodSeconds, Janelas de tempo de grficos, Data e Hora, Visibilidade de objetos

2000-2015, MetaQuotes Software Corp.

822

Variveis Predefinidas

_RandomSeed
Varivel para armazenamento do estado corrente ao gerar inteiros pseudo-aleatrios. _RandomSeed
altera seu valor ao chamar MathRand(). Use MathSrand() para definir a condio inicial requerida.
x nmero aleatrio recebido pela funo MathRand() calculado da seguinte forma a cada chamada:
x=_RandomSeed*214013+2531011;
_RandomSeed=x;
x=(x>>16)&0x7FFF;

Tambm Veja
MathRand(), MathSrand(), Tipos inteiros

2000-2015, MetaQuotes Software Corp.

823

Variveis Predefinidas

bool _StopFlag
A varivel _StopFlag contm o flag de parada de um programa MQL5. Quando o terminal cliente est
tentando parar o programa, ele define a varivel _StopFlag para true.
Para verificar o estado do _StopFlag voc tambm pode usar a funo IsStopped().

2000-2015, MetaQuotes Software Corp.

824

Variveis Predefinidas

string _Symbol
A varivel _Symbol contm o nome do ativo do grfico corrente.
Voc tambm pode usar a funo Symbol().

2000-2015, MetaQuotes Software Corp.

825

Variveis Predefinidas

int _UninitReason
A varivel _UninitReason contm o cdigo do motivo de no inicializao do programa.
Geralmente, este cdigo obtido atravs da funo UninitializeReason().

2000-2015, MetaQuotes Software Corp.

826

Funes Comuns

Funes Comuns
Funes de propsito geral no inclusas em nenhum grupo especializado esto listadas aqui.
Funo

Ao

Alert

Exibe uma mensagem em uma janela separada

CheckPointer

Retorna o tipo do ponteiro de objeto

Comment

Gera um comentrio no canto superior esquerdo


do grfico

CryptEncode

Transforms the data from array with the


specified method

CryptDecode

Performs the inverse transformation of the


data from array

DebugBreak

Ponto de parada de programa em depurao

ExpertRemove

Interrompe um Expert Advisor e o descarrega


do grfico

GetPointer

Retorna o ponteiro de objeto

GetTickCount

Retorno o nmero de milissegundos decorridos


desde que o sistema foi iniciado

GetMicrosecondCount

Returns the number of microseconds that have


elapsed since the start of MQL5-program

MessageBox

Cria, exibe uma caixa de mensagem e o


gerencia

PeriodSeconds

Retorna o nmero de segundos no perodo

PlaySound

Toca um arquivo de som

Print

Exibe uma mensagem no log

PrintFormat

Formata e imprime um conjunto de smbolos e


valores em um arquivo de log de acordo com
um formato predefinido

ResetLastError

Define o valor da varivel predeterminada


_LastError para zero

ResourceCreate

Cria um recurso de imagem baseado em um


conjunto de dados

ResourceFree

Exclui
recursos
criados
dinamicamente
(liberando a memria alocada para ele)

ResourceReadImage

L os dados do recurso grfico criado pela


funo ResourceCreate() ou salvo em arquivo
EX5 durante a compilao

ResourceSave

Salva um recurso em um arquivo especificado

2000-2015, MetaQuotes Software Corp.

827

Funes Comuns

SendFTP

Envia um arquivo no endereo especificado na


janela de configuraes da guia "FTP"

SendMail

Envia um email no endereo especificado na


janela de configuraes da guia "Email"

SendNotification

Envia notificaes push para terminais mveis,


cujos MetaQuotes ID's esto especificados na
guia "Notificaes"

Sleep

Suspende por um intervalo especificado a


execuo do Expert Advisor corrente ou script

TerminalClose

Ordena o terminal a finalizar a operao

TesterStatistics

Retorna o valor de uma estatstica especfica


calculada com base em resultados de teste

WebRequest

Sends HTTP request to the specified server

ZeroMemory

Redefine uma varivel passada para ela por


referncia. A varivel pode ser de qualquer
tipo, exceto classes e estruturas que tenham
construtores.

2000-2015, MetaQuotes Software Corp.

828

Funes Comuns

Alert
Exibe uma mensagem em uma janela separada.
void Alert(
argument,

// primeiro valor

...

// outros valores

);

Parmetros
argument
[in] Quaisquer valores separados por virgulas. Para dividir a sada da informao em vrias linhas
voc pode usar o caractere de quebra de linha "\n" ou "\r\n". O nmero de parmetros no pode
exceder 64.
Valor do Retorno
Sem valor de retorno.
Observao
Arrays no podem ser passados para a funo Alert(). Arrays devem ser fornecidos elemento a
elemento. Dados do tipo double so exibidos com 8 dgitos aps o ponto decimal, dados do tipo float
so exibidos com 5 dgitos aps o ponto decimal. Para exibir os nmeros reais com uma preciso
diferente ou em notao cientfica, use a funo DoubleToString().
Dados do tipo bool so exibidos como strings "true" ou "false". Datas so exibidas como
YYYY.MM.DD HH:MM:SS. Para exibir uma data em um outro formato use a funo TimeToString().
Dados do tipo color so exibidos tanto como uma string R,G,B ou como nome de cor, se a cor estiver
presente no conjunto de cores.
Alert() function does not work in the Strategy Tester.

2000-2015, MetaQuotes Software Corp.

829

Funes Comuns

CheckPointer
A funo retorna o tipo do ponteiro de objeto.
ENUM_POINTER_TYPE CheckPointer(
object* anyobject

// ponteiro de objeto

);

Parmetros
anyobject
[in] Ponteiro de objeto.
Valor de retorno
Retorna um valor da enumerao ENUM_POINTER_TYPE.
Observao
Uma tentativa de chamar um ponteiro incorreto resulta na finalizao crtica de um programa. por
isso que necessrio chamar a funo CheckPointer antes de usar um ponteiro. Um ponteiro pode
estar incorreto nos seguintes casos:
o ponteiro igual a NULL;
o objeto foi excludo usando o operador delete.
Esta funo pode ser usada para checar a validade do ponteiro. Um valor no zero garante que o
ponteiro pode ser usado para acesso.
Exemplo:
//+------------------------------------------------------------------+
//| Exclui lista atravs da excluso de seus elementos

//+------------------------------------------------------------------+
void CMyList::Destroy()
{
//--- ponteiro de servio para trabalhar no loop
CItem* item;
//--- percorre pelo loop e tenta excluir ponteiros dinmicos
while(CheckPointer(m_items)!=POINTER_INVALID)
{
item=m_items;
m_items=m_items.Next();
if(CheckPointer(item)==POINTER_DYNAMIC)
{
Print("Dynamic object ",item.Identifier()," para ser excludo");
delete (item);
}
else Print("Objeto no-dinmico ",item.Identifier()," cannot be deleted");
}
//--}

2000-2015, MetaQuotes Software Corp.

830

Funes Comuns

Tambm Veja
Ponteiros de Objetos, Verificao do Ponteiro de Objeto, Excluso de Objeto Operador delete

2000-2015, MetaQuotes Software Corp.

831

Funes Comuns

Comment
Esta funo exibe um comentrio definido pelo usurio no canto superior esquerdo de um grfico.
void Comment(
argument,

// primeiro valor

...

// prximos valores

);

Parmetros
...
[in] Quaisquer valores, separados por vrgulas. Para delimitar a exibio da informao em
vrias linhas, um smbolo de quebra de linha "\n" ou "\r\n" usado. O nmero de parmetros no
pode exceder 64. O comprimento total do comentrio de entrada (incluindo smbolos invisveis)
no pode exceder 2045 caracteres (smbolos em excesso sero eliminados da exibio)
Valor do Retorno
Sem valor de retorno
Observao
Arrays no podem ser passados para a funo Comment(). Arrays devem ser alimentados elemento a
elemento.
Dados de tipo double so impressos com preciso de at 16 dgitos aps o ponto decimal, e podem
ser impressos tanto na forma tradicional quanto na forma cientfica, dependendo de qual notao
ser a mais compacta. Dados do tipo float so exibidos com 5 dgitos aps o ponto decimal. Para
exibir nmeros reais com uma outra preciso ou em um formato predefinido, use a funo
DoubleToString().
Dados de tipo bool so impressos como strings "true" ou "false". Datas so mostradas como
YYYY.MM.DD HH:MM:SS. Para mostrar datas em um outro formato, use a funo TimeToString().
Dados de tipo color so impressos tanto como strings R,G,B quanto como nome de cor, se esta cor
estiver presente no conjunto de cores.
Exemplo:
void OnTick()
{
//--double Ask,Bid;
int Spread;
Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
Spread=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);
//--- Exibe valores em 3 linhas
Comment(StringFormat("Mostrar preos\nAsk = %G\nBid = %G\nSpread = %d",Ask,Bid,Spread));
}

Tambm Veja
ChartSetString, ChartGetString

2000-2015, MetaQuotes Software Corp.

832

Funes Comuns

CryptEncode
Transforms the data from array with the specified method.
int CryptEncode(
ENUM_CRYPT_METHOD

method,

// method

const uchar&

data[],

// source array

const uchar&

key[],

// key

uchar&

result[]

// destination array

);

Parameters
method
[in]
Data transformation method. Can be one of the values of ENUM_CRYPT_METHOD
enumeration.
data[]
[in] Source array.
key[]
[in] Key array.
result[]
[out] Destination array.
Returned value
Amount of bytes in the destination array or 0 in case of error. To obtain information about the error
call the GetLastError() function.
Example:
//+------------------------------------------------------------------+
//| ArrayToHex

//+------------------------------------------------------------------+
string ArrayToHex(uchar &arr[],int count=-1)
{
string res="";
//--- check
if(count<0 || count>ArraySize(arr))
count=ArraySize(arr);
//--- transform to HEX string
for(int i=0; i<count; i++)
res+=StringFormat("%.2X",arr[i]);
//--return(res);
}
//+------------------------------------------------------------------+
//| Script program start function

//+------------------------------------------------------------------+
void OnStart()

2000-2015, MetaQuotes Software Corp.

833

Funes Comuns
{
string text="The quick brown fox jumps over the lazy dog";
string keystr="ABCDEFG";
uchar src[],dst[],key[];
//--- prepare key
StringToCharArray(keystr,key);
//--- copy text to source array src[]
StringToCharArray(text,src);
//--- print initial data
PrintFormat("Initial data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
//--- encrypt src[] with DES 56-bit key in key[]
int res=CryptEncode(CRYPT_DES,src,key,dst);
//--- check error
if(res>0)
{
//--- print encrypted data
PrintFormat("Encoded data: size=%d %s",res,ArrayToHex(dst));
//--- decode dst[] to src[]
res=CryptDecode(CRYPT_DES,dst,key,src);
//--- check error
if(res>0)
{
//--- print decoded data
PrintFormat("Decoded data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
}
else
Print("Error in CryptDecode. Error code=",GetLastError());
}
else
Print("Error in CryptEncode. Error code=",GetLastError());
}

See also
Array Functions, CryptDecode()

2000-2015, MetaQuotes Software Corp.

834

Funes Comuns

CryptDecode
Performs the inverse transformation of the data from array, tranformed by CryptEncode().
int CryptEncode(
ENUM_CRYPT_METHOD

method,

// method

const uchar&

data[],

// source array

const uchar&

key[],

// key

uchar&

result[]

// destination array

);

Parameters
method
[in]
Data transformation method. Can be one of the values of ENUM_CRYPT_METHOD
enumeration.
data[]
[in] Source array.
key[]
[in] Key array.
result[]
[out] Destination array.
Returned value
Amount of bytes in the destination array or 0 in case of error. To obtain information about the error
call the GetLastError() function.
See also
Array Functions, CryptEncode()

2000-2015, MetaQuotes Software Corp.

835

Funes Comuns

DebugBreak
um ponto de parada de programa em depurao.
void DebugBreak();

Valor do Retorno
Sem valor de retorno.
Observao
A execuo de um programa MQL5 interrompido somente se ele for iniciado em modo de
depurao. A funo pode ser usada para ver valores de variveis e/ou para avanar a execuo
passo a passo.

2000-2015, MetaQuotes Software Corp.

836

Funes Comuns

ExpertRemove
A funo interrompe um Expert Advisor e o descarrega de um grfico.
void ExpertRemove();

Valor de retorno
Sem valor de retorno.
Observao
O Expert Advisor no interrompido imediatamente ao chamar ExpertRemove(); apenas um flag
para interromper a operao o EA definido. Isso , nenhum evento seguinte ser processo,
OnDeinit() ser chamado e o Expert Advisor ser descarregado e removido do grfico.
Exemplo:
//+------------------------------------------------------------------+
//|

Test_ExpertRemove.mq5 |

//|

Copyright 2009, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

input int ticks_to_close=20;// nmero de ticks antes do EA descarregar


//+------------------------------------------------------------------+
//| Funo de Desinicializao do Expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--Print(TimeCurrent(),": " ,__FUNCTION__," cdigo de motivo = ",reason);
//--- "limpa" comentrio
Comment("");
//--}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

//+------------------------------------------------------------------+
void OnTick()
{
static int tick_counter=0;
//--tick_counter++;
Comment("\nAntes de descarregar Expert Advisor ",__FILE__," left",
(ticks_to_close-tick_counter)," ticks");
//--- antes
if(tick_counter>=ticks_to_close)
{

2000-2015, MetaQuotes Software Corp.

837

Funes Comuns
ExpertRemove();
Print(TimeCurrent(),": ",__FUNCTION__," Expert Advisor ser descarregado");
}
Print("tick_counter =",tick_counter);
//--}
//+------------------------------------------------------------------+

Tambm Veja
Execuo de programas, Eventos do terminal Cliente

2000-2015, MetaQuotes Software Corp.

838

Funes Comuns

GetPointer
A funo retorna o ponteiro de objeto.
void* GetPointer(
any_class anyobject

// objeto de qualquer classe

);

Parmetros
anyobject
[in] Objeto de qualquer classe.
Valor do Retorno
A funo retorna o ponteiro de objeto.
Observao
Somente objetos de classe tm ponteiros. Instncias de estruturas e variveis de tipo simples no
podem ter ponteiros. O objeto de classe no criado usando o operador new(), mas, por exemplo,
criado automaticamente no array de objetos, tem um ponteiro. Mas este ponteiro ser do tipo
automtico POINTER_AUTOMATIC, portanto o operador delete() no pode ser aplicado a ele. Alm
de que, o tipo ponteiro no difere dos ponteiros dinmico do tipo POINTER_AUTOMATIC.
Como variveis de tipo estrutura e de tipo simples no tm ponteiros, proibido aplicar a funo
GetPointer() a elas. tambm proibido passar o ponteiro como um argumento de funo. Nos outros
casos o resultado indefinido.
Uma tentativa de chamar um ponteiro incorreto causa a finalizao crtica de um programa. por
isso que a funo CheckPointer() deve ser chamada antes de usar um ponteiro. Um ponteiro pode
estar incorreto nos seguintes casos:
o ponteiro igual a NULL;
o objeto foi excludo usando o operador delete.
Esta funo pode ser usada para verificar a validade de um ponteiro. Um valor no-zero garante que
o ponteiro pode ser usado para acesso.
Exemplo:
//+------------------------------------------------------------------+
//|

Check_GetPointer.mq5 |

//|

Copyright 2009, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//+------------------------------------------------------------------+
//| Classe implementando o elemento da lista

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

839

Funes Comuns
class CItem
{
int

m_id;

string

m_comment;

CItem*

m_next;

public:
CItem() { m_id=0; m_comment=NULL; m_next=NULL; }
~CItem() { Print("Destrutor de ",m_id,
(CheckPointer(GetPointer(this))==POINTER_DYNAMIC)?
"dynamic":"no dinmico"); }
void

Initialize(int id,string comm) { m_id=id; m_comment=comm; }

void

PrintMe() { Print(__FUNCTION__,":",m_id,m_comment); }

int

Identifier() { return(m_id); }

CItem*

Next() {return(m_next); }

void

Next(CItem *item) { m_next=item; }

};
//+------------------------------------------------------------------+
//| Classe mais simples de lista

//+------------------------------------------------------------------+
class CMyList
{
CItem*

m_items;

public:
CMyList() { m_items=NULL; }
~CMyList() { Destroy(); }
bool

InsertToBegin(CItem* item);

void

Destroy();

};
//+------------------------------------------------------------------+
//| Incluindo elemento de lista no comeo

//+------------------------------------------------------------------+
bool CMyList::InsertToBegin(CItem* item)
{
if(CheckPointer(item)==POINTER_INVALID) return(false);
//--item.Next(m_items);
m_items=item;
//--return(true);
}
//+------------------------------------------------------------------+
//| Excluindo a lista atravs da excluso dos elementos

//+------------------------------------------------------------------+
void CMyList::Destroy()
{
//--- ponteiro de servio para trabalhar em um loop
CItem* item;
//--- varre o loop e tenta excluir ponteiros dinmicos
while(CheckPointer(m_items)!=POINTER_INVALID)

2000-2015, MetaQuotes Software Corp.

840

Funes Comuns
{
item=m_items;
m_items=m_items.Next();
if(CheckPointer(item)==POINTER_DYNAMIC)
{
Print("Dynamyc object ",item.Identifier()," para ser excludo");
delete (item);
}
else Print("Objeto no-dinmico ",item.Identifier()," cannot be deleted");
}
//--}
//+------------------------------------------------------------------+
//| Funo start do programa script

//+------------------------------------------------------------------+
void OnStart()
{
CMyList list;
CItem

items[10];

CItem*

item;

//--- cria e adiciona na lista um ponteiro de objeto dinmico


item=new CItem;
if(item!=NULL)
{
item.Initialize(100,"dinmico");
item.PrintMe();
list.InsertToBegin(item);
}
//--- adiciona ponteiros automticos na lista
for(int i=0; i<10; i++)
{
items[i].Initialize(i,"automtico");
items[i].PrintMe();
item=GetPointer(items[i]);
if(CheckPointer(item)!=POINTER_INVALID)
list.InsertToBegin(item);
}
//--- adiciona mais um ponteiro de objeto dinmico no comeo da lista
item=new CItem;
if(item!=NULL)
{
item.Initialize(200,"dinmico");
item.PrintMe();
list.InsertToBegin(item);
}
//--- exclui todos os elementos da lista
list.Destroy();
//--- todos os elementos da lista ser excludos aps o script terminar
//--- veja a guia Experts no terminal

2000-2015, MetaQuotes Software Corp.

841

Funes Comuns
}

Tambm Veja
Ponteiros de Objetos, Verificao do Ponteiro de Objeto, Excluso de Objeto Operador delete

2000-2015, MetaQuotes Software Corp.

842

Funes Comuns

GetTickCount
A funo GetTickCount() retorna o nmero de milissegundos decorridos desde o inicializao do
sistema.
uint GetTickCount();

Valor do Retorno
Valor de tipo uint.
Observao
O contador limitado pelas restries do timer do sistema. O tempo armazenado como um inteiro
sem sinal, assim ele sobre-preenchido a cada 49.7 dias se um computador trabalhar
ininterruptamente.
Exemplo:
#define MAX_SIZE 40
//+------------------------------------------------------------------+
//| Script para medir o tempo de computao de 40 membros Fibonacci |
//+------------------------------------------------------------------+
void OnStart()
{
//--- Lembra o valor inicial
uint start=GetTickCount();
//--- Uma varivel para obteno do prximo nmero na srie Fibonacci
long fib=0;
//--- No loop calcular a quantidade especfica de nmeros de srie de Fibonacci
for(int i=0;i<MAX_SIZE;i++) fib=TestFibo(i);
//--- Obtm o tempo gasto em milissegundos
uint time=GetTickCount()-start;
//--- Imprime uma mensagem para o dirio Experts
PrintFormat("Calculando %d primeiros nmeros Fibonacci tiveram %d ms",MAX_SIZE,time);
//--- Script concludo
return;
}
//+------------------------------------------------------------------+
//| Funo para obter nmero de Fibonacci pelo seu nmero serial

//+------------------------------------------------------------------+
long TestFibo(long n)
{
//--- O primeiro membro da srie Fibonacci
if(n<2) return(1);
//--- Todos os outros membros so calculados pela seguinte frmula
return(TestFibo(n-2)+TestFibo(n-1));
}

Tambm Veja
Data e Hora

2000-2015, MetaQuotes Software Corp.

843

Funes Comuns

GetMicrosecondCount
The GetMicrosecondCount() function returns the number of microseconds that have elapsed since the
start of MQL5-program.
ulong GetMicrosecondCount();

Return Value
Value of ulong type.
Example:
//+------------------------------------------------------------------+
//| Test function

//+------------------------------------------------------------------+
void Test()
{
int

res_int=0;

double res_double=0;
//--for(int i=0;i<10000;i++)
{
res_int+=i*i;
res_int++;
res_double+=i*i;
res_double++;
}
}
//+------------------------------------------------------------------+
//| Script program start function

//+------------------------------------------------------------------+
void OnStart()
{
uint

ui=0,ui_max=0,ui_min=INT_MAX;

ulong

ul=0,ul_max=0,ul_min=INT_MAX;

//--- number of measurements


for(int count=0;count<1000;count++)
{
uint

ui_res=0;

ulong ul_res=0;
//--for(int n=0;n<2;n++)
{
//--- select measurement type
if(n==0) ui=GetTickCount();
else

ul=GetMicrosecondCount();

//--- execute code


Test();
//--- add measurement result (depending on type)

2000-2015, MetaQuotes Software Corp.

844

Funes Comuns
if(n==0) ui_res+=GetTickCount()-ui;
else

ul_res+=GetMicrosecondCount()-ul;

}
//--- calculate minimum and maximum time for both measurements
if(ui_min>ui_res) ui_min=ui_res;
if(ui_max<ui_res) ui_max=ui_res;
if(ul_min>ul_res) ul_min=ul_res;
if(ul_max<ul_res) ul_max=ul_res;
}
//--Print("GetTickCount error(msec): ",ui_max-ui_min);
Print("GetMicrosecondCount error(msec): ",DoubleToString((ul_max-ul_min)/1000.0,2));
}

See also
Date and Time

2000-2015, MetaQuotes Software Corp.

845

Funes Comuns

MessageBox
Cria e exibe uma caixa de mensagem e o gerencia. Um caixa de mensagem contm uma mensagem e
cabealho, e qualquer combinao de sinais predefinidos e botes de comando.
int MessageBox(
string text,

// texto da mensagem

string caption=NULL,

// cabealho da caixa

int

// define o conjunto de botes na caixa

flags=0

);

Parmetros
text
[in] Texto, contm a mensagem de sada.
caption=NULL
[in] Texto opcional a ser exibido no cabealho da caixa. Se o parmetro estiver vazio, o nome do
Expert Advisor exibido no cabealho da caixa.
flags=0
[in] Flags opcionais definindo a aparncia e comportamento da caixa de mensagem. Flags podem
ser uma combinao de um grupo especial de flags.
Valor do Retorno
Se a funo for executada com sucesso, o valor de retorno um dos valores dos cdigos de retorno
do MessageBox().
Observao
A funo no pode ser chamada a partir de indicadores customizados, porque indicadores so
executados na thread de interface, que no deve ser atrasado.
MessageBox() function does not work in the Strategy Tester.

2000-2015, MetaQuotes Software Corp.

846

Funes Comuns

PeriodSeconds
Esta funo retorna o nmero de segundos em um perodo.
int PeriodSeconds(
ENUM_TIMEFRAMES period=PERIOD_CURRENT

// perodo do grfico

);

Parmetros
period=PERIOD_CURRENT
[in] Valor do perodo de um grfico proveniente da enumerao ENUM_TIMEFRAMES. Se o
parmetro no for especificado, ela retorna o nmero de segundos do perodo do grfico corrente,
no qual o programa est rodando.
Valor do Retorno
Nmero de segundos em um perodo selecionado.
Tambm Veja
_Period, Janelas de tempo de Grficos, Date e Hora, Visibilidade de objetos

2000-2015, MetaQuotes Software Corp.

847

Funes Comuns

PlaySound
Toca um arquivo de som.
bool PlaySound(
string filename

// nome do arquivo

);

Parmetros
filename
[in] Caminho para um arquivo de som. If filename=NULL, the playback is stopped.
Valor do Retorno
true se o arquivo for encontrado, caso contrrio - false.
Observao
O arquivo deve estar localizado em terminal_directory\Sounds ou em sub-diretrios. Somente
arquivos WAV so executados.
Call of PlaySound() with NULL parameter stops playback.
PlaySound() function does not work in the Strategy Tester.
Tambm Veja
Recursos

2000-2015, MetaQuotes Software Corp.

848

Funes Comuns

Print
Entra uma mensagem no log do Expert Advisor. Parmetros podem ser de qualquer tipo.
void Print(
argument,

// primeiro valor

...

// prximos valores

);

Parmetros
...
[in] Quaisquer valores separados por virgulas. O nmero de parmetros no pode exceder 64.
Observao
Arrays no podem ser passados para a funo Print(). Arrays devem ser passados elemento a
elemento.
Dados do tipo double so mostrados com preciso de at 16 dgitos aps o ponto decimal, e podem
ser exibidos tanto na formato tradicional como em notao cientfica, dependendo de qual sada
ser mais compacta. Dados do tipo float so exibidos com 5 dgitos aps o ponto decimal. Para
imprimir nmeros reais com uma outra preciso ou em um formato predefinido, use a funo
PrintFormat() .
Dados do tipo bool so exibidos como strings "true" ou "false". Datas so mostradas como
YYYY.MM.DD HH:MM:SS. Para mostrar datas em um outro formato, use TimeToString(). Dados do
tipo cor so retornados como string R,G,B ou como nome de cor, se esta cor estiver presente no
conjunto de cores
Print() function does not work during optimization in the Strategy Tester.
Exemplo:
void OnStart()
{
//--- Imprimi DBL_MAX usando Print(), isso equivalente a PrintFormat(%%.16G,DBL_MAX)
Print("---- como DBL_MAX aparece -----");
Print("Print(DBL_MAX)=",DBL_MAX);
//--- Agora imprime o nmero DBL_MAX usando PrintFormat()
PrintFormat("PrintFormat(%%.16G,DBL_MAX)=%.16G",DBL_MAX);
//--- Imprime no dirio Experts
// Print(DBL_MAX)=1.797693134862316e+308
// PrintFormat(%.16G,DBL_MAX)=1.797693134862316E+308
//--- Veja como um float impresso
float c=(float)M_PI; // Ns devemos explicitamente converter para o tipo desejado
Print("c=",c, "
// c=3.14159

Pi=",M_PI, "

Pi=3.141592653589793

(float)M_PI=",(float)M_PI);
(float)M_PI=3.14159

//--- Mostra o que pode acontecer com operaes aritmticas com tipos reais
double a=7,b=200;
Print("---- Antes de operaes aritmticas");

2000-2015, MetaQuotes Software Corp.

849

Funes Comuns
Print("a=",a,"

b=",b);

Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- Dividir a por b (7/200)
a=a/b;
//--- Agora emula a restaurao de um valor na varivel b
b=7.0/a; // esperado que b=7.0/(7.0/200.0)=>7.0/7.0*200.0=200 - mas ele difere
//--- Imprimi o novo valor calculado de b
Print("----- Aps as operaes aritmticas");
Print("Print(b)=",b);
Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- Imprime no dirio Experts
// Print(b)=200.0
// Print(DoubleToString(b,16))=199.9999999999999716 (veja que b no mais igual a 200.0)
//--- Cria um valor muito pequeno epsilon=1E-013
double epsilon=1e-13;
Print("---- Criando um valor muito pequeno");
Print("epsilon=",epsilon); // Obter epsilon=1E-013
//--- Agora subtrai epsilon de b e novamente imprime o valor no dirio Experts
b=b-epsilon;
//--- Duas formas de uso
Print("---- Depois de subtrair epsilon da varivel b");
Print("Print(b)=",b);
Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- Imprime no dirio Experts
// Print(b)=199.9999999999999

(agora o valor de b aps subtrair epsilon no pode ser arredondado p

// Print(DoubleToString(b,16))=199.9999999999998578
//

(agora o valor de b aps subtrair epsilon no podem ser arredondado para 200)

Tambm Veja
DoubleToString, StringFormat

2000-2015, MetaQuotes Software Corp.

850

Funes Comuns

PrintFormat
Formata e entra conjuntos de smbolos e valores no log do Expert Advisor em concordncia com um
formato predefinido.
void PrintFormat(
string format_string,

// string de formato

...

// valores de tipo simples

);

Parmetros
format_string
[in] A string de formato consiste de smbolos simples, e se a string de formato seguido por
argumentos, ela tambm contm especificaes de formato.
...
[in] Quaisquer valores de tipos simples separados por vrgula. Nmero total de parmetros no
pode exceder A 64, incluindo a string de formato.
Valor do Retorno
String.
Observao
PrintFormat() function does not work during optimization in the Strategy Tester.
O nmero, ordem e tipo dos parmetros devem corresponder exatamente com o conjunto de
qualificadores, caso contrrio, o resultado do print indefinido. Ao invs de PrintFormat(), voc
pode usar printf().
Se a string de formato for seguida por parmetros, esta string deve conter especificaes de
formato que denotem o formato de sada destes parmetros. Especificaes de formato sempre
comeam com o sinal de percentual (%).
Uma string de formato lida da esquerda para direita. Quando a primeira especificao de formato
encontrada (se houver alguma), o valor do primeiro parmetro aps a string de formato
transformado e impresso de acordo com a especificao predefinida. A segunda especificao de
formato chama a transformao e impresso do segundo parmetro, e assim por diante at a string
de formato acabe.
A especificao de formato tem a seguinte forma:
%[flags][largura][.preciso][{h | l | ll | I32 | I64}]tipo
Cada campo da especificao de formato tanto um smbolo simples, como um nmero denotando
uma opo de formato simples. A especificao de formato mais simples contm somente o sinal de
percentagem (%) e um smbolo definindo o tipo do parmetro de sada (por exemplo, %s). Se voc
precisar imprimir o sinal de percentual na string de formato, use o especificao de formato %%.

flags

2000-2015, MetaQuotes Software Corp.

851

Funes Comuns

Flag

Descrio

Comportamento Default

(menos)

Justificao
a
esquerda
dentro da largura (width)
predefinida

Justificao a direita

+ (mais)

Imprime o sinal + ou - de
valores de tipos com sinal

O sinal somente mostrada


se o valor for negativo

0 (zero)

Zeros so adicionados antes


de um valor impresso com a
largura predefinida. Se o flag
0 for especificado com um
formato inteiro (i, u, x, X, o,
d) e a especificao de
preciso for definida (por
exemplo, %04.d), ento 0
ignorado.

Nada adicionado

espao

Um espao exibido antes de


um valor impresso, se ele for
um valor com sinal e positivo

Espaos no so inseridos

Se usado em conjunto com o


formato o, x ou X, ento
antes do valor de sada 0, 0x
ou
0X

adicionado
respectivamente.

Nada adicionado

Se usado em conjunto com o


formato e, E, a ou A, o valor
sempre mostrado com um
ponto decimal.

Ponto decimal mostrado


somente se houver um parte
fracionria no-zero.

Se usado em conjunto com o


formato g ou G, o flag define
a presena de um ponto
decimal no valor de sada e
evita o truncamento de zeros
esquerda.
O flag # ignorado quando
usado em conjunto com
formatos c, d, i, u, s.

Ponto decimal mostrado


somente se houver um parte
fracionria no-zero. Zeros
esquerda so cortados.

largura
Um nmero decimal no negativo que define o nmero mnimo de smbolos de sada do valor
formatado. Se o nmero de sada de smbolos menor do que a largura especificada, o
correspondente nmero de espaos adicionado a partir da esquerda ou direita, dependendo do
alinhamento (flag -). Se houver o flag zero (0), o nmero correspondente de zeros adicionado
antes do valor de sada. Se o nmero de sada de smbolos de sada maior do que a largura
especificada, o valor de sada no cortado.
Se um asterisco (*) for especificado como width, um valor de tipo int deve ser indicado no lugar

2000-2015, MetaQuotes Software Corp.

852

Funes Comuns
correspondente da lista de parmetros passados. Ele ser usado para especificar a largura do valor
de sada.

preciso
Um nmero decimal no negativo que define a preciso de sada - nmero de dgitos aps o ponto
decimal. Como diferena da especificao de largura, a especificao de preciso pode truncar a
parte fracionrio com ou sem arredondamento.
O uso da especificao de preciso diferente para tipos de formato diferentes.
Tipos

Descrio

Comportamento Default

a, A

Especificao de preciso
define o nmero de dgitos
aps o ponto decimal.

Preciso padro 6.

c, C

No usado

d, i, u, o, x, X

Define o nmero mnimo de


dgitos de sada. Se o nmero
de dgitos em um parmetro
correspondente for menor que
esta preciso, zeros so
adicionados a esquerda do
valor de sada. O valor de
sada no cortado, se o
nmero de dgitos de sada
maior do que a preciso
apurada.

e, E, f

Define o nmero de dgitos de


sada aps o ponto decimal. O
ltimo dgito arredondado.

Preciso padro 6. Se a
definio de preciso for 0 ou a
parte decimal estiver ausente,
o ponto decimal no exibido.

g, G

Define o nmero mximo de


nmeros significativos.

6 nmeros significativos so
impressos.

s, S

Define o nmero de sada dos


smbolos de uma string. Se o
comprimento da string excede
ao apurado, a string e
cortada.

Toda a string a sada.

Preciso padro 1.

h | l | ll | I32 | I64
Especificao de tamanhos dos dados, passados como parmetro.
Tipo de Parmetro

Prefixo Usado

2000-2015, MetaQuotes Software Corp.

Especificador Conjunto de
Tipo

853

Funes Comuns

int

l (letra minscula L)

d, i, o, x, or X

uint

l (letra minscula L)

o, u, x, or X

long

ll (duas letras minsculas L)

d, i, o, x, or X

short

d, i, o, x, or X

ushort

o, u, x, or X

int

I32

d, i, o, x, or X

uint

I32

o, u, x, or X

long

I64

d, i, o, x, or X

ulong

I64

o, u, x, or X

tipo
Especificador de tipo o nico campo obrigatrio para a sada formatada.
Smbolo

Tipo

Formato de Sada

int

Smbolo
de
(Unicode)

int

Smbolo de tipo char (ANSI)

int

Inteiro decimal com sinal

int

Inteiro decimal com sinal

int

Inteiro octal sem sinal

int

Inteiro decimal sem sinal

int

Inteiro
hexadecimal
sinal, usando "abcdef"

sem

int

Inteiro
hexadecimal
sinal, usando "ABCDEF"

sem

double

Um valor real no formato [-]


d.dddde[sinal] ddd, onde d um dgito decimal, dddd - um
ou mais dgitos decimais, ddd
- um nmero de trs dgitos
que determina o tamanho do
exponente, sinal - mais ou
menos

double

Semelhando ao formato de e,
exceto que o sinal do
expoente impresso em letra
maiscula (E ao invs de e)

2000-2015, MetaQuotes Software Corp.

tipo

short

854

Funes Comuns

double

Um valor real no format [-]


dddd.dddd, onde dddd - um
ou mais dgitos decimais.
Nmero de dgitos exibidos
depois do ponto decimal
depende do tamanho do valor
do nmero. Nmero de dgitos
aps o ponto decimal depende
da preciso requerida.

double

Uma sada de valor real no


formato f ou edepende de
qual sada mais compacta.

double

Uma sada de valor real no


formato F ou Edepende de
qual sada mais compacta.

double

Um nmero real no formato


[]0xh.hhhh
pdd,
onde
h.hhhh mantissa na forma
de dgitos
hexadecimais,
usando "abcdef", dd - Um ou
mais dgitos de expoente.
Nmero de posies decimais

determinado
pela
especificao de preciso

double

Um nmero real no formato


[]0xh.hhhh
pdd,
onde
h.hhhh mantissa na forma
de dgitos
hexadecimais,
usando "abcdef", dd - Um ou
mais dgitos de expoente.
Nmero de posies decimais

determinado
pela
especificao de preciso

string

Sada da string

Ao invs de PrintFormat(), voc pode usar printf().


Exemplo:

2000-2015, MetaQuotes Software Corp.

855

Funes Comuns

void OnStart()
{
//--- trade server name
string server=AccountInfoString(ACCOUNT_SERVER);
//--- account number
int login=(int)AccountInfoInteger(ACCOUNT_LOGIN);
//--- long value output
long leverage=AccountInfoInteger(ACCOUNT_LEVERAGE);
PrintFormat("%s %d: leverage = 1:%I64d",
server,login,leverage);
//--- account currency
string currency=AccountInfoString(ACCOUNT_CURRENCY);
//--- double value output with 2 digits after the decimal point
double equity=AccountInfoDouble(ACCOUNT_EQUITY);
PrintFormat("%s %d: account equity = %.2f %s",
server,login,equity,currency);
//--- double value output with mandatory output of the +/- sign
double profit=AccountInfoDouble(ACCOUNT_PROFIT);
PrintFormat("%s %d: current result for open positions = %+.2f %s",
server,login,profit,currency);
//--- double value output with variable number of digits after the decimal point
double point_value=SymbolInfoDouble(_Symbol,SYMBOL_POINT);
string format_string=StringFormat("%%s: point value = %%.%df",_Digits);
PrintFormat(format_string,_Symbol,point_value);
//--- int value output
int spread=(int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
PrintFormat("%s: current spread in points = %d ",
_Symbol,spread);
//--- double value output in the scientific (floating point) format with 17 meaningful digits after
PrintFormat("DBL_MAX = %.17e",DBL_MAX);
//--- double value output in the scientific (floating point) format with 17 meaningful digits after
PrintFormat("EMPTY_VALUE = %.17e",EMPTY_VALUE);
//--- output using PrintFormat() with default accuracy
PrintFormat("PrintFormat(EMPTY_VALUE) = %e",EMPTY_VALUE);
//--- simple output using Print()
Print("Print(EMPTY_VALUE) = ",EMPTY_VALUE);
/* execution result
MetaQuotes-Demo 1889998: leverage = 1:100
MetaQuotes-Demo 1889998: account equity = 22139.86 USD
MetaQuotes-Demo 1889998: current result for open positions = +174.00 USD
EURUSD: point value = 0.00001
EURUSD: current spread in points = 12
DBL_MAX = 1.79769313486231570e+308
EMPTY_VALUE = 1.79769313486231570e+308
PrintFormat(EMPTY_VALUE) = 1.797693e+308
Print(EMPTY_VALUE) = 1.797693134862316e+308
*/
}

Tambm Veja
StringFormat, DoubleToString, Tipos reais(double,float)

2000-2015, MetaQuotes Software Corp.

856

Funes Comuns

ResetLastError
Define o valor do varivel predefinida _LastError para zero.
void ResetLastError();

Valor do Retorno
Sem valor de retorno.
Observao
Deve ser notado que a funo GetLastError() no zera a varivel _LastError. Geralmente a funo
ResetLastError() chamada antes de chamar uma funo, aps o qual um surgimento de erro
verificado.

2000-2015, MetaQuotes Software Corp.

857

Funes Comuns

ResourceCreate
Criar um recurso de imagem baseado em um conjunto de dados. Existe duas variantes da funo:
Criando um recurso baseado em um arquivo
bool ResourceCreate(
const string

resource_name,

// Nome do recurso

const string

path

// Uma caminho relativo para o arquivo

);

Criando um recurso baseado em um array de pixels


bool ResourceCreate(
const string

resource_name,

// Nome do recurso

const uint&

data[],

// Conjunto de dados em um array

uint

img_width,

uint

img_height,

uint

data_xoffset,

// O deslocamento horizontal para direita do canto superi

uint

data_yoffset,

// O deslocamento vertical para baixo do canto superior e

uint

data_width,

ENUM_COLOR_FORMAT color_format

// A largura do recurso de imagem

// A altura do recurso de imagem

// A largura total da imagem baseada no conjunto de dados


// Mtodo de processamento de cor

);

Parmetros
resource_name
[in] Nome do recurso.
data[][]
[in] Um array de uma dimenso ou duas dimenses de cores para criar uma imagem completa.
img_width
[in] A largura da rea da imagem retangular em pixels para ser colocada no recurso na forma de
uma imagem. Ela no pode ser maior que o valor data_width.
img_height
[in] A altura da rea da imagem retangular em pixels para ser colocada no recurso na forma de
uma imagem.
data_xoffset
[in] O deslocamento horizontal para direita da rea retangular da imagem.
data_yoffset
[in] O deslocamento vertical para baixa da rea retangular da imagem.
data_width
[in] Requerido somente para arrays de uma dimenso. Denota a largura total da imagem a partir
do conjunto de dados. Se data_width=0, assumido ser igual a img_width. Para arrays
bidimensionais o parmetro ignorado e assumido como sendo igual segunda dimenso do
array data[].
color_format

2000-2015, MetaQuotes Software Corp.

858

Funes Comuns
[in]
Mtodo de processamento
ENUM_COLOR_FORMAT.

de

cor,

partir

de

um

valor

da

enumerao

Valor do Retorno
Retorna true se bem sucedido, caso contrrio false. Para obter informaes sobre o erro chame a
funo GetLastError(). Os seguintes erros podem ocorrer:
4015 ERR_RESOURCE_NAME_DUPLICATED (nomes idnticos do recurso dinmico e esttico)
4016 ERR_RESOURCE_NOT_FOUND (o recurso no foi encontrado)
4017 ERR_RESOURCE_UNSUPPORTED_TYPE (este tipo de recurso no suportado)
4018 ERR_RESOURCE_NAME_IS_TOO_LONG (o nome do recurso muito longo)
Observao
Se a segunda verso da funo chamada para criar o mesmo recurso com largura, altura e
parmetros de deslocamento diferentes, ela no cria um novo recurso, mas simplesmente atualiza o
recurso existente.
A primeira verso da funo usada para carregar imagens e sons a partir de arquivos, e a segunda
verso usada somente para a criao dinmica de imagens.
Imagens devem estar no formato BMP com um profundidade de cor de 24 ou 32 bits. Sons podem
somente ser no formato WAV. O tamanho do recurso no deve exceder 16 Mb.

ENUM_COLOR_FORMAT
Identifier

Descrio

COLOR_FORMAT_XRGB_NOALPHA

O componente do canal alfa ignorado

COLOR_FORMAT_ARGB_RAW

Componentes de cor no so tratados pelo


terminal (devem ser corretamente definidos
pelo usurio)

COLOR_FORMAT_ARGB_NORMALIZE

Componentes de cor so tratados pelo terminal

Tambm Veja
Recursos, ObjectCreate(), ObjectSetString(), OBJPROP_BMPFILE

2000-2015, MetaQuotes Software Corp.

859

Funes Comuns

ResourceFree
A funo exclui dinamicamente recursos criados (liberando a memria alocada para ele).
bool ResourceFree(
const string resource_name

// nome do recurso

);

Parmetros
resource_name
[in] Nome do recurso deve comear com "::".
Valor de retorno
true se bem sucedido, caso contrrio false. Para obter informaes sobre o erro, chamar a funo
GetLastError().
Observao
ResourceFree() permite aos desenvolvedores de aplicativos MQL5 gerenciarem o consumo de
memria quando se trabalha ativamente com recursos. Objetos grficos vinculados ao recurso que
ser apagado da memria sero exibidos corretamente aps a sua excluso. No entanto, os objetos
grficos recm-criados ((OBJ_BITMAP e OBJ_BITMAP_LABEL) no podero utilizar o recurso
suprimido.
A funo deleta apenas recursos dinmicos criados pelo programa.
Tambm Veja
Recursos, ObjectCreate(), PlaySound(), ObjectSetString(), OBJPROP_BMPFILE

2000-2015, MetaQuotes Software Corp.

860

Funes Comuns

ResourceReadImage
A funo l os dados do recurso grfico criado pela funo ResourceCreate() ou salvo como arquivo
EX5 durante a compilao.
bool ResourceReadImage(
const string

resource_name,

uint&

data[],

uint&

width,

uint&

height,

// nome do recurso grfico para leitura


// array recebendo dados a partir do recurso

// para receber a largura da imagem no recurso


// para receber a altura da imagem no recurso

);

Parmetros
resource_name
[in] Nome do recurso grfico contendo uma imagem. Para acessar novamente seus prprios
recursos, o nome usado em formato abreviado "::resourcename". Se baixamos um recurso a
partir de uma compilao de arquivo EX5, o nome completo seria usado com o caminho relativo do
diretrio MQL5, nomes do arquivo e recurso - "path\\filename.ex5::resourcename".
data[][]
[in] Array uni- ou bi-dimensional para recebimento de dados do recurso grfico.
img_width
[out] Recurso grfico da largura da imagem em pixels.
img_height
[out] Recurso grfico da altura da imagem em pixels.
Valor de retorno
true se bem sucedido, caso contrrio false. Para obter informaes sobre o erro, chamar a funo
GetLastError().
Observao
Se array data[], ento ser usado paracriar um recurso grfico, formatos de cor
COLOR_FORMAT_ARGB_NORMALIZE ou COLOR_FORMAT_XRGB_NOALPHA devem ser utilizados.
Se array data[] bidimensional e sua segunda dimenso menor do que X (largura) tamanho do
recurso grfico,a funo ResourceReadImage() retorna falso e a leitura no executada. Mas se o
recurso existe, o tamanho da imagem real retornada pelos parmetros de largura e altura. Isto
permitir fazer outra tentativa para receber dados a partir do recurso.
Tambm Veja
Recursos, ObjectCreate(), ObjectSetString(), OBJPROP_BMPFILE

2000-2015, MetaQuotes Software Corp.

861

Funes Comuns

ResourceSave
Salva um recurso no arquivo especificado.
bool ResourceSave(
const string resource_name

// Nome do recurso

const string file_name

// Nome do arquivo

);

Parmetros
resource_name
[in] O nome do recurso deve comear com "::".
file_name
[in] O nome do arquivo relativo a MQL5\Files.
Valor do Retorno
true no caso de sucesso, caso contrrio, false. Para informaes do erro chamar GetLastError().
Observao
A funo sempre sobre-escreve um arquivo e cria todos os diretrios intermedirios requeridos no
nome do arquivo se necessrio.
Tambm Veja
Recursos, ObjectCreate(), PlaySound(), ObjectSetString(), OBJPROP_BMPFILE

2000-2015, MetaQuotes Software Corp.

862

Funes Comuns

SetUserError
Define a varivel predefinida _LastError para o valor igual a ERR_USER_ERROR_FIRST + user_error
void SetUserError(
ushort user_error,

// nmero do erro

);

Parmetros
user_error
[in] Nmero do erro definido pelo usurio.
Valor do Retorno
Sem valor de retorno.
Observao
Depois de um erro ser definido usando a funo SetUserError(user_error), GetLastError() retorna um
valor igual a ERR_USER_ERROR_FIRST + user_error.
Exemplo:
void OnStart()
{
//--- define o nmero de erro 65537=(ERR_USER_ERROR_FIRST +1)
SetUserError(1);
//--- obtm o ltimo cdigo de erro
Print("GetLastError = ",GetLastError());
/*
Result
GetLastError = 65537
*/
}

2000-2015, MetaQuotes Software Corp.

863

Funes Comuns

SendFTP
Envia um arquivo no endereo especificado na janela de configuraes da guia "FTP".
bool SendFTP(
string filename,

// nome do arquivo enviado

string ftp_path=NULL

// catlogo FTP

);

Parmetros
filename
[in] Nome do arquivo enviado.
ftp_path=NULL
[in] Catlogo FTP. Se um diretrio no for especificado, o diretrio descrito nas configuraes
usado.
Valor do Retorno
Em caso de falha retorna false.
Observao
O arquivo enviado deve estar localizado na pasta terminal_directory\MQL5\files ou em suas
subpastas. O envio no ocorre se o endereo FTP e/ou a senha de acesso no estiverem
especificados nas configuraes.
SendFTP() function does not work in the Strategy Tester.

2000-2015, MetaQuotes Software Corp.

864

Funes Comuns

SendNotification
Envia notificaes push para terminais mveis, cujo MetaQuotes ID esto especificados na guia
"Notificaes".
bool SendNotification(
string text

// Texto da notificao

);

Parmetros
text
[in] O texto da notificao. O comprimento da mensagem no deve exceder 255 caracteres.
Valor do Retorno
true se uma notificao foi enviada com sucesso do terminal; em caso de falha retorna false. Ao
verificar aps uma falha de envio de notificao, GetLastError () pode retornar um dos seguintes
erros:
4515 ERR_NOTIFICATION_SEND_FAILED,
4516 ERR_NOTIFICATION_WRONG_PARAMETER,
4517 ERR_NOTIFICATION_WRONG_SETTINGS,
4518 ERR_NOTIFICATION_TOO_FREQUENT.
Observao
Rgidas restries de uso esto definidas para a funo SendNotification(): no mais que 2
chamadas por segundo e no mais que 10 chamadas por minuto. O monitoramento da freqncia de
uso dinmico. A funo pode ser desabilitada em caso de violao da restrio.
SendNotification() function does not work in the Strategy Tester.

2000-2015, MetaQuotes Software Corp.

865

Funes Comuns

SendMail
Envia um email no endereo especificado na janela de configuraes da guia "Email".
bool SendMail(
string subject,

// cabealho

string some_text

// texto de e-mail

);

Parmetros
subject
[in] Cabealho do email.
some_text
[in] Corpo do email.
Valor do Retorno
true se um email colocado na fila de envio, caso contrrio - false.
Observao
O envio de emails pode ser proibido em configuraes, o endereo de email pode ser omitido
tambm. Para informaes do erro chamar GetLastError().
SendMail() function does not work in the Strategy Tester.

2000-2015, MetaQuotes Software Corp.

866

Funes Comuns

Sleep
A funo suspende a execuo do Expert Advisor corrente ou script por um intervalo especificado.
void Sleep(
int milliseconds

// intervalo

);

Parmetros
milliseconds
[in] Intervalo de atraso em milissegundos.
Valor do Retorno
Sem valor de retorno.
Observao
A funo Sleep() no pode ser chamada por indicadores customizados, porque indicadores so
executados na thread de interface e no devem ser atrasados. A funo foi incorporada para
verificar flag interrompido a cada 0.1 segundos.

2000-2015, MetaQuotes Software Corp.

867

Funes Comuns

TerminalClose
A funo ordena o terminal a finalizar a operao.
bool TerminalClose(
int ret_code

// cdigo de fechamento do terminal cliente

);

Parmetros
ret_code
[in] Cdigo de retorno, retornado pelo processo do terminal cliente na finalizao da operao.
Valor do Retorno
A funo retorna true para sucesso, caso contrrio - false.
Observao
A funo TerminalClose() no interrompe o terminal imediatamente, ela apenas ordena o terminal a
finalizar sua operao.
O cdigo de um Expert Advisor que chamou TerminalClose() deve ter todos os arranjos para a
finalizao imediata (por exemplo, todos os arquivo previamente abertos devem ser fechados no
modo normal. A chamada desta funo deve ser seguida pelo operador return.
O parmetro ret_code permite indicar o cdigo de retorno necessrio para analise dos motivos da
finalizao de programa da operao do terminal ao inicializ-lo a partir da linha de comando.
Exemplo:
//--- parmetros de entrada
input int

tiks_before=500; // nmero de ticks at finalizao

input int

pips_to_go=15;

// distancia em pips

input int

seconds_st=50;

// nmero de segundos dados para o Expert Advisor

//--- globais
datetime

launch_time;

int

tick_counter=0;

//+------------------------------------------------------------------+
//| Funo de Desinicializao do Expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--Print(__FUNCTION__," cdigo do motivo = ",reason);
Comment("");
}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

//+------------------------------------------------------------------+
void OnTick()
{
static double first_bid=0.0;

2000-2015, MetaQuotes Software Corp.

868

Funes Comuns
MqlTick

tick;

double

distance;

//--SymbolInfoTick(_Symbol,tick);
tick_counter++;
if(first_bid==0.0)
{
launch_time=tick.time;
first_bid=tick.bid;
Print("first_bid =",first_bid);
return;
}
//--- distncia do preo em pips
distance=(tick.bid-first_bid)/_Point;
//--- exibe uma notificao para rastrear a operao do EA
string comm="A partir do momento da inicial:\r\n\x25CF segundos decorridos: "+
IntegerToString(tick.time-launch_time)+" ;"+
"\r\n\x25CF ticks recebidos: "+(string)tick_counter+" ;"+
"\r\n\x25CF preo passou em pontos: "+StringFormat("%G",distance);
Comment(comm);
//--- seo para verificar condio para fechar o terminal
if(tick_counter>=tiks_before)
TerminalClose(0);

// sada pela contador de tick

if(distance>pips_to_go)
TerminalClose(1);

// subida pelo nmero de pips igual ao pips_to_go

if(distance<-pips_to_go)
TerminalClose(-1);

// descida pelo nmero de pips igual ao pips_to_go

if(tick.time-launch_time>seconds_st)
TerminalClose(100);

// finalizao por timeout

//--}

Tambm Veja
Execuo de programa, Erros de execuo, Motivos para desinicializao

2000-2015, MetaQuotes Software Corp.

869

Funes Comuns

TesterStatistics
A funo retorna o valor do parmetro estatstico especificado calculado baseado em resultados de
teste.
double TesterStatistics(
ENUM_STATISTICS statistic_id

// ID

);

Parmetros
statistic_id
[in] O ID do parmetro estatstico a partir da enumerao ENUM_STATISTICS.
Valor do Retorno
O valor do parmetro estatstico proveniente de resultados de teste.
Observao
A funo pode ser chamada de dentro de OnTester() ou OnDeinit() no Provador de Estratgias. Nos
outros casos o resultado indefinido.

2000-2015, MetaQuotes Software Corp.

870

Funes Comuns

TesterWithdrawal
Funo especial para emular a operao de saque de dinheiro no processo de teste. Pode ser usado em
alguns sistemas de gerenciamento de ativos.
bool TesterWithdrawal(
double money

// a soma para sacar

);

Parmetros
money
[in] A soma de dinheiro que ns precisamos sacar (no moeda de depsito).
Valor do Retorno
Com sucesso, retorna verdadeiro (true), do contrrio - falso.

2000-2015, MetaQuotes Software Corp.

871

Funes Comuns

WebRequest
The function sends an HTTP request to a specified server. The function has two versions:
1. Sending simple requests of type "key=value" using the header Content-Type: application/x-wwwform-urlencoded.
int WebRequest(
const string

method,

// HTTP method

const string

url,

// URL

const string

cookie,

// cookie

const string

referer,

// referer

int

timeout,

const char

&data[],

int

data_size,

char

&result[],

// an array containing server response data

string

&result_headers

// headers of server response

// timeout
// the array of the HTTP message body
// data[] array size in bytes

);

2. Sending a request of any type specifying the custom set of headers for a more flexible interaction
with various Web services.
int WebRequest(
const string

method,

// HTTP method

const string

url,

// URL

const string

headers,

int

timeout,

const char

&data[],

// the array of the HTTP message body

char

&result[],

// an array containing server response data

string

&result_headers

// headers of server response

// headers

// timeout

);

Parameters
method
[in] HTTP method.
url
[in] URL.
headers
[in] Request headers of type "key: value", separated by a line break "\r\n".
cookie
[in] Cookie value.
referer
[in] Value of the Referer header of the HTTP request.
timeout
[in] Timeout in milliseconds.

2000-2015, MetaQuotes Software Corp.

872

Funes Comuns
data[]
[in] Data array of the HTTP message body.
data_size
[in] Size of the data[] array.
result[]
[out] An array containing server response data.
result_headers
[out] Server response headers.
Returned value
HTTP server response code or -1 for an error.
Note
To use the WebRequest() function, add the addresses of the required servers in the list of allowed
URLs in the "Expert Advisors" tab of the "Options" window. Server port is automatically selected on
the basis of the specified protocol - 80 for "http://" and 443 for "https://".
The WebRequest() function is synchronous, which means its breaks the program execution and waits
for the response from the requested server. Since the delays in receiving a response can be large,
the function is not available for calls from the indicators, because indicators run in a common thread
shared by all indicators and charts on one symbol. Indicator performance delay on one of the charts
of a symbol may stop updating of all charts of the same symbol.
The function can be called only from Expert Advisors and scripts, as they run in their own execution
threads. If you try to call the function from an indicator, GetLastError() will return error 4014
"Function is not allowed".
WebRequest() cannot be executed in the Strategy Tester.
An example of using the first version of the WebRequest () function:
void OnStart()
{
string cookie=NULL,headers;
char post[],result[];
int res;
//--- to enable access to the server, you should add URL "https://www.google.com/finance"
//--- in the list of allowed URLs (Main Menu->Tools->Options, tab "Expert Advisors"):
string google_url="https://www.google.com/finance";
//--- Reset the last error code
ResetLastError();
//--- Loading a html page from Google Finance
int timeout=5000; //--- Timeout below 1000 (1 sec.) is not enough for slow Internet connection
res=WebRequest("GET",google_url,cookie,NULL,timeout,post,0,result,headers);
//--- Checking errors
if(res==-1)
{
Print("Error in WebRequest. Error code

=",GetLastError());

2000-2015, MetaQuotes Software Corp.

873

Funes Comuns

//--- Perhaps the URL is not listed, display a message about the necessity to add the address

MessageBox("Add the address '"+google_url+"' in the list of allowed URLs on tab 'Expert Advis
}
else
{
//--- Load successfully

PrintFormat("The file has been successfully loaded, File size =%d bytes.",ArraySize(result));
//--- Save the data to a file
int filehandle=FileOpen("GoogleFinance.htm",FILE_WRITE|FILE_BIN);
//--- Checking errors
if(filehandle!=INVALID_HANDLE)
{
//--- Save the contents of the result[] array to a file
FileWriteArray(filehandle,result,0,ArraySize(result));
//--- Close the file
FileClose(filehandle);
}
else Print("Error in FileOpen. Error code=",GetLastError());
}
}

An example of using the second version of the WebRequest() function:


#property link

"http://www.mql5.com"

#property version

"1.00"

#property strict
#property script_show_inputs
#property description "Sample script posting a user message "
#property description "on the wall on mql5.com"
input string InpLogin

="";

//Your MQL5.com account

input string InpPassword="";

//Your account password

input string InpFileName="EURUSDM5.png"; //An image in folder MQL5/Files/


input string InpFileType="image/png";

//Correct mime type of the image

//+------------------------------------------------------------------+
//| Posting a message with an image on the wall at mql5.com

//+------------------------------------------------------------------+
bool PostToNewsFeed(string login,string password,string text,string filename,string filetype)
{
int

res;

// To receive the operation execution result

char

data[];

// Data array to send POST requests

char

file[];

// Read the image here

string str="Login="+login+"&Password="+password;
string auth,sep="-------Jyecslin9mp8RdKV"; // multipart data separator
//--- A file is available, try to read it
if(filename!=NULL && filename!="")
{
res=FileOpen(filename,FILE_READ|FILE_BIN);

2000-2015, MetaQuotes Software Corp.

874

Funes Comuns
if(res<0)
{
Print("Error opening the file \""+filename+"\"");
return(false);
}
//--- Read file data
if(FileReadArray(res,file)!=FileSize(res))
{
FileClose(res);
Print("Error reading the file \""+filename+"\"");
return(false);
}
//--FileClose(res);
}
//--- Create the body of the POST request for authorization
ArrayResize(data,StringToCharArray(str,data,0,WHOLE_ARRAY,CP_UTF8)-1);
//--- Resetting error code
ResetLastError();
//--- Authorization request
res=WebRequest("POST","https://www.mql5.com/en/auth_login",NULL,0,data,data,str);
//--- If authorization failed
if(res!=200)
{
Print("Authorization error #"+(string)res+", LastError="+(string)GetLastError());
return(false);
}
//--- Read the authorization cookie from the server response header
res=StringFind(str,"Set-Cookie: auth=");
//--- If cookie not found, return an error
if(res<0)
{
Print("Error, authorization data not found in the server response (check login/password)");
return(false);
}
//--- Remember the authorization data and form the header for further requests
auth=StringSubstr(str,res+12);
auth="Cookie: "+StringSubstr(auth,0,StringFind(auth,";")+1)+"\r\n";
//--- If there is a data file, send it to the server
if(ArraySize(file)!=0)
{
//--- Form the request body
str="--"+sep+"\r\n";

str+="Content-Disposition: form-data; name=\"attachedFile_imagesLoader\"; filename=\""+filena


str+="Content-Type: "+filetype+"\r\n\r\n";
res =StringToCharArray(str,data);
res+=ArrayCopy(data,file,res-1,0);
res+=StringToCharArray("\r\n--"+sep+"--\r\n",data,res-1);
ArrayResize(data,ArraySize(data)-1);

2000-2015, MetaQuotes Software Corp.

875

Funes Comuns
//--- Form the request header
str=auth+"Content-Type: multipart/form-data; boundary="+sep+"\r\n";
//--- Reset error code
ResetLastError();
//--- Request to send an image file to the server
res=WebRequest("POST","https://www.mql5.com/upload_file",str,0,data,data,str);
//--- check the request result
if(res!=200)
{

Print("Error sending a file to the server #"+(string)res+", LastError="+(string)GetLastErr


return(false);
}
//--- Receive a link to the image uploaded to the server
str=CharArrayToString(data);
if(StringFind(str,"{\"Url\":\"")==0)
{
res

=StringFind(str,"\"",8);

filename=StringSubstr(str,8,res-8);
//--- If file uploading fails, an empty link will be returned
if(filename=="")
{
Print("File sending to server failed");
return(false);
}
}
}
//--- Create the body of a request to post an image on the server
str ="--"+sep+"\r\n";
str+="Content-Disposition: form-data; name=\"content\"\r\n\r\n";
str+=text+"\r\n";
//--- The languages in which the post will be available on mql5.com
str+="--"+sep+"\r\n";
str+="Content-Disposition: form-data; name=\"AllLanguages\"\r\n\r\n";
str+="on\r\n";
//--- If the picture has been uploaded on the server, pass its link
if(ArraySize(file)!=0)
{
str+="--"+sep+"\r\n";
str+="Content-Disposition: form-data; name=\"attachedImage_0\"\r\n\r\n";
str+=filename+"\r\n";
}
//--- The final string of the multipart request
str+="--"+sep+"--\r\n";
//--- Out the body of the POST request together in one string
StringToCharArray(str,data,0,WHOLE_ARRAY,CP_UTF8);
ArrayResize(data,ArraySize(data)-1);
//--- Prepare the request header
str=auth+"Content-Type: multipart/form-data; boundary="+sep+"\r\n";
//--- Request to post a message on the user wall at mql5.com

2000-2015, MetaQuotes Software Corp.

876

Funes Comuns
res=WebRequest("POST","https://www.mql5.com/ru/users/"+login+"/wall",str,0,data,data,str);
//--- Return true for successful execution
return(res==200);
}
//+------------------------------------------------------------------+
//| Script program start function

//+------------------------------------------------------------------+
void OnStart()
{

//--- Post a message on mql5.com, including an image, the path to which is taken from the InpFileNa
PostToNewsFeed(InpLogin,InpPassword,"Checking the expanded version of WebRequest\r\n"

"(This message has been posted by the WebRequest.mq5 script)",InpFileName,InpFile


}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

877

Funes Comuns

ZeroMemory
A funo redefine uma varivel passada para ela por referncia.
void ZeroMemory(
void& variable

// redefine varivel

);

Parmetros
variable
[in] [out] Varivel passada por referncia, que voc quer redefinir (inicializar com zeros).
Valor do Retorno
Sem valor de retorno.
Observao
Se o parmetro da funo uma string, a chamada ser equivalente a indicar NULL como seu valor.
Para tipos simples e seus arrays, bem como para estruturas/classes consistindo de tais tipos, isso
uma simples redefinio.
Para objetos contendo strings e arrays dinmicos, ZeroMemory() chamada para cada elemento.
Para quaisquer arrays no protegidos pelo modificador const, todos os elementos so zerados.
Para arrays de objetos complexos, ZeroMemory() chamada para cada elemento.
ZeroMemory() no pode ser aplicada a classes com membros protegidos ou herana.

2000-2015, MetaQuotes Software Corp.

878

Funes para Array

Grupo de Funes para Trabalhar com Arrays


Arrays podem ter no mximo quatro dimenses. Cada dimenso indexada de 0 a dimension_size-1.
No caso particular de um array de uma dimenso de 50 elementos, a chamada do primeiro elemento
aparece como array[0], do ltimo elemento - como array[49].
Funo

Ao

ArrayBsearch

Retorna o ndice do primeiro elemento


encontrado na primeira dimenso do array

ArrayCopy

Copia um array em outro array

ArrayCompare

Retorna o resultado da comparao entre dois


arrays de tipos simples ou estruturas
personalizados sem objetos complexos

ArrayFree

Libera buffer de qualquer array dinmico e


define o tamanho da dimenso zero em 0.

ArrayGetAsSeries

Verifica a direo da indexao de um array

ArrayInitialize

Define todos os elementos


numrico para um nico valor

ArrayFill

Preenche um array com o valor especificado

ArrayIsSeries

Verifica se um array uma srie de tempo

ArrayIsDynamic

Verifica se um array dinmico

ArrayMaximum

Busca por um elemento com o valor mximo

ArrayMinimum

Busca por um elemento com o valor mnimo

ArrayRange

Retorna o nmero de elementos na dimenso


especifica do array

ArrayResize

Define o novo tamanho da primeira dimenso


do array

ArraySetAsSeries

Define a direo de indexao de um array

ArraySize

Retorna o nmero de elemento no array

ArraySort

Ordena arrays nmeros pela primeira dimenso

2000-2015, MetaQuotes Software Corp.

de um array

879

Funes para Array

ArrayBsearch
Searches for a specified value in a multidimensional numeric array sorted ascending. Search is
performed through the elements of the first dimension.
Para buscar em um array de tipo double
int ArrayBsearch(
const double&

array[],

double

// array para busca

value

// o que pesquisada por

);

Para buscar em um array de tipo float


int ArrayBsearch(
const float&

array[],

float

// array para busca

value

// o que pesquisada por

);

Para buscar em um array de tipo long


int ArrayBsearch(
const long&

array[],

long

value

// array para busca


// o que pesquisada por

);

Para buscar em um array de tipo int


int ArrayBsearch(
const int&

array[],

int

value

// array para busca


// o que pesquisada por

);

Para buscar em um array de tipo short


int ArrayBsearch(
const short&

array[],

short

// array para busca

value

// o que pesquisada por

);

Para buscar em um array de tipo char


int ArrayBsearch(
const char&
char

array[],
value

// array para busca


// o que pesquisada por

);

Parmetros
array[]
[in] Array numrico para busca.
value

2000-2015, MetaQuotes Software Corp.

880

Funes para Array


[in] Valor para busca.
Valor do Retorno
A funo retorna o ndice de um elemento encontrado. Se o valor desejado no for encontrado, a
funo retorna o ndice de um elemento mais prximo em valor.
Observao
A busca binria processa somente arrays ordenados. Para ordenar arrays numricos use a funo
ArraySort().
Exemplo:
#property description "Script baseado no indicador RSI para visualizao de dados"
#property description "quantas vezes o mercado ficou em"
#property description "reas sobre-compradas e sobre-vendidas em intervalo de tempo especfico."
//--- mosta a janela dos parmetros de entrada quando lanado o script
#property script_show_inputs
//--- parmetros de entrada
input int

InpMAPeriod=14;

// Perodo de mdia mvel

input ENUM_APPLIED_PRICE InpAppliedPrice=PRICE_CLOSE;

// Tipo de preo

input double

InpOversoldValue=30.0;

// Nvel sobre-vendido

input double

InpOverboughtValue=70.0;

// Nvel sobre-comprado

input datetime

InpDateStart=D'2012.01.01 00:00';

// Data de incio para anlise

input datetime

InpDateFinish=D'2013.01.01 00:00'; // Data final para anlise

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
double rsi_buff[]; // array do valores do indicador
int

size=0;

// tamanho de array

//--- receber a manipulao do indicador RSI


ResetLastError();
int rsi_handle=iRSI(Symbol(),Period(),InpMAPeriod,InpAppliedPrice);
if(rsi_handle==INVALID_HANDLE)
{
//--- falha para receber a manipulao do indicador

PrintFormat("Manipulador de indicator recebido com erro. Cdigo de erro = %d",GetLastError())


return;
}
//--- fica no loop, at que o indicador calcula todos os seus valores
while(BarsCalculated(rsi_handle)==-1)
{
//--- sair se o indicador concluir foradamente a operao de script
if(IsStopped())
return;
//--- uma pausa para permitir que o indicador calcule todos os seus valores
Sleep(10);
}

2000-2015, MetaQuotes Software Corp.

881

Funes para Array


//--- copiar os valores do indicador para um determinado perodo de tempo
ResetLastError();
if(CopyBuffer(rsi_handle,0,InpDateStart,InpDateFinish,rsi_buff)==-1)
{
PrintFormat("Falha para copiar valores do indicador. Cdigo de erro = %d",GetLastError());
return;
}
//--- recebe o tamanho do array
size=ArraySize(rsi_buff);
//--- classificar o array
ArraySort(rsi_buff);
//--- descobrir o tempo (em termos percentuais) que o mercado ficou na rea sobre-vendida
double ovs=(double)ArrayBsearch(rsi_buff,InpOversoldValue)*100/(double)size;
//--- descobrir o tempo (em termos percentuais) que o mercado ficou na rea sobre-comprada
double ovb=(double)(size-ArrayBsearch(rsi_buff,InpOverboughtValue))*100/(double)size;
//--- formar as strings para exibir os dados
string str="A partir de "+TimeToString(InpDateStart,TIME_DATE)+" para "
+TimeToString(InpDateFinish,TIME_DATE)+" o mercado ficou:";
string str_ovb="em rea sobre-comprada "+DoubleToString(ovb,2)+"% do tempo";
string str_ovs="em rea sobre-vendida "+DoubleToString(ovs,2)+"% do tempo";
//--- mostrar os dados no grfico
CreateLabel("topo",5,60,str,clrDodgerBlue);
CreateLabel("sobre-comprado",5,35,str_ovb,clrDodgerBlue);
CreateLabel("sobre-vendido",5,10,str_ovs,clrDodgerBlue);
//--- redesenhar o grfico
ChartRedraw(0);
//--- pausa
Sleep(10000);
}
//+------------------------------------------------------------------+
//| Mostrar comentrio no canto inferior esquerdo do grfico

//+------------------------------------------------------------------+
void CreateLabel(const string name,const int x,const int y,
const string str,const color clr)
{
//--- cria um rtulo (label)
ObjectCreate(0,name,OBJ_LABEL,0,0,0);
//--- colocar a etiqueta no canto inferior esquerdo
ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_LOWER);
//--- alterar a posio do ponto de ancoragem
ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_LEFT_LOWER);
//--- distncia a partir do ponto de ancoragem na direo X
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
//--- distncia a partir do ponto de ancoragem na direo Y
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- texto do rtulo
ObjectSetString(0,name,OBJPROP_TEXT,str);
//--- cor do texto
ObjectSetInteger(0,name,OBJPROP_COLOR,clr);

2000-2015, MetaQuotes Software Corp.

882

Funes para Array


//--- tamanho do texto
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
}

2000-2015, MetaQuotes Software Corp.

883

Funes para Array

ArrayCopy
Copia um array em um outro array.
int ArrayCopy(
void&

dst_array[],

// array de destino

const void& src_array[],

// array de origem

int

dst_start=0,

// ndice de incio do array destino a partir do qual se escre

int

src_start=0,

// primeiro ndice de um array de origem

int

count=WHOLE_ARRAY

// nmero de elementos

);

Parmetros
dst_array[]
[out] Array destino
src_array[]
[in] Array fonte
dst_start=0
[in] ndice de incio do array destino. Por default, o ndice de incio 0.
src_start=0
[in] ndice de incio para o array fonte. Por default, o ndice de incio 0.
count=WHOLE_ARRAY
[in] Nmero de elementos que devem ser copiados. Por padro, todo conjunto array copiado
(count=WHOLE_ARRAY).
Valor do Retorno
Retorna o nmero de elementos copiados.
Observao
Se count<0 ou count>src_size-src_start, toda a parte restante do array copiada. Arrays so
copiados da esquerda para direita. Para arrays de srie, a posio de incio corretamente ajustada
para copiar da esquerda para direita. Se um array copiado nele mesmo, o resultado indefinido.
Se os arrays so de tipos diferentes, durante a cpia a funo tenta transformar cada elemento do
array fonte para o tipo do array destino. Um array de string pode ser copiado somente em um array
de string. Arrays de classes e estruturas contendo objetos que requerem inicializao no so
copiados. Um array de estruturas pode ser copiado somente em um array do mesmo tipo.
For dynamic arrays with indexing as in timeseries, the size of a destination array is automatically
increased to the amount of copied data (if the latter exceeds the array size). The destination array
size is not decreased automatically.
Exemplo:
#property description "O indicador destaca os candlesticks que so local"
#property description "altos e baixos. Comprimento do intervalo para encontrar"
#property description "valores extremos usando parmetros de entrada."

2000-2015, MetaQuotes Software Corp.

884

Funes para Array


//--- configuraes do indicador
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots

//---- plotar
#property indicator_label1

"Extremums"

#property indicator_type1

DRAW_COLOR_CANDLES

#property indicator_color1

clrLightSteelBlue,clrRed,clrBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- constante pr-definida


#define INDICATOR_EMPTY_VALUE 0.0
//--- parmetros de entrada
input int InpNum=4; // Meio intervalo de comprimento
//--- buffers do indicador
double ExtOpen[];
double ExtHigh[];
double ExtLow[];
double ExtClose[];
double ExtColor[];
//--- variveis globais
int

ExtStart=0; // ndice do primeiro candlestick que no um extremo

int

ExtCount=0; // nmero de no extremos no intervalo

//+------------------------------------------------------------------+
//| Preenchimento dos candlesticks no extremos

//+------------------------------------------------------------------+
void FillCandles(const double &open[],const double &high[],
const double &low[],const double &close[])
{
//--- preencher os candlesticks
ArrayCopy(ExtOpen,open,ExtStart,ExtStart,ExtCount);
ArrayCopy(ExtHigh,high,ExtStart,ExtStart,ExtCount);
ArrayCopy(ExtLow,low,ExtStart,ExtStart,ExtCount);
ArrayCopy(ExtClose,close,ExtStart,ExtStart,ExtCount);
}
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,ExtOpen);
SetIndexBuffer(1,ExtHigh);
SetIndexBuffer(2,ExtLow);
SetIndexBuffer(3,ExtClose);
SetIndexBuffer(4,ExtColor,INDICATOR_COLOR_INDEX);
//--- especificar o valor que no apresentado
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,INDICATOR_EMPTY_VALUE);
//--- especificar os nomes dos buffers do indicador para exibir na janela de dados

2000-2015, MetaQuotes Software Corp.

885

Funes para Array


PlotIndexSetString(0,PLOT_LABEL,"Open;High;Low;Close");
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- definir a indexao direta em sries de tempo
ArraySetAsSeries(open,false);
ArraySetAsSeries(high,false);
ArraySetAsSeries(low,false);
ArraySetAsSeries(close,false);
//--- varivel da barra para iniciar clculo
int start=prev_calculated;
//--- clculo no realizado pela primeira InpNum*2 barras
if(start==0)
{
start+=InpNum*2;
ExtStart=0;
ExtCount=0;
}
//--- se o bar acabou de se formar, verifique o seguinte extremo potencial
if(rates_total-start==1)
start--;
//--- ndice da barra a ser verificado para o extremo
int ext;
//--- valor do indicador para clculo do loop
for(int i=start;i<rates_total-1;i++)
{
//--- inicialmente num bar sem desenhar
ExtOpen[i]=0;
ExtHigh[i]=0;
ExtLow[i]=0;
ExtClose[i]=0;
//--- ndice extremo para verificao
ext=i-InpNum;
//--- verificar o mximo local
if(IsMax(high,ext))

2000-2015, MetaQuotes Software Corp.

886

Funes para Array


{
//--- destacar um candlestick extremo
ExtOpen[ext]=open[ext];
ExtHigh[ext]=high[ext];
ExtLow[ext]=low[ext];
ExtClose[ext]=close[ext];
ExtColor[ext]=1;
//--- destacar outros candles at o extremo com uma cor neutra
FillCandles(open,high,low,close);
//--- alterar as cores variveis
ExtStart=ext+1;
ExtCount=0;
//--- passar para a prxima iterao
continue;
}
//--- verifique o mnimo local
if(IsMin(low,ext))
{
//--- destacar um candlestick extremo
ExtOpen[ext]=open[ext];
ExtHigh[ext]=high[ext];
ExtLow[ext]=low[ext];
ExtClose[ext]=close[ext];
ExtColor[ext]=2;
//--- destacar outros candles at o extremo com uma cor neutra
FillCandles(open,high,low,close);
//--- alterar os valores das variveis
ExtStart=ext+1;
ExtCount=0;
//--- passar para a prxima iterao
continue;
}
//--- aumentar o nmero de no extremos no intervalo
ExtCount++;
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Verificar se o atual elemento array um local mximo (high)

//+------------------------------------------------------------------+
bool IsMax(const double &price[],const int ind)
{
//--- varivel do incio do intervalo
int i=ind-InpNum;
//--- final do perodo do intervalo
int finish=ind+InpNum+1;
//--- verificar a primeiro metade do intervalo
for(;i<ind;i++)

2000-2015, MetaQuotes Software Corp.

887

Funes para Array


{
if(price[ind]<=price[i])
return(false);
}
//--- verificar a segunda metade do intervalo
for(i=ind+1;i<finish;i++)
{
if(price[ind]<=price[i])
return(false);
}
//--- este um extremo
return(true);
}
//+------------------------------------------------------------------+
//| Verificar se o atual elemento array um local mnimo (low)

//+------------------------------------------------------------------+
bool IsMin(const double &price[],const int ind)
{
//--- varivel do incio do intervalo
int i=ind-InpNum;
//--- varivel do final do intervalo
int finish=ind+InpNum+1;
//--- verificar a primeiro metade do intervalo
for(;i<ind;i++)
{
if(price[ind]>=price[i])
return(false);
}
//--- verificar a segunda metade do intervalo
for(i=ind+1;i<finish;i++)
{
if(price[ind]>=price[i])
return(false);
}
//--- este um extremo
return(true);
}

2000-2015, MetaQuotes Software Corp.

888

Funes para Array

ArrayCompare
A funo retorna o resultado da comparao de dois arrays de mesmo tipo. Pode ser usado para
comparar arrays de tipos simples ou estruturas customizadas sem objetos complexos, isto ,
estruturas customizadas que no contm strings, arrays dinmicos, classes e outras estruturas com
objetos complexos.
int ArrayCompare(
const void& array1[],

// primeiro array

const void& array2[],

// segundo array

int

start1=0,

// deslocamento inicial no primeiro array

int

start2=0,

// deslocamento inicial no segundo array

int

count=WHOLE_ARRAY

// nmero de elementos para comparao

);

Parmetros
array1[]
[in] Primeiro array.
array2[]
[in] Segundo array.
start1=0
[in] O ndice inicial do elemento no primeiro array, a partir do qual a comparao comea. O
ndice de comeo default - 0.
start2=0
[in] O ndice inicial do elemento no segundo array, a partir do qual a comparao comea. O
ndice de comeo default - 0.
count=WHOLE_ARRAY
[in] Nmero de elementos a ser comparados. Todos os elementos de ambos os arrays participam
da comparao por default (count=WHOLE_ARRAY).
Valor de retorno
-1, se array1[] menos que array2[]
0, se array1[] igual a array2[]
1, se array1[] mais que array2[]
-2, se um erro ocorrer devido a incompatibilidade dos tipos dos arrays comparados ou se os valores
start1, start2 ou count levarem a cair para fora do array.
Observao
A funo no retornar 0 (os arrays no sero considerados iguais) se os arrays diferirem em
tamanho e count=WHOLE_ARRAY para o caso em que um array um subconjunto fiel do outro.
Neste caso, o resultado da comparao de tamanhos destes arrays iro retornar: -1, se o tamanho
de array1[] for menor que o tamanho de array2[] , caso contrrio 1.

2000-2015, MetaQuotes Software Corp.

889

Funes para Array

ArrayFree
Libera um buffer de qualquer array dinmico e define o tamanho da dimenso zero para 0.
void ArrayFree(
void& array[]

// array

);

Parmetros
array[]
[in] Array dinmico.
Valor do Retorno
Sem valor de retorno.
Observao
A necessidade de usar a funo ArrayFree() pode no aparecer com muita freqncia, considerando
que toda a memria utilizada liberada de uma s vez e o principal trabalho com os arrays
compreende o acesso aos buffers dos indicadores. Os tamanhos dos buffers so controlados
automaticamente pelo subsistema executivo do terminal.
No caso, necessrio controlar manualmente a memria no ambiente dinmico complexo da
aplicao, a funo ArrayFree() permite que os usurios possam liberar a memria ocupada pelo
array dinmico desnecessrio de forma direta e imediata.
Exemplo:
#include <Controls\Dialog.mqh>
#include <Controls\Button.mqh>
#include <Controls\Label.mqh>
#include <Controls\ComboBox.mqh>
//--- constantes predefinidas
#define X_START 0
#define Y_START 0
#define X_SIZE 280
#define Y_SIZE 300
//+------------------------------------------------------------------+
//| Uma classe para trabalhar com uma memria

//+------------------------------------------------------------------+
class CMemoryControl : public CAppDialog
{
private:
//--- tamanho de array
int

m_arr_size;

//--- arrays
char

m_arr_char[];

int

m_arr_int[];

float

m_arr_float[];

double

m_arr_double[];

2000-2015, MetaQuotes Software Corp.

890

Funes para Array


long

m_arr_long[];

//--- rtulos
CLabel

m_lbl_memory_physical;

CLabel

m_lbl_memory_total;

CLabel

m_lbl_memory_available;

CLabel

m_lbl_memory_used;

CLabel

m_lbl_array_size;

CLabel

m_lbl_array_type;

CLabel

m_lbl_error;

CLabel

m_lbl_change_type;

CLabel

m_lbl_add_size;

//--- botes
CButton

m_button_add;

CButton

m_button_free;

//--- caixas de combinao


CComboBox

m_combo_box_step;

CComboBox

m_combo_box_type;

//--- valor atual do tipo array da caixa de combinao


int

m_combo_box_type_value;

public:
CMemoryControl(void);
~CMemoryControl(void);
//--- mtodo de criao de objeto de classe
virtual bool

Create(const long chart,const string name,const int subwin,const int x1,const

//--- manipulador de eventos grfico


virtual bool

OnEvent(const int id,const long &lparam,const double &dparam,const string &spa

protected:
//--- cria um rtulos
bool

CreateLabel(CLabel &lbl,const string name,const int x,const int y,const string

//--- criar elementos de controle


bool

CreateButton(CButton &button,const string name,const int x,const int y,const s

bool

CreateComboBoxStep(void);

bool

CreateComboBoxType(void);

//--- manipuladores de evento


void

OnClickButtonAdd(void);

void

OnClickButtonFree(void);

void

OnChangeComboBoxType(void);

//--- mtodos para trabalhar com o atual array


void

CurrentArrayFree(void);

bool

CurrentArrayAdd(void);

};
//+------------------------------------------------------------------+
//| Liberar memria do atual array

//+------------------------------------------------------------------+
void CMemoryControl::CurrentArrayFree(void)
{
//--- restabelecer o tamanho do array

2000-2015, MetaQuotes Software Corp.

891

Funes para Array


m_arr_size=0;
//--- liberar o array
if(m_combo_box_type_value==0)
ArrayFree(m_arr_char);
if(m_combo_box_type_value==1)
ArrayFree(m_arr_int);
if(m_combo_box_type_value==2)
ArrayFree(m_arr_float);
if(m_combo_box_type_value==3)
ArrayFree(m_arr_double);
if(m_combo_box_type_value==4)
ArrayFree(m_arr_long);
}
//+------------------------------------------------------------------+
//| Tentativa de adicionar memria para o atual array

//+------------------------------------------------------------------+
bool CMemoryControl::CurrentArrayAdd(void)
{
//--- se o tamanho da memria usada excede o tamanho da memria fsica, sair
if(TerminalInfoInteger(TERMINAL_MEMORY_PHYSICAL)/TerminalInfoInteger(TERMINAL_MEMORY_USED)<2)
return(false);
//--- tentativa para alocar memria de acordo com o atual tipo
if(m_combo_box_type_value==0 && ArrayResize(m_arr_char,m_arr_size)==-1)
return(false);
if(m_combo_box_type_value==1 && ArrayResize(m_arr_int,m_arr_size)==-1)
return(false);
if(m_combo_box_type_value==2 && ArrayResize(m_arr_float,m_arr_size)==-1)
return(false);
if(m_combo_box_type_value==3 && ArrayResize(m_arr_double,m_arr_size)==-1)
return(false);
if(m_combo_box_type_value==4 && ArrayResize(m_arr_long,m_arr_size)==-1)
return(false);
//--- memria alocada
return(true);
}
//+------------------------------------------------------------------+
//| Manipulao de eventos

//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CMemoryControl)
ON_EVENT(ON_CLICK,m_button_add,OnClickButtonAdd)
ON_EVENT(ON_CLICK,m_button_free,OnClickButtonFree)
ON_EVENT(ON_CHANGE,m_combo_box_type,OnChangeComboBoxType)
EVENT_MAP_END(CAppDialog)
//+------------------------------------------------------------------+
//| Construtor

//+------------------------------------------------------------------+
CMemoryControl::CMemoryControl(void)
{
}

2000-2015, MetaQuotes Software Corp.

892

Funes para Array


//+------------------------------------------------------------------+
//| Destrutor

//+------------------------------------------------------------------+
CMemoryControl::~CMemoryControl(void)
{
}
//+------------------------------------------------------------------+
//| Mtodo para criao de objeto de classe

//+------------------------------------------------------------------+
bool CMemoryControl::Create(const long chart,const string name,const int subwin,
const int x1,const int y1,const int x2,const int y2)
{
//--- base criada de objetos de classe
if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
return(false);
//--- preparar strings para etiquetas
string str_physical="Memria Fsica = "+(string)TerminalInfoInteger(TERMINAL_MEMORY_PHYSICAL)+"
string str_total="Memria total = "+(string)TerminalInfoInteger(TERMINAL_MEMORY_TOTAL)+" Mb";

string str_available="Memria disponvel = "+(string)TerminalInfoInteger(TERMINAL_MEMORY_AVAILAB


string str_used="Memria usada = "+(string)TerminalInfoInteger(TERMINAL_MEMORY_USED)+" Mb";
//--- cria um rtulos

if(!CreateLabel(m_lbl_memory_physical,"physical_label",X_START+10,Y_START+5,str_physical,12,clrB
return(false);
if(!CreateLabel(m_lbl_memory_total,"total_label",X_START+10,Y_START+30,str_total,12,clrBlack))
return(false);

if(!CreateLabel(m_lbl_memory_available,"available_label",X_START+10,Y_START+55,str_available,12,
return(false);
if(!CreateLabel(m_lbl_memory_used,"used_label",X_START+10,Y_START+80,str_used,12,clrBlack))
return(false);

if(!CreateLabel(m_lbl_array_type,"type_label",X_START+10,Y_START+105,"Array type = double",12,cl


return(false);

if(!CreateLabel(m_lbl_array_size,"size_label",X_START+10,Y_START+130,"Array size = 0",12,clrBlac


return(false);
if(!CreateLabel(m_lbl_error,"error_label",X_START+10,Y_START+155,"",12,clrRed))
return(false);

if(!CreateLabel(m_lbl_change_type,"change_type_label",X_START+10,Y_START+185,"Change type",10,cl
return(false);

if(!CreateLabel(m_lbl_add_size,"add_size_label",X_START+10,Y_START+210,"Add to array",10,clrBlac
return(false);
//--- create control elements
if(!CreateButton(m_button_add,"add_button",X_START+15,Y_START+245,"Adicionar",12,clrBlue))
return(false);
if(!CreateButton(m_button_free,"free_button",X_START+75,Y_START+245,"Livre",12,clrBlue))
return(false);
if(!CreateComboBoxType())
return(false);
if(!CreateComboBoxStep())
return(false);
//--- inicializar a varivel

2000-2015, MetaQuotes Software Corp.

893

Funes para Array


m_arr_size=0;
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Criar o boto

//+------------------------------------------------------------------+
bool CMemoryControl::CreateButton(CButton &button,const string name,const int x,
const int y,const string str,const int font_size,
const int clr)
{
//--- criar o boto
if(!button.Create(m_chart_id,name,m_subwin,x,y,x+50,y+20))
return(false);
//--- texto
if(!button.Text(str))
return(false);
//--- tamanho de fonte
if(!button.FontSize(font_size))
return(false);
//--- cor de rtulo
if(!button.Color(clr))
return(false);
//--- adicionar o boto para os elementos de controle
if(!Add(button))
return(false);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Criar uma caixa de combinao para o tamanho do array

//+------------------------------------------------------------------+
bool CMemoryControl::CreateComboBoxStep(void)
{
//--- criar a caixa de combinao

if(!m_combo_box_step.Create(m_chart_id,"step_combobox",m_subwin,X_START+100,Y_START+185,X_START+
return(false);
//--- adicionar elementos para a caixa de combinao
if(!m_combo_box_step.ItemAdd("100 000",100000))
return(false);
if(!m_combo_box_step.ItemAdd("1 000 000",1000000))
return(false);
if(!m_combo_box_step.ItemAdd("10 000 000",10000000))
return(false);
if(!m_combo_box_step.ItemAdd("100 000 000",100000000))
return(false);
//--- definir o elemento atual da caixa de combinao
if(!m_combo_box_step.SelectByValue(1000000))
return(false);

2000-2015, MetaQuotes Software Corp.

894

Funes para Array


//--- adicionar a caixa de combinao para controlar elementos
if(!Add(m_combo_box_step))
return(false);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Criar uma caixa de combinao para o tipo de array

//+------------------------------------------------------------------+
bool CMemoryControl::CreateComboBoxType(void)
{
//--- criar a caixa de combinao

if(!m_combo_box_type.Create(m_chart_id,"type_combobox",m_subwin,X_START+100,Y_START+210,X_START+
return(false);
//--- adicionar elementos para a caixa de combinao
if(!m_combo_box_type.ItemAdd("char",0))
return(false);
if(!m_combo_box_type.ItemAdd("int",1))
return(false);
if(!m_combo_box_type.ItemAdd("float",2))
return(false);
if(!m_combo_box_type.ItemAdd("double",3))
return(false);
if(!m_combo_box_type.ItemAdd("long",4))
return(false);
//--- definir o elemento atual da caixa de combinao
if(!m_combo_box_type.SelectByValue(3))
return(false);
//--- armazenar o elemento da caixa de combinao atual
m_combo_box_type_value=3;
//--- adicionar a caixa de combinao para controlar elementos
if(!Add(m_combo_box_type))
return(false);
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| criar um rtulo

//+------------------------------------------------------------------+
bool CMemoryControl::CreateLabel(CLabel &lbl,const string name,const int x,
const int y,const string str,const int font_size,
const int clr)
{
//--- criar um rtulo
if(!lbl.Create(m_chart_id,name,m_subwin,x,y,0,0))
return(false);
//--- texto
if(!lbl.Text(str))
return(false);

2000-2015, MetaQuotes Software Corp.

895

Funes para Array


//--- tamanho de fonte
if(!lbl.FontSize(font_size))
return(false);
//--- cor
if(!lbl.Color(clr))
return(false);
//--- adicionar a etiqueta para controlar elementos
if(!Add(lbl))
return(false);
//--- sucesso
return(true);
}
//+------------------------------------------------------------------+
//| Manipulador criando boto de evento "Adicionar"

//+------------------------------------------------------------------+
void CMemoryControl::OnClickButtonAdd(void)
{
//--- aumentar o tamanho do array
m_arr_size+=(int)m_combo_box_step.Value();
//--- tentativa de alocar memria para o atual array
if(CurrentArrayAdd())
{
//--- memria alocada, exibir o status atual na tela

m_lbl_memory_available.Text("Memria disponvel = "+(string)TerminalInfoInteger(TERMINAL_MEMO

m_lbl_memory_used.Text("Memria usada = "+(string)TerminalInfoInteger(TERMINAL_MEMORY_USED)+"


m_lbl_array_size.Text("Tamanho de array = "+IntegerToString(m_arr_size));
m_lbl_error.Text("");
}
else
{
//--- falha para alocar memria, exibir a mensagem de erro
m_lbl_error.Text("Array muito grande, erro!");
//--- retornar o tamanho do array anterior
m_arr_size-=(int)m_combo_box_step.Value();
}
}
//+------------------------------------------------------------------+
//| Manipulador criando o boto de evento "Livre"

//+------------------------------------------------------------------+
void CMemoryControl::OnClickButtonFree(void)
{
//--- liberar memria do atual array
CurrentArrayFree();
//--- exibir o status atual na tela

m_lbl_memory_available.Text("Memria disponvel = "+(string)TerminalInfoInteger(TERMINAL_MEMORY_

m_lbl_memory_used.Text("Memria usada = "+(string)TerminalInfoInteger(TERMINAL_MEMORY_USED)+" Mb


m_lbl_array_size.Text("Tamanho de array = 0");
m_lbl_error.Text("");
}

2000-2015, MetaQuotes Software Corp.

896

Funes para Array


//+------------------------------------------------------------------+
//| Manipulador da caixa de combinao para alterar evento

//+------------------------------------------------------------------+
void CMemoryControl::OnChangeComboBoxType(void)
{
//--- verificar se o tipo de array foi alterado
if(m_combo_box_type.Value()!=m_combo_box_type_value)
{
//--- liberar memria do atual array
OnClickButtonFree();
//--- trabalhar com outro tipo de array
m_combo_box_type_value=(int)m_combo_box_type.Value();
//--- exibir um novo tipo de array na tela
if(m_combo_box_type_value==0)
m_lbl_array_type.Text("Tipo de array = char");
if(m_combo_box_type_value==1)
m_lbl_array_type.Text("Tipo de array = int");
if(m_combo_box_type_value==2)
m_lbl_array_type.Text("Tipo de array = float");
if(m_combo_box_type_value==3)
m_lbl_array_type.Text("Tipo de array = double");
if(m_combo_box_type_value==4)
m_lbl_array_type.Text("Tipo de array = long");
}
}
//--- objeto de classe CMemoryControl
CMemoryControl ExtDialog;
//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--- criar o dilogo
if(!ExtDialog.Create(0,"MemoryControl",0,X_START,Y_START,X_SIZE,Y_SIZE))
return(INIT_FAILED);
//--- lanamento
ExtDialog.Run();
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de Desinicializao do Expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--ExtDialog.Destroy(reason);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

897

Funes para Array


//| Expert chart event function

//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
ExtDialog.ChartEvent(id,lparam,dparam,sparam);
}

2000-2015, MetaQuotes Software Corp.

898

Funes para Array

ArrayGetAsSeries
Verifica a direo do ndice de um array.
bool ArrayGetAsSeries(
const void& array[]

// array para verificao

);

Parmetros
array
[in] Array verificado.
Valor do Retorno
Retorna true, se o array especificado tem o flag AS_SERIES definido, isto , o acesso ao array
realizado de trs para frente como em sries de tempo. A indexao em timesries de tempo difere
da indexao de um array comum, na medida que os elementos de sries de tempo so indexados
do fim para o comeo (dos dados mais novos para os mais antigos).
Observao
Para verificar se um array se comporta como uma srie de tempo, use a funo ArrayIsSeries().
Array de dados de preos passados como parmetros de entrada na funo OnCalculate() no
obrigatoriamente tm a mesma direo de uma srie de tempo. A direo de indexao necessria
pode ser definida usando a funo ArraySetAsSeries().
Exemplo:
#property description "Indicador calcula os valores absolutos das diferenas entre"
#property description "Preos de Open (Abertura) e Close (Fechamento) ou High (Alto) e Low (Baixo)
#property description "como um histograma."
//--- configuraes do indicador
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//---- plotar
#property indicator_type1

DRAW_HISTOGRAM

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input bool InpAsSeries=true; // Direo de indexao no buffer de indicador
input bool InpPrices=true;

// Clculo de preos (true - Abertura, Fechamento; false - Mximo, Mn

//--- buffer do indicador


double ExtBuffer[];
//+------------------------------------------------------------------+
//| Calcule os valores do indicador

//+------------------------------------------------------------------+
void CandleSizeOnBuffer(const int rates_total,const int prev_calculated,
const double &first[],const double &second[],double &buffer[])
{
//--- iniciar varivel para o clculo das barras

2000-2015, MetaQuotes Software Corp.

899

Funes para Array


int start=prev_calculated;
//--- trabalho na ltima barra se os valores do indicador j foram calculados no tick anterior
if(prev_calculated>0)
start--;
//--- definir a direo de indexao nos arrays
bool as_series_first=ArrayGetAsSeries(first);
bool as_series_second=ArrayGetAsSeries(second);
bool as_series_buffer=ArrayGetAsSeries(buffer);
//--- substituir a direo de indexao com um direto, se necessrio
if(as_series_first)
ArraySetAsSeries(first,false);
if(as_series_second)
ArraySetAsSeries(second,false);
if(as_series_buffer)
ArraySetAsSeries(buffer,false);
//--- calcule valores do indicador
for(int i=start;i<rates_total;i++)
buffer[i]=MathAbs(first[i]-second[i]);
}
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- vincular buffers de indicador
SetIndexBuffer(0,ExtBuffer);
//--- conjunto de elementos de indexao no buffer de indicador
ArraySetAsSeries(ExtBuffer,InpAsSeries);
//--- verificar quais os preos do indicador so calculados
if(InpPrices)
{
//--- Preos Open (abrir) e Close (fechar)
PlotIndexSetString(0,PLOT_LABEL,"BodySize");
//--- definir a cor do indicador
PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrOrange);
}
else
{
//--- Preos High (mximo) e Low (mnimo)
PlotIndexSetString(0,PLOT_LABEL,"ShadowSize");
//--- definir a cor do indicador
PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrDodgerBlue);
}
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

900

Funes para Array


int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- calcular o indicador de acordo com o valor do sinalizador
if(InpPrices)
CandleSizeOnBuffer(rates_total,prev_calculated,open,close,ExtBuffer);
else
CandleSizeOnBuffer(rates_total,prev_calculated,high,low,ExtBuffer);
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
Aceso a sries de tempo, ArraySetAsSeries

2000-2015, MetaQuotes Software Corp.

901

Funes para Array

ArrayInitialize
A funo inicializa um array numrico com um valor predefinido.
For initialization of an array of char type
int ArrayInitialize(
char

array[],

// array inicializado

char

value

// valor que ser definido

);

For initialization of an array of short type


int ArrayInitialize(
short

array[],

// array inicializado

short

value

// valor que ser definido

);

For initialization of an array of int type


int ArrayInitialize(
int

array[],

// array inicializado

int

value

// valor que ser definido

);

For initialization of an array of long type


int ArrayInitialize(
long

array[],

// array inicializado

long

value

// valor que ser definido

);

For initialization of an array of float type


int ArrayInitialize(
float

array[],

// array inicializado

float

value

// valor que ser definido

);

For initialization of an array of double type


int ArrayInitialize(
double array[],

// array inicializado

double value

// valor que ser definido

);

For initialization of an array of bool type


int ArrayInitialize(
bool

array[],

// array inicializado

bool

value

// valor que ser definido

);

2000-2015, MetaQuotes Software Corp.

902

Funes para Array


For initialization of an array of uint type
int ArrayInitialize(
uint

array[],

// array inicializado

uint

value

// valor que ser definido

);

Parmetros
array[]
[out] Array numrico que deve ser inicializado.
value
[in] Novo valor que deve ser definido para todos os elementos do array.
Valor do Retorno
Nmero de elementos.
Observao
A funo ArrayResize() permite definir o tamanho de um array com uma reserva para expanso
posterior sem a realocao de memria. implementada para uma melhor performance, porque as
operaes de realocao de memria so razoavelmente lentas.
A inicializao de um array usando ArrayInitialize(array, init_val) no significa a inicializao com o
mesmo valor dos elementos da reserva alocados para este array. Em uma expanso posterior do
array usando a funo ArrayResize(), os elementos sero adicionados no final do array, seus valores
sero indefinidos e na maioria dos casos no sero iguais ao init_value.
Exemplo:
void OnStart()
{
//--- array dinmico
double array[];

//--- vamos definir o tamanho do array para 100 elementos e reservar um buffer para outros 10 eleme
ArrayResize(array,100,10);
//--- inicializa os elementos do array com valor EMPTY_VALUE=DBL_MAX
ArrayInitialize(array,EMPTY_VALUE);
Print("Valores dos 10 ltimos elementos antes da inicializao");
for(int i=90;i<100;i++) printf("array[%d] = %G",i,array[i]);
//--- expande o array em 5 elementos
ArrayResize(array,105);
Print("Valores dos 10 ltimos elementos antes do ArrayResize(array,105)");
//--- valores dos 5 ltimos elementos so obtidos do buffer de reserva
for(int i=95;i<105;i++) printf("array[%d] = %G",i,array[i]);
}

2000-2015, MetaQuotes Software Corp.

903

Funes para Array

ArrayFill
A funo preenche um array com o valor especificado.
void ArrayFill(
void& array[],

// array

int

start,

// ndice de incio

int

count,

// nmero de elementos para preencher

void

value

// valor

);

Parmetros
array[]
[out] Array de tipo simples (char, uchar, short, ushort, int, uint, long, ulong, bool, color,
datetime, float, double).
start
[in] ndice de incio. Neste caso, flag AS_SERIES especfico ignorado.
count
[in] Nmero de elementos para preencher.
value
[in] Valor usado no preenchimento do array.
Valor de retorno
Sem valor de retorno.
Observao
Quando a funo ArrayFill() chamada, a direo de indexao normal( da esquerda para direita)
sempre implcita. Isso significa que a alterao da ordem de acesso dos elementos do array usando
a funo ArraySetAsSeries() ignorada.
Um array multidimensional exibido como unidimensional quando processado pela funo
ArrayFill(). Por exemplo, array[2][4] processado como array[8]. Portanto, voc deve especificar o
ndice do elemento inicial para ser igual a 5 quando trabalhar com este array. Assim, a chamada de
ArrayFill(array, 5, 2, 3.14) para array[2][4] preenche os elementos array[1][1] e array[1][2] com
3.14.
Exemplo:
void OnStart()
{
//--- declara um array dinmico
int a[];
//--- define tamanho
ArrayResize(a,10);
//--- preenche os primeiros 5 elementos com 123
ArrayFill(a,0,5,123);
//--- preenche os primeiros 5 elementos com 456

2000-2015, MetaQuotes Software Corp.

904

Funes para Array


ArrayFill(a,5,5,456);
//--- mostrar valores
for(int i=0;i<ArraySize(a);i++) printf("a[%d] = %d",i,a[i]);
}

2000-2015, MetaQuotes Software Corp.

905

Funes para Array

ArrayIsDynamic
A funo verifica se um array dinmico.
bool ArrayIsDynamic(
const void& array[]

// array verificado

);

Parmetros
array[]
[in] Array verificado.
Valor do Retorno
Retorna true se o array selecionado dinmico, caso contrrio retorna false.
Exemplo:
#property description "Este indicador no calcula valores. Faz uma nica tentativa para"

#property description "aplicar a chamada da funo ArrayFree() para trs arrays: dinmico, esttico
#property description "um buffer de indicador. Os resultados so mostrados no jornal dos Experts."
//--- configuraes do indicador
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//--- variveis globais


double ExtDynamic[];

// array dinmico

double ExtStatic[100]; // array esttico


bool

ExtFlag=true;

double ExtBuff[];

// bandeira
// buffer do indicador

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- alocar memria para o array
ArrayResize(ExtDynamic,100);
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,ExtBuff);
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])

2000-2015, MetaQuotes Software Corp.

906

Funes para Array


{
//--- executar uma anlise nica
if(ExtFlag)
{
//--- tentativa para liberar memria para os arrays
//--- 1. Array dinmico
Print("+============================+");
Print("1. Verificar o array dinmico:");
Print("Antes do tamanho da memria ser liberada = ",ArraySize(ExtDynamic));
Print("Isto um array dinmico = ",ArrayIsDynamic(ExtDynamic) ? "Sim" : "No");
//--- tentativa de liberar memria do array
ArrayFree(ExtDynamic);
Print("Aps o tamanho da memria ser liberada = ",ArraySize(ExtDynamic));
//--- 2. Array esttico
Print("2. Verificar array esttico:");
Print("Antes do tamanho da memria ser liberada = ",ArraySize(ExtStatic));
Print("Isto um array dinmico = ",ArrayIsDynamic(ExtStatic) ? "Sim" : "No");
//--- tentativa de liberar memria do array
ArrayFree(ExtStatic);
Print("Aps do tamanho da memria ser liberada = ",ArraySize(ExtStatic));
//--- 3. Buffer do indicador
Print("3. Verificar buffer do indicador:");
Print("Antes do tamanho da memria ser liberada = ",ArraySize(ExtBuff));
Print("Isto um array dinmico = ",ArrayIsDynamic(ExtBuff) ? "Sim" : "No");
//--- tentativa de liberar memria do array
ArrayFree(ExtBuff);
Print("Aps do tamanho da memria ser liberada = ",ArraySize(ExtBuff));
//--- alterar o valor do sinalizador
ExtFlag=false;
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
Acesso a sries de tempo e indicadores

2000-2015, MetaQuotes Software Corp.

907

Funes para Array

ArrayIsSeries
A funo verifica se um array uma srie de tempo.
bool ArrayIsSeries(
const void& array[]

// array verificado

);

Parmetros
array[]
[in] Array verificado.
Valor do Retorno
Retorna true, se o array verificado um array de srie de tempo, caso contrrio, retorna false.
Arrays passados como parmetro para a funo OnCalculate() devem ser verificados quanto a ordem
de acesso dos elementos do array atravs de ArrayGetAsSeries().
Exemplo:
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//---- Plotar Etiqueta1


#property indicator_label1

"Etiqueta1"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- buffers do indicador


double

Label1Buffer[];

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
void OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
//--}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],

2000-2015, MetaQuotes Software Corp.

908

Funes para Array


const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--if(ArrayIsSeries(open))
Print("open[] timeseries");
else
Print("open[] no timeseries!!!");
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
Acesso a sries de tempo e indicadores

2000-2015, MetaQuotes Software Corp.

909

Funes para Array

ArrayMaximum
Searches for the largest element in the first dimension of a multidimensional numeric array.
int ArrayMaximum(
const void&

array[],

// array para busca

int

start=0,

// ndice a partir do qual comea a verificao

int

count=WHOLE_ARRAY

// nmero de elementos verificados

);

Parmetros
array[]
[in] Um array nmerico, na qual a busca feita.
start=0
[in] ndice a partir do qual comea a verificao.
count=WHOLE_ARRAY
[in]
Nmero de elementos
(count=WHOLE_ARRAY)..

para

busca.

Por

default,

busca

no

array

inteiro

Valor do Retorno
A funo retorna um ndice de um elemento encontrado levando em considerao a srie do array.
Em caso de falha, retorna -1.
Observao
The AS_SERIES flag value is taken into account while searching for a maximum.
Functions ArrayMaximum and ArrayMinimum accept any-dimensional arrays as a parameter.
However, searching is always applied to the first (zero) dimension.
Exemplo:

#property description "O indicador mostra sobre as barras (candlesticks) um prazo de tempo maior do
//--- configuraes do indicador
#property indicator_chart_window
#property indicator_buffers 16
#property indicator_plots

//---- plot 1
#property indicator_label1

"BearBody"

#property indicator_color1

clrSeaGreen,clrSeaGreen

//---- plot 2
#property indicator_label2

"BearBodyEnd"

#property indicator_color2

clrSeaGreen,clrSeaGreen

//---- plot 3
#property indicator_label3

"BearShadow"

#property indicator_color3

clrSalmon,clrSalmon

//---- plot 4
#property indicator_label4

"BearShadowEnd"

#property indicator_color4

clrSalmon,clrSalmon

2000-2015, MetaQuotes Software Corp.

910

Funes para Array


//---- plot 5
#property indicator_label5

"BullBody"

#property indicator_color5

clrOlive,clrOlive

//---- plot 6
#property indicator_label6

"BullBodyEnd"

#property indicator_color6

clrOlive,clrOlive

//---- plot 7
#property indicator_label7

"BullShadow"

#property indicator_color7

clrSkyBlue,clrSkyBlue

//---- plot 8
#property indicator_label8

"BullShadowEnd"

#property indicator_color8

clrSkyBlue,clrSkyBlue

//--- constante pr-definida


#define INDICATOR_EMPTY_VALUE 0.0
//--- parmetros de entrada
input ENUM_TIMEFRAMES InpPeriod=PERIOD_H4;
input datetime

// Prazo de tempo para calcular o indicador

InpDateStart=D'2013.01.01 00:00'; // Analisar a partir desta data

//--- buffers do indicador para candlesticks de baixa


double

ExtBearBodyFirst[];

double

ExtBearBodySecond[];

double

ExtBearBodyEndFirst[];

double

ExtBearBodyEndSecond[];

double

ExtBearShadowFirst[];

double

ExtBearShadowSecond[];

double

ExtBearShadowEndFirst[];

double

ExtBearShadowEndSecond[];

//--- buffers do indicador para candlesticks de alta


double

ExtBullBodyFirst[];

double

ExtBullBodySecond[];

double

ExtBullBodyEndFirst[];

double

ExtBullBodyEndSecond[];

double

ExtBullShadowFirst[];

double

ExtBullShadowSecond[];

double

ExtBullShadowEndFirst[];

double

ExtBullShadowEndSecond[];

//--- variveis globais


datetime ExtTimeBuff[];

// buffer de tempo para maior periodicidade

int

ExtSize=0;

// tamanho do buffer de tempo

int

ExtCount=0;

// ndice dentro do buffer de tempo

int

ExtStartPos=0;

// posio inicial para clculo do indicador

bool

ExtStartFlag=true;

// sinalizador auxiliar para receber a posio inicial

datetime ExtCurrentTime[1];

// ltimo tempo na gerao da barra de maior periodicidade

datetime ExtLastTime;

// ltimo tempo a partir da barra de maior periodicidade, para a execu

bool

ExtBearFlag=true;

// flag para definir a ordem de escrita do dados para os buffers de in

bool

ExtBullFlag=true;

// flag para definir a ordem de escrita do dados para os buffers de in

int

ExtIndexMax=0;

// ndice do elemento mximo do array

int

ExtIndexMin=0;

// ndice do elemento mnimo do array

int

ExtDirectionFlag=0; // direo de movimento de preos para o atual candlestick

//--- alternar entre o preo de abertura e fechamento do candlestick para desenhar corretamente

2000-2015, MetaQuotes Software Corp.

911

Funes para Array


const double ExtEmptyBodySize=0.2*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
//+------------------------------------------------------------------+
//| Preenchendo a parte bsica do candlestick

//+------------------------------------------------------------------+
void FillCandleMain(const double &open[],const double &close[],
const double &high[],const double &low[],
const int start,const int last,const int fill_index,
int &index_max,int &index_min)
{
//--- encontrar o ndice dos elementos mximo e mnimo nos arrays
index_max=ArrayMaximum(high,ExtStartPos,last-start+1); // mximo em Alta
index_min=ArrayMinimum(low,ExtStartPos,last-start+1);

// mnimo em Baixa

//--- definir quantas barras do perodo de tempo atual sero preenchidas


int count=fill_index-start+1;

//--- se o preo de fechamento no primeiro bar excede ao do ltimo bar, o candlesticks de baixa
if(open[start]>close[last])
{

//--- antes que o candlestick seja de alta, limpar os valores de alta dos buffers do indicado
if(ExtDirectionFlag!=-1)

ClearCandle(ExtBullBodyFirst,ExtBullBodySecond,ExtBullShadowFirst,ExtBullShadowSecond,star
//--- candlestick de baixa
ExtDirectionFlag=-1;
//--- gerar o candlestick

FormCandleMain(ExtBearBodyFirst,ExtBearBodySecond,ExtBearShadowFirst,ExtBearShadowSecond,open
close[last],high[index_max],low[index_min],start,count,ExtBearFlag);
//--- sair da funo
return;
}
//--- se o preo de fechamento no primeiro bar menor do que ltimo bar, o candlesticks de alta
if(open[start]<close[last])
{

//--- antes que o candlestick seja de baixa, limpar os valores de baixa dos buffers do indica
if(ExtDirectionFlag!=1)

ClearCandle(ExtBearBodyFirst,ExtBearBodySecond,ExtBearShadowFirst,ExtBearShadowSecond,star
//--- candlesticks de alta
ExtDirectionFlag=1;
//--- gerar o candlestick

FormCandleMain(ExtBullBodyFirst,ExtBullBodySecond,ExtBullShadowFirst,ExtBullShadowSecond,clos
open[start],high[index_max],low[index_min],start,count,ExtBullFlag);
//--- sair da funo
return;
}
//--- se voc est nesta parte da funo, o preo de abertura no primeiro bar igual ao
//--- preo de fechamento no ltimo bar; ento o candlestick considerado de baixa
//--- antes que o candlestick seja de alta, limpar os valores de alta dos buffers do indicador
if(ExtDirectionFlag!=-1)

ClearCandle(ExtBullBodyFirst,ExtBullBodySecond,ExtBullShadowFirst,ExtBullShadowSecond,start,c
//--- candlestick de baixa
ExtDirectionFlag=-1;

2000-2015, MetaQuotes Software Corp.

912

Funes para Array

//--- se os preos de fechamento e de abertura so iguais, use o deslocamento para a exibio corre
if(high[index_max]!=low[index_min])

FormCandleMain(ExtBearBodyFirst,ExtBearBodySecond,ExtBearShadowFirst,ExtBearShadowSecond,open

open[start]-ExtEmptyBodySize,high[index_max],low[index_min],start,count,ExtBea
else
FormCandleMain(ExtBearBodyFirst,ExtBearBodySecond,ExtBearShadowFirst,ExtBearShadowSecond,
open[start],open[start]-ExtEmptyBodySize,high[index_max],
high[index_max]-ExtEmptyBodySize,start,count,ExtBearFlag);
}
//+------------------------------------------------------------------+
//| Preencher o final do candlestick

//+------------------------------------------------------------------+
void FillCandleEnd(const double &open[],const double &close[],
const double &high[],const double &low[],
const int start,const int last,const int fill_index,
const int index_max,const int index_min)
{
//--- no desenhar em caso de uma nica barra
if(last-start==0)
return;

//--- se o preo de fechamento no primeiro bar excede ao do ltimo bar, o candlesticks de baixa
if(open[start]>close[last])
{
//--- gerar o final do candelstick

FormCandleEnd(ExtBearBodyEndFirst,ExtBearBodyEndSecond,ExtBearShadowEndFirst,ExtBearShadowEnd

open[start],close[last],high[index_max],low[index_min],fill_index,ExtBearFlag);
//--- sair da funo
return;
}
//--- se o preo de fechamento no primeiro bar menor do que ltimo bar, o candlesticks de alta
if(open[start]<close[last])
{
//--- gerar o final do candelstick

FormCandleEnd(ExtBullBodyEndFirst,ExtBullBodyEndSecond,ExtBullShadowEndFirst,ExtBullShadowEnd

close[last],open[start],high[index_max],low[index_min],fill_index,ExtBullFlag);
//--- sair da funo
return;
}
//--- se voc est nesta parte da funo, o preo de abertura no primeiro bar igual ao
//--- preo de fechamento no ltimo bar; ento o candlestick considerado de baixa
//--- gerar o final do candelstick
if(high[index_max]!=low[index_min])

FormCandleEnd(ExtBearBodyEndFirst,ExtBearBodyEndSecond,ExtBearShadowEndFirst,ExtBearShadowEnd

open[start]-ExtEmptyBodySize,high[index_max],low[index_min],fill_index,ExtBearF
else

FormCandleEnd(ExtBearBodyEndFirst,ExtBearBodyEndSecond,ExtBearShadowEndFirst,ExtBearShadowEnd

open[start]-ExtEmptyBodySize,high[index_max],high[index_max]-ExtEmptyBodySize,f
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

913

Funes para Array


//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- verificar o perodo do indicador
if(!CheckPeriod((int)Period(),(int)InpPeriod))
return(INIT_PARAMETERS_INCORRECT);
//--- exibir dados de preo num primeiro plano
ChartSetInteger(0,CHART_FOREGROUND,0,1);
//--- vincular buffers do indicador
SetIndexBuffer(0,ExtBearBodyFirst);
SetIndexBuffer(1,ExtBearBodySecond);
SetIndexBuffer(2,ExtBearBodyEndFirst);
SetIndexBuffer(3,ExtBearBodyEndSecond);
SetIndexBuffer(4,ExtBearShadowFirst);
SetIndexBuffer(5,ExtBearShadowSecond);
SetIndexBuffer(6,ExtBearShadowEndFirst);
SetIndexBuffer(7,ExtBearShadowEndSecond);
SetIndexBuffer(8,ExtBullBodyFirst);
SetIndexBuffer(9,ExtBullBodySecond);
SetIndexBuffer(10,ExtBullBodyEndFirst);
SetIndexBuffer(11,ExtBullBodyEndSecond);
SetIndexBuffer(12,ExtBullShadowFirst);
SetIndexBuffer(13,ExtBullShadowSecond);
SetIndexBuffer(14,ExtBullShadowEndFirst);
SetIndexBuffer(15,ExtBullShadowEndSecond);
//--- definir alguns valores de propriedade para a criao do indicador
for(int i=0;i<8;i++)
{
PlotIndexSetInteger(i,PLOT_DRAW_TYPE,DRAW_FILLING); // tipo de construo grfica
PlotIndexSetInteger(i,PLOT_LINE_STYLE,STYLE_SOLID); // estilo de linha de desenho
PlotIndexSetInteger(i,PLOT_LINE_WIDTH,1);

// largura de linha de desenho

}
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])

2000-2015, MetaQuotes Software Corp.

914

Funes para Array


{
//--- neste caso ainda no existe clculos de barras
if(prev_calculated==0)
{
//--- receber a maior periodicidade das barra no tempo de chegada
if(!GetTimeData())
return(0);
}
//--- definir a indexao direta
ArraySetAsSeries(time,false);
ArraySetAsSeries(high,false);
ArraySetAsSeries(low,false);
ArraySetAsSeries(open,false);
ArraySetAsSeries(close,false);
//--- iniciar varivel para o clculo das barras
int start=prev_calculated;
//--- se uma barra gerada, recalcular o valor do indicador sobre ela
if(start!=0 && start==rates_total)
start--;
//--- o loop para clculos dos valores do indicador
for(int i=start;i<rates_total;i++)
{
//--- preencher i elementos dos buffers do indicador por valores vazios
FillIndicatorBuffers(i);
//--- executar clculos para as barras iniciando a partir dos dados InpDateStart
if(time[i]>=InpDateStart)
{
//--- definir posio, a partir do qual os valores so exibidos pela primeira vez
if(ExtStartFlag)
{
//--- armazenar o nmero do bar inicial
ExtStartPos=i;
//--- definir a primeira data a partir da maior periodicidade excedendo time[i]
while(time[i]>=ExtTimeBuff[ExtCount])
if(ExtCount<ExtSize-1)
ExtCount++;
//--- alterar o valor da sinalizao em ordem no executada neste bloco novamente
ExtStartFlag=false;
}
//--- verificar se ainda existem quaisquer elementos no array
if(ExtCount<ExtSize)
{
//--- esperar o valor da periodicidade atual para chegar a um maior perodo de tempo
if(time[i]>=ExtTimeBuff[ExtCount])
{

//--- desenhar a parte principal do candlestick (sem preencher o espao entre a lti
FillCandleMain(open,close,high,low,ExtStartPos,i-1,i-2,ExtIndexMax,ExtIndexMin);
//--- preencher o final do candlestick(a rea entre a ltima e a penltima barra)
FillCandleEnd(open,close,high,low,ExtStartPos,i-1,i-1,ExtIndexMax,ExtIndexMin);

2000-2015, MetaQuotes Software Corp.

915

Funes para Array


//--- deslocar a posio inicial para desenhar o prximo candlestick
ExtStartPos=i;
//--- aumentar o contador de array
ExtCount++;
}
else
continue;
}
else
{
//--- redefinir os valores de array
ResetLastError();
//--- receber a ltima data do maior perodo de tempo
if(CopyTime(Symbol(),InpPeriod,0,1,ExtCurrentTime)==-1)
{
Print("Erro na cpia dos dados, cdigo = ",GetLastError());
return(0);
}
//--- se a nova data for posterior, parar de gerar o candlestick
if(ExtCurrentTime[0]>ExtLastTime)
{

//--- limpar a rea entre a ltima e a penltima barra nos principais buffers do ind
ClearEndOfBodyMain(i-1);
//--- preencher a rea usando buffers auxiliares do indicador
FillCandleEnd(open,close,high,low,ExtStartPos,i-1,i-1,ExtIndexMax,ExtIndexMin);
//--- deslocar a posio inicial para desenhar o prximo candlestick
ExtStartPos=i;
//--- restabelecer flag da direo do preo
ExtDirectionFlag=0;
//--- armazenar a nova ltima data
ExtLastTime=ExtCurrentTime[0];
}
else
{
//--- gerar o candlestick
FillCandleMain(open,close,high,low,ExtStartPos,i,i,ExtIndexMax,ExtIndexMin);
}
}
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Verificar a exatido do perodo do indicador determinado

//+------------------------------------------------------------------+
bool CheckPeriod(int current_period,int high_period)
{
//--- o perodo do indicador deve ultrapassar o perodo de tempo que exibido sobre

2000-2015, MetaQuotes Software Corp.

916

Funes para Array


if(current_period>=high_period)
{

Print("Erro! O valor do perodo do indicador deve exceder o valor do intervalo do tempo atual
return(false);
}
//--- se o perodo do indicador de uma semana ou um ms, o perodo est correto
if(high_period>32768)
return(true);
//--- converter valores do perodo para minutos
if(high_period>30)
high_period=(high_period-16384)*60;
if(current_period>30)
current_period=(current_period-16384)*60;
//--- o perodo do indicador deve ser mltiplo do perodo de tempo, exibido sobre
if(high_period%current_period!=0)
{

Print("Erro! O valor do perodo do indicador deve ser mltiplo ao valor do atual perodo de t
return(false);
}
//--- o perodo do indicador deve exceder o prazo de tempo quando apresentado de 3 ou mais vezes
if(high_period/current_period<3)
{
Print("Erro! O perodo do indicador deve exceder o prazo atual de 3 ou mais vezes!");
return(false);
}
//--- O perodo do indicador o correto para a atual periodicidade
return(true);
}
//+------------------------------------------------------------------+
//| Receber dados de tempo a partir da maior prazo de tempo

//+------------------------------------------------------------------+
bool GetTimeData(void)
{
//--- redefine o valor de erro
ResetLastError();
//--- copiar todos os dados para o tempo atual
if(CopyTime(Symbol(),InpPeriod,InpDateStart,TimeCurrent(),ExtTimeBuff)==-1)
{
//--- receber o cdigo de erro
int code=GetLastError();
//--- imprimir a mensagem de erro
PrintFormat("Erro de cpia de dados! %s",code==4401
? "Histrico ainda est sendo carregado!"
: "Cdigo = "+IntegerToString(code));
//--- retornar falso para fazer uma tentativa de repetir o download de dados
return(false);
}
//--- recebe o tamanho do array
ExtSize=ArraySize(ExtTimeBuff);

2000-2015, MetaQuotes Software Corp.

917

Funes para Array


//--- definir o ndice do loop para o array zero
ExtCount=0;
//--- definir a posio atual do candlestick no perodo de tempo para zero
ExtStartPos=0;
ExtStartFlag=true;
//--- armazenar o ltimo valor de tempo a partir da maior periodicidade
ExtLastTime=ExtTimeBuff[ExtSize-1];
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------------------+
//| Funo constitui a parte principal do candlestick. Dependendo do sinalizador |
//| valor, a funo define quais dados e arrays sero
//| usados para exibio correta.

|
|

//+------------------------------------------------------------------------------+
void FormCandleMain(double &body_fst[],double &body_snd[],
double &shadow_fst[],double &shadow_snd[],
const double fst_value,const double snd_value,
const double fst_extremum,const double snd_extremum,
const int start,const int count,const bool flag)
{
//--- verificar o valor do flag
if(flag)
{
//--- gerar o corpo do candlestick
FormMain(body_fst,body_snd,fst_value,snd_value,start,count);
//--- gerar a sombra do candlestick
FormMain(shadow_fst,shadow_snd,fst_extremum,snd_extremum,start,count);
}
else
{
//--- gerar o corpo do candlestick
FormMain(body_fst,body_snd,snd_value,fst_value,start,count);
//--- gerar a sombra do candlestick
FormMain(shadow_fst,shadow_snd,snd_extremum,fst_extremum,start,count);
}
}
//+-------------------------------------------------------------------------------+
//| A funo para formar o final do candlestick. Depende do valor do sinalizador, |
//| a funo define quais dados e arrays so

//| usados para exibio correta.

//+-------------------------------------------------------------------------------+
void FormCandleEnd(double &body_fst[],double &body_snd[],
double &shadow_fst[],double &shadow_snd[],
const double fst_value,const double snd_value,
const double fst_extremum,const double snd_extremum,
const int end,bool &flag)
{
//--- verificar o valor do flag

2000-2015, MetaQuotes Software Corp.

918

Funes para Array


if(flag)
{
//--- gerar o final do corpo do candlestick
FormEnd(body_fst,body_snd,fst_value,snd_value,end);
//--- gerar o final da sombra do candlestick
FormEnd(shadow_fst,shadow_snd,fst_extremum,snd_extremum,end);
//--- alterar o valor do sinalizador para o oposto
flag=false;
}
else
{
//--- gerar o final do corpo do candlestick
FormEnd(body_fst,body_snd,snd_value,fst_value,end);
//--- gerar o final da sombra do candlestick
FormEnd(shadow_fst,shadow_snd,snd_extremum,fst_extremum,end);
//--- alterar o valor do sinalizador para o oposto
flag=true;
}
}
//+---------------------------------------------------------------------------------+
//| Limpar o fim do candlestick (a rea entre a ltima e a penltima

//| barra)

//+---------------------------------------------------------------------------------+
void ClearEndOfBodyMain(const int ind)
{
ClearCandle(ExtBearBodyFirst,ExtBearBodySecond,ExtBearShadowFirst,ExtBearShadowSecond,ind,1);
ClearCandle(ExtBullBodyFirst,ExtBullBodySecond,ExtBullShadowFirst,ExtBullShadowSecond,ind,1);
}
//+--------------------------------------------------------------------------+
//| Limpar o candlestick

//+--------------------------------------------------------------------------+
void ClearCandle(double &body_fst[],double &body_snd[],double &shadow_fst[],
double &shadow_snd[],const int start,const int count)
{
//--- verificar
if(count!=0)
{
//--- preencher buffers do indicador com valores vazios
ArrayFill(body_fst,start,count,INDICATOR_EMPTY_VALUE);
ArrayFill(body_snd,start,count,INDICATOR_EMPTY_VALUE);
ArrayFill(shadow_fst,start,count,INDICATOR_EMPTY_VALUE);
ArrayFill(shadow_snd,start,count,INDICATOR_EMPTY_VALUE);
}
}
//+--------------------------------------------------------------------------+
//| Gerar a parte principal do candlestick

//+--------------------------------------------------------------------------+
void FormMain(double &fst[],double &snd[],const double fst_value,
const double snd_value,const int start,const int count)

2000-2015, MetaQuotes Software Corp.

919

Funes para Array


{
//--- verificar
if(count!=0)
{
//--- preencher o buffer do indicador com valores
ArrayFill(fst,start,count,fst_value);
ArrayFill(snd,start,count,snd_value);
}
}
//+-----------------------------------------------------------------------------+
//| Gerar o final do candlestick

//+-----------------------------------------------------------------------------+
void FormEnd(double &fst[],double &snd[],const double fst_value,
const double snd_value,const int last)
{
//--- preencher o buffer do indicador com valores
ArrayFill(fst,last-1,2,fst_value);
ArrayFill(snd,last-1,2,snd_value);
}
//+------------------------------------------------------------------+
//| Preencher i elemento dos buffers do indicador por valores vazios|
//+------------------------------------------------------------------+
void FillIndicatorBuffers(const int i)
{
//--- definir um valor vazio na clula dos buffers do indicador
ExtBearBodyFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBearBodySecond[i]=INDICATOR_EMPTY_VALUE;
ExtBearShadowFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBearShadowSecond[i]=INDICATOR_EMPTY_VALUE;
ExtBearBodyEndFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBearBodyEndSecond[i]=INDICATOR_EMPTY_VALUE;
ExtBearShadowEndFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBearShadowEndSecond[i]=INDICATOR_EMPTY_VALUE;
ExtBullBodyFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBullBodySecond[i]=INDICATOR_EMPTY_VALUE;
ExtBullShadowFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBullShadowSecond[i]=INDICATOR_EMPTY_VALUE;
ExtBullBodyEndFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBullBodyEndSecond[i]=INDICATOR_EMPTY_VALUE;
ExtBullShadowEndFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBullShadowEndSecond[i]=INDICATOR_EMPTY_VALUE;
}

2000-2015, MetaQuotes Software Corp.

920

Funes para Array

ArrayMinimum
Searches for the lowest element in the first dimension of a multidimensional numeric array.
int ArrayMinimum(
const void&

array[],

// array para busca

int

start=0,

// ndice a partir do qual comea a verificao

int

count=WHOLE_ARRAY

// nmero de elementos verificados

);

Parmetros
array[]
[in] Um array nmerico, na qual a busca feita.
start=0
[in] ndice a partir do qual comea a verificao.
count=WHOLE_ARRAY
[in]
Nmero de elementos
(count=WHOLE_ARRAY)..

para

busca.

Por

default,

busca

no

array

inteiro

Valor do Retorno
A funo retorna um ndice de um elemento encontrado levando em considerao a srie do array.
Em caso de falha, retorna -1.
Observao
The AS_SERIES flag value is taken into account while searching for a minimum.
Functions ArrayMaximum and ArrayMinimum accept any-dimensional arrays as a parameter.
However, searching is always applied to the first (zero) dimension.
Exemplo:

#property description "O indicador mostra sobre as barras (candlesticks) um prazo de tempo maior do
//--- configuraes do indicador
#property indicator_chart_window
#property indicator_buffers 16
#property indicator_plots

//---- plot 1
#property indicator_label1

"BearBody"

#property indicator_color1

clrSeaGreen,clrSeaGreen

//---- plot 2
#property indicator_label2

"BearBodyEnd"

#property indicator_color2

clrSeaGreen,clrSeaGreen

//---- plot 3
#property indicator_label3

"BearShadow"

#property indicator_color3

clrSalmon,clrSalmon

//---- plot 4
#property indicator_label4

"BearShadowEnd"

#property indicator_color4

clrSalmon,clrSalmon

2000-2015, MetaQuotes Software Corp.

921

Funes para Array


//---- plot 5
#property indicator_label5

"BullBody"

#property indicator_color5

clrOlive,clrOlive

//---- plot 6
#property indicator_label6

"BullBodyEnd"

#property indicator_color6

clrOlive,clrOlive

//---- plot 7
#property indicator_label7

"BullShadow"

#property indicator_color7

clrSkyBlue,clrSkyBlue

//---- plot 8
#property indicator_label8

"BullShadowEnd"

#property indicator_color8

clrSkyBlue,clrSkyBlue

//--- constante pr-definida


#define INDICATOR_EMPTY_VALUE 0.0
//--- parmetros de entrada
input ENUM_TIMEFRAMES InpPeriod=PERIOD_H4;
input datetime

// Prazo de tempo para calcular o indicador

InpDateStart=D'2013.01.01 00:00'; // Analisar a partir desta data

//--- buffers do indicador para candlesticks de baixa


double

ExtBearBodyFirst[];

double

ExtBearBodySecond[];

double

ExtBearBodyEndFirst[];

double

ExtBearBodyEndSecond[];

double

ExtBearShadowFirst[];

double

ExtBearShadowSecond[];

double

ExtBearShadowEndFirst[];

double

ExtBearShadowEndSecond[];

//--- buffers do indicador para candlesticks de alta


double

ExtBullBodyFirst[];

double

ExtBullBodySecond[];

double

ExtBullBodyEndFirst[];

double

ExtBullBodyEndSecond[];

double

ExtBullShadowFirst[];

double

ExtBullShadowSecond[];

double

ExtBullShadowEndFirst[];

double

ExtBullShadowEndSecond[];

//--- variveis globais


datetime ExtTimeBuff[];

// buffer de tempo para maior periodicidade

int

ExtSize=0;

// tamanho do buffer de tempo

int

ExtCount=0;

// ndice dentro do buffer de tempo

int

ExtStartPos=0;

// posio inicial para clculo do indicador

bool

ExtStartFlag=true;

// sinalizador auxiliar para receber a posio inicial

datetime ExtCurrentTime[1];

// ltimo tempo na gerao da barra de maior periodicidade

datetime ExtLastTime;

// ltimo tempo a partir da barra de maior periodicidade, para a execu

bool

ExtBearFlag=true;

// flag para definir a ordem de escrita do dados para os buffers de in

bool

ExtBullFlag=true;

// flag para definir a ordem de escrita do dados para os buffers de in

int

ExtIndexMax=0;

// ndice do elemento mximo do array

int

ExtIndexMin=0;

// ndice do elemento mnimo do array

int

ExtDirectionFlag=0; // direo de movimento de preos para o atual candlestick

//--- alternar entre o preo de abertura e fechamento do candlestick para desenhar corretamente

2000-2015, MetaQuotes Software Corp.

922

Funes para Array


const double ExtEmptyBodySize=0.2*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
//+------------------------------------------------------------------+
//| Preenchendo a parte bsica do candlestick

//+------------------------------------------------------------------+
void FillCandleMain(const double &open[],const double &close[],
const double &high[],const double &low[],
const int start,const int last,const int fill_index,
int &index_max,int &index_min)
{
//--- encontrar o ndice dos elementos mximo e mnimo nos arrays
index_max=ArrayMaximum(high,ExtStartPos,last-start+1); // mximo em Alta
index_min=ArrayMinimum(low,ExtStartPos,last-start+1);

// mnimo em Baixa

//--- definir quantas barras do perodo de tempo atual sero preenchidas


int count=fill_index-start+1;

//--- se o preo de fechamento no primeiro bar excede ao do ltimo bar, o candlesticks de baixa
if(open[start]>close[last])
{

//--- antes que o candlestick seja de alta, limpar os valores de alta dos buffers do indicado
if(ExtDirectionFlag!=-1)

ClearCandle(ExtBullBodyFirst,ExtBullBodySecond,ExtBullShadowFirst,ExtBullShadowSecond,star
//--- candlestick de baixa
ExtDirectionFlag=-1;
//--- gerar o candlestick

FormCandleMain(ExtBearBodyFirst,ExtBearBodySecond,ExtBearShadowFirst,ExtBearShadowSecond,open
close[last],high[index_max],low[index_min],start,count,ExtBearFlag);
//--- sair da funo
return;
}
//--- se o preo de fechamento no primeiro bar menor do que ltimo bar, o candlesticks de alta
if(open[start]<close[last])
{

//--- antes que o candlestick seja de baixa, limpar os valores de baixa dos buffers do indica
if(ExtDirectionFlag!=1)

ClearCandle(ExtBearBodyFirst,ExtBearBodySecond,ExtBearShadowFirst,ExtBearShadowSecond,star
//--- candlesticks de alta
ExtDirectionFlag=1;
//--- gerar o candlestick

FormCandleMain(ExtBullBodyFirst,ExtBullBodySecond,ExtBullShadowFirst,ExtBullShadowSecond,clos
open[start],high[index_max],low[index_min],start,count,ExtBullFlag);
//--- sair da funo
return;
}
//--- se voc est nesta parte da funo, o preo de abertura no primeiro bar igual ao
//--- preo de fechamento no ltimo bar; ento o candlestick considerado de baixa
//--- antes que o candlestick seja de alta, limpar os valores de alta dos buffers do indicador
if(ExtDirectionFlag!=-1)

ClearCandle(ExtBullBodyFirst,ExtBullBodySecond,ExtBullShadowFirst,ExtBullShadowSecond,start,c
//--- candlestick de baixa
ExtDirectionFlag=-1;

2000-2015, MetaQuotes Software Corp.

923

Funes para Array

//--- se os preos de fechamento e de abertura so iguais, use o deslocamento para a exibio corre
if(high[index_max]!=low[index_min])

FormCandleMain(ExtBearBodyFirst,ExtBearBodySecond,ExtBearShadowFirst,ExtBearShadowSecond,open

open[start]-ExtEmptyBodySize,high[index_max],low[index_min],start,count,ExtBea
else
FormCandleMain(ExtBearBodyFirst,ExtBearBodySecond,ExtBearShadowFirst,ExtBearShadowSecond,
open[start],open[start]-ExtEmptyBodySize,high[index_max],
high[index_max]-ExtEmptyBodySize,start,count,ExtBearFlag);
}
//+------------------------------------------------------------------+
//| Preencher o final do candlestick

//+------------------------------------------------------------------+
void FillCandleEnd(const double &open[],const double &close[],
const double &high[],const double &low[],
const int start,const int last,const int fill_index,
const int index_max,const int index_min)
{
//--- no desenhar em caso de uma nica barra
if(last-start==0)
return;

//--- se o preo de fechamento no primeiro bar excede ao do ltimo bar, o candlesticks de baixa
if(open[start]>close[last])
{
//--- gerar o final do candelstick

FormCandleEnd(ExtBearBodyEndFirst,ExtBearBodyEndSecond,ExtBearShadowEndFirst,ExtBearShadowEnd

open[start],close[last],high[index_max],low[index_min],fill_index,ExtBearFlag);
//--- sair da funo
return;
}
//--- se o preo de fechamento no primeiro bar menor do que ltimo bar, o candlesticks de alta
if(open[start]<close[last])
{
//--- gerar o final do candelstick

FormCandleEnd(ExtBullBodyEndFirst,ExtBullBodyEndSecond,ExtBullShadowEndFirst,ExtBullShadowEnd

close[last],open[start],high[index_max],low[index_min],fill_index,ExtBullFlag);
//--- sair da funo
return;
}
//--- se voc est nesta parte da funo, o preo de abertura no primeiro bar igual ao
//--- preo de fechamento no ltimo bar; ento o candlestick considerado de baixa
//--- gerar o final do candelstick
if(high[index_max]!=low[index_min])

FormCandleEnd(ExtBearBodyEndFirst,ExtBearBodyEndSecond,ExtBearShadowEndFirst,ExtBearShadowEnd

open[start]-ExtEmptyBodySize,high[index_max],low[index_min],fill_index,ExtBearF
else

FormCandleEnd(ExtBearBodyEndFirst,ExtBearBodyEndSecond,ExtBearShadowEndFirst,ExtBearShadowEnd

open[start]-ExtEmptyBodySize,high[index_max],high[index_max]-ExtEmptyBodySize,f
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

924

Funes para Array


//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- verificar o perodo do indicador
if(!CheckPeriod((int)Period(),(int)InpPeriod))
return(INIT_PARAMETERS_INCORRECT);
//--- exibir dados de preo num primeiro plano
ChartSetInteger(0,CHART_FOREGROUND,0,1);
//--- vincular buffers do indicador
SetIndexBuffer(0,ExtBearBodyFirst);
SetIndexBuffer(1,ExtBearBodySecond);
SetIndexBuffer(2,ExtBearBodyEndFirst);
SetIndexBuffer(3,ExtBearBodyEndSecond);
SetIndexBuffer(4,ExtBearShadowFirst);
SetIndexBuffer(5,ExtBearShadowSecond);
SetIndexBuffer(6,ExtBearShadowEndFirst);
SetIndexBuffer(7,ExtBearShadowEndSecond);
SetIndexBuffer(8,ExtBullBodyFirst);
SetIndexBuffer(9,ExtBullBodySecond);
SetIndexBuffer(10,ExtBullBodyEndFirst);
SetIndexBuffer(11,ExtBullBodyEndSecond);
SetIndexBuffer(12,ExtBullShadowFirst);
SetIndexBuffer(13,ExtBullShadowSecond);
SetIndexBuffer(14,ExtBullShadowEndFirst);
SetIndexBuffer(15,ExtBullShadowEndSecond);
//--- definir alguns valores de propriedade para a criao do indicador
for(int i=0;i<8;i++)
{
PlotIndexSetInteger(i,PLOT_DRAW_TYPE,DRAW_FILLING); // tipo de construo grfica
PlotIndexSetInteger(i,PLOT_LINE_STYLE,STYLE_SOLID); // estilo de linha de desenho
PlotIndexSetInteger(i,PLOT_LINE_WIDTH,1);

// largura de linha de desenho

}
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])

2000-2015, MetaQuotes Software Corp.

925

Funes para Array


{
//--- neste caso ainda no existe clculos de barras
if(prev_calculated==0)
{
//--- receber a maior periodicidade das barra no tempo de chegada
if(!GetTimeData())
return(0);
}
//--- definir a indexao direta
ArraySetAsSeries(time,false);
ArraySetAsSeries(high,false);
ArraySetAsSeries(low,false);
ArraySetAsSeries(open,false);
ArraySetAsSeries(close,false);
//--- iniciar varivel para o clculo das barras
int start=prev_calculated;
//--- se uma barra gerada, recalcular o valor do indicador sobre ela
if(start!=0 && start==rates_total)
start--;
//--- o loop para clculos dos valores do indicador
for(int i=start;i<rates_total;i++)
{
//--- preencher i elementos dos buffers do indicador por valores vazios
FillIndicatorBuffers(i);
//--- executar clculos para as barras iniciando a partir dos dados InpDateStart
if(time[i]>=InpDateStart)
{
//--- definir posio, a partir do qual os valores so exibidos pela primeira vez
if(ExtStartFlag)
{
//--- armazenar o nmero do bar inicial
ExtStartPos=i;
//--- definir a primeira data a partir da maior periodicidade excedendo time[i]
while(time[i]>=ExtTimeBuff[ExtCount])
if(ExtCount<ExtSize-1)
ExtCount++;
//--- alterar o valor da sinalizao em ordem no executada neste bloco novamente
ExtStartFlag=false;
}
//--- verificar se ainda existem quaisquer elementos no array
if(ExtCount<ExtSize)
{
//--- esperar o valor da periodicidade atual para chegar a um maior perodo de tempo
if(time[i]>=ExtTimeBuff[ExtCount])
{

//--- desenhar a parte principal do candlestick (sem preencher o espao entre a lti
FillCandleMain(open,close,high,low,ExtStartPos,i-1,i-2,ExtIndexMax,ExtIndexMin);
//--- preencher o final do candlestick(a rea entre a ltima e a penltima barra)
FillCandleEnd(open,close,high,low,ExtStartPos,i-1,i-1,ExtIndexMax,ExtIndexMin);

2000-2015, MetaQuotes Software Corp.

926

Funes para Array


//--- deslocar a posio inicial para desenhar o prximo candlestick
ExtStartPos=i;
//--- aumentar o contador de array
ExtCount++;
}
else
continue;
}
else
{
//--- redefinir os valores de array
ResetLastError();
//--- receber a ltima data do maior perodo de tempo
if(CopyTime(Symbol(),InpPeriod,0,1,ExtCurrentTime)==-1)
{
Print("Erro na cpia dos dados, cdigo = ",GetLastError());
return(0);
}
//--- se a nova data for posterior, parar de gerar o candlestick
if(ExtCurrentTime[0]>ExtLastTime)
{

//--- limpar a rea entre a ltima e a penltima barra nos principais buffers do ind
ClearEndOfBodyMain(i-1);
//--- preencher a rea usando buffers auxiliares do indicador
FillCandleEnd(open,close,high,low,ExtStartPos,i-1,i-1,ExtIndexMax,ExtIndexMin);
//--- deslocar a posio inicial para desenhar o prximo candlestick
ExtStartPos=i;
//--- restabelecer flag da direo do preo
ExtDirectionFlag=0;
//--- armazenar a nova ltima data
ExtLastTime=ExtCurrentTime[0];
}
else
{
//--- gerar o candlestick
FillCandleMain(open,close,high,low,ExtStartPos,i,i,ExtIndexMax,ExtIndexMin);
}
}
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Verificar a exatido do perodo do indicador determinado

//+------------------------------------------------------------------+
bool CheckPeriod(int current_period,int high_period)
{
//--- o perodo do indicador deve ultrapassar o perodo de tempo que exibido sobre

2000-2015, MetaQuotes Software Corp.

927

Funes para Array


if(current_period>=high_period)
{

Print("Erro! O valor do perodo do indicador deve exceder o valor do intervalo do tempo atual
return(false);
}
//--- se o perodo do indicador de uma semana ou um ms, o perodo est correto
if(high_period>32768)
return(true);
//--- converter valores do perodo para minutos
if(high_period>30)
high_period=(high_period-16384)*60;
if(current_period>30)
current_period=(current_period-16384)*60;
//--- o perodo do indicador deve ser mltiplo do perodo de tempo, exibido sobre
if(high_period%current_period!=0)
{

Print("Erro! O valor do perodo do indicador deve ser mltiplo ao valor do atual perodo de t
return(false);
}
//--- o perodo do indicador deve exceder o prazo de tempo quando apresentado de 3 ou mais vezes
if(high_period/current_period<3)
{
Print("Erro! O perodo do indicador deve exceder o prazo atual de 3 ou mais vezes!");
return(false);
}
//--- O perodo do indicador o correto para a atual periodicidade
return(true);
}
//+------------------------------------------------------------------+
//| Receber dados de tempo a partir da maior prazo de tempo

//+------------------------------------------------------------------+
bool GetTimeData(void)
{
//--- redefine o valor de erro
ResetLastError();
//--- copiar todos os dados para o tempo atual
if(CopyTime(Symbol(),InpPeriod,InpDateStart,TimeCurrent(),ExtTimeBuff)==-1)
{
//--- receber o cdigo de erro
int code=GetLastError();
//--- imprimir a mensagem de erro
PrintFormat("Erro de cpia de dados! %s",code==4401
? "Histrico ainda est sendo carregado!"
: "Cdigo = "+IntegerToString(code));
//--- retornar falso para fazer uma tentativa de repetir o download de dados
return(false);
}
//--- recebe o tamanho do array
ExtSize=ArraySize(ExtTimeBuff);

2000-2015, MetaQuotes Software Corp.

928

Funes para Array


//--- definir o ndice do loop para o array zero
ExtCount=0;
//--- definir a posio atual do candlestick no perodo de tempo para zero
ExtStartPos=0;
ExtStartFlag=true;
//--- armazenar o ltimo valor de tempo a partir da maior periodicidade
ExtLastTime=ExtTimeBuff[ExtSize-1];
//--- sucesso na execuo
return(true);
}
//+--------------------------------------------------------------------------+
//| Funo constitui a parte principal do candlestick. Dependendo do sinalizador |
//| valor, a funo define quais dados e arrays sero

//| usados para exibio correta.

//+--------------------------------------------------------------------------+
void FormCandleMain(double &body_fst[],double &body_snd[],
double &shadow_fst[],double &shadow_snd[],
const double fst_value,const double snd_value,
const double fst_extremum,const double snd_extremum,
const int start,const int count,const bool flag)
{
//--- verificar o valor do flag
if(flag)
{
//--- gerar o corpo do candlestick
FormMain(body_fst,body_snd,fst_value,snd_value,start,count);
//--- gerar a sombra do candlestick
FormMain(shadow_fst,shadow_snd,fst_extremum,snd_extremum,start,count);
}
else
{
//--- gerar o corpo do candlestick
FormMain(body_fst,body_snd,snd_value,fst_value,start,count);
//--- gerar a sombra do candlestick
FormMain(shadow_fst,shadow_snd,snd_extremum,fst_extremum,start,count);
}
}
//+--------------------------------------------------------------------------------+
//| A funo para formar o final do candlestick. Depending on the flag's value,

//| the function defines what data and arrays are

//| usados para exibio correta.

//+--------------------------------------------------------------------------------+
void FormCandleEnd(double &body_fst[],double &body_snd[],
double &shadow_fst[],double &shadow_snd[],
const double fst_value,const double snd_value,
const double fst_extremum,const double snd_extremum,
const int end,bool &flag)
{
//--- verificar o valor do flag

2000-2015, MetaQuotes Software Corp.

929

Funes para Array


if(flag)
{
//--- gerar o final do corpo do candlestick
FormEnd(body_fst,body_snd,fst_value,snd_value,end);
//--- gerar o final da sombra do candlestick
FormEnd(shadow_fst,shadow_snd,fst_extremum,snd_extremum,end);
//--- alterar o valor do sinalizador para o oposto
flag=false;
}
else
{
//--- gerar o final do corpo do candlestick
FormEnd(body_fst,body_snd,snd_value,fst_value,end);
//--- gerar o final da sombra do candlestick
FormEnd(shadow_fst,shadow_snd,snd_extremum,fst_extremum,end);
//--- alterar o valor do sinalizador para o oposto
flag=true;
}
}
//+-------------------------------------------------------------------------------------+
//| Clear the end of the candlestick (the area between the last and the penultimate

//| bar)

//+-------------------------------------------------------------------------------------+
void ClearEndOfBodyMain(const int ind)
{
ClearCandle(ExtBearBodyFirst,ExtBearBodySecond,ExtBearShadowFirst,ExtBearShadowSecond,ind,1);
ClearCandle(ExtBullBodyFirst,ExtBullBodySecond,ExtBullShadowFirst,ExtBullShadowSecond,ind,1);
}
//+------------------------------------------------------------------+
//| Clear the candlestick

//+------------------------------------------------------------------+
void ClearCandle(double &body_fst[],double &body_snd[],double &shadow_fst[],
double &shadow_snd[],const int start,const int count)
{
//--- verificar
if(count!=0)
{
//--- preencher buffers do indicador com valores vazios
ArrayFill(body_fst,start,count,INDICATOR_EMPTY_VALUE);
ArrayFill(body_snd,start,count,INDICATOR_EMPTY_VALUE);
ArrayFill(shadow_fst,start,count,INDICATOR_EMPTY_VALUE);
ArrayFill(shadow_snd,start,count,INDICATOR_EMPTY_VALUE);
}
}
//+------------------------------------------------------------------+
//| Generate the main part of the candlestick

//+------------------------------------------------------------------+
void FormMain(double &fst[],double &snd[],const double fst_value,
const double snd_value,const int start,const int count)

2000-2015, MetaQuotes Software Corp.

930

Funes para Array


{
//--- verificar
if(count!=0)
{
//--- preencher o buffer do indicador com valores
ArrayFill(fst,start,count,fst_value);
ArrayFill(snd,start,count,snd_value);
}
}
//+------------------------------------------------------------------+
//| Generate the end of the candlestick

//+------------------------------------------------------------------+
void FormEnd(double &fst[],double &snd[],const double fst_value,
const double snd_value,const int last)
{
//--- preencher o buffer do indicador com valores
ArrayFill(fst,last-1,2,fst_value);
ArrayFill(snd,last-1,2,snd_value);
}
//+------------------------------------------------------------------+
//| Preencher i elemento dos buffers do indicador por valores vazios|
//+------------------------------------------------------------------+
void FillIndicatorBuffers(const int i)
{
//--- definir um valor vazio na clula dos buffers do indicador
ExtBearBodyFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBearBodySecond[i]=INDICATOR_EMPTY_VALUE;
ExtBearShadowFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBearShadowSecond[i]=INDICATOR_EMPTY_VALUE;
ExtBearBodyEndFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBearBodyEndSecond[i]=INDICATOR_EMPTY_VALUE;
ExtBearShadowEndFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBearShadowEndSecond[i]=INDICATOR_EMPTY_VALUE;
ExtBullBodyFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBullBodySecond[i]=INDICATOR_EMPTY_VALUE;
ExtBullShadowFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBullShadowSecond[i]=INDICATOR_EMPTY_VALUE;
ExtBullBodyEndFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBullBodyEndSecond[i]=INDICATOR_EMPTY_VALUE;
ExtBullShadowEndFirst[i]=INDICATOR_EMPTY_VALUE;
ExtBullShadowEndSecond[i]=INDICATOR_EMPTY_VALUE;
}

2000-2015, MetaQuotes Software Corp.

931

Funes para Array

ArrayRange
A funo retorna o nmero de elementos na dimenso selecionada do array.
int ArrayRange(
const void& array[],

// array para verificao

int

// ndice da dimenso

rank_index

);

Parmetros
array[]
[in] Array verificado.
rank_index
[in] ndice da dimenso.
Valor do Retorno
Nmero de elementos na dimenso selecionada do array.
Observao
Uma vez que os ndices comeam em zero, o nmero de dimenses de um array uma unidade
maior que o ndice da ltima dimenso.
Exemplo:
void OnStart()
{
//--- cria um array de quatro dimenses
double array[][5][2][4];
//--- definir o tamanho da dimenso de zero
ArrayResize(array,10,10);
//--- imprimir as dimenses
int temp;
for(int i=0;i<4;i++)
{
//--- receber o tamanho de i dimenso
temp=ArrayRange(array,i);
//--- imprimir
PrintFormat("dim = %d, range = %d",i,temp);
}
//--- Resultado
// dim = 0, range = 10
// dim = 1, range = 5
// dim = 2, range = 2
// dim = 3, range = 4
}

2000-2015, MetaQuotes Software Corp.

932

Funes para Array

ArrayResize
A funo define um tamanho novo para a primeira dimenso
int ArrayResize(
void& array[],

// array passado por referncia

int

new_size,

// novo tamanho de array

int

reserve_size=0

// valor do tamanho de reserva (excesso)

);

Parmetros
array[]
[out] Array para alterao de tamanho.
new_size
[in] Novo tamanho para a primeira dimenso.
reserve_size=0
[in] Tamanho alocado para obter reserva.
Valor do Retorno
Se executado com sucesso, a funo retorna a quantidade de todos os elementos contidos no array
aps a alterao do tamanho, caso contrrio, retorna -1, e o tamanho do array no alterado.
Observao
A funo pode ser aplicada somente para arrays dinmicos. Deve ser notado que no se pode alterar
o tamanho de arrays dinmicos atribudos como buffers de indicadores atravs da funo
SetIndexBuffer(). Para buffers de indicadores, todas a operaes de redimensionamento de tamanho
so realizadas pelo subsistema de tempo de execuo do terminal.
Total amount of elements in the array cannot exceed 2147483647.
Com uma alocao de memria freqente, recomendado usar o terceiro parmetro que defini um
reserva para reduzir o nmero de alocaes fsicas de memria. Todas as subseqentes chamadas
de ArrayResize no levam uma realocao fsica de memria, mas somente alterao do tamanho da
primeira dimenso do array dentro da memria reservada. Deve ser lembrado que o terceiro
parmetro ser usado somente durante a alocao fsica de memria. Por exemplo:
ArrayResize(arr,1000,1000);
for(int i=1;i<3000;i++)
ArrayResize(arr,i,1000);

Neste caso a memria ser realocada duas vezes, a primeira vez antes de entrar no loop de
elemento 2000 (o tamanho do array ser definido para 1000), e a segunda vez com i igual a 2000.
Se omitisse o terceiro parmetro, haveria 2000 realocaes fsicas de memria, que desaceleraria o
programa.
Exemplo:
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

2000-2015, MetaQuotes Software Corp.

933

Funes para Array


//+------------------------------------------------------------------+
void OnStart()
{
//--- Contadores
ulong start=GetTickCount();
ulong now;
int

count=0;

//--- Um array para demonstrao de uma verso rpida


double arr[];
ArrayResize(arr,100000,100000);
//--- Verifique quo rpida a variante com a reserva de memria trabalha
Print("--- Test Fast: ArrayResize(arr,100000,100000)");
for(int i=1;i<=300000;i++)
{
//--- Define um novo tamanho de array especificando a reserva de 100 000 elementos!
ArrayResize(arr,i,100000);
//--- Quando alcanar um nmero redondo, exibe o tamanho do array e tempo gasto
if(ArraySize(arr)%100000==0)
{
now=GetTickCount();
count++;
PrintFormat("%d. ArraySize(arr)=%d Time=%d ms",count,ArraySize(arr),(now-start));
start=now;
}
}
//--- Agora mostra quo lento a verso sem reserva de memria
double slow[];
ArrayResize(slow,100000,100000);
//--count=0;
start=GetTickCount();
Print("---- Teste lenta: ArrayResize(slow,100000)");
//--for(int i=1;i<=300000;i++)
{
//--- Define um novo tamanho de array, mas sem a reserva adicional
ArrayResize(slow,i);
//--- Quando alcanar um nmero redondo, exibe o tamanho do array e tempo gasto
if(ArraySize(slow)%100000==0)
{
now=GetTickCount();
count++;
PrintFormat("%d. ArraySize(slow)=%d Time=%d ms",count,ArraySize(slow),(now-start));
start=now;
}
}
}
//--- O resultado do script
/*

2000-2015, MetaQuotes Software Corp.

934

Funes para Array


Test_ArrayResize (EURUSD,H1)

--- Test Fast: ArrayResize(arr,100000,100000)

Test_ArrayResize (EURUSD,H1)

1. ArraySize(arr)=100000 Time=0 ms

Test_ArrayResize (EURUSD,H1)

2. ArraySize(arr)=200000 Time=0 ms

Test_ArrayResize (EURUSD,H1)

3. ArraySize(arr)=300000 Time=0 ms

Test_ArrayResize (EURUSD,H1)

---- Test Slow: ArrayResize(slow,100000)

Test_ArrayResize (EURUSD,H1)

1. ArraySize(slow)=100000 Time=0 ms

Test_ArrayResize (EURUSD,H1)

2. ArraySize(slow)=200000 Time=0 ms

Test_ArrayResize (EURUSD,H1)

3. ArraySize(slow)=300000 Time=228511 ms

*/

Tambm Veja
ArrayInitialize

2000-2015, MetaQuotes Software Corp.

935

Funes para Array

ArraySetAsSeries
A funo define o flag AS_SERIES para um objeto de um array dinmico, e os elementos sero
indexados como em timeseries.
bool ArraySetAsSeries(
const void& array[],

// array passado por referncia

bool

// true significa ordem reversa de indexao

flag

);

Parmetros
array[]
[in][out] Array numrico para definir.
flag
[in] Direo de indexao do array.
Valor do Retorno
A funo retorna true para sucesso, caso contrrio - false.
Observao
O flag AS_SERIES no pode ser definido para arrays multi-dimensionais ou arrays estticos (arrays
cujo tamanho nos colchetes j predefinido na etapa de compilao). A indexao em sries de
tempo difere da indexao de um array comum, na medida que os elementos de sries de tempo so
indexados do fim para o comeo (dos dados mais novos para os mais antigos).
Exemplo: Indicador que mostra nmero de barra

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//---- plota Numeration


#property indicator_label1

"Numeration"

#property indicator_type1

DRAW_LINE

2000-2015, MetaQuotes Software Corp.

936

Funes para Array


#property indicator_color1

CLR_NONE

//--- buffers do indicador


double

NumerationBuffer[];

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,NumerationBuffer,INDICATOR_DATA);
//--- definir a indexao do buffer como numa timeseries
ArraySetAsSeries(NumerationBuffer,true);
//--- define a preciso de exibio na Janela de Dados
IndicatorSetInteger(INDICATOR_DIGITS,0);
//--- como o nome do array do indicador exibido na Janela de Dados
PlotIndexSetString(0,PLOT_LABEL,"Bar #");
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- ns armazenaremos a hora de abertura da barra zero corrente
static datetime currentBarTimeOpen=0;
//--- acesso reverso ao array time[] - fazemos isso como em sries temporais
ArraySetAsSeries(time,true);
//--- se a hora da barra zero difere da hora armazenada
if(currentBarTimeOpen!=time[0])
{
//--- enumera todas as barras a partir do corrento para a profundidade do grfico
for(int i=rates_total-1;i>=0;i--) NumerationBuffer[i]=i;
currentBarTimeOpen=time[0];
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja

2000-2015, MetaQuotes Software Corp.

937

Funes para Array


Acesso sries de tempo, ArrayGetAsSeries

2000-2015, MetaQuotes Software Corp.

938

Funes para Array

ArraySize
A funo retorna o nmero de elementos de um array selecionado.
int ArraySize(
const void& array[]

// array verificado

);

Parmetros
array[]
[in] Array de qualquer tipo.
Valor do Retorno
Valor do tipo int.
Observao
Para um array de uma dimenso, o valor a ser retornado pela funo ArraySize igual ao de
ArrayRange(array,0).
Exemplo:
void OnStart()
{
//--- criar arrays
double one_dim[];
double four_dim[][10][5][2];
//--- tamanhos
int one_dim_size=25;
int reserve=20;
int four_dim_size=5;
//--- variveis auxiliares
int size;
//--- alocar memria sem fazer backup
ArrayResize(one_dim,one_dim_size);
ArrayResize(four_dim,four_dim_size);
//--- 1. array unidimensional
Print("+==========================================================+");
Print("Tamanhos de arrays:");
Print("1. Array unidimensional");
size=ArraySize(one_dim);
PrintFormat("Tamanho dimenso zero = %d, Tamanho array = %d",one_dim_size,size);
//--- 2. array multidimensional
Print("2. Array multidimensional");
size=ArraySize(four_dim);
PrintFormat("Tamanho dimenso zero = %d, Tamanho array = %d",four_dim_size,size);
//--- tamanhos de dimenses
int d_1=ArrayRange(four_dim,1);
int d_2=ArrayRange(four_dim,2);
int d_3=ArrayRange(four_dim,3);

2000-2015, MetaQuotes Software Corp.

939

Funes para Array


Print("Verificar:");

Print("Dimenso zero = Tamanho de array / (Primeira dimenso * Segunda dimenso * Terceira dimen
PrintFormat("%d = %d / (%d * %d * %d)",size/(d_1*d_2*d_3),size,d_1,d_2,d_3);
//--- 3. array unidimensional com backup de memria
Print("3. Array unidimensional com backup de memria");
//--- dobro do valor
one_dim_size*=2;
//--- alocar memria com o backup
ArrayResize(one_dim,one_dim_size,reserve);
//--- imprimir o tamanho
size=ArraySize(one_dim);

PrintFormat("Tamanho com o backup = %d, Atual tamanho do array = %d",one_dim_size+reserve,size);


}

2000-2015, MetaQuotes Software Corp.

940

Funes para Array

ArraySort
Sorts the values in the first dimension of a multidimensional numeric array in the ascending order.
bool ArraySort(
void& array[]

// array para ordenao

);

Parmetros
array[]
[in][out] Array numrico para ordenao.
Valor do Retorno
A funo retorna true para sucesso, caso contrrio - false.
Observao
An array is always sorted in the ascending order irrespective of the AS_SERIES flag value.
Functions ArraySort and ArrayBSearch accept any-dimensional arrays as a parameter. However,
searching and sorting are always applied to the first (zero) dimension.
Exemplo:

#property description "O indicador analisa os dados para o ltimo ms e pinta todos os candlesticks
#property description "e grandes volumes de tick. A volume de tick do array ordenado"

#property description "para definir estes candlesticks. Os candlesticks que tem os volumes compreen

#property description "por cento do array, so consideradas pequenos. Os candlesticks que tem os vo
#property description "por cento do array, so consideradas grandes."
//--- configuraes do indicador
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots

//--- plotar
#property indicator_label1

"VolumeFactor"

#property indicator_type1

DRAW_COLOR_CANDLES

#property indicator_color1

clrDodgerBlue,clrOrange

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- constante pr-definida


#define INDICATOR_EMPTY_VALUE 0.0
//--- parmetros de entrada
input int InpSmallVolume=15; // Valor percentual de pequenos volumes (<50)
input int InpBigVolume=20;

// Valor percentual de grandes volumes (<50)

//--- incio do tempo para anlise (ser deslocado)


datetime ExtStartTime;
//--- buffers do indicador
double

ExtOpenBuff[];

double

ExtHighBuff[];

double

ExtLowBuff[];

2000-2015, MetaQuotes Software Corp.

941

Funes para Array


double

ExtCloseBuff[];

double

ExtColorBuff[];

//--- valores de limite do volume para exibir os candlesticks


long

ExtLeftBorder=0;

long

ExtRightBorder=0;

//+------------------------------------------------------------------+
//| Receber valores das bordas para volumes de tick

//+------------------------------------------------------------------+
bool GetVolumeBorders(void)
{
//--- variveis
datetime stop_time;

// copiar tempo final

long

// buffer para copiar

buff[];

//--- tempo final o atual


stop_time=TimeCurrent();
//--- tempo de incio de um ms antes do atual
ExtStartTime=GetStartTime(stop_time);
//--- receber os valores de volume do tick
ResetLastError();
if(CopyTickVolume(Symbol(),Period(),ExtStartTime,stop_time,buff)==-1)
{
//--- falhou para receber os dados, retornar falso para lanar o comando de reclculo

PrintFormat("Falha ao receber os valores de volume do tick. Cdigo de erro = %d",GetLastError


return(false);
}
//--- calcule tamanho de array
int size=ArraySize(buff);
//--- classificar o array
ArraySort(buff);
//--- definir os valores das bordas esquerda e direita para volumes do tick
ExtLeftBorder=buff[size*InpSmallVolume/100];
ExtRightBorder=buff[(size-1)*(100-InpBigVolume)/100];
//--- sucesso na execuo
return(true);
}
//+------------------------------------------------------------------+
//| Receber os dados do ms menor do que o ms anterior

//+------------------------------------------------------------------+
datetime GetStartTime(const datetime stop_time)
{
//--- converter o tempo final da varivel de estrutura do tipo MqlDateTime
MqlDateTime temp;
TimeToStruct(stop_time,temp);
//--- receber os dados que do ms menor
if(temp.mon>1)
temp.mon-=1;

// o ms corrente no o primeiro no ano, por conseguinte, o nmero do anterio

else
{
temp.mon=12;

// o ms corrente o primeiro no ano, por conseguinte, o nmero do anterior

2000-2015, MetaQuotes Software Corp.

942

Funes para Array


temp.year-=1; // enquanto o nmero do ano um a menos
}
//--- nmero do dia no ser superior a 28
if(temp.day>28)
temp.day=28;
//--- retornar a data obtida
return(StructToTime(temp));
}
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- verificar se os parmetros de entrada satisfazem as condies
if(InpSmallVolume<0 || InpSmallVolume>=50 || InpBigVolume<0 || InpBigVolume>=50)
{
Print("Parmetros de entrada incorreto");
return(INIT_PARAMETERS_INCORRECT);
}
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,ExtOpenBuff);
SetIndexBuffer(1,ExtHighBuff);
SetIndexBuffer(2,ExtLowBuff);
SetIndexBuffer(3,ExtCloseBuff);
SetIndexBuffer(4,ExtColorBuff,INDICATOR_COLOR_INDEX);
//--- definir o valor que no ser exibido
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,INDICATOR_EMPTY_VALUE);
//--- definir etiquetas para buffers do indicador
PlotIndexSetString(0,PLOT_LABEL,"Open;High;Low;Close");
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- verificar se barras no manipuladas ainda esto presentes
if(prev_calculated<rates_total)
{

2000-2015, MetaQuotes Software Corp.

943

Funes para Array


//--- receber novos valores das bordas direita e esquerda para volumes
if(!GetVolumeBorders())
return(0);
}
//--- iniciar varivel para clculo da barra
int start=prev_calculated;
//--- trabalho na ltima barra se os valores do indicador j foram calculados no tick anterior
if(start>0)
start--;
//--- definir indexao direta em sries temporais
ArraySetAsSeries(time,false);
ArraySetAsSeries(open,false);
ArraySetAsSeries(high,false);
ArraySetAsSeries(low,false);
ArraySetAsSeries(close,false);
ArraySetAsSeries(tick_volume,false);
//--- o loop de clculo dos valores do indicador
for(int i=start;i<rates_total;i++)
{
//--- preencher os candlesticks a partir da data inicial
if(ExtStartTime<=time[i])
{
//--- se o valor no inferior a borda direita, preencher clandlestick
if(tick_volume[i]>=ExtRightBorder)
{
//--- receber dados para desenhar o candlestick
ExtOpenBuff[i]=open[i];
ExtHighBuff[i]=high[i];
ExtLowBuff[i]=low[i];
ExtCloseBuff[i]=close[i];
//--- cor de DodgerBlue
ExtColorBuff[i]=0;
//--- continuar o loop
continue;
}
//--- preencher o candlestick, se o valor no exceder o limite esquerdo
if(tick_volume[i]<=ExtLeftBorder)
{
//--- receber dados para desenhar o candlestick
ExtOpenBuff[i]=open[i];
ExtHighBuff[i]=high[i];
ExtLowBuff[i]=low[i];
ExtCloseBuff[i]=close[i];
//--- Cor laranja
ExtColorBuff[i]=1;
//--- continuar o loop
continue;
}
}

2000-2015, MetaQuotes Software Corp.

944

Funes para Array


//--- definir valores vazios para as barras que no foram includas no clculo
ExtOpenBuff[i]=INDICATOR_EMPTY_VALUE;
ExtHighBuff[i]=INDICATOR_EMPTY_VALUE;
ExtLowBuff[i]=INDICATOR_EMPTY_VALUE;
ExtCloseBuff[i]=INDICATOR_EMPTY_VALUE;
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
ArrayBsearch

2000-2015, MetaQuotes Software Corp.

945

Funes de Converso

Funes de Converso
Este um grupo de funes que fornece converso de dados de um formato para outro.
The NormalizeDouble() function must be specially noted as it provides the necessary accuracy of the
price presentation. Em operaes de negociao, nenhum preo no normalizado deve ser usado caso
sua preciso exceder, mesmo que por um dgito, daquilo que requerida pelo servidor de negociao.
Funo

Ao

CharToString

Converte um cdigo de smbolo em um string


de um caractere.

DoubleToString

Converte um valor numrico para um linha de


texto com a preciso especificada

EnumToString

Converte um valor de enumerao de qualquer


tipo para string

NormalizeDouble

Arredonda um nmero de ponto flutuando para


uma preciso especificada

StringToDouble

Converte
uma
string
contendo
um
representao de smbolo de nmero em um
nmero de tipo double

StringToInteger

Converte
uma
string
contendo
uma
representao de smbolo de nmero em um
nmero de tipo int

StringToTime

Converte uma string contendo hora ou data no


formato "yyyy.mm.dd [hh:mi]" em um tipo
datetime

TimeToString

Converte um valor contendo hora em segundos


decorridos deste 01.01.1970 em uma string de
formato "yyyy.mm.dd hh:mi"

IntegerToString

Converte int em uma string de comprimento


predefinido

ShortToString

Converte cdigo de smbolo (unicode) em string


de um smbolo

ShortArrayToString

Copia parte de um array em uma string

StringToShortArray

Copia smbolo a smbolo uma string para uma


parte selecionada de array de tipo ushort

CharArrayToString

Converte cdigo de smbolo (ansi) em um array


de um smbolo

StringToCharArray

Copia smbolo a smbolo uma string convertida


de Unicode para ANSI, para um lugar
selecionado de um array de tipo uchar

ColorToARGB

Converte tipo color para tipo uint para receber

2000-2015, MetaQuotes Software Corp.

946

Funes de Converso

representao ARGB da cor.


ColorToString

Converte um valor de color em uma string como


"R,G,B"

StringToColor

Converte uma string "R,G,B" ou uma string com


nome de cor em valor de tipo color

StringFormat

Converte um nmero em string de acordo com


um formato predefinido

Tambm Veja
Uso de um Cdigo de Pgina (Codepage)

2000-2015, MetaQuotes Software Corp.

947

Funes de Converso

CharToString
Converte um cdigo de smbolo em uma string de um caractere.
string CharToString(
uchar char_code

// cdigo numrico de um smbolo

);

Parmetros
char_code
[in] Cdigo de um smbolo ANSI.
Valor do Retorno
String com um smbolo ANSI.

2000-2015, MetaQuotes Software Corp.

948

Funes de Converso

CharArrayToString
Copia e converte parte de um array de tipo uchar em uma string retornada
string CharArrayToString(
uchar array[],

// array

int

start=0,

// posio de incio no array

int

count=-1

// nmero de smbolos

uint

codepage=CP_ACP

// cdigo de pgina

);

Parmetros
array[]
[in] Array de tipo uchar.
start=0
[in] Posio a partir da qual a cpia comea. por default 0 usado.
count=-1
[in] Nmero de elementos do array para cpia. Define o comprimento de uma string resultante.
Valor padro -1, que significa copiar at o fim do array, ou at o terminador 0.
codepage=CP_ACP
[in] O valor do cdigo de pgina. Para os mais usados cdigos de pgina fornea as constantes
apropriadas.
Valor do Retorno
String.
Tambm Veja
Uso de um Cdigo de Pgina (Codepage)

2000-2015, MetaQuotes Software Corp.

949

Funes de Converso

ColorToARGB
A funo converte o tipo color em tipo uint para obter a representao ARGB da cor. O formato de cor
ARGB usado para gerar recurso grfico, exibio de texto, assim como a classe da biblioteca padro
CCanvas.
uint ColorToARGB(
color clr,

// converte color em formato de cor

uchar alpha=255

// canal alfa para gerenciamente da transparncia de cor

);

Parmetros
clr
[in] Valor da cor em varivel de tipo color.
alpha
[in] O valor do canal alfa usado para receber a cor em formato ARGB. O valor pode ser definido de
0 (uma cor de um pixel de primeiro plano no altera a exibio de um pixel subjacente) at 255
(uma cor de um pixel subjacente completamente substituda pela cor do pixel do primeiro plano).
Transparncia de cor em termos de percentagem calculada como (1-alpha/255)*100%. Em outras
palavras, quanto menor o valor de canal alfa, mais transparente a cor.
Valor de retorno
Apresenta a cor em formato ARGB onde os valores Alfa, Red, Green, Blue (canal alfa, vermelho,
verde, azul) so definidos em sries de quatro bytes de tipo uint.
Observao
RGB um formato bsico e comumente usado para descrever cor de pixel em uma tela em grficos
de computador. Nomes de cores bsicas so usadas para atribuir componentes de cor vermelho,
verde e azul. Cada componente descrito por um byte especificando a saturao de cor em uma
faixa de 0 a 255 (0x00 a 0XFF formato hexadecimal). J que a cor branca contm todas as cores, ela
descrita como 0xFFFFFF, ou seja, cada um dos trs componentes est presente pelo valor mximo
de 0xFF.
Entretanto, algumas tarefas requerem especificar a transparncia da cor para descrever a aparncia
de uma imagem no caso dela ficar coberta, atravs de uma cor com algum grau de transparncia. O
conceito de canal alfa introduzido para tais casos. Ele implementado como componente adicional
do formato RGB. A estrutura do ARGB mostrado abaixo.

Valores ARGB so tipicamente expressos usando formato hexadecimal com cada par de dgitos
representando os valores dos canais Alpha, Green, e Blue, respectivamente. Por exemplo, a cor
80FFFF00 representa 50.2% amarelo opaco. Inicialmente, 0x80 define valor alfa de 50.2%, uma vez
que 50.2% de valor 0xFF. Ento, o primeiro par FF define o valor mais alto do componente
vermelho; o prximo par FF como o anterior mas para o componente verde; e par final 00
representa o valor mais baixo do componente azul que pode haver (ausncia de azul). Combinao

2000-2015, MetaQuotes Software Corp.

950

Funes de Converso
de cores verde e vermelha resultam na cor amarela. Se o canal alfa no for usado, a entrada pode
ser reduzida para 6 RRGGBB dgitos, por isso que os valores de canal alfa so armazenados nos
bits de topo do tipo inteiro uint.
Dependendo do contexto, dgitos hexadecimais podem ser escritos com o prefixo '0x' ou '#', por
exemplo, 80FFFF00, 0x80FFFF00 ou #80FFFF00.
Exemplo:
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- define transparncia
uchar alfa=0x55;

// 0x55 significa 55/255=21.6 % de transparncia

//--- fazer converso de ARGB para cor clrBlue


PrintFormat("0x%.8X - clrBlue",clrBlue);

PrintFormat("0x%.8X - clrBlue ARGB com alfa=0x55 (transparency 21.6%%)",ColorToARGB(clrBlue,alfa


//--- fazer converso de ARGB para cor clrGreen
PrintFormat("0x%.8X - clrGreen",clrGreen);

PrintFormat("0x%.8X - clrGreen ARGB com alfa=0x55 (transparency 21.6%%)",ColorToARGB(clrGreen,al


//--- fazer converso de ARGB para cor clrRed
PrintFormat("0x%.8X - clrRed",clrRed);

PrintFormat("0x%.8X - clrRed ARGB com alfa=0x55 (transparency 21.6%%)",ColorToARGB(clrRed,alfa))


}

Tambm Veja
Recursos, ResourceCreate(), TextOut(), Tipo color, Tipos char, short, int e long

2000-2015, MetaQuotes Software Corp.

951

Funes de Converso

ColorToString
Converte valor de cor em string na forma de "R,G,B".
string ColorToString(
color color_value,

// valor da cor

bool

// mostrar ou no nome da cor

color_name

);

Parmetros
color_value
[in] Valor da cor em varivel de tipo color.
color_name
[in] Sinaliza a necessidade de retornar o nome da cor, se o nome da cor for idntica a uma das
constantes de cor predefinidas.
Valor do Retorno
Representao de string da cor como "R,G,B", onde R, G e B so constantes decimais de 0 a 255
convertidos em uma string. Se o parmetro color_name=true for definido, a funo tentar
converter o valor da cor no nome da cor.
Exemplo:
string clr=ColorToString(C'0,255,0'); // cor verde
Print(clr);
clr=ColorToString(C'0,255,0',true);

// obtm a constante de cor

Print(clr);

2000-2015, MetaQuotes Software Corp.

952

Funes de Converso

DoubleToString
Converte um valor numrico em string de texto.
string DoubleToString(
double value,

// nmero

int

// numero de dgitos depois do ponto decimal

digits=8

);

Parmetros
value
[in] Valor com um ponto flutuante.
digits
[in] Formato de preciso. Se o valor de digits estiver na faixa entre 0 e 16, um representao de
string de um nmero com a quantidade especificada de dgitos depois do ponto ser obtida. Se o
valor de digits estiver na faixa entre -1 e -16, uma representao de string de um nmero em
notao cientfica com a quantidade especificada de dgitos depois do ponto decimal ser obtida.
Em todos os outros casos, o valor da string conter 8 dgitos depois do ponto decimal.
Valor do Retorno
String contendo uma representao de um nmero com a preciso especificada.
Exemplo:
Print("DoubleToString(120.0 + M_PI) : ",DoubleToString(120.0+M_PI));
Print("DoubleToString(120.0 + M_PI,16) : ",DoubleToString(120.0+M_PI,16));
Print("DoubleToString(120.0 + M_PI,-16) : ",DoubleToString(120.0+M_PI,-16));
Print("DoubleToString(120.0 + M_PI,-1) : ",DoubleToString(120.0+M_PI,-1));
Print("DoubleToString(120.0 + M_PI,-20) : ",DoubleToString(120.0+M_PI,-20));

Tambm Veja
NormalizeDouble, StringToDouble

2000-2015, MetaQuotes Software Corp.

953

Funes de Converso

EnumToString
Converte um valor de enumerao de qualquer tipo para forma de texto.
string EnumToString(
any_enum value

// qualquer tipo de valor de enumerao

);

Parmetros
value
[in] Qualquer tipo de valor de enumerao.
Valor do Retorno
Uma string com uma representao de texto da enumerao. Para obter a mensagem de erro chame
a funo GetLastError().
Observao
A funo pode definir os seguintes valores de erro na varivel _LastError:
ERR_INTERNAL_ERROR erro do ambiente de execuo
ERR_NOT_ENOUGH_MEMORY sem memria suficiente para concluir a operao
ERR_INVALID_PARAMETER no pode permitir o nome do valor da enumerao
Exemplo:
enum interval

// Enumerao de constantes nomeadas

{
month=1,

// intervalo de um ms

two_months,

// dois meses

quarter,

// trs meses - um quadrimestre

halfyear=6,

// meio ano

year=12,

// um ano - 12 months

};
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- define o intervalo de tempo igual a um ms
interval period=month;
Print(EnumToString(period)+"="+IntegerToString(period));
//--- define o intervalo de tempo igual a um quadrimestre (trs meses)
period=quarter;
Print(EnumToString(period)+"="+IntegerToString(period));
//--- define o intervalo de tempo igual a um ano (12 meses)
period=year;
Print(EnumToString(period)+"="+IntegerToString(period));
//--- verifica como o tipo de ordem mostrado

2000-2015, MetaQuotes Software Corp.

954

Funes de Converso
ENUM_ORDER_TYPE type=ORDER_TYPE_BUY;
Print(EnumToString(type)+"="+IntegerToString(type));
//--- verifica como valores incorretos so mostrados
type=WRONG_VALUE;
Print(EnumToString(type)+"="+IntegerToString(type));
// Resultado:
// month=1
// quarter=3
// year=12
// ORDER_TYPE_BUY=0
// ENUM_ORDER_TYPE::-1=-1
}

Tambm Veja
Enumeraes, Variveis de entrada

2000-2015, MetaQuotes Software Corp.

955

Funes de Converso

IntegerToString
Esta funo converte um valor de tipo inteiro em uma string de comprimento especificado e retorna a
string obtida.
string IntegerToString(
long

number,

// nmero

int

str_len=0,

// comprimento da string resultado

ushort fill_symbol=' '

// smbolo de preenchimento

);

Parmetros
number
[in] Nmero para converso.
str_len=0
[in] Comprimento da string. Se o comprimento da string resultante for maior que aquele
especificado, a string no truncada. Se ela for menor, os smbolos de preenchimento (filler)
sero adicionados a esquerda.
fill_symbol=' '
[in] Smbolo de preenchimento. Por padro, ele um espao.
Valor do Retorno
String.

2000-2015, MetaQuotes Software Corp.

956

Funes de Converso

ShortToString
Converte um cdigo de smbolo (unicode) em uma string de um smbolo e retorna a string resultante.
string ShortToString(
ushort symbol_code

// smbolo

);

Parmetros
symbol_code
[in] Cdigo do smbolo. Ao invs de um cdigo de smbolo, voc pode usar uma string literal
contendo um smbolo ou uma string literal com cdigo hexadecimal de 2-bytes correspondente ao
smbolo da tabela Unicode.
Valor do Retorno
String.

2000-2015, MetaQuotes Software Corp.

957

Funes de Converso

ShortArrayToString
Copia parte de um array em uma string retornada.
string ShortArrayToString(
ushort array[],

// array

int

start=0,

// posio de comeo do array

int

count=-1

// nmero de smbolos

);

Parmetros
array[]
[in] Array de tipo ushort (anlogo ao tipo wchar_t).
start=0
[in] Posio, a partir da qual a cpia comea, Default - 0.
count=-1
[in] Nmero de elemento do array para copiar. Define o comprimento de uma string resultante.
Valor padro -1, que significa copiar at o fim do array, ou at o terminador 0.
Valor do Retorno
String.

2000-2015, MetaQuotes Software Corp.

958

Funes de Converso

TimeToString
Converte um valor contendo hora em segundos decorridos deste 01.01.1970 em uma string de formato
"yyyy.mm.dd hh:mi".
string TimeToString(
datetime value,

// nmero

int

// formato de sada

mode=TIME_DATE|TIME_MINUTES

);

Parmetros
value
[in] Hora em segundos a partir de 00:00 1970/01/01.
mode=TIME_DATE|TIME_MINUTES
[in] Modo de entrada de dados adicionais. Pode ser um ou sinalizador combinado:
TIME_DATE obtm como resultado "yyyy.mm.dd",
TIME_MINUTES obtm como resultado "hh:mm",
TIME_SECONDS obm resultados como "hh:mm:ss".
Valor do Retorno
String.

2000-2015, MetaQuotes Software Corp.

959

Funes de Converso

NormalizeDouble
Arredonda um nmero de ponto flutuante para uma preciso especificada.
double NormalizeDouble(
double value,

// nmero normalizado

int

// nmero de dgitos depois do ponto decimal

digits

);

Parmetros
value
[in] Valor com um ponto flutuante.
digits
[in] Formato de preciso, nmero de dgitos depois do ponto (0-8).
Valor do Retorno
Valor de tipo double com preciso predefinida.
Observao
Valores calculados de StopLoss, TakeProfit, e valores de preos de abertura para ordens pendentes
devem ser normalizados com a preciso obtida atravs de Digits().
Favor notar que ao imprimir no Dirio usando a funo Print(), um nmero normalizado pode conter
um nmero maior de posies decimais do que o esperado. Por exemplo, para:
double a=76.671;

// Um nmero normalizado com trs posies decimais

Print("Print(76.671)=",a);

// Imprime como

Print("DoubleToString(a,8)=",DoubleToString(a,8)); // Imprime com um preciso predefinida

voc ter o seguinte no terminal:


DoubleToString(a,8)=76.67100000
Print(76.671)=76.67100000000001
Exemplo:
double pi=M_PI;
Print("pi = ",DoubleToString(pi,16));
double pi_3=NormalizeDouble(M_PI,3);
Print("NormalizeDouble(pi,3) = ",DoubleToString(pi_3,16))
;
double pi_8=NormalizeDouble(M_PI,8);
Print("NormalizeDouble(pi,8) = ",DoubleToString(pi_8,16));
double pi_0=NormalizeDouble(M_PI,0);
Print("NormalizeDouble(pi,0) = ",DoubleToString(pi_0,16));
/*
Resultado:

2000-2015, MetaQuotes Software Corp.

960

Funes de Converso
pi= 3.1415926535897931
NormalizeDouble(pi,3)= 3.1419999999999999
NormalizeDouble(pi,8)= 3.1415926499999998
NormalizeDouble(pi,0)= 3.0000000000000000
*/

Tambm Veja
DoubleToString, Tipos reais(double,float), Reduo de tipos,

2000-2015, MetaQuotes Software Corp.

961

Funes de Converso

StringToCharArray
Copia smbolo a smbolouma string convertida de Unicode para ANSI, para um lugar selecionado de um
array de tipo uchar. Retorna o nmero de elementos copiados.
int StringToCharArray(
string text_string,

// string fonte

uchar&

array[],

// array

int

start=0,

// posio de comeo no array

int

count=-1

// nmero de smbolos

uint

codepage=CP_ACP

// cdigo de pgina

);

Parmetros
text_string
[in] String para copiar.
array[]
[out] Array de tipo uchar.
start=0
[in] Posio a partir da qual a cpia comea. Default - 0.
count=-1
[in] Nmero de elemento do array para copiar. Define o comprimento de uma string resultante.
Valor padro -1, que significa copiar at o fim do array, ou at o terminador 0. Terminador 0
ser tambm copiado para o array destino, neste caso o tamanho de um array dinmico pode ser
aumentado se necessrio para o tamanho da string. Se o tamanho do array inicializado no
especificado, ele determinado pelo compilador, baseado no tamanho da seqncia de
inicializao.
codepage=CP_ACP
[in] O valor do cdigo de pgina. Para os mais usados cdigos de pgina fornea as constantes
apropriadas.
Valor do Retorno
Nmero de elementos copiados.
Tambm Veja
Uso de um Cdigo de Pgina (Codepage)

2000-2015, MetaQuotes Software Corp.

962

Funes de Converso

StringToColor
Converte uma string "R,G,B" ou uma string com o nome da cor em valor de tipo color.
color StringToColor(
string color_string

// representao de string de cor

);

Parmetros
color_string
[in] Representao de string de uma cor de tipo "R,G,B" ou nome de uma das Web-cores
predefinidas.
Valor do Retorno
Valor da cor.
Exemplo:
color str_color=StringToColor("0,127,0");
Print(str_color);
Print((string)str_color);
//--- altera a cor um pouco
str_color=StringToColor("0,128,0");
Print(str_color);
Print((string)str_color);

2000-2015, MetaQuotes Software Corp.

963

Funes de Converso

StringToDouble
A funo converte uma string contendo uma representao de um nmero em um nmero de tipo
double.
double StringToDouble(
string value

// string

);

Parmetros
value
[in] String containing a symbol representation of a number.
Valor do Retorno
Valor de tipo double.

2000-2015, MetaQuotes Software Corp.

964

Funes de Converso

StringToInteger
A funo converte uma string contendo uma representao de smbolo de um nmero em um nmero
de tipo int (inteiro).
long StringToInteger(
string value

// string

);

Parmetros
value
[in] String contendo um nmero.
Valor do Retorno
Valor de tipo long.

2000-2015, MetaQuotes Software Corp.

965

Funes de Converso

StringToShortArray
A funo copia smbolo a smbolo uma string em um lugar especificado de um array de tipo ushort.
Retorna o nmero de elementos copiados.
int StringToShortArray(
string text_string,

// string fonte

ushort& array[],

// array

int

start=0,

// posio de comeo no array

int

count=-1

// nmero de smbolos

);

Parmetros
text_string
[in] String para copiar
array[]
[out] Array de tipo ushort (anlogo ao tipo wchar_t).
start=0
[in] Posio, a partir da qual a cpia comea. Default - 0.
count=-1
[in] Nmero de elemento do array para copiar. Define o comprimento de uma string resultante.
Valor padro -1, que significa copiar at o final do array, ou at o terminador 0. O terminador 0
ser copiado para o array destino, neste caso o tamanho de um array dinmico pode ser
aumentado se necessrio para o tamanho da string. Se o tamanho do array inicializado no
especificado, ele determinado pelo compilador, baseado no tamanho da seqncia de
inicializao.
Valor do Retorno
Nmero de elementos copiados.

2000-2015, MetaQuotes Software Corp.

966

Funes de Converso

StringToTime
A funo converte uma string contendo hora ou data no formato "yyyy.mm.dd [hh:mi]" para o tipo
datetime.
datetime StringToTime(
string value

// string de data/hora

);

Parmetros
value
[in] String no formato " yyyy.mm.dd hh:mi ".
Valor do Retorno
O valor de tipo datetime contendo o nmero total de segundos decorridos desde 01.01.1970.

2000-2015, MetaQuotes Software Corp.

967

Funes de Converso

StringFormat
A funo formata parmetros obtidos e retorna uma string.
string StringFormat(
string format,

// string com descrio de formato

...

// parmetros

...

);

Parmetros
format
[in] String contendo mtodo de formatao. As regras de formao so as mesmas da funo
PrintFormat.
...
[in] Parmetros, separados por vrgula.
Valor do Retorno
String.
Exemplo:

2000-2015, MetaQuotes Software Corp.

968

Funes de Converso

void OnStart()
{
//--- string variables
string output_string;
string temp_string;
string format_string;
//--- prepare the specification header
temp_string=StringFormat("Contract specification for %s:\n",_Symbol);
StringAdd(output_string,temp_string);
//--- int value output
int digits=(int)SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
temp_string=StringFormat("
SYMBOL_DIGITS = %d (number of digits after the decimal point)\n",
digits);
StringAdd(output_string,temp_string);
//--- double value output with variable number of digits after the decimal point
double point_value=SymbolInfoDouble(_Symbol,SYMBOL_POINT);
format_string=StringFormat("
SYMBOL_POINT = %%.%df (point value)\n",
digits);
temp_string=StringFormat(format_string,point_value);
StringAdd(output_string,temp_string);
//--- int value output
int spread=(int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
temp_string=StringFormat("
SYMBOL_SPREAD = %d (current spread in points)\n",
spread);
StringAdd(output_string,temp_string);
//--- int value output
int min_stop=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);
temp_string=StringFormat("
SYMBOL_TRADE_STOPS_LEVEL = %d (minimal indention in points for Stop
min_stop);
StringAdd(output_string,temp_string);
//--- double value output without the fractional part
double contract_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);
temp_string=StringFormat("
SYMBOL_TRADE_CONTRACT_SIZE = %.f (contract size)\n",
contract_size);
StringAdd(output_string,temp_string);
//--- double value output with default accuracy
double tick_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
temp_string=StringFormat("
SYMBOL_TRADE_TICK_SIZE = %f (minimal price change)\n",
tick_size);
StringAdd(output_string,temp_string);
//--- determining the swap calculation mode
int swap_mode=(int)SymbolInfoInteger(_Symbol,SYMBOL_SWAP_MODE);
string str_swap_mode;
switch(swap_mode)
{
case SYMBOL_SWAP_MODE_DISABLED: str_swap_mode="SYMBOL_SWAP_MODE_DISABLED (no swaps)"; break;
case SYMBOL_SWAP_MODE_POINTS: str_swap_mode="SYMBOL_SWAP_MODE_POINTS (in points)"; break;
case SYMBOL_SWAP_MODE_CURRENCY_SYMBOL: str_swap_mode="SYMBOL_SWAP_MODE_CURRENCY_SYMBOL (in mo
case SYMBOL_SWAP_MODE_CURRENCY_MARGIN: str_swap_mode="SYMBOL_SWAP_MODE_CURRENCY_MARGIN (in mo
case SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT: str_swap_mode="SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT (in
case SYMBOL_SWAP_MODE_INTEREST_CURRENT: str_swap_mode="SYMBOL_SWAP_MODE_INTEREST_CURRENT (as
case SYMBOL_SWAP_MODE_INTEREST_OPEN: str_swap_mode="SYMBOL_SWAP_MODE_INTEREST_OPEN (as the sp
case SYMBOL_SWAP_MODE_REOPEN_CURRENT: str_swap_mode="SYMBOL_SWAP_MODE_REOPEN_CURRENT (by reop
case SYMBOL_SWAP_MODE_REOPEN_BID: str_swap_mode="SYMBOL_SWAP_MODE_REOPEN_BID (by reopening po
}
//--- string value output
temp_string=StringFormat("
SYMBOL_SWAP_MODE = %s\n",
str_swap_mode);
StringAdd(output_string,temp_string);
//--- double value output with default accuracy
double swap_long=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_LONG);

2000-2015, MetaQuotes Software Corp.

969

Funes de Converso

temp_string=StringFormat("
SYMBOL_SWAP_LONG = %f (long swap value)\n",
swap_long);
StringAdd(output_string,temp_string);
//--- double value output with default accuracy
double swap_short=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_SHORT);
temp_string=StringFormat("
SYMBOL_SWAP_SHORT = %f (short swap value)\n",
swap_short);
StringAdd(output_string,temp_string);
//--- determining the trading mode
int trade_mode=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_MODE);
string str_trade_mode;
switch(trade_mode)
{
case SYMBOL_TRADE_MODE_DISABLED: str_trade_mode="SYMBOL_TRADE_MODE_DISABLED (trade is disable
case SYMBOL_TRADE_MODE_LONGONLY: str_trade_mode="SYMBOL_TRADE_MODE_LONGONLY (only long positi
case SYMBOL_TRADE_MODE_SHORTONLY: str_trade_mode="SYMBOL_TRADE_MODE_SHORTONLY (only short pos
case SYMBOL_TRADE_MODE_CLOSEONLY: str_trade_mode="SYMBOL_TRADE_MODE_CLOSEONLY (only position
case SYMBOL_TRADE_MODE_FULL: str_trade_mode="SYMBOL_TRADE_MODE_FULL (no trade restrictions)";
}
//--- string value output
temp_string=StringFormat("
SYMBOL_TRADE_MODE = %s\n",
str_trade_mode);
StringAdd(output_string,temp_string);
//--- double value output in a compact format
double volume_min=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
temp_string=StringFormat("
SYMBOL_VOLUME_MIN = %g (minimal volume for a deal)\n",volume_min);
StringAdd(output_string,temp_string);
//--- double value output in a compact format
double volume_step=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
temp_string=StringFormat("
SYMBOL_VOLUME_STEP = %g (minimal volume change step)\n",volume_step
StringAdd(output_string,temp_string);
//--- double value output in a compact format
double volume_max=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
temp_string=StringFormat("
SYMBOL_VOLUME_MAX = %g (maximal volume for a deal)\n",volume_max);
StringAdd(output_string,temp_string);
//--- determining the contract price calculation mode
int calc_mode=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_CALC_MODE);
string str_calc_mode;
switch(calc_mode)
{
case SYMBOL_CALC_MODE_FOREX:str_calc_mode="SYMBOL_CALC_MODE_FOREX (Forex)";break;
case SYMBOL_CALC_MODE_FUTURES:str_calc_mode="SYMBOL_CALC_MODE_FUTURES (futures)";break;
case SYMBOL_CALC_MODE_CFD:str_calc_mode="SYMBOL_CALC_MODE_CFD (CFD)";break;
case SYMBOL_CALC_MODE_CFDINDEX:str_calc_mode="SYMBOL_CALC_MODE_CFDINDEX (CFD for indices)";br
case SYMBOL_CALC_MODE_CFDLEVERAGE:str_calc_mode="SYMBOL_CALC_MODE_CFDLEVERAGE (CFD at leverag
case SYMBOL_CALC_MODE_EXCH_STOCKS:str_calc_mode="SYMBOL_CALC_MODE_EXCH_STOCKS (trading securi
case SYMBOL_CALC_MODE_EXCH_FUTURES:str_calc_mode="SYMBOL_CALC_MODE_EXCH_FUTURES (trading futu
case SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS:str_calc_mode="SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS (
}
//--- string value output
temp_string=StringFormat("
SYMBOL_TRADE_CALC_MODE = %s\n",
str_calc_mode);
StringAdd(output_string,temp_string);
//--- double value output with 2 digits after the decimal point
double margin_initial=SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL);
temp_string=StringFormat("
SYMBOL_MARGIN_INITIAL = %.2f (initial margin)\n",
margin_initial);
StringAdd(output_string,temp_string);
//--- double value output with 2 digits after the decimal point
double margin_maintenance=SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_MAINTENANCE);
temp_string=StringFormat("
SYMBOL_MARGIN_MAINTENANCE = %.2f (maintenance margin)\n",

2000-2015, MetaQuotes Software Corp.

970

Funes de Converso
margin_maintenance);
StringAdd(output_string,temp_string);
//--- int value output
int freeze_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL);
temp_string=StringFormat("
SYMBOL_TRADE_FREEZE_LEVEL = %d (order freeze level in points)",
freeze_level);
StringAdd(output_string,temp_string);
Print(output_string);
Comment(output_string);
/* execution result
Contract specification for EURUSD:
SYMBOL_DIGITS = 5 (number of digits after the decimal point)
SYMBOL_POINT = 0.00001 (point value)
SYMBOL_SPREAD = 10 (current spread in points)
SYMBOL_TRADE_STOPS_LEVEL = 18 (minimal indention in points for Stop orders)
SYMBOL_TRADE_CONTRACT_SIZE = 100000 (contract size)
SYMBOL_TRADE_TICK_SIZE = 0.000010 (minimal price change)
SYMBOL_SWAP_MODE = SYMBOL_SWAP_MODE_POINTS (in points)
SYMBOL_SWAP_LONG = -0.700000 (buy order swap value)
SYMBOL_SWAP_SHORT = -1.000000 (sell order swap value)
SYMBOL_TRADE_MODE = SYMBOL_TRADE_MODE_FULL (no trade restrictions)
SYMBOL_VOLUME_MIN = 0.01 (minimal volume for a deal)
SYMBOL_VOLUME_STEP = 0.01 (minimal volume change step)
SYMBOL_VOLUME_MAX = 500 (maximal volume for a deal)
SYMBOL_TRADE_CALC_MODE = SYMBOL_CALC_MODE_FOREX (Forex)
SYMBOL_MARGIN_INITIAL = 0.00 (initial margin)
SYMBOL_MARGIN_MAINTENANCE = 0.00 (maintenance margin)
SYMBOL_TRADE_FREEZE_LEVEL = 0 (order freeze level in points)
*/
}

Tambm Veja
PrintFormat, DoubleToString,ColorToString, TimeToString

2000-2015, MetaQuotes Software Corp.

971

Funes Matemticas

Funes Matemticas
Um conjunto de funes matemticas e trigonomtricas.
Funo

Ao

MathAbs

Retorna o valor absoluto (modulo) do valor


numrico especificado

MathArccos

Retorna o arco-cosseno de x em radianos

MathArcsin

Retorna o arco-seno de x em radianos

MathArctan

Retorna o arco-tangente de x em radianos

MathCeil

Retorna o valor numrico inteiro mais prximo


do acima

MathCos

Retorna o cosseno de um nmero

MathExp

Retorna o exponencial de um nmero

MathFloor

Retorna o valor numrico inteiro mais prximo


do abaixo

MathLog

Retorna o logaritmo natural

MathLog10

Retorna o logaritmo decimal (de um nmero na


base 10)

MathMax

Retorna o valor mximo entre dois valores


numricos

MathMin

Retorna de valor mnimo entre dois valores


numricos

MathMod

Retorna o resto real da diviso de dois nmeros

MathPow

Eleva uma base a um expoente especificado

MathRand

Retorna um valor pseudo-aleatrio entre 0 e


32767

MathRound

Arredonda um valor para o inteiro mais prximo

MathSin

Retorna o seno de um nmero

MathSqrt

Retorna a raiz quadrada

MathSrand

Define o ponto inicial para gerao de uma


srie de inteiros pseudo-aleatrios

MathTan

Retorna a tangente de um nmero

MathIsValidNumber

Verifica a validade de um nmero real

2000-2015, MetaQuotes Software Corp.

972

Funes Matemticas

MathAbs
A funo retorna o valor absoluto (mdulo) de um valor numrico especificado.
double MathAbs(
double value

// valor numrico

);

Parmetros
value
[in] Valor numrico.
Valor do Retorno
Valor de tipo double maior ou igual a zero.
Observao
A invs da funo MathAbs(), voc pode usar fabs().

2000-2015, MetaQuotes Software Corp.

973

Funes Matemticas

MathArccos
A funo retorna o arco-cosseno de x no intervalo de 0 a

radianos.

double MathArccos(
double val

// -1<val<1

);

Parmetros
val
[in] Valor de val entre -1 e 1, valor sobre o qual ser calculado o arco-cosseno.
Valor do Retorno
Arco-cosseno de um nmero em radianos. Se val for menor que -1 ou maior que 1, a funo retorna
NaN (valor indeterminado).
Observao
Ao invs da funo MathArccos(), voc pode usar acos().
Tambm Veja
Tipos reais (double, float)

2000-2015, MetaQuotes Software Corp.

974

Funes Matemticas

MathArcsin
A funo retorna o arco-seno de x no intervalo de - /2 a /2 radianos.
double MathArcsin(
double val

// -1<value<1

);

Parmetros
val
[in] Valor de val entre -1 e 1, valor sobre o qual ser calculado o arco-seno.
Valor do Retorno
Arco-seno do nmero val em radianos no intervalo de - /2 e /2 radianos. Se val for menor que -1
ou maior que 1, a funo retorna NaN (valor indeterminado).
Observao
Ao invs da funo MathArcsin(), voc pode usar asin().
Tambm Veja
Tipos reais (double, float)

2000-2015, MetaQuotes Software Corp.

975

Funes Matemticas

MathArctan
A funo retorna o arco-tangente de x. Se x for igual a 0, a funo retorna 0.
double MathArctan(
double value

// tangente

);

Parmetros
value
[in] Um nmero representando uma tangente.
Valor do Retorno
MathArctan retorna um valor no intervalo de - /2 a /2 radianos.
Observao
Ao invs da funo MathArctan(), voc pode usar atan().

2000-2015, MetaQuotes Software Corp.

976

Funes Matemticas

MathCeil
A funo retorna o valor do nmero inteiro mais prximo do acima.
double MathCeil(
double val

// nmero

);

Parmetros
val
[in] Valor numrico.
Valor do Retorno
Valor numrico representando o menor inteiro que excede ou igual a val.
Observao
Ao invs da funo MathCeil(), voc pode usar ceil().

2000-2015, MetaQuotes Software Corp.

977

Funes Matemticas

MathCos
A funo retorna o cosseno de um ngulo.
double MathCos(
double value

// nmero

);

Parmetros
value
[in] ngulo em radianos.
Valor do Retorno
Valor de tipo double no intervalo de -1 a 1.
Observao
A invs de MathCos(), voc pode usar cos().

2000-2015, MetaQuotes Software Corp.

978

Funes Matemticas

MathExp
A funo retorna o valor e elevado a potncia d.
double MathExp(
double value

// potncia para o nmero e

);

Parmetros
value
[in] Um nmero especificando a potncia.
Valor do Retorno
Um nmero de tipo double. Em "overflow", a funo retorna INF (infinito), em caso de perda de
ordem MathExp retorna 0.
Observao
Ao invs de MathExp(), voc pode usar exp().
Tambm Veja
Tipos reais (double, float)

2000-2015, MetaQuotes Software Corp.

979

Funes Matemticas

MathFloor
A funo retorna o valor numrico inteiro mais prximo do abaixo.
double MathFloor(
double val

// nmero

);

Parmetros
val
[in] Valor numrico.
Valor do Retorno
Um valor numrico representando o maior inteiro que menor ou igual a val.
Observao
Ao invs de MathFloor(), voc pode usar floor().

2000-2015, MetaQuotes Software Corp.

980

Funes Matemticas

MathLog
A funo retorna o logaritmo natural.
double MathLog(
double val

// valor aplicado ao logaritmo

);

Parmetros
val
[in] Valor cujo logaritmo deve ser encontrado.
Valor do Retorno
O logaritmo natural de val em caso de sucesso. Se val for negativo, a funo retorna NaN (valor
indeterminado). Se val for igual a 0, a funo retorna INF (infinito).
Observao
Ao invs de MathLog(), voc pode usar log().
Tambm Veja
Tipos reais (double, float)

2000-2015, MetaQuotes Software Corp.

981

Funes Matemticas

MathLog
Retorna o logaritmo de um nmero na base 10.
double MathLog10(
double val

// nmero aplicado ao logaritmo

);

Parmetros
val
[in] Valor numrico cujo logaritmo comum deve ser encontrado.
Valor do Retorno
O logaritmo comum em caso de sucesso. Se val for negativo, a funo retorna NaN (valor
indeterminado). Se val for igual a 0, a funo retorna INF (infinito).
Observao
Ao invs de MathLog10(), voc pode usar log10().
Tambm Veja
Tipos reais (double, float)

2000-2015, MetaQuotes Software Corp.

982

Funes Matemticas

MathMax
A funo retorna o valor mximo entre dois valores.
double MathMax(
double value1,

// primeiro valor

double value2

// segundo valor

);

Parmetros
value1
[in] Primeiro valor numrico.
value2
[in] Segundo valor numrico.
Valor do Retorno
O maior dos dois valores.
Observao
Ao invs de MathMax(), voc pode usar fmax(). As funes fmax(), fmin(), MathMax(), MathMin()
podem trabalhar com tipos inteiros sem convert-los para o tipo double.
Se parmetros de diferentes tipos so passados para um funo, o parmetro do menor tipo
automaticamente convertido para o maior tipo. O tipo do valor de retorno corresponde ao do maior
tipo.
Se dados de mesmo tipo so passados, nenhuma converso realizada.

2000-2015, MetaQuotes Software Corp.

983

Funes Matemticas

MathMin
A funo retorna o valor mnimo entre dois valores.
double MathMin(
double value1,

// primeiro valor

double value2

// segundo valor

);

Parmetros
value1
[in] Primeiro valor numrico.
value2
[in] Segundo valor numrico.
Valor do Retorno
O menor valor dos dois valores.
Observao
Ao invs de MathMin(), voc pode usar fmin(). As funes fmax(), fmin(), MathMax(), MathMin()
podem trabalhar com tipos inteiros sem convert-los para o tipo double.
Se parmetros de diferentes tipos so passados para um funo, o parmetro do menor tipo
automaticamente convertido para o maior tipo. O tipo do valor de retorno corresponde ao do maior
tipo.
Se dados de mesmo tipo so passados, nenhuma converso realizada.

2000-2015, MetaQuotes Software Corp.

984

Funes Matemticas

MathMod
A funo retorna o resto real da diviso de dois nmeros.
double MathMod(
double value,

// valor do dividendo

double value2

// valor do divisor

);

Parmetros
value
[in] Valor do dividendo.
value2
[in] Valor do divisor.
Valor do Retorno
A funo MathMod calcula o valor real de f de val / y tal que val = i * y + f , onde i um inteiro, f
tem o mesmo sinal de val, e o valor absoluto de f menor que o valor absoluto de y.
Observao
Ao invs de MathMod(), voc pode usar fmod().

2000-2015, MetaQuotes Software Corp.

985

Funes Matemticas

MathPow
A funo eleva uma base a uma potncia especificada.
double MathPow(
double base,

// base

double exponent

// valor do expoente

);

Parmetros
base
[in] Base.
exponent
[in] Valor do expoente.
Valor do Retorno
Valor da base elevada a uma potncia especificada.
Observao
Ao invs de MathPow(), voc pode usar pow().

2000-2015, MetaQuotes Software Corp.

986

Funes Matemticas

MathRand
Retorna um inteiro pseudo-aleatrio no intervalo de 0 a 32767.
int MathRand();

Valor do Retorno
Valor de um inteiro no intervalo de 0 a 32767.
Observao
Antes da primeira chamada da funo, necessrio chamar MathSrand para definir o gerador de
nmeros pseudo-aleatrio para o estado inicial.
Observao
Ao invs de MathRand(), voc pode usar rand().

2000-2015, MetaQuotes Software Corp.

987

Funes Matemticas

MathRound
A funo retorna o valor arredondado para o inteiro mais prximo de um valor numrico especificado.
double MathRound(
double value

// valor a ser arredondado

);

Parmetros
value
[in] Valor numrico antes do arredondamento.
Valor do Retorno
Valor arredondado at o inteiro mais prximo.
Observao
Ao invs de MathRound(), voc pode usar round().

2000-2015, MetaQuotes Software Corp.

988

Funes Matemticas

MathSin
Retorna o seno de um ngulo especificado.
double MathSin(
double value

// argumento em radianos

);

Parmetros
value
[in] ngulo em radianos.
Valor do Retorno
Seno de um ngulo medido em radianos. Retorna um valor no intervalo de -1 a 1.
Observao
Ao invs de MathSin(), voc pode usar sin().

2000-2015, MetaQuotes Software Corp.

989

Funes Matemticas

MathSqrt
Retorna a raiz quadrada de um nmero.
double MathSqrt(
double value

// nmero positivo

);

Parmetros
value
[in] Valor numrico positivo.
Valor do Retorno
Raiz quadrada de um valor. Se val for negativo, a funo retorna NaN (valor indeterminado).
Observao
Ao invs de MathSqrt(), voc pode usar sqrt().
Tambm Veja
Tipos reais (double, float)

2000-2015, MetaQuotes Software Corp.

990

Funes Matemticas

MathSrand
Define o ponto inicial para gerao de uma srie de inteiros pseudo-aleatrios.
void MathSrand(
int seed

// nmero de inicializao

);

Parmetros
seed
[in] Starting number for the sequence of random numbers.
Valor do Retorno
Sem valor de retorno.
Observao
A funo MathRand() usada para gerar uma seqncia de nmeros pseudo-aleatrios. Chamar
MathSrand() com um certo nmero de inicializao permite produzir sempre a mesma seqncia de
nmeros pseudo-aleatrios.
Para garantir o recebimento de uma seqncia no recorrente, use a chamada de
MathSrand(GetTickCount()), uma vez que o valor de GetTickCount() aumenta a partir do momento
do incio do sistema operativo e no se repete dentro de 49 dias, quando o contador built-in de
milissegundos transborda. O uso do MathSrand(TimeCurrent()) no adequado, porque a funo
TimeCurrent() retorna a hora do ltimo tick, que pode no se alterar por um longo tempo, por
exemplo, nos finais de semana.
A inicializao do gerador de nmeros aleatrios usando MathSrand() para indicadores e Expert
Advisors melhor realizada no handler OnInit(); isso evita os seguidos reincios mltiplos caso a
inicializao do gerador fosse colocada em OnTick() ou OnCalculate().
Ao invs da funo MathSrand(), voc pode usar a funo srand().
Exemplo:
#property description "The indicator shows the central limit theorem, which states:"

#property description "The sum of a sufficiently large number of weakly dependent random variables,
#property description "having approximately equal magnitude (none of the summands dominates,"

#property description "or makes a determining contribution to the sum), has a distribution close to
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- Properties of the graphical construction


#property indicator_label1

"Label"

#property indicator_type1

DRAW_HISTOGRAM

#property indicator_color1

clrRoyalBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- Uma varivel de entrada


input int

sample_number=10;

2000-2015, MetaQuotes Software Corp.

991

Funes Matemticas
//--- An indicator buffer to for drawing the distribution
double

LabelBuffer[];

//--- A counter of ticks


double

ticks_counter;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
void OnInit()
{
//--- Ligando um array e um buffer de indicador
SetIndexBuffer(0,LabelBuffer,INDICATOR_DATA);
//--- turn the indicator buffer around from the present to the past
ArraySetAsSeries(LabelBuffer,true);
//--- Initialize the generator of random numbers
MathSrand(GetTickCount());
//--- Initialize the counter of ticks
ticks_counter=0;
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- For a zero counter reset the indicator buffer
if(ticks_counter==0) ArrayInitialize(LabelBuffer,0);
//--- Aumentar o contador
ticks_counter++;
//--- We should periodically reset the counter ticks, to revive the distribution
if(ticks_counter>100)
{
Print("We've reset the indicator values, let's start filling the cells once again");
ticks_counter=0;
}
//--- Get a sample of random values as the sum of three numbers from 0 to 7
for(int i=0;i<sample_number;i++)
{

//--- Calculation of the index of the cell, where the random number falls as the sum of three
int rand_index=0;
//--- Get three random numbers from 0 to 7
for(int k=0;k<3;k++)

2000-2015, MetaQuotes Software Corp.

992

Funes Matemticas
{
//--- A remainder in the division by 7 will return a value from 0 to 6
rand_index+=MathRand()%7;
}
//--- Increase the value in the cell number rand_index by 1
LabelBuffer[rand_index]++;
}
//--- Exit the OnCalculate() handler
return(rates_total);
}

2000-2015, MetaQuotes Software Corp.

993

Funes Matemticas

MathTan
A funo retorna a tangente de um nmero.
double MathTan(
double rad

// argumento em radianos

);

Parmetros
rad
[in] ngulo em radianos.
Valor do Retorno
Tangente do rad. Se rad for maior ou igual a 263, ou menor ou igual a -263, uma perda de
significncia no resultado ocorre, neste caso a funo retorna um nmero indefinido.
Observao
Ao invs de MathTan(), voc pode usar tan().
Tambm Veja
Tipos reais (double, float)

2000-2015, MetaQuotes Software Corp.

994

Funes Matemticas

MathIsValidNumber
Verifica a validade de um nmero real.
bool MathIsValidNumber(
double number

// nmero para verificar

);

Parmetros
number
[in] Valor numrico verificado.
Valor do Retorno
Retorna true, se o valor verificado for um nmero real aceitvel. Se o valor verificado for infinito
positivo ou infinito negativo, ou "not a number" (NaN), a funo retorna false.
Exemplo:
double abnormal=MathArcsin(2.0);
if(!MathIsValidNumber(abnormal)) Print("Ateno! MathArcsin(2.0) = ",abnormal);

Tambm Veja
Tipos Reais (double, float)

2000-2015, MetaQuotes Software Corp.

995

Funes de String

Funes de String
Este um grupo de funes destinado a trabalhar com dados do tipo string.
Funo

Ao

StringAdd

Adiciona uma string no final de uma outra


string

StringBufferLen

Retorna o tamanho de buffer alocado para uma


string

StringCompare

Compara duas string e retorna 1 se a primeira


string for maior que a segunda; 0 - se as string
so iguais; -1 (menos 1) - se a primeira string
for menor que a segunda.

StringConcatenate

Forma uma string dos parmetros passados

StringFill

Preenche uma string especificada com smbolos


selecionados

StringFind

Busca por uma substring em uma string

StringGetCharacter

Retorna o valor de um nmero localizado na


posio de string especificada

StringInit

Inicializa
uma
string
com
smbolos
especificados e fornece o comprimento da
string especificada

StringLen

Retorna o nmero de smbolos em uma string

StringReplace

Substitui todas as substrings encontradas em


uma string por uma seqncia de smbolos

StringSetCharacter

Retorna uma cpia de uma string com o valor


alterado de um smbolo na posio especificada

StringSplit

Obtm substrings a partir de um separador


especificado da string especificada, retorna o
nmero de substrings obtidas

StringSubstr

Extrai uma substring a partir de uma string de


texto comeando a partir de uma posio
especificada

StringToLower

Transforma todos os smbolos de uma string


selecionada para minscula pela localizao

StringToUpper

Transforma todos os smbolos de uma string


selecionada para maiscula pela localizao

StringTrimLeft

Remove caracteres de quebra de linha, espaos


e tabs na parte esquerda da string

StringTrimRight

Remove caracteres de quebra de linha, espaos


e tabs na parte direita da string

2000-2015, MetaQuotes Software Corp.

996

Funes de String

StringAdd
A funo adiciona uma substring no final de uma string.
bool StringAdd(
string& string_var,

// string, na qual ns adicionados

string

// string, que adicionada

add_substring

);

Parmetros
string_var
[in][out] String, na qual uma outra string adicionada.
add_substring
[in] String que adicionada ao final de uma string fonte.
Valor do Retorno
Em caso de sucesso retorna verdadeiro, caso contrrio falso. A fim de obter o cdigo de erro, a
funo GetLastError() deve ser chamada.
Exemplo:
void OnStart()
{
long length=1000000;
string a="a",b="b",c;
//--- primeiro mtodo
uint start=GetTickCount(),stop;
long i;
for(i=0;i<length;i++)
{
c=a+b;
}
stop=GetTickCount();
Print("tempo para 'c = a + b' = ",(stop-start)," milissegundos, i = ",i);
//--- segundo mtodo
start=GetTickCount();
for(i=0;i<length;i++)
{
StringAdd(a,b);
}
stop=GetTickCount();
Print("tempo para 'c = a + b' = ",(stop-start)," milissegundos, i = ",i);
//--- terceiro mtodo
start=GetTickCount();
a="a"; // reinicializa a varivel a
for(i=0;i<length;i++)

2000-2015, MetaQuotes Software Corp.

997

Funes de String
{
StringConcatenate(c,a,b);
}
stop=GetTickCount();
Print("tempo para 'StringConcatenate(c,a,b)' = ",(stop-start)," milissegundos, i = ",i);
}

Tambm Veja
StringConcatenate

2000-2015, MetaQuotes Software Corp.

998

Funes de String

StringBufferLen
A funo retorna o tamanho de buffer alocado para a string.
int StringBufferLen(
string string_var

// string

Parmetros
string_var
[in] Seqncia.
Valor do Retorno
O valor 0 significa que a string constante e o tamanho do buffer no pode ser alterado. -1
significa que a string pertence ao terminal cliente, e modificaes no contedo do buffer pode ter
resultados indeterminados.
Observao
O tamanho mnimo do buffer igual a 16.
Exemplo:
void OnStart()
{
long length=1000;
string a="a",b="b";
//--long i;
Print("antes: StringBufferLen(a) = ",StringBufferLen(a),
"

StringLen(a) = ",StringLen(a));

for(i=0;i<length;i++)
{
StringAdd(a,b);
}
Print("aps: StringBufferLen(a) = ",StringBufferLen(a),
"

StringLen(a) = ",StringLen(a));

Tambm Veja
StringAdd, StringInit, StringLen, StringFill

2000-2015, MetaQuotes Software Corp.

999

Funes de String

StringCompare
A funo compara duas strings e retorna o resultada da comparao na forma de um inteiro.
int StringCompare(
const string& string1,

// a primeira string na comparao

const string& string2,

// a segunda string na comparao

bool

// seleo do modo sensibilidade maiscula/minscula p

case_sensitive=true

);

Parmetros
string1
[in] A primeira string.
string2
[in] A segunda string.
case_sensitive=true
[in] Seleo do modo de sensibilidade maiscula/minscula. Se for true, ento "A">"a". Se for
false, ento "A"="a". Por default, o valor igual a true.
Valor do Retorno
-1 (menos um), se string1<string2
0 (zero), se string1=string2
1 (um), se string1>string2
Observao
As strings so comparadas smbolo a smbolo, os smbolos so comparados na ordem alfabtica em
concordncia como o cdigo de pgina corrente.
Exemplo:
void OnStart()
{
//--- qual maior - apple ou home?
string s1="Apple";
string s2="home";
//--- compara com sensibilidade maiscula/minscula
int result1=StringCompare(s1,s2);
if(result1>0) PrintFormat("Comparao sensvel caso: %s > %s",s1,s2);
else
{
if(result1<0)PrintFormat("Comparao sensvel caso: %s < %s",s1,s2);
else PrintFormat("Comparao sensvel caso: %s = %s",s1,s2);
}
//--- Comparao insensvel caso
int result2=StringCompare(s1,s2,false);
if(result2>0) PrintFormat("Comparao insensvel caso: %s > %s",s1,s2);
else

2000-2015, MetaQuotes Software Corp.

1000

Funes de String
{
if(result2<0)PrintFormat("Comparao insensvel caso: %s < %s",s1,s2);
else PrintFormat("Comparao insensvel caso: %s = %s",s1,s2);
}
/* Resultado:

Comparao sensvel caso: Apple < home

Comparao insensvel caso: Apple < home

*/
}

Tambm Veja
Tipo de String, CharToString(), ShortToString(), StringToCharArray(), StringToShortArray(),
StringGetCharacter(), Uso de um Cdigo de Pgina

2000-2015, MetaQuotes Software Corp.

1001

Funes de String

StringConcatenate
A funo forma uma string de parmetros passados e retorna o tamanho da string formada.
Parmetros podem ser de qualquer tipo. O nmero de parmetros no pode ser menor que 2 ou maior
que 64.
int StringConcatenate(
string& string_var,

// string para formar

void argument1

// primeiro parmetro de qualquer tipo simples

void argument2

// segundo parmetro de qualquer tipo simples

...

// prximo parmetro de qualquer tipo simples

);

Parmetros
string_var
[out] String que ser formada como resultado da concatenao.
argumentN
[in] Quaisquer valores separados por vrgula. De 2 a 63 parmetros de qualquer tipo simples.
Valor do Retorno
Retorna o comprimento da string, formada pela concatenao dos parmetros transformados em
tipo string. Os parmetros so transformados em strings em concordncia com as mesmas regras
aplicadas em Print() e Comment().
Tambm Veja
StringAdd

2000-2015, MetaQuotes Software Corp.

1002

Funes de String

StringFill
Preenche uma string selecionada com um smbolo especificado.
bool StringFill(
string&

string_var,

// string a preencher

ushort

character

// smbolos que preenchero a string

);

Parmetros
string_var
[in][out] String, que ser preenchida pelo smbolo selecionado.
character
[in] Smbolo a partir do qual a string ser preenchida.
Valor do Retorno
Em caso de sucesso retorna true, caso contrrio - false. Para obter o cdigo de erro chame
GetLastError().
Observao
Preencher uma string no lugar significa que os smbolos so inseridos diretamente na string sem
operaes transitrias de criar ou copiar uma nova string. Isso permite economizar o tempo da
operao.
Exemplo:
void OnStart()
{
string str;
StringInit(str,20,'_');
Print("str = ",str);
StringFill(str,0);
Print("str = ",str,": StringBufferLen(str) = ", StringBufferLen(str));
}
// Resultado
//

str = ____________________

//

str =

: StringBufferLen(str) = 20

//

Tambm Veja
StringBufferLen, StringLen, StringInit

2000-2015, MetaQuotes Software Corp.

1003

Funes de String

StringFind
Busca por uma substring em uma string.
int StringFind(
string string_value,

// string na qual a busca feita

string match_substring,

// o que procurado

int

// a partir de qual posio a busca inicia

start_pos=0

);

Parmetros
string_value
[in] String, na qual a a busca feita.
match_substring
[in] Substring procurada.
start_pos=0
[in] Posio na string a partir da qual a busca iniciada.
Valor do Retorno
Retorna o nmero da posio na string, a partir da qual a substring procurada comea, ou -1, se a
substring no foi encontrada.

2000-2015, MetaQuotes Software Corp.

1004

Funes de String

StringGetCharacter
Retorna o valor de um smbolo, localizado na posio especificada de uma string.
ushort StringGetCharacter(
string string_value,

// string

int

// posio do smbolo na string

pos

);

Parmetros
string_value
[in] Seqncia.
pos
[in] Posio de um smbolo na string. Pode ser de 0 a StringLen(text) -1.
Valor do Retorno
Cdigo do smbolo ou 0 em caso de um erro. Para obter o cdigo de erro chame GetLastError().

2000-2015, MetaQuotes Software Corp.

1005

Funes de String

StringInit
Inicializa uma string com um smbolo especificado e fornece o tamanho da string especificada.
bool StringInit(
string&

string_var,

// string para inicializao

int

new_len=0,

// comprimento da string requerida aps inicializao

ushort

character=0

// smbolo, com o qual a string ser preenchida

);

Parmetros
string_var
[in][out] String que deve ser inicializada e desinicializada.
new_len=0
[in] Comprimento da string aps inicializao. Se length=0, ela desinicializa a string, isto , o
buffer da string limpo e o endereo do buffer zerado.
character=0
[in] Smbolo para preencher a string.
Valor do Retorno
Em caso de sucesso retorna true, caso contrrio - false. Para obter o cdigo de erro chame
GetLastError().
Observao
Se character=0 e o comprimento new_len>0, o buffer da string de comprimento indicado ser
alocado e preenchido com zeros. O comprimento da string ser igual a zero, porque o buffer inteiro
ser preenchido com terminadores de string.
Exemplo:
void OnStart()
{
//--string str;
StringInit(str,200,0);
Print("str = ",str,": StringBufferLen(str) = ",
StringBufferLen(str),"

StringLen(str) = ",StringLen(str));

}
/*

Resultado:

str = : StringBufferLen(str) = 200

StringLen(str) = 0

*/

Tambm Veja
StringBufferLen, StringLen

2000-2015, MetaQuotes Software Corp.

1006

Funes de String

StringLen
Retorna o nmero de smbolos em uma string.
int StringLen(
string string_value

// string

);

Parmetros
string_value
[in] String para calcular o comprimento.
Valor do Retorno
O nmero de smbolos em uma string sem o zero final.

2000-2015, MetaQuotes Software Corp.

1007

Funes de String

StringReplace
Substitui todas as substrings encontradas de uma string por uma seqncia de smbolos.
int StringReplace(
string&

str,

// a string na qual substrings sero substitudas

const string

find,

// a substring procurada

const string

replacement

// a substring que ser inserida nas posies encontradas

);

Parmetros
str
[in][out] A string na qual voc ir substituir substrings.
find
[in] A substring que deseja substituir.
replacement
[in] A string que ser inserida na lugar da encontrada.
Valor do Retorno
A funo retorna o nmero de substituies no caso de sucesso, caso contrrio -1. Para obter o
cdigo do erro chame a funo GetLastError().
Observao
Se a funo rodou com sucesso, mas nenhuma substituio foi feita (a substring a ser substituda
no foi encontrada), ela retorna 0.
O erro pode resultar de parmetros str ou find incorretos (vazio ou string no inicializada, veja
StringInit() ). Alm disso, o erro ocorre se no houver memria suficiente para concluir a
substituio.
Exemplo:
string text="The quick brown fox jumped over the lazy dog.";
int replaced=StringReplace(text,"quick","slow");
replaced+=StringReplace(text,"brown","black");
replaced+=StringReplace(text,"fox","bear");
Print("Replaced: ", replaced,". Result=",text);
//

Resultado

//

Substitudo: 3. Resultado=The slow black bear jumped over the lazy dog.

//

Tambm Veja
StringSetCharacter(), StringSubstr()

2000-2015, MetaQuotes Software Corp.

1008

Funes de String

StringSetCharacter
Retorna uma cpia de uma string com um caractere alterado na posio especificada.
bool StringSetCharacter(
string& string_var,

// string

int

pos,

// posio

ushort

character

// caractere

);

Parmetros
string_var
[in][out] String.
pos
[in] Posio de um caractere em uma string. Pode ser de 0 a StringLen(text).
character
[in] Cdigo Unicode de um smbolo.
Observao
Se pos for menor que o comprimento da string e o valor de cdigo do smbolo = 0, a string
truncada (mas o tamanho de buffer, alocado para a string permanece inalterado). O comprimento da
string se torna igual a pos.
Se pos for igual ao comprimento da string, o smbolo especificado adicionado ao final da string, e
o comprimento aumentado em um.
Exemplo:
void OnStart()
{
string str="0123456789";
Print("antes: str = ",str,",StringBufferLen(str) = ",
StringBufferLen(str),"

StringLen(str) = ",StringLen(str));

//--- adicionado valor zero no meio


StringSetCharacter(str,6,0);
Print("aps: str = ",str,",StringBufferLen(str) = ",
StringBufferLen(str),"

StringLen(str) = ",StringLen(str));

//--- adiciona smbolo no final


int size=StringLen(str);
StringSetCharacter(str,size,'+');
Print("adio: str = ",str,",StringBufferLen(str) = ",
StringBufferLen(str),"

StringLen(str) = ",StringLen(str));

}
/* Resultado
antes: str = 0123456789 ,StringBufferLen(str) = 0
aps: str = 012345 ,StringBufferLen(str) = 16
adio: str = 012345+ ,StringBufferLen(str) = 16

StringLen(str) = 10

StringLen(str) = 6
StringLen(str) = 7

*/

2000-2015, MetaQuotes Software Corp.

1009

Funes de String

Tambm Veja
StringBufferLen, StringLen, StringFill, StringInit

2000-2015, MetaQuotes Software Corp.

1010

Funes de String

StringSplit
Obtm substrings por meio um separador especificado a partir de uma string especificada, retorna o
nmero de substrings obtidas.
int StringSplit(
const string string_value,

// A string que ser pesquisada

const ushort

separator,

// Um separador usado para buscar substrings

string

& result[]

// Um array passado por referencia para obter as substrings e

);

Parmetros
string_value
[in] Uma string da qual voc necessita obter substrings. A string no ser alterada.
pos
[in]
O cdigo do caractere separador. Para obter o cdigo, voc pode usar a funo
StringGetCharacter().
result[]
[out] Um array de strings onde as substrings obtidas esto localizadas.
Valor do Retorno
O nmero de substrings no array result[]. Se o separador no for encontrado na string passada,
somente uma string fonte ser colocada no array.
Se string_value for vazia ou NULL, a funo retornar zero. No caso de um erro, a funo retorna 1. Para obter o cdigo do erro, chame a funo GetLastError().
Exemplo:
string to_split="_life_is_good_"; // Um string para dividir em substrings
string sep="_";

// Um separador como um caractere

ushort u_sep;

// O cdigo do caractere separador

string result[];

// Um array para obter strings

//--- Obtm o cdigo do separador


u_sep=StringGetCharacter(sep,0);
//--- Divide a string em substrings
int k=StringSplit(to_split,u_sep,result);
//--- Exibe um comentrio
PrintFormat("Strings obtidos: %d. Usado separador '%s' com o cdigo %d",k,sep,u_sep);
//--- Agora imprime todos os resultados obtidos
if(k>0)
{
for(int i=0;i<k;i++)
{
PrintFormat("result[%d]=\"%s\"",i,result[i]);
}
}

2000-2015, MetaQuotes Software Corp.

1011

Funes de String

Tambm Veja
StringReplace(), StringSubstr(), StringConcatenate()

2000-2015, MetaQuotes Software Corp.

1012

Funes de String

StringSubstr
Extrai uma substring de uma string de texto iniciando de uma posio especificada.
string StringSubstr(
string string_value,

// string

int

start_pos,

// posio de incio

int

length=-1

// comprimento da string extrada

);

Parmetros
string_value
[in] String de onde ser extrada uma substring.
start_pos
[in] Posio inicial de uma substring. Pode ser de 0 a StringLen(text) -1.
length=-1
[in] Comprimento de uma substring extrada. Se o valor do parmetro for igual a -1 ou o
parmetro no for definido, a substring ser extrada da posio indicada at a final da string.
Valor do Retorno
Cpia de uma substring extrada, se possvel. Caso contrrio, retorna uma string vazia.

2000-2015, MetaQuotes Software Corp.

1013

Funes de String

StringToLower
Transforma todos os smbolos de uma string selecionada em minscula por localizao.
bool StringToLower(
string& string_var

// string para processar

);

Parmetros
string_var
[in][out] String.
Valor do Retorno
Em caso de sucesso retorna true, caso contrrio - false. Para obter o cdigo de erro chame
GetLastError().

2000-2015, MetaQuotes Software Corp.

1014

Funes de String

StringToUpper
Transforma todos os smbolos de uma string selecionada em maiscula por localizao.
bool StringToUpper(
string& string_var

// string para processar

);

Parmetros
string_var
[in][out] String.
Valor do Retorno
Em caso de sucesso retorna true, caso contrrio - false. Para obter o cdigo de erro chame
GetLastError().

2000-2015, MetaQuotes Software Corp.

1015

Funes de String

StringTrimLeft
A funo remove caracteres de quebra de linha, espaos e tabs na parte esquerda da string at o
primeiro smbolo significativo. A string modificada no lugar.
int StringTrimLeft(
string& string_var

// string para cortar

);

Parmetros
string_var
[in][out] String que ser cortada a partir da esquerda.
Valor do Retorno
Retorna o nmero de smbolos removidos.

2000-2015, MetaQuotes Software Corp.

1016

Funes de String

StringTrimRight
A funo remove caracteres de quebra de linha, espaos e tabs na parte direita da string aps o ltimo
smbolo significativo. A string modificada no lugar.
int StringTrimRight(
string& string_var

// string para cortar

);
);

Parmetros
string_var
[in][out] String que ser cortada a partir da direita.
Valor do Retorno
Retorna o nmero de smbolos removidos.

2000-2015, MetaQuotes Software Corp.

1017

Data e Hora

Data e Hora
Este o grupo de funes para trabalhar com dados do tipo datetime (um inteiro que representa
nmero de segundos decorridos a partir da 0 hora de 1 Janeiro de 1970).
Para obter contadores e timers de alta-resoluo, use a funo GetTickCount(), que produz valores em
milissegundos.
Funo

Ao

TimeCurrent

Retorna a ltima hora conhecida do servidor


(hora da ltima cotao recebida) no formato
de datetime(

TimeTradeServer

Retorna a hora calculada corrente do servidor


de negociao

TimeLocal

Retorna a hora do computador local em formato


datetime

TimeGMT

Retorna a hora GMT em formato datetime com


o horrio de vero por hora local do
computador, de onde o terminal cliente est
executando

TimeDaylightSavings

Retorna o sinal do ajuste do horrio de vero

TimeGMTOffset

Retorna a diferena corrente entre a hora GMT


e a hora do computador local em segundos,
levando em considerao o ajuste do horrio de
vero

TimeToStruct

Converte um valor datetime em uma varivel


do tipo estrutura MqlDateTime

StructToTime

Converte uma varivel do tipo


MqlDateTime em um valor datetime

2000-2015, MetaQuotes Software Corp.

estrutura

1018

Data e Hora

TimeCurrent
Retorna a ltima hora conhecida do servidor, hora da ltima cotao recebida para um dos ativos
selecionados na janela "Observao de Mercado". No handler OnTick(), esta funo retorna a hora do
tick recebido, que est sendo tratado. Em outros casos (por exemplos, chamar nos handlers OnInit(),
OnDeinit(), OnTimer() e assim por diante), esta funo retorna a hora da ltima cotao recebida para
qualquer ativo disponvel na janela "Observao de Mercado", a hora exibida no cabealho desta
janela. O valor da hora formado em servidor de negociao e no depende das configuraes de hora
em seu computador. Existem 2 variantes da funo.
Chamar sem parmetros
datetime TimeCurrent();

Chamar com parmetro de tipo MqlDateTime


datetime TimeCurrent(
MqlDateTime& dt_struct

// varivel de tipo estrutura

);

Parmetros
dt_struct
[out] MqlDateTime varivel de tipo estrutura.
Valor do Retorno
Valor de tipo datetime
Observao
Se uma varivel de tipo estrutura MqlDateTime for passada como parmetro, ela preenchida de
acordo.
Para obter contadores e timer de alta-resoluo, use a funo GetTickCount(), que produz valores
em milissegundos.
During testing in the strategy tester, TimeCurrent() is simulated according to historical data.

2000-2015, MetaQuotes Software Corp.

1019

Data e Hora

TimeTradeServer
Returna a hora corrente calculada do servidor de negociao. Diferentemente de TimeCurrent(), o
clculo do valor da hora realizado no terminal cliente e depende das configuraes de hora em seu
computador. Existem 2 variantes da funo.
Chamar sem parmetros
datetime TimeTradeServer();

Chamar com parmetro de tipo MqlDateTime


datetime TimeTradeServer(
MqlDateTime& dt_struct

// Varivel de tipo estrutura

);

Parmetros
dt_struct
[out] Varivel de tipo estrutura MqlDateTime.
Valor do Retorno
Valor de tipo datetime
Observao
Se uma varivel de tipo estrutura MqlDateTime for passada como parmetro, ela preenchida de
acordo.
Para obter contadores e timer de alta-resoluo, use a funo GetTickCount(), que produz valores
em milissegundos.
During testing in the strategy tester, TimeTradeServer() is always equal to TimeCurrent() simulated
server time.

2000-2015, MetaQuotes Software Corp.

1020

Data e Hora

TimeLocal
Retorna a hora local de um computador, de onde o terminal cliente est executando. Existem 2
variantes da funo.
Chamar sem parmetros
datetime TimeLocal();

Chamar com parmetro de tipo MqlDateTime


datetime TimeLocal(
MqlDateTime& dt_struct

// Varivel de tipo estrutura

);

Parmetros
dt_struct
[out] Varivel de tipo estrutura MqlDateTime.
Valor do Retorno
Valor de tipo datetime
Observao
Se uma varivel de tipo estrutura MqlDateTime for passada como parmetro, ela preenchida de
acordo.
Para obter contadores e timer de alta-resoluo, use a funo GetTickCount(), que produz valores
em milissegundos.
During testing in the strategy tester, TimeLocal() is always equal to TimeCurrent() simulated server
time.

2000-2015, MetaQuotes Software Corp.

1021

Data e Hora

TimeGMT
Retorna a hora GMT, que calculada levando em considerao o ajuste ao horrio de vero pela hora
local no computador de onde o terminal cliente est executando. Existem 2 variantes da funo.
Chamar sem parmetros
datetime TimeGMT();

Chamar com parmetro de tipo MqlDateTime


datetime TimeGMT(
MqlDateTime& dt_struct

// Varivel de tipo estrutura

);

Parmetros
dt_struct
[out] Varivel de tipo estrutura MqlDateTime.
Valor do Retorno
Valor de tipo datetime
Observao
Se uma varivel de tipo estrutura MqlDateTime for passada como parmetro, ela preenchida de
acordo.
Para obter contadores e timer de alta-resoluo, use a funo GetTickCount(), que produz valores
em milissegundos.
During testing in the strategy tester, TimeGMT() is always equal to TimeTradeServer() simulated
server time.

2000-2015, MetaQuotes Software Corp.

1022

Data e Hora

TimeDaylightSavings
Retorna correo para o horrio de vero em segundos, ajuste ao horrio de vero foi feito. Depende
das configuraes de hora de seu computador.
int TimeDaylightSavings();

Valor do Retorno
Se o ajuste ao horrio de inverno (padro) foi feito, retorna 0.

2000-2015, MetaQuotes Software Corp.

1023

Data e Hora

TimeGMTOffset
Retorna a diferena corrente entre a hora GMT e a hora do computador local em segundos. Depende
das configuraes de hora de seu computador.
int TimeGMTOffset();

Valor do Retorno
Valor de tipo int, representando a diferena corrente entre a hora local do computador e a hora
GMT em segundos.

2000-2015, MetaQuotes Software Corp.

1024

Data e Hora

TimeToStruct
Converte um valor de tipo datetime (nmero de segundos desde 01.01.1970) em uma varivel
estrutura MqlDateTime.
void TimeToStruct(
datetime

dt,

MqlDateTime& dt_struct

// data e hora
// estrutura para a captura de valores

);

Parmetros
dt
[in] Valor de data e hora para converso.
dt_struct
[out] Varivel de tipo estrutura MqlDateTime.
Valor do Retorno
Sem valor de retorno.

2000-2015, MetaQuotes Software Corp.

1025

Data e Hora

StructToTime
Converte uma varivel estrutura MqlDateTime em um valor de tipo datetime e retorna o valor
resultante.
datetime StructToTime(
MqlDateTime$ dt_struct

// estrutura da data e hora

);

Parmetros
dt_struct
[in] Varivel de tipo estrutura MqlDateTime.
Valor do Retorno
Valor de tipo datetime contendo o nmero de segundos deste 01.01.1970.

2000-2015, MetaQuotes Software Corp.

1026

Informaes de Conta

Informaes de Conta
Funes que retornam parmetros da conta corrente.
Funo

Ao

AccountInfoDouble

Retorna um valor de tipo double


correspondente propriedade da conta

AccountInfoInteger

Retorna um valor de tipo inteiro (bool, int ou


long) da correspondente propriedade da conta

AccountInfoString

Retorna um valor de tipo string


correspondente propriedade da conta

2000-2015, MetaQuotes Software Corp.

da

da

1027

Informaes de Conta

AccountInfoDouble
Retorna o valor da correspondente propriedade da conta.
double AccountInfoDouble(
int property_id

// identificador da propriedade

);

Parmetros
property_id
[in]
Identificador da propriedade.
ENUM_ACCOUNT_INFO_DOUBLE.

valor

pode

ser

um

dos

valores

Valor do Retorno
Value of double type.
Exemplo:
void OnStart()
{
//--- exibe todas as informaes disponveis a partir da funo AccountInfoDouble()
printf("ACCOUNT_BALANCE =

%G",AccountInfoDouble(ACCOUNT_BALANCE));

printf("ACCOUNT_CREDIT =

%G",AccountInfoDouble(ACCOUNT_CREDIT));

printf("ACCOUNT_PROFIT =

%G",AccountInfoDouble(ACCOUNT_PROFIT));

printf("ACCOUNT_EQUITY =

%G",AccountInfoDouble(ACCOUNT_EQUITY));

printf("ACCOUNT_MARGIN =

%G",AccountInfoDouble(ACCOUNT_MARGIN));

printf("ACCOUNT_FREEMARGIN =

%G",AccountInfoDouble(ACCOUNT_FREEMARGIN));

printf("ACCOUNT_MARGIN_LEVEL =

%G",AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));

printf("ACCOUNT_MARGIN_SO_CALL = %G",AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL));
printf("ACCOUNT_MARGIN_SO_SO = %G",AccountInfoDouble(ACCOUNT_MARGIN_SO_SO));
}

Tambm Veja
SymbolInfoDouble, SymbolInfoString, SymbolInfoInteger, PrintFormat

2000-2015, MetaQuotes Software Corp.

de

1028

Informaes de Conta

AccountInfoInteger
Retorna o valor das propriedades da conta.
long AccountInfoInteger(
int property_id

// Identificador da propriedade

);

Parmetros
property_id
[in]
Identificador da propriedade.
ENUM_ACCOUNT_INFO_INTEGER.

valor

pode

ser

um

dos

valores

de

Valor do Retorno
Value of long type.
Observao
A propriedade deve ser um dos tipos bool, int ou long.
Exemplo:
void OnStart()
{
//--- exibe todas as informaes disponveis a partir da funo AccountInfoInteger()
printf("ACCOUNT_LOGIN =

%d",AccountInfoInteger(ACCOUNT_LOGIN));

printf("ACCOUNT_LEVERAGE =

%d",AccountInfoInteger(ACCOUNT_LEVERAGE));

bool thisAccountTradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_ALLOWED);
bool EATradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_EXPERT);

ENUM_ACCOUNT_TRADE_MODE tradeMode=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE

ENUM_ACCOUNT_STOPOUT_MODE stopOutMode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARG
//--- Informa sobre a possibilidade de realizar uma operao de negociao
if(thisAccountTradeAllowed)
Print("Comrcio para esta conta permitido");
else
Print("Comrcio para esta conta proibido!");
//--- Descobre se possvel negociar neste conta atravs de Expert Advisors
if(EATradeAllowed)
Print("Comrcio com Expert Advisors permitido para esta conta");
else
Print("Comrcio com Expert Advisors proibido para esta conta!");
//--- Descobre o tipo de conta
switch(tradeMode)
{
case(ACCOUNT_TRADE_MODE_DEMO):
Print("Esta uma conta demonstrao");
break;

2000-2015, MetaQuotes Software Corp.

1029

Informaes de Conta
case(ACCOUNT_TRADE_MODE_CONTEST):
Print("Esta uma conta de competio");
break;
default:Print("Esta uma conta real!");
}
//--- Descobre o modo de configurao de nvel StopOut
switch(stopOutMode)
{
case(ACCOUNT_STOPOUT_MODE_PERCENT):
Print("O nvel StopOut especificado em porcentagem");
break;
default:Print("O nvel StopOut especificado monetariamente");
}
}

Tambm Veja
Informaes de Conta

2000-2015, MetaQuotes Software Corp.

1030

Informaes de Conta

AccountInfoString
Retorna o valor da correspondente propriedade da conta.
string AccountInfoString(
int property_id

// Identificador da propriedade

);

Parmetros
property_id
[in]
Identificador da propriedade.
ENUM_ACCOUNT_INFO_STRING.

valor

pode

ser

um

dos

valores

Valor do Retorno
Valor de tipo string.
Exemplo:
void OnStart()
{
//--- Exibe todas as informaes disponveis a partir da funo AccountInfoString()
Print("O nome do corretor = ",AccountInfoString(ACCOUNT_COMPANY));
Print("Moeda do depsito = ",AccountInfoString(ACCOUNT_CURRENCY));
Print("Nome do cliente = ",AccountInfoString(ACCOUNT_NAME));
Print("O nome do servidor comercial = ",AccountInfoString(ACCOUNT_SERVER));
}

Tambm Veja
Informaes de Conta

2000-2015, MetaQuotes Software Corp.

de

1031

Verificando Estado

Verificao de Estado
Funes que retornam parmetros do estado corrente do terminal cliente
Funo

Ao

GetLastError

Retorna o ltimo erro

IsStopped

Retorna true, se um programa mql5 foi


ordenado a interromper sua operao

UninitializeReason

Retorna o cdigo do motivo da desinicializao

TerminalInfoInteger

Retorna um valor inteiro de uma propriedade


correspondente do ambiente de um programa
mql5

TerminalInfoDouble

Retorna um valor de double de uma propriedade


correspondente do ambiente de um programa
mql5

TerminalInfoString

Retorna um valor de string de uma propriedade


correspondente do ambiente de um programa
mql5

MQLInfoInteger

Retorna um valor inteiro de uma propriedade


correspondente de um programa mql5 em
execuo

MQLInfoString

Retorna um valor de string de uma propriedade


correspondente de um programa mql5 em
execuo

Symbol

Retorna o nome do ativo do grfico corrente

Period

Retorna a janela de tempo do grfico corrente

Digits

Retorna o nmero de dgitos decimais


determinando a preciso do valor do preo do
ativo do grfico corrente

Point

Retorna o tamanho do ponto do smbolo atual


na moeda de cotao.

2000-2015, MetaQuotes Software Corp.

1032

Verificando Estado

GetLastError
Retorna o contedo da varivel de sistema _LastError.
int GetLastError();

Valor de Retorno
Retorna o valor do ltimo erro que ocorreu durante a execuo de um programa mql5.
Observao
Aps a chamada da funo, o contedo de _LastError no zerado. Para zerar esta varivel, voc
precisa chamar ResetLastError().
Tambm Veja
Cdigos de Retorno do Servidor de Negociao

2000-2015, MetaQuotes Software Corp.

1033

Verificando Estado

IsStopped
Verifique um desligamento forado de um programa mql5.
bool IsStopped();

Valor de Retorno
Retorna true, se a varivel de sistema _StopFlag contm um valor diferente de 0. Um valor no-zero
escrito em _StopFlag, se um programa mql5 foi ordenado a concluir sua operao. Neste caso,
voc deve imediatamente finalizar o programa, caso contrrio o programa ser concludo
foradamente do lado de fora aps 3 segundos.

2000-2015, MetaQuotes Software Corp.

1034

Verificando Estado

UninitializeReason
Retorna o cdigo do motivo para desinicializao.
int UninitializeReason();

Valor de Retorno
Retorna o valor de _UninitReason que formado antes de OnDeinit() ser chamado. O valor depende
dos motivos que levaram desinicializao.

2000-2015, MetaQuotes Software Corp.

1035

Verificando Estado

TerminalInfoInteger
Retorna o valor de uma propriedade correspondente do ambiente de um programa mql5.
int TerminalInfoInteger(
int property_id

// identificador de uma propriedade

);

Parmetros
property_id
[in] Identificador de uma propriedade. Can be one of the values of the enumeration
ENUM_TERMINAL_INFO_INTEGER.
Valor de Retorno
Valor de tipo int.

2000-2015, MetaQuotes Software Corp.

1036

Verificando Estado

TerminalInfoDouble
Returns the value of a corresponding property of the mql5 program environment.
double TerminalInfoDouble(
int property_id

// identifier of a property

);

Parameters
property_id
[in] Identifier of a property.
ENUM_TERMINAL_INFO_DOUBLE.

Can

be

one

of

the

Return Value
Value of double type.

2000-2015, MetaQuotes Software Corp.

values

of

the

enumeration

1037

Verificando Estado

TerminalInfoString
A funo retorna o valor de uma propriedade correspondente do ambiente de um programa mql5. A
propriedade deve ser do tipo string.
string TerminalInfoString(
int property_id

// identificador de uma propriedade

);

Parmetros
property_id
[in] Identificador de uma propriedade.
ENUM_TERMINAL_INFO_STRING.

Pode

ser

um

Valor de Retorno
Valor de tipo string.

2000-2015, MetaQuotes Software Corp.

dos

valores

da

enumerao

1038

Verificando Estado

MQLInfoInteger
Retorna o valor de uma propriedade correspondente de um programa mql5 em execuo.
int MQLInfoInteger(
int property_id

// identificador de uma propriedade

);

Parmetros
property_id
[in] Identificador de uma propriedade. Can be one of values of the ENUM_MQL_INFO_INTEGER
enumeration.
Valor de Retorno
Valor de tipo int.

2000-2015, MetaQuotes Software Corp.

1039

Verificando Estado

MQLInfoString
Retorna o valor de uma propriedade correspondente de um programa mql5 em execuo.
string MQLInfoString(
int property_id

// Identificador de uma propriedade

);

Parmetros
property_id
[in] Identificador de uma
ENUM_MQL_INFO_STRING.

propriedade.

Pode

ser

um

Valor de Retorno
Valor de tipo string.

2000-2015, MetaQuotes Software Corp.

dos

valores

da

enumerao

1040

Verificando Estado

Symbol
Retorna o nome do ativo do grfico corrente.
string Symbol();

Valor de Retorno
Valor da varivel de sistema _Symbol, que armazena o nome do ativo do grfico corrente.

2000-2015, MetaQuotes Software Corp.

1041

Verificando Estado

Period
Retorna a janela de tempo do grfico corrente.
ENUM_TIMEFRAMES Period();

Valor de Retorno
O contedo da varivel _Period que representa o valor da janela de tempo do grfico corrente. O
valor pode ser um dos valores da enumerao ENUM_TIMEFRAMES.
Veja tambm
PeriodSeconds, Janelas de tempo de grficos, Data e Hora, Visibilidade de objetos

2000-2015, MetaQuotes Software Corp.

1042

Verificando Estado

Digits
Retorna o nmero de dgitos decimais determinando a preciso do preo do ativo do grfico corrente.
int Digits();

Valor de Retorno
O valor da varivel _Digits que armazena o nmero de dgitos decimais determina a preciso do
preo do ativo do grfico corrente.

2000-2015, MetaQuotes Software Corp.

1043

Verificando Estado

Point
Retorna o tamanho do ponto do ativo corrente na moeda de cotao.
double Point();

Valor de Retorno
O valor da varivel _Point que armazena o tamanho do ponto do ativo corrente na moeda de
cotao.

2000-2015, MetaQuotes Software Corp.

1044

Informaes de Mercado

Obtendo Informaes de Mercado


Estas so funes destinadas a receber informaes sobre o estado do mercado.
Funo

Ao

SymbolsTotal

Retorna o nmero de ativos disponveis


(selecionados na janela Observao de Mercado
ou todos)

SymbolName

Retorna o nome de um ativo especificado

SymbolSelect

Seleciona um ativo na janela Observao de


Mercado ou remove um ativo desta janela

SymbolIsSynchronized

Verifica se dados de um ativo selecionado no


terminal esto sincronizados com dados no
servidor de negociaes

SymbolInfoDouble

Retorna um valor double de um ativo para a


propriedade correspondente

SymbolInfoInteger

Retorna um valor de tipo inteiro (long,


datetime, int ou bool) de um ativo especificado
para a propriedade correspondente

SymbolInfoString

Retorna um valor do tipo string de um ativo


especificado para a propriedade correspondente

SymbolInfoMarginRate

Returns the margin rates depending on the


order type and direction

SymbolInfoTick

Retorna os preos correntes para um ativo


especificado em uma varivel do tipo MqlTick

SymbolInfoSessionQuote

Permite obter a hora de incio e fim das


sesses de cotao especificadas para um ativo
especificado e dia da semana.

SymbolInfoSessionTrade

Permite obter a hora de incio e fim das


sesses de negociao especificadas para um
ativo especificado e dia da semana.

MarketBookAdd

Fornece abertura da Profundidade de Mercado


para um ativo selecionado, e subscrever para
receber notificaes de alteraes do DOM
(Depth of Market)

MarketBookRelease

Fornece fechamento da Profundidade de


Mercado para um ativo selecionado, e cancelar
a subscrio para receber notificaes de
alteraes do DOM

MarketBookGet

Retorna um array de estrutura MqlBookInfo


contendo registros da Profundidade de Mercado
de uma ativo especificado

2000-2015, MetaQuotes Software Corp.

1045

Informaes de Mercado

SymbolsTotal
Retorna o nmero de ativos disponveis (selecionados na janela Observao do Mercado ou todos os
ativos).
int SymbolsTotal(
bool selected

// True - somente ativos em Observador de Mercado

);

Parmetros
selected
[in] Mode de solicitao. Pode ser true ou false.
Valor do Retorno
Se o parmetro 'selected' for true, a funo retorna o nmero de ativos selecionados na janela
Observador de Mercado. Se o valor for false, ela retorna o nmero total de todos os ativos.

2000-2015, MetaQuotes Software Corp.

1046

Informaes de Mercado

SymbolName
Retorna o nome de um ativo.
string SymbolName(
int

pos,

bool selected

// nmero na lista
// true - somente ativos em Observador de Mercado

);

Parmetros
pos
[in] Nmero de ordem de um ativo.
selected
[in] Mode de solicitao. Se o valor for true, o ativo tomado da lista de ativos selecionados na
janela Observador de Mercado. Se o valor for false, o ativo tomado da lista geral.
Valor do Retorno
Valor de tipo string com o nome do ativo.

2000-2015, MetaQuotes Software Corp.

1047

Informaes de Mercado

SymbolSelect
Seleciona um ativo da janela Observador de Mercado ou remove um ativo desta janela.
bool SymbolSelect(
string name,

// nome do ativo

bool

// adicionar ou remover

select

);

Parmetros
name
[in] Nome do ativo.
select
[in] Alterna. Se o valor for false, o ativo deve ser removido do Observador de Mercado, caso
contrrio o ativo deve ser selecionado nesta janela. Um ativo no pode ser removido se o grfico
do ativo estiver aberto, ou houver posies em aberto deste ativo.
Valor do Retorno
Em caso de falha retorna false.

2000-2015, MetaQuotes Software Corp.

1048

Informaes de Mercado

SymbolIsSynchronized
A funo verifica se os dados de um ativo selecionado no terminal esto sincronizados com os dados
no servidor de negociao.
bool SymbolIsSynchronized(
string name,

// nome do ativo

);

Parmetros
name
[in] Nome do ativo.
Valor de retorno
Se os dados estiverem sincronizados, retorna 'true'; caso contrrio, retorna 'false'.
Tambm Veja
SymbolInfoInteger, Organizando Acesso a Dados

2000-2015, MetaQuotes Software Corp.

1049

Informaes de Mercado

SymbolInfoDouble
Retorna a propriedade correspondente de um ativo especificado. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
double SymbolInfoDouble(
string

name,

ENUM_SYMBOL_INFO_DOUBLE prop_id

// ativo
// identificador da propriedade

);

2. Retorna true ou false dependendo se a funo for executada com sucesso. Em caso de sucesso, o
valor da propriedade colocado em uma varivel recipiente, passada por refernce atrves do ltimo
parmetro.
bool SymbolInfoDouble(
string

name,

// ativo

ENUM_SYMBOL_INFO_DOUBLE

prop_id,

// identificador da propriedade

double&

double_var // aqui ns assumimos o valor da propriedade

);

Parmetros
name
[in] Nome do ativo.
prop_id
[in] Identificador de um propriedade de ativo. O valor pode ser um dos valores da enumerao
ENUM_SYMBOL_INFO_DOUBLE.
double_var
[out] Varivel de tipo double recebendo o valor da propriedade solicitada.
Valor do Retorno
Valor de tipo double. Em caso de falha de execuo, a informao sobre o erro pode ser obtida
usando a funo GetLastError():
5040 parmetro de string invlido para especificar um nome de ativo,
4301 ativo desconhecido (instrumento financeiro),
4302 ativo no est selecionado no "Observador de Mercado" (no encontrado na lista de ativos
disponveis),
4303 identificador invlido de uma propriedade de ativo.
Observao
recomendvel usar SymbolInfoTick() se a funo for usada para obter informaes sobre o ltimo
tick. bom possvel que nenhuma cotao tenha aparecido ainda desde que o terminal se conectou
a uma conta de negociao. Em tal situao, o valor solicitado ser indefinido
Na maioria dos casos, suficiente usar a funo SymbolInfoTick() permitindo a um usurio receber
os valores dos preos Compra, Venda, ltimo, Volume e a hora da chegada do ltimo tick atravs de
uma nica chamada.

2000-2015, MetaQuotes Software Corp.

1050

Informaes de Mercado
Exemplo:
void OnTick()
{
//--- obtm spread a partir das propriedade do ativo
bool spreadfloat=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD_FLOAT);
string comm=StringFormat("Spread %s = %I64d pontos\r\n",
spreadfloat?"flutuante":"fixo",
SymbolInfoInteger(Symbol(),SYMBOL_SPREAD));
//--- agora vamos calcular ns mesmos o spread
double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
double bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
double spread=ask-bid;
int spread_points=(int)MathRound(spread/SymbolInfoDouble(Symbol(),SYMBOL_POINT));
comm=comm+"Spread calculada = "+(string)spread_points+" pontos";
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1051

Informaes de Mercado

SymbolInfoInteger
Retorna a propriedade correspondente de um ativo especificado. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
long SymbolInfoInteger(
string

name,

// ativo

ENUM_SYMBOL_INFO_INTEGER

prop_id

// identificador da propriedade

);

2. Retorna true ou false dependendo se a funo for executada com sucesso. Em caso de sucesso, o
valor da propriedade colocado em uma varivel recipiente, passada por refernce atrves do ltimo
parmetro.
bool SymbolInfoInteger(
string

name,

// ativo

ENUM_SYMBOL_INFO_INTEGER

prop_id,

// identificador da propriedade

long&

long_var

// aqui ns assumimos o valor da propriedade

);

Parmetros
name
[in] Nome do ativo.
prop_id
[in] Identificador de um propriedade de ativo. O valor pode ser um dos valores da enumerao
ENUM_SYMBOL_INFO_INTEGER.
long_var
[out] Varivel de tipo long rececendo o valor da propriedade solicitada.
Valor do Retorno
Valor de tipo long. Em caso de falha de execuo, a informao sobre o erro pode ser obtida usando
a funo GetLastError():
5040 parmetro de string invlido para especificar um nome de ativo,
4301 ativo desconhecido (instrumento financeiro),
4302 ativo no est selecionado no "Observador de Mercado" (no encontrado na lista de ativos
disponveis),
4303 identificador invlido de uma propriedade de ativo.
Observao
recomendvel usar SymbolInfoTick() se a funo for usada para obter informaes sobre o ltimo
tick. bom possvel que nenhuma cotao tenha aparecido ainda desde que o terminal se conectou
a uma conta de negociao. Em tal situao, o valor solicitado ser indefinido
Na maioria dos casos, suficiente usar a funo SymbolInfoTick() permitindo a um usurio receber
os valores dos preos Compra, Venda, ltimo, Volume e a hora da chegada do ltimo tick atravs de
uma nica chamada.

2000-2015, MetaQuotes Software Corp.

1052

Informaes de Mercado
Exemplo:
void OnTick()
{
//--- obtm spread a partir das propriedade do ativo
bool spreadfloat=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD_FLOAT);
string comm=StringFormat("Spread %s = %I64d pontos\r\n",
spreadfloat?"flutuante":"fixo",
SymbolInfoInteger(Symbol(),SYMBOL_SPREAD));
//--- agora vamos calcular ns mesmos o spread
double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
double bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
double spread=ask-bid;
int spread_points=(int)MathRound(spread/SymbolInfoDouble(Symbol(),SYMBOL_POINT));
comm=comm+"Spread calculada = "+(string)spread_points+" pontos";
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1053

Informaes de Mercado

SymbolInfoString
Retorna a propriedade correspondente de um ativo especificado. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
string SymbolInfoString(
string

name,

ENUM_SYMBOL_INFO_STRING prop_id

// Ativo
// Identificador de propriedade

);

2. Retorna true ou false, dependendo do sucesso na execuo da funo. Se for bem sucedido, o valor
da propriedade colocada em uma varivel de recbimento passada por referncia no ltimo
parmetro.
bool SymbolInfoString(
string

name,

// Ativo

ENUM_SYMBOL_INFO_STRING

prop_id,

// Identificador de propriedade

string&

string_var

// Aqui ns assumimos o valor da propriedade

);

Parmetros
name
[in] Nome do ativo.
prop_id
[in] Identificador de um propriedade de ativo. O valor pode ser um dos valores da enumerao
ENUM_SYMBOL_INFO_STRING.
string_var
[out] Varivel de tipo string recebendo o valor da propriedade solicitada.
Valor do Retorno
Valor de tipo string. Em caso de falha de execuo, a informao sobre o erro pode ser obtida
usando a funo GetLastError():
5040 parmetro de string invlido para especificar um nome de ativo,
4301 ativo desconhecido (instrumento financeiro),
4302 ativo no est selecionado no "Observador de Mercado" (no encontrado na lista de ativos
disponveis),
4303 identificador invlido de uma propriedade de ativo.
Observao
recomendvel usar SymbolInfoTick() se a funo for usada para obter informaes sobre o ltimo
tick. bom possvel que nenhuma cotao tenha aparecido ainda desde que o terminal se conectou
a uma conta de negociao. Em tal situao, o valor solicitado ser indefinido
Na maioria dos casos, suficiente usar a funo SymbolInfoTick() permitindo a um usurio receber
os valores dos preos Compra, Venda, ltimo, Volume e a hora da chegada do ltimo tick atravs de
uma nica chamada.

2000-2015, MetaQuotes Software Corp.

1054

Informaes de Mercado

SymbolInfoMarginRate
.
bool SymbolInfoMarginRate(
string

name,

//

ENUM_ORDER_TYPE

order_type,

//

double&

initial_margin_rate,

//

double&

maintenance_margin_rate

//

);

name
[in] .
order_type
[in] .
initial_margin_rate
[in] double .
1
. ,
,
.
maintenance_margin_rate
[out] double
.
1 .
, ,
.

true , false.

2000-2015, MetaQuotes Software Corp.

1055

Informaes de Mercado

SymbolInfoTick
A funo retorna preos correntes de um ativo especificado em uma varivel de tipo MqlTick.
bool SymbolInfoTick(
string

symbol,

MqlTick& tick

// nome do ativo
// referencia a uma estrutura

);

Parmetros
symbol
[in] Nome do ativo.
tick
[out] Estrutura do tipo MqlTick, na qual os preos correntes e a hora da atualizao do ltimo
preo ser colocada.
Valor do Retorno
A funo retorna true se bem sucedida, caso contrrio retorna false.

2000-2015, MetaQuotes Software Corp.

1056

Informaes de Mercado

SymbolInfoSessionQuote
Permite obter a hora de incio e fim das sesses de cotao especificadas para um ativo especificado
e dia da semana.
bool SymbolInfoSessionQuote(
string

name,

// nome do ativo

ENUM_DAY_OF_WEEK day_of_week,

// dia da semana

uint

session_index,

// ndice da sesso

datetime&

from,

// hora de incio da sesso

datetime&

to

// hora de trmino da sesso

);

Parmetros
name
[in] Nome do ativo.
ENUM_DAY_OF_WEEK
[in] Dia da semana, um valor da enumerao ENUM_DAY_OF_WEEK.
uint
[in] Nmero ordinal de uma sesso, cujo hora de comeo e trmino ns queremos receber. A
indexao de sesses comea com 0.
from
[out] Hora de incio da sesso em segundos a partir de 00 horas 00 minutos, no valor de retorna a
data deve ser ignorada.
to
[out] Hora de trmino da sesso em segundos a partir de 00 horas e 00 minutos, no valor
retornado a data deve ser ignorada.
Valor do Retorno
Se os dados para a sesso, ativo e dia da semana especificados forem recebidos, retorna true, caso
contrrio retorna false.
Tambm Veja
Propriedade de Ativo, TimeToStruct, Estrutura de Dados

2000-2015, MetaQuotes Software Corp.

1057

Informaes de Mercado

SymbolInfoSessionTrade
Permite obter a hora de incio e fim das sesses de negociao especificadas para um ativo
especificado e dia da semana.
bool SymbolInfoSessionTrade(
string

name,

// nome do ativo

ENUM_DAY_OF_WEEK day_of_week,

// dia da semana

uint

session_index,

// ndice da sesso

datetime&

from,

// hora de incio da sesso

datetime&

to

// hora de trmino da sesso

);

Parmetros
name
[in] Nome do ativo.
ENUM_DAY_OF_WEEK
[in] Dia da semana, um valor da enumerao ENUM_DAY_OF_WEEK.
uint
[in] Nmero ordinal de uma sesso, cujo hora de comeo e trmino ns queremos receber. A
indexao de sesses comea com 0.
from
[out] Hora de incio da sesso em segundos a partir de 00 horas 00 minutos, no valor de retorna a
data deve ser ignorada.
to
[out] Hora de trmino da sesso em segundos a partir de 00 horas e 00 minutos, no valor
retornado a data deve ser ignorada.
Valor de retorno
Se os dados para a sesso, ativo e dia da semana especificados forem recebidos, retorna true, caso
contrrio retorna false.
Tambm Veja
Propriedade de Ativo, TimeToStruct, Estrutura de Dados

2000-2015, MetaQuotes Software Corp.

1058

Informaes de Mercado

MarketBookAdd
Fornece a abertura da Profundidade de Mercado (DOM) para um ativo selecionado, e subscreve para
receber notificados de alteraes na DOM (Depth of Market).
bool MarketBookAdd(
string symbol

// ativo

);

Parmetros
symbol
[in] O nome de um ativo, cuja Profundidade de Mercado para ser usada no Expert Advisor ou
script.
Valor do Retorno
O valor true se aberto com sucesso, caso contrrio false.
Observao
Normalmente, esta funo deve ser chamada a partir da funo OnInit() ou no construtor da classe.
Para manipular a chegada de alertas, o programa Expert Advisor deve conter a funo void
OnBookEvent(string& symbol).
Tambm Veja
Estrutura da Profuno de Mercado, Estruturas e Classes

2000-2015, MetaQuotes Software Corp.

1059

Informaes de Mercado

MarketBookRelease
Fornece o fechamento da Profundidade de Mercado (DOM) para um ativo selecionado, e cancela a
subscrio para receber notificaes de alterao na DOM (Depth of Market).
bool MarketBookRelease(
string symbol

// ativo

);

Parmetros
symbol
[in] Nome do ativo.
Valor do Retorno
O valor true se a fechamento foi bem sucedido, caso contrrio false.
Observao
Normalmente, esta funo deve ser chamada da funo OnDeinit(), se a correspondente funo
MarketBookAdd() foi chamada na funo OnInit(). Ou ela deve ser chamada a partir do destrutor da
classe, se a correspondente funo MarketBookAdd() foi chamada a partir do construtor da classe.
Tambm Veja
Estrutura da Profundidade de Mercado, Estruturas e Classes

2000-2015, MetaQuotes Software Corp.

1060

Informaes de Mercado

MarketBookGet
Retorna um array de estruturas MqlBookInfo contendo registros da Profundidade de Mercado de um
ativo especificado.
bool MarketBookGet(
string

symbol,

// ativo

MqlBookInfo& book[]

// referncia para um array

);

Parmetros
symbol
[in] Nome do ativo.
book[]
[in] Referncia para um array de registros de Profundidade de Mercado. O array pode ser pralocado para um nmero suficiente de registros. Se um array dinmico no tiver sido pr-alocado
na memria operacional, o terminal cliente alocar ele mesmo o array.
Valor do Retorno
Retorna true em caso de sucesso, caso contrrio false.
Observao
A Profundidade de Mercado deve ser pre-aberta pela funo MarketBookAdd().
Exemplo:
MqlBookInfo priceArray[];
bool getBook=MarketBookGet(NULL,priceArray);
if(getBook)
{
int size=ArraySize(priceArray);
Print("MarketBookInfo para ",Symbol());
for(int i=0;i<size;i++)
{
Print(i+":",priceArray[i].price
+"

Volume = "+priceArray[i].volume,

" tipo = ",priceArray[i].type);


}
}
else
{
Print("Could not get contents of the symbol DOM ",Symbol());
}

Tambm Veja
Estrutura da Profundidade de Mercado, Estruturas e Classes

2000-2015, MetaQuotes Software Corp.

1061

Sries Temporais e Acesso a Indicadores

Acesso a sries de tempo e indicadores


Estas so funes para trabalhar com sries de tempo e indicadores. Uma srie de tempo difere de um
array de dados usual pela sua ordenao reversa - elementos de sries de tempo so indexados do
final de um array para seu incio (a partir do mais recente para o mais antigo). Para copiar valores de
sries de tempo e dados de indicadores, recomendvel usar somente arrays dinmicos, porque as
funes de cpia esto projetadas para alocar o tamanho necessrio dos arrays que recebem valores.
Existe uma importante exceo a esta regra: se valores de sries de tempo e indicadores precisam
ser copiados com freqncia, por exemplo, a cada chamada de OnTick() em Expert Advisors ou a cada
chamada de OnCalculate() em indicadores, neste caso seria melhor usar arrays alocados
estaticamente, porque operaes de alocao de memria para arrays dinmicos requerem um
tempo adicional, e isso ter efeitos durante os processos de teste e otimizao.
Ao usar funes de acesso a valores de sries de tempo e indicadores, a direo de indexao deve
ser leva em considerao. Isso descrito na seo Direo de indexao em arrays e sries de tempo.
O acesso a dados de indicadores e sries de tempo implementado independentemente do fato dos
dados solicitados estarem prontos ou no (o chamado acesso assncrono). Isso extremamente
importante para os clculos de um indicador customizado, porque se no houver dados, as funes de
tipo Copy...() retornam imediatamente um erro. Contudo, ao acessar dados a partir de Expert
Advisors e scripts, as vrias tentativas para receber dados so feitos com uma pausa pequena, cujo
objetivo fornecer algum tempo necessrio para baixar a srie de tempo requerida para calcular
valores de um indicador.
A seo Organizando Acesso a Dados descreve detalhes de recebimento, armazenamento e solicitao
de dados de preo no terminal cliente MetaTrader 5.

historicamente aceito que um acesso a dados de preo em um array realizado a partir do final dos

2000-2015, MetaQuotes Software Corp.

1062

Sries Temporais e Acesso a Indicadores


dados. Fisicamente, os novos dados so sempre escritos no final do array, mas o ndice do array
sempre igual a zero. O ndice 0 no array de srie de tempo denota dados da barra corrente, isto , a
barra que correspondente ao intervalo de tempo no terminado nesta janela de tempo.
Uma janela de tempo o perodo de tempo, durante o qual uma nica barra de preo formada.
Existem 21 janelas de tempo padro predefinidas.
Funo

Ao

SeriesInfoInteger

Retorna informao sobre o estado dos dados


histricos

Bars

Retorna o nmero de barras do histrico para


um ativo e perodo especificados

BarsCalculated

Retorna o nmero de dados calculados em um


buffer de indicador ou -1 em caso de erro (os
dados no foram calculados ainda)

IndicatorCreate

Retorna o handle para o indicador tcnico


especificado criado por um array de parmetros
de tipo MqlParam

IndicatorParameters

Baseado no handle especificado, retorna o


nmero de parmetros de entrada do indicador,
bem como os valores e tipos dos parmetros

IndicatorRelease

Remove um handle de indicador e libera o bloco


de clculo do indicador, se ele no for usado por
ningum mais

CopyBuffer

Copia dados de um buffer especificado de um


indicador especificado em um array

CopyRates

Obtm dados histricos da estrutura Rates para


um ativo e perodo especificados em um array

CopyTime

Obtm dados histricos sobre hora de abertura


de barras para um ativo e perodo especificados
em um array

CopyOpen

Obtm dados histricos sobre preo de abertura


de barras para um ativo e perodo especificados
em um array

CopyHigh

Obtm histrico de dados sobre preo de barra


mximo para um ativo e perodo especificados
em um array

CopyLow

Obtm histrico de dados sobre preo de barra


minimo para um ativo e perodo especificados
em um array

CopyClose

Obtm histrico de dados sobre preo de


fechamento de barra para um ativo e perodo
especificados em um array

2000-2015, MetaQuotes Software Corp.

1063

Sries Temporais e Acesso a Indicadores

CopyTickVolume

Obtm histrico de dados sobre volumes de tick


para um ativo e perodo especificados em um
array

CopyRealVolume

Obtm dados histricos sobre volumes de


negociao para um ativo e perodo
especificados em um array

CopySpread

Obtm histrico de dados sobre spreads para


um ativo e perodo especificados em um array

CopyTicks

Gets ticks accumulated by the terminal for the


current working session into an array

Apesar do fato de que pelo uso da funo ArraySetAsSeries() possvel definir em arrays acesso aos
elementos como em sries de tempo, deve ser lembrado que os elementos de arrays so fisicamente
armazenados na mesma e nica ordem - somente a direo de indexao muda. Para demonstrar este
fato, vamos apresentar um exemplo:
datetime TimeAsSeries[];
//--- define acesso ao array como uma srie de tempo
ArraySetAsSeries(TimeAsSeries,true);
ResetLastError();
int copied=CopyTime(NULL,0,0,10,TimeAsSeries);
if(copied<=0)
{
Print("The copy operation of the open time values for last 10 bars has failed");
return;
}
Print("TimeCurrent =",TimeCurrent());
Print("ArraySize(Time) =",ArraySize(TimeAsSeries));
int size=ArraySize(TimeAsSeries);
for(int i=0;i<size;i++)
{
Print("TimeAsSeries["+i+"] =",TimeAsSeries[i]);
}
datetime ArrayNotSeries[];
ArraySetAsSeries(ArrayNotSeries,false);
ResetLastError();
copied=CopyTime(NULL,0,0,10,ArrayNotSeries);
if(copied<=0)
{
Print("The copy operation of the open time values for last 10 bars has failed");
return;
}
size=ArraySize(ArrayNotSeries);
for(int i=size-1;i>=0;i--)
{
Print("ArrayNotSeries["+i+"] =",ArrayNotSeries[i]);

2000-2015, MetaQuotes Software Corp.

1064

Sries Temporais e Acesso a Indicadores


}

Como resultado ns conseguimos a seguinte sada:


TimeCurrent = 2009.06.11 14:16:23
ArraySize(Time) = 10
TimeAsSeries[0] = 2009.06.11 14:00:00
TimeAsSeries[1] = 2009.06.11 13:00:00
TimeAsSeries[2] = 2009.06.11 12:00:00
TimeAsSeries[3] = 2009.06.11 11:00:00
TimeAsSeries[4] = 2009.06.11 10:00:00
TimeAsSeries[5] = 2009.06.11 09:00:00
TimeAsSeries[6] = 2009.06.11 08:00:00
TimeAsSeries[7] = 2009.06.11 07:00:00
TimeAsSeries[8] = 2009.06.11 06:00:00
TimeAsSeries[9] = 2009.06.11 05:00:00
ArrayNotSeries[9] = 2009.06.11 14:00:00
ArrayNotSeries[8] = 2009.06.11 13:00:00
ArrayNotSeries[7] = 2009.06.11 12:00:00
ArrayNotSeries[6] = 2009.06.11 11:00:00
ArrayNotSeries[5] = 2009.06.11 10:00:00
ArrayNotSeries[4] = 2009.06.11 09:00:00
ArrayNotSeries[3] = 2009.06.11 08:00:00
ArrayNotSeries[2] = 2009.06.11 07:00:00
ArrayNotSeries[1] = 2009.06.11 06:00:00
ArrayNotSeries[0] = 2009.06.11 05:00:00

Como vemos a partir da sada, a medida que o ndice do array TimeAsSeries aumenta, o valor da hora
do ndice diminui, isto , ns nos movemos do presente para o passado. Para o array comum
ArrayNotSeries o resultado diferente - a medida que o ndice cresce, ns nos movemos do passado
para o presente.
Veja tambm
ArrayIsDynamic, ArrayGetAsSeries, ArraySetAsSeries, ArrayIsSeries

2000-2015, MetaQuotes Software Corp.

1065

Sries Temporais e Acesso a Indicadores

Direo de Indexao em Arrays, Buffers e Sries Temporais


A indexao padro de todos os arrays e buffers de indicador da esquerda para direita. O ndice do
primeiro elemento sempre igual a zero. Assim, o primeiro elemento de um array ou buffer de
indicador com ndice 0 est por padro na posio mais a esquerda, enquanto o ltimo elemento est
na posio mais a direita.
Um buffer de indicador um array dinmico de tipo double, cujo tamanho gerenciado pelos
terminais clientes, de modo que ele sempre corresponde ao nmero de barras do indicador sobre o
qual est calculando. Um array dinmico usual de tipo double atribudo como um buffer de indicador
usando a funo SetIndexBuffer(). Buffers de indicador no requerem que seus tamanhos sejam
definidos usando a funo ArrayResize() - isso ser feito pelo sistema de execuo do terminal.
Sries de tempo so array com indexao reversa, isto , o primeiro elemento de uma srie de tempo
est na posio mais a direita, e o ltimo elemento est na posio mais a esquerda. Em uma srie de
tempo sendo usada para armazenar dados de preos histricos e que contm informaes de hora, os
dados mais recentes so colocados na posio mais a direita da srie de tempo, enquanto que os
dados mais antigos na posio mais a esquerda.
Assim o elemento da srie de tempo com ndice 0 contm a informao sobre a ltima cotao de um
ativo. Se uma srie de tempo contm dados sobre uma janela de tempo diria, os dados correntes do
dia ainda no terminado ficam localizados na posio zero, e na posio com ndice 1 contm os dados
de ontem.

Alterando a Direo de Indexao


A funo ArraySetAsSeries() permite alterar o mtodo de acessar elementos de um array dinmico; no
entanto, a ordem fsica de armazenamento de dados na memria do computador no alterada. Esta
funo simplesmente altera o mtodo de enderear elementos de um array, assim quando copiar um
array em um outro usando a funo ArrayCopy(), o contedo do array recipiente no depender da
direo de indexao no array fonte.
A direo de indexao no pode ser alterada para arrays alocados estaticamente. Mesmo se um array
for passado como um parmetro para uma funo, tentar alterar a direo de indexao dentro desta
funo no produzir nenhum efeito.
Para buffers de indicador, assim como para arrays comuns, a direo de indexao pode ser definida
no sentido contrrio (como em sries de tempo), isto , uma referncia posio zero no buffer de
indicador retornar o ltimo valor no correspondente buffer de indicador e isso no corresponder ao
valor do indicador na barra mais recente. Contudo, a localizao fsica das barras do indicador no
ser alterada.

Recebendo Dados de Preo em Indicadores


Cada indicador customizado deve necessariamente conter a funo OnCalculate(), cujos dados de
preo requeridos para calcular valores em buffers de indicadores so passados. A direo de indexao
nestes arrays passados pode ser descoberta usando a funo ArrayGetAsSeries().
Arrays passados para a funo refletem dados de preo, isto , estes arrays tm o sinal de uma srie
de preo e a funo ArrayIsSeries() retornar true ao verificar estes arrays. Contudo, de qualquer
forma a direo de indexao deve ser verificada somente pela funo ArrayGetAsSeries().

2000-2015, MetaQuotes Software Corp.

1066

Sries Temporais e Acesso a Indicadores


A fim de no ficar dependente de valores default, a funo ArraySetAsSeries() deve ser
incondicionalmente chamada para os arrays com os quais voc vai trabalhar, e definir a direo
requerida.

Recebendo Dados de Preo e Valores de Indicador


A direo de indexao padro de todos os arrays em Expert Advisores, indicadores e scripts da
esquerda para direita. Se necessrio, em qualquer programa mql5 voc pode solicitar valores de sries
de tempo de qualquer ativo e janela de tempo, bem como valores de indicadores calculados sobre
qualquer ativo e janela de tempo.
Use as funes Copy...() para este propsito:
CopyBuffer copiar valores de um buffer de indicador para um array de tipo double;
CopyRates copiar histrico de preos para um array de estruturas MqlRates;
CopyTime copiar valores de Hora para um array de tipo datetime;
CopyOpen copiar valores de Abertura para um array de tipo double;
CopyHigh copiar valores de Mximo para um array de tipo double;
CopyLow copiar valores de Mnimo para um array de tipo double;
CopyClose copiar valores de Fechamento para um array de tipo double;
CopyTickVolume copiar volumes de tick para um array de tipo long;
CopyRealVolume copiar volumes de capital (equity) para um array de tipo long;
CopySpread copiar o histrico de spreads para um array de tipo int;

Todas estas funes trabalham de forma similar. Vamos considerar o mecanismo de obteno de
dados no exemplo de CopyBuffer(). implcito que a direo de indexao dos dados requeridos de
srie de tempo, e a posio com ndice 0 (zero) armazena dados da barra corrente ainda incompleta. A
fim de obter acesso a estes dados ns precisamos copiar o volume necessrio de dados em um array
recipiente, por exemplo, em um array de buffer.

Para copiar ns precisamos especificar a posio de incio no array fonte, incio a partir do qual dados
sero copiados para o array recipiente. Em caso de sucesso, o nmero especificado de elementos
sero copiados para o array recipiente do array fonte (do buffer de indicador neste caso).
Independentemente do valor de indexao definido no array recipiente, a cpia sempre realizada
como exibida na figura abaixo.
Se esperado que um grande nmero de iteraes seja tratado por um loop, recomendvel que se

2000-2015, MetaQuotes Software Corp.

1067

Sries Temporais e Acesso a Indicadores


verifique a ocorrncia de uma finalizao de programa forada usando a funo IsStopped().
int copied=CopyBuffer(ma_handle,// manipulador do indicador
0,

// O ndice do buffer do indicador

0,

// Posio incio para copiar

number,

// Nmero de valores para copiar

Buffer

// O array que recebe os valores

);
if(copied<0) return;
int k=0;
while(k<copied && !IsStopped())
{
//--- Obtm o valor para o ndice k
double value=Buffer[k];
// ...
// trabalha com o valor
k++;
}

Exemplo:
input int per=10; // perodo do expoente
int ma_handle;

// manipulador do indicador

//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--ma_handle=iMA(_Symbol,0,per,0,MODE_EMA,PRICE_CLOSE);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

//+------------------------------------------------------------------+
void OnTick()
{
//--double ema[10];
int copied=CopyBuffer(ma_handle,// manipulador do indicador
0,

// ndice do buffer do indicador

0,

// posio de nicio da cpia

10,

// nmero de valores para copiar

ema

// array que recebe os valores

);
if(copied<0) return;
// .... outro cdigo
}

2000-2015, MetaQuotes Software Corp.

1068

Sries Temporais e Acesso a Indicadores

Tambm Veja
Organizando Acesso aos Dados

2000-2015, MetaQuotes Software Corp.

1069

Sries Temporais e Acesso a Indicadores

Organizando Acesso aos Dados


Nesta seo, questes associados a obteno, armazenamento e solicitao de dados de preos (sries
de tempo) so consideradas.

Recebendo Dados de um Servidor de Negociao


Antes de dados de preos ficarem disponveis no terminal MetraTrader 5, eles devem ser recebidos e
processados. Para receber dados, uma conexo com o servidor de negociao MetaTrader 5 deve ser
estabelecida. Dados so recebidos na forma de blocos empacotados de barras de um minuto do
servidor sob a solicitao de um terminal.
O mecanismo de referncia de servidor para solicitar dados no depende de como a solicitao foi
iniciada - por um usurio ao navegar em um grfico ou por meio de um programa na linguagem MQL5.

Armazenando Dados Intermedirios


Dados recebidos de um servidor so automaticamente desempacotados e salvos no formato
intermedirio HCC. Os dados de cada ativo so escritos em uma pasta separada: terminal_directory
\bases\server_name\history\symbol_name. Por exemplo, dados sobre EURUSD recebidos do servidor
MetaQuotes-Demo sero armazenados em terminal_directory\bases\MetaQuotes-Demo\history
\EURUSD\.
Os dados so escritos em arquivos com extenso .hcc. Cada arquivo armazena dados de barras de um
minuto para um ano. Por exemplo, o arquivo nomeado 2009.hcc na pasta EURUSD contm barras de
um minuto de EURUSD para o ano de 2009. Estes arquivos so usados para preparar dados de preo
para todas as janelas de tempo e no so destinados para acesso direto.

Obtendo Dados em uma Janela de Tempo Necessria a partir dos Dados


Intermedirios
Os arquivo HCC intermedirios so usados como fonte de dados para construir dados de preo para
janelas de tempo solicitadas no formato HC. Dados de formato HC so sries de tempo que so
maximamente preparados para acesso rpido. Eles so criados sob solicitao de um grfico ou um
programa MQL5. O volume de dados no deve exceder o valor do parmetro "Mx. barras no grfico".
Os dados so armazenados para posterior uso em arquivos com extenso hc.
Para economizar recursos, os dados em uma janela de tempo so armazenados e guardamos em RAM
somente se necessrio. Se no for chamado por um longo tempo, eles so liberados da RAM e salvos
em um arquivo. Para cada janela de tempo, os dados so preparados independentemente se existem
dados prontos ou no para outras janelas de tempo. Regras para formao e acesso aos dados so as
mesmas para todas as janelas de tempo. Isso significa que apesar da unidade de dados armazenada
em HCC ser de um minuto, a disponibilidade de dados HCC no significa a disponibilidade de dados na
janela de tempo M1 como HC no mesmo volume.
O recebimento de novos dados de um servidor chama automaticamente a atualizao de dados de
preo usados em formato HC de todas as janelas de tempo. Isso tambm leva ao reclculo de todos os
indicadores que implicitamente usam estes dados como dados de entrada para clculos.

Parmetro "Mx. barras no grfico"

2000-2015, MetaQuotes Software Corp.

1070

Sries Temporais e Acesso a Indicadores


O parmetro "Mx bars no grfico" restringe o nmero de barras em formato HC disponvel para
grficos, indicadores e programas mql5. Isso vlido para todas as janelas de tempo disponveis e
serve, primeiramente, para economizar recursos do computador.
Ao definir um grande valor para este parmetro, deve ser lembrado que se dados de preo de histrico
longo para pequenas janelas de tempo estiverem disponveis, a memria usada para armazenadas a
srie de preos e buffers de indicadores podem se tornar centenas de megabytes e alcanar a restrio
de RAM do programa terminal cliente (2Gb para aplicativos 32-bit do MS Windows).
A alterao do parmetro "Mx. barras no grfico" produz efeito aps o terminal cliente ser reiniciado.
A alterao deste parmetro no causa referncia automtica a um servidor por dados adicionais, e
nem formao de barras adicionais de sries de tempo. Dados de preo adicionais so solicitados ao
servidor, e sries de preo so atualizadas levando em conta a nova limitao, em caso de rolagem de
um grfico para uma rea sem dados, ou quando dados so solicitado por um programas MQL5 .
O volume de dados solicitados ao servidor corresponde ao nmero solicitado de barras de uma da
janela de tempo com o parmetro "Max. barras em grfico" levado em considerao. A restrio
definida por este parmetro no absoluta, e em alguns casos o nmero de barras disponveis para
uma janela de tempo pode ser um pouco maior que o valor corrente do parmetro.

Disponibilidade de Dados
A presena de dados no formato HCC ou mesmo no formato preparado HC no significa sempre a
absoluta disponibilidade destes dados para serem exibidos em um grfico ou usados em um programa
mql5.
Ao acessar dados de preos ou valores de indicadores a partir de um programa mql5 deve ser lembrado
que a sua disponibilidade em um certo momento do tempo ou iniciando a partir de um certo momento
de tempo no garantida. Isso est relacionado com fato de que para economizar recursos, a cpia
completa dos dados necessrios para um programa mql5 no armazenada no MetaTrader 5; apenas
um acesso direto base de dados do terminal fornecida.
O histrico de preos para todas as janelas de tempo construdo a partir de dados comuns em
formato HCC, e qualquer atualizao dos dados a partir de um servidor conduz atualizao de dados
para todas as janelas de tempo e ao reclculo dos indicadores. Devido a isso, o acesso aos dados pode
ficar fechado, mesmo se estes dados estiverem disponveis a um momento atrs.

Sincronizao dos Dados do Terminal com os Dados do Servidor


J que um programa mql5 pode chamar dados de qualquer ativo e janela de tempo, existe a
possibilidade que os dados de uma srie de tempo necessria no esteja formado ainda no terminal ou
o preo necessrio no esteja sincronizado com o servidor de negociao. Neste caso difcil predizer
o tempo de latncia.
Algoritmos usando ciclos de latncia no so a melhor soluo. A nica exceo neste caso so os
scripts, porque eles no nenhuma escolha de algoritmo alternativo porque eles no tem manipuladores
de evento. Para indicadores customizados tais algoritmos, bem como quaisquer outros ciclos de
latncia so fortemente no recomendados, porque levam a finalizao do clculo de todos os
indicadores e qualquer outro manipulador de dados de preo do ativo.
Para Expert Advisor e indicadores, melhor usar o modelo de eventos de manipulao. Se durante a
manipulao dos eventos OnTick() ou OnCalculate(), o recebimento de dados para a janela de tempo

2000-2015, MetaQuotes Software Corp.

1071

Sries Temporais e Acesso a Indicadores


requerida falhar, voc deve sair do manipulador de evento, confiando na disponibilidade de acesso
durante a prxima chamada do manipulador.

Exemplo de um Script para Adicionar Histrico


Vamos considerar um exemplo de um script que executa uma solicitao para receber histrico para o
ativo selecionado de um servidor de negociao. O script projetado para executar em um grfico de
um ativo selecionado; a janela de tempo no importa, porque como foi mencionado acima, dados de
preo so recebidos de um servidor de negociao como pacotes de dados de um minuto, a partir dos
quais qualquer srie de tempo predefinida construda.
Escreve todas as aes relacionadas a recepo de dados
CheckLoadHistory(symbol, timeframe, start_date):

como uma funo separada,

int CheckLoadHistory(string symbol,ENUM_TIMEFRAMES period,datetime start_date)


{
}

A funo CheckLoadHistory() projetada como uma funo universal que pode ser chamada de
qualquer programa (Expert Advisor, script ou indicador); e portanto ela solicita trs parmetros de
entrada: nome do ativo, perodo e data de inicio para indicar o comeo do histrico de preo que voc
necessita.
Insira as verificaes necessrias no cdigo da funo antes de solicitar o histrico faltante.
Primeiramente, ns devemos assegurar que o nome do ativo e valor de perodo esto corretos:
if(symbol==NULL || symbol=="") symbol=Symbol();
if(period==PERIOD_CURRENT)

period=Period();

Ento vamos nos assegurar que o ativo est disponvel na janela Observador de Mercado, isto , o
histrico para o ativo estar disponvel durante o envio de uma solicitao a um servidor de
negociao. Se no houver tal ativo no Observador de Mercado, adicionar ele usando a funo
SymbolSelect().
if(!SymbolInfoInteger(symbol,SYMBOL_SELECT))
{
if(GetLastError()==ERR_MARKET_UNKNOWN_SYMBOL) return(-1);
SymbolSelect(symbol,true);
}

Agora ns devemos receber a data de incio do histrico disponvel para o par ativo/perodo indicado.
Talvez, o valor do parmetro de entrada startdate, passado para CheckLoadHistory(), j esteja
disponvel no histrico; ento a solicitao a um servidor de negociao no necessria. A fim de
obter a primeira data para o ativo-perodo, a funo SeriesInfoInteger() com o modificador
SERIES_FIRSTDATE usada.
SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date);
if(first_date>0 && first_date<=start_date) return(1);

A prxima importante verificao o tipo do programa, a partir do qual a funo chamada. Note que
enviar uma solicitao de atualizao de srie de tempo com o mesmo perodo do indicador, que
chama a atualizao, no desejvel. O problema de solicitar dados sobre o mesmo ativo-perodo que
o do indicador est relacionado ao fato de que a atualizao de dados de histrico realizada na

2000-2015, MetaQuotes Software Corp.

1072

Sries Temporais e Acesso a Indicadores


mesma thread onde o indicador opera. Assim a possibilidade de ocorrncia de conflito alta. Para
verificar isso use a funo MQL5InfoInteger() com o modificador MQL5_PROGRAM_TYPE.

if(MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR && Period()==period && Symbol()==symbol


return(-4);

Se todas as verificaes tiverem passado com sucesso, faa a ltima tentativa de acesso sem se
referir ao servidor de negociao Primeiramente, descubra a data de incio, para qual dados de minuto
no formato HCC esto disponveis. Solicite este valor usando a funo SeriesInfoInteger() com o
modificador SERIES_TERMINAL_FIRSTDATE e compare novamente ele com o valor do parmetro
start_date.
if(SeriesInfoInteger(symbol,PERIOD_M1,SERIES_TERMINAL_FIRSTDATE,first_date))
{
//--- existe dados carregados para construir a srie de tempo
if(first_date>0)
{
//--- fora a construo da srie de tempo
CopyTime(symbol,period,first_date+PeriodSeconds(period),1,times);
//--- verifica
if(SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date))
if(first_date>0 && first_date<=start_date) return(2);
}
}

Se aps todas as verificaes, a thread de execuo estiver ainda no corpo da funo


CheckLoadHistory(), isso significa que existe uma necessidade de solicitar os dados de preo faltantes
ao servidor de negociao. Primeiro, retorne o valor de "Mx. barras no grfico" usando a funo
TerminalInfoInteger():
int max_bars=TerminalInfoInteger(TERMINAL_MAXBARS);

Ns precisaremos dele para evitar solicitar dados extra. Ento encontre a primeira data no sistema do
ativo no servidor de negociao (independentemente do perodo) usando a j conhecida funo
SeriesInfoInteger() com o modificador SERIES_SERVER_FIRSTDATE.
datetime first_server_date=0;

while(!SeriesInfoInteger(symbol,PERIOD_M1,SERIES_SERVER_FIRSTDATE,first_server_date) && !IsStopp


Sleep(5);

J que a solicitao uma operao assncrona, a funo chamada no ciclo com uma espera de 5
milissegundos at a varivel first_server_date receber um valor, ou a execuo do ciclo ser terminada
por um usurio (IsStopped() retornar true neste caso). Vamos indicar um valor correto da data de
incio, comeando a partir do qual ns solicitamos dados de preo de um servidor de negociao.
if(first_server_date>start_date) start_date=first_server_date;
if(first_date>0 && first_date<first_server_date)
Print("Aviso: primeira data de servidor ",first_server_date," para",
symbol," no coincide com a primeira data de srie ",first_date);

Se a data de incio first_server_date do servidor for menor que o data de incio first_date do ativo em
formato HCC, a correspondente entrada ser impressa no dirio.

2000-2015, MetaQuotes Software Corp.

1073

Sries Temporais e Acesso a Indicadores


Agora ns estamos prontos para fazer uma solicitao a um servidor de negociao por dados de preo
faltantes. Faa a solicitao na forma de um ciclo e comece preenchendo seu corpo:
while(!IsStopped())
{

//1. espere pela sincronizao entre a srie de tempo reconstruda e o histrico intermediri
//2. receba o nmero corrente de barra n desta srie de tempo
//

se bars for maior que Max_bars_in_char, ns podem sair, o trabalho est terminado,

//3. obter a data de incio first_date na srie de tempo reconstruda e comparar ela com stra
//

se first_date for menor que start_date, ns podemos sair, o trabalho est terminado

//4. solicitar a um servidor uma nova parte do histrico - 100 barras comeando da ltima bar
}

Os primeiros trs pontos esto implementados pelos meios j conhecidos.


while(!IsStopped())
{
//--- 1. esperar at o processo de reconstruo da srie de tempo acabar
while(!SeriesInfoInteger(symbol,period,SERIES_SYNCHRONIZED) && !IsStopped())
Sleep(5);
//--- 2. solicitar quantas barras ns tempos
int bars=Bars(symbol,period);
if(bars>0)
{
//--- barras mais que podem ser desenhadas no grfico, sair
if(bars>=max_bars) return(-2);
//--- 3. retorne a data de incio corrente na srie de tempo
if(SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date))
// data de incio foi anterior a aquela solicitada, tarefa concluda
if(first_date>0 && first_date<=start_date) return(0);
}

//4. Solicitar a um servidor uma nova parte do histrico - 100 barras comeando da ltima bar
}

Sobrou o quarto ltimo ponto - solicitar histrico. Ns no podemos referenciar a um servidor


diretamente, mas toda funo-Copy inicia automaticamente uma solicitao de envio a um servidor,
se o histrico em formato HCC no for suficiente. J que a hora da primeira data de incio na varivel
first_date um simples e natural critrio para avaliar o grau de execuo de uma solicitao, ento a
forma mais fcil usar a funo CopyTime().
Ao chamar funes que copiam quaisquer dados de sries de tempo, deve ser notado que o parmetro
start (nmero da barra, comeando a partir do qual dados de preo devem ser copiados) deve sempre
estar dentro do histrico de terminal disponvel. Se voc tiver somente 100 barras, intil tentar
copiar 300 barras comeando da barra com o ndice 500. Tal solicitao ser entendida como um error
e no ser tratada, isto , nenhum histrico adicional ser carregado de um servidor de negociao.
Esta a razo porque ns copiaremos 100 barras comeando da barra com o ndice bars. Isso
fornecer uma carga suave de histrico faltando doe um servidor de negociao. Na verdade, um
pouco mais que as 100 barras solicitadas sero carregadas, j que o servidor envia um histrico
superdimensionado.
int copied=CopyTime(symbol,period,bars,100,times);

2000-2015, MetaQuotes Software Corp.

1074

Sries Temporais e Acesso a Indicadores


Aps a operao de cpia, ns devemos analizar o nmero de elementos copiados. Se a tentativa
falhar, ento o valor copiado ser igual a null e o valor do contador fail_cnt ser aumentado em 1.
Aps 100 tentativas com falha, a operao da funo ser interrompida.
int fail_cnt=0;
...
int copied=CopyTime(symbol,period,bars,100,times);
if(copied>0)
{
//--- verifica dados
if(times[0]<=start_date)

return(0);

// o valor copiado menor, pronto

if(bars+copied>=max_bars) return(-2); // as barras so mais do que se pode desenhar no grfic


fail_cnt=0;
}
else
{
//--- no mais que 100 tentativas falhando em sucesso
fail_cnt++;
if(fail_cnt>=100) return(-5);
Sleep(10);
}

Ento, no somente manipulao correta da situao corrente em cada momento de execuo est
implementada na funo, mas tambm o cdigo de finalizao retornado, que pode ser tratado
depois chamando a funo CheckLoadHistory() para obteno de informaes adicionais. Por exemplo,
desta forma:
int res=CheckLoadHistory(InpLoadedSymbol,InpLoadedPeriod,InpStartDate);
switch(res)
{
case -1 : Print("Unknown symbol ",InpLoadedSymbol);

break;

case -2 : Print("More requested bars than can be drawn in the chart"); break;
case -3 : Print("Execution stopped by user");

break;

case -4 : Print("Indicator mustn't load its own data");

break;

case -5 : Print("Loading failed");

break;

case

0 : Print("All data loaded");

break;

case

1 : Print("Already available data in timeseries are enough");

break;

case

2 : Print("Timeseries is built from available terminal data");

break;

default : Print("Execution result undefined");


}

O cdigo completo da funo pode ser encontrado no exemplo de um script que mostra a correta
organizao de acesso de quaisquer dados com a manipulao de resultados de solicitao.
Code:
//+------------------------------------------------------------------+
//|

TestLoadHistory.mq5 |

//|

Copyright 2009, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

2000-2015, MetaQuotes Software Corp.

1075

Sries Temporais e Acesso a Indicadores


//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.02"

#property script_show_inputs
//--- parmetros de entrada
input string

InpLoadedSymbol="NZDUSD";

input ENUM_TIMEFRAMES InpLoadedPeriod=PERIOD_H1;


input datetime

// Ativo a ser carregado


// Perdio a ser carregado

InpStartDate=D'2006.01.01'; // Data de incio

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
Print("Start load",InpLoadedSymbol+","+GetPeriodName(InpLoadedPeriod),"from",InpStartDate);
//--int res=CheckLoadHistory(InpLoadedSymbol,InpLoadedPeriod,InpStartDate);
switch(res)
{
case -1 : Print("Unknown symbol ",InpLoadedSymbol);

break;

case -2 : Print("Requested bars more than max bars in chart"); break;


case -3 : Print("Program was stopped");

break;

case -4 : Print("Indicator shouldn't load its own data");

break;

case -5 : Print("Load failed");

break;

case

0 : Print("Loaded OK");

break;

case

1 : Print("Loaded previously");

break;

case

2 : Print("Loaded previously and built");

break;

default : Print("Unknown result");


}
//--datetime first_date;
SeriesInfoInteger(InpLoadedSymbol,InpLoadedPeriod,SERIES_FIRSTDATE,first_date);
int bars=Bars(InpLoadedSymbol,InpLoadedPeriod);
Print("Primeira data ",first_date," - ",bars," barres");
//--}
//+------------------------------------------------------------------+
//|

//+------------------------------------------------------------------+
int CheckLoadHistory(string symbol,ENUM_TIMEFRAMES period,datetime start_date)
{
datetime first_date=0;
datetime times[100];
//--- verifica ativo e perodo
if(symbol==NULL || symbol=="") symbol=Symbol();
if(period==PERIOD_CURRENT)

period=Period();

//--- verifica se o ativo est selecionado no Observador de Mercado


if(!SymbolInfoInteger(symbol,SYMBOL_SELECT))
{

2000-2015, MetaQuotes Software Corp.

1076

Sries Temporais e Acesso a Indicadores


if(GetLastError()==ERR_MARKET_UNKNOWN_SYMBOL) return(-1);
SymbolSelect(symbol,true);
}
//--- verifica se os dados esto presentes
SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date);
if(first_date>0 && first_date<=start_date) return(1);
//--- no pede para carregar seus prprios dados se ele for um indicador

if(MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR && Period()==period && Symbol()==symbol


return(-4);
//--- segunda tentativa
if(SeriesInfoInteger(symbol,PERIOD_M1,SERIES_TERMINAL_FIRSTDATE,first_date))
{
//--- existe dados carregados para construir a srie de tempo
if(first_date>0)
{
//--- fora a construo da srie de tempo
CopyTime(symbol,period,first_date+PeriodSeconds(period),1,times);
//--- verifica
if(SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date))
if(first_date>0 && first_date<=start_date) return(2);
}
}
//--- mximo de barras em um grfico a partir de opes do terminal
int max_bars=TerminalInfoInteger(TERMINAL_MAXBARS);
//--- carrega informaes de histrico do ativo
datetime first_server_date=0;

while(!SeriesInfoInteger(symbol,PERIOD_M1,SERIES_SERVER_FIRSTDATE,first_server_date) && !IsStopp


Sleep(5);
//--- corrige data de incio para carga
if(first_server_date>start_date) start_date=first_server_date;
if(first_date>0 && first_date<first_server_date)
Print("Aviso: primeira data de servidor ",first_server_date," para ",symbol,
" no coincide com a primeira data de srie ",first_date);
//--- carrega dados passo a passo
int fail_cnt=0;
while(!IsStopped())
{
//--- espera pela construo da srie de tempo
while(!SeriesInfoInteger(symbol,period,SERIES_SYNCHRONIZED) && !IsStopped())
Sleep(5);
//--- pede por construir barras
int bars=Bars(symbol,period);
if(bars>0)
{
if(bars>=max_bars) return(-2);
//--- pede pela primeira data
if(SeriesInfoInteger(symbol,period,SERIES_FIRSTDATE,first_date))
if(first_date>0 && first_date<=start_date) return(0);
}

2000-2015, MetaQuotes Software Corp.

1077

Sries Temporais e Acesso a Indicadores


//--- cpia da prxima parte fora carga de dados
int copied=CopyTime(symbol,period,bars,100,times);
if(copied>0)
{
//--- verifica dados
if(times[0]<=start_date)

return(0);

if(bars+copied>=max_bars) return(-2);
fail_cnt=0;
}
else
{
//--- no mais que 100 tentativas com falha
fail_cnt++;
if(fail_cnt>=100) return(-5);
Sleep(10);
}
}
//--- interrompido
return(-3);
}
//+------------------------------------------------------------------+
//| Retorna valor de string do perodo

//+------------------------------------------------------------------+
string GetPeriodName(ENUM_TIMEFRAMES period)
{
if(period==PERIOD_CURRENT) period=Period();
//--switch(period)
{
case PERIOD_M1:

return("M1");

case PERIOD_M2:

return("M2");

case PERIOD_M3:

return("M3");

case PERIOD_M4:

return("M4");

case PERIOD_M5:

return("M5");

case PERIOD_M6:

return("M6");

case PERIOD_M10: return("M10");


case PERIOD_M12: return("M12");
case PERIOD_M15: return("M15");
case PERIOD_M20: return("M20");
case PERIOD_M30: return("M30");
case PERIOD_H1:

return("H1");

case PERIOD_H2:

return("H2");

case PERIOD_H3:

return("H3");

case PERIOD_H4:

return("H4");

case PERIOD_H6:

return("H6");

case PERIOD_H8:

return("H8");

case PERIOD_H12: return("H12");


case PERIOD_D1:

return("Daily");

case PERIOD_W1:

return("Weekly");

2000-2015, MetaQuotes Software Corp.

1078

Sries Temporais e Acesso a Indicadores


case PERIOD_MN1: return("Monthly");
}
//--return("perodo desconhecido");
}

2000-2015, MetaQuotes Software Corp.

1079

Sries Temporais e Acesso a Indicadores

SeriesInfoInteger
Retorna informaes sobre o estado de dados histricos. Existem 2 variantes de chamada da funo.
Retorna diretamente o valor da propriedade.
long SeriesInfoInteger(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES

timeframe,

// perodo

ENUM_SERIES_INFO_INTEGER

prop_id,

// identificador da propriedade

);

Retorna true ou false dependendo do sucesso da execuo da funo.


bool SeriesInfoInteger(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES

timeframe,

// perodo

ENUM_SERIES_INFO_INTEGER

prop_id,

// ID da propriedade

long&

long_var

// varivel a informao obtida

);

Parmetros
symbol_name
[in] Nome do ativo.
timeframe
[in] Perodo.
prop_id
[in] Identificador da propriedade solicitada, valor da enumerao ENUM_SERIES_INFO_INTEGER.
long_var
[out] Varivel para onde o valor da propriedade solicitada colocado.
Valor do Retorno
No primeiro caso, ela retorna valor do tipo long.
Para o segundo caso, ela retorna true, se a propriedade especificada estiver disponvel e seu valor
colocada na varivel long_var, caso contrrio ela returna false. Para mais detalhes sobre um erro,
chame a funo GetLastError().
Exemplo:
void OnStart()
{
//--Print("Total number of bars for the symbol-period at this moment = ",
SeriesInfoInteger(Symbol(),0,SERIES_BARS_COUNT));
Print("The first date for the symbol-period at this moment = ",
(datetime)SeriesInfoInteger(Symbol(),0,SERIES_FIRSTDATE));

2000-2015, MetaQuotes Software Corp.

1080

Sries Temporais e Acesso a Indicadores

Print("The first date in the history for the symbol-period on the server = ",
(datetime)SeriesInfoInteger(Symbol(),0,SERIES_SERVER_FIRSTDATE));
Print("Symbol data are synchronized = ",
(bool)SeriesInfoInteger(Symbol(),0,SERIES_SYNCHRONIZED));
}

2000-2015, MetaQuotes Software Corp.

1081

Sries Temporais e Acesso a Indicadores

Bars
Retorna o nmero de barras no histrico para um ativo e perodo especficos. Existe 2 variantes de
chamada da funo.
Solicita todas as barras do histrico
int Bars(
string

symbol_name,

ENUM_TIMEFRAMES timeframe

// nome do ativo
// perodo

);

Solicita as barras do histrico no intervalo de tempo selecionado


int Bars(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

datetime

stop_time

// data e hora de trmino

);

Parmetros
symbol_name
[in] Nome do ativo.
timeframe
[in] Perodo.
start_time
[in] Hora da barra correspondente ao primeiro elemento.
stop_time
[in] Hora da barra correspondente ao ltimo elemento.
Valor do Retorno
Se os parmetros start_time e stop_time estiverem definidos, a funo retorna o nmero de barras
no intervalo de tempo especificado, caso contrrio retorna o nmero total de barras.
Observao
Se dados para a srie de tempo com parmetros especficados no estiverem formados no terminal
na hora que a funo Bars() for chamada, ou dados da srie de tempo no estiverem sincronizados
com um servidor de negociao no momento da chamada da funo, a funo retorna o valor zero.
Sample:
int bars=Bars(_Symbol,_Period);
if(bars>0)
{
Print("Number of bars in the terminal history for the symbol-period at the moment = ",bars);
}
else

//sem barras disponveis

2000-2015, MetaQuotes Software Corp.

1082

Sries Temporais e Acesso a Indicadores


{
//--- dados sobre o ativo podem no estar sincronizados com os dados no servidor
bool synchronized=false;
//--- contador de loop
int attempts=0;
// faz 5 tentativas de espera por sincronizao
while(attempts<5)
{
if(SeriesInfoInteger(Symbol(),0,SERIES_SYNCHRONIZED))
{
//--- sincronizao feita, sair
synchronized=true;
break;
}
//--- aumentar o contador
attempts++;
//--- espera 10 milissegundos at a prxima iterao
Sleep(10);
}
//--- sair do loop aps sincronizao
if(synchronized)
{

Print("Number of bars in the terminal history for the symbol-period at the moment = ",bars
Print("The first date in the terminal history for the symbol-period at the moment = ",
(datetime)SeriesInfoInteger(Symbol(),0,SERIES_FIRSTDATE));
Print("The first date in the history for the symbol on the server = ",
(datetime)SeriesInfoInteger(Symbol(),0,SERIES_SERVER_FIRSTDATE));
}
//--- sincronizao dos dados no aconteceu
else
{
Print("Failed to get number of bars for ",_Symbol);
}
}

Tambm Veja
Funes de Processamento de Eventos

2000-2015, MetaQuotes Software Corp.

1083

Sries Temporais e Acesso a Indicadores

BarsCalculated
Retorna o nmero de dados calculados para o indicador especificado.
int BarsCalculated(
int

indicator_handle,

// handle do indicador

);

Parmetros
indicator_handle
[in] O handle do indicador, retornado pela funo do indicador correspondente.
Valor do Retorno
Retorna a quantidade de dados calculados no buffer de indicador, ou -1 em caso de erro (dados
ainda no calculados)
Observao
A funo til quando necessrio obter os dados do indicador imediatamente aps sua criao (o
handle do indicador est disponvel).
Exemplo:
void OnStart()
{
double Ups[];
//--- define a ordenao de srie de tempo para os arrays
ArraySetAsSeries(Ups,true);
//--- cria handle para o indicador Fractal
int FractalsHandle=iFractals(NULL,0);
//--- redefine o cdigo de erro
ResetLastError();
//--- tenta copiar os valores do indicador
int i,copied=CopyBuffer(FractalsHandle,0,0,1000,Ups);
if(copied<=0)
{
Sleep(50);
for(i=0;i<100;i++)
{
if(BarsCalculated(FractalsHandle)>0)
break;
Sleep(50);
}
copied=CopyBuffer(FractalsHandle,0,0,1000,Ups);
if(copied<=0)
{
Print("Failed to copy upper fractals. Erro = ",GetLastError(),
"i = ",i,"

copiado = ",copied);

return;
}

2000-2015, MetaQuotes Software Corp.

1084

Sries Temporais e Acesso a Indicadores


else
Print("Upper fractals copied",
"i = ",i,"

copiado = ",copied);

}
else Print("Upper fractals copied. ArraySize = ",ArraySize(Ups));
}

2000-2015, MetaQuotes Software Corp.

1085

Sries Temporais e Acesso a Indicadores

IndicatorCreate
A funo retorna o handle de um indicador tcnico especificado criado baseado no array de parmetros
de tipo MqlParam.
int IndicatorCreate(
string

symbol,

// nome do ativo

ENUM_TIMEFRAMES period,

// janela de tempo

ENUM_INDICATOR indicator_type,

// tipo de indicador a partir da enumerao

int

parameters_cnt=0,

// nmero de parmetros

const MqlParam&

parameters_array[]=NULL,

// array de parmetros

);

Parmetros
symbol
[in] Nome de um ativo, sobre cujos dados o indicador calculado. NULL significa o ativo corrente.
period
[in] O valor da janela de tempo pode ser um dos valores da enumerao ENUM_TIMEFRAMES, 0
significa a janela de tempo corrente.
indicator_type
[in] Tipo de indicador, pode ser um dos valores da enumerao ENUM_INDICATOR.
parameters_cnt
[in] O nmero de parmetros passados no array parameters_array[]. Os elementos do array tm
uma estrutura especial de tipo MqlParam. Por default, zero - parmetros so passados. Se voc
especificar um nmero no zero de parmetros, o parmetro parameters_array obrigatrio. Voc
no pode passar mais que 256 parmetros.
parameters_array[]=NULL
[in] Um array do tipo MqlParam, cujos elementos contm o tipo e valor de cada parmetro de
input de um indicador tcnico.
Valor de retorno
Retorna o handle de um indicador tcnico especificado, em caso de falha retorna INVALID_HANDLE.
Observao
Se o handle de indicador de tipo IND_CUSTOM for criado, o campo type do primeiro elemento do
array de parmetros de entrada parameters_array deve ter o valor TYPE_STRING da enumerao
ENUM_DATATYPE, e o campo string_value do primeiro elemento deve conter o nome do indicador
customizado. O indicador customizado deve estar compilado (arquivo com extenso EX5) e
localizado no diretrio MQL5/Indicators do terminal cliente ou em um subdiretrio.
Indicadores que requerem teste so definidos automaticamente a partir da chamada da funo
iCustom(), se o correspondente parmetro for definido atravs de um string constante. Para todos
os outros casos (uso da funo IndicatorCreate() ou uso de uma string no-constante no parmetro
de define o nome do indicador) a propriedade #property tester_indicator requerida:
#property tester_indicator "indicator_name.ex5"

2000-2015, MetaQuotes Software Corp.

1086

Sries Temporais e Acesso a Indicadores


Se primeira forma da chamada for usada em um indicador customizado, voc pode adicionalmente
indicar como ltimo parmetro sobre quais dados o indicador ser calculado, ao passar os
parmetros de input. Se o parmetro "Apply to" no for especificado explicitamente, o clculo
default baseado no valores de PRICE_CLOSE.
Exemplo:
void OnStart()
{
MqlParam params[];
int

h_MA,h_MACD;

//--- criar iMA("EURUSD",PERIOD_M15,8,0,MODE_EMA,PRICE_CLOSE);


ArrayResize(params,4);
//--- define ma_period
params[0].type

=TYPE_INT;

params[0].integer_value=8;
//--- define ma_shift
params[1].type

=TYPE_INT;

params[1].integer_value=0;
//--- define ma_method
params[2].type

=TYPE_INT;

params[2].integer_value=MODE_EMA;
//--- define applied_price
params[3].type

=TYPE_INT;

params[3].integer_value=PRICE_CLOSE;
//--- criar MA
h_MA=IndicatorCreate("EURUSD",PERIOD_M15,IND_MA,4,params);
//--- criar iMACD("EURUSD",PERIOD_M15,12,26,9,h_MA);
ArrayResize(params,4);
//--- define ma_period rpido
params[0].type

=TYPE_INT;

params[0].integer_value=12;
//--- define ma_period lento
params[1].type

=TYPE_INT;

params[1].integer_value=26;
//--- define perodo de suavizao por diferena
params[2].type

=TYPE_INT;

params[2].integer_value=9;
//--- define o handle do indicador como applied_price
params[3].type

=TYPE_INT;

params[3].integer_value=h_MA;
//--- criar MACD baseado em mdia mvel
h_MACD=IndicatorCreate("EURUSD",PERIOD_M15,IND_MACD,4,params);
//--- usa os indicadores
//--- . . .
//--- libera os indicatores (primeiro h_MACD)
IndicatorRelease(h_MACD);
IndicatorRelease(h_MA);
}

2000-2015, MetaQuotes Software Corp.

1087

Sries Temporais e Acesso a Indicadores

IndicatorParameters
Baseado no handle especificado, retorna o nmero de parmetros de entrada do indicador, bem como
os valores e tipos dos parmetros.
int IndicatorParameters(
int

indicator_handle,

// handle do indicador

ENUM_INDICATOR& indicator_type,

// uma varivel para receber o tipo do indicador

MqlParam&

// um array para receber parmetros

parameters[]

);

Parmetros
indicator_handle
[in] O handle do indicador, para o qual voc precisa saber o nmero de parmetros sobre os quais
o indicador calculado.
indicator_type
[out] Uma varivel de tipo ENUM_INDICATOR, na qual o tipo do indicador ser escrito.
parameters[]
[out] Um array dinmico para receber valores do tipo MqlParam, na qual a lista de parmetros do
indicador ser escrito. O tamanho do array retornado pela funo IndicatorParameters().
Valor do Retorno
O nmero de parmetros de entrada do indicador com o handle especificado. No caso de um erro,
retorna -1. Para mais detalhes sobre o erro chame a funo GetLastError().
Exemplo:
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- O nmero de janelas no grfico (ao menos uma janela principal est sempre presente)
int windows=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);
//--- Varre as janelas do grfico
for(int w=0;w<windows;w++)
{
//--- O nmero de indicadores nesta janela/sub-janela
int total=ChartIndicatorsTotal(0,w);
//--- Pega todos os indicadores na janela
for(int i=0;i<total;i++)
{
//--- Obtm o nome abreviado do indicador
string name=ChartIndicatorName(0,w,i);
//--- Obtm o handle do indicador
int handle=ChartIndicatorGet(0,w,name);
//--- Adicionar o log

2000-2015, MetaQuotes Software Corp.

1088

Sries Temporais e Acesso a Indicadores


PrintFormat("Window=%d,

indicator #%d,

handle=%d",w,i,handle);

//--MqlParam parameters[];
ENUM_INDICATOR indicator_type;
int params=IndicatorParameters(handle,indicator_type,parameters);
//--- O cabealho da mensagem
string par_info="Short name "+name+", type "
+EnumToString(ENUM_INDICATOR(indicator_type))+"\r\n";
//--for(int p=0;p<params;p++)
{

par_info+=StringFormat("parmetro %d: type=%s, long_value=%d, double_value=%G,string_va


p,
EnumToString((ENUM_DATATYPE)parameters[p].type),
parameters[p].integer_value,
parameters[p].double_value,
parameters[p].string_value
);
}
Print(par_info);
}
//--- Pronto para todos os indicadores da janela
}
//--}

Tambm Veja
ChartIndicatorGet()

2000-2015, MetaQuotes Software Corp.

1089

Sries Temporais e Acesso a Indicadores

IndicatorRelease
A funo remove um handle de indicador e libera o bloco de clculo do indicador, se ele no for usado
por ningum mais.
bool IndicatorRelease(
int

indicator_handle,

// handle do indicador

);

Valor de retorno
Retorna true no caso de sucesso, caso contrrio retorna false.
Observao
A funo permite remover um handle de indicador, se ele no mais for necessrio, deste modo,
economizando memria . O handle removido imediatamente, o bloco de clculo excludo em
algum momento (se ele no for chamado por ningum mais).
Exemplo:
//+------------------------------------------------------------------+
//|

Test_IndicatorRelease.mq5 |

//|

Copyright 2010, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- parmetros de entrada


input int

MA_Period=15;

input int

MA_shift=0;

input ENUM_MA_METHOD

MA_smooth=MODE_SMA;

input ENUM_APPLIED_PRICE price=PRICE_CLOSE;


//--- armazenar o handle de indicador
int MA_handle=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--- cria um handle de indicador
MA_handle=iMA(Symbol(),0,MA_Period,MA_shift,MA_smooth,PRICE_CLOSE);
//--- exclui varivel global
if(GlobalVariableCheck("MA_value"))
GlobalVariableDel("MA_value");
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

2000-2015, MetaQuotes Software Corp.

1090

Sries Temporais e Acesso a Indicadores


//+------------------------------------------------------------------+
void OnTick()
{
//--- se o valor da varivel global no existir
if(!GlobalVariableCheck("MA_value"))
{
//--- obtm o valor do indicador nas ltimas duas barras
if(MA_handle!=INVALID_HANDLE)
{
//--- array dinmico para valores do indicador
double values[];
if(CopyBuffer(MA_handle,0,0,2,values)==2 && values[0]!=EMPTY_VALUE)
{
//--- lembra na varivel global o valor da penltima barra
if(GlobalVariableSet("MA_value",values[0]))
{
//--- libera o handle do indicador
if(!IndicatorRelease(MA_handle))
Print("IndicatorRelease() falhou. Error ",GetLastError());
else MA_handle=INVALID_HANDLE;
}
else
Print("GlobalVariableSet falhou. Error ",GetLastError());
}
}
}
//--}

2000-2015, MetaQuotes Software Corp.

1091

Sries Temporais e Acesso a Indicadores

CopyBuffer
Obtm dados de um buffer especificado de um certo indicador na quantidade necessria.

A contagem de elementos de dados copiados (buffer de indicador com o ndice buffer_num) da posio
de incio realizada do presente para o passado, isto , posio de incio 0 significa a barra corrente
(valor do indicador para a barra corrente).
Ao copiar uma quantidade ainda desconhecida de dados, recomendado usar um array dinmico como
um buffer[] recipiente, porque a funo CopyBuffer() tenta alocar o tamanho do array receptor ao
tamanho dos dados copiados. Se um buffer de indicador (array que pr-alocado para armazenar
valores de um indicador atravs da funo SetIndexBufer()) for usado como um array recipiente
buffer[], uma copia parcial permitida. Um exemplo pode ser encontrado no indicador customizado
Awesome_Oscillator.mql5 no pacote padro do terminal.
Se voc precisar fazer uma cpia parcial dos valores de um indicador em um outro array (um no
buffer de indicador), voc deve usar um array intermedirio, para o qual o nmero desejado
copiado. Aps isso, conduza uma cpia elemento a elemento do requerido nmero de valores para os
lugares requeridos em um array de recepo a partir deste array intermedirio.
Se voc souber a quantidade de dados que voc precisa para copiar, melhor usar um buffer alocado
estaticamente, a fim de evitar a alocao de memria excessiva.
No importa qual seja a propriedade do array destino - como series=true ou como series=false. Os
dados sero copiados de tal maneira que o elemento mais antigo ser localizado no incio da memria
fsica alocada para o array. Exitem 3 variantes de chamada da funo.
Chamar pela posio primeira e o nmero de elementos requeridos
int CopyBuffer(
int

indicator_handle,

// handle do indicador

int

buffer_num,

// nmero do buffer do indicador

int

start_pos,

// posio de incio

int

count,

// quantidade para copiar

double

buffer[]

// array destino para copiar

);

Chamar pela data de incio e o nmero de elementos requeridos


int CopyBuffer(
int

indicator_handle,

// handle do indicador

2000-2015, MetaQuotes Software Corp.

1092

Sries Temporais e Acesso a Indicadores


int

buffer_num,

// nmero do buffer do indicador

datetime start_time,

// data e hora de incio

int

count,

// quantidade para copiar

double

buffer[]

// array destino para copiar

);

Chamar pelas datas de incio e trmino de um intervalo de tempo requerido


int CopyBuffer(
int

indicator_handle,

// handle do indicador

int

buffer_num,

// nmero do buffer do indicador

datetime start_time,

// data e hora de incio

datetime stop_time,

// data e hora de trmino

double

// array destino para copiar

buffer[]

);

Parmetros
indicator_handle
[in] O handle do indicador, retornado pela funo do indicador correspondente.
buffer_num
[in] O nmero do buffer do indicador.
start_pos
[in] A posio do primeiro elemento para copiar.
count
[in] Quantidade de dados para copiar.
start_time
[in] Hora da barra, correspondente ao primeiro elemento.
stop_time
[in] Hora da barra, correspondente ao ltimo elemento.
buffer[]
[out] Array de tipo double.
Valor do Retorno
Retorna a quantidade de dados copiados ou -1 no caso de um erro.
Observao
Ao solicitar dados de um indicador, se as sries de tempo solicitadas no estiverem ainda
construdas ou elas precisarem serem baixadas do servidor, a funo imediatamente retornar -1,
mas o processo de download/construo ser iniciado.
Ao solicitar dados de um Expert Advisor ou script, o download do servidor ser iniciado se o terminal
no tiver estes dados localmente, ou a construo da srie de tempo solicitada iniciar, se os dados
puderem ser construdas a partir do histrico local mas eles no estiverem prontos ainda. A funo
retornar a quantidade de dados que estar pronta no momento da expirao do tempo limite.

2000-2015, MetaQuotes Software Corp.

1093

Sries Temporais e Acesso a Indicadores


Exemplo:
//+------------------------------------------------------------------+
//|

TestCopyBuffer3.mq5 |

//|

Copyright 2009, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//---- plotar MA
#property indicator_label1

"MA"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input bool

AsSeries=true;

input int

period=15;

input ENUM_MA_METHOD

smootMode=MODE_EMA;

input ENUM_APPLIED_PRICE price=PRICE_CLOSE;


input int

shift=0;

//--- buffers do indicador


double

MABuffer[];

int

ma_handle;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
Print("Parameter AsSeries = ",AsSeries);
Print("Buffer do indicador aps SetIndexBuffer() timeseries = ",
ArrayGetAsSeries(MABuffer));
//--- define o nome abreviado do indicador
IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries);
//--- define AsSeries(depende do parmetro de entrada)
ArraySetAsSeries(MABuffer,AsSeries);
Print("Buffer do indicador aps ArraySetAsSeries(MABuffer,true); timeseries = ",
ArrayGetAsSeries(MABuffer));
//--ma_handle=iMA(Symbol(),0,period,shift,smootMode,price);
return(INIT_SUCCEEDED);
}

2000-2015, MetaQuotes Software Corp.

1094

Sries Temporais e Acesso a Indicadores


//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- verifica se todos os dados esto calculados
if(BarsCalculated(ma_handle)<rates_total) return(0);
//--- ns no podemos copiar todos os dados
int to_copy;
if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total;
else
{
to_copy=rates_total-prev_calculated;
//--- o ltimo valor sempre copiado
to_copy++;
}
//--- tenta copiar
if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0) return(0);
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+

O exemplo acima ilustra como um buffer de indicador preenchido com os valores de um outro buffer
de indicador a partir de um indicador sobre o mesmo ativo/perodo.
Veja uma exemplo detalhado de solicitao de dados histricos na seo Mtodos de Vinculao de
Objetos. O script disponvel nesta seo mostra como obter os valores do indicador iFractals nas
ltimas 1000 barras e como exibir os ltimos 10 fractais de alta e os ltimos 10 fractais de baixa no
grfico. Uma tcnica simular pode ser usada para todos os indicadores que tm dados faltantes e que
so usualmente desenhados usando os seguintes estilos:
DRAW_SECTION,
DRAW_ARROW,
DRAW_ZIGZAG,
DRAW_COLOR_SECTION,
DRAW_COLOR_ARROW,
DRAW_COLOR_ZIGZAG.

2000-2015, MetaQuotes Software Corp.

1095

Sries Temporais e Acesso a Indicadores

Tambm Veja
Propriedades de Indicadores Customizados, SetIndexBuffer

2000-2015, MetaQuotes Software Corp.

1096

Sries Temporais e Acesso a Indicadores

CopyRates
Obtm dados histricos de estrutura MqlRates de um ativo-perodo especificado na quantidade
especificada no array rates_array. A ordenao dos elementos dos dados copiados do presente para
o passado, isto , a posio de incio 0 significa a barra corrente.

Ao copiar uma quantidade desconhecida de dados, recomendvel usar umarray dinmicocomo array
destino, porque se a quantidade solicitada de dados for menor (ou maior) que o comprimento do array
destino, a funo tenta realocar a memria de qual forma que os dados solicitados caibam
completamente.
Se voc souber a quantidade de dados que voc precisa para copiar, melhor usar um buffer alocado
estaticamente, a fim de evitar a alocao de memria excessiva.
No importa qual seja a propriedade do array destino - como series=true ou como series=false. Os
dados sero copiados de tal maneira que o elemento mais antigo ser localizado no incio da memria
fsica alocada para o array. Exitem 3 variantes de chamada da funo.
Chamar pela posio primeira e o nmero de elementos requeridos
int CopyRates(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

int

start_pos,

// posio de incio

int

count,

// quantidade de dados para copiar

MqlRates

rates_array[]

// array destino para copiar

);

Chamar pela data de incio e o nmero de elementos requeridos


int CopyRates(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

int

count,

// quantidade de dados para copiar

MqlRates

rates_array[]

// array destino para copiar

);

Chamar pelas datas de incio e trmino de um intervalo de tempo requerido


int CopyRates(

2000-2015, MetaQuotes Software Corp.

1097

Sries Temporais e Acesso a Indicadores


string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

datetime

stop_time,

// data e hora de trmino

MqlRates

rates_array[]

// array destino para copiar

);

Parmetros
symbol_name
[in] Nome do ativo.
timeframe
[in] Perodo.
start_time
[in] Hora da barra do primeiro elemento para copiar.
start_pos
[in] A posio de incio do primeiro elemento para copiar.
count
[in] Quantidade de dados para copiar.
stop_time
[in] Hora da barra, correspondente ao ltimo elemento para copiar.
rates_array[]
[out] Array de tipo MqlRates.
Valor do Retorno
Retorna o nmero de elementos copiados ou -1 no caso de um erro.
Observao
Se o intervalo inteiro de dados solicitados no estiver disponvel no servidor, a funo retorna -1.
Se dados fora do TERMINAL_MAXBARS (nmero mximo de barras no grfico) for solicitado, a
funo tambm retornar -1.
Ao solicitar dados de um indicador, se as sries de tempo solicitadas no estiverem ainda
construdas ou elas precisarem serem baixadas do servidor, a funo imediatamente retornar -1,
mas o processo de download/construo ser iniciado.
Ao solicitar dados de um Expert Advisor ou script, o download do servidor ser iniciado se o terminal
no tiver estes dados localmente, ou a construo da srie de tempo solicitada iniciar, se os dados
puderem ser construdas a partir do histrico local mas eles no estiverem prontos ainda. A funo
retornar a quantidade de dados que estar pronta no momento da expirao do tempo limite, mas
o download do histrico continuar, e na prximo solicitao simular, a funo retornar mais
dados.
Ao solicitar dados atravs da data de incio e do nmero de elementos requeridos, somente dados
cuja data seja menor (anterior) ou igual a data especificada so retornados. Isso significa que a
hora de abertura de qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de

2000-2015, MetaQuotes Software Corp.

1098

Sries Temporais e Acesso a Indicadores


indicador, preos de Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre menor
ou igual ao valor especificado.
Ao solicitar dados em uma faixa especificada de datas, somente dados deste intervalo sero
retornados. O intervalo definido e contado em segundos. Isso significa que a hora de abertura de
qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de indicador, preos de
Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre dentro do intervalo
solicitado.
Assim, se o dia corrente for sbado, e em uma tentativa de copiar dados usando a janela de tempo
semanal, voc especificar start_time=Last_Tuesday e stop_time=Last_Friday, a funo retornar 0,
porque a hora de abertura em uma janela de tempo semanal sempre domingo, e nenhum barra
semanal cair no intervalo especificado.
Se voc precisar retornar o valor correspondente para a barra corrente incompleta, voc pode usar a
primeira forma de chamada, especificando start_pos=0 e count=1.
Exemplo:
void OnStart()
{
//--MqlRates rates[];
ArraySetAsSeries(rates,true);
int copied=CopyRates(Symbol(),0,0,100,rates);
if(copied>0)
{
Print("Barres copiados: "+copied);
string format="open = %G, high = %G, low = %G, close = %G, volume = %d";
string out;
int size=fmin(copied,10);
for(int i=0;i<size;i++)
{
out=i+":"+TimeToString(rates[i].time);
out=out+" "+StringFormat(format,
rates[i].open,
rates[i].high,
rates[i].low,
rates[i].close,
rates[i].tick_volume);
Print(out);
}
}
else Print("Falha ao receber dados histricos para o smbolo ",Symbol());
}

Veja um exemplo detalhado de solicitao de dados histricos na seo Mtodos de Vinculao de


Objetos. O script disponvel nesta seo mostra como obter os valores do indicador iFractals nas
ltimas 1000 barras e como exibir os ltimos 10 fractais de alta e os ltimos 10 fractais de baixa no
grfico. Uma tcnica simular pode ser usada para todos os indicadores que tm dados faltantes e que
so usualmente desenhados usando os seguintes estilos:

2000-2015, MetaQuotes Software Corp.

1099

Sries Temporais e Acesso a Indicadores


DRAW_SECTION,
DRAW_ARROW,
DRAW_ZIGZAG,
DRAW_COLOR_SECTION,
DRAW_COLOR_ARROW,
DRAW_COLOR_ZIGZAG.

Tambm Veja
Estruturas e Classes, TimeToString, StringFormat

2000-2015, MetaQuotes Software Corp.

1100

Sries Temporais e Acesso a Indicadores

CopyTime
A funo obtm em time_array o histrico de dados da hora de abertura de barras para o par ativoperodo especificado na quantidade especificada. Deve ser notado que a ordenao dos elementos do
presente para o passado, isto , a posio de incio 0 significa a barra corrente.

Ao copiar uma quantidade desconhecida de dados, recomendvel usar umarray dinmicocomo array
destino, porque se a quantidade solicitada de dados for menor (ou maior) que o comprimento do array
destino, a funo tenta realocar a memria de qual forma que os dados solicitados caibam
completamente.
Se voc souber a quantidade de dados que voc precisa para copiar, melhor usar um buffer alocado
estaticamente, a fim de evitar a alocao de memria excessiva.
No importa qual seja a propriedade do array destino - como series=true ou como series=false. Os
dados sero copiados de tal maneira que o elemento mais antigo ser localizado no incio da memria
fsica alocada para o array. Exitem 3 variantes de chamada da funo.
Chamar pela posio primeira e o nmero de elementos requeridos
int CopyTime(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

int

start_pos,

// posio de incio

int

count,

// quantidade de dados para copiar

datetime

time_array[]

// array destino para copiar as horas de abertura

);

Chamar pela data de incio e o nmero de elementos requeridos


int CopyTime(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

int

count,

// quantidade de dados para copiar

datetime

time_array[]

// array destino para copiar horas de abertura

);

Chamar pelas datas de incio e trmino de um intervalo de tempo requerido


int CopyTime(

2000-2015, MetaQuotes Software Corp.

1101

Sries Temporais e Acesso a Indicadores


string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

datetime

stop_time,

// data e hora de parada

datetime

time_array[]

// array destino para copiar as horas de abertura

);

Parmetros
symbol_name
[in] Nome do ativo.
timeframe
[in] Perodo.
start_pos
[in] A posio de incio do primeiro elemento para copiar.
count
[in] Quantidade de dados para copiar.
start_time
[in] A hora de incio para o primeiro elemento para copiar.
stop_time
[in] Hora da barra, correspondente ao ltimo elemento para copiar.
time_array[]
[out] Array de tipo datetime.
Valor do Retorno
Retorna a quantidade de dados copiados ou -1 no caso de um erro.
Observao
Se o intervalo inteiro de dados solicitados no estiver disponvel no servidor, a funo retorna -1.
Se dados fora do TERMINAL_MAXBARS (nmero mximo de barras no grfico) for solicitado, a
funo tambm retornar -1.
Ao solicitar dados de um indicador, se as sries de tempo solicitadas no estiverem ainda
construdas ou elas precisarem serem baixadas do servidor, a funo imediatamente retornar -1,
mas o processo de download/construo ser iniciado.
Ao solicitar dados de um Expert Advisor ou script, o download do servidor ser iniciado se o terminal
no tiver estes dados localmente, ou a construo da srie de tempo solicitada iniciar, se os dados
puderem ser construdas a partir do histrico local mas eles no estiverem prontos ainda. A funo
retornar a quantidade de dados que estar pronta no momento da expirao do tempo limite, mas
o download do histrico continuar, e na prximo solicitao simular, a funo retornar mais
dados.
Ao solicitar dados atravs da data de incio e do nmero de elementos requeridos, somente dados
cuja data seja menor (anterior) ou igual a data especificada so retornados. Isso significa que a
hora de abertura de qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de

2000-2015, MetaQuotes Software Corp.

1102

Sries Temporais e Acesso a Indicadores


indicador, preos de Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre menor
ou igual ao valor especificado.
Ao solicitar dados em uma faixa especificada de datas, somente dados deste intervalo sero
retornados. O intervalo definido e contado em segundos. Isso significa que a hora de abertura de
qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de indicador, preos de
Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre dentro do intervalo
solicitado.
Assim, se o dia corrente for sbado, e em uma tentativa de copiar dados usando a janela de tempo
semanal, voc especificar start_time=Last_Tuesday e stop_time=Last_Friday, a funo retornar 0,
porque a hora de abertura em uma janela de tempo semanal sempre domingo, e nenhum barra
semanal cair no intervalo especificado.
Se voc precisar retornar o valor correspondente para a barra corrente incompleta, voc pode usar a
primeira forma de chamada, especificando start_pos=0 e count=1.
Veja um exemplo detalhado de solicitao de dados histricos na seo Mtodos de Vinculao de
Objetos. O script disponvel nesta seo mostra como obter os valores do indicador iFractals nas
ltimas 1000 barras e como exibir os ltimos 10 fractais de alta e os ltimos 10 fractais de baixa no
grfico. Uma tcnica simular pode ser usada para todos os indicadores que tm dados faltantes e que
so usualmente desenhados usando os seguintes estilos:
DRAW_SECTION,
DRAW_ARROW,
DRAW_ZIGZAG,
DRAW_COLOR_SECTION,
DRAW_COLOR_ARROW,
DRAW_COLOR_ZIGZAG.

2000-2015, MetaQuotes Software Corp.

1103

Sries Temporais e Acesso a Indicadores

CopyOpen
A funo obtm em open_array os dados histricos de preos de abertura de barras para o par ativoperodo selecionado na quantidade especificada. Deve ser notado que a ordenao dos elementos do
presente para o passado, isto , a posio de incio 0 significa a barra corrente.

Ao copiar uma quantidade desconhecida de dados, recomendvel usar umarray dinmicocomo array
destino, porque se a quantidade solicitada de dados for menor (ou maior) que o comprimento do array
destino, a funo tenta realocar a memria de qual forma que os dados solicitados caibam
completamente.
Se voc souber a quantidade de dados que voc precisa para copiar, melhor usar um buffer alocado
estaticamente, a fim de evitar a alocao de memria excessiva.
No importa qual seja a propriedade do array destino - como series=true ou como series=false. Os
dados sero copiados de tal maneira que o elemento mais antigo ser localizado no incio da memria
fsica alocada para o array. Exitem 3 variantes de chamada da funo.
Chamar pela posio primeira e o nmero de elementos requeridos
int CopyOpen(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

int

start_pos,

// posio de incio

int

count,

// quantidade de dados para copiar

double

open_array[]

// array destino para copiar preos de abertura

);

Chamar pela data de incio e o nmero de elementos requeridos


int CopyOpen(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

int

count,

// quantidade de dados para copiar

double

open_array[]

// array destino para preos de abertura de barras

);

Chamar pelas datas de incio e trmino de um intervalo de tempo requerido


int CopyOpen(

2000-2015, MetaQuotes Software Corp.

1104

Sries Temporais e Acesso a Indicadores


string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

datetime

stop_time,

// data e hora de parada

double

open_array[]

// array destino para valores de abertura de barras

);

Parmetros
symbol_name
[in] Nome do ativo.
timeframe
[in] Perodo.
start_pos
[in] A posio de incio do primeiro elemento para copiar.
count
[in] Quantidade de dados para copiar.
start_time
[in] A hora de incio para o primeiro elemento para copiar.
stop_time
[in] A hora de incio para o ltimo elemento para copiar.
open_array[]
[out] Array de tipo double.
Valor do Retorno
Retorna o nmero de elementos no array ou -1 no caso de um erro.
Observao
Se o intervalo inteiro de dados solicitados no estiver disponvel no servidor, a funo retorna -1.
Se dados fora do TERMINAL_MAXBARS (nmero mximo de barras no grfico) for solicitado, a
funo tambm retornar -1.
Ao solicitar dados de um indicador, se as sries de tempo solicitadas no estiverem ainda
construdas ou elas precisarem serem baixadas do servidor, a funo imediatamente retornar -1,
mas o processo de download/construo ser iniciado.
Ao solicitar dados de um Expert Advisor ou script, o download do servidor ser iniciado se o terminal
no tiver estes dados localmente, ou a construo da srie de tempo solicitada iniciar, se os dados
puderem ser construdas a partir do histrico local mas eles no estiverem prontos ainda. A funo
retornar a quantidade de dados que estar pronta no momento da expirao do tempo limite, mas
o download do histrico continuar, e na prximo solicitao simular, a funo retornar mais
dados.
Ao solicitar dados atravs da data de incio e do nmero de elementos requeridos, somente dados
cuja data seja menor (anterior) ou igual a data especificada so retornados. Isso significa que a
hora de abertura de qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de

2000-2015, MetaQuotes Software Corp.

1105

Sries Temporais e Acesso a Indicadores


indicador, preos de Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre menor
ou igual ao valor especificado.
Ao solicitar dados em uma faixa especificada de datas, somente dados deste intervalo sero
retornados. O intervalo definido e contado em segundos. Isso significa que a hora de abertura de
qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de indicador, preos de
Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre dentro do intervalo
solicitado.
Assim, se o dia corrente for sbado, e em uma tentativa de copiar dados usando a janela de tempo
semanal, voc especificar start_time=Last_Tuesday e stop_time=Last_Friday, a funo retornar 0,
porque a hora de abertura em uma janela de tempo semanal sempre domingo, e nenhum barra
semanal cair no intervalo especificado.
Se voc precisar retornar o valor correspondente para a barra corrente incompleta, voc pode usar a
primeira forma de chamada, especificando start_pos=0 e count=1.
Veja um exemplo detalhado de solicitao de dados histricos na seo Mtodos de Vinculao de
Objetos. O script disponvel nesta seo mostra como obter os valores do indicador iFractals nas
ltimas 1000 barras e como exibir os ltimos 10 fractais de alta e os ltimos 10 fractais de baixa no
grfico. Uma tcnica simular pode ser usada para todos os indicadores que tm dados faltantes e que
so usualmente desenhados usando os seguintes estilos:
DRAW_SECTION,
DRAW_ARROW,
DRAW_ZIGZAG,
DRAW_COLOR_SECTION,
DRAW_COLOR_ARROW,
DRAW_COLOR_ZIGZAG.

2000-2015, MetaQuotes Software Corp.

1106

Sries Temporais e Acesso a Indicadores

CopyHigh
A funo obtm em high_array os dados histricos dos preos de barra mais altos para o par ativoperodo selecionado na quantidade especificada. Deve ser notado que a ordenao dos elementos do
presente para o passado, isto , a posio de incio 0 significa a barra corrente.

Ao copiar uma quantidade desconhecida de dados, recomendvel usar umarray dinmicocomo array
destino, porque se a quantidade solicitada de dados for menor (ou maior) que o comprimento do array
destino, a funo tenta realocar a memria de qual forma que os dados solicitados caibam
completamente.
Se voc souber a quantidade de dados que voc precisa para copiar, melhor usar um buffer alocado
estaticamente, a fim de evitar a alocao de memria excessiva.
No importa qual seja a propriedade do array destino - como series=true ou como series=false. Os
dados sero copiados de tal maneira que o elemento mais antigo ser localizado no incio da memria
fsica alocada para o array. Exitem 3 variantes de chamada da funo.
Chamar pela posio primeira e o nmero de elementos requeridos
int CopyHigh(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

int

start_pos,

// posio de incio

int

count,

// quantidade de dados para copiar

double

high_array[]

// array destino para copiar

);

Chamar pela data de incio e o nmero de elementos requeridos


int CopyHigh(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

int

count,

// quantidade de dados para copiar

double

high_array[]

// array destino para copiar

);

Chamar pelas datas de incio e trmino de um intervalo de tempo requerido


int CopyHigh(

2000-2015, MetaQuotes Software Corp.

1107

Sries Temporais e Acesso a Indicadores


string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

datetime

stop_time,

// data e hora de parada

double

high_array[]

// array destino para copiar

);

Parmetros
symbol_name
[in] Nome do ativo.
timeframe
[in] Perodo.
start_pos
[in] A posio de incio do primeiro elemento para copiar.
count
[in] Quantidade de dados para copiar.
start_time
[in] A hora de incio para o primeiro elemento para copiar.
stop_time
[in] Hora da barra, correspondente ao ltimo elemento para copiar.
high_array[]
[out] Array de tipo double.
Valor do Retorno
Retorna a quantidade de dados copiados ou -1 no caso de um erro.
Observao
Se o intervalo inteiro de dados solicitados no estiver disponvel no servidor, a funo retorna -1.
Se dados fora do TERMINAL_MAXBARS (nmero mximo de barras no grfico) for solicitado, a
funo tambm retornar -1.
Ao solicitar dados de um indicador, se as sries de tempo solicitadas no estiverem ainda
construdas ou elas precisarem serem baixadas do servidor, a funo imediatamente retornar -1,
mas o processo de download/construo ser iniciado.
Ao solicitar dados de um Expert Advisor ou script, o download do servidor ser iniciado se o terminal
no tiver estes dados localmente, ou a construo da srie de tempo solicitada iniciar, se os dados
puderem ser construdas a partir do histrico local mas eles no estiverem prontos ainda. A funo
retornar a quantidade de dados que estar pronta no momento da expirao do tempo limite, mas
o download do histrico continuar, e na prximo solicitao simular, a funo retornar mais
dados.
Ao solicitar dados atravs da data de incio e do nmero de elementos requeridos, somente dados
cuja data seja menor (anterior) ou igual a data especificada so retornados. Isso significa que a
hora de abertura de qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de

2000-2015, MetaQuotes Software Corp.

1108

Sries Temporais e Acesso a Indicadores


indicador, preos de Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre menor
ou igual ao valor especificado.
Ao solicitar dados em uma faixa especificada de datas, somente dados deste intervalo sero
retornados. O intervalo definido e contado em segundos. Isso significa que a hora de abertura de
qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de indicador, preos de
Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre dentro do intervalo
solicitado.
Assim, se o dia corrente for sbado, e em uma tentativa de copiar dados usando a janela de tempo
semanal, voc especificar start_time=Last_Tuesday e stop_time=Last_Friday, a funo retornar 0,
porque a hora de abertura em uma janela de tempo semanal sempre domingo, e nenhum barra
semanal cair no intervalo especificado.
Se voc precisar retornar o valor correspondente para a barra corrente incompleta, voc pode usar a
primeira forma de chamada, especificando start_pos=0 e count=1.
Exemplo:
#property copyright "2009, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "An example for output of the High[i] and Low[i]"
#property description "for a random chosen bars"
double High[],Low[];
//+------------------------------------------------------------------+
//| Obtm Mnimo para o ndice de barra especificado

//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
double low=0;
ArraySetAsSeries(Low,true);
int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),Low);
if(copied>0 && index<copied) low=Low[index];
return(low);
}
//+------------------------------------------------------------------+
//| Obtm o Mximo para o ndice de barra especificado

//+------------------------------------------------------------------+
double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
double high=0;
ArraySetAsSeries(High,true);
int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High);
if(copied>0 && index<copied) high=High[index];
return(high);
}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

2000-2015, MetaQuotes Software Corp.

1109

Sries Temporais e Acesso a Indicadores


//+------------------------------------------------------------------+
void OnTick()
{
//--- em cada tick ns imprimimos os valores de Mximo e Mnimo para a barra com ndice,
//--- que seja igual ao segundo, no qual o tick chegou
datetime t=TimeCurrent();
int sec=t%60;
printf("High[%d] = %G

Low[%d] = %G",

sec,iHigh(Symbol(),0,sec),
sec,iLow(Symbol(),0,sec));
}

Veja um exemplo detalhado de solicitao de dados histricos na seo Mtodos de Vinculao de


Objetos. O script disponvel nesta seo mostra como obter os valores do indicador iFractals nas
ltimas 1000 barras e como exibir os ltimos 10 fractais de alta e os ltimos 10 fractais de baixa no
grfico. Uma tcnica simular pode ser usada para todos os indicadores que tm dados faltantes e que
so usualmente desenhados usando os seguintes estilos:
DRAW_SECTION,
DRAW_ARROW,
DRAW_ZIGZAG,
DRAW_COLOR_SECTION,
DRAW_COLOR_ARROW,
DRAW_COLOR_ZIGZAG.

2000-2015, MetaQuotes Software Corp.

1110

Sries Temporais e Acesso a Indicadores

CopyLow
A funo obtm em low_array os dados histricos de preos de barra mnimos para o par ativo-perodo
selecionado na quantidade especificada. Deve ser notado que a ordenao dos elementos do
presente para o passado, isto , a posio de incio 0 significa a barra corrente.

Ao copiar uma quantidade desconhecida de dados, recomendvel usar umarray dinmicocomo array
destino, porque se a quantidade solicitada de dados for menor (ou maior) que o comprimento do array
destino, a funo tenta realocar a memria de qual forma que os dados solicitados caibam
completamente.
Se voc souber a quantidade de dados que voc precisa para copiar, melhor usar um buffer alocado
estaticamente, a fim de evitar a alocao de memria excessiva.
No importa qual seja a propriedade do array destino - como series=true ou como series=false. Os
dados sero copiados de tal maneira que o elemento mais antigo ser localizado no incio da memria
fsica alocada para o array. Exitem 3 variantes de chamada da funo.
Chamar pela posio primeira e o nmero de elementos requeridos
int CopyLow(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

int

start_pos,

// posio de incio

int

count,

// quantidade de dados para copiar

double

low_array[]

// array destino para copiar

);

Chamar pela data de incio e o nmero de elementos requeridos


int CopyLow(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

int

count,

// quantidade de dados para copiar

double

low_array[]

// array destino para copiar

);

Chamar pelas datas de incio e trmino de um intervalo de tempo requerido


int CopyLow(

2000-2015, MetaQuotes Software Corp.

1111

Sries Temporais e Acesso a Indicadores


string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

datetime

stop_time,

// data e hora de parada

double

low_array[]

// array destino para copiar

);

Parmetros
symbol_name
[in] Ativo.
timeframe
[in] Perodo.
start_pos
[in] A posio de incio do primeiro elemento para copiar.
count
[in] Quantidade de dados para copiar.
start_time
[in] Hora da barra, correspondente ao ltimo elemento para copiar.
stop_time
[in] Hora da barra, correspondente ao ltimo elemento para copiar.
low_array[]
[out] Array de tipo double.
Valor do Retorno
Retorna a quantidade de dados copiados ou -1 no caso de um erro.
Observao
Se o intervalo inteiro de dados solicitados no estiver disponvel no servidor, a funo retorna -1.
Se dados fora do TERMINAL_MAXBARS (nmero mximo de barras no grfico) for solicitado, a
funo tambm retornar -1.
Ao solicitar dados de um indicador, se as sries de tempo solicitadas no estiverem ainda
construdas ou elas precisarem serem baixadas do servidor, a funo imediatamente retornar -1,
mas o processo de download/construo ser iniciado.
Ao solicitar dados de um Expert Advisor ou script, o download do servidor ser iniciado se o terminal
no tiver estes dados localmente, ou a construo da srie de tempo solicitada iniciar, se os dados
puderem ser construdas a partir do histrico local mas eles no estiverem prontos ainda. A funo
retornar a quantidade de dados que estar pronta no momento da expirao do tempo limite, mas
o download do histrico continuar, e na prximo solicitao simular, a funo retornar mais
dados.
Ao solicitar dados atravs da data de incio e do nmero de elementos requeridos, somente dados
cuja data seja menor (anterior) ou igual a data especificada so retornados. Isso significa que a
hora de abertura de qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de

2000-2015, MetaQuotes Software Corp.

1112

Sries Temporais e Acesso a Indicadores


indicador, preos de Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre menor
ou igual ao valor especificado.
Ao solicitar dados em uma faixa especificada de datas, somente dados deste intervalo sero
retornados. O intervalo definido e contado em segundos. Isso significa que a hora de abertura de
qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de indicador, preos de
Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre dentro do intervalo
solicitado.
Assim, se o dia corrente for sbado, e em uma tentativa de copiar dados usando a janela de tempo
semanal, voc especificar start_time=Last_Tuesday e stop_time=Last_Friday, a funo retornar 0,
porque a hora de abertura em uma janela de tempo semanal sempre domingo, e nenhum barra
semanal cair no intervalo especificado.
Se voc precisar retornar o valor correspondente para a barra corrente incompleta, voc pode usar a
primeira forma de chamada, especificando start_pos=0 e count=1.
Veja um exemplo detalhado de solicitao de dados histricos na seo Mtodos de Vinculao de
Objetos. O script disponvel nesta seo mostra como obter os valores do indicador iFractals nas
ltimas 1000 barras e como exibir os ltimos 10 fractais de alta e os ltimos 10 fractais de baixa no
grfico. Uma tcnica simular pode ser usada para todos os indicadores que tm dados faltantes e que
so usualmente desenhados usando os seguintes estilos:
DRAW_SECTION,
DRAW_ARROW,
DRAW_ZIGZAG,
DRAW_COLOR_SECTION,
DRAW_COLOR_ARROW,
DRAW_COLOR_ZIGZAG.

Tambm Veja
CopyHigh

2000-2015, MetaQuotes Software Corp.

1113

Sries Temporais e Acesso a Indicadores

CopyClose
A funo obtm em close_array os dados histricos de preos de fechamento de barra para o par
ativo-perodo selecionado na quantidade especificada. Deve ser notado que a ordenao dos
elementos do presente para o passado, isto , a posio de incio 0 significa a barra corrente.

Ao copiar uma quantidade desconhecida de dados, recomendvel usar umarray dinmicocomo array
destino, porque se a quantidade solicitada de dados for menor (ou maior) que o comprimento do array
destino, a funo tenta realocar a memria de qual forma que os dados solicitados caibam
completamente.
Se voc souber a quantidade de dados que voc precisa para copiar, melhor usar um buffer alocado
estaticamente, a fim de evitar a alocao de memria excessiva.
No importa qual seja a propriedade do array destino - como series=true ou como series=false. Os
dados sero copiados de tal maneira que o elemento mais antigo ser localizado no incio da memria
fsica alocada para o array. Exitem 3 variantes de chamada da funo.
Chamar pela posio primeira e o nmero de elementos requeridos
int CopyClose(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

int

start_pos,

// posio de incio

int

count,

// quantidade de dados para copiar

double

close_array[]

// array destino para copiar

);

Chamar pela data de incio e o nmero de elementos requeridos


int CopyClose(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

int

count,

// quantidade de dados para copiar

double

close_array[]

// array destino para copiar

);

Chamar pelas datas de incio e trmino de um intervalo de tempo requerido


int CopyClose(

2000-2015, MetaQuotes Software Corp.

1114

Sries Temporais e Acesso a Indicadores


string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

datetime

stop_time,

// data e hora de parada

double

close_array[]

// array destino para copiar

);

Parmetros
symbol_name
[in] Nome do ativo.
timeframe
[in] Perodo.
start_pos
[in] A posio de incio do primeiro elemento para copiar.
count
[in] Quantidade de dados para copiar.
start_time
[in] A hora de incio para o primeiro elemento para copiar.
stop_time
[in] Hora da barra, correspondente ao ltimo elemento para copiar.
close_array[]
[out] Array de tipo double.
Valor do Retorno
Retorna a quantidade de dados copiados ou -1 no caso de um erro.
Observao
Se o intervalo inteiro de dados solicitados no estiver disponvel no servidor, a funo retorna -1.
Se dados fora do TERMINAL_MAXBARS (nmero mximo de barras no grfico) for solicitado, a
funo tambm retornar -1.
Ao solicitar dados de um indicador, se as sries de tempo solicitadas no estiverem ainda
construdas ou elas precisarem serem baixadas do servidor, a funo imediatamente retornar -1,
mas o processo de download/construo ser iniciado.
Ao solicitar dados de um Expert Advisor ou script, o download do servidor ser iniciado se o terminal
no tiver estes dados localmente, ou a construo da srie de tempo solicitada iniciar, se os dados
puderem ser construdas a partir do histrico local mas eles no estiverem prontos ainda. A funo
retornar a quantidade de dados que estar pronta no momento da expirao do tempo limite, mas
o download do histrico continuar, e na prximo solicitao simular, a funo retornar mais
dados.
Ao solicitar dados atravs da data de incio e do nmero de elementos requeridos, somente dados
cuja data seja menor (anterior) ou igual a data especificada so retornados. Isso significa que a
hora de abertura de qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de

2000-2015, MetaQuotes Software Corp.

1115

Sries Temporais e Acesso a Indicadores


indicador, preos de Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre menor
ou igual ao valor especificado.
Ao solicitar dados em uma faixa especificada de datas, somente dados deste intervalo sero
retornados. O intervalo definido e contado em segundos. Isso significa que a hora de abertura de
qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de indicador, preos de
Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre dentro do intervalo
solicitado.
Assim, se o dia corrente for sbado, e em uma tentativa de copiar dados usando a janela de tempo
semanal, voc especificar start_time=Last_Tuesday e stop_time=Last_Friday, a funo retornar 0,
porque a hora de abertura em uma janela de tempo semanal sempre domingo, e nenhum barra
semanal cair no intervalo especificado.
Se voc precisar retornar o valor correspondente para a barra corrente incompleta, voc pode usar a
primeira forma de chamada, especificando start_pos=0 e count=1.
Veja um exemplo detalhado de solicitao de dados histricos na seo Mtodos de Vinculao de
Objetos. O script disponvel nesta seo mostra como obter os valores do indicador iFractals nas
ltimas 1000 barras e como exibir os ltimos 10 fractais de alta e os ltimos 10 fractais de baixa no
grfico. Uma tcnica simular pode ser usada para todos os indicadores que tm dados faltantes e que
so usualmente desenhados usando os seguintes estilos:
DRAW_SECTION,
DRAW_ARROW,
DRAW_ZIGZAG,
DRAW_COLOR_SECTION,
DRAW_COLOR_ARROW,
DRAW_COLOR_ZIGZAG.

2000-2015, MetaQuotes Software Corp.

1116

Sries Temporais e Acesso a Indicadores

CopyTickVolume
A funo obtm em volume_array os dados histricos de volumes de tick para o par ativo-perodo
selecionado na quantidade especificada. Deve ser notado que a ordenao dos elementos do
presente para o passado, isto , a posio de incio 0 significa a barra corrente.

Ao copiar uma quantidade desconhecida de dados, recomendvel usar umarray dinmicocomo array
destino, porque se a quantidade solicitada de dados for menor (ou maior) que o comprimento do array
destino, a funo tenta realocar a memria de qual forma que os dados solicitados caibam
completamente.
Se voc souber a quantidade de dados que voc precisa para copiar, melhor usar um buffer alocado
estaticamente, a fim de evitar a alocao de memria excessiva.
No importa qual seja a propriedade do array destino - como series=true ou como series=false. Os
dados sero copiados de tal maneira que o elemento mais antigo ser localizado no incio da memria
fsica alocada para o array. Exitem 3 variantes de chamada da funo.
Chamar pela posio primeira e o nmero de elementos requeridos
int CopyTickVolume(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

int

start_pos,

// posio de incio

int

count,

// quantidade de dados para copiar

long

volume_array[]

// array destino para volumes de tick

);

Chamar pela data de incio e o nmero de elementos requeridos


int CopyTickVolume(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

int

count,

// quantidade de dados para copiar

long

volume_array[]

// array destino para volumes de tick

);

Chamar pelas datas de incio e trmino de um intervalo de tempo requerido


int CopyTickVolume(

2000-2015, MetaQuotes Software Corp.

1117

Sries Temporais e Acesso a Indicadores


string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

datetime

stop_time,

// data e hora de parada

long

volume_array[]

// array destino para volumes de tick

);

Parmetros
symbol_name
[in] Nome do ativo.
timeframe
[in] Perodo.
start_pos
[in] A posio de incio do primeiro elemento para copiar.
count
[in] Quantidade de dados para copiar.
start_time
[in] A hora de incio para o primeiro elemento para copiar.
stop_time
[in] Hora da barra, correspondente ao ltimo elemento para copiar.
volume_array[]
[out] Array de tipo long.
Valor do Retorno
Retorna a quantidade de dados copiados ou -1 no caso de um erro.
Observao
Se o intervalo inteiro de dados solicitados no estiver disponvel no servidor, a funo retorna -1.
Se dados fora do TERMINAL_MAXBARS (nmero mximo de barras no grfico) for solicitado, a
funo tambm retornar -1.
Ao solicitar dados de um indicador, se as sries de tempo solicitadas no estiverem ainda
construdas ou elas precisarem serem baixadas do servidor, a funo imediatamente retornar -1,
mas o processo de download/construo ser iniciado.
Ao solicitar dados de um Expert Advisor ou script, o download do servidor ser iniciado se o terminal
no tiver estes dados localmente, ou a construo da srie de tempo solicitada iniciar, se os dados
puderem ser construdas a partir do histrico local mas eles no estiverem prontos ainda. A funo
retornar a quantidade de dados que estar pronta no momento da expirao do tempo limite, mas
o download do histrico continuar, e na prximo solicitao simular, a funo retornar mais
dados.
Ao solicitar dados atravs da data de incio e do nmero de elementos requeridos, somente dados
cuja data seja menor (anterior) ou igual a data especificada so retornados. Isso significa que a
hora de abertura de qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de

2000-2015, MetaQuotes Software Corp.

1118

Sries Temporais e Acesso a Indicadores


indicador, preos de Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre menor
ou igual ao valor especificado.
Ao solicitar dados em uma faixa especificada de datas, somente dados deste intervalo sero
retornados. O intervalo definido e contado em segundos. Isso significa que a hora de abertura de
qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de indicador, preos de
Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre dentro do intervalo
solicitado.
Assim, se o dia corrente for sbado, e em uma tentativa de copiar dados usando a janela de tempo
semanal, voc especificar start_time=Last_Tuesday e stop_time=Last_Friday, a funo retornar 0,
porque a hora de abertura em uma janela de tempo semanal sempre domingo, e nenhum barra
semanal cair no intervalo especificado.
Se voc precisar retornar o valor correspondente para a barra corrente incompleta, voc pode usar a
primeira forma de chamada, especificando start_pos=0 e count=1.
Exemplo:
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//---- plotar TickVolume


#property indicator_label1

"TickVolume"

#property indicator_type1

DRAW_HISTOGRAM

#property indicator_color1

C'143,188,139'

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

bars=3000;

//--- buffers do indicador


double

TickVolumeBuffer[];

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
void OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,TickVolumeBuffer,INDICATOR_DATA);
IndicatorSetInteger(INDICATOR_DIGITS,0);
//--}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],

2000-2015, MetaQuotes Software Corp.

1119

Sries Temporais e Acesso a Indicadores


const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--if(prev_calculated==0)
{
long timeseries[];
ArraySetAsSeries(timeseries,true);
int prices=CopyTickVolume(Symbol(),0,0,bars,timeseries);
for(int i=0;i<rates_total-prices;i++) TickVolumeBuffer[i]=0.0;
for(int i=0;i<prices;i++) TickVolumeBuffer[rates_total-1-i]=timeseries[prices-1-i];
Print("We have received the following number of TickVolume values: "+prices);
}
else
{
long timeseries[];
int prices=CopyTickVolume(Symbol(),0,0,1,timeseries);
TickVolumeBuffer[rates_total-1]=timeseries[0];
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Veja um exemplo detalhado de solicitao de dados histricos na seo Mtodos de Vinculao de


Objetos. O script disponvel nesta seo mostra como obter os valores do indicador iFractals nas
ltimas 1000 barras e como exibir os ltimos 10 fractais de alta e os ltimos 10 fractais de baixa no
grfico. Uma tcnica simular pode ser usada para todos os indicadores que tm dados faltantes e que
so usualmente desenhados usando os seguintes estilos:
DRAW_SECTION,
DRAW_ARROW,
DRAW_ZIGZAG,
DRAW_COLOR_SECTION,
DRAW_COLOR_ARROW,
DRAW_COLOR_ZIGZAG.

2000-2015, MetaQuotes Software Corp.

1120

Sries Temporais e Acesso a Indicadores

CopyRealVolume
A funo obtm em volume_array os dados histricos de volumes de negociao para o par ativoperodo selecionado na quantidade especificada. Deve ser notado que a ordenao dos elementos do
presente para o passado, isto , a posio de incio 0 significa a barra corrente.

Ao copiar uma quantidade desconhecida de dados, recomendvel usar umarray dinmicocomo array
destino, porque se a quantidade solicitada de dados for menor (ou maior) que o comprimento do array
destino, a funo tenta realocar a memria de qual forma que os dados solicitados caibam
completamente.
Se voc souber a quantidade de dados que voc precisa para copiar, melhor usar um buffer alocado
estaticamente, a fim de evitar a alocao de memria excessiva.
No importa qual seja a propriedade do array destino - como series=true ou como series=false. Os
dados sero copiados de tal maneira que o elemento mais antigo ser localizado no incio da memria
fsica alocada para o array. Exitem 3 variantes de chamada da funo.
Chamar pela posio primeira e o nmero de elementos requeridos
int CopyRealVolume(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

int

start_pos,

// posio de incio

int

count,

// quantidade de dados para copiar

long

volume_array[]

// array destino para valores de volume

);

Chamar pela data de incio e o nmero de elementos requeridos


int CopyRealVolume(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

int

count,

// quantidade de dados para copiar

long

volume_array[]

// array destino para valores de volume

);

Chamar pelas datas de incio e trmino de um intervalo de tempo requerido


int CopyRealVolume(

2000-2015, MetaQuotes Software Corp.

1121

Sries Temporais e Acesso a Indicadores


string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

datetime

stop_time,

// data e hora de parada

long

volume_array[]

// array destino para valores de volume

);

Parmetros
symbol_name
[in] Nome do ativo.
timeframe
[in] Perodo.
start_pos
[in] A posio de incio do primeiro elemento para copiar.
count
[in] Quantidade de dados para copiar.
start_time
[in] A hora de incio para o primeiro elemento para copiar.
stop_time
[in] Hora da barra, correspondente ao ltimo elemento para copiar.
volume_array[]
[out] Array de tipo long.
Valor do Retorno
Retorna a quantidade de dados copiados ou -1 no caso deerro.
Observao
Se o intervalo inteiro de dados solicitados no estiver disponvel no servidor, a funo retorna -1.
Se dados fora do TERMINAL_MAXBARS (nmero mximo de barras no grfico) for solicitado, a
funo tambm retornar -1.
Ao solicitar dados de um indicador, se as sries de tempo solicitadas no estiverem ainda
construdas ou elas precisarem serem baixadas do servidor, a funo imediatamente retornar -1,
mas o processo de download/construo ser iniciado.
Ao solicitar dados de um Expert Advisor ou script, o download do servidor ser iniciado se o terminal
no tiver estes dados localmente, ou a construo da srie de tempo solicitada iniciar, se os dados
puderem ser construdas a partir do histrico local mas eles no estiverem prontos ainda. A funo
retornar a quantidade de dados que estar pronta no momento da expirao do tempo limite, mas
o download do histrico continuar, e na prximo solicitao simular, a funo retornar mais
dados.
Ao solicitar dados atravs da data de incio e do nmero de elementos requeridos, somente dados
cuja data seja menor (anterior) ou igual a data especificada so retornados. Isso significa que a
hora de abertura de qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de

2000-2015, MetaQuotes Software Corp.

1122

Sries Temporais e Acesso a Indicadores


indicador, preos de Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre menor
ou igual ao valor especificado.
Ao solicitar dados em uma faixa especificada de datas, somente dados deste intervalo sero
retornados. O intervalo definido e contado em segundos. Isso significa que a hora de abertura de
qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de indicador, preos de
Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre dentro do intervalo
solicitado.
Assim, se o dia corrente for sbado, e em uma tentativa de copiar dados usando a janela de tempo
semanal, voc especificar start_time=Last_Tuesday e stop_time=Last_Friday, a funo retornar 0,
porque a hora de abertura em uma janela de tempo semanal sempre domingo, e nenhum barra
semanal cair no intervalo especificado.
Se voc precisar retornar o valor correspondente para a barra corrente incompleta, voc pode usar a
primeira forma de chamada, especificando start_pos=0 e count=1.
Veja um exemplo de solicitao de dados histricos na seo Mtodos de Vinculao de Objetos. O
script disponvel nesta seo mostra como obter os valores do indicador iFractals nas ltimas 1000
barras e como exibir os ltimos 10 fractais de alta e os ltimos 10 fractais de baixa no grfico. Uma
tcnica simular pode ser usada para todos os indicadores que tm dados faltantes e que so
usualmente desenhados usando os seguintes estilos:
DRAW_SECTION,
DRAW_ARROW,
DRAW_ZIGZAG,
DRAW_COLOR_SECTION,
DRAW_COLOR_ARROW,
DRAW_COLOR_ZIGZAG.

2000-2015, MetaQuotes Software Corp.

1123

Sries Temporais e Acesso a Indicadores

CopySpread
A funo obtm em spread_array os dados histricos de valores de spread para o par selecionado
ativo-perodo na quantidade especificada. Deve ser notado que a ordenao dos elementos do
presente para o passado, isto , a posio de incio 0 significa a barra corrente.

Ao copiar uma quantidade desconhecida de dados, recomendvel usar umarray dinmicocomo array
destino, porque se a quantidade solicitada de dados for menor (ou maior) que o comprimento do array
destino, a funo tenta realocar a memria de qual forma que os dados solicitados caibam
completamente.
Se voc souber a quantidade de dados que voc precisa para copiar, melhor usar um buffer alocado
estaticamente, a fim de evitar a alocao de memria excessiva.
No importa qual seja a propriedade do array destino - como series=true ou como series=false. Os
dados sero copiados de tal maneira que o elemento mais antigo ser localizado no incio da memria
fsica alocada para o array. Exitem 3 variantes de chamada da funo.
Chamar pela posio primeira e o nmero de elementos requeridos
int CopySpread(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

int

start_pos,

// posio de incio

int

count,

// quantidade de dados para copiar

int

spread_array[]

// array destino para valores de spread

);

Chamar pela data de incio e o nmero de elementos requeridos


int CopySpread(
string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

int

count,

// quantidade de dados para copiar

int

spread_array[]

// array destino para valores de spread

);

Chamar pelas datas de incio e trmino de um intervalo de tempo requerido


int CopySpread(

2000-2015, MetaQuotes Software Corp.

1124

Sries Temporais e Acesso a Indicadores


string

symbol_name,

// nome do ativo

ENUM_TIMEFRAMES timeframe,

// perodo

datetime

start_time,

// data e hora de incio

datetime

stop_time,

// data e hora de parada

int

spread_array[]

// array destino para valores de spread

);

Parmetros
symbol_name
[in] Nome do ativo.
timeframe
[in] Perodo.
start_pos
[in] A posio de incio do primeiro elemento para copiar.
count
[in] Quantidade de dados para copiar.
start_time
[in] A hora de incio para o primeiro elemento para copiar.
stop_time
[in] Hora da barra, correspondente ao ltimo elemento para copiar.
spread_array[]
[out] Array de tipo int.
Valor do Retorno
Retorna a quantidade de dados copiados ou -1 no caso de um erro.
Observao
Se o intervalo inteiro de dados solicitados no estiver disponvel no servidor, a funo retorna -1.
Se dados fora do TERMINAL_MAXBARS (nmero mximo de barras no grfico) for solicitado, a
funo tambm retornar -1.
Ao solicitar dados de um indicador, se as sries de tempo solicitadas no estiverem ainda
construdas ou elas precisarem serem baixadas do servidor, a funo imediatamente retornar -1,
mas o processo de download/construo ser iniciado.
Ao solicitar dados de um Expert Advisor ou script, o download do servidor ser iniciado se o terminal
no tiver estes dados localmente, ou a construo da srie de tempo solicitada iniciar, se os dados
puderem ser construdas a partir do histrico local mas eles no estiverem prontos ainda. A funo
retornar a quantidade de dados que estar pronta no momento da expirao do tempo limite, mas
o download do histrico continuar, e na prximo solicitao simular, a funo retornar mais
dados.
Ao solicitar dados atravs da data de incio e do nmero de elementos requeridos, somente dados
cuja data seja menor (anterior) ou igual a data especificada so retornados. Isso significa que a
hora de abertura de qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de

2000-2015, MetaQuotes Software Corp.

1125

Sries Temporais e Acesso a Indicadores


indicador, preos de Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre menor
ou igual ao valor especificado.
Ao solicitar dados em uma faixa especificada de datas, somente dados deste intervalo sero
retornados. O intervalo definido e contado em segundos. Isso significa que a hora de abertura de
qualquer barra, para cujo valor retornado (volume, spread, valor no buffer de indicador, preos de
Abertura, Mximo, Mnimo, Fechamento ou Hora de Abertura) sempre dentro do intervalo
solicitado.
Assim, se o dia corrente for sbado, e em uma tentativa de copiar dados usando a janela de tempo
semanal, voc especificar start_time=Last_Tuesday e stop_time=Last_Friday, a funo retornar 0,
porque a hora de abertura em uma janela de tempo semanal sempre domingo, e nenhum barra
semanal cair no intervalo especificado.
Se voc precisar retornar o valor correspondente para a barra corrente incompleta, voc pode usar a
primeira forma de chamada, especificando start_pos=0 e count=1.
Exemplo:
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//---- plotar Spread


#property indicator_label1

"Spread"

#property indicator_type1

DRAW_HISTOGRAM

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

bars=3000;

//--- buffers do indicador


double

SpreadBuffer[];

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
void OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,SpreadBuffer,INDICATOR_DATA);
IndicatorSetInteger(INDICATOR_DIGITS,0);
//--}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],

2000-2015, MetaQuotes Software Corp.

1126

Sries Temporais e Acesso a Indicadores


const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--if(prev_calculated==0)
{
int spread_int[];
ArraySetAsSeries(spread_int,true);
int spreads=CopySpread(Symbol(),0,0,bars,spread_int);
Print("We have received the following number of Spread values: ",spreads);
for (int i=0;i<spreads;i++)
{
SpreadBuffer[rates_total-1-i]=spread_int[i];
if(i<=30) Print("spread["+i+"] = ",spread_int[i]);
}
}
else
{
double Ask,Bid;
Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
Comment("Ask = ",Ask,"

Bid = ",Bid);

SpreadBuffer[rates_total-1]=(Ask-Bid)/Point();
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Veja um exemplo de solicitao de dados histricos na seo Mtodos de Vinculao de Objetos. O


script disponvel nesta seo mostra como obter os valores do indicador iFractals nas ltimas 1000
barras e como exibir os ltimos 10 fractais de alta e os ltimos 10 fractais de baixa no grfico. Uma
tcnica simular pode ser usada para todos os indicadores que tm dados faltantes e que so
usualmente desenhados usando os seguintes estilos:
DRAW_SECTION,
DRAW_ARROW,
DRAW_ZIGZAG,
DRAW_COLOR_SECTION,
DRAW_COLOR_ARROW,
DRAW_COLOR_ZIGZAG.

2000-2015, MetaQuotes Software Corp.

1127

Sries Temporais e Acesso a Indicadores

CopyTicks
The function receives ticks accumulated by the terminal for the current work session and writes them
into the ticks_array. It should be noted that the order of indexing goes from the past to the present,
that is tick index 0 is the oldest one in the array.
int CopyTicks(
string

symbol_name,

// symbol name

MqlTick&

ticks_array[],

// the array for receiving ticks

uint

flags=COPY_TICKS_ALL, // the flag that defines the type of the ticks that are

ulong

from=0,

// date starting from which ticks are requested

uint

count=0

// the number of last ticks that you need to receive

);

Parameters
symbol_name
[in] Symbol.
ticks_array
[out] MqlTick type array for receiving ticks.
flags
[in] The flag to define the type of the ticks you want to receive. COPY_TICKS_INFO only Bid and
Ask, COPY_TICKS_TRADE only Last and Volume, COPY_TICKS_ALL all ticks.
from
[in] The first date of requested ticks. In milliseconds since 1970.01.01.
count
[in] The number of requested ticks. If the date and number are not specified, all available ticks
are received, but not more than 2000.
Returned value
The number of copied tick or -1 in case of an error.
Note
The OnTick() function does not handle every tick, it notifies the Expert Advisor of market changes.
It can be a batch of changes: the terminal can simultaneously make a few ticks, but OnTick() will be
called only once to notify the EA of the latest market state. The CopyTicks() function allows you to
request and analyze all the ticks.
If the from and count parameters are not specified, all available ticks, but no more than 2000, will
be written in the ticks_array[]. The flags parameter allows setting the type of required ticks.
Example:
//--- input parameters
input int

ticks=10;

// the number of requested ticks

//+------------------------------------------------------------------+
//| Expert tick function

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1128

Sries Temporais e Acesso a Indicadores


void OnTick()
{
/--- the array that receives ticks
MqlTick tick_array[];
//--- requesting ticks
int copied=CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,ticks);
//--- if ticks are received, show the Bid and Ask values on the chart
if(copied>0)
{
string comment="#

Time

Bid

Ask\r\n";

//--- generate the comment contents


for(int i=0;i<copied;i++)
{
MqlTick tick=tick_array[i];
string tick_string=StringFormat("%d: %s

%G

%G",

i,
TimeToString(tick.time,TIME_MINUTES|TIME_SECONDS),
tick.bid,
tick.ask);
comment=comment+tick_string+"\r\n";
}
//--- show a comment on the chart
Comment(comment);
}
else // report an error that occurred when receiving ticks
{
Comment("Ticks could not be loaded. GetLastError()=",GetLastError());
}
}

See also
SymbolInfoTick, Estrutura para Preos Correntes, OnTick()

2000-2015, MetaQuotes Software Corp.

1129

Operaes de Grficos

Operaes de Grficos
Estas so funes para trabalhar com grficos. Todas as operaes de grfico so permitidas apenas
em Assessores Especialistas (Expert Advisors) e Scripts.
The functions defining the chart properties are actually used for sending change commands to the
chart. If these functions are executed successfully, the command is included in the common queue of
the chart events. The changes are implemented to the chart when handling the queue of the chart
events.
Thus, do not expect an immediate visual update of the chart after calling these functions. Generally,
the chart is updated automatically by the terminal following the change events - a new quote arrival,
resizing the chart window, etc. Use ChartRedraw() function to forcefully update the chart.
Funo

Ao

ChartApplyTemplate

Aplica-se um modelo especfico de um arquivo


especificado para o grfico

ChartSaveTemplate

Salva as configuraes atuais do grfico em um


modelo com um nome especificado

ChartWindowFind

Retorna o nmero de uma sub-janela onde um


indicador elaborado

ChartTimePriceToXY

Converte as coordenadas do grfico a partir da


representao
tempo/preo
para
as
coordenadas X e Y

ChartXYToTimePrice

Converte as coordenadas X e Y no grfico para


os valores de tempo e preo

ChartOpen

Abre um novo grfico com o smbolo e perodo


especificado

ChartClose

Fecha um grfico especificado

ChartFirst

Retorna o ID do primeiro grfico do terminal do


cliente

ChartNext

Retorna o ID do grfico do prximo grfico para


um especificado

ChartSymbol

Retorna o nome
especificado

do

smbolo

do

grfico

ChartPeriod

Retorna o valor
especificado

do

perodo

do

grfico

ChartRedraw

Chama um redesenho forado de um grfico


especificado

ChartSetDouble

Define o valor duplo para uma propriedade


correspondente do grfico especificado

ChartSetInteger

Define um valor inteiro (datetime, int, color,


bool ou char) para uma propriedade

2000-2015, MetaQuotes Software Corp.

1130

Operaes de Grficos

correspondente do grfico especificado


ChartSetString

Define o valor da seqncia para


propriedade do grfico especificado

ChartGetDouble

Retorna a propriedade de valor duplo do grfico


especificado

ChartGetInteger

Retorna a propriedade de valor inteiro do


grfico especificado

ChartGetString

Retorna a propriedade de valor da seqncia do


grfico especificado

ChartNavigate

Executa deslocamento do grfico especificado


pelo nmero especificado de barras em relao
a posio especificada no grfico

ChartID

Retorna o ID do grfico atual

ChartIndicatorAdd

Adiciona um indicador com identificador


especificado para uma janela do grfico
especificado

ChartIndicatorDelete

Remove um indicador com um nome


especificado a partir de janela do grfico
especificado

ChartIndicatorGet

Retorna o manuseio do indicador com nome


abreviado especificado na janela do grfico
especificado

ChartIndicatorName

Retorna o nome abreviado do indicador pelo


nmero na lista de indicadores sobre a janela
do grfico especificado

ChartIndicatorsTotal

Retorna o nmero de todos indicadores


utilizados para a janela do grfico especificado

ChartWindowOnDropped

Retorna o nmero (ndice) da sub-janela do


grfico, o Assessor Especialista (Expert
Advisor) ou Script foi derrubado

ChartPriceOnDropped

Retorna a coordenada de preo do ponto do


grfico, o Assessor Especialista (Expert
Advisor) ou Script foi derrubado

ChartTimeOnDropped

Retorna a coordenada de tempo do ponto do


grfico, o Assessor Especialista (Expert
Advisor) ou Script foi derrubado

ChartXOnDropped

Retorna a coordenada X do ponto do grfico, o


Assessor Especialista (Expert Advisor) ou Script
foi derrubado

ChartYOnDropped

Retorna a coordenada Y do ponto do grfico, o


Assessor Especialista (Expert Advisor) ou Script

2000-2015, MetaQuotes Software Corp.

uma

1131

Operaes de Grficos

foi derrubado
ChartSetSymbolPeriod

Modifica o valor do smbolo e um perodo do


grfico especificado

ChartScreenShot

Providencia uma imagem do grfico de seu


estado atual para um formato GIF, PNG ou BMP
dependendo da extenso especificada

2000-2015, MetaQuotes Software Corp.

1132

Operaes de Grficos

ChartApplyTemplate
Aplica-se um modelo especfico de um arquivo especificado para o grfico. O comando adicionado
para plotar uma fila de mensagens de grfico e ser executado aps o processamento de todos os
comandos anteriores.
bool ChartApplyTemplate(
long

chart_id,

const string filename

// ID Grfico
// Nome Arquivo Modelo (Template)

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
filename
[in] O nome do arquivo contendo o modelo.
Valor do Retorno
Retorna verdadeiro se o comando foi adicionado fila do grfico, caso contrrio ser falso. Para
obter uma informao sobre o erro, chamar a funo GetLastError().
Observao
O Assessor Especialista (Expert Advisor) ser descarregado e no poder ser capaz de continuar
operando em caso de carregamento bem sucedido de um novo modelo de grfico que estiver
anexado.
When applying the template to the chart, trade permissions may be limited due to security reasons:
Live trading permission cannot be extended for the Expert Advisors launched by
applying the template using ChartApplyTemplate() function.
If the mql5-program calling ChartApplyTemplate() function has no permission to trade, the Expert
Advisor launched via the template will also not be able to trade regardless of the template settings.
If the mql5-program calling ChartApplyTemplate() function has permission to trade, while there is no
such permission in the template settings, the Expert Advisor launched via the template will not be
able to trade.

Usando Modelos (Templates)


Os recursos da linguagem MQL5 permitem a configurao de propriedades de mltiplos grficos,
incluindo cores usando a funo ChartSetInteger():
Cor do fundo do grfico;
Cor dos eixos, escala e da linha OHLC;
Cor da grade;
Cor de volumes e nveis de posies abertas;
Cor da barra de alta, sombra e borda da barra de alta (tambm denominado como castial ou vela de
alta);
2000-2015, MetaQuotes Software Corp.

1133

Operaes de Grficos
Cor da barra de baixa, sombra e borda da barra de baixa (tambm denominado como castial ou
vela de baixa);
Cor da linha do grfico e barra Doji (tambm denominado como castial ou vela Doji);
Cor do corpo da barra de alta (tambm denominado como castial ou vela de alta);
Cor do corpo da barra de baixa (tambm denominado como castial ou vela de baixa);
Cor da linha do preo de compra;
Cor da linha do preo de venda;
Cor da linha do ltimo acordo de preo (Last);
Cor dos nveis das ordens de paradas, Parar Perda e Tomar Lucro (Stop Loss e Take Profit).
Alm disso, pode haver mltiplos objetos grficos e indicadores sobre um grfico. Voc pode
configurar um grfico com todos os indicadores necessrios uma nica vez e salvar como um modelo
(template). Este modelo salvo poder ser aplicado em qualquer grfico.
A funo ChartApplyTemplate() destinada ao uso de um modelo (template) salvo previamente, e
pode ser usada em qualquer programa MQL5. O caminho para o arquivo que armazena o modelo
(template) passado como o segundo parmetro para o ChartApplyTemplate(). O arquivo do modelo
(template) procurado de acordo com as seguintes regras:
se a barra invertida "\" separador (escrito como "\\") colocada no incio do percurso, o modelo
(template) procurado em relao ao caminho _terminal_dados_diretrio\ MQL5 (path
_terminal_data_directory\MQL5);
se no existir uma barra invertida, o modelo procurado em relao ao arquivo executvel EX5, em
que chamado o ChartApplyTemplate();
se um modelo no encontrado nas duas primeiras variantes, a pesquisa executada na pasta
terminal_diretorio\Profiles\Templates\.
Aqui o terminal_directory a pasta onde o Terminal do Cliente MetaTrader 5 est sendo executado, e
o terminal_dados_diretrio (terminal_data_directory) a pasta em que os arquivos editveis so
armazenados, a sua localizao depende do sistema operacional,nome do usurio e as configuraes
de segurana do computador. Normalmente, eles so pastas diferentes, mas em alguns casos, eles
podem coincidir.
A localizao das pastas terminal_data_directory e terminal_directory pode ser obtida utilizando a
funo TerminalInfoString().
//--- diretrio de onde o terminal iniciado
string terminal_path=TerminalInfoString(TERMINAL_PATH);
Print("Terminal diretrio:",terminal_path);
//--- terminal dados diretrio, em que a pasta MQL5 com os EAs e indicadores esto localizados
string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
Print("Terminal dados diretrio:",terminal_data_path);

Por exemplo:
//--- busca de um modelo (template) no terminal_dados_diretrio\MQL5\
ChartApplyTemplate(0,"\\primeiro_modelo.tpl"))

//--- busca de um modelo em diretrio_de_EX5_arquivo\, em seguida a pasta terminal_dados_diretrio\


ChartApplyTemplate(0,"segundo_modelo.tpl"))

//--- busca de um modelo em diretrio_de_EX5_arquivo\My_templates\, em seguida a pasta terminal_dir


ChartApplyTemplate(0,"My_templates\\terceiro_modelo.tpl"))

2000-2015, MetaQuotes Software Corp.

1134

Operaes de Grficos
Os modelos no so recursos, eles no podem ser includos em um arquivo executvel EX5.
Exemplo:
//+------------------------------------------------------------------+
//| Script program start function

//+------------------------------------------------------------------+
void OnStart()
{
//--- example of applying template, located in \MQL5\Files
if(FileIsExist("my_template.tpl"))
{
Print("The file my_template.tpl found in \Files'");
//--- apply template
if(ChartApplyTemplate(0,"\\Files\\my_template.tpl"))
{
Print("The template 'my_template.tpl' applied successfully");
//--- redraw chart
ChartRedraw();
}
else
Print("Failed to apply 'my_template.tpl', error code ",GetLastError());
}
else
{
Print("File 'my_template.tpl' not found in "
+TerminalInfoString(TERMINAL_PATH)+"\\MQL5\\Files");
}
}

Tambm Veja
Recursos

2000-2015, MetaQuotes Software Corp.

1135

Operaes de Grficos

ChartSaveTemplate
Salva as configuraes atuais do grfico em um template (modelo) com um nome especificado.
bool ChartSaveTemplate(
long

chart_id,

// ID Grfico

const string filename

// Nome do arquivo para salvar o template (modelo)

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
filename
[in] O nome do arquivo para salvar o template (modelo). A extenso ".tpl" ser adicionada
automaticamente no arquivo, onde no preciso especific-lo. O template (modelo) salvo no
terminal_directory\Profiles\Templates\ e pode ser utilizado para a aplicao manual no terminal.
Se j existir um template (modelo) com o mesmo nome de arquivo, os contedos deste arquivo
sero substitudos.
Valor do Retorno
Se bem sucedida, a funo retorna true, caso contrrio ela retorna false. Para obter informao
sobre o erro, chamar a funo GetLastError().
Observao
Usando templates (modelos), voc pode salvar as configuraes de grfico com todos os indicadores
e objetos grficos aplicados, para depois aplic-los em outro grfico.
Exemplo:
//+------------------------------------------------------------------+
//|

Test_ChartSaveTemplate.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property script_show_inputs
//--- parmetros de entrada
input string

symbol="GBPUSD";

// O smbolo do novo grfico

input ENUM_TIMEFRAMES

period=PERIOD_H3; // O prazo do novo grfico

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Primeiros indicadores anexados ao grfico
int handle;

2000-2015, MetaQuotes Software Corp.

1136

Operaes de Grficos
//--- Preparar indicador para uso
if(!PrepareZigzag(NULL,0,handle)) return; // Falhou, sair
//--- Anexar o indicador ao atual grfico, mas em janela separada.
if(!ChartIndicatorAdd(0,1,handle))
{
PrintFormat("Falha para anexar no grfico %s/%s um indicador com o handle=%d. Cdigo de erro
_Symbol,
EnumToString(_Period),
handle,
GetLastError());
//--- Finalizar a operao do programa
return;
}
//--- Atualizar o grfico para ver o indicator
ChartRedraw();
//--- Encontre as duas ltimas fracturas do zigzag
double two_values[];
datetime two_times[];
if(!GetLastTwoFractures(two_values,two_times,handle))
{
PrintFormat("Falha para localizar duas ltimas fracturas no ZigZag!");
//--- Finalizar a operao do programa
return;
}
//--- Anexar agora um canal de desvio padro
string channel="StdDeviation Channel";
if(!ObjectCreate(0,channel,OBJ_STDDEVCHANNEL,0,two_times[1],0))
{
PrintFormat("Falha ao criar objeto %s. Cdigo de erro %d",
EnumToString(OBJ_STDDEVCHANNEL),GetLastError());
return;
}
else
{
//--- O canal foi criado, definir o segundo ponto
ObjectSetInteger(0,channel,OBJPROP_TIME,1,two_times[0]);
//--- Define uma dica de contexto (tooltip) para o canal
ObjectSetString(0,channel,OBJPROP_TOOLTIP,"Demonstrao no ajuda MQL5");
//--- Atualizar o grfico
ChartRedraw();
}
//--- Salve o resultado em um template (modelo)
ChartSaveTemplate(0,"StdDevChannelOnZigzag");
//--- Abrir um novo grfico e aplicar um modelo salvo a ele
long new_chart=ChartOpen(symbol,period);
//--- Habilitar uma dica de contexto (tootips) para objetos grficos
ChartSetInteger(new_chart,CHART_SHOW_OBJECT_DESCR,true);
if(new_chart!=0)
{

2000-2015, MetaQuotes Software Corp.

1137

Operaes de Grficos
//--- Aplicar uma template (modelo) salvo para o grfico
ChartApplyTemplate(new_chart,"StdDevChannelOnZigzag");
}
Sleep(10000);
}
//+------------------------------------------------------------------+
//| Cria um manipulador ziguezague e garante disponibilidade de seus dados|
//+------------------------------------------------------------------+
bool PrepareZigzag(string sym,ENUM_TIMEFRAMES tf,int &h)
{
ResetLastError();
//--- O indicador de ziguezague deve estar localizado em terminal_data_folder\MQL5\Examples
h=iCustom(sym,tf,"Examples\\Zigzag");
if(h==INVALID_HANDLE)
{
PrintFormat("%s: Falha ao criar manipulador do indicador Zigzag. Cdigo de erro %d",
__FUNCTION__,GetLastError());
return false;
}
//--- Quando criado um manipulador de indicador, requer tempo para calcular valores
int k=0; // O nmero de tentativas de espera para o clculo de indicadores

//--- Aguarda at que o clculo faa um loop (volta completa), pausando por 50 milissegundos se o c
while(BarsCalculated(h)<=0)
{
k++;
//--- Mostrar o nmero de tentativas
PrintFormat("%s: k=%d",__FUNCTION__,k);
//--- Espera 50 milissegundos at que o indicador seja calculado
Sleep(50);
//--- Se mais de 100 tentativas, ento algo est errado
if(k>100)
{
//--- Reportar um problema
PrintFormat("Falha ao calcular o indicador para %d tentativas!");
//--- Terminar a operao do programa
return false;
}
}
//--- Tudo est pronto, o indicador criado e os valores so calculados
return true;
}
//+------------------------------------------------------------------+
//|Busca para as ltimas duas fracturas de zigzag e lugar para arrays|
//+------------------------------------------------------------------+
bool GetLastTwoFractures(double &get_values[],datetime &get_times[],int handle)
{
double values[];

// Uma array para os valores de ziguezague

datetime times[];

// Uma array para obter tempo

int size=100;

// Tamanho da array

2000-2015, MetaQuotes Software Corp.

1138

Operaes de Grficos
ResetLastError();
//--- Copiar os ltimos 100 valores do indicador
int copied=CopyBuffer(handle,0,0,size,values);
//--- Conferir o nmero de valores copiados
if(copied<100)
{

PrintFormat("%s: Falha para copiar valores %d do indicador com o handle=%d. Cdigo de erro %d
__FUNCTION__,size,handle,GetLastError());
return false;
}
//--- Definir a ordem de acesso para a array como um tempo de series (timeseries)
ArraySetAsSeries(values,true);
//--- Escreva aqui o nmero de baras, em que foram encontradas fracturas
int positions[];
//--- Definir tamanhos de array
ArrayResize(get_values,3); ArrayResize(get_times,3); ArrayResize(positions,3);
//--- Contadores
int i=0,k=0;
//--- Comece a procurar por fracturas
while(i<100)
{
double v=values[i];
//--- Ns no estamos interessados em valores vazios
if(v!=0.0)
{
//--- Relembra o nmero de barras
positions[k]=i;
//--- Relembra o valor do zigzag sobre a fractura
get_values[k]=values[i];
PrintFormat("%s: Zigzag[%d]=%G",__FUNCTION__,i,values[i]);
//--- Aumentar o contador
k++;
//--- Se duas fraturas encontrados, quebrar o loop (ciclo)
if(k>2) break;
}
i++;
}
//--- Definir a ordem de acesso s arrays como nas sries de tempo (timeseries)
ArraySetAsSeries(times,true);

ArraySetAsSeries(get_times,true);

if(CopyTime(_Symbol,_Period,0,size,times)<=0)
{
PrintFormat("%s: Falha ao copiar valores %d a partir CopyTime(). Cdigo de erro %d",
__FUNCTION__,size,GetLastError());
return false;
}
//--- Abra o tempo da abertura da barra, que ocorreu nas duas ltias fracturas

get_times[0]=times[positions[1]];// O ltimo, mas um valor ser escrito como a primeira fractura


get_times[1]=times[positions[2]];// O valor em terceiro lugar, a partir do final ser a segunda
PrintFormat("%s: primeiro=%s,

segundo=%s",__FUNCTION__,TimeToString(get_times[1]),TimeToString(

2000-2015, MetaQuotes Software Corp.

1139

Operaes de Grficos
//--- Bem sucedido
return true;
}

Tambm Veja
ChartApplyTemplate(), Recursos

2000-2015, MetaQuotes Software Corp.

1140

Operaes de Grficos

ChartWindowFind
A funo retorna o nmero para uma sub-janela quando um indicador desenhado. Existem 2
variantes da funo.
1. As pesquisas de funo no grfico indicado para a sub-janela especificado com o "nome abreviado"
do indicador (o nome abreviado exibida na parte superior esquerda da sub-janela), e retorna o
nmero da sub-janela em caso de sucesso.
int ChartWindowFind(
long

chart_id,

// identificar grfico

string

indicator_shortname

// nome abreviado do indicador, veja INDICATOR_SHORTNAME

2. A funo deve ser chamado a partir de um indicador personalizado. Retorna o nmero de uma subjanela onde um indicador est funcionando.
int ChartWindowFind();

Parmetros
chart_id
[in] ID Grfico. 0 (zero) indica a sub-janela grfico principal.
indicator_shortname
[in] Nome abreviado do indicador.
Valor do Retorno
Nmero da sub-janela em caso de sucesso. Em caso de falha a funo retorna -1.
Observao
Se a segunda variante da funo (sem parmetros) chamado de um script ou Expert Advisor, a
funo retorna -1.
No confundir o nome abreviado de um indicador e um nome de arquivo, que especificado quando
o indicador criado usando as funes iCustom() e IndicatorCreate(). Se o nome abreviado de um
indicador no definido de forma explicita, ento o nome do arquivo contendo o cdigo-fonte do
indicador ser especificado durante a compilao.
importante para formar corretamente o nome abreviado de um indicador, que registrado na
propriedade INDICATOR_SHORTNAME usando a funo IndicatorSetString(). recomendado que o
nome abreviado deve conter valores de todos os parmetros de entrada do indicador, porque sendo
o indicador excludo do grfico pela funo ChartIndicatorDelete(), ele identificado pelo nome
abreviado.
Exemplo:
#property script_show_inputs
//--- parmetros de entrada
input string

shortname="MACD(12,26,9)";

//+------------------------------------------------------------------+
//| Retorna o mmero da janela do grfico com este indicador

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1141

Operaes de Grficos
int GetIndicatorSubWindowNumber(long chartID=0,string short_name="")
{
int window=-1;
//--if((ENUM_PROGRAM_TYPE)MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR)
{
//--- a funo chamada a partir do indicador, o nome no necessrio
window=ChartWindowFind();
}
else
{
//--- a funo chamada a partir de um Expert Advisor ou script
window=ChartWindowFind(0,short_name);
if(window==-1) Print(__FUNCTION__+"(): Erro = ",GetLastError());
}
//--return(window);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--int window=GetIndicatorSubWindowNumber(0,shortname);
if(window!=-1)
Print("Indicador "+shortname+" est na janela #"+(string)window);
else
Print("Indicador "+shortname+" no foi encontrado. window = "+(string)window);
}

Tambm Veja
ObjectCreate(), ObjectFind()

2000-2015, MetaQuotes Software Corp.

1142

Operaes de Grficos

ChartTimePriceToXY
Converte as coordenadas do grfico a partir da representao tempo/preo para as coordenadas X e Y.
bool ChartTimePriceToXY(
long

chart_id,

// ID Grfico

int

sub_window,

// O nmero de sub-janelas

datetime

time,

// Tempo do Grfico

double

price,

// Preo no grfico

int&

x,

// A coordenada X para o tempo no grfico

int&

// A coordenada Y para o tempo no grfico

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
sub_window
[in] O numero da sub-janela do grfico. 0 (zero) significa a principal janela do grfico.
time
[in] O valor do tempo do grfico, valores em pixels para o qual vai ser recebido ao longo do eixo
X. A origem est no canto superior esquerdo da principal janela do grfico.
price
[in] O valor do preo no grfico, valores em pixels para o qual vai ser recebido ao longo do eixo
Y. A origem est no canto superior esquerdo da principal janela do grfico.
x
[out] A varivel, dentro do qual a converso do tempo para X ser recebida.
y
[out] A varivel, dentro do qual a converso do preo para Y ser recebida.
Valor do Retorno
Retorna true se bem sucedido, caso contrrio false. Para obter informao sobre o erro, chamar a
funo GetLastError().
Tambm Veja
ChartXYToTimePrice()

2000-2015, MetaQuotes Software Corp.

1143

Operaes de Grficos

ChartXYToTimePrice
Converte as coordenadas X e Y no grfico para os valores de tempo e preo.
bool ChartXYToTimePrice(
long

chart_id,

// ID Grfico

int

x,

// A coordenada X no Grfico

int

y,

// A coordenada Y no Grfico

int&

sub_window,

// O numero da sub-janela

datetime&

time,

// Tempo no grfico

double&

price

// Preo no grfico

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
x
[in] A coordenada X.
y
[in] A coordenada Y.
sub_window
[out] A varivel, em que o nmero de sub-janela grfico ser escrito. 0 (zero) significa a principal
janela do grfico.
time
[out] O valor do tempo do grfico, valores em pixels para o qual vai ser recebido ao longo do eixo
X. A origem est no canto superior esquerdo da principal janela do grfico.
price
[out] O valor do preo no grfico, valores em pixels para o qual vai ser recebido ao longo do eixo
Y. A origem est no canto superior esquerdo da principal janela do grfico.
Valor do Retorno
Retorna true se bem sucedido, caso contrrio false. Para obter informao sobre o erro, chamar a
funo GetLastError().
Exemplo:
//+------------------------------------------------------------------+
//| Funo ChartEvent

//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- Mostra os parmetros do evento no grfico

2000-2015, MetaQuotes Software Corp.

1144

Operaes de Grficos
Comment(__FUNCTION__,": id=",id," lparam=",lparam," dparam=",dparam," sparam=",sparam);
//--- Se este um evento de um mouse clicando no grfico
if(id==CHARTEVENT_CLICK)
{
//--- Preparar variveis
int

=(int)lparam;

int

=(int)dparam;

datetime dt

=0;

double

price =0;

int

window=0;

//--- Converter as coordenadas X e Y em termos de data/hora


if(ChartXYToTimePrice(0,x,y,window,dt,price))
{
PrintFormat("Janela=%d X=%d

Y=%d

=>

Tempo=%s

Preo=%G",window,x,y,TimeToString(dt),pri

//--- Executar a converso inversa: (X,Y) => (Tempo,Preo)


if(ChartTimePriceToXY(0,window,dt,price,x,y))
PrintFormat("Tempo=%s

Preo=%G

=>

X=%d

Y=%d",TimeToString(dt),price,x,y);

else
Print("ChartTimePriceToXY cdigo de erro de retorno: ",GetLastError());
//--- delete lines
ObjectDelete(0,"V Line");
ObjectDelete(0,"H Line");
//--- create horizontal and vertical lines of the crosshair
ObjectCreate(0,"H Line",OBJ_HLINE,window,dt,price);
ObjectCreate(0,"V Line",OBJ_VLINE,window,dt,price);
ChartRedraw(0);
}
else
Print("ChartXYToTimePrice cdigo de erro de retorno: ",GetLastError());
Print("+--------------------------------------------------------------+");
}
}

Tambm Veja
ChartTimePriceToXY()

2000-2015, MetaQuotes Software Corp.

1145

Operaes de Grficos

ChartOpen
Abre um novo grfico com o smbolo e perodo especificado.
long ChartOpen(
string

symbol,

ENUM_TIMEFRAMES period

// Nome Simbolo
// Perodo

);

Parmetros
symbol
[in] Simbolo do grfico. NULL significa o smbolo do grfico de corrente (Expert Advisor
anexado).
period
[in] Perodo do Grfico (Prazo). Pode ser um dos valores de ENUM_TIMEFRAMES. 0 (zero) significa
o perodo do atual grfico.
Valor do Retorno
Se com sucesso, retorna abertura do ID grfico. Do contrrio retorna 0(zero).
Observao
O nmero mximo possvel de cartas abertas simultaneamente no terminal no pode exceder o
valor CHARTS_MAX.

2000-2015, MetaQuotes Software Corp.

1146

Operaes de Grficos

ChartFirst
Retorna o ID do primeiro grfico do terminal de cliente.
long ChartFirst();

Valor do Retorno
ID Grfico.

2000-2015, MetaQuotes Software Corp.

1147

Operaes de Grficos

ChartNext
Retorna o ID do grfico do prximo grfico para um especificado.
long ChartNext(
long chart_id

// ID grfico

);

Parmetros
chart_id
[in] ID Grfico. 0 (zero) no significa o quadro atual. 0 (zero) significa "retornar o ID do primeiro
grfico".
Valor do Retorno
ID Grfico. Se este for o fim da lista de grfico, ele retorna -1.
Exemplo:
//--- variveis para ID grfico
long currChart,prevChart=ChartFirst();
int i=0,limit=100;
Print("ChartFirst =",ChartSymbol(prevChart)," ID =",prevChart);
while(i<limit)// Temos certamente no mais do que 100 grficos abertos
{
currChart=ChartNext(prevChart); // Obter o ID do novo grfico usando o ID grfico anterior
if(currChart<0) break;

// Ter atingido o fim da lista de grfico

Print(i,ChartSymbol(currChart)," ID =",currChart);
prevChart=currChart;// vamos salvar o ID do grfico atual para o ChartNext()
i++;// No esquea de aumentar o contador
}

2000-2015, MetaQuotes Software Corp.

1148

Operaes de Grficos

ChartClose
Fechando um grfico especificado.
bool ChartClose(
long chart_id=0

// ID grfico

);

Parmetros
chart_id=0
[in] ID Grfico. Significa o grfico atual.
Valor do Retorno
Se com sucesso, retorna true, caso contrrio false.

2000-2015, MetaQuotes Software Corp.

1149

Operaes de Grficos

ChartSymbol
Retorna o nome do smbolo do grfico especificado.
string ChartSymbol(
long chart_id=0

// ID grfico

);

Parmetros
chart_id=0
[in] ID Grfico. Significa o grfico atual.
Valor do Retorno
Se o grfico no existe, o resultado ser uma string (seqncia) vazia.
Tambm Veja
ChartSetSymbolPeriod

2000-2015, MetaQuotes Software Corp.

1150

Operaes de Grficos

ChartPeriod
Retorna o prazo doperiodo do grfico especificado.
ENUM_TIMEFRAMES ChartPeriod(
long chart_id=0

// ID grfico

);

Parmetros
chart_id=0
[in] ID Grfico. Significa o grfico atual.
Valor do Retorno
A funo retorna um valor de ENUM_TIMEFRAMES. Se grfico no existir retorna 0 (zero).

2000-2015, MetaQuotes Software Corp.

1151

Operaes de Grficos

ChartRedraw
Chama um redesenho forado de um grfico especificado.
void ChartRedraw(
long chart_id=0

// ID grfico

);

Parmetros
chart_id=0
[in] ID Grfico. Significa o grfico atual.
Observao
Normalmente utilizado aps mudar a propriedade do objeto.
Tambm Veja
Funes de objetos

2000-2015, MetaQuotes Software Corp.

1152

Operaes de Grficos

ChartSetDouble
Define um valor para a propriedade de correspondncia de um grfico especificado. Propriedade de
grfico deve ser do tipo double. O comando adicionado para plotar uma fila de mensagens de grfico
e ser executado aps o processamento de todos os comandos anteriores.
bool ChartSetDouble(
long

chart_id,

// ID Grfico

int

prop_id,

// ID Propriedade

double value

// Valor

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
prop_id
[in] ID Propriedade do grfico. Pode ser um valores de ENUM_CHART_PROPERTY_DOUBLE (exceto
apenas a leitura das propriedades).
value
[in] Valor da Propriedade.
Valor do Retorno
Retorna verdadeiro se o comando foi adicionado fila do grfico, caso contrrio ser falso. Para
obter uma informao sobre o erro, chamar a funo GetLastError().

2000-2015, MetaQuotes Software Corp.

1153

Operaes de Grficos

ChartSetInteger
Define um valor para a propriedade de correspondncia de um grfico especificado. Propriedade do
grfico deve obrigatoriamente ser datetime,int,color,boolouchar. O comando adicionado para
plotar uma fila de mensagens de grfico e ser executado aps o processamento de todos os
comandos anteriores.
bool ChartSetInteger(
long

chart_id,

// ID Grfico

int

prop_id,

// ID Propriedade>

long

value

// Valor

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
prop_id
[in] ID Propriedade do grfico. Pode ser um valores de ENUM_CHART_PROPERTY_INTEGER (exceto
apenas a leitura das propriedades).
value
[in] Valor de propriedade.
Valor do Retorno
Retorna verdadeiro se o comando foi adicionado fila do grfico, caso contrrio ser falso. Para
obter uma informao sobre o erro, chamar a funo GetLastError().

2000-2015, MetaQuotes Software Corp.

1154

Operaes de Grficos

ChartSetString
Define um valor para a propriedade de correspondncia de um grfico especificado. Propriedade de
Grfico deve ser do tipo string (seqncia). O comando adicionado para plotar uma fila de
mensagens de grfico e ser executado aps o processamento de todos os comandos anteriores.
bool ChartSetString(
long chart_id,

// ID Grfico

int

// ID Propriedade

prop_id,

string

str_value

// Valor

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
prop_id
[in] ID Propriedade do grfico. Pode ser um valores de ENUM_CHART_PROPERTY_STRING (exceto
apenas a leitura das propriedades).
str_value
[in] Valor de propriedade string. Comprimento da seqncia no pode exceder 2045 caracteres
(caracteres extras sero truncados).
Valor do Retorno
Retorna verdadeiro se o comando foi adicionado fila do grfico, caso contrrio ser falso. Para
obter uma informao sobre o erro, chamar a funo GetLastError().
Observao
ChartSetString pode ser usado para um comentrio de sada no grfico ao invs da funo
Comment.
Exemplo:
void OnTick()
{
//--double Ask,Bid;
int Spread;
Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
Spread=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);
string comment=StringFormat("Imprimindo preos:\nAsk = %G\nBid = %G\nSpread = %d",
Ask,Bid,Spread);
ChartSetString(0,CHART_COMMENT,comment);
}

Tambm Veja
Comment, ChartGetString

2000-2015, MetaQuotes Software Corp.

1155

Operaes de Grficos

ChartGetDouble
Retorna o valor de uma propriedade correspondente do grfico especificado. Propriedade do grfico
deve ser do tipo double. Existem duas variantes das chamadas desta funo.
1. Retorna diretamente o valor da propriedade.
double ChartGetDouble(
long chart_id,

// ID Grfico

int

prop_id,

// ID Propriedade

int

sub_window=0

// nmero da sub-janela, se necessrio

);

2. Retorna true ou false, dependendo do sucesso na execuo da funo. Se for bem sucedido, o valor
da propriedade colocado num alvo varivel double_var passado como referncia.
bool ChartGetDouble(
long

chart_id,

// ID Grfico

int

prop_id,

// ID Propriedade

int

sub_window,

// Nmero da sub-janela

double&double_var

// Alvo varivel para a propriedade de grfico

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
prop_id
[in]
ID Propriedade do
grfico.
ENUM_CHART_PROPERTY_DOUBLE.

Este

valor

pode

ser

um

dos

valores

sub_window
[in] Nmero de sub-janela do grfico. Para o primeiro caso, o valor padro 0 (janela do grfico
principal). A maioria das propriedades no requerem uma nmero de sub-janela.
double_var
[out] Varivel alvo de tipo double (duplo) para a propriedade solicitada.
Valor do Retorno
Valor de tipo double.
Para a segunda chamada caso retorne verdadeiro (true) se a propriedade especificada est
disponvel e seu valor foi armazenado dentro da varivel double_var, caso contrrio retorna false.
Para obter uma informao adicional sobre o erro, necessrio chamar a funo GetLastError().
Exemplo:
void OnStart()
{
double priceMin=ChartGetDouble(0,CHART_PRICE_MIN,0);
double priceMax=ChartGetDouble(0,CHART_PRICE_MAX,0);

2000-2015, MetaQuotes Software Corp.

1156

Operaes de Grficos
Print("CHART_PRICE_MIN =",priceMin);
Print("CHART_PRICE_MAX =",priceMax);
}

2000-2015, MetaQuotes Software Corp.

1157

Operaes de Grficos

ChartGetInteger
Retorna o valor de uma propriedade correspondente do grfico especificado. Propriedade do grfico
obrigatrio ser do tipo datetime,intoubool . Existem duas variantes das chamadas desta funo.
1. Retorna diretamente o valor da propriedade.
long ChartGetInteger(
long chart_id,

// ID Grfico

int

prop_id,

// ID Propriedade

int

sub_window=0

// nmero da sub-janela, se necessrio

);

2. Retorna true ou false, dependendo do sucesso na execuo da funo. Se for bem sucedido, o valor
da propriedade colocado num alvo varivel long_var passado como referncia.
bool ChartGetInteger(
long

chart_id,

// ID Grfico

int

prop_id,

// ID Propriedade

int

sub_window,

// Nmero da sub-janela

long&

long_var

// Alvo varivel para a propriedade

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
prop_id
[in]
ID Propriedade do
grfico.
ENUM_CHART_PROPERTY_INTEGER.

Este

valor

pode

ser

um

dos

valores

sub_window
[in] Nmero de sub-janela do grfico. Para o primeiro caso, o valor padro 0 (janela do grfico
principal). A maioria das propriedades no requerem uma nmero de sub-janela.
long_var
[out] Alvo varivel do tipo long para a propriedade solicitada.
Valor do Retorno
Valor de tipo long.
Para a segunda chamada caso retorne true se a propriedade especificada est disponvel e seu valor
foi armazenado dentro da varivel long_var, caso contrrio retorna false. Para obter uma
informao adicional sobre o error, necessrio chamar a funo GetLastError().
Exemplo:
void OnStart()
{
int height=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0);
int width=ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0);

2000-2015, MetaQuotes Software Corp.

1158

Operaes de Grficos
Print("CHART_HEIGHT_IN_PIXELS =",height,"pixels");
Print("CHART_WIDTH_IN_PIXELS =",width,"pixels");
}

2000-2015, MetaQuotes Software Corp.

1159

Operaes de Grficos

ChartGetString
Retorna o valor de uma propriedade correspondente do grfico especificado. Propriedade de Grfico
deve ser do tipo string. Existem duas variantes das chamadas desta funo.
1. Retorna diretamente o valor da propriedade.
string ChartGetString(
long chart_id,

// ID Grfico

int

// ID Propriedade

prop_id

);

2. Retorna true ou false, dependendo do sucesso na execuo da funo. Se for bem sucedido, o valor
da propriedade colocado num alvo varivel string_var passado como referncia.
bool ChartGetString(
long

chart_id,

// ID Grfico

int

prop_id,

// ID Propriedade

string&string_var

// Alvo varivel para a propriedade

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
prop_id
[in]
ID Propriedade do
grfico.
ENUM_CHART_PROPERTY_STRING.

Este

valor

pode

ser

um

dos

valores

string_var
[out] Alvo varivel do tipo string para a propriedade solicitada.
Valor do Retorno
Valor de tipo string.
Para a segunda chamada caso retorne true se a propriedade especificada est disponvel e seu valor
foi armazenado dentro da varivel string_var, caso contrrio retorna false. Para obter uma
informao adicional sobre o error, necessrio chamar a funo GetLastError().
Observao
ChartGetString pode ser usado para leitura dos comentrios plotados no grfico usando funes
Comment ou ChartSetString.
Exemplo:
void OnStart()
{
ChartSetString(0,CHART_COMMENT,"Comentrio de teste.\nSegunda linha.\nTerceira!");
ChartRedraw();
Sleep(1000);
string comm=ChartGetString(0,CHART_COMMENT);

2000-2015, MetaQuotes Software Corp.

1160

Operaes de Grficos
Print(comm);
}

Tambm Veja
Comment, ChartSetString

2000-2015, MetaQuotes Software Corp.

1161

Operaes de Grficos

ChartNavigate
Executa deslocamento do grfico especificado pelo nmero especificado de barras em relao a
posio especificada no grfico.
bool ChartNavigate(
long chart_id,

// ID Grfico

int

position,

// Posio

int

shift=0

// Valor deslocamento

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
position
[in]
Posio do grfico para realizar um deslocamento. Pode ser um dos
ENUM_CHART_POSITION.

valores

shift=0
[in] Nmero de barras para deslocar o grfico. Valor positivo significa que o deslocamento para
a direita (para o fim do grfico), o valor negativo significa que o desvio para a esquerda (para o
incio do grfico). O deslocamento zero pode ser usado para navegar ao incio ou para ao fim do
grfico.
Valor do Retorno
Retorna true se bem sucedido, caso contrrio false.
Exemplo:
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- manipular grfico atual
long handle=ChartID();
string comm="";
if(handle>0) //se bem sucedida, configurar o grfico
{
//--- desabilitar auto rolagem
ChartSetInteger(handle,CHART_AUTOSCROLL,false);
//--- definir uma mudana da margem direita do grfico
ChartSetInteger(handle,CHART_SHIFT,true);
//--- desenhar castiais
ChartSetInteger(handle,CHART_MODE,CHART_CANDLES);
//--- definir o modo de exibio para volume de tick (ponto)
ChartSetInteger(handle,CHART_SHOW_VOLUMES,CHART_VOLUME_TICK);
//--- preparar um texto para a sada em Comment()

2000-2015, MetaQuotes Software Corp.

1162

Operaes de Grficos
comm="Rolar 10 barras para a direita do comeo do histrico";
//--- mostrar comentrio
Comment(comm);
//--- rolar 10 barras para a direita do comeo do histrico
ChartNavigate(handle,CHART_BEGIN,10);

//--- comear com o nmero da primeira barra visvel no grfico (numerao como em srie de t
long first_bar=ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
//--- adicionar linha de caractere
comm=comm+"\r\n";
//--- adicionar comentrio
comm=comm+"A primeira barra o nmero no grfico "+IntegerToString(first_bar)+"\r\n";
//--- mostrar comentrio
Comment(comm);
//--- aguardar 5 segundos para ver como o grfico se move
Sleep(5000);
//--- adicionar texto de cometrio
comm=comm+"\r\n"+"Rolar 10 barras para a esquerda da margem direita do grfico";
Comment(comm);
//--- rolar 10 barras para a esquerda da margem direita do grfico
ChartNavigate(handle,CHART_END,-10);

//--- comear com o nmero da primeira barra visvel no grfico (numerao como em srie de t
first_bar=ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
comm=comm+"\r\n";
comm=comm+"A primeira barra o nmero no grfico "+IntegerToString(first_bar)+"\r\n";
Comment(comm);
//--- aguardar 5 segundos para ver como o grfico se move
Sleep(5000);
//--- novo bloco de rolagem do grfico
comm=comm+"\r\n"+"Rolar 300 barras para a direita do incio do histrico";
Comment(comm);
//--- rolar 300 barras para a direita do incio do histrico
ChartNavigate(handle,CHART_BEGIN,300);
first_bar=ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
comm=comm+"\r\n";
comm=comm+"A primeira barra o nmero no grfico "+IntegerToString(first_bar)+"\r\n";
Comment(comm);
//--- aguardar 5 segundos para ver como o grfico se move
Sleep(5000);
//--- novo bloco de rolagem do grfico
comm=comm+"\r\n"+"Rolar 300 barras para a esquerda da margem direita do grfico";
Comment(comm);
//--- rolar 300 barras esquerda da margem direita do grfico
ChartNavigate(handle,CHART_END,-300);
first_bar=ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
comm=comm+"\r\n";
comm=comm+"A primeira barra o nmero no grfico "+IntegerToString(first_bar)+"\r\n";

2000-2015, MetaQuotes Software Corp.

1163

Operaes de Grficos
Comment(comm);
}
}

2000-2015, MetaQuotes Software Corp.

1164

Operaes de Grficos

ChartID
Retorna o ID do grfico atual.
long ChartID();

Valor do Retorno
Valor tipo long.

2000-2015, MetaQuotes Software Corp.

1165

Operaes de Grficos

ChartIndicatorAdd
Adiciona um indicador com o identificador especificado para uma janela de grfico especificado.
Indicador e grfico devem ser gerados sobre o mesmo smbolo e prazo.
bool ChartIndicatorAdd(
long chart_id,

// ID Grfico

int

sub_window

// nmero da sub-janela

int

indicator_handle

// manipulador do indicador

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
sub_window
[in] O nmero de sub-janelas do grfico. 0 (zero) significa a principal janela do grfico. Para
adicionar um indicador em uma nova janela,o parmetro obrigatoriamente deve ser maior do que
o ndice da ltima janela existente, isto , igual a CHART_WINDOWS_TOTAL. Se o valor do
parmetro maior que CHART_WINDOWS_TOTAL, uma nova janela no ser criada, e o indicador
no ser adicionado.
indicator_handle
[in] O identificador do indicador.
Valor do Retorno
A funo retorna verdadeira (true) em caso de sucesso, caso contrrio ela retorna false. A fim de
obter informao sobre erro, chama a funo GetLastError(). Erro 4114 significa que o grfico e um
indicador adicionado difere pelo seus smbolos ou prazo.
Observao
Se um indicador deve ser elaborado numa sub-janela separada (por exemplo, construindo um iMACD
ou um indicador personalizado com propriedade especificada #property indicator_separate_window)
aplicada janela de grfico principal,no pode ser visvel embora ainda estar presente na lista
de indicadores. Isto significa que a escala do indicador diferente da escala do grfico de preo, e
aplicado ao valor do indicador no se enquadra na faixa visualizada do grfico de preo. Neste
caso, GetLastError() retorna cdigo zero indicando a ausncia de um erro. Os valores de tal
indicador "invisvel" pode ser visto na Janela de Dados (Data Window) e recebidos a partir de outras
aplicaes MQL5.
Exemplo:
#property description "Expert Advisor demonstrando o trabalho com a funo ChartIndicatorAdd()."
#property description "Aps o lanamento no grfico (e receber o erro no Jornal), abrir"

#property description "Propriedades do Expert Advisor e especificar <smbolo> correto e os parmetr


#property description "Indicador MACD sera adicionado no grafico."
//--- parmetros de entrada
input string

symbol="AUDUSD";

input ENUM_TIMEFRAMES period=PERIOD_M12;

// nome do smbolo
// time frame

2000-2015, MetaQuotes Software Corp.

1166

Operaes de Grficos
input int

fast_ema_period=12;

// perodo rpido MACD

input int

slow_ema_period=26;

// perodo lento MACD

input int

signal_period=9;

// perodo de sinal

input ENUM_APPLIED_PRICE apr=PRICE_CLOSE; // tipo de preo para clculo do iMACD


int indicator_handle=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--indicator_handle=iMACD(symbol,period,fast_ema_period,slow_ema_period,signal_period,apr);
//--- tentar adicionar o indicador no grfico
if(!AddIndicator())
{
//--- Funo AddIndicator() recusou acrescentar o indicador no grfico
int answer=MessageBox("Voc quer adicionar MACD do grfico de qualquer maneira?",
"Smbolo e/ou prazo de tempo incorreto para adicionar o indicador",
MB_YESNO // "Sim" e "No" botes de seleo ser mostrado
);
//--- se um usurio ainda insiste no uso incorreto de ChartIndicatorAdd()
if(answer==IDYES)
{
//--- em primeiro lugar, uma entrada jornal ser publicado sobre isso

PrintFormat("Ateno! %s: Tentando adicionar indicador MACD(%s/%s) em grfico %s/%s. Receb


__FUNCTION__,symbol,EnumToString(period),_Symbol,EnumToString(_Period));

//---receber o nmero de uma nova sub-janela, para a qual vamos tentar adicionar o indicad
int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);
//--- agora faz uma tentativa fadada a falhar
if(!ChartIndicatorAdd(0,subwindow,indicator_handle))

PrintFormat("Falha ao adicionar o indicador MACD %d na janela do grfico. Cdigo de err


subwindow,GetLastError());
}
}
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

//+------------------------------------------------------------------+
void OnTick()
{
// Assessor especialista (expert advisor) no executa nada
}
//+------------------------------------------------------------------+
//| Funo para verificar e adicionar o indicador no grfico

//+------------------------------------------------------------------+
bool AddIndicator()

2000-2015, MetaQuotes Software Corp.

1167

Operaes de Grficos
{
//--- mensagem exibida
string message;
//--- verificar se o smbolo do indicador e smbolo do grfico combinam entre si
if(symbol!=_Symbol)
{
message="Exibindo o uso da funo Demo_ChartIndicatorAdd():";
message=message+"\r\n";

message=message+"No possvel adicionar o indicador calculado com outro smbolo no grfico.


message=message+"\r\n";

message=message+"Especifique o smbolo grfico na propriedade do Expert Advisor - "+_Symbol+"


Alert(message);
//---sada prematura, o indicador no ser adicionado no grfico
return false;
}
//--- verificar se o indicador e prazo do grfico combinam entre si
if(period!=_Period)
{

message="No possvel adicionar o indicador calculado em outro prazo de tempo no grfico.";


message=message+"\r\n";
message=message+"Especifique o prazo de tempo do grfico na propriedades do Expert Advisor Alert(message);
//---sada prematura, o indicador no ser adicionado no grfico
return false;
}
//--- todas verificaes completadas, simbolo e prazo do indicador corresponde ao grfico
if(indicator_handle==INVALID_HANDLE)
{
Print(__FUNCTION__,"

Criando indicador MACD");

indicator_handle=iMACD(symbol,period,fast_ema_period,slow_ema_period,signal_period,apr);
if(indicator_handle==INVALID_HANDLE)
{
Print("Falha para criar indicador MACD. Cdigo de erro ",GetLastError());
}
}
//--- redefine o cdigo de erro
ResetLastError();
//--- aplicar o indicador para o grfico
Print(__FUNCTION__,"

Adicionando indicador MACD no grfico");

Print("MACD gerada em ",symbol,"/",EnumToString(period));


//---receber o nmero de uma nova sub-janela, para o qual adicionado o indicador MACD
int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);
PrintFormat("Adicionado indicador MACD na janela do grfico %d",subwindow);
if(!ChartIndicatorAdd(0,subwindow,indicator_handle))
{

PrintFormat("Falha para adicionar indicador MACD na janela do grfico %d. Cdigo de erro %d",
subwindow,GetLastError());
}
//--- indicador adicionado com sucesso

2000-2015, MetaQuotes Software Corp.

1168

Operaes de Grficos
return(true);
}

Veja tambm
ChartIndicatorDelete(), ChartIndicatorName(), ChartIndicatorsTotal(), iCustom(), IndicatorCreate()

2000-2015, MetaQuotes Software Corp.

1169

Operaes de Grficos

ChartIndicatorDelete
Remove um indicador com um nome especificado a partir de janela do grfico especificado.
bool ChartIndicatorDelete(
long

chart_id,

// ID Grfico

int

sub_window

// nmero da sub-janela

const string

indicator_shortname

// nome abreviado do indicador

);

Parmetros
chart_id
[in] ID Grfico. 0 (zero) indica a sub-janela grfico principal.
sub_window
[in] Nmero de sub-janela do grfico. 0 (zero) indica o sub-janela grfico principal.
const indicator_shortname
[in] O nome abreviado do indicador que definido na propriedade do INDICATOR_SHORTNAME
com a funo IndicatorSetString(). Para obter o nome abreviado de um indicador usar a funo
ChartIndicatorName().
Valor do Retorno
Retorna true em caso de sucesso deletando o indicador. Do contrrio ele retorna false. Para obter
detalhes do erro use a funo GetLastError().
Observao
Se houver dois indicadores com nove abreviados iguais na subjanela do grfico, o primeiro da linha
ser deletado.
Se outros indicadores neste grfico so baseadas nos valores do indicador que est sendo deletado,
estes indicadores tambm sero deletados.
No confundir o nome abreviado do indicador e o nome do arquivo que especificado ao criar um
indicador usando as funes iCustom() e IndicatorCreate(). Se o nome abreviado de um indicador
no definido de forma explicita, o nome do arquivo contendo o cdigo-fonte do indicador ser
especificado durante a compilao.
Deletando um indicador de um grfico no significa que seu clculo ser excludo da me mria do
terminal. Para liberar o manuseio do indicador usar a funo IndicatorRelease().
Nome abreviado do
indicador deve ser formado
corretamente. a
propriedade
INDICATOR_SHORTNAME ser escrita usando a funoIndicatorSetString(). S recomendado que o
nome abreviado deve conter valores de todos os parmetros de entrada do indicador, porque sendo
o indicador excludo do grfico pela funo ChartIndicatorDelete(), ele identificado pelo nome
abreviado.
Exemplo de excluso de um indicador aps inicializao ter falhado:
//+------------------------------------------------------------------+
//|

Demo_ChartIndicatorDelete.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

2000-2015, MetaQuotes Software Corp.

1170

Operaes de Grficos
//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar Histograma


#property indicator_label1

"Histogram"

#property indicator_type1

DRAW_HISTOGRAM

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

first_param=1;

input int

second_param=2;

input int

third_param=3;

input bool

wrong_init=true;

//--- buffers do indicador


double

HistogramBuffer[];

string

shortname;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
int res=INIT_SUCCEEDED;
//---Vincular a array HistogramBuffer para a buffer (memria temporria) do indicador
SetIndexBuffer(0,HistogramBuffer,INDICATOR_DATA);
//--- Construir um nome abreviado de indicador baseado nos parmetro de entrada
shortname=StringFormat("Demo_ChartIndicatorDelete(%d,%d,%d)",
first_param,second_param,third_param);
IndicatorSetString(INDICATOR_SHORTNAME,shortname);
//--- Se a concluso forada de um indicador est definida, retornar um valor no-zero
if(wrong_init) res=INIT_FAILED;
return(res);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],

2000-2015, MetaQuotes Software Corp.

1171

Operaes de Grficos
const long &volume[],
const int &spread[])
{
//--- Posio de partida para trabalhar num loop
int start=prev_calculated-1;
if(start<0) start=0;
//--- Preencher o buffer do indicador com valores
for(int i=start;i<rates_total;i++)
{
HistogramBuffer[i]=close[i];
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Um processador do evento de desinicializada (Deinit)

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
PrintFormat("%s: Cdigo de razo de finalizao=%d",__FUNCTION__,reason);
if(reason==REASON_INITFAILED)
{

PrintFormat("Um indicador com um nome abreviado %s (arquivo %s) se exclui do grfico",shortna


int window=ChartWindowFind();
bool res=ChartIndicatorDelete(0,window,shortname);
//--- Analisar o resultado de chamada de ChartIndicatorDelete()
if(!res)
{
PrintFormat("Falha para deletar o indicador %s partir da janela #%d. Cdigo de erro %d",
shortname,window,GetLastError());
}
}
}

Tambm Veja
ChartIndicatorAdd(), ChartIndicatorName(), ChartIndicatorsTotal(), iCustom(), IndicatorCreate(),
IndicatorSetString()

2000-2015, MetaQuotes Software Corp.

1172

Operaes de Grficos

ChartIndicatorGet
Retorna o manuseio do indicador com nome abreviado especificado na janela do grfico especificado.
int ChartIndicatorGet(
long

chart_id,

// ID grfico\

int

sub_window

// O numero da sub-janela

const string

indicator_shortname

// Nome abreviado do indicador

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
sub_window
[in] O numero da sub-janela do grfico. 0 (zero) significa a principal janela do grfico.
const indicator_shortname
[in] O nome abreviado do indicador que definido na propriedade INDICATOR_SHORTNAME ser
escrita usando a funo IndicatorSetString(). Para obter o nome abreviado de um indicador usar a
funo ChartIndicatorName().
Valor do Retorno
A funo retorna bem sucedida, caso contrrio retorna INVALID_HANDLE. Para obter informaes
sobre o erro, chame a funo GetLastError().
Observao
Ao criar um indicador, tenha cuidado para formar sua abreviao, o que est escrito na propriedade
INDICATOR_SHORTNAME usando a funo IndicatorSetString(). recomendado que o nome
abreviado deve conter valores de todos os parmetros de entrada do indicador, porque sendo o
indicador excludo do grfico pela funo ChartIndicatorGet() ele identificado pelo nome
abreviado.
Outra forma de identificar o indicador obtendo uma lista de seus parmetros para um
manipulador, usando a funo IndicatorParameters() e, em seguida, analisar os valores obtidos.
Exemplo:
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- O nmero de janelas no grfico (ao menos uma janela principal est sempre presente)
int windows=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);
//--- Verifique todas as janelas
for(int w=0;w<windows;w++)
{
//--- o nmero de indicadores nesta janela/sub-janela
int total=ChartIndicatorsTotal(0,w);

2000-2015, MetaQuotes Software Corp.

1173

Operaes de Grficos
//--- Passar por todos os indicadores na janela
for(int i=0;i<total;i++)
{
//--- obtm o nome abreviado do indicador
string name=ChartIndicatorName(0,w,i);
//--- obter o manipulador (handle) de um indicador
int handle=ChartIndicatorGet(0,w,name);
//--- Adicionar o log
PrintFormat("Janela=%d,

ndice=%d,

nome=%s,

manipulador (handle)=%d",w,i,name,handle);

//--- You should obligatorily release the indicator handle when it is no longer needed
IndicatorRelease(handle);
}
}
}

Tambm Veja
ChartIndicatorAdd(), ChartIndicatorName(), ChartIndicatorsTotal(), IndicatorParameters()

2000-2015, MetaQuotes Software Corp.

1174

Operaes de Grficos

ChartIndicatorName
Retorna o nome abreviado do indicador pelo nmero na lista de indicadores sobre a janela do grfico
especificado.
string ChartIndicatorName(
long chart_id,

// ID grfico

int

sub_window

// numero de sub-janelas

int

index

// ndice do indicador na lista de indicadores adicionada a sub-janela do g

);

Parmetros
chart_id
[in] ID Grfico. 0 (zero) indica a sub-janela grfico principal.
sub_window
[in] Nmero de sub-janela do grfico. 0 (zero) indica o sub-janela grfico principal.
index
[in] ndice do indicador na lista de indicadores. A numerao de indicadores comeam com zero,
ou seja, o primeiro indicador da lista tem o ndice 0. Para obter o cdigo do ltimo erro, voc
tambm pode usar a funo ChartIndicatorsTotal().
Valor do Retorno
O nome abreviado do indicador que definido na propriedade INDICATOR_SHORTNAME com a
funo IndicatorSetString(). Para obter detalhes do erro use a funo GetLastError().
Observao
No confundir o nome abreviado do indicador e o nome do arquivo que especificado ao criar um
indicador usando as funes iCustom() e IndicatorCreate(). Se o nome abreviado de um indicador
no definido de forma explicita, o nome do arquivo contendo o cdigo-fonte do indicador ser
especificado durante a compilao.
Nome abreviado do
indicador deve ser formado
corretamente. a
propriedade
INDICATOR_SHORTNAME ser escrita usando a funoIndicatorSetString(). S recomendado que o
nome abreviado deve conter valores de todos os parmetros de entrada do indicador, porque sendo
o indicador excludo do grfico pela funo ChartIndicatorDelete(), ele identificado pelo nome
abreviado.
Tambm Veja
ChartIndicatorAdd(), ChartIndicatorDelete(), ChartIndicatorsTotal(), iCustom(), IndicatorCreate(),
IndicatorSetString()

2000-2015, MetaQuotes Software Corp.

1175

Operaes de Grficos

ChartIndicatorsTotal
Retorna o nmero de todos indicadores utilizados para a janela do grfico especificado
int ChartIndicatorsTotal(
long chart_id,

// ID grfico

int

// numero de sub-janelas

sub_window

);

Parmetros
chart_id
[in] ID Grfico. 0 (zero) indica a sub-janela grfico principal.
sub_window
[in] Nmero de sub-janela do grfico. 0 (zero) indica o sub-janela grfico principal.
Valor do Retorno
O nmero de indicadores na janela de grfico especificado. Para obter detalhes do erro use a
funo GetLastError().
Observao
A funo permite uma buscar atravs de todos os indicadores anexados ao grfico. A funo
permite uma pesquisa atravs de todos os indicadores anexados ao grfico. O nmero de todas as
janelas do grfico pode ser obtido a partir da propriedade CHART_WINDOWS_TOTAL usando a
funo ChartGetInteger().
Tambm Veja
ChartIndicatorAdd(), ChartIndicatorDelete(), ChartIndicatorsTotal(), iCustom(), IndicatorCreate(),
IndicatorSetString()

2000-2015, MetaQuotes Software Corp.

1176

Operaes de Grficos

ChartWindowOnDropped
Retorna o nmero (ndice) da sub-janela do grfico, o Assessor Especialista (Expert Advisor) ou Script
foi derrubado. 0 (zero) significa a principal janela do grfico.
int ChartWindowOnDropped();

Valor do Retorno
Valor do tipo int.
Exemplo:
int myWindow=ChartWindowOnDropped();
int windowsTotal=ChartGetInteger(0,CHART_WINDOWS_TOTAL);
Print("Script executado na janela #"+myWindow+
". Total de janelas no grfico "+ChartSymbol()+":",windowsTotal);

Tambm Veja
ChartPriceOnDropped, ChartTimeOnDropped, ChartXOnDropped, ChartYOnDropped

2000-2015, MetaQuotes Software Corp.

1177

Operaes de Grficos

ChartPriceOnDropped
Retorna a coordenada de preo do ponto do grfico, o Assessor Especialista (Expert Advisor) ou Script
foi derrubado.
double ChartPriceOnDropped();

Valor do Retorno
Value of double type.
Exemplo:
double p=ChartPriceOnDropped();
Print("ChartPriceOnDropped() = ",p);

Tambm Veja
ChartXOnDropped, ChartYOnDropped

2000-2015, MetaQuotes Software Corp.

1178

Operaes de Grficos

ChartTimeOnDropped
Retorna a coordenada de tempo correspondente ao ponto do grfico, o Assessor Especialista (Expert
Advisor) ou Script foi derrubado.
datetime ChartTimeOnDropped();

Valor do Retorno
Valor tipo datetime.
Exemplo:
datetime t=ChartTimeOnDropped();
Print("Script foi lanado sobre "+t);

Tambm Veja
ChartXOnDropped, ChartYOnDropped

2000-2015, MetaQuotes Software Corp.

1179

Operaes de Grficos

ChartXOnDropped
Retorna a coordenada X do ponto do grfico, o Assessor Especialista (Expert Advisor) ou Script foi
derrubado.
int ChartXOnDropped();

Valor do Retorno
O valor da coordenada X.
Observao
Direo do eixo X a partir da esquerda para a direita.
Exemplo:
int X=ChartXOnDropped();
int Y=ChartYOnDropped();
Print("(X,Y) = ("+X+","+Y+")");

Tambm Veja
ChartWindowOnDropped, ChartPriceOnDropped, ChartTimeOnDropped

2000-2015, MetaQuotes Software Corp.

1180

Operaes de Grficos

ChartYOnDropped
Retorna a coordenada X do ponto do grfico, o Assessor Especialista (Expert Advisor) ou Script foi
derrubado.
int ChartYOnDropped();

Valor do Retorno
O valor da coordenada Y.
Observao
Direo do eixo Y a partir de cima para baixo.
Tambm Veja
ChartWindowOnDropped, ChartPriceOnDropped, ChartTimeOnDropped

2000-2015, MetaQuotes Software Corp.

1181

Operaes de Grficos

ChartSetSymbolPeriod
Modifica o valor do smbolo e um perodo do grfico especificado. A funo assncrona, ou seja,
envia o comando e no espera a concluso da execuo. O comando adicionado para plotar uma fila
de mensagens de grfico e ser executado aps o processamento de todos os comandos anteriores.
bool ChartSetSymbolPeriod(
long

chart_id,

// ID Grfico

string

symbol,

// Nome smbolo

ENUM_TIMEFRAMES period

// Perodo

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
symbol
[in] Simbolo do grfico. Valor NULL significa o smbolo grfico atual (Expert Advisor anexado)
period
[in] Perodo do Grfico (Prazo). Pode ser um dos valores de ENUM_TIMEFRAMES. 0 (zero) significa
o perodo do atual grfico.
Valor do Retorno
Retorna verdadeiro se o comando foi adicionado fila do grfico, caso contrrio ser falso. Para
obter uma informao sobre o erro, chamar a funo GetLastError().
Observao
O smbolo/perodo de mudana conduz r-inicializao do Expert Advisor, anexado a um grfico.
Tambm Veja
ChartSymbol, ChartPeriod

2000-2015, MetaQuotes Software Corp.

1182

Operaes de Grficos

ChartScreenShot
Providencia uma imagem do grfico de seu estado atual para um formato GIF, PNG ou BMP
dependendo da extenso especificada.
bool ChartScreenShot(
long

chart_id,

// ID Grfico

string

filename,

// Nome do Smbolo

int

width,

// Largura

int

height,

// Altura

ENUM_ALIGN_MODE align_mode=ALIGN_RIGHT

// Tipo de alinhamento

);

Parmetros
chart_id
[in] ID Grfico. Significa o grfico atual.
filename
[in] Nome do arquivo de imagem. No pode exceder 63 caracteres. Arquivos de captura de tela
so colocados no \Files diretrio.
width
[in] Captura de tela com largura em pixels.
height
[in] Captura de tela com altura em pixels.
align_mode=ALIGN_RIGHT
[in] Modo de sada de uma Captura de tela estreita. O valor da enumerao ENUM_ALIGN_MODE.
ALIGN_RIGHT significa alinhamento para a margem direita (a sada a partir do final). ALIGN_LEFT
significa justificar esquerda.
Valor do Retorno
Retorna true se bem sucedido, caso contrrio false.
Observao
Se voc precisa tomar uma captura de tela de um grfico a partir de uma determinada posio, em
primeiro lugar, necessrio posicionar o grfico usando a funo ChartNavigate(). Se o tamanho
horizontal da captura de tela menor do que a janela do grfico, ou a parte direita da janela do
grfico, ou a sua parte esquerda est de sada, depende das configuraes do align_mode.
Exemplo:

#property description "O Expert Advisor demonstra como criar uma srie de captura de tela atualizad
#property description

grfico usando a funo ChartScreenShot(). Por convenincia, o nome do arqui

#property description "mostrando sobre o grfico. A altura e a largura das imagens so definidas po
#define

WIDTH

#define

HEIGHT 600

800

// ChartScreenShot() para Chamar a largura da imagem


// ChartScreenShot() para Chamar a altura da imagem

2000-2015, MetaQuotes Software Corp.

1183

Operaes de Grficos
//--- parmetros de entrada
input int

pictures=5;

// O nmero de imagens em srie

int

mode=-1;

// -1 denota uma mudana para a borda direita do grfico, 1 para a es

int

bars_shift=300;// O nmero de barras de rolagem quando o grfico est usando ChartNa

//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
void OnInit()
{
//--- Desabilita grfico autoscroll
ChartSetInteger(0,CHART_AUTOSCROLL,false);
//--- Definir o deslocamento da borda direita do grfico
ChartSetInteger(0,CHART_SHIFT,true);
//--- Mostra uma castial (vela ou barra) do grfico
ChartSetInteger(0,CHART_MODE,CHART_CANDLES);
//--Print("Preparao do Expert Advisor est completada");
}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

//+------------------------------------------------------------------+
void OnTick()
{
//--}
//+------------------------------------------------------------------+
//| Funo ChartEvent

//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- Mostra o nome da funo, chamar tempo e identificador de evento
Print(__FUNCTION__,TimeCurrent(),"

id=",id,"

mode=",mode);

//--- Manipular o evento CHARTEVENT_CLICK ("Um clique do mouse sobre o grfico")


if(id==CHARTEVENT_CLICK)
{
//--- Deslocamento inicial para a borda do grfico
int pos=0;
//--- Operao com a borda esquerda do grfico
if(mode>0)
{
//--- Rolar o grfico para a borda esquerda
ChartNavigate(0,CHART_BEGIN,pos);
for(int i=0;i<pictures;i++)
{
//--- Preparar o texto para mostrar no grfico e um nome de arquivo

2000-2015, MetaQuotes Software Corp.

1184

Operaes de Grficos
string name="ChartScreenShot"+"CHART_BEGIN"+string(pos)+".gif";
//--- Mostrar o nome no grfico como um comentrio
Comment(name);

//--- Salvar a captura de tela do grfico em um arquivo no terminal_directory\MQL5\File


if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_LEFT))
Print("Ns salvamos a captura de tela ",name);
//--pos+=bars_shift;
//--- D tempo ao utilizador para olhar a nova parte nova do grfico
Sleep(3000);
//--- Rolar o grfico diante da atual posio do bars_shift bars para a direita
ChartNavigate(0,CHART_CURRENT_POS,bars_shift);
}
//--- Altere o modo para o oposto
mode*=-1;
}
else // Operao com a borda direita do grfico
{
//--- Rolar o grfico para a borda direita
ChartNavigate(0,CHART_END,pos);
for(int i=0;i<pictures;i++)
{
//--- Preparar o texto para mostrar no grfico e um nome de arquivo
string name="ChartScreenShot"+"CHART_END"+string(pos)+".gif";
//--- Mostrar o nome no grfico como um comentrio
Comment(name);

//--- Salvar a captura de tela do grfico em um arquivo no terminal_directory\MQL5\File


if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_RIGHT))
Print("Ns salvamos a captura de tela ",name);
//--pos+=bars_shift;
//--- D tempo ao utilizador para olhar a nova parte nova do grfico
Sleep(3000);
//--- Rolar o grfico diante da atual posio do bars_shift bars para a direita
ChartNavigate(0,CHART_CURRENT_POS,-bars_shift);
}
//--- Altere o modo para o oposto
mode*=-1;
}
}

// End of CHARTEVENT_CLICK event handling

//--- Fim do manipulador (handler) OnChartEvent()


}

Tambm Veja
ChartNavigate(), Recursos

2000-2015, MetaQuotes Software Corp.

1185

Funes de Negociao (Trade)

Funes de Negociao (Trade)


Este o grupo de funes destina-se gesto de atividades de negociao.
As funes de negociao podem ser usadas em Experts Advisors e scripts. Funes de negociao s
podem ser chamadas se as propriedades do Expert Advisor ou script estiverem habilitadas na sua
caixa de controle "Permitir negociao ao vivo".
Trading can be allowed or prohibited depending on various factors described in the Trade Permission
section.
Funo

Ao

OrderCalcMargin

Calcula a margem necessria para o tipo de


ordem especificado, na moeda de depsito

OrderCalcProfit

Calcula o lucro com base nos parmetros


passados, na moeda de depsito

OrderCheck

Verifica se h fundos suficientes para executar


a operao de negcio necessria.

OrderSend

Envia pedidos de negcios para um servidor

OrderSendAsync

De forma assncrona envia pedidos de


comrcio sem esperar a resposta da negociao
do servidor de negcio

PositionsTotal

Retorna o nmero de posies em aberto

PositionGetSymbol

Retorna o smbolo correspondente posio


aberta

PositionSelect

Escolhe
uma
posio
aberta
posteriormente trabalhar com ele

PositionGetDouble

Retorna a propriedade solicitado de uma


posio aberta (double)

PositionGetInteger

Retorna a propriedade solicitada uma posio


aberta (datetime ou int)

PositionGetString

Retorna a propriedade solicitada uma posio


aberta (string)

OrdersTotal

Retorna o nmero de ordens

OrderGetTicket

Devolver
o
bilhete
correspondente

OrderSelect

Seleciona uma ordem para posteriormente


trabalhar com ele

OrderGetDouble

Retorna a propriedade solicitada da ordem


(double)

OrderGetInteger

Retorna a propriedade solicitada da ordem


(datetime ou int)

2000-2015, MetaQuotes Software Corp.

de

uma

para

ordem

1186

Funes de Negociao (Trade)

OrderGetString

Retorna a propriedade solicitada da ordem


(string)

HistorySelect

Recupera o histrico de transaes e ordens


para o perodo do tempo de servidor
especificado

HistorySelectByPosition

Pedido de histrico de acordo com


identificador de posio especificada.

HistoryOrderSelect

Seleciona uma ordem no histrico


posteriormente trabalhar com ele

HistoryOrdersTotal

Retorna o nmero de pedidos no histrico

HistoryOrderGetTicket

Retornar bilhete ordem de


correspondente no histrico

HistoryOrderGetDouble

Retorna a propriedade solicitada de uma ordem


no histrico (double)

HistoryOrderGetInteger

Retorna a propriedade solicitada de uma ordem


no histrico (datetime ou int)

HistoryOrderGetString

Retorna a propriedade solicitada de uma ordem


no histrico (string)

HistoryDealSelect

Seleciona um negcio no histrico para


posterior chamada atravs de funes
apropriadas

HistoryDealsTotal

Retorna o nmero de ofertas no histrico

HistoryDealGetTicket

Devolve um bilhete de
correspondente no histrico

HistoryDealGetDouble

Retorna a propriedade solicitada de um acordo


no histrico (double)

HistoryDealGetInteger

Retorna a propriedade solicitada de um acordo


no histrico (datetime ou int)

HistoryDealGetString

Retorna a propriedade solicitada de uma


operao no histrico (string)

2000-2015, MetaQuotes Software Corp.

uma

uma

um

para

ordem

quantidade

1187

Funes de Negociao (Trade)

OrderCalcMargin
A funo calcula a margem necessria para o tipo de ordem especificado, na conta corrente, no
ambiente de mercado atual no tendo em conta os pedidos pendentes atuais e posies abertas. Ele
permite a avaliao da margem para a operao comercial prevista. O valor retornado na moeda da
conta.
bool OrderCalcMargin(
ENUM_ORDER_TYPE

action,

// tipo de ordem

string

symbol,

// nome do smbolo

double

volume,

// volume

double

price,

// preo aberto

double&

margin

// valor para a obteno do valor da margem

);

Parmetros
action
[in] O tipo de pedido, pode ser um dos valores da enumerao ENUM_ORDER_TYPE.
symbol
[in] Nome do ativo.
volume
[in] Volume das operaes de Negcios (comrcio).
price
[in] Preo de abertura.
margin
[out] A varivel, para o qual o valor da margem requerida ser escrito no caso da funo ser
executada com xito. O clculo realizado como se no houvesse ordens pendentes e posies
abertas na conta corrente. O valor da margem depende de muitos fatores, e pode variar em
diferentes ambientes de mercado.
Valor do Retorno
A funo retorna true em caso de sucesso, caso contrrio ela retorna false. A fim de obter
informaes sobre o erro, chamar a funo GetLastError().
Tambm Veja
OrderSend(), Order Properties, Tipos de Operaes de Negociao (Trade)

2000-2015, MetaQuotes Software Corp.

1188

Funes de Negociao (Trade)

OrderCalcProfit
A funo calcula o lucro para a conta corrente, nas atuais condies de mercado, baseado nos
parmetros passados. A funo usado para a pr-avaliao do resultado de uma operao de negcio
(comrcio). O valor retornado na moeda da conta.
bool OrderCalcProfit(
ENUM_ORDER_TYPE

action,

// tipo da ordem (ORDER_TYPE_BUY ou ORDER_TYPE_SELL)

string

symbol,

// nome do smbolo

double

volume,

// volume

double

price_open,

// preo de abertura

double

price_close,

// preo de fechamento

double&

profit

// varivel para a obteno do valor de lucro

);

Parmetros
action
[in]
Tipo de ordem, pode um dos dois valores da enumerao ENUM_ORDER_TYPE:
ORDER_TYPE_BUY ou ORDER_TYPE_SELL.
symbol
[in] Nome do ativo.
volume
[in] Volume das operaes de Negcios (comrcio).
price_open
[in] Preo de abertura.
price_close
[in] Preo de fechamento.
profit
[out] A varivel, para o qual o valor calculado do lucro ser escrito, em caso da funo ser
executada com sucesso. O valor do lucro estimado depende de muitos fatores, e pode variar em
diferentes ambientes de mercado.
Valor do Retorno
A funo retorna true em caso de sucesso, caso contrrio ela retorna false. Se um tipo de ordem
invlida for especificada, a funo retornar falsa. Na ordem para obter informaes sobre o erro,
chamar GetLastError().
Tambm Veja
OrderSend(), Order Properties, Tipos de Operaes de Negociao (Trade)

2000-2015, MetaQuotes Software Corp.

1189

Funes de Negociao (Trade)

OrderCheck
A funo OrderCheck() verifica se h dinheiro suficiente para executar uma operao de comrcio
necessria. Os resultados da verificao so colocadas para os campos da estrutura
MqlTradeCheckResult.
bool OrderCheck(
MqlTradeRequest&

request,

MqlTradeCheckResult& result

// estrutura solicitada
// resultado da estrutura

);

Parmetros
request
[in] Ponteiro para a estrutura do tipo MqlTradeRequest que descreve a ao de comrcio
requerida.
result
[in,out] Ponteiro para a estrutura do tipo MqlTradeCheckResult, em que o resultado da verificao
ser colocada.
Valor do Retorno
Se os fundos no so suficientes para a operao, ou os parmetros so preenchidos
incorretamente, a funo retorna falsa. Em caso de sucesso na verificao bsica de estruturas
(verifique os ponteiros), ele retorna verdadeira. No entanto, isto no uma indicao de que a
operao comercial solicitada, deixe de ser executado com sucesso. Para uma descrio mais
detalhada do resultado da execuo da funo, analise os campos do resultado da estrutura.
A fim de obter informaes sobre o erro, chamar a funo GetLastError().
Tambm Veja
OrderSend(), Tipos de operaes de negociao, Pedido de Estrutura de Comrcio, Estrutura do
Pedido pelos resultados, Estrutura de um Pedido do resultado de negociao

2000-2015, MetaQuotes Software Corp.

1190

Funes de Negociao (Trade)

OrderSend
O OrderSend() funo usada para a execuo de operaes de negociao enviando solicitaes para
um servidor de negcio.
bool OrderSend(
MqlTradeRequest& request,

// estrutura de consulta

MqlTradeResult& result

// estrutura da resposta

);

Parmetros
request
[in] Ponteiro para uma estrutura de tipo MqlTradeRequest descrever a atividade de negociao do
cliente.
result
[in,out] Ponteiro para uma estrutura do tipo MqlTradeResultdescrevendo o resultado da operao
comercial, no caso de uma realizao bem sucedida (se verdadeiro retornado).
Valor do Retorno
Em caso de sucesso na verificao bsica de estruturas (verificao do ndice) retorna verdadeiro.
No entanto, este no um sinal de sucesso com execuo de uma operao de negcio
(comrcio). Para uma descrio mais detalhada do resultado da execuo da funo, analisar os
domnios da estrutura de resultado.
Observao
Os pedidos de negociao passar por vrias etapas de verificao de um servidor de negcio.
Primeiro de tudo, ele verifica se todos os campos obrigatrios dos parmetros de solicitao esto
preenchidos corretamente. Se no houver erros nesta guia, voc pode iniciar o programa no
terminal cliente. Se o pedido for aceito com sucesso pelo servidor de negociao, o OrderSend()
retorna verdadeiro.
Recomenda-se verificar o pedido antes de envi-lo para um servidor de negociao. Para verificar
os pedidos, use a funo OrderCheck(). Ele verifica se h fundos suficientes para executar a
operao de negcio (comrcio), e retorna muitos parmetros teis nos resultados da verificao do
pedido de negcio:
cdigo de retorno contm informaes sobre erros no pedido verificado;
Valor de saldo aps a execuo da operao de negociao;
valor de eqidade que ir aparecer aps a operao comercial executado;
valor de ponto flutuante que ir aparecer aps a operao de negcio for executado;
Margem requerida para a operao de negociao;
quantidade de capital livre que permanecer aps a execuo da operao de negcio;
o nvel da margem que ser definido aps a operao de negcio for executado;
Comentrio sobre o cdigo da resposta, descrio do erro.
Refira-se que a concluso bem sucedida do mtodo de operao OrderSend() nem sempre significa
uma concluso de negcio bem sucedido ao colocar uma ordem de mercado. Verifica o valor do
retcode contendo cdigo de retorno do servidor de negociao , e valores de operao ou campo de
ordem dependendo sobre o tipo de operao no resultado retornado.

2000-2015, MetaQuotes Software Corp.

1191

Funes de Negociao (Trade)


Cada pedido aceito armazenado no servidor de negcio esperando o processamento at que ocorre
uma das condies para a sua execuo:
expirao,
aparecimento de uma solicitao oposta,
execuo da ordem, quando o preo de execuo aparece,
uma solicitao para cancelar a ordem recebido.
No momento do processamento da ordem, o servidor de negcios envia ao terminal uma mensagem
sobre a ocorrncia do evento Trade (evento de negociao), que pode ser processado pela funo
OnTrade().
O resultado da execuo do pedido de negcio sobre o servidor enviado pela funo OrderSend()
pode ser controlada pelo handler (Manipulador) OnTradeTransaction. Deve ser observado que o
handler (manipulador) OnTradeTransaction ser chamado vrias vezes durante a execuo de um
pedido de negcio.
Por exemplo, ao enviar uma ordem de compra de mercado, ela tratada, uma ordem de compra
apropriada criada para a conta, a ordem ento executada e removida da lista de ordens em
aberto, e ento ela adicionada ao histrico de ordens, uma apropriada operao (deal)
adicionada ao histrico e uma nova posio criada. Funo OnTradeTransaction ser chamado
para cada um desses eventos.
Exemplo:
//--- valor para ORDER_MAGIC
input long order_magic=55555;
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Ter a certeza que uma conta demonstrao
if(AccountInfoInteger(ACCOUNT_TRADE_MODE)==ACCOUNT_TRADE_MODE_REAL)
{
Alert("Operao de script no permitido em uma conta real!");
return;
}
//--- Colocar ou deletar uma ordem
if(GetOrdersTotalByMagic(order_magic)==0)
{
//--- No ordens atuais - colocar uma ordem
uint res=SendRandomPendingOrder(order_magic);
Print("Retorna cdigo do servidor de comrcio ",res);
}
else // existem ordens - deletar ordens
{
DeleteAllOrdersByMagic(order_magic);
}
//--}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1192

Funes de Negociao (Trade)


//| Receber o nmero das atuais ordens atuais com especificao

//+------------------------------------------------------------------+
int GetOrdersTotalByMagic(long const magic_number)
{
ulong order_ticket;
int total=0;
//--- passar por todas as ordens pendentes
for(int i=0;i<OrdersTotal();i++)
if((order_ticket=OrderGetTicket(i))>0)
if(magic_number==OrderGetInteger(ORDER_MAGIC)) total++;
//--return(total);
}
//+------------------------------------------------------------------+
//| Deletar todas as ordens pendentes com especificao ORDER_MAGIC

//+------------------------------------------------------------------+
void DeleteAllOrdersByMagic(long const magic_number)
{
ulong order_ticket;
//--- passar por todas as ordens pendentes
for(int i=OrdersTotal()-1;i>=0;i--)
if((order_ticket=OrderGetTicket(i))>0)
//--- ordem com apropriado ORDER_MAGIC
if(magic_number==OrderGetInteger(ORDER_MAGIC))
{
MqlTradeResult result={0};
MqlTradeRequest request={0};
request.order=order_ticket;
request.action=TRADE_ACTION_REMOVE;
OrderSend(request,result);
//--- escrever a resposta do servidor para log
Print(__FUNCTION__,": ",result.comment," reply code ",result.retcode);
}
//--}
//+------------------------------------------------------------------+
//| Definir uma ordem pendente de maneira aleatria

//+------------------------------------------------------------------+
uint SendRandomPendingOrder(long const magic_number)
{
//--- preparar um pedido
MqlTradeRequest request={0};
request.action=TRADE_ACTION_PENDING;

// definio de uma ordem pendente

request.magic=magic_number;

// ORDER_MAGIC

request.symbol=_Symbol;

// smbolo

request.volume=0.1;

// volume em 0.1 lotes

request.sl=0;

// Stop Loss (Parar Perda) no especificado

request.tp=0;

// Take Profit (Tomar Lucro) no especificado

//--- formar o tipo de ordem

2000-2015, MetaQuotes Software Corp.

1193

Funes de Negociao (Trade)


request.type=GetRandomType();

// tipo de ordem

//--- formar o preo para uma ordem pendente


request.price=GetRandomPrice(request.type);

// preo de abertura

//--- enviar um pedido de negcio (comrcio)


MqlTradeResult result={0};
OrderSend(request,result);
//--- escrever resposta do servido para log
Print(__FUNCTION__,":",result.comment);
if(result.retcode==10016) Print(result.bid,result.ask,result.price);
//--- cdigo de retorno da resposta do servidor de negcio (comrcio)
return result.retcode;
}
//+------------------------------------------------------------------+
//| tipo de retorno de uma ordem pendente de maneira aleatria

//+------------------------------------------------------------------+
ENUM_ORDER_TYPE GetRandomType()
{
int t=MathRand()%4;
//---

0<=t<4

switch(t)
{
case(0):return(ORDER_TYPE_BUY_LIMIT);
case(1):return(ORDER_TYPE_SELL_LIMIT);
case(2):return(ORDER_TYPE_BUY_STOP);
case(3):return(ORDER_TYPE_SELL_STOP);
}
//--- valor incorreto
return(WRONG_VALUE);
}
//+------------------------------------------------------------------+
//|

retorno do preo de forma aleatria

//+------------------------------------------------------------------+
double GetRandomPrice(ENUM_ORDER_TYPE type)
{
int t=(int)type;
//--- nveis de stop (parar) para smbolo
int distance=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);
//--- receber dados do ltimo tick (ponto)
MqlTick last_tick={0};
SymbolInfoTick(_Symbol,last_tick);
//--- calcular o preo de acordo com o tipo
double price;
if(t==2 || t==5) // ORDER_TYPE_BUY_LIMIT ou ORDER_TYPE_SELL_STOP
{
price=last_tick.bid; // divergir do preo de compra
price=price-(distance+(MathRand()%10)*5)*_Point;
}
else

// ORDER_TYPE_SELL_LIMIT ou ORDER_TYPE_BUY_STOP

2000-2015, MetaQuotes Software Corp.

1194

Funes de Negociao (Trade)


price=last_tick.ask; // divergir do preo de venda
price=price+(distance+(MathRand()%10)*5)*_Point;
}
//--return(price);
}

Tambm Veja
Tipos de Operao de Negociao, Estrutura de Solicitao de Negociao, Estrutura de Solicitao
de Verificao de Resultados, Estrutura de uma Solicitao de Resultado de Negociao

2000-2015, MetaQuotes Software Corp.

1195

Funes de Negociao (Trade)

OrderSendAsync
A funo OrderSendAsync() usada para a realizao de operaes de negcio assncronos sem
esperar a resposta do servidor de negcio a um pedido enviado. A funo projetado para negociao
de alta freqncia, quando, nos termos do algoritmo de negociao inaceitvel perder tempo
espera de uma resposta do servidor.
bool OrderSendAsync(
MqlTradeRequest& request,

// Estrutura solicitada

MqlTradeResult& result

// Resultado da estrutura

);

Parmetros
request
[in] Um ponteiro para uma estrutura do tipo MqlTradeRequestque descreve a ao comercial do
cliente.
result
[in,out] Ponteiro para uma estrutura do tipo MqlTradeResultdescrevendo o resultado da operao
comercial, no caso de uma realizao bem sucedida (se verdadeiro retornado).
Valor do Retorno
Retorna verdadeiro se o pedido enviado para um servidor de negcio. No caso de o pedido no for
enviado, ele retorna falsa. No caso de o pedido enviado, na varivel resultado o cdigo de
resposta contm o valor TRADE_RETCODE_PLACED (cdigo 10008) "order placed". Execuo bem
sucedida significa que apenas o fato de enviar, mas no d qualquer garantia de que o pedido
chegou ao servidor de comrcio e foi aceito para processamento. Ao processar o pedido recebido,
um servidor de de negcio envia uma resposta a um terminal do cliente notificando a alterao no
estado atual de posies, ordens e promoes, o que leva gerao do evento de negociao.
O resultado da execuo do pedido de negcio sobre o servidor enviado pela funo OrderSend()
pode ser controlada pelo handler (Manipulador) OnTradeTransaction. Deve ser observado que o
handler (manipulador) OnTradeTransaction ser chamado vrias vezes durante a execuo de um
pedido de negcio.
Por exemplo, ao enviar uma ordem de compra de mercado, ela tratada, uma ordem de compra
apropriada criada para a conta, a ordem ento executada e removida da lista de ordens em
aberto, e ento ela adicionada ao histrico de ordens, uma apropriada operao (deal)
adicionada ao histrico e uma nova posio criada. Funo OnTradeTransaction ser chamado
para cada um desses eventos. Para obter alguns desses dados, os parmetros da funo deve ser
analisada:
trans - este parmetro obtm a estrutura MqlTradeTransaction descrevendo uma transao de
negociao aplicada a uma conta de negcio.
request - este parmetro recebe estruturaMqlTradeRequest descrevendo o pedido de negcio
resultou em uma transao comercial.
result - este parmetro obtm a estrutura MqlTradeResult descrevendo o resultado da execuo de
uma solicitao de negociao.
Observao
Em termos de objetivos e parmetros, a funo semelhante ao OrderSend(), mas ao contrrio, ela

2000-2015, MetaQuotes Software Corp.

1196

Funes de Negociao (Trade)


assncrona, isto , no se sustenta o funcionamento do programa enquanto aguarda o resultado da
execuo da funo. Voc pode comparar a taxa de operaes de comrcio destas duas funes,
utilizando a amostra Expert Advisor.
Exemplo:
#property description "Expert Advisor for sending trade requests "
" using OrderSendAsync() function.\r\n"
#property description "Handling trading events using"
" OnTrade() and OnTradeTransaction() handler functions is displayed\r\n"
#property description "Expert Advisor parameters allow setting Magic Number"
" (unique ID) "

#property description "and the mode of displaying messages in Experts log. All details are displaye
//--- parmetros de entrada
input int

MagicNumber=1234567;

// Expert Advisor ID

input bool DescriptionModeFull=true; // Modo de sada detalhada


//--- chamada de varivel para uso em HistorySelect()
datetime history_start;
//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--- verificar se negociao automtica (autotrading) permitido
if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
{
Alert("Autotrading in the terminal is disabled, Expert Advisor will be removed.");
ExpertRemove();
return(-1);
}
//--- inabilitada a negociao com uma conta real
if(AccountInfoInteger(ACCOUNT_TRADE_MODE)==ACCOUNT_TRADE_MODE_REAL)
{
Alert("Expert Advisor cannot trade on a real account!");
ExpertRemove();
return(-2);
}

//--- verificar se possvel negociar com esta conta (por exemplo, a negociao impossvel quand
if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED))
{
Alert("Trading on this account is disabled");
ExpertRemove();
return(-3);
}
//--- economizar o tempo do lanamento do Expert Advisor para receber histrico de negociao
history_start=TimeCurrent();
//--CreateBuySellButtons();
return(INIT_SUCCEEDED);

2000-2015, MetaQuotes Software Corp.

1197

Funes de Negociao (Trade)


}
//+------------------------------------------------------------------+
//| Funo de Desinicializao do Expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- deletar todos os grficos objetos
ObjectDelete(0,"Buy");
ObjectDelete(0,"Sell");
//--}
//+------------------------------------------------------------------+
//| Funo TradeTransaction

//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
//--- ttulo nomeado aps negociao da funo handler do evento
Print("=> ",__FUNCTION__," at ",TimeToString(TimeCurrent(),TIME_SECONDS));
//--- receber tipo de transao como valor de enumerao
ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- se a transao o resultado da solicitao de manipulao
if(type==TRADE_TRANSACTION_REQUEST)
{
//--- visualizar nome da transao
Print(EnumToString(type));
//--- em seguida visualizar a descrio do string do pedido tratado
Print("------------RequestDescription\r\n",
RequestDescription(request,DescriptionModeFull));
//--- e mostrar descrio do resultado requisitado
Print("------------ ResultDescription\r\n",
TradeResultDescription(result,DescriptionModeFull));
}
else // visualizar a descrio completa da transao para as transaes de outro tipo
{
Print("------------ TransactionDescription\r\n",
TransactionDescription(trans,DescriptionModeFull));
}
//--}
//+------------------------------------------------------------------+
//| Funo Trade

//+------------------------------------------------------------------+
void OnTrade()
{
//--- membros estticos para o armazenamento de negociao do status da conta
static int prev_positions=0,prev_orders=0,prev_deals=0,prev_history_orders=0;
//--- histrico de negociao do pedido

2000-2015, MetaQuotes Software Corp.

1198

Funes de Negociao (Trade)


bool update=HistorySelect(history_start,TimeCurrent());
PrintFormat("HistorySelect(%s , %s) = %s",
TimeToString(history_start),TimeToString(TimeCurrent()),(string)update);
//--- ttulo nomeado aps negociao da funo handler do evento
Print("=> ",__FUNCTION__," at ",TimeToString(TimeCurrent(),TIME_SECONDS));
//--- exibir o nome do handler (manipulador) e o nmero de ordens no momento da manipulao
int curr_positions=PositionsTotal();
int curr_orders=OrdersTotal();
int curr_deals=HistoryOrdersTotal();
int curr_history_orders=HistoryDealsTotal();
//--- exibir o nmero de ordens, as posies, promoes e alteraes em parnteses
PrintFormat("PositionsTotal() = %d (%+d)",
curr_positions,(curr_positions-prev_positions));
PrintFormat("OrdersTotal() = %d (%+d)",
curr_orders,curr_orders-prev_orders);
PrintFormat("HistoryOrdersTotal() = %d (%+d)",
curr_deals,curr_deals-prev_deals);
PrintFormat("HistoryDealsTotal() = %d (%+d)",
curr_history_orders,curr_history_orders-prev_history_orders);
//--- Inserir uma quebra de string para ver o log mais adequado
Print("");
//--- salvar o status da conta
prev_positions=curr_positions;
prev_orders=curr_orders;
prev_deals=curr_deals;
prev_history_orders=curr_history_orders;
//--}
//+------------------------------------------------------------------+
//| Funo ChartEvent

//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- manipulao do evento CHARTEVENT_CLICK ("Clicando no grfico")
if(id==CHARTEVENT_OBJECT_CLICK)
{
Print("=> ",__FUNCTION__,": sparam = ",sparam);
//--- volume mnimo de um negcio
double volume_min=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
//--- Se o boto "Comprar" pressionado, ento comprar
if(sparam=="Buy")
{
PrintFormat("Buy %s %G lot",_Symbol,volume_min);
BuyAsync(volume_min);
//--- desfazer pressionando o boto
ObjectSetInteger(0,"Buy",OBJPROP_STATE,false);

2000-2015, MetaQuotes Software Corp.

1199

Funes de Negociao (Trade)


}
//--- Se o boto "Vender" pressionado, ento vender
if(sparam=="Sell")
{
PrintFormat("Sell %s %G lot",_Symbol,volume_min);
SellAsync(volume_min);
//--- desfazer pressionando o boto
ObjectSetInteger(0,"Sell",OBJPROP_STATE,false);
}
ChartRedraw();
}
//--}
//+------------------------------------------------------------------+
//| Retorna o texto de descrio de uma transao

//+------------------------------------------------------------------+
string TransactionDescription(const MqlTradeTransaction &trans,
const bool detailed=true)
{
//--- preparar uma string para o retorno a partir da funo
string desc=EnumToString(trans.type)+"\r\n";
//--- todos os dados possveis adicionado em modo detalhado
if(detailed)
{
desc+="Ativo: "+trans.symbol+"\r\n";
desc+="Bilhetagem (ticket) da operao: "+(string)trans.deal+"\r\n";
desc+="Tipo de operao: "+EnumToString(trans.deal_type)+"\r\n";
desc+="Bilhetagem (ticket) da ordem: "+(string)trans.order+"\r\n";
desc+="Tipo de ordem: "+EnumToString(trans.order_type)+"\r\n";
desc+="Estado da ordem: "+EnumToString(trans.order_state)+"\r\n";
desc+="Ordem do tipo time: "+EnumToString(trans.time_type)+"\r\n";
desc+="Expirao da ordem: "+TimeToString(trans.time_expiration)+"\r\n";
desc+="Preo: "+StringFormat("%G",trans.price)+"\r\n";
desc+="Gatilho do preo: "+StringFormat("%G",trans.price_trigger)+"\r\n";
desc+="Stop Loss: "+StringFormat("%G",trans.price_sl)+"\r\n";
desc+="Take Profit: "+StringFormat("%G",trans.price_tp)+"\r\n";
desc+="Volume: "+StringFormat("%G",trans.volume)+"\r\n";
}
//--- retornar a string recebida
return desc;
}
//+--------------------------------------------------------------------+
//|Retorne o texto de descrio do resultado da manipulao de pedido|
//+--------------------------------------------------------------------+
string RequestDescription(const MqlTradeRequest &request,
const bool detailed=true)
{
//--- preparar uma string para o retorno a partir da funo
string desc=EnumToString(request.action)+"\r\n";

2000-2015, MetaQuotes Software Corp.

1200

Funes de Negociao (Trade)


//--- adicionar todos os dados disponveis em modo detalhado
if(detailed)
{
desc+="Ativo: "+request.symbol+"\r\n";
desc+="Nmero mgico: "+StringFormat("%d",request.magic)+"\r\n";
desc+="Bilhetagem (ticket) da ordem: "+(string)request.order+"\r\n";
desc+="Tipo de ordem: "+EnumToString(request.type)+"\r\n";
desc+="Preenchimento da ordem: "+EnumToString(request.type_filling)+"\r\n";
desc+="Ordem do tipo time: "+EnumToString(request.type_time)+"\r\n";
desc+="Expirao da ordem: "+TimeToString(request.expiration)+"\r\n";
desc+="Preo: "+StringFormat("%G",request.price)+"\r\n";
desc+="Pontos de desvio: "+StringFormat("%G",request.deviation)+"\r\n";
desc+="Stop Loss: "+StringFormat("%G",request.sl)+"\r\n";
desc+="Take Profit: "+StringFormat("%G",request.tp)+"\r\n";
desc+="Stop Limit: "+StringFormat("%G",request.stoplimit)+"\r\n";
desc+="Volume: "+StringFormat("%G",request.volume)+"\r\n";
desc+="Comentrio: "+request.comment+"\r\n";
}
//--- retornar string recebida
return desc;
}
//+--------------------------------------------------------------------+
//|Retorne o texto de descrio do resultado da manipulao de pedido|
//+--------------------------------------------------------------------+
string TradeResultDescription(const MqlTradeResult &result,
const bool detailed=true)
{
//--- preparar a string para o retorno a partir da funo
string desc="Retcode "+(string)result.retcode+"\r\n";
//--- adicionar todos os dados disponveis em modo detalhado
if(detailed)
{
desc+="ID da Solicitao: "+StringFormat("%d",result.request_id)+"\r\n";
desc+="Bilhetagem (ticket) da ordem: "+(string)result.order+"\r\n";
desc+="Bilhetagem (ticket) da operao: "+(string)result.deal+"\r\n";
desc+="Volume: "+StringFormat("%G",result.volume)+"\r\n";
desc+="Preo: "+StringFormat("%G",result.price)+"\r\n";
desc+="Compra (Ask): "+StringFormat("%G",result.ask)+"\r\n";
desc+="Venda (Bid): "+StringFormat("%G",result.bid)+"\r\n";
desc+="Comentrio: "+result.comment+"\r\n";
}
//--- retornar string recebida
return desc;
}
//+------------------------------------------------------------------+
//| Criar dois botes de compra e venda

//+------------------------------------------------------------------+
void CreateBuySellButtons()
{

2000-2015, MetaQuotes Software Corp.

1201

Funes de Negociao (Trade)


//--- checar a presena do objeto chamado "Buy" (comprar)
if(ObjectFind(0,"Buy")>=0)
{
//--- se o objeto encontrado no um boto, deletar-lo
if(ObjectGetInteger(0,"Buy",OBJPROP_TYPE)!=OBJ_BUTTON)
ObjectDelete(0,"Buy");
}
else
ObjectCreate(0,"Buy",OBJ_BUTTON,0,0,0); // criar boto "Buy" (comprar)
//--- configurar boto "Buy" (comprar)
ObjectSetInteger(0,"Buy",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
ObjectSetInteger(0,"Buy",OBJPROP_XDISTANCE,100);
ObjectSetInteger(0,"Buy",OBJPROP_YDISTANCE,50);
ObjectSetInteger(0,"Buy",OBJPROP_XSIZE,70);
ObjectSetInteger(0,"Buy",OBJPROP_YSIZE,30);
ObjectSetString(0,"Buy",OBJPROP_TEXT,"Buy");
ObjectSetInteger(0,"Buy",OBJPROP_COLOR,clrRed);
//--- checar a presena do objeto chamado "Sell" (comprar)
if(ObjectFind(0,"Sell")>=0)
{
//--- se o objeto encontrado no um boto, deletar-lo
if(ObjectGetInteger(0,"Sell",OBJPROP_TYPE)!=OBJ_BUTTON)
ObjectDelete(0,"Sell");
}
else
ObjectCreate(0,"Sell",OBJ_BUTTON,0,0,0); // criar boto "Sell" (vender)
//--- configurar boto "Sell" (comprar)
ObjectSetInteger(0,"Sell",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
ObjectSetInteger(0,"Sell",OBJPROP_XDISTANCE,100);
ObjectSetInteger(0,"Sell",OBJPROP_YDISTANCE,100);
ObjectSetInteger(0,"Sell",OBJPROP_XSIZE,70);
ObjectSetInteger(0,"Sell",OBJPROP_YSIZE,30);
ObjectSetString(0,"Sell",OBJPROP_TEXT,"Sell");
ObjectSetInteger(0,"Sell",OBJPROP_COLOR,clrBlue);
//--- realizar atualizao forada do grfico para ver imediatamente os botes
ChartRedraw();
//--}
//+------------------------------------------------------------------+
//| Comprar usando a funo OrderSendAsync() assncrona

//+------------------------------------------------------------------+
void BuyAsync(double volume)
{
//--- preparar o pedido
MqlTradeRequest req={0};
req.action

=TRADE_ACTION_DEAL;

req.symbol

=_Symbol;

req.magic

=MagicNumber;

req.volume

=0.1;

2000-2015, MetaQuotes Software Corp.

1202

Funes de Negociao (Trade)


req.type

=ORDER_TYPE_BUY;

req.price

=SymbolInfoDouble(req.symbol,SYMBOL_ASK);

req.deviation

=10;

req.comment

="Comprar usando OrderSendAsync()";

MqlTradeResult

res={0};

if(!OrderSendAsync(req,res))
{
Print(__FUNCTION__,": erro ",GetLastError(),", retcode = ",res.retcode);
}
//--}
//+------------------------------------------------------------------+
//| Vender usando a funo OrderSendAsync() assncrona

//+------------------------------------------------------------------+
void SellAsync(double volume)
{
//--- preparar o pedido
MqlTradeRequest req={0};
req.action

=TRADE_ACTION_DEAL;

req.symbol

=_Symbol;

req.magic

=MagicNumber;

req.volume

=0.1;

req.type

=ORDER_TYPE_SELL;

req.price

=SymbolInfoDouble(req.symbol,SYMBOL_BID);

req.deviation

=10;

req.comment

="Vende usando OrderSendAsync()";

MqlTradeResult

res={0};

if(!OrderSendAsync(req,res))
{
Print(__FUNCTION__,": erro ",GetLastError(),", retcode = ",res.retcode);
}
//--}
//+------------------------------------------------------------------+

Exemplo de exibio de mensagens em log "Experts":


12:52:52

ExpertAdvisor (EURUSD,H1)

=> OnChartEvent: sparam = Sell

12:52:52

ExpertAdvisor (EURUSD,H1)

Sell EURUSD 0.01 lot

12:52:52

ExpertAdvisor (EURUSD,H1)

=> OnTradeTransaction at 09:52:53

12:52:52

ExpertAdvisor (EURUSD,H1)

TRADE_TRANSACTION_REQUEST

12:52:52

ExpertAdvisor (EURUSD,H1)

------------RequestDescription

12:52:52

ExpertAdvisor (EURUSD,H1)

TRADE_ACTION_DEAL

12:52:52

ExpertAdvisor (EURUSD,H1)

Symbol: EURUSD

12:52:52

ExpertAdvisor (EURUSD,H1)

Magic Number: 1234567

12:52:52

ExpertAdvisor (EURUSD,H1)

Order ticket: 16361998

12:52:52

ExpertAdvisor (EURUSD,H1)

Order type: ORDER_TYPE_SELL

12:52:52

ExpertAdvisor (EURUSD,H1)

Order filling: ORDER_FILLING_FOK

12:52:52

ExpertAdvisor (EURUSD,H1)

Order time type: ORDER_TIME_GTC

2000-2015, MetaQuotes Software Corp.

1203

Funes de Negociao (Trade)


12:52:52

ExpertAdvisor (EURUSD,H1)

Order expiration: 1970.01.01 00:00

12:52:52

ExpertAdvisor (EURUSD,H1)

Price: 1.29313

12:52:52

ExpertAdvisor (EURUSD,H1)

Deviation points: 10

12:52:52

ExpertAdvisor (EURUSD,H1)

Stop Loss: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Take Profit: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Stop Limit: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Volume: 0.1

12:52:52

ExpertAdvisor (EURUSD,H1)

Comment: Sell using OrderSendAsync()

12:52:52

ExpertAdvisor (EURUSD,H1)

12:52:52

ExpertAdvisor (EURUSD,H1)

------------ ResultDescription

12:52:52

ExpertAdvisor (EURUSD,H1)

Retcode 10009

12:52:52

ExpertAdvisor (EURUSD,H1)

Request ID: 2

12:52:52

ExpertAdvisor (EURUSD,H1)

Order ticket: 16361998

12:52:52

ExpertAdvisor (EURUSD,H1)

Deal ticket: 15048668

12:52:52

ExpertAdvisor (EURUSD,H1)

Volume: 0.1

12:52:52

ExpertAdvisor (EURUSD,H1)

Price: 1.29313

12:52:52

ExpertAdvisor (EURUSD,H1)

Ask: 1.29319

12:52:52

ExpertAdvisor (EURUSD,H1)

Bid: 1.29313

12:52:52

ExpertAdvisor (EURUSD,H1)

Comment:

12:52:52

ExpertAdvisor (EURUSD,H1)

12:52:52

ExpertAdvisor (EURUSD,H1)

HistorySelect( 09:34 , 09:52) = true

12:52:52

ExpertAdvisor (EURUSD,H1)

=> OnTrade at 09:52:53

12:52:52

ExpertAdvisor (EURUSD,H1)

PositionsTotal() = 1 (+1)

12:52:52

ExpertAdvisor (EURUSD,H1)

OrdersTotal() = 0 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

HistoryOrdersTotal() = 2 (+2)

12:52:52

ExpertAdvisor (EURUSD,H1)

HistoryDealsTotal() = 2 (+2)

12:52:52

ExpertAdvisor (EURUSD,H1)

12:52:52

ExpertAdvisor (EURUSD,H1)

=> OnTradeTransaction at 09:52:53

12:52:52

ExpertAdvisor (EURUSD,H1)

------------ TransactionDescription

12:52:52

ExpertAdvisor (EURUSD,H1)

TRADE_TRANSACTION_ORDER_ADD

12:52:52

ExpertAdvisor (EURUSD,H1)

Symbol: EURUSD

12:52:52

ExpertAdvisor (EURUSD,H1)

Deal ticket: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Deal type: DEAL_TYPE_BUY

12:52:52

ExpertAdvisor (EURUSD,H1)

Order ticket: 16361998

12:52:52

ExpertAdvisor (EURUSD,H1)

Order type: ORDER_TYPE_SELL

12:52:52

ExpertAdvisor (EURUSD,H1)

Order state: ORDER_STATE_STARTED

12:52:52

ExpertAdvisor (EURUSD,H1)

Order time type: ORDER_TIME_GTC

12:52:52

ExpertAdvisor (EURUSD,H1)

Order expiration: 1970.01.01 00:00

12:52:52

ExpertAdvisor (EURUSD,H1)

Price: 1.29313

12:52:52

ExpertAdvisor (EURUSD,H1)

Price trigger: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Stop Loss: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Take Profit: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Volume: 0.1

12:52:52

ExpertAdvisor (EURUSD,H1)

12:52:52

ExpertAdvisor (EURUSD,H1)

=> OnTradeTransaction at 09:52:53

12:52:52

ExpertAdvisor (EURUSD,H1)

------------ TransactionDescription

12:52:52

ExpertAdvisor (EURUSD,H1)

TRADE_TRANSACTION_ORDER_DELETE

12:52:52

ExpertAdvisor (EURUSD,H1)

Symbol: EURUSD

12:52:52

ExpertAdvisor (EURUSD,H1)

Deal ticket: 0

2000-2015, MetaQuotes Software Corp.

1204

Funes de Negociao (Trade)


12:52:52

ExpertAdvisor (EURUSD,H1)

Deal type: DEAL_TYPE_BUY

12:52:52

ExpertAdvisor (EURUSD,H1)

Order ticket: 16361998

12:52:52

ExpertAdvisor (EURUSD,H1)

Order type: ORDER_TYPE_SELL

12:52:52

ExpertAdvisor (EURUSD,H1)

Order state: ORDER_STATE_STARTED

12:52:52

ExpertAdvisor (EURUSD,H1)

Order time type: ORDER_TIME_GTC

12:52:52

ExpertAdvisor (EURUSD,H1)

Order expiration: 1970.01.01 00:00

12:52:52

ExpertAdvisor (EURUSD,H1)

Price: 1.29313

12:52:52

ExpertAdvisor (EURUSD,H1)

Price trigger: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Stop Loss: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Take Profit: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Volume: 0.1

12:52:52

ExpertAdvisor (EURUSD,H1)

12:52:52

ExpertAdvisor (EURUSD,H1)

HistorySelect( 09:34 , 09:52) = true

12:52:52

ExpertAdvisor (EURUSD,H1)

=> OnTrade at 09:52:53

12:52:52

ExpertAdvisor (EURUSD,H1)

PositionsTotal() = 1 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

OrdersTotal() = 0 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

HistoryOrdersTotal() = 2 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

HistoryDealsTotal() = 2 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

12:52:52

ExpertAdvisor (EURUSD,H1)

=> OnTradeTransaction at 09:52:53

12:52:52

ExpertAdvisor (EURUSD,H1)

------------ TransactionDescription

12:52:52

ExpertAdvisor (EURUSD,H1)

TRADE_TRANSACTION_HISTORY_ADD

12:52:52

ExpertAdvisor (EURUSD,H1)

Symbol: EURUSD

12:52:52

ExpertAdvisor (EURUSD,H1)

Deal ticket: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Deal type: DEAL_TYPE_BUY

12:52:52

ExpertAdvisor (EURUSD,H1)

Order ticket: 16361998

12:52:52

ExpertAdvisor (EURUSD,H1)

Order type: ORDER_TYPE_SELL

12:52:52

ExpertAdvisor (EURUSD,H1)

Order state: ORDER_STATE_FILLED

12:52:52

ExpertAdvisor (EURUSD,H1)

Order time type: ORDER_TIME_GTC

12:52:52

ExpertAdvisor (EURUSD,H1)

Order expiration: 1970.01.01 00:00

12:52:52

ExpertAdvisor (EURUSD,H1)

Price: 1.29313

12:52:52

ExpertAdvisor (EURUSD,H1)

Price trigger: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Stop Loss: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Take Profit: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Volume: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

12:52:52

ExpertAdvisor (EURUSD,H1)

HistorySelect( 09:34 , 09:52) = true

12:52:52

ExpertAdvisor (EURUSD,H1)

=> OnTrade at 09:52:53

12:52:52

ExpertAdvisor (EURUSD,H1)

PositionsTotal() = 1 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

OrdersTotal() = 0 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

HistoryOrdersTotal() = 2 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

HistoryDealsTotal() = 2 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

12:52:52

ExpertAdvisor (EURUSD,H1)

=> OnTradeTransaction at 09:52:53

12:52:52

ExpertAdvisor (EURUSD,H1)

------------ TransactionDescription

12:52:52

ExpertAdvisor (EURUSD,H1)

TRADE_TRANSACTION_DEAL_ADD

12:52:52

ExpertAdvisor (EURUSD,H1)

Symbol: EURUSD

12:52:52

ExpertAdvisor (EURUSD,H1)

Deal ticket: 15048668

12:52:52

ExpertAdvisor (EURUSD,H1)

Deal type: DEAL_TYPE_SELL

2000-2015, MetaQuotes Software Corp.

1205

Funes de Negociao (Trade)


12:52:52

ExpertAdvisor (EURUSD,H1)

Order ticket: 16361998

12:52:52

ExpertAdvisor (EURUSD,H1)

Order type: ORDER_TYPE_BUY

12:52:52

ExpertAdvisor (EURUSD,H1)

Order state: ORDER_STATE_STARTED

12:52:52

ExpertAdvisor (EURUSD,H1)

Order time type: ORDER_TIME_GTC

12:52:52

ExpertAdvisor (EURUSD,H1)

Order expiration: 1970.01.01 00:00

12:52:52

ExpertAdvisor (EURUSD,H1)

Price: 1.29313

12:52:52

ExpertAdvisor (EURUSD,H1)

Price trigger: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Stop Loss: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Take Profit: 0

12:52:52

ExpertAdvisor (EURUSD,H1)

Volume: 0.1

12:52:52

ExpertAdvisor (EURUSD,H1)

12:52:52

ExpertAdvisor (EURUSD,H1)

HistorySelect( 09:34 , 09:52) = true

12:52:52

ExpertAdvisor (EURUSD,H1)

=> OnTrade at 09:52:53

12:52:52

ExpertAdvisor (EURUSD,H1)

PositionsTotal() = 1 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

OrdersTotal() = 0 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

HistoryOrdersTotal() = 2 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

HistoryDealsTotal() = 2 (+0)

12:52:52

ExpertAdvisor (EURUSD,H1)

2000-2015, MetaQuotes Software Corp.

1206

Funes de Negociao (Trade)

PositionsTotal
Retorna o nmero de posies em aberto.
int PositionsTotal();

Valor do Retorno
Valor do tipo int.
Observao
Para cada smbolo, em qualquer dado momento do tempo, apenas uma posio pode ser aberto, que
o resultado de um ou mais acordos. No confunda atuais ordens pendentes com posies, que
tambm so exibidos na aba "negcios" da "caixa de ferramentas" do terminal do cliente.
O nmero total de posies sobre a conta de negcios no pode exceder totalmente o numero de
instrumentos financeiros.
Tambm Veja
PositionGetSymbol(), PositionSelect(), Propriedades de uma Posio

2000-2015, MetaQuotes Software Corp.

1207

Funes de Negociao (Trade)

PositionGetSymbol
Retorna o smbolo correspondente para a posio aberta e seleciona automaticamente a posio para
posteriormente trabalhar com ele usando as funes PositionGetDouble, PositionGetInteger,
PositionGetString.
string PositionGetSymbol(
int index

// Nmero na lista de posies

);

Parmetros
index
[in] Nmero de posio na lista de posies abertas.
Valor do Retorno
Valor do tipo string. Se a posio no foi encontrada, uma string vazia ser retornada. Para obter
um cdigo de erro, chamar a funo GetLastError().
Observao
Para cada smbolo, em qualquer dado momento do tempo, apenas uma posio pode ser aberto, que
o resultado de um ou mais acordos. No confunda atuais ordens pendentes com posies, que
tambm so exibidos na aba "negcios" da "caixa de ferramentas" do terminal do cliente.
O nmero total de posies sobre a conta de negcios no pode exceder totalmente o numero de
instrumentos financeiros.
Tambm Veja
PositionsTotal(), PositionSelect(), Propriedades de uma Posio

2000-2015, MetaQuotes Software Corp.

1208

Funes de Negociao (Trade)

PositionSelect
Escolhe uma posio aberta para posteriormente trabalhar com ele. Retorna true se a funo for
concluda com xito. Retorna false em caso de falha. Para obter informaes sobre o erro,
chameGetLastError().
bool PositionSelect(
string symbol

// Nome Simbolo

);

Parmetros
symbol
[in] Nome da segurana financeira.
Valor do Retorno
Valor do tipo bool.
Observao
Para cada smbolo, em qualquer dado momento do tempo, apenas uma posio pode ser aberto, que
o resultado de um ou mais acordos. No confunda as posies com os pedidos pendentes, atuais,
que tambm so exibidos na aba "negcios" da "caixa de ferramentas" do terminal do cliente.
A funo PositionSelect() copia os dados sobre a posio para o ambiente do programa, bem como
outras chamadas de PositionGetDouble(), PositionGetInteger() e PositionGetString() retornar os
dados copiados anteriormente. Isto significa que a posio em si j no podem existir (ou o
volume, orientao, etc mudou), mas ainda podem ser obtidos dados desta posio. Para garantir o
recebimento de novos dados sobre a posio, recomendado chamar PositionSelect() logo antes
referindo-se a eles.
Tambm Veja
PositionGetSymbol(), PositionsTotal(), Propriedades de uma Posio

2000-2015, MetaQuotes Software Corp.

1209

Funes de Negociao (Trade)

PositionGetDouble
A funo retorna a propriedade solicitada de uma posio aberta, pr-selecionado usando
PositionGetSymbol ou PositionSelect. A propriedade de negcio deve ser do tipo double. Existem 2
variantes da funo.
1. Imediatamente retorna o valor da propriedade.
double PositionGetDouble(
ENUM_POSITION_PROPERTY_DOUBLE property_id

// Identificador de propriedade

);

2. Retorna true ou false dependendo do sucesso da execuo da funo. Se for bem sucedido, o valor
da propriedade colocada em uma varivel de recebimento passada por referncia no ltimo
parmetro.
bool PositionGetDouble(
ENUM_POSITION_PROPERTY_DOUBLE property_id,

// Identificador de propriedade

double&

// Aqui ns aceitamos o valor da propriedade

double_var

);

Parmetros
property_id
[in] Identificador de uma propriedade de operao. O valor pode ser um dos valores da
enumerao ENUM_POSITION_PROPERTY_DOUBLE.
double_var
[out] Varivel de tipo double, que aceita o valor da propriedade requerida.
Valor do Retorno
Valor do tipo double. Se a funo falhar, ser retornado 0.
Observao
Para cada smbolo, em qualquer dado momento do tempo, apenas uma posio pode ser aberto, que
o resultado de um ou mais acordos. No confunda as posies com os pedidos pendentes, atuais,
que tambm so exibidos na aba "negcios" da "caixa de ferramentas" do terminal do cliente.
Para garantir o recebimento de novos dados sobre a posio, recomendado chamar
PositionSelect() logo antes referindo-se a eles.
Tambm Veja
PositionGetSymbol(), PositionSelect(), Propriedades de uma Posio

2000-2015, MetaQuotes Software Corp.

1210

Funes de Negociao (Trade)

PositionGetInteger
A funo retorna a propriedade solicitada de uma posio aberta, pr-selecionado usando
PositionGetSymbol ou PositionSelect. A propriedade de operao deve ser de tipo datetime, int.
Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
long PositionGetInteger(
ENUM_POSITION_PROPERTY_INTEGER property_id

// Identificador de propriedade

);

2. Retorna true ou false dependendo do sucesso da execuo da funo. Se for bem sucedido, o valor
da propriedade colocada em uma varivel de recebimento passada por referncia no ltimo
parmetro.
bool PositionGetInteger(
ENUM_POSITION_PROPERTY_INTEGER property_id,

// Identificador de propriedade

long&

// Aqui ns aceitamos o valor da propriedade

long_var

);

Parmetros
property_id
[in] Identificador de uma propriedade de operao. O valor pode ser um dos valores de
enumerao ENUM_POSITION_PROPERTY_INTEGER.
long_var
[out] Varivel de tipo double, que aceita o valor da propriedade requerida.
Valor do Retorno
Valor do tipo long. Se a funo falhar, ser retornado 0.
Observao
Para cada smbolo, em qualquer dado momento do tempo, apenas uma posio pode ser aberto, que
o resultado de um ou mais acordos. No confunda as posies com os pedidos pendentes, atuais,
que tambm so exibidos na aba "negcios" da "caixa de ferramentas" do terminal do cliente.
Para garantir o recebimento de novos dados sobre a posio, recomendado chamar
PositionSelect() logo antes referindo-se a eles.
Exemplo:
//+------------------------------------------------------------------+
//| Funo Trade

//+------------------------------------------------------------------+
void OnTrade()
{
//--- verificar se a posio est presente e exibir a hora de sua mudana
if(PositionSelect(_Symbol))
{
receber ID posio para trabalhos futuros

2000-2015, MetaQuotes Software Corp.

1211

Funes de Negociao (Trade)


ulong position_ID=PositionGetInteger(POSITION_IDENTIFIER);
Print(_Symbol," posio #",position_ID);
//--- receber o tempo de posio formando em milissegundos desde 01.01.1970
long create_time_msc=PositionGetInteger(POSITION_TIME_MSC);
PrintFormat("Posio #%d

POSITION_TIME_MSC = %i64 milissegundos => %s",position_ID,

create_time_msc,TimeToString(create_time_msc/1000));
//--- receber o tempo da ltima alterao da posio em segundos desde 01.01.1970
long update_time_sec=PositionGetInteger(POSITION_TIME_UPDATE);
PrintFormat("Posio #%d

POSITION_TIME_UPDATE = %i64 segundos => %s",

position_ID,update_time_sec,TimeToString(update_time_sec));
//--- receber o tempo da ltima alterao da posio em milissegundos desde 01.01.1970
long update_time_msc=PositionGetInteger(POSITION_TIME_UPDATE_MSC);
PrintFormat("Posio #%d

POSITION_TIME_UPDATE_MSC = %i64 milissegundos => %s",

position_ID,update_time_msc,TimeToString(update_time_msc/1000));
}
//--}

Tambm Veja
PositionGetSymbol(), PositionSelect(), Propriedades de uma Posio

2000-2015, MetaQuotes Software Corp.

1212

Funes de Negociao (Trade)

PositionGetString
A funo retorna a propriedade solicitada de uma posio aberta, pr-selecionado usando
PositionGetSymbol ou PositionSelect. A propriedade de negcio deve ser do tipo string. Existem 2
variantes da funo.
1. Imediatamente retorna o valor da propriedade.
string PositionGetString(
ENUM_POSITION_PROPERTY_STRING property_id

// Identificador de propriedade

);

2. Retorna true ou false dependendo do sucesso da execuo da funo. Se for bem sucedido, o valor
da propriedade colocada em uma varivel de recebimento passada por referncia no ltimo
parmetro.
bool PositionGetString(
ENUM_POSITION_PROPERTY_STRING property_id,

// Identificador de propriedade

string&

// Aqui ns aceitamos o valor de propriedade

string_var

);

Parmetros
property_id
[in] Identificador de uma propriedade de operao. O valor pode ser um dos valores da
enumerao ENUM_POSITION_PROPERTY_STRING.
string_var
[out] Varivel de tipo string, que aceita o valor da propriedade requerida.
Valor do Retorno
Valor do tipo string. Se a funo falhar, uma string vazia retornada.
Observao
Para cada smbolo, em qualquer dado momento do tempo, apenas uma posio pode ser aberto, que
o resultado de um ou mais acordos. No confunda as posies com os pedidos pendentes, atuais,
que tambm so exibidos na aba "negcios" da "caixa de ferramentas" do terminal do cliente.
Para garantir o recebimento de novos dados sobre a posio, recomendado chamar
PositionSelect() logo antes referindo-se a eles.
Tambm Veja
PositionGetSymbol(), PositionSelect(), Propriedades de uma Posio

2000-2015, MetaQuotes Software Corp.

1213

Funes de Negociao (Trade)

OrdersTotal
Retorna o nmero de ordens.
int OrdersTotal();

Valor do Retorno
Valor do tipo double.
Observao
No confunda atuais ordens pendentes com posies, que tambm so exibidos na aba "negcios" da
"caixa de ferramentas" do terminal do cliente. Uma ordem um pedido para conduzir a transao,
enquanto que uma posio um resultado de um ou mais negcios.
Para cada smbolo, em qualquer dado momento do tempo, apenas uma posio pode ser aberto, que
o resultado de um ou mais acordos.
Tambm Veja
OrderSelect(), OrderGetTicket(), Propriedades de uma Ordem

2000-2015, MetaQuotes Software Corp.

1214

Funes de Negociao (Trade)

OrderGetTicket
Retorna o ticket de uma ordem correspondente, selecionando automaticamente a ordem para
trabalhos posteriores usando funes.
ulong OrderGetTicket(
int index

// Nmero na lista de posies

);

Parmetros
index
[in] Nmero de ordem na lista de ordens atuais.
Valor do Retorno
Valor do tipo ulong. Se a funo falhar, ser retornado 0.
Observao
No confunda atuais ordens pendentes com posies, que tambm so exibidos na aba "negcios" da
"caixa de ferramentas" do terminal do cliente. Uma ordem um pedido para conduzir a transao,
enquanto que uma posio um resultado de um ou mais negcios.
Para cada smbolo, em qualquer dado momento do tempo, apenas uma posio pode ser aberto, que
o resultado de um ou mais acordos.
OrderGetTicket() funo copia os dados sobre uma ordem para o ambiente do programa, e
posteriormente chamadas de OrderGetDouble(), OrderGetInteger(), OrderGetString() retornar os
dados copiados anteriormente. Isto significa que a prpria ordem pode j no existir (ou seu preo
de abertura, Stop Loss/Take Profit, nveis de lucro ou expirao mudou), mas ainda podem ser
obtidos dados dessa ordem. Para garantir o recebimento de novos dados sobre a posio,
recomendado chamar PositionSelect() logo antes referindo-se a eles.
Exemplo:
void OnStart()
{
//--- variveis para retornar valores das propriedades de ordem
ulong

ticket;

double

open_price;

double

initial_volume;

datetime time_setup;
string

symbol;

string

type;

long

order_magic;

long

positionID;

//--- Numero de ordens atuais pendentes


uint

total=OrdersTotal();

//--- passar por ordens em um loop


for(uint i=0;i<total;i++)
{
//--- voltar ticket ordem por sua posio na lista

2000-2015, MetaQuotes Software Corp.

1215

Funes de Negociao (Trade)


if((ticket=OrderGetTicket(i))>0)
{
//--- retorna propriedades de uma Ordem
open_price

=OrderGetDouble(ORDER_PRICE_OPEN);

time_setup

=(datetime)OrderGetInteger(ORDER_TIME_SETUP);

symbol

=OrderGetString(ORDER_SYMBOL);

order_magic

=OrderGetInteger(ORDER_MAGIC);

positionID

=OrderGetInteger(ORDER_POSITION_ID);

initial_volume=OrderGetDouble(ORDER_VOLUME_INITIAL);
type

=EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE)));

//--- preparar e apresentar informaes sobre a ordem


printf("#ticket %d %s %G %s em %G foi criado em %s",
ticket,

// ticket de ordem

type,

// tipo

initial_volume,

// volume colocado

symbol,

// simbolo

open_price,

// preo de abertura especificada

TimeToString(time_setup)// tempo de colocar a ordem


);
}
}
//--}

Tambm Veja
OrdersTotal(), OrderSelect(), OrderGetInteger()

2000-2015, MetaQuotes Software Corp.

1216

Funes de Negociao (Trade)

OrderSelect
Seleciona uma ordem para trabalhar. Retorna verdadeiro se a funo tenha sido concluda com xito.
Retorna false se a concluso funo falhou. Para mais informaes sobre um erro, chame
GetLastError().
bool OrderSelect(
ulong

ticket

// Ticket de ordem

);

Parmetros
ticket
[in] Ticket de ordem.
Valor do Retorno
Valor do tipo bool.
Observao
No confunda atuais ordens pendentes com posies, que tambm so exibidos na aba "negcios" da
"caixa de ferramentas" do terminal do cliente. Para cada smbolo, em qualquer dado momento do
tempo, apenas uma posio pode ser aberta, enquanto pode haver vrios pedidos pendentes para o
mesmo smbolo.
A funo OrderGetTicket() funo copia os dados sobre uma ordem para o ambiente do programa, e
posteriormente chamadas de OrderGetDouble(), OrderGetInteger(), OrderGetString() retornar os
dados copiados anteriormente. Isto significa que a prpria ordem pode j no existir (ou seu preo
de abertura, Stop Loss/Take Profit, nveis de lucro ou expirao mudou), mas ainda podem ser
obtidos dados dessa ordem. Para garantir o recebimento de novos dados sobre a posio,
recomendado chamar OrderSelect() logo antes referindo-se a eles.
Tambm Veja
OrderGetInteger(), OrderGetDouble(), OrderGetString(), OrderCalcProfit(), OrderGetTicket(),
Propriedades de uma Ordem

2000-2015, MetaQuotes Software Corp.

1217

Funes de Negociao (Trade)

OrderGetDouble
Retorna a propriedade solicitada de uma ordem, pr-selecionado usando OrderGetTicket ou
OrderSelect. A propriedade da ordem deve ser do tipo double. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
double OrderGetDouble(
ENUM_ORDER_PROPERTY_DOUBLE property_id

// Identificador de propriedade

);

2. Retorna true ou false, dependendo do sucesso na execuo da funo. Se for bem sucedido, o valor
da propriedade colocado em uma varivel alvo passado por referncia at ao ltimo parmetro.
bool OrderGetDouble(

ENUM_ORDER_PROPERTY_DOUBLE property_id,

// Identificador de propriedade

double&

// Aqui ns aceitamos o valor da propriedade

double_var

);

Parmetros
property_id
[in] Identificador da propriedade ordem. O valor pode ser um dos valores da enumerao
ENUM_ORDER_PROPERTY_DOUBLE.
double_var
[out] Varivel de tipo double, que aceita o valor da propriedade requerida.
Valor do Retorno
Valor do tipo double. Se a funo falhar, ser retornado 0.
Observao
No confunda atuais ordens pendentes com posies, que tambm so exibidos na aba "negcios" da
"caixa de ferramentas" do terminal do cliente. Para cada smbolo, em qualquer dado momento do
tempo, apenas uma posio pode ser aberta, enquanto pode haver vrios pedidos pendentes para o
mesmo smbolo.
Para garantir o recebimento de novos dados sobre a posio, recomendado chamar OrderSelect()
logo antes referindo-se a eles.
Tambm Veja
OrdersTotal(), OrderGetTicket(), Propriedades de uma Ordem

2000-2015, MetaQuotes Software Corp.

1218

Funes de Negociao (Trade)

OrderGetInteger
Retorna a propriedade solicitada de uma ordem, pr-selecionado usando OrderGetTicket ou
OrderSelect. Propriedade de uma Ordem deve ser da tipo datetime, int. Existem 2 variantes da
funo.
1. Imediatamente retorna o valor da propriedade.
long OrderGetInteger(
ENUM_ORDER_PROPERTY_INTEGER property_id

// Identificador de propriedade

);

2. Retorna true ou false dependendo do sucesso da funo. Se for bem sucedido, o valor da
propriedade est situada dentro de uma varivel de destino passado por referncia pelo ltimo
parmetro.
bool OrderGetInteger(
ENUM_ORDER_PROPERTY_INTEGER property_id,

// Identificador de propriedade

long&

// Aqui ns aceitamos o valor da propriedade

long_var

);

Parmetros
property_id
[in] Identificador da propriedade ordem. O valor pode ser um dos valores da enumerao
ENUM_ORDER_PROPERTY_INTEGER.
long_var
[out] Varivel do tipo long que aceita o valor da propriedade requerida.
Valor do Retorno
Valor do tipo long. Se a funo falhar, ser retornado 0.
Observao
No confunda atuais ordens pendentes com posies, que tambm so exibidos na aba "negcios" da
"caixa de ferramentas" do terminal do cliente. Para cada smbolo, em qualquer dado momento do
tempo, apenas uma posio pode ser aberta, enquanto pode haver vrios pedidos pendentes para o
mesmo smbolo.
Para garantir o recebimento de novos dados sobre a posio, recomendado chamar OrderSelect()
logo antes referindo-se a eles.
Tambm Veja
OrdersTotal(), OrderGetTicket(), Propriedades de uma Ordem

2000-2015, MetaQuotes Software Corp.

1219

Funes de Negociao (Trade)

OrderGetString
Retorna a propriedade solicitada de uma ordem, pr-selecionado usando OrderGetTicket ou
OrderSelect. A propriedade da ordem deve ser do tipo string. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
string OrderGetString(
ENUM_ORDER_PROPERTY_STRING property_id

// Identificador de propriedade

);

2. Retorna true ou false dependendo do sucesso da funo. Se for bem sucedido, o valor da
propriedade est situada dentro de uma varivel de destino passado por referncia pelo ltimo
parmetro.
bool OrderGetString(
ENUM_ORDER_PROPERTY_STRING property_id,

// Identificador de propriedade

string&

// Aqui ns aceitamos o valor de propriedade

string_var

);

Parmetros
property_id
[in] Identificador da propriedade ordem. O valor pode ser um dos valores da enumerao
ENUM_ORDER_PROPERTY_STRING.
string_var
[out] Varivel de tipo string que aceita o valor da propriedade requerida...
Valor do Retorno
Valor do tipo string.
Observao
No confunda atuais ordens pendentes com posies, que tambm so exibidos na aba "negcios" da
"caixa de ferramentas" do terminal do cliente. Para cada smbolo, em qualquer dado momento do
tempo, apenas uma posio pode ser aberta, enquanto pode haver vrios pedidos pendentes para o
mesmo smbolo.
Para garantir o recebimento de novos dados sobre a posio, recomendado chamar OrderSelect()
logo antes referindo-se a eles.
Tambm Veja
OrdersTotal(), OrderGetTicket(), Propriedades de uma Ordem

2000-2015, MetaQuotes Software Corp.

1220

Funes de Negociao (Trade)

HistorySelect
Recupera o histrico de transaes e ordens para o perodo do tempo de servidor especificado.
bool HistorySelect(
datetime from_date,

// a partir da data

datetime to_date

// at data

);

Parmetros
from_date
[in] Data de inicio do pedido.
to_date
[in] Data de trmino do pedido.
Valor do Retorno
Retorna verdadeiro true se bem sucedido, caso contrrio false.
Observao
HistorySelect() cria uma lista de pedidos e uma lista de comrcios em um programa de MQL5, para
posterior referindo-se aos elementos da lista usando as funes correspondentes. O tamanho da
lista de negcios pode ser devolvido atravs da funo HistoryDealsTotal() o tamanho da lista de
encomendas na histria pode ser obtida usando HistoryOrdersTotal(). Seleo na lista de pedidos
deve ser melhor realizado por HistoryOrderGetTicket(), para itens na lista de negcios
HistoryDealGetTicket() se encaixarem melhor.
Depois de usar HistoryOrderSelect(), a lista de pedidos de histria disponveis para o programa
MQL5 reposto e completada novamente pela ordem encontrada, se a busca de uma ordem do
ticket foi concluda com sucesso. O mesmo aplica-se lista de ofertas disponveis para o programa
MQL5 - reiniciado pelo HistoryDealSelect() e preenchido novamente no caso de uma recepo bem
sucedida de um negcio pelo nmero do ticket.
Exemplo:
void OnStart()
{
color BuyColor =clrBlue;
color SellColor=clrRed;
//--- histria do negcio pedido
HistorySelect(0,TimeCurrent());
//--- cria objetos
string

name;

uint

total=HistoryDealsTotal();

ulong

ticket=0;

double

price;

double

profit;

datetime time;
string

symbol;

long

type;

2000-2015, MetaQuotes Software Corp.

1221

Funes de Negociao (Trade)


long

entry;

//--- para todos os negcios


for(uint i=0;i<total;i++)
{
//--- tentar obter ticket negcios
if((ticket=HistoryDealGetTicket(i))>0)
{
//--- obter as propriedades negcios
price =HistoryDealGetDouble(ticket,DEAL_PRICE);
time

=(datetime)HistoryDealGetInteger(ticket,DEAL_TIME);

symbol=HistoryDealGetString(ticket,DEAL_SYMBOL);
type

=HistoryDealGetInteger(ticket,DEAL_TYPE);

entry =HistoryDealGetInteger(ticket,DEAL_ENTRY);
profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
//--- apenas para o smbolo atual
if(price && time && symbol==Symbol())
{
//--- cria o preo do objeto
name="TradeHistory_Deal_"+string(ticket);
if(entry) ObjectCreate(0,name,OBJ_ARROW_RIGHT_PRICE,0,time,price,0,0);
else

ObjectCreate(0,name,OBJ_ARROW_LEFT_PRICE,0,time,price,0,0);

//--- definir propriedades do objeto


ObjectSetInteger(0,name,OBJPROP_SELECTABLE,0);
ObjectSetInteger(0,name,OBJPROP_BACK,0);
ObjectSetInteger(0,name,OBJPROP_COLOR,type?BuyColor:SellColor);
if(profit!=0) ObjectSetString(0,name,OBJPROP_TEXT,"Profit: "+string(profit));
}
}
}
//--- aplicar no grfico
ChartRedraw();
}

Tambm Veja
HistoryOrderSelect(), HistoryDealSelect()

2000-2015, MetaQuotes Software Corp.

1222

Funes de Negociao (Trade)

HistorySelectByPosition
Recupera o histrico de transaes e ordens para o perodo do tempo de servidor especificado.
bool HistorySelectByPosition(
long position_id

// identificar posio - POSITION_IDENTIFIER

);

Parmetros
position_id
[in] Identificador de posio que est definido para cada ordem executada e cada negcio.
Valor do Retorno
Retorna verdadeiro true se bem sucedido, caso contrrio false.
Observao
No confundir ordens de um histrico de negociao com as ordens pendentes que aparecem no
separador "Comrcio (Trade) da barra de "caixa de ferramentas" (Toolbox). A lista de ordens que
foram cancelados ou levaram a uma transao, pode ser visto na aba "Histrico" da "caixa de
ferramentas" do terminal do cliente.
HistorySelectByPosition() cria em um programa MQL5 uma lista de pedidos e uma lista de ofertas
com um identificador de posio especificada para referncia futura para os elementos da lista,
utilizando as funes apropriadas. Para conhecer o tamanho da lista de promoes, utilizar a funo
HistoryDealsTotal(), o tamanho da lista de encomendas na histria pode ser obtida usando
HistoryOrdersTotal(). Para percorrer os elementos da lista de encomendas, utilize
HistoryOrderGetTicket(), para os elementos da lista de ordens - HistoryDealGetTicket().
Depois de usar HistoryOrderSelect(), a lista do histrico de pedidos disponveis para o programa
MQL5 reposto e completada novamente pela ordem encontrada, se a busca de uma ordem do
ticket foi concluda com sucesso. O mesmo refere-se lista de ofertas disponveis para o programa
MQL5 - reposto pela funo HistoryDealSelect() e preenchido novamente se um acordo foi
encontrado com sucesso pelo numero do ticket.
Tambm Veja
HistorySelect(), HistoryOrderGetTicket(), Propriedades de uma Ordem

2000-2015, MetaQuotes Software Corp.

1223

Funes de Negociao (Trade)

HistoryOrderSelect
Seleciona uma ordem a partir do histrico para posterior chamada atravs de funes apropriadas.
Retorna true se a funo tenha sido concluda com xito. Retorna false se a funo teve falha. Para
maiores detalhes sobre erro chamar GetLastError().
bool HistoryOrderSelect(
ulong ticket

// Ticket de ordem

);

Parmetros
ticket
[in] Ticket de ordem.
Valor do Retorno
Retorna true se bem sucedido, caso contrrio false.
Observao
No confundir ordens de um histrico de negociao com as ordens pendentes que aparecem no
separador "Comrcio (Trade) da barra de "caixa de ferramentas" (Toolbox). A lista de ordens que
foram cancelados ou levaram a uma transao, pode ser visto na aba "Histrico" da "caixa de
ferramentas" do terminal do cliente.
HistoryOrderSelect() limpa em um programa de MQL5 a lista de ordens a partir de um histrico,
disponvel para chamadas, e copia ele para uma nica ordem, se a execuo de HistoryOrderSelect()
foi concluda com xito. Se voc precisa passar por todas as negociaes selecionadas pelo
HistorySelect() , voc deve usar melhor o HistoryOrderGetTicket().
Tambm Veja
HistorySelect(), HistoryOrderGetTicket(), Propriedades de uma Ordem

2000-2015, MetaQuotes Software Corp.

1224

Funes de Negociao (Trade)

HistoryOrdersTotal
Retorna o nmero de ordens no histrico. Antes de chamar HistoryOrdersTotal(), primeiro
necessrio receber o histrico de negcios e ordens usando a funo HistorySelect() ou a funo
HistorySelectByPosition().
int HistoryOrdersTotal();

Valor do Retorno
Valor do tipo double.
Observao
No confundir ordens de um histrico de negociao com as ordens pendentes que aparecem no
separador "Comrcio (Trade) da barra de "caixa de ferramentas" (Toolbox). A lista de ordens que
foram cancelados ou levaram a uma transao, pode ser visto na aba "Histrico" da "caixa de
ferramentas" do terminal do cliente.
Tambm Veja
HistorySelect(), HistoryOrderSelect(), HistoryOrderGetTicket(), Propriedades de uma Ordem

2000-2015, MetaQuotes Software Corp.

1225

Funes de Negociao (Trade)

HistoryOrderGetTicket
Retornar o ticket de uma ordem correspondente no histrico. Antes de chamar HistoryDealGetTicket(),
primeiro necessrio receber o histrico de negcios e ordens utilizando a funo HistorySelect() ou a
funo HistorySelectByPosition().
ulong HistoryOrderGetTicket(
int index

// Nmero na lista de posies

);

Parmetros
index
[in] Nmero de ordens em uma lista de ordens.
Valor do Retorno
Valor do tipo ulong. Se a funo falhar, ser retornado 0.
Observao
No confundir ordens de um histrico de negociao com as ordens pendentes que aparecem no
separador "Comrcio (Trade) da barra de "caixa de ferramentas" (Toolbox). A lista de ordens que
foram cancelados ou levaram a uma transao, pode ser visto na aba "Histrico" da "caixa de
ferramentas" do terminal do cliente.
Exemplo:
void OnStart()
{
datetime from=0;
datetime to=TimeCurrent();
//--- solicitar todo o histrico
HistorySelect(from,to);
//--- variveis para retornar valores das propriedades de ordem
ulong

ticket;

double

open_price;

double

initial_volume;

datetime time_setup;
datetime time_done;
string

symbol;

string

type;

long

order_magic;

long

positionID;

//--- Numero de ordens atuais pendentes


uint

total=HistoryOrdersTotal();

//--- passar por ordens em um loop


for(uint i=0;i<total;i++)
{
//--- voltar ticket ordem por sua posio na lista
if((ticket=HistoryOrderGetTicket(i))>0)
{

2000-2015, MetaQuotes Software Corp.

1226

Funes de Negociao (Trade)


//--- retorna propriedades de uma Ordem
open_price=

HistoryOrderGetDouble(ticket,ORDER_PRICE_OPEN);

time_setup=

(datetime)HistoryOrderGetInteger(ticket,ORDER_TIME_SETUP);

time_done=

(datetime)HistoryOrderGetInteger(ticket,ORDER_TIME_DONE);

symbol=

HistoryOrderGetString(ticket,ORDER_SYMBOL);

order_magic=

HistoryOrderGetInteger(ticket,ORDER_MAGIC);

positionID =

HistoryOrderGetInteger(ticket,ORDER_POSITION_ID);

initial_volume=

HistoryOrderGetDouble(ticket,ORDER_VOLUME_INITIAL);

type=GetOrderType(HistoryOrderGetInteger(ticket,ORDER_TYPE));
//--- preparar e apresentar informaes sobre a ordem
printf("#ticket %d %s %G %s at %G foi criado em %s => feito em %s, pos ID=%d",
ticket,

// ticket de ordem

type,

// tipo

initial_volume,

// volume colocado

symbol,

// simbolo

open_price,

// preo de abertura especificado

TimeToString(time_setup),// tempo de colocar ordem


TimeToString(time_done), // tempo de deletar ou executar a ordem
positionID

// ID de uma posio, ao qual a quantidade de ordem de neg

);
}
}
//--}
//+------------------------------------------------------------------+
//| Retorna o nome string do tipo de ordem

//+------------------------------------------------------------------+
string GetOrderType(long type)
{
string str_type="unknown operation";
switch(type)
{
case (ORDER_TYPE_BUY):

return("compra");

case (ORDER_TYPE_SELL):

return("vender");

case (ORDER_TYPE_BUY_LIMIT):

return("buy limit");

case (ORDER_TYPE_SELL_LIMIT):

return("sell limit");

case (ORDER_TYPE_BUY_STOP):

return("buy stop");

case (ORDER_TYPE_SELL_STOP):

return("sell stop");

case (ORDER_TYPE_BUY_STOP_LIMIT): return("buy stop limit");


case (ORDER_TYPE_SELL_STOP_LIMIT):return("sell stop limit");
}
return(str_type);
}

Tambm Veja
HistorySelect(), HistoryOrdersTotal(), HistoryOrderSelect(), Propriedades de uma Ordem

2000-2015, MetaQuotes Software Corp.

1227

Funes de Negociao (Trade)

HistoryOrderGetDouble
Retorna a requisio de propriedade de ordem. A propriedade da ordem deve ser do tipo double.
Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
double HistoryOrderGetDouble(
ulong

ticket_number,

ENUM_ORDER_PROPERTY_DOUBLE property_id

// Ticket (bilhete)
// Identificador de propriedade

);

2. Retorna true ou false dependendo do sucesso da funo. Se for bem sucedido, o valor da
propriedade est situada dentro de uma varivel de destino passado por referncia pelo ltimo
parmetro.
bool HistoryOrderGetDouble(
ulong

ticket_number,

// Ticket (bilhete)

ENUM_ORDER_PROPERTY_DOUBLE property_id,

// Identificar propriedade

double&

// Aqui ns aceitamos o valor da propriedade

double_var

);

Parmetros
ticket_number
[in] Ticket de ordem.
property_id
[in] Identificador da propriedade ordem. O valor pode ser um dos valores da enumerao
ENUM_ORDER_PROPERTY_DOUBLE.
double_var
[out] Varivel de tipo double, que aceita o valor da propriedade requerida.
Valor do Retorno
Valor do tipo double.
Observao
No confundir ordens de um histrico de negociao com as ordens pendentes que aparecem no
separador "Comrcio (Trade) da barra de "caixa de ferramentas" (Toolbox). A lista de ordens que
foram cancelados ou levaram a uma transao, pode ser visto na aba "Histrico" da "caixa de
ferramentas" do terminal do cliente.
Tambm Veja
HistorySelect(), HistoryOrdersTotal(), HistoryOrderSelect(), Propriedades de uma Ordem

2000-2015, MetaQuotes Software Corp.

1228

Funes de Negociao (Trade)

HistoryOrderGetInteger
Retorna a propriedade solicitada de uma ordem. A propriedade de operao deve ser de tipo datetime,
int. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
long HistoryOrderGetInteger(
ulong

ticket_number,

ENUM_ORDER_PROPERTY_INTEGER property_id

// Ticket (bilhete)
// Identificador de propriedade

);

2. Retorna true ou false dependendo do sucesso da funo. Se for bem sucedido, o valor da
propriedade est situada dentro de uma varivel de destino passado por referncia pelo ltimo
parmetro.
bool HistoryOrderGetInteger(
ulong

ticket_number,

// Ticket (bilhete)

ENUM_ORDER_PROPERTY_INTEGER property_id,

// Identificador de propriedade

long&

// Aqui ns aceitamos o valor da propriedade

long_var

);

Parmetros
ticket_number
[in] Ticket de ordem.
property_id
[in] Identificador da propriedade ordem. O valor pode ser um dos valores da enumerao
ENUM_ORDER_PROPERTY_INTEGER.
long_var
[out] Varivel do tipo long que aceita o valor da propriedade requerida.
Valor do Retorno
Valor do tipo long.
Observao
No confundir ordens de um histrico de negociao com as ordens pendentes que aparecem no
separador "Comrcio (Trade) da barra de "caixa de ferramentas" (Toolbox). A lista de ordens que
foram cancelados ou levaram a uma transao, pode ser visto na aba "Histrico" da "caixa de
ferramentas" do terminal do cliente.
Exemplo:
//+------------------------------------------------------------------+
//| Funo Trade

//+------------------------------------------------------------------+
void OnTrade()
{
//--- receber ticket da ltima ordem do histrico comercial da semana
ulong last_order=GetLastOrderTicket();

2000-2015, MetaQuotes Software Corp.

1229

Funes de Negociao (Trade)


if(HistoryOrderSelect(last_order))
{
//--- tempo de colocar um ordem em milissegundos desde 01.01.1970
long time_setup_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_SETUP_MSC);
PrintFormat("Ordem #%d ORDER_TIME_SETUP_MSC=%i64 => %s",
last_order,time_setup_msc,TimeToString(time_setup_msc/1000));
//--- execuo/cancelamento de ordens em milissegundos desde 01.01.1970
long

time_done_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_DONE_MSC);

PrintFormat("Ordem #%d ORDER_TIME_DONE_MSC=%i64 => %s",


last_order,time_done_msc,TimeToString(time_done_msc/1000));
}
else // notificao sobre falha
PrintFormat("HistoryOrderSelect() falhou por #%d. Cdigo de erro=%d",
last_order,GetLastError());
//--}
//+------------------------------------------------------------------+
//| Retorna o ltimo ticket de ordem em histrico ou -1

//+------------------------------------------------------------------+
ulong GetLastOrderTicket()
{
requisita o histrico para os ltimos 7 dias
if(!GetTradeHistory(7))
{
//--- notificar sobre chamada sem sucesso e retorno -1
Print(__FUNCTION__," HistorySelect() retornou false");
return -1;
}
//--ulong first_order,last_order,orders=HistoryOrdersTotal();
//--- trabalhar com ordens se houver alguma
if(orders>0)
{
Print("Ordens = ",orders);
first_order=HistoryOrderGetTicket(0);
PrintFormat("first_order = %d",first_order);
if(orders>1)
{
last_order=HistoryOrderGetTicket((int)orders-1);
PrintFormat("last_order = %d",last_order);
return last_order;
}
return first_order;
}
//--- nenhuma ordem encontrada, retornar -1
return -1;
}
//+---------------------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1230

Funes de Negociao (Trade)


//| Solicitaes de histrico para os ltimos dias e retorna false em caso de falha|
//+---------------------------------------------------------------------------------+
bool GetTradeHistory(int days)
{
//--- define um perodo da semana para solicitar histrico da operao
datetime to=TimeCurrent();
datetime from=to-days*PeriodSeconds(PERIOD_D1);
ResetLastError();
//--- fazer um pedido e verificar o resultado
if(!HistorySelect(from,to))
{
Print(__FUNCTION__," HistorySelect=false. Cdigo de erro=",GetLastError());
return false;
}
//--- histrico recebido com sucesso
return true;
}

Tambm Veja
HistorySelect(), HistoryOrdersTotal(), HistoryOrderSelect(), Propriedades de uma Ordem

2000-2015, MetaQuotes Software Corp.

1231

Funes de Negociao (Trade)

HistoryOrderGetString
Retorna a propriedade solicitada de uma ordem. A propriedade da ordem deve ser do tipo string.
Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
string HistoryOrderGetString(
ulong

ticket_number,

ENUM_ORDER_PROPERTY_STRING property_id

// Ticket (bilhete)
// Identificador de propriedade

);

2. Retorna true ou false dependendo do sucesso da funo. Se for bem sucedido, o valor da
propriedade est situada dentro de uma varivel de destino passado por referncia pelo ltimo
parmetro.
bool HistoryOrderGetString(
ulong

ticket_number,

// Ticket (bilhete)

ENUM_ORDER_PROPERTY_STRING property_id,

// Identificador de propriedade

string&

// Aqui ns aceitamos o valor de propriedade

string_var

);

Parmetros
ticket_number
[in] Ticket de ordem.
property_id
[in] Identificador da propriedade ordem. O valor pode ser um dos valores da enumerao
ENUM_ORDER_PROPERTY_STRING.
string_var
[out] Varivel do tipo string.
Valor do Retorno
Valor do tipo string.
Observao
No confundir ordens de um histrico de negociao com as ordens pendentes que aparecem no
separador "Comrcio (Trade) da barra de "caixa de ferramentas" (Toolbox). A lista de ordens que
foram cancelados ou levaram a uma transao, pode ser visto na aba "Histrico" da "caixa de
ferramentas" do terminal do cliente.
Tambm Veja
HistorySelect(), HistoryOrdersTotal(), HistoryOrderSelect(), Propriedades de uma Ordem

2000-2015, MetaQuotes Software Corp.

1232

Funes de Negociao (Trade)

HistoryDealSelect
Seleciona um negcio no histrico para posterior chamada atravs de funes apropriadas. Retorna
true se a funo tenha sido concluda com xito. Retorna false se a funo teve falha. Para maiores
detalhes sobre erro chamar GetLastError().
bool HistoryDealSelect(
ulong ticket

// Ticket de negcio

);

Parmetros
ticket
[in] Ticket de operao.
Valor do Retorno
Retorna true se bem sucedido, caso contrrio false.
Observao
No confunda ordens, operaes e posies. Cada operao o resultado da execuo de uma
ordem, cada posio o resumo de um ou mais operaes.
HistoryDealSelect() limpa a lista de negcios disponveis para consulta em um programa-MQL5, e
copia um nico negcio, se a execuo de HistoryDealSelect() foi concluda com xito. Se voc
precisa passar por todos os negcios selecionados pela funo HistorySelect(), melhor voc usar
HistoryDealGetTicket().
Tambm Veja
HistorySelect(), HistoryDealGetTicket(), Propriedades de Negcio

2000-2015, MetaQuotes Software Corp.

1233

Funes de Negociao (Trade)

HistoryDealsTotal
Retorna o nmero de ordens no histrico. Retorna o nmero de negcio no histrico. Antes de chamar
HistoryDealsTotal(), primeiro necessrio receber o histrico de negcios e ordens utilizando a
funo HistorySelect() ou a funo HistorySelectByPosition().
int HistoryDealsTotal();

Valor do Retorno
Valor do tipo double.
Observao
No confunda ordens, operaes e posies. Cada operao o resultado da execuo de uma
ordem, cada posio o resumo de um ou mais operaes.
Tambm Veja
HistorySelect(), HistoryDealGetTicket(), Propriedades de Negcio

2000-2015, MetaQuotes Software Corp.

1234

Funes de Negociao (Trade)

HistoryDealGetTicket
A funo seleciona um negcio para processamento posterior e retorna o ticket de negcio na histria.
Antes de chamar HistoryDealGetTicket (), primeiro necessrio receber o histrico de negcios e
ordens utilizando a funo HistorySelect() ou a funo HistorySelectByPosition().
ulong HistoryDealGetTicket(
int index

// ticket de negcio

);

Parmetros
index
[in] Nmero de um negcio na lista de negociaes
Valor do Retorno
Valor do tipo ulong. Se a funo falhar, ser retornado 0.
Observao
No confunda ordens, operaes e posies. Cada operao o resultado da execuo de uma
ordem, cada posio o resumo de um ou mais operaes.
Exemplo:
void OnStart()
{
ulong deal_ticket;

// bilhetagem da operao (deal)

ulong order_ticket;

// ticket da ordem que o negcio foi executado em

datetime transaction_time;

// tempo de execuo de um negcio

long deal_type ;

// tipo de operao comercial

long position_ID;

// ID posio

string deal_description;

// descrio da operao

double volume;

// volume da operao

string symbol;

// ativo da negociao

//--- definir a data inicial e final para solicitar o histrico dos negcios
datetime from_date=0;

// desde o princpio

datetime to_date=TimeCurrent();//at o momento atual


//--- solicita o histrico das negociaes no perodo especificado
HistorySelect(from_date,to_date);
//--- nmero total na lista das negcios
int deals=HistoryDealsTotal();
//--- agora processar cada trade (negcio)
for(int i=0;i<deals;i++)
{
deal_ticket=

HistoryDealGetTicket(i);

volume=

HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);

transaction_time=(datetime)HistoryDealGetInteger(deal_ticket,DEAL_TIME);
order_ticket=

HistoryDealGetInteger(deal_ticket,DEAL_ORDER);

deal_type=

HistoryDealGetInteger(deal_ticket,DEAL_TYPE);

symbol=

HistoryDealGetString(deal_ticket,DEAL_SYMBOL);

2000-2015, MetaQuotes Software Corp.

1235

Funes de Negociao (Trade)


position_ID=

HistoryDealGetInteger(deal_ticket,DEAL_POSITION_ID);

deal_description=

GetDealDescription(deal_type,volume,symbol,order_ticket,position_I

//--- realizar uma boa formatao para o nmero de negcio


string print_index=StringFormat("% 3d",i);
//--- mostrar informaes sobre o negcio
Print(print_index+": deal #",deal_ticket," em ",transaction_time,deal_description);
}
}
//+------------------------------------------------------------------+
//| Retorna a descrio string da operao

//+------------------------------------------------------------------+
string GetDealDescription(long deal_type,double volume,string symbol,long ticket,long pos_ID)
{
string descr;
//--switch(deal_type)
{
case DEAL_TYPE_BALANCE:

return ("balance");

case DEAL_TYPE_CREDIT:

return ("credit");

case DEAL_TYPE_CHARGE:

return ("charge");

case DEAL_TYPE_CORRECTION:

return ("correo");

case DEAL_TYPE_BUY:

descr="compra"; break;

case DEAL_TYPE_SELL:

descr="vender"; break;

case DEAL_TYPE_BONUS:

return ("bonus");

case DEAL_TYPE_COMMISSION:

return ("comisso adicional");

case DEAL_TYPE_COMMISSION_DAILY:

return ("comisso diria");

case DEAL_TYPE_COMMISSION_MONTHLY:

return ("comisso mensal");

case DEAL_TYPE_COMMISSION_AGENT_DAILY:

return ("comisso de agente dirio");

case DEAL_TYPE_COMMISSION_AGENT_MONTHLY: return ("comisso de agente mensal");


case DEAL_TYPE_INTEREST:

return ("taxa de juros");

case DEAL_TYPE_BUY_CANCELED:

descr="cancelado comprar negcio"; break;

case DEAL_TYPE_SELL_CANCELED:

descr="cancelado vender negcio"; break;

}
descr=StringFormat("%s %G %s (ordem #%d, a posio ID %d)",
descr,

// descrio atual

volume, // volume de negcio


symbol, // ativo de negcio
ticket, // ticket da ordem que provocou o negcio
pos_ID

// ID de uma posio, na qual a negcio includo

);
return(descr);
//--}

Tambm Veja
HistorySelect(), HistoryDealsTotal(), HistoryDealSelect(), Propriedades de uma Operao

2000-2015, MetaQuotes Software Corp.

1236

Funes de Negociao (Trade)

HistoryDealGetDouble
Retorna a propriedade solicitada de uma operao. A propriedade de negcio deve ser do tipo double.
Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
double HistoryDealGetDouble(
ulong

ticket_number,

ENUM_DEAL_PROPERTY_DOUBLE property_id

// Ticket (bilhete)
// Identificador de propriedade

);

2. Retorna true ou false dependendo do sucesso da funo. Se for bem sucedido, o valor da
propriedade est situada dentro de uma varivel de destino passado por referncia pelo ltimo
parmetro.
bool HistoryDealGetDouble(
ulong

ticket_number,

// Ticket (bilhete)

ENUM_DEAL_PROPERTY_DOUBLE property_id,

// Identificador de propriedade

double&

// Aqui ns aceitamos o valor da propriedade

double_var

);

Parmetros
ticket_number
[in] Ticket de operao.
property_id
[in] Identificador de uma propriedade de operao. O valor pode ser um dos valores da
enumerao ENUM_DEAL_PROPERTY_DOUBLE.
double_var
[out] Varivel de tipo double, que aceita o valor da propriedade requerida.
Valor do Retorno
Valor do tipo double.
Observao
No confunda ordens, operaes e posies. Cada operao o resultado da execuo de uma
ordem, cada posio o resumo de um ou mais operaes.
Tambm Veja
HistorySelect(), HistoryDealsTotal(), HistoryDealSelect(), Propriedades de uma Operao

2000-2015, MetaQuotes Software Corp.

1237

Funes de Negociao (Trade)

HistoryDealGetInteger
Retorna a propriedade solicitada de uma operao. A propriedade de operao deve ser de tipo
datetime, int. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
long HistoryDealGetInteger(
ulong

ticket_number,

ENUM_DEAL_PROPERTY_INTEGER property_id

// Ticket (bilhete)
// Identificador de propriedade

);

2. Retorna true ou false dependendo do sucesso da funo. Se for bem sucedido, o valor da
propriedade est situada dentro de uma varivel de destino passado por referncia pelo ltimo
parmetro.
bool HistoryDealGetInteger(
ulong

ticket_number,

// Ticket (bilhete)

ENUM_DEAL_PROPERTY_INTEGER property_id,

// Identificador de propriedade

long&

// Aqui ns aceitamos o valor da propriedade

long_var

);

Parmetros
ticket_number
[in] Ticket (bilhete) de negcio.
property_id
[in] Identificador da propriedade de operao. O valor pode ser um dos valores da enumerao
ENUM_DEAL_PROPERTY_INTEGER.
long_var
[out] Varivel do tipo long que aceita o valor da propriedade requerida.
Valor do Retorno
Valor do tipo long.
Observao
No confunda ordens, operaes e posies. Cada operao o resultado da execuo de uma
ordem, cada posio o resumo de um ou mais operaes.
Exemplo:
//+------------------------------------------------------------------+
//| Funo Trade

//+------------------------------------------------------------------+
void OnTrade()
{
//--- receber ticket da ltima operao do histrico comercial da semana
ulong last_deal=GetLastDealTicket();
if(HistoryDealSelect(last_deal))

2000-2015, MetaQuotes Software Corp.

1238

Funes de Negociao (Trade)


{
//--- tempo de operaes executadas em milissegundos desde 01.01.1970
long deal_time_msc=HistoryDealGetInteger(last_deal,DEAL_TIME_MSC);
PrintFormat("Deal #%d DEAL_TIME_MSC=%i64 => %s",
last_deal,deal_time_msc,TimeToString(deal_time_msc/1000));
}
else
PrintFormat("HistoryDealSelect() falhou por #%d. Cdigo de erro=%d",
last_deal,GetLastError());
//--}
//+------------------------------------------------------------------+
//| Retorna o ltimo bilhete de operao no histrico ou -1

//+------------------------------------------------------------------+
ulong GetLastDealTicket()
{
requisita o histrico para os ltimos 7 dias
if(!GetTradeHistory(7))
{
//--- notificar sobre chamada sem sucesso e retorno -1
Print(__FUNCTION__," HistorySelect() retornou false");
return -1;
}
//--ulong first_deal,last_deal,deals=HistoryOrdersTotal();
//--- trabalhar com ordens se houver alguma
if(deals>0)
{
Print("Deals = ",deals);
first_deal=HistoryDealGetTicket(0);
PrintFormat("first_deal = %d",first_deal);
if(deals>1)
{
last_deal=HistoryDealGetTicket((int)deals-1);
PrintFormat("last_deal = %d",last_deal);
return last_deal;
}
return first_deal;
}
//--- nenhuma operao encontrada, retornar -1
return -1;
}
//+---------------------------------------------------------------------------------+
//| Solicitaes de histrico para os ltimos dias e retorna false em caso de falha|
//+---------------------------------------------------------------------------------+
bool GetTradeHistory(int days)
{
//--- define um perodo da semana para solicitar histrico da operao
datetime to=TimeCurrent();

2000-2015, MetaQuotes Software Corp.

1239

Funes de Negociao (Trade)


datetime from=to-days*PeriodSeconds(PERIOD_D1);
ResetLastError();
//--- fazer um pedido e verificar o resultado
if(!HistorySelect(from,to))
{
Print(__FUNCTION__," HistorySelect=false. Cdigo de erro=",GetLastError());
return false;
}
//--- histrico recebido com sucesso
return true;
}

Tambm Veja
HistorySelect(), HistoryDealsTotal(), HistoryDealSelect(), Propriedades de uma Operao

2000-2015, MetaQuotes Software Corp.

1240

Funes de Negociao (Trade)

HistoryDealGetString
Retorna a propriedade solicitada de uma operao. A propriedade de negcio deve ser do tipo string.
Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
string HistoryDealGetString(
ulong

ticket_number,

ENUM_DEAL_PROPERTY_STRING property_id

// Ticket (bilhete)
// Identificador de propriedade

);

2. Retorna true ou false dependendo do sucesso da funo. Se for bem sucedido, o valor da
propriedade est situada dentro de uma varivel de destino passado por referncia pelo ltimo
parmetro.
bool HistoryDealGetString(
ulong

ticket_number,

// Ticket (bilhete)

ENUM_DEAL_PROPERTY_STRING property_id,

// Identificador de propriedade

string&

// Aqui ns aceitamos o valor de propriedade

string_var

);

Parmetros
ticket_number
[in] Ticket de operao.
property_id
[in] Identificador da propriedade de operao. O valor pode ser um dos valores da enumerao
ENUM_DEAL_PROPERTY_STRING.
string_var
[out] Varivel de tipo string que aceita o valor da propriedade requerida...
Valor do Retorno
Valor do tipo string.
Observao
No confunda ordens, operaes e posies. Cada operao o resultado da execuo de uma
ordem, cada posio o resumo de um ou mais operaes.
Tambm Veja
HistorySelect(), HistoryDealsTotal(), HistoryDealSelect(), Propriedades de uma Operao

2000-2015, MetaQuotes Software Corp.

1241

Trade Signals

Trade Signals
This is the group of functions intended for managing trade signals. The functions allow:
get information about trade signals, available for copying,
get and set the signal copy settings,
subscribe and unsubscribe to the signal copying using MQL5 language functions.
Function

Action

SignalBaseGetDouble

Returns the value of double type property for


selected signal

SignalBaseGetInteger

Returns the value of integer type property for


selected signal

SignalBaseGetString

Returns the value of string type property for


selected signal

SignalBaseSelect

Selects a signal from signals, available in


terminal for further working with it

SignalBaseTotal

Returns the total amount of signals, available in


terminal

SignalInfoGetDouble

Returns the value of double type property of


signal copy settings

SignalInfoGetInteger

Returns the value of integer type property of


signal copy settings

SignalInfoGetString

Returns the value of string type property of


signal copy settings

SignalInfoSetDouble

Sets the value of double type property of signal


copy settings

SignalInfoSetInteger

Sets the value of integer type property of signal


copy settings

SignalSubscribe

Subscribes to the trading signal

SignalUnsubscribe

Cancels subscription

2000-2015, MetaQuotes Software Corp.

1242

Trade Signals

SignalBaseGetDouble
Returns the value of double type property for selected signal.
double SignalBaseGetDouble(
ENUM_SIGNAL_BASE_DOUBLE

property_id,

// property identifier

);

Parameters
property_id
[in]
Signal property identifier. The
ENUM_SIGNAL_BASE_DOUBLE enumeration.

value

can

be

one

Returned value
The value of double type property of the selected signal.

2000-2015, MetaQuotes Software Corp.

of

the

values

of

the

1243

Trade Signals

SignalBaseGetInteger
Returns the value of integer type property for selected signal.
long SignalBaseGetInteger(
ENUM_SIGNAL_BASE_INTEGER

property_id,

// property identifier

);

Parameters
property_id
[in]
Signal property identifier. The
ENUM_SIGNAL_BASE_INTEGER enumeration.

value

can

be

one

Returned value
The value of integer type property of the selected signal.

2000-2015, MetaQuotes Software Corp.

of

the

values

of

the

1244

Trade Signals

SignalBaseGetString
Returns the value of string type property for selected signal.
string SignalBaseGetString(
ENUM_SIGNAL_BASE_STRING

property_id,

// property identifier

);

Parameters
property_id
[in]
Signal property identifier. The
ENUM_SIGNAL_BASE_STRING enumeration.

value

can

be

one

Returned value
The value of string type property of the selected signal.

2000-2015, MetaQuotes Software Corp.

of

the

values

of

the

1245

Trade Signals

SignalBaseSelect
Selects a signal from signals, available in terminal for further working with it.
bool SignalBaseSelect(
int

index

// signal index

);

Parameters
index
[in] Signal index in base of trading signals.
Returned value
Returns true if successful, otherwise returns false. To read more about the error call GetLastError().
Example:
void OnStart()
{
//--- get total amount of signals in the terminal
int total=SignalBaseTotal();
//--- process all signals
for(int i=0;i<total;i++)
{
//--- select the signal by index
if(SignalBaseSelect(i))
{
//--- get signal properties
long

id

=SignalBaseGetInteger(SIGNAL_BASE_ID);

// signal id

long

pips

=SignalBaseGetInteger(SIGNAL_BASE_PIPS);

// profit in pips

long

subscr=SignalBaseGetInteger(SIGNAL_BASE_SUBSCRIBERS); // number of subscribers

string name

=SignalBaseGetString(SIGNAL_BASE_NAME);

// signal name

double price =SignalBaseGetDouble(SIGNAL_BASE_PRICE);

// signal price

string curr

// signal currency

=SignalBaseGetString(SIGNAL_BASE_CURRENCY);

//--- print all profitable free signals with subscribers


if(price==0.0 && pips>0 && subscr>0)

PrintFormat("id=%d, name=\"%s\", currency=%s, pips=%d, subscribers=%d",id,name,curr,pip


}
else PrintFormat("Error in call of SignalBaseSelect. Error code=%d",GetLastError());
}
}

2000-2015, MetaQuotes Software Corp.

1246

Trade Signals

SignalBaseTotal
Returns the total amount of signals, available in terminal.
int SignalBaseTotal();

Returned value
The total amount of signals, available in terminal.

2000-2015, MetaQuotes Software Corp.

1247

Trade Signals

SignalInfoGetDouble
Returns the value of double type property of signal copy settings.
double SignalInfoGetDouble(
ENUM_SIGNAL_INFO_DOUBLE

property_id,

// property identifier

);

Parameters
property_id
[in] Signal copy settings property identifier. The value can be one of the values of the
ENUM_SIGNAL_INFO_DOUBLE enumeration.
Returned value
The value of double type property of signal copy settings.

2000-2015, MetaQuotes Software Corp.

1248

Trade Signals

SignalInfoGetInteger
Returns the value of integer type property of signal copy settings.
long SignalInfoGetInteger(
ENUM_SIGNAL_INFO_INTEGER

property_id,

// property identifier

);

Parameters
property_id
[in] Signal copy settings property identifier. The value can be one of the values of the
ENUM_SIGNAL_INFO_INTEGER enumeration.
Returned value
The value of integer type property of signal copy settings.

2000-2015, MetaQuotes Software Corp.

1249

Trade Signals

SignalInfoGetString
Returns the value of string type property of signal copy settings.
string SignalInfoGetString(
ENUM_SIGNAL_INFO_STRING

property_id,

// property identifier

);

Parameters
property_id
[in] Signal copy settings property identifier. The value can be one of the values of the
ENUM_SIGNAL_INFO_STRING enumeration.
Returned value
The value of string type property of signal copy settings.

2000-2015, MetaQuotes Software Corp.

1250

Trade Signals

SignalInfoSetDouble
Sets the value of double type property of signal copy settings.
bool SignalInfoSetDouble(
ENUM_SIGNAL_INFO_DOUBLE

property_id,

// property identifier

double

value

// new value

);

Parameters
property_id
[in] Signal copy settings property identifier. The value can be one of the values of the
ENUM_SIGNAL_INFO_DOUBLE enumeration.
value
[in] The value of signal copy settings property.
Returned value
Returns true if property has been changed, otherwise returns false. To read more about the error
call GetLastError().

2000-2015, MetaQuotes Software Corp.

1251

Trade Signals

SignalInfoSetInteger
Sets the value of integer type property of signal copy settings.
bool SignalInfoSetInteger(
ENUM_SIGNAL_INFO_INTEGER

property_id,

// property identifier

long

value

// new value

);

Parameters
property_id
[in] Signal copy settings property identifier. The value can be one of the values of the
ENUM_SIGNAL_INFO_INTEGER enumeration.
value
[in] The value of signal copy settings property.
Returned value
Returns true if property has been changed, otherwise returns false. To read more about the error
call GetLastError().

2000-2015, MetaQuotes Software Corp.

1252

Trade Signals

SignalSubscribe
Subscribes to the trading signal.
bool SignalSubscribe(
long

signal_id

// signal id

);

Parameters
signal_id
[in] Signal identifier.
Returned value
Returns true if subscription was successful, otherwise returns false. To read more about the error
call GetLastError().

2000-2015, MetaQuotes Software Corp.

1253

Trade Signals

SignalUnsubscribe
Cancels subscription.
bool SignalUnsubscribe();

Returned value
Returns true if subscription has been canceled successfully, otherwise returns false. To read more
about the error call GetLastError().

2000-2015, MetaQuotes Software Corp.

1254

Variveis Globais do Terminal

Variveis Globais do Terminal de Cliente


H um grupo que define as funes para trabalhar com variveis globais.
Variveis globais do terminal de cliente no deve ser confundida com as variveis declaradas no
escopo global do programa mql5.
Variveis globais so guardadas no terminal de cliente por 4 semanas desde o ltimo acesso, ento
elas sero excludas automaticamente. Um acesso para a varivel global no somente a definio de
um novo valor, mas a leitura do valor da varvel global, tambm.
As variveis globais do terminal de cliente so acessveis simultaneamente de todos os programas
mql5 executados no terminal do cliente.
Funo

Ao

GlobalVariableCheck

Verifica a existncia de uma varivel global


com o nome especificado

GlobalVariableTime

Retorna o tempo do ltimo acesso para a


varivel global

GlobalVariableDel

Exclui uma varivel global

GlobalVariableGet

Retorna o valor da varivel global

GlobalVariableName

Retorna o nome de uma varivel global, que o


nmero ordinal dentro da lista de variveis
globais

GlobalVariableSet

Define o novo valor para uma varivel global

GlobalVariablesFlush

Salva foradamente o contedo de todas as


varveis globais num disco

GlobalVariableTemp

Define o novo valor para uma varivel global,


que existe somente na sesso geral do terminal

GlobalVariableSetOnCondition

Define um novo valor de existncia de varivel


global pela condio estabelecida

GlobalVariablesDeleteAll

Exclui as variveis globais com especificao


prefixada em seus nomes

GlobalVariablesTotal

Retorna o nmero total de Variveis Globais

2000-2015, MetaQuotes Software Corp.

1255

Variveis Globais do Terminal

GlobalVariableCheck
Verifica a existncia de uma varivel global com o nome especificado
bool GlobalVariableCheck(
string name

// Nome da varivel global

);

Parmetros
name
[in] Nome da varivel global.
Valor do Retorno
Retorna true, se a varivel global existe, caso contrrio, retorna false.
As variveis globais existem no terminal do cliente durante 4 semanas desde a ltima utilizao,
ento eles so excludos automaticamente.
Tambm Veja
GlobalVariableTime()

2000-2015, MetaQuotes Software Corp.

1256

Variveis Globais do Terminal

GlobalVariableTime
Retorna o tempo em que a varivel global foi acessado pela ltima vez.
datetime GlobalVariableTime(
string name

// nome

);

Parmetros
name
[in] Nome da varivel global.
Valor do Retorno
A funo retorna hora do ltimo acesso varivel global especificada. Chamando uma varivel para
obter um valor tambm considerado como um acesso a ele. A fim de obter os detalhes do erro
chamar a funo GetLastError().
Observao
As variveis globais existem no terminal do cliente durante 4 semanas desde a ltima utilizao.
Depois disso, eles so excludos automaticamente.
Tambm Veja
GlobalVariableCheck()

2000-2015, MetaQuotes Software Corp.

1257

Variveis Globais do Terminal

GlobalVariableDel
Exclui uma varivel global a partir do terminal do cliente.
bool GlobalVariableDel(
string name

// Nome da varivel global

);

Parmetros
name
[in] Nome da varivel global.
Valor do Retorno
Se bem sucedida, a funo retorna true, caso contrrio ela retorna false. Para obter uma informao
sobre o erro necessrio chamar a funo GetLastError().
Observao
As variveis globais existem no terminal do cliente durante 4 semanas desde a ltima utilizao,
ento eles so excludos automaticamente.

2000-2015, MetaQuotes Software Corp.

1258

Variveis Globais do Terminal

GlobalVariableGet
Retorna o valor de uma varivel global existente do terminal do cliente. Existem 2 variantes da
funo.
1. Imediatamente retorna o valor da varivel global.
double GlobalVariableGet(
string name

// Nome da varivel global

);

2. Retorna true ou false dependendo do sucesso da execuo da funo. Se for bem sucedido, a
varivel global do terminal do cliente colocado em uma varivel passada por referncia no segundo
parmetro.
bool GlobalVariableGet(
string name,

// Nome da varivel global

double&double_var

// Esta varivel ir conter o valor da varivel global

);

Parmetros
name
[in] Nome da varivel global.
double_var
[out] Alvo varivel do tipo duplo, que aceita o valor armazenado em uma varivel global do
terminal do cliente.
Valor do Retorno
O valor da varivel global existente ou 0(zero) em caso de um erro. Para mais detalhes sobre o erro,
chamar GetLastError().
Observao
As variveis globais existem no terminal do cliente durante 4 semanas desde a ltima utilizao,
ento eles so excludos automaticamente.

2000-2015, MetaQuotes Software Corp.

1259

Variveis Globais do Terminal

GlobalVariableName
Retorna o nome de uma varivel global, que o nmero ordinal.
string GlobalVariableName(
int index

// Nmero varivel global na lista de variveis globais

);

Parmetros
index
[in] Nmero de seqncia na lista de variveis globais. Ele deve ser maior ou igual a 0(zero) e
menor do que GlobalVariablesTotal().
Valor do Retorno
Nome da varivel global, que o nmero ordinal na lista de variveis globais. Para mais detalhes
sobre o erro, chamar GetLastError().
Observao
As variveis globais existem no terminal do cliente durante 4 semanas desde a ltima utilizao,
ento eles so excludos automaticamente.

2000-2015, MetaQuotes Software Corp.

1260

Variveis Globais do Terminal

GlobalVariableSet
Define um novo valor para uma varivel global. Se a varivel no existir, o sistema cria uma nova
varivel global.
datetime GlobalVariableSet(
string name,

// Nome da varivel global

double value

// Valor a ser definido

);

Parmetros
name
[in] Nome da varivel global.
value
[in] O novo valor numrico.
Valor do Retorno
Se for bem sucedido, a funo retorna a ltima modificao, caso contrrio, 0 (zero). Para mais
detalhes sobre o erro, chamar GetLastError().
Observao
A global variable name should not exceed 63 characters. As variveis globais existem no terminal do
cliente durante 4 semanas desde a ltima utilizao, ento eles so excludos automaticamente.

2000-2015, MetaQuotes Software Corp.

1261

Variveis Globais do Terminal

GlobalVariablesFlush
Salva foradamente o contedo de todas as varveis globais num disco.
void GlobalVariablesFlush();

Valor do Retorno
Sem valor de retorno.
Observao
O terminal escreve todas as variveis globais quando o trabalho em excesso, mas os dados podem
ser perdidos em uma falha sbita de operao do computador. Esta funo permite controle
independente do processo de salvar variveis globais em caso de contingncia.

2000-2015, MetaQuotes Software Corp.

1262

Variveis Globais do Terminal

GlobalVariableTemp
A funo tenta criar uma varivel global temporria. Se a varivel no existir, o sistema cria uma
nova varivel global temporria.
bool GlobalVariableTemp(
string name

// Nome da varivel global

);

Parmetros
name
[in] O nome de uma varivel global temporria.
Valor do Retorno
Se for bem sucedido, a funo retorna true, caso contrrio - false. Para obter detalhes sobre o erro,
voc deve chamar a funo GetLastError().
Observao
Variveis globais temporrios existem apenas enquanto o terminal do cliente est sendo executado,
aps o desligamento do terminal eles so excludos automaticamente. Note-se que durante a
execuo de GlobalVariablesFlush() variveis globais temporrias no so gravados em um disco.
Depois de uma varivel global temporrio tiver sido criado, pode ser acedido e modificado a mesma
varivel global do terminal do cliente.

2000-2015, MetaQuotes Software Corp.

1263

Variveis Globais do Terminal

GlobalVariableSetOnCondition
Define o novo valor da varivel global existente, se o valor da corrente igual ao terceiro parmetro
check_value. Se no houver nenhuma varivel global, a funo ir gerar um erro
ERR_GLOBALVARIABLE_NOT_FOUND (4501) e voltar false.
bool GlobalVariableSetOnCondition(
string name,

// Nome da varivel global

double value,

// Novo valor para a varivel, se a condio for verdadeira

double check_value

// Verifique condio de valor

);

Parmetros
name
[in] O nome de uma varivel global.
value
[in] Novo valor.
check_value
[in] O valor para verificar o valor atual da varivel global.
Valor do Retorno
Se bem sucedida, a funo retorna true, caso contrrio ela retorna false. Para obter detalhes sobre
o erro chamar GetLastError(). Se o valor atual da varivel global diferente de check_value, a
funo retorna false.
Observao
Funo fornece acesso atmico a varivel global, para que ele possa ser utilizado para a prestao
de uma excluso mtua na interao de vrios consultores especializados trabalhando
simultaneamente dentro de um terminal de cliente.

2000-2015, MetaQuotes Software Corp.

1264

Variveis Globais do Terminal

GlobalVariablesDeleteAll
Apaga as variveis globais do terminal do cliente.
int GlobalVariablesDeleteAll(
string

prefix_name=NULL,

datetime limit_data=0

// Todas as variveis globais com nomes que comeam com o prefi

// Todas as variveis globais que foram alteradas antes desta d

);

Parmetros
prefix_name=NULL
[in] Prefixo do nome de variveis globais para remover. Se voc especificar um prefixo NULL ou
string vazia, ento todas as variveis que atendam o critrio dados sero apagados.
limit_data=0
[in] Data para selecionar as variveis globais no momento de sua ltima modificao. A funo
remove variveis globais, que foram alteradas antes desta data. Se o parmetro for zero, ento
todas as variveis que atendam o primeiro critrio (prefixo) so excludos.
Valor do Retorno
O nmero de variveis apagados.
Observao
Se ambas as opes so iguais a zero (prefix_name = NULL e limit_data = 0), ento funo exclui
todas as variveis globais da terminao. Se ambos os parmetros so especificados, ento ele
elimina variveis globais correspondentes a ambos os parmetros.
As variveis globais existem no terminal do cliente durante 4 semanas desde suas ltima utilizao,
ento eles so excludos automaticamente.

2000-2015, MetaQuotes Software Corp.

1265

Variveis Globais do Terminal

GlobalVariablesTotal
Retorna o nmero total de Variveis Globais do Terminal de Cliente.
int GlobalVariablesTotal();

Valor do Retorno
Nmero de variveis globais.
Observao
As variveis globais existem no terminal do cliente durante 4 semanas desde a ltima utilizao,
ento eles so excludos automaticamente. Chamada de uma varivel global est a definir no s
um novo valor, mas tambm a leitura do valor da varivel global.

2000-2015, MetaQuotes Software Corp.

1266

Funes de Arquivo

Funes de Arquivo
Este um grupo de funes para trabalhar com arquivos.
Por razes de segurana, o trabalho com arquivos estritamente controlada na lngua MQL5. Arquivos
com que as operaes de arquivo so conduzidas usando os meios MQL5, no podem estar fora da
caixa de proteo do arquivo.
Existem dois diretrios(com subdiretrios) onde os arquivos de trabalho esto localizados:
terminal_data_folder\MQL5\FILES\ (no menu do terminal selecione para ver "Arquivo" - "Abrir o
diretrio de dados");
na pasta comum para todos os terminais instalados no computador - geralmente no diretrio C:
\Documents and Settings\All Users\Application Data\MetaQuotes\Terminal\Common\Files (C:
\Documentos e Configuraes\Todos Usurios\Dados de Aplicativos\MetaQuotes\Comum\Files).
Existe um mtodo de programa para obter nome destes catlogos
TerminalInfoString(), usando a enumerao ENUM_TERMINAL_INFO_STRING:

usando

funo

//--- Pasta que armazena os dados do terminal


string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
//--- Pasta comum para todos os terminais de clientes
string common_data_path=TerminalInfoString(TERMINAL_COMMONDATA_PATH);

Trabalhar com arquivos de outros diretrios proibido.


Funes de arquivo permitem trabalhar com os assim chamados "pipes nomeados". Para isto, chamar
simplesmente a funo FileOpen() com o parmetro apropriado.
Funo

Ao

FileFindFirst

Comea a busca de arquivos em um diretrio de


acordo com o filtro especificado

FileFindNext

Continua a busca
FileFindFirst()

FileFindClose

Fecha o manipulador de busca

FileOpen

Abre um arquivo com o nome e bandeira


especificada

FileDelete

Deleta um arquivo especificado

FileFlush

Escreve para um disco todos os dados


remanescentes dentro da entrada/sada do
arquivo buffer

FileGetInteger

Obtm uma propriedade inteira de um arquivo

FileIsEnding

Define o final do arquivo em processo de leitura

FileIsLineEnding

Define o final da linha do arquivo de texto em


processo de leitura

FileClose

Fecha um arquivo aberto previamente

2000-2015, MetaQuotes Software Corp.

iniciada

pela

funo

1267

Funes de Arquivo

FileIsExist

Verifica a e existncia de um arquivo

FileCopy

Copia o arquivo original a partir de um local ou


de uma pasta compartilhada em outro arquivo

FileMove

Move ou renomeia um arquivo

FileReadArray

L arrays de qualquer tipo, exceto para a


seqncia a partir do arquivo do tipo BIN

FileReadBool

L a partir de arquivo do tipo CSV uma


seqncia a partir da posio atual at um
delimitador (ou at o fim de uma linha de
texto) e converte a seqncia de leitura para
um valor do tipo bool

FileReadDatetime

L a partir do arquivo do tipo CSV uma


seqncia de um dos formatos: "YYYY.MM.DD
HH:MM:SS", "YYYY.MM.DD" or "HH:MM:SS" - e
converte-os dentro de valor de datetime

FileReadDouble

L um valor double a partir da posio atual do


ponteiro de arquivo

FileReadFloat

L um valor float a partir da posio atual do


ponteiro de arquivo

FileReadInteger

L um valor int, short ou char a partir da


posio atual do ponteiro de arquivo

FileReadLong

L um valor do tipo long a partir da posio


atual do ponteiro de arquivo

FileReadNumber

L a partir de arquivo do tipo CSV uma


seqncia a partir da posio atual at um
delimitador (ou at o fim de uma linha de
texto) e converte a seqncia de leitura em um
valor double

FileReadString

L uma seqncia a partir da posio atual do


ponteiro a partir de um arquivo

FileReadStruct

L o contedo de um arquivo binrio em uma


estrutura passada como um parmetro, a partir
da posio atual do ponteiro do arquivo

FileSeek

Move a posio do ponteiro de arquivo por um


determinado nmero de bytes em relao
posio especificada

FileSize

Retorna o tamanho da abertura de um arquivo


correspondente

FileTell

Retorna a posio atual do ponteiro de um


arquivo da abertura de arquivo correspondente

FileWrite

Escreve dados para um arquivo de CSV ou tipo

2000-2015, MetaQuotes Software Corp.

1268

Funes de Arquivo

TXT
FileWriteArray

Escreve arrays de qualquer tipo exceto para


seqncia em um arquivo do tipo BIN

FileWriteDouble

Escreve valor do tipo double a partir da posio


atual de um ponteiro de arquivo em um arquivo
binrio

FileWriteFloat

Escreve o valor do tipo float a partir da posio


atual de um ponteiro de arquivo em um arquivo
binrio

FileWriteInteger

Escreve o valor do tipo int a partir da posio


atual de um ponteiro de arquivo em um arquivo
binrio

FileWriteLong

Escreve o valor do tipo long a partir da posio


atual de um ponteiro de arquivo em um arquivo
binrio

FileWriteString

Escreve o valor de um parmetro da string em


um arquivo BIN ou TXT iniciando a partir da
posio atual do ponteiro de arquivo

FileWriteStruct

Escreve o contedo de uma estrutura passada


como um parmetro em um arquivo binrio,
comeando a partir da posio atual do ponteiro
de arquivo

FolderCreate

Cria uma pasta dentro do diretrio de arquivo

FolderDelete

Remove um diretrio selecionado. Se a pasta


no estiver vazia, ento ele no pode ser
removido

FolderClean

Deleta todos os arquivos dentro da pasta


especificada

Se o arquivo aberto para escrever usando FileOpen(),todas as sub-pastas especificadas no caminho


sero criadas se elas no existirem.

2000-2015, MetaQuotes Software Corp.

1269

Funes de Arquivo

FileFindFirst
A funo comea a busca de arquivos e subdiretrios em um diretrio de acordo com o filtro
especificado.
long FileFindFirst(
const string

file_filter,

// String - filtro de pesquisa

string&

returned_filename,

// Nome do arquivo ou subdiretrio encontrado

int

common_flag=0

// Define a pesquisa

);

Parmetros
file_filter
[in] Filtro de pesquisa. Um subdiretrio (ou seqncia de subdiretrios aninhados) relativo ao
diretrio \Files, em que os arquivos devem ser procurados, podem ser especificados no filtro.
returned_filename
[out] O parmetro retornado, onde, em caso de sucesso, o nome do primeiro arquivo encontrado
ou subdiretrio colocado. Only the file name is returned (including the extension), the directories
and subdirectories are not included no matter if they are specified or not in the search filter.
common_flag
[in] Bandeira determinando a localizao do arquivo. Se common_flag = FILE_COMMON, ento o
arquivo est localizado em uma pasta compartilhada para todos os terminais de cliente \Terminal
\Common\Files. Caso contrrio, o arquivo est localizado em uma pasta local.
Valor do Retorno
Retorna o manipulador do objeto pesquisado, que deve ser utilizado para posterior triagem dos
arquivos e subdiretrios pela funo FileFindNext(), ou INVALID_HANDLE quando no h nenhum
arquivo e subdiretrio correspondente ao filtro (no caso particular - quando o diretrio est vazio.
Aps a pesquisa, o manipulador deve ser fechado usando a funo FileFindClose().
Observao
Por razes de segurana, o trabalho com arquivos estritamente controlada na lngua MQL5.
Arquivos com que as operaes de arquivo so conduzidas usando os meios MQL5, no podem estar
fora da caixa de proteo do arquivo.
Exemplo:

2000-2015, MetaQuotes Software Corp.

1270

Funes de Arquivo

//--- display the window of input parameters when launching the script
#property script_show_inputs
//--- filter
input string InpFilter="Dir1\\*";
//+------------------------------------------------------------------+
//| Script program start function
|
//+------------------------------------------------------------------+
void OnStart()
{
string file_name;
string int_dir="";
int
i=1,pos=0,last_pos=-1;
//--- search for the last backslash
while(!IsStopped())
{
pos=StringFind(InpFilter,"\\",pos+1);
if(pos>=0)
last_pos=pos;
else
break;
}
//--- the filter contains the folder name
if(last_pos>=0)
int_dir=StringSubstr(InpFilter,0,last_pos+1);
//--- get the search handle in the root of the local folder
long search_handle=FileFindFirst(InpFilter,file_name);
//--- check if the FileFindFirst() is executed successfully
if(search_handle!=INVALID_HANDLE)
{
//--- in a cycle, check if the passed strings are the names of files or directories
do
{
ResetLastError();
//--- if it's a file, the function returns true, and if it's a directory, it returns error
FileIsExist(int_dir+file_name);
PrintFormat("%d : %s name = %s",i,GetLastError()==ERR_FILE_IS_DIRECTORY ? "Directory" : "F
i++;
}
while(FileFindNext(search_handle,file_name));
//--- close the search handle
FileFindClose(search_handle);
}
else
Print("Files not found!");
}

Tambm Veja
FileFindNext, FileFindClose

2000-2015, MetaQuotes Software Corp.

1271

Funes de Arquivo

FileFindNext
A funo continua a busca iniciada por FileFindFirst().
bool FileFindNext(
long

search_handle,

// Manipular pesquisa

string&

returned_filename

// Nome do arquivo ou subdiretrio encontrado

);

Parmetros
search_handle
[in] Manipulador de pesquisa, recuperado por FileFindFirst().
returned_filename
[out] O nome do prximo arquivo ou subdiretrio encontrado. Only the file name is returned
(including the extension), the directories and subdirectories are not included no matter if they are
specified or not in the search filter.
Valor do Retorno
Se bem sucedido retorna verdadeiro, caso contrrio false.
Exemplo:
//--- mosta a janela dos parmetros de entrada quando lanado o script
#property script_show_inputs
//--- filtro
input string InpFilter="*";
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
string file_name;
int

i=1;

//--- receber o manipulador de pesquisa na raiz da pasta local


long search_handle=FileFindFirst(InpFilter,file_name);
//--- verificar se FileFindFirst() executada com sucesso
if(search_handle!=INVALID_HANDLE)
{
//--- verificar se as strings passadas so nomes de arquivo ou diretrio no loop
do
{
ResetLastError();

//--- se este um arquivo, a funo retornar verdadeiro, se um diretrio, a funo ir


FileIsExist(file_name);

PrintFormat("%d : %s nome = %s",i,GetLastError()==ERR_FILE_IS_DIRECTORY ? "Diretrio" : "A


i++;
}
while(FileFindNext(search_handle,file_name));

2000-2015, MetaQuotes Software Corp.

1272

Funes de Arquivo
//--- Fechar manipulador de pesquisa
FileFindClose(search_handle);
}
else
Print("Arquivo no encontrado!");
}

Tambm Veja
FileFindFirst, FileFindClose

2000-2015, MetaQuotes Software Corp.

1273

Funes de Arquivo

FileFindClose
A funo fecha o identificador pesquisa.
void FileFindClose(
long search_handle

//

Manipular pesquisa

);

Parmetros
search_handle
[in] Manipulador de pesquisa, recuperado por FileFindFirst().
Valor do Retorno
Sem valor retornado.
Observao
Funo deve ser chamado para liberar recursos do sistema.
Exemplo:
//--- mosta a janela dos parmetros de entrada quando lanado o script
#property script_show_inputs
//--- filtro
input string InpFilter="*";
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
string file_name;
int

i=1;

//--- receber o manipulador de pesquisa na raiz da pasta local


long search_handle=FileFindFirst(InpFilter,file_name);
//--- verificar se FileFindFirst() executada com sucesso
if(search_handle!=INVALID_HANDLE)
{
//--- verificar se as strings passadas so nomes de arquivo ou diretrio no loop
do
{
ResetLastError();

//--- se este um arquivo, a funo retornar verdadeiro, se um diretrio, a funo ir


FileIsExist(file_name);

PrintFormat("%d : %s nome = %s",i,GetLastError()==5018 ? "Diretrio" : "Arquivo",file_name


i++;
}
while(FileFindNext(search_handle,file_name));
//--- Fechar manipulador de pesquisa
FileFindClose(search_handle);
}

2000-2015, MetaQuotes Software Corp.

1274

Funes de Arquivo
else
Print("Arquivo no encontrado!");
}

Tambm Veja
FileFindFirst, FileFindNext

2000-2015, MetaQuotes Software Corp.

1275

Funes de Arquivo

FileIsExist
Verifica a existncia de um arquivo.
bool FileIsExist(
const string file_name,

// Nome do arquivo

int

// rea de pesquisa

common_flag=0

);

Parmetros
file_name
[in] O nome do arquivo a ser verificado
common_flag=0
[in] Bandeira determinando a localizao do arquivo. Se common_flag = FILE_COMMON, ento o
arquivo est localizado em uma pasta compartilhada para todos os terminais de cliente \Terminal
\Common\Files. Caso contrrio, o arquivo est localizado em uma pasta local.
Valor do Retorno
Retorna true, se o arquivo especificado existe.
Observao
Arquivo verificado pode vir a ser um subdiretrio. Neste caso, FileIsExist() funo retornar falso,
enquanto o erro 5018 ser registrada na varivel _LastError - "Este um diretrio, no um
arquivo" (ver exemplo pela funo FileFindFirst).
Por razes de segurana, o trabalho com arquivos estritamente controlada na lngua MQL5.
Arquivos com que as operaes de arquivo so conduzidas usando os meios MQL5, no podem estar
fora da caixa de proteo do arquivo.
Se common_flag = FILE_COMMON, ento a funo procura o arquivo em uma pasta compartilhada
por todos os terminais do cliente \Terminal\Common\Files, caso contrrio, a funo procura por um
arquivo em uma pasta local (MQL5\Files ou MQL5\Tester\Files no caso de testes).
Exemplo:
//--- mostrar a janela de parmetros de entrada quando do lanamento do script
#property script_show_inputs
//--- data para arquivos antigos
input datetime InpFilesDate=D'2013.01.01 00:00';
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
string

file_name;

// varivel para armazenar os nomes dos arquivos

string

filter="*.txt"; // filtrar parar pesquisar os arquivos

datetime create_date;

// data de criao do arquivo

string

files[];

// lista de nome dos arquivos

int

def_size=25;

// tamanho do array por padro

2000-2015, MetaQuotes Software Corp.

1276

Funes de Arquivo
int

size=0;

// nmero de arquivos

//--- alocar memria para o array


ArrayResize(files,def_size);
//--- receber o manipulador de pesquisa na raiz da pasta local
long search_handle=FileFindFirst(filter,file_name);
//--- verificar se FileFindFirst() executada com sucesso
if(search_handle!=INVALID_HANDLE)
{
//--- pesquisando arquivos no loop
do
{
files[size]=file_name;
//--- aumentar o tamanho do array
size++;
if(size==def_size)
{
def_size+=25;
ArrayResize(files,def_size);
}
//--- redefinir o valor de erro
ResetLastError();
//--- receber a data de criao do arquivo
create_date=(datetime)FileGetInteger(file_name,FILE_CREATE_DATE,false);
//--- verificar se o arquivo antigo
if(create_date<InpFilesDate)
{
PrintFormat("%s arquivo deletado!",file_name);
//--- deletado o arquivo antigo
FileDelete(file_name);
}
}
while(FileFindNext(search_handle,file_name));
//--- fechar o manipulador de pesquisa
FileFindClose(search_handle);
}
else
{
Print("Arquivo no encontrado!");
return;
}
//--- verificar quais os arquivos permanecem
PrintFormat("Resultados:");
for(int i=0;i<size;i++)
{
if(FileIsExist(files[i]))
PrintFormat("%s arquivo existe!",files[i]);
else
PrintFormat("%s arquivo deletado!",files[i]);
}

2000-2015, MetaQuotes Software Corp.

1277

Funes de Arquivo
}

Tambm Veja
FileFindFirst

2000-2015, MetaQuotes Software Corp.

1278

Funes de Arquivo

FileOpen
A funo abre o arquivo com o nome e a bandeira especificada.
int FileOpen(
string file_name,

// Nome do arquivo

int

open_flags,

// Combinao de bandeiras

short

delimiter='\t',

// Delimitador

uint

codepage=CP_ACP

// Pgina de cdigo

);

Parmetros
file_name
[in] O nome do arquivo pode conter sub-pastas. Se o arquivo aberto para escrita, estas subpastas sero criadas se elas no existirem.
open_flags
[in] combinao de bandeiras que determinam o modo de operao para o arquivo. As bandeiras
so definidas das seguintes formas:
FILE_READ arquivo aberto para leitura
FILE_WRITE arquivo aberto para a escrita
FILE_BIN modo binrio de leitura e escrita(sem converso de uma string e para uma string)
FILE_CSV arquivo do tipo csv (todos os itens registrados so convertidos para as strings de tipo
unicode ou ansi, e so separados por um delimitador)
FILE_TXT um arquivo de texto simples (o mesmo que csv, mas o delimitador no levado em
conta)
FILE_ANSI linhas do tipo ANSI (smbolos de um byte)
FILE_UNICODE linhas do tipo UNICODE (caracteres de bytes duplos)
FILE_SHARE_READ leitura partilhada entre vrios programas
FILE_SHARE_WRITE escrita partilhada entre vrios programas
FILE_COMMON localizao do arquivo em uma pasta compartilhada para todos os terminais de
cliente \Terminal\Common\Files.
delimiter='\t'
[in] valor a ser usado como um separador em txt ou csv-file. Se o arquivo .csv delimitador no for
especificado, o padro uma tabulao. Se o arquivo .txt delimitador no for especificado, ento
nenhum separador usado. Se o separador est claramente definido para 0, ento nenhum
separador usado.
codepage=CP_ACP
[in] O valor do cdigo de pgina. Para os mais usados cdigos de pgina fornea as constantes
apropriadas.
Valor do Retorno
Se um arquivo foi aberto com sucesso, a funo retorna o manipulador de arquivo, que ento
usado para acessar os dados do arquivo. Em caso de falha retorna INVALID_HANDLE.
Observao
Por razes de segurana, o trabalho com arquivos estritamente controlada na lngua MQL5.
Arquivos com que as operaes de arquivo so conduzidas usando os meios MQL5, no podem estar

2000-2015, MetaQuotes Software Corp.

1279

Funes de Arquivo
fora da caixa de proteo do arquivo.
O arquivo aberto na pasta do terminal do cliente na subpasta MQL5\files (ou
testing_agent_directory\MQL5\files em caso de testes). Se FILE_COMMON especificado entre
bandeiras, o arquivo aberto em uma pasta compartilhada para todos os MetaTrader 5 terminais de
cliente.
"Pipes nomeados" pode ser aberta de acordo com as seguintes regras:
Nome do pipe uma string, que deve ter o seguinte aspecto: "\\servername\pipe\pipeName", onde
servername - nome do servidor na rede, enquanto pipename um nome de tubo. Se os tubos so
utilizados no mesmo computador, o nome do servidor pode ser omitido, mas num ponto devem ser
inseridos em vez do mesmo: "\\.\pipe\pipename". Um cliente tenta conectar o tubo deve saber o
seu nome.
FileFlush() e FileSeek() deve ser chamado para o incio de um arquivo entre as operaes
seqenciais de leitura do tubo e grav-lo.
Um smbolo '\' especial usado em strings expostas. Portanto, '\' deve ser redobrada quando se
escreve um nome na aplicao MQL5. Isso significa que o exemplo acima deve ter o seguinte
aspecto no cdigo: "\\\\servername\\pipe\\pipename".
Mais informaes sobre como trabalhar com pipes nomeados pode ser encontrada no artigo
"Communicating With MetaTrader 5 Using Named Pipes Without Using DLLs".
Exemplo:
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- mtodo de abertura de arquivo incorreto
string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
string filename=terminal_data_path+"\\MQL5\\Files\\"+"fractals.csv";
int filehandle=FileOpen(filename,FILE_WRITE|FILE_CSV);
if(filehandle<0)
{
Print("Falha para abrir o arquivo pelo caminho absoluto ");
Print("Cdigo de erro ",GetLastError());
}
//--- maneira correta de trabalhar no "sandbox arquivo"
ResetLastError();
filehandle=FileOpen("fractals.csv",FILE_WRITE|FILE_CSV);
if(filehandle!=INVALID_HANDLE)
{
FileWrite(filehandle,TimeCurrent(),Symbol(), EnumToString(_Period));
FileClose(filehandle);
Print("FileOpen OK");
}
else Print("Operao FileOpen falhou, erro ",GetLastError());
//--- outro exemplo com a criao de um diretrio fechado em MQL5\Files\
string subfolder="Research";

2000-2015, MetaQuotes Software Corp.

1280

Funes de Arquivo
filehandle=FileOpen(subfolder+"\\fractals.txt",FILE_WRITE|FILE_CSV);
if(filehandle!=INVALID_HANDLE)
{
FileWrite(filehandle,TimeCurrent(),Symbol(), EnumToString(_Period));
FileClose(filehandle);
Print("O arquivo ser criado na pasta "+terminal_data_path+"\\"+subfolder);
}
else Print("Falha ao abrir arquivo, erro ",GetLastError());
}

Tambm Veja
Utilizao de uma pgina de cdigo (Codepage), FileFindFirst, FolderCreate, Bandeiras de abertura
de arquivos

2000-2015, MetaQuotes Software Corp.

1281

Funes de Arquivo

FileClose
Feche o arquivo previamente aberto por FileOpen().
void FileClose(
int file_handle

// Manipulador de arquivo

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
Valor do Retorno
Sem valor retornado.
Exemplo:
//--- mostrar a janela de parmetros de entrada quando do lanamento do script
#property script_show_inputs
//--- parmetros de entrada
input string InpFileName="file.txt";

// nome do arquivo

input string InpDirectoryName="Data";

// nome do diretrio

input int

InpEncodingType=FILE_ANSI; // ANSI=32 ou UNICODE=64

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Imprimir o caminho para o arquivo que vamos usar
PrintFormat("Trabalhando %s\\Arquivos\\ pasta",TerminalInfoString(TERMINAL_DATA_PATH));
//--- redefine o valor de erro
ResetLastError();
//--- abrir um arquivo para leitura(se no existe arquivo, ocorrer um erro)
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_TXT|InpEncodingType);
if(file_handle!=INVALID_HANDLE)
{
//--- imprimir o contedo do arquivo
while(!FileIsEnding(file_handle))
Print(FileReadString(file_handle));
//--- fechar o arquivo
FileClose(file_handle);
}
else
PrintFormat("Erro, cdigo = %d",GetLastError());
}

2000-2015, MetaQuotes Software Corp.

1282

Funes de Arquivo

FileCopy
A funo copia o arquivo original a partir de uma pasta local ou compartilhada para outro arquivo.
bool FileCopy(
const string src_file_name,

// Nome de um arquivo fonte

int

// Localizao

common_flag,

const string dst_file_name,

// Nome do arquivo de destino

int

// Modo de acesso

mode_flags

);

Parmetros
src_file_name
[in] O nome do arquivo para cpia.
common_flag
[in] Bandeira determinando a localizao do arquivo. Se common_flag = FILE_COMMON, ento o
arquivo est localizado em uma pasta compartilhada para todos os terminais de cliente \Terminal
\Common\Files. Caso contrrio, o arquivo est localizado em uma pasta local (por exemplo,
common_flag=0).
dst_file_name
[in] Resultado nome do arquivo.
mode_flags
[in] Bandeiras de acesso. O parmetro pode conter apenas duas bandeiras: FILE_REWRITE e/ou
FILE_COMMON - outras bandeiras so ignoradas. Se o arquivo j existe, e a bandeira
FILE_REWRITE no foi especificado, ento o arquivo no ser reescrito e a funo retornar false.
Valor do Retorno
Em caso de falha a funo retornar false.
Observao
Por razes de segurana, o trabalho com arquivos estritamente controlada na lngua MQL5.
Arquivos com que as operaes de arquivo so conduzidas usando os meios MQL5, no podem estar
fora da caixa de proteo do arquivo.
Se o novo arquivo j existe, a cpia ser feita dependendo da disponibilidade da bandeira
FILE_REWRITE dentro do parmetro mode_flags.
Exemplo:
//--- mosta a janela dos parmetros de entrada quando lanado o script
#property script_show_inputs
//--- parmetros de entrada
input string InpSrc="source.txt";

// source

input string InpDst="destination.txt";

// copy

input int

InpEncodingType=FILE_ANSI; // ANSI=32 ou UNICODE=64

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

2000-2015, MetaQuotes Software Corp.

1283

Funes de Arquivo
//+------------------------------------------------------------------+
void OnStart()
{
//--- exibir o contedo de origem (que deve existir)
if(!FileDisplay(InpSrc))
return;
//--- verifique se a cpia do arquivo j existe (no pode ser criado)
if(!FileDisplay(InpDst))
{
//--- a cpia de arquivo no existe, copiando sem a bandeira FILE_REWRITE (cpia correta)
if(FileCopy(InpSrc,0,InpDst,0))
Print("Arquivo est copiado!");
else
Print("Arquivo no est copiado!");
}
else
{
//--- cpia do arquivo j existe, tente copiar sem a bandeira FILE_REWRITE (cpia incorreta)
if(FileCopy(InpSrc,0,InpDst,0))
Print("Arquivo est copiado!");
else
Print("Arquivo no est copiado!");
//--- contedo do arquivo InpDst continua o mesmo
FileDisplay(InpDst);

//--- copiar mais uma vez com a bandeira FILE_REWRITE (copiando correto, se o arquivo existe)
if(FileCopy(InpSrc,0,InpDst,FILE_REWRITE))
Print("Arquivo est copiado!");
else
Print("Arquivo no est copiado!");
}
//--- receber cpia de arquivo InpS
FileDisplay(InpDst);
}
//+------------------------------------------------------------------+
//| Ler comentrios do arquivo

//+------------------------------------------------------------------+
bool FileDisplay(const string file_name)
{
//--- redefine o valor de erro
ResetLastError();
//--- abre o arquivo
int file_handle=FileOpen(file_name,FILE_READ|FILE_TXT|InpEncodingType);
if(file_handle!=INVALID_HANDLE)
{
//--- exibir o contedo do arquivo no loop
Print("+---------------------+");
PrintFormat("Nome do arquivo = %s",file_name);
while(!FileIsEnding(file_handle))
Print(FileReadString(file_handle));

2000-2015, MetaQuotes Software Corp.

1284

Funes de Arquivo
Print("+---------------------+");
//--- fechar o arquivo
FileClose(file_handle);
return(true);
}
//--- falha para abrir o arquivo
PrintFormat("%s no est aberto, erro = %d",file_name,GetLastError());
return(false);
}

2000-2015, MetaQuotes Software Corp.

1285

Funes de Arquivo

FileDelete
Deletar o arquivo especificado dentro da pasta local do terminal do cliente.
bool FileDelete(
const string file_name,
int

// Nome do arquivo para deletar

common_flag=0 // Localizao do arquivo para deletar

);

Parmetros
file_name
[in] Nome do arquivo.
common_flag=0
[in] Bandeira determinando a localizao do arquivo. Se common_flag = FILE_COMMON, ento o
arquivo est localizado em uma pasta compartilhada para todos os terminais de cliente \Terminal
\Common\Files. Caso contrrio, o arquivo est localizado em uma pasta local.
Valor do Retorno
Em caso de falha a funo retornar false.
Observao
Por razes de segurana, o trabalho com arquivos estritamente controlada na lngua MQL5.
Arquivos com que as operaes de arquivo so conduzidas usando os meios MQL5, no podem estar
fora da caixa de proteo do arquivo.
Exclui o arquivo especificado a partir de uma pasta local do terminal do cliente (MQL5\Files ou MQL5
\Tester\Files em caso de testes). Se common_flag = FILE_COMMON, ento a funo remove o
arquivo da pasta compartilhada para todos os terminais do cliente.
Exemplo:
//--- mostrar a janela de parmetros de entrada quando do lanamento do script
#property script_show_inputs
//--- data para arquivos antigos
input datetime InpFilesDate=D'2013.01.01 00:00';
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
string

file_name;

// varivel para armazenar os nomes dos arquivos

string

filter="*.txt"; // filtrar parar pesquisar os arquivos

datetime create_date;

// data de criao do arquivo

string

files[];

// lista de nome dos arquivos

int

def_size=25;

// tamanho do array por padro

int

size=0;

// nmero de arquivos

//--- alocar memria para o array


ArrayResize(files,def_size);
//--- receber o manipulador de pesquisa na raiz da pasta local

2000-2015, MetaQuotes Software Corp.

1286

Funes de Arquivo
long search_handle=FileFindFirst(filter,file_name);
//--- verificar se FileFindFirst() executada com sucesso
if(search_handle!=INVALID_HANDLE)
{
//--- pesquisando arquivos no loop
do
{
files[size]=file_name;
//--- aumentar o tamanho do array
size++;
if(size==def_size)
{
def_size+=25;
ArrayResize(files,def_size);
}
//--- redefinir o valor de erro
ResetLastError();
//--- receber a data de criao do arquivo
create_date=(datetime)FileGetInteger(file_name,FILE_CREATE_DATE,false);
//--- verificar se o arquivo antigo
if(create_date<InpFilesDate)
{
PrintFormat("%s arquivo deletado!",file_name);
//--- deletado o arquivo antigo
FileDelete(file_name);
}
}
while(FileFindNext(search_handle,file_name));
//--- fechar o manipulador de pesquisa
FileFindClose(search_handle);
}
else
{
Print("Arquivo no encontrado!");
return;
}
//--- verificar quais os arquivos permanecem
PrintFormat("Resultados:");
for(int i=0;i<size;i++)
{
if(FileIsExist(files[i]))
PrintFormat("%s arquivo existe!",files[i]);
else
PrintFormat("%s arquivo deletado!",files[i]);
}
}

2000-2015, MetaQuotes Software Corp.

1287

Funes de Arquivo

FileMove
Move um arquivo a partir de um local ou a partir de pasta compartilhada para outra pasta.
bool FileMove(
const string src_file_name,

// O nome do arquivo para a operao de movimentao

int

// Locao

common_flag,

const string dst_file_name,

// Nome do arquivo de destino

int

// Modo de acesso

mode_flags

);

Parmetros
src_file_name
[in] O nome do arquivo para mover/renomear.
common_flag
[in] Bandeira determinando a localizao do arquivo. Se common_flag = FILE_COMMON, ento o
arquivo est localizado em uma pasta compartilhada para todos os terminais de cliente \Terminal
\Common\Files. Caso contrrio, o arquivo est localizado em uma pasta local (common_flag=0).
dst_file_name
[in] O nome do arquivo aps a operao
mode_flags
[in] Bandeiras de acesso. O parmetro pode conter apenas duas bandeiras: FILE_REWRITE e/ou
FILE_COMMON - outras bandeiras so ignoradas. Se o arquivo j existe e a bandeira
FILE_REWRITE no for especificada, o arquivo no ser reescrito, e a funo retornar false.
Valor do Retorno
Em caso de falha a funo retornar false.
Observao
Por razes de segurana, o trabalho com arquivos estritamente controlada na lngua MQL5.
Arquivos com que as operaes de arquivo so conduzidas usando os meios MQL5, no podem estar
fora da caixa de proteo do arquivo.
Se o novo arquivo j existe, a cpia ser feita dependendo da disponibilidade da bandeira
FILE_REWRITE dentro do parmetro mode_flags.
Exemplo:
//--- mosta a janela dos parmetros de entrada quando lanado o script
#property script_show_inputs
//--- parmetros de entrada
input string InpSrcName="data.txt";
input string InpDstName="newdata.txt";
input string InpSrcDirectory="SomeFolder";
input string InpDstDirectory="OtherFolder";
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

2000-2015, MetaQuotes Software Corp.

1288

Funes de Arquivo
//+------------------------------------------------------------------+
void OnStart()
{
string local=TerminalInfoString(TERMINAL_DATA_PATH);
string common=TerminalInfoString(TERMINAL_COMMONDATA_PATH);
//--- receber caminhos de arquivo
string src_path;
string dst_path;
StringConcatenate(src_path,InpSrcDirectory,"//",InpSrcName);
StringConcatenate(dst_path,InpDstDirectory,"//",InpDstName);
//--- verifica se o arquivo de origem existe (se no - sada)
if(FileIsExist(src_path))

PrintFormat("%s file arquivo existe no %s\\Files\\%s pasta",InpSrcName,local,InpSrcDirectory)


else
{
PrintFormat("Erro, %s arquivo de origem no encontrado",InpSrcName);
return;
}
//--- verifica se o arquivo do resultado j existe
if(FileIsExist(dst_path,FILE_COMMON))
{
PrintFormat("%s arquivo existe no %s\\Files\\%s pasta",InpDstName,common,InpDstDirectory);
//--- arquivo existe, movendo-se deve ser realizado com a flag FILE_REWRITE
ResetLastError();
if(FileMove(src_path,0,dst_path,FILE_COMMON|FILE_REWRITE))
PrintFormat("%s arquivo movido",InpSrcName);
else
PrintFormat("Erro! Cdigo = %d",GetLastError());
}
else
{

PrintFormat("%s arquivo no existe no %s\\Files\\%s pasta",InpDstName,common,InpDstDirectory)


//--- arquivo no existe, movendo-se deve ser realizado sem a flag FILE_REWRITE
ResetLastError();
if(FileMove(src_path,0,dst_path,FILE_COMMON))
PrintFormat("%s arquivo movido",InpSrcName);
else
PrintFormat("Erro! Cdigo = %d",GetLastError());
}
//--- o arquivo movido, vamos verificar-lo fora
if(FileIsExist(dst_path,FILE_COMMON) && !FileIsExist(src_path,0))
Print("Sucesso!");
else
Print("Erro!");
}

Tambm Veja
FileIsExist

2000-2015, MetaQuotes Software Corp.

1289

Funes de Arquivo

FileFlush
Escreve para um disco todos os dados remanescentes dentro da entrada/sada do arquivo buffer.
void FileFlush(
int file_handle

// Manipulador de arquivo

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
Valor do Retorno
Sem valor retornado.
Observao
Ao escrever um arquivo, os dados podem ser realmente encontrados l s depois de algum tempo.
Para salvar os dados no arquivo instantaneamente, utilize a funo FileFlush(). Se a funo no
utilizada, parte dos dados que no tenham sido ainda armazenados no disco, sero forosamente
escritos l apenas quando o arquivo fechado com a funoFileClose().
A funo deve ser usada quando os dados gravados so de um certo valor. Deve-se ter em mente
que freqente chamada de funo podem afetar a velocidade de operao do programa.
Funo FileFlush() deve ser chamado entre as operaes de leitura de um arquivo e grav-lo.
Exemplo:
//--- mostrar a janela de parmetros de entrada quando do lanamento do script
#property script_show_inputs
//--- Nome do arquivo para escrever
input string InpFileName="example.csv"; // nome do arquivo
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- redefine o valor de erro
ResetLastError();
//--- abre o arquivo
int file_handle=FileOpen(InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);
if(file_handle!=INVALID_HANDLE)
{
//--- gravar dados no arquivo
for(int i=0;i<1000;i++)
{
//--- chamar funo de escrever

FileWrite(file_handle,TimeCurrent(),SymbolInfoDouble(Symbol(),SYMBOL_BID),SymbolInfoDouble
//--- salvar os dados no disco a cada iterao (repetio) 128
if((i & 127)==127)

2000-2015, MetaQuotes Software Corp.

1290

Funes de Arquivo
{

//--- agora, os dados sero localizados no arquivo e no sero perdidos no caso de um e


FileFlush(file_handle);
PrintFormat("i = %d, OK",i);
}
//--- 0.01 segunda pausa
Sleep(10);
}
//--- fechar o arquivo
FileClose(file_handle);
}
else
PrintFormat("Erro, cdigo = %d",GetLastError());
}

Tambm Veja
FileClose

2000-2015, MetaQuotes Software Corp.

1291

Funes de Arquivo

FileGetInteger
Obtm uma propriedade inteira de um arquivo. Existem duas variantes da funo.
1. Obtm a propriedade pelo manipulador de um arquivo.
long FileGetInteger(
int

file_handle,

ENUM_FILE_PROPERTY_INTEGER property_id

// Manipular arquivo
// ID Propriedade

);

2. Obtm a propriedade pelo nome do arquivo.


long FileGetInteger(
const string

file_name,

// Nome do arquivo

ENUM_FILE_PROPERTY_INTEGER property_id,

// ID Propriedade

bool

// O arquivo visto em uma pasta local (false

common_folder=false

);

// ou uma pasta comum de todos os terminais (t

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
file_name
[in] Nome do arquivo.
property_id
[in]
Propriedade ID do arquivo. O valor pode ser um dos valores da enumerao
ENUM_FILE_PROPERTY_INTEGER. Se a segunda variante da funo usada, voc pode receber
apenas os valores das
seguintes propriedades: FILE_EXISTS, FILE_CREATE_DATE,
FILE_MODIFY_DATE, FILE_ACCESS_DATE e FILE_SIZE.
common_folder=false
[in] Pontos para localizao de arquivo. Se o parmetro false, pasta de dados do terminal
visualizada. Caso contrrio, presume-se que o arquivo est na pasta compartilhada por todos os
terminais \Terminal\Common\Files(FILE_COMMON).
Valor do Retorno
O valor da propriedade. Em caso de erro, -1 retornado. Para obter um cdigo de erro usar a
funo GetLastError().
Se uma pasta est especificada quando obtida a propriedade pelo nome, a funo ter erro 5018
(ERR_MQL_FILE_IS_DIRECTORY) em qualquer caso, embora o valor de retorno ser correto.
Observao
A funo sempre altera o cdigo de erro. Em caso de concluso bem sucedida, o cdigo de erro
redefinido para NULL.
Exemplo:
//--- mosta a janela dos parmetros de entrada quando lanado o script

2000-2015, MetaQuotes Software Corp.

1292

Funes de Arquivo
#property script_show_inputs
//--- parmetros de entrada
input string InpFileName="data.csv";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
string path=InpDirectoryName+"//"+InpFileName;
long

l=0;

//--- abre o arquivo


ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_CSV);
if(handle!=INVALID_HANDLE)
{
//--- imprimir todas as informaes sobre o arquivo
Print(InpFileName," informao de arquivo:");
FileInfo(handle,FILE_EXISTS,l,"bool");
FileInfo(handle,FILE_CREATE_DATE,l,"data");
FileInfo(handle,FILE_MODIFY_DATE,l,"data");
FileInfo(handle,FILE_ACCESS_DATE,l,"data");
FileInfo(handle,FILE_SIZE,l,"outros");
FileInfo(handle,FILE_POSITION,l,"outros");
FileInfo(handle,FILE_END,l,"bool");
FileInfo(handle,FILE_IS_COMMON,l,"bool");
FileInfo(handle,FILE_IS_TEXT,l,"bool");
FileInfo(handle,FILE_IS_BINARY,l,"bool");
FileInfo(handle,FILE_IS_CSV,l,"bool");
FileInfo(handle,FILE_IS_ANSI,l,"bool");
FileInfo(handle,FILE_IS_READABLE,l,"bool");
FileInfo(handle,FILE_IS_WRITABLE,l,"bool");
//--- fechar o arquivo
FileClose(handle);
}
else
PrintFormat("%s arquivo no est aberto, ErrorCode = %d",InpFileName,GetLastError());
}
//+------------------------------------------------------------------+
//| Mostrar o valor da propriedade de arquivo

//+------------------------------------------------------------------+
void FileInfo(const int handle,const ENUM_FILE_PROPERTY_INTEGER id,
long l,const string type)
{
//--- receber o valor da propriedade
ResetLastError();
if((l=FileGetInteger(handle,id))!=-1)
{
//--- o valor recebido, exibi-lo no formato correto

2000-2015, MetaQuotes Software Corp.

1293

Funes de Arquivo
if(!StringCompare(type,"bool"))
Print(EnumToString(id)," = ",l ? "true" : "false");
if(!StringCompare(type,"date"))
Print(EnumToString(id)," = ",(datetime)l);
if(!StringCompare(type,"other"))
Print(EnumToString(id)," = ",l);
}
else
Print("Error, Code = ",GetLastError());
}

Tambm Veja
Operaes de Arquivos, Propriedades de Arquivos

2000-2015, MetaQuotes Software Corp.

1294

Funes de Arquivo

FileIsEnding
Define o final do arquivo em processo de leitura.
bool FileIsEnding(
int file_handle

// Manipulador de arquivo

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
Valor do Retorno
A funo retorna verdadeiro se o fim do arquivo foi alcanado no processo de leitura ou em
movimento do ponteiro de arquivo.
Observao
Para definir o final do arquivo, a funo tenta ler a prxima string a partir dele. Se a string no
existe, a funo retorna true, caso contrrio, retorna false.
Exemplo:
//--- mostrar a janela de parmetros de entrada quando do lanamento do script
#property script_show_inputs
//--- parmetros de entrada
input string InpFileName="file.txt";

// nome do arquivo

input string InpDirectoryName="Data";

// nome do diretrio

input int

InpEncodingType=FILE_ANSI; // ANSI=32 ou UNICODE=64

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Imprimir o caminho para o arquivo que vamos usar
PrintFormat("Trabalhando %s\\Arquivos\\ pasta",TerminalInfoString(TERMINAL_DATA_PATH));
//--- redefine o valor de erro
ResetLastError();
//--- abrir um arquivo para leitura(se no existe arquivo, ocorrer um erro)
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_TXT|InpEncodingType);
if(file_handle!=INVALID_HANDLE)
{
//--- imprimir o contedo do arquivo
while(!FileIsEnding(file_handle))
Print(FileReadString(file_handle));
//--- fechar o arquivo
FileClose(file_handle);
}
else
PrintFormat("Erro, cdigo = %d",GetLastError());

2000-2015, MetaQuotes Software Corp.

1295

Funes de Arquivo
}

2000-2015, MetaQuotes Software Corp.

1296

Funes de Arquivo

FileIsLineEnding
Define o final da linha do arquivo de texto em processo de leitura.
bool FileIsLineEnding(
int file_handle

// Manipulador de arquivo

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
Valor do Retorno
Retorna true se no processo de leitura do arquivo txt ou csv chegou ao fim da linha (os caracteres
CR-LF).
Exemplo (o arquivo obtido durante a execuo de um exemplo para a funo FileWriteString usado
aqui)
//+------------------------------------------------------------------+
//|

Demo_FileIsLineEnding.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots

//---- Plotar Etiqueta1


#property indicator_label1

"Sobre-compra & Sobre-venda"

#property indicator_type1

DRAW_COLOR_BARS

#property indicator_color1

clrRed, clrBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- paramtros para leitura de dados


input string InpFileName="RSI.csv";

// nome do arquivo

input string InpDirectoryName="Data"; // nome do diretrio


//--- buffers do indicador
double

open_buff[];

double

high_buff[];

double

low_buff[];

double

close_buff[];

double

color_buff[];

//--- variveis sobre-comprado


int

ovb_ind=0;

int

ovb_size=0;

datetime ovb_time[];

2000-2015, MetaQuotes Software Corp.

1297

Funes de Arquivo
//--- variveis sobre-vendido
int

ovs_ind=0;

int

ovs_size=0;

datetime ovs_time[];
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- variveis de tamanhos de array por padro
int ovb_def_size=100;
int ovs_def_size=100;
//--- alocar memria para arrays
ArrayResize(ovb_time,ovb_def_size);
ArrayResize(ovs_time,ovs_def_size);
//--- abre o arquivo
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_CSV|FILE_ANSI);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para leitura",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
double value;
//--- ler dados de um arquivo
while(!FileIsEnding(file_handle))
{
//--- ler o primeiro valor na string
value=FileReadNumber(file_handle);
//--- ler diferentes arrays de acordo com o resultado da funo
if(value>=70)
ReadData(file_handle,ovb_time,ovb_size,ovb_def_size);
else
ReadData(file_handle,ovs_time,ovs_size,ovs_def_size);
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Os dados so escritos, %s arquivo esta fechado",InpFileName);
}
else
{
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
return(INIT_FAILED);
}
//--- ligando as arrays
SetIndexBuffer(0,open_buff,INDICATOR_DATA);
SetIndexBuffer(1,high_buff,INDICATOR_DATA);
SetIndexBuffer(2,low_buff,INDICATOR_DATA);
SetIndexBuffer(3,close_buff,INDICATOR_DATA);
SetIndexBuffer(4,color_buff,INDICATOR_COLOR_INDEX);

2000-2015, MetaQuotes Software Corp.

1298

Funes de Arquivo
//---- definir os valores dos indicadores que no sero visveis no grfico
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Ler dados do arquivo da string

//+------------------------------------------------------------------+
void ReadData(const int file_handle,datetime &arr[],int &size,int &def_size)
{
bool flag=false;
//--- alcanada a leitura at o final da string ou do arquivo
while(!FileIsLineEnding(file_handle) && !FileIsEnding(file_handle))
{
//--- deslocar o transporte aps a leitura do nmero
if(flag)
FileReadNumber(file_handle);
//--- armazenar a data atual
arr[size]=FileReadDatetime(file_handle);
size++;
//--- aumentar tamanho da array, se necessrio
if(size==def_size)
{
def_size+=100;
ArrayResize(arr,def_size);
}
//--- passar despercebido a primeira iterao
flag=true;
}
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
ArraySetAsSeries(time,false);
ArraySetAsSeries(open,false);
ArraySetAsSeries(high,false);
ArraySetAsSeries(low,false);
ArraySetAsSeries(close,false);

2000-2015, MetaQuotes Software Corp.

1299

Funes de Arquivo
//---o loop para as barras que ainda no foram manipuladas
for(int i=prev_calculated;i<rates_total;i++)
{
//--- 0 por padro
open_buff[i]=0;
high_buff[i]=0;
low_buff[i]=0;
close_buff[i]=0;
color_buff[i]=0;
//--- verificar se qualquer data continua presente
if(ovb_ind<ovb_size)
for(int j=ovb_ind;j<ovb_size;j++)
{
//--- se as datas coincidem, a barra est na zona de sobre-compra
if(time[i]==ovb_time[j])
{
open_buff[i]=open[i];
high_buff[i]=high[i];
low_buff[i]=low[i];
close_buff[i]=close[i];
//--- 0 - cor vermelha
color_buff[i]=0;
//--- aumentar o contador
ovb_ind=j+1;
break;
}
}
//--- verificar se todos os dados continuam a existir
if(ovs_ind<ovs_size)
for(int j=ovs_ind;j<ovs_size;j++)
{
//--- se as datas coincidem, a barra est na zona de sobre-venda
if(time[i]==ovs_time[j])
{
open_buff[i]=open[i];
high_buff[i]=high[i];
low_buff[i]=low[i];
close_buff[i]=close[i];
//--- 1 - cor azul
color_buff[i]=1;
//--- aumentar o contador
ovs_ind=j+1;
break;
}
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

2000-2015, MetaQuotes Software Corp.

1300

Funes de Arquivo
//+------------------------------------------------------------------+
//| Manipulador de eventos ChartEvent

//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam
)
{
//---alterar a largura indicador de acordo com a escala
if(ChartGetInteger(0,CHART_SCALE)>3)
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,2);
else
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,1);
}

Tambm Veja
FileWriteString

2000-2015, MetaQuotes Software Corp.

1301

Funes de Arquivo

FileReadArray
L a partir de um arquivo do tipo arrays BIN de qualquer tipo, exceto string (pode ser uma array de
estruturas, no contendo strings e arrays dinmicas).
uint FileReadArray(
int

file_handle,

// Manipular arquivo

void& array[],

// Array para gravar

int

start=0,

// Iniciar posio array para escrever

int

count=WHOLE_ARRAY

// contar para ler

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
array[]
[out] Uma array onde os dados sero carregados.
start=0
[in] Posio inicial para escrever para o array.
count=WHOLE_ARRAY
[in] Nmero de elementos para ler. Pelo padro, ler todo o array (count=WHOLE_ARRAY).
Valor do Retorno
Nmero de elementos para ler.
Observao
Array de seqncias pode ser lido apenas a partir do arquivo do tipo TXT. Se necessrio, a funo
tenta aumentar o tamanho do array.
Exemplo (o arquivo obtido aps a execuo do exemplo pela funo FileWriteArray usado aqui)
//--- mosta a janela dos parmetros de entrada quando lanado o script
#property script_show_inputs
//--- parmetros de entrada
input string InpFileName="data.bin";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| Estrutura para armazenamento de dados de preos

//+------------------------------------------------------------------+
struct prices
{
datetime

date; // data

double

bid;

// bid preo

double

ask;

// ask preo

};
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

2000-2015, MetaQuotes Software Corp.

1302

Funes de Arquivo
//+------------------------------------------------------------------+
void OnStart()
{
//--- estrutura array
prices arr[];
//--- caminho do arquivo
string path=InpDirectoryName+"//"+InpFileName;
//--- abre o arquivo
ResetLastError();
int file_handle=FileOpen(path,FILE_READ|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
//--- ler todos os dados do arquivo para o array
FileReadArray(file_handle,arr);
//--- receber o tamanho do array
int size=ArraySize(arr);
//--- imprimir dados a partir do array
for(int i=0;i<size;i++)
Print("Data = ",arr[i].date," Bid = ",arr[i].bid," Ask = ",arr[i].ask);
Print("Dados total = ",size);
//--- fechar o arquivo
FileClose(file_handle);
}
else
Print("Abrir arquivo falhou, erro ",GetLastError());
}

Tambm Veja
Variveis,FileWriteArray

2000-2015, MetaQuotes Software Corp.

1303

Funes de Arquivo

FileReadBool
L a partir do arquivo de CSV de tipo string a partir da posio atual para um delimitador (ou at o fim
da linha de texto) e converte a leitura string para um valor de tipo bool.
bool FileReadBool(
int file_handle

// Manipular arquivo

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
Valor do Retorno
Linha de leitura pode ser definida como "true", "false" ou a representao simblica de inteiros "0"
ou "1". Um valor diferente de zero convertido para um true lgico. A funo retorna o valor
convertido.
Exemplo (o arquivo obtido aps a execuo do exemplo pela funo FileWrite usado aqui)
//+------------------------------------------------------------------+
//|

Demo_FileReadBool.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots

//---- Plotar Etiqueta1


#property indicator_label1

"UpSignal"

#property indicator_type1

DRAW_ARROW

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//---- plotar Label2


#property indicator_label2

"DownSignal"

#property indicator_type2

DRAW_ARROW

#property indicator_color2

clrRed

#property indicator_style2

STYLE_SOLID

#property indicator_width2

//--- paramtros para leitura de dados


input string InpFileName="MACD.csv";

// file name

input string InpDirectoryName="Data"; // nome do diretrio


//--- variveis globais
int

ind=0;

// ndice

double

upbuff[];

// buffers indicador de setas para cima

2000-2015, MetaQuotes Software Corp.

1304

Funes de Arquivo
double

downbuff[];

bool

sign_buff[]; // sinal array (verdadeiro - comprar, falso - vender)

// buffers indicador de setas para baix

datetime time_buff[]; // conjunto de chegada dos sinais time


int

size=0;

// tamanho de arrays de sinal

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- abre o arquivo
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_CSV);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo esta aberto para leitura",InpFileName);
//--- em primeiro lugar, ler o nmero de sinais
size=(int)FileReadNumber(file_handle);
//--- alocar memria para os arrays
ArrayResize(sign_buff,size);
ArrayResize(time_buff,size);
//--- ler dados de um arquivo
for(int i=0;i<size;i++)
{
//--- tempo de sinal
time_buff[i]=FileReadDatetime(file_handle);
//--- valor do sinal
sign_buff[i]=FileReadBool(file_handle);
}
//--- fechar o arquivo
FileClose(file_handle);
}
else
{
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
return(INIT_FAILED);
}
//--- ligando as arrays
SetIndexBuffer(0,upbuff,INDICATOR_DATA);
SetIndexBuffer(1,downbuff,INDICATOR_DATA);
//--- definir o cdigo smbolo para desenho em PLOT_ARROW
PlotIndexSetInteger(0,PLOT_ARROW,241);
PlotIndexSetInteger(1,PLOT_ARROW,242);
//---- definir os valores dos indicadores que no sero vistos no grfico
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1305

Funes de Arquivo
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
ArraySetAsSeries(time,false);
ArraySetAsSeries(low,false);
ArraySetAsSeries(high,false);
//---o loop para as barras que ainda no foram manipuladas
for(int i=prev_calculated;i<rates_total;i++)
{
//--- 0 por padro
upbuff[i]=0;
downbuff[i]=0;
//---verificar se todos os dados ainda esto presente
if(ind<size)
{
for(int j=ind;j<size;j++)
{
//--- se as datas coincidem, usar o valor do arquivo
if(time[i]==time_buff[j])
{
//--- desenhar a seta de acordo com o sinal
if(sign_buff[j])
upbuff[i]=high[i];
else
downbuff[i]=low[i];
//--- aumentar o contador
ind=j+1;
break;
}
}
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
Tipo bool, FileWrite

2000-2015, MetaQuotes Software Corp.

1306

Funes de Arquivo

FileReadDatetime
L a partir do arquivo do tipo CSV uma string de um dos formatos: "YYYY.MM.DD HH:MM:SS",
"YYYY.MM.DD" ou "HH:MM:SS" - e converte-os dentro de valor do tipo datetime.
datetime FileReadDatetime(
int file_handle

// Manipular arquivo

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
Valor do Retorno
O valor do tipo datetime.
Exemplo (o arquivo obtido aps a execuo do exemplo pela funo FileWrite usado aqui)
//+------------------------------------------------------------------+
//|

Demo_FileReadDateTime.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots

//---- Plotar Etiqueta1


#property indicator_label1

"UpSignal"

#property indicator_type1

DRAW_ARROW

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//---- plotar Label2


#property indicator_label2

"DownSignal"

#property indicator_type2

DRAW_ARROW

#property indicator_color2

clrRed

#property indicator_style2

STYLE_SOLID

#property indicator_width2

//--- paramtros para leitura de dados


input string InpFileName="MACD.csv";

// file name

input string InpDirectoryName="Data"; // nome do diretrio


//--- variveis globais
int

ind=0;

// ndice

double

upbuff[];

// buffers indicador de setas para cima

double

downbuff[];

// buffers indicador de setas para baix

bool

sign_buff[]; // sinal array (verdadeiro - comprar, falso - vender)

2000-2015, MetaQuotes Software Corp.

1307

Funes de Arquivo
datetime time_buff[]; // conjunto de chegada dos sinais time
int

size=0;

// tamanho de arrays de sinal

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- abre o arquivo
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_CSV);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo esta aberto para leitura",InpFileName);
//--- em primeiro lugar, ler o nmero de sinais
size=(int)FileReadNumber(file_handle);
//--- alocar memria para os arrays
ArrayResize(sign_buff,size);
ArrayResize(time_buff,size);
//--- ler dados de um arquivo
for(int i=0;i<size;i++)
{
//--- tempo de sinal
time_buff[i]=FileReadDatetime(file_handle);
//--- valor do sinal
sign_buff[i]=FileReadBool(file_handle);
}
//--- fechar o arquivo
FileClose(file_handle);
}
else
{
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
return(INIT_FAILED);
}
//--- ligando as arrays
SetIndexBuffer(0,upbuff,INDICATOR_DATA);
SetIndexBuffer(1,downbuff,INDICATOR_DATA);
//--- definir o cdigo smbolo para desenho em PLOT_ARROW
PlotIndexSetInteger(0,PLOT_ARROW,241);
PlotIndexSetInteger(1,PLOT_ARROW,242);
//---- definir os valores dos indicadores que no sero vistos no grfico
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1308

Funes de Arquivo
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
ArraySetAsSeries(time,false);
ArraySetAsSeries(low,false);
ArraySetAsSeries(high,false);
//---o loop para as barras que ainda no foram manipuladas
for(int i=prev_calculated;i<rates_total;i++)
{
//--- 0 por padro
upbuff[i]=0;
downbuff[i]=0;
//---verificar se todos os dados ainda esto presente
if(ind<size)
{
for(int j=ind;j<size;j++)
{
//--- se as datas coincidem, usar o valor do arquivo
if(time[i]==time_buff[j])
{
//--- desenhar a seta de acordo com o sinal
if(sign_buff[j])
upbuff[i]=high[i];
else
downbuff[i]=low[i];
//--- aumentar o contador
ind=j+1;
break;
}
}
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
Tipo datetime, StringToTime, TimeToString, FileWrite

2000-2015, MetaQuotes Software Corp.

1309

Funes de Arquivo

FileReadDouble
L uma dupla preciso de nmero de ponto (double) flutuante a partir da posio atual do arquivo
binrio.
double FileReadDouble(
int file_handle

// Manipular arquivo

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
Valor do Retorno
Valor de tipo double.
Observao
Para mais detalhes sobre erro, chamar GetLastError().
Exemplo (o arquivo obtido aps a execuo do exemplo para a funo FileWriteDouble usado aqui)
//+------------------------------------------------------------------+
//|

Demo_FileReadDouble.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//---- Plotar Etiqueta1


#property indicator_label1

"MA"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrGreen

#property indicator_style1

STYLE_SOLID

#property indicator_width1

#property indicator_separate_window
//--- leitura de dados de parmetros
input string InpFileName="MA.csv";

// nome do arquivo

input string InpDirectoryName="Data"; // nome do diretrio


//--- variveis globais
int

ind=0;

int

size=0;

double

ma_buff[];

datetime time_buff[];
//--- buffer do indicador
double

buff[];

2000-2015, MetaQuotes Software Corp.

1310

Funes de Arquivo
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- abre o arquivo
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para leitura",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- em primeiro lugar, ler a quantidade de dados no arquivo
size=(int)FileReadDouble(file_handle);
//--- alocar memria para os arrays
ArrayResize(ma_buff,size);
ArrayResize(time_buff,size);
//--- ler dados de um arquivo
for(int i=0;i<size;i++)
{
time_buff[i]=(datetime)FileReadDouble(file_handle);
ma_buff[i]=FileReadDouble(file_handle);
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Os dados so escritos, %s arquivo esta fechado",InpFileName);
}
else
{
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
return(INIT_FAILED);
}
//--- Associa o array ao buffer do indicador com ndice 0
SetIndexBuffer(0,buff,INDICATOR_DATA);
//---- definir os valores dos indicadores que no sero visveis no grfico
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],

2000-2015, MetaQuotes Software Corp.

1311

Funes de Arquivo
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
ArraySetAsSeries(time,false);
//---o loop para as barras que ainda no foram manipuladas
for(int i=prev_calculated;i<rates_total;i++)
{
//--- 0 por padro
buff[i]=0;
//--- verificar se todos os dados continuam a existir
if(ind<size)
{
for(int j=ind;j<size;j++)
{
//--- se as datas coincidem, usar o valor do arquivo
if(time[i]==time_buff[j])
{
buff[i]=ma_buff[j];
//--- aumentar o contador
ind=j+1;
break;
}
}
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
Tipos reais (double, float), StringToDouble, DoubleToString, FileWriteDouble

2000-2015, MetaQuotes Software Corp.

1312

Funes de Arquivo

FileReadFloat
L a preciso simples de um nmero (float) de ponto a partir da posio atual do arquivo binrio.
float FileReadFloat(
int file_handle

// Manipular arquivo

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
Valor do Retorno
O valor do tipo float.
Observao
Para mais detalhes sobre erro, chamar GetLastError().
Exemplo (o arquivo obtido aps a execuo do exemplo pela funo FileWriteFloat usado aqui)
//+------------------------------------------------------------------+
//|

Demo_FileReadFloat.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots

//---- Plotar Etiqueta1


#property indicator_label1

"CloseLine"

#property indicator_type1

DRAW_COLOR_LINE

#property indicator_color1

clrRed,clrBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- paramtros para leitura de dados


input string InpFileName="Close.bin"; // file name
input string InpDirectoryName="Data"; // nome do diretrio
//--- variveis globais
int

ind=0;

int

size=0;

double

close_buff[];

datetime time_buff[];
//--- buffers do indicador
double

buff[];

double

color_buff[];

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1313

Funes de Arquivo
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
int def_size=100;
//--- alocar memria para os arrays
ArrayResize(close_buff,def_size);
ArrayResize(time_buff,def_size);
//--- abre o arquivo
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para leitura",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- ler dados de um arquivo
while(!FileIsEnding(file_handle))
{
//--- ler valores de tempo e preo
time_buff[size]=(datetime)FileReadDouble(file_handle);
close_buff[size]=(double)FileReadFloat(file_handle);
size++;
//--- aumentar o tamanho do array, se eles esto transbordados
if(size==def_size)
{
def_size+=100;
ArrayResize(close_buff,def_size);
ArrayResize(time_buff,def_size);
}
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Dados so lidos, %s arquivo est fechado",InpFileName);
}
else
{
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
return(INIT_FAILED);
}
//--- ligar arrays para os buffers de indicadores
SetIndexBuffer(0,buff,INDICATOR_DATA);
SetIndexBuffer(1,color_buff,INDICATOR_COLOR_INDEX);
//---- definir os valores dos indicadores que no sero visveis no grfico
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

2000-2015, MetaQuotes Software Corp.

1314

Funes de Arquivo
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
ArraySetAsSeries(time,false);
//---o loop para as barras que ainda no foram manipuladas
for(int i=prev_calculated;i<rates_total;i++)
{
//--- 0 por padro
buff[i]=0;
color_buff[i]=0; // cor vermelha por padro
//---verificar se todos os dados ainda esto presente
if(ind<size)
{
for(int j=ind;j<size;j++)
{
//--- se as datas coincidem, usar o valor do arquivo
if(time[i]==time_buff[j])
{
//--- receber o preo
buff[i]=close_buff[j];
//--- se o preo atual excede o anterior, a cor azul
if(buff[i-1]>buff[i])
color_buff[i]=1;
//--- aumentar o contador
ind=j+1;
break;
}
}
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
Tipos Reais (double, float), FileReadDouble, FileWriteFloat

2000-2015, MetaQuotes Software Corp.

1315

Funes de Arquivo

FileReadInteger
A funo l os valores int, short ou char a partir da posio atual do ponteiro do arquivo, dependendo
do comprimento especificado em bytes.
int FileReadInteger(
int file_handle,

// Manipular Arquivo

int size=INT_VALUE

// Tamanho de um inteiro em bytes

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
size=INT_VALUE
[in] Nmero de bytes (at 4 inclusive), que devem ser lidos. As constantes correspondentes so
fornecidos: CHAR_VALUE = 1, SHORT_VALUE = 2 e INT_VALUE = 4, ento a funo pode ler todo o
valor do tipo char, short ou int.
Valor do Retorno
Um valor do tipo int. O resultado desta funo deve ser explicitamente convertido para um tipo de
destino, ou seja, para o tipo de dados que voc precisa ler. Uma vez que um valor do tipo int
retornado, ele pode ser facilmente convertido para qualquer valor inteiro. O ponteiro do arquivo
deslocado pelo nmero de bytes lidos.
Observao
Quando ler menos do que 4 bytes, o resultado recebido sempre positivo. Se um ou dois bytes so
lidos, o sinal do nmero pode ser determinado por colagem explcita do tipo char (1 byte) ou short (2
bytes). Recebendo o sinal para um nmero de trs bytes no simples, uma vez que no h
nenhuma correspondente tipo subjacente.
Exemplo (o arquivo obtido aps a execuo do exemplo pela funo FileWriteInteger usado aqui)
//+------------------------------------------------------------------+
//|

Demo_FileReadInteger.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//---- Plotar Etiqueta1


#property indicator_label1

"Trends"

#property indicator_type1

DRAW_SECTION

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

2000-2015, MetaQuotes Software Corp.

1316

Funes de Arquivo
#property indicator_width1

//--- paramtros para leitura de dados


input string InpFileName="Trend.bin"; // file name
input string InpDirectoryName="Data"; // nome do diretrio
//--- variveis globais
int

ind=0;

int

size=0;

datetime time_buff[];
//--- buffers do indicador
double

buff[];

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
int def_size=100;
//--- alocar memria para o array
ArrayResize(time_buff,def_size);
//--- abre o arquivo
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para leitura",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- variveis adicionais
int

arr_size;

uchar

arr[];

//--- ler dados de um arquivo


while(!FileIsEnding(file_handle))
{
//--- descobrir quantos smbolos so usados para escrever o tempo
arr_size=FileReadInteger(file_handle,INT_VALUE);
ArrayResize(arr,arr_size);
for(int i=0;i<arr_size;i++)
arr[i]=(char)FileReadInteger(file_handle,CHAR_VALUE);
//--- armazenar o valor de tempo
time_buff[size]=StringToTime(CharArrayToString(arr));
size++;
//--- aumentar as dimenses arrays, se so transbordados
if(size==def_size)
{
def_size+=100;
ArrayResize(time_buff,def_size);
}
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Dados so lidos, %s arquivo est fechado",InpFileName);

2000-2015, MetaQuotes Software Corp.

1317

Funes de Arquivo
}
else
{
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
return(INIT_FAILED);
}
//--- ligar array para buffer de indicador
SetIndexBuffer(0,buff,INDICATOR_DATA);
//---- definir os valores dos indicadores que no sero visveis no grfico
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
ArraySetAsSeries(time,false);
ArraySetAsSeries(close,false);
//---o loop para as barras que ainda no foram manipuladas
for(int i=prev_calculated;i<rates_total;i++)
{
//--- 0 por padro
buff[i]=0;
//---verificar se todos os dados ainda esto presente
if(ind<size)
{
for(int j=ind;j<size;j++)
{
//--- se as datas coincidem, usar o valor do arquivo
if(time[i]==time_buff[j])
{
//--- receber o preo
buff[i]=close[i];
//--- aumentar o contador
ind=j+1;
break;
}
}

2000-2015, MetaQuotes Software Corp.

1318

Funes de Arquivo
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
IntegerToString, StringToInteger, Tipos inteiros, FileWriteInteger

2000-2015, MetaQuotes Software Corp.

1319

Funes de Arquivo

FileReadLong
A funo l um inteiro do tipo long (8 bytes) a partir da posio atual do arquivo binrio.
long FileReadLong(
int file_handle

// Manipular arquivo

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
Valor do Retorno
Valor de tipo long.
Exemplo (o arquivo obtido durante a execuo de um exemplo para a funo FileWriteLong usado
aqui)
//+------------------------------------------------------------------+
//|

Demo_FileReadLong.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property indicator_buffers 1
#property indicator_plots

//---- Plotar Etiqueta1


#property indicator_label1

"Volume"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrYellow

#property indicator_style1

STYLE_SOLID

#property indicator_width1

#property indicator_separate_window
//--- paramtros para leitura de dados
input string InpFileName="Volume.bin"; // file name
input string InpDirectoryName="Data";

// directory name

//--- variveis globais


int

ind=0;

int

size=0;

long

volume_buff[];

datetime time_buff[];
//--- buffers do indicador
double

buff[];

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()

2000-2015, MetaQuotes Software Corp.

1320

Funes de Arquivo
{
//--- abre o arquivo
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est aberto para escrita",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- em primeiro lugar, ler a quantidade de dados no arquivo
size=(int)FileReadLong(file_handle);
//--- alocar memria para os arrays
ArrayResize(volume_buff,size);
ArrayResize(time_buff,size);
//--- ler dados de um arquivo
for(int i=0;i<size;i++)
{
time_buff[i]=(datetime)FileReadLong(file_handle);
volume_buff[i]=FileReadLong(file_handle);
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Dados so lidos, %s arquivo est fechado",InpFileName);
}
else
{
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
return(INIT_FAILED);
}
//--- associa o array ao buffer do indicador com ndice 0
SetIndexBuffer(0,buff,INDICATOR_DATA);
//---- definir os valores dos indicadores que sero visveis no grfico
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{

2000-2015, MetaQuotes Software Corp.

1321

Funes de Arquivo
ArraySetAsSeries(time,false);
//---o loop para as barras que ainda no foram manipuladas
for(int i=prev_calculated;i<rates_total;i++)
{
//--- 0 por padro
buff[i]=0;
//---verificar se todos os dados ainda esto presente
if(ind<size)
{
for(int j=ind;j<size;j++)
{
//--- se as datas coincidem, usar o valor do arquivo
if(time[i]==time_buff[j])
{
buff[i]=(double)volume_buff[j];
ind=j+1;
break;
}
}
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
Tipos Inteiros, FileReadInteger, FileWriteLong

2000-2015, MetaQuotes Software Corp.

1322

Funes de Arquivo

FileReadNumber
A funo l do arquivo CSV uma string a partir da posio atual at um separador (ou at o fim de uma
seqncia de texto) e converte a string de leitura para um valor do tipo double.
double FileReadNumber(
int file_handle

// Manipular arquivo

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
Valor do Retorno
Valor de tipo double.
Exemplo (o arquivo obtido durante a execuo de um exemplo para a funo FileWriteString usado
aqui)
//+------------------------------------------------------------------+
//|

Demo_FileReadNumber.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots

//---- Plotar Etiqueta1


#property indicator_label1

"Sobre-compra & Sobre-venda"

#property indicator_type1

DRAW_COLOR_BARS

#property indicator_color1

clrRed, clrBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- paramtros para leitura de dados


input string InpFileName="RSI.csv";

// nome do arquivo

input string InpDirectoryName="Data"; // nome do diretrio


//--- buffers do indicador
double

open_buff[];

double

high_buff[];

double

low_buff[];

double

close_buff[];

double

color_buff[];

//--- variveis sobre-comprado


int

ovb_ind=0;

int

ovb_size=0;

datetime ovb_time[];

2000-2015, MetaQuotes Software Corp.

1323

Funes de Arquivo
//--- variveis sobre-vendido
int

ovs_ind=0;

int

ovs_size=0;

datetime ovs_time[];
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- variveis de tamanhos de array por padro
int ovb_def_size=100;
int ovs_def_size=100;
//--- alocar memria para arrays
ArrayResize(ovb_time,ovb_def_size);
ArrayResize(ovs_time,ovs_def_size);
//--- abre o arquivo
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_CSV|FILE_ANSI);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para leitura",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
double value;
//--- ler dados de um arquivo
while(!FileIsEnding(file_handle))
{
//--- ler o primeiro valor na string
value=FileReadNumber(file_handle);
//--- ler diferentes arrays de acordo com o resultado da funo
if(value>=70)
ReadData(file_handle,ovb_time,ovb_size,ovb_def_size);
else
ReadData(file_handle,ovs_time,ovs_size,ovs_def_size);
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Os dados so escritos, %s arquivo esta fechado",InpFileName);
}
else
{
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
return(INIT_FAILED);
}
//--- ligando as arrays
SetIndexBuffer(0,open_buff,INDICATOR_DATA);
SetIndexBuffer(1,high_buff,INDICATOR_DATA);
SetIndexBuffer(2,low_buff,INDICATOR_DATA);
SetIndexBuffer(3,close_buff,INDICATOR_DATA);
SetIndexBuffer(4,color_buff,INDICATOR_COLOR_INDEX);

2000-2015, MetaQuotes Software Corp.

1324

Funes de Arquivo
//---- definir os valores dos indicadores que no sero visveis no grfico
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Ler dados do arquivo da string

//+------------------------------------------------------------------+
void ReadData(const int file_handle,datetime &arr[],int &size,int &def_size)
{
bool flag=false;
//--- alcanada a leitura at o final da string ou do arquivo
while(!FileIsLineEnding(file_handle) && !FileIsEnding(file_handle))
{
//--- deslocar o transporte aps a leitura do nmero
if(flag)
FileReadNumber(file_handle);
//--- armazenar a data atual
arr[size]=FileReadDatetime(file_handle);
size++;
//--- aumentar tamanho da array, se necessrio
if(size==def_size)
{
def_size+=100;
ArrayResize(arr,def_size);
}
//--- passar despercebido a primeira iterao
flag=true;
}
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
ArraySetAsSeries(time,false);
ArraySetAsSeries(open,false);
ArraySetAsSeries(high,false);
ArraySetAsSeries(low,false);
ArraySetAsSeries(close,false);

2000-2015, MetaQuotes Software Corp.

1325

Funes de Arquivo
//---o loop para as barras que ainda no foram manipuladas
for(int i=prev_calculated;i<rates_total;i++)
{
//--- 0 por padro
open_buff[i]=0;
high_buff[i]=0;
low_buff[i]=0;
close_buff[i]=0;
color_buff[i]=0;
//--- verificar se qualquer data continua presente
if(ovb_ind<ovb_size)
for(int j=ovb_ind;j<ovb_size;j++)
{
//--- se as datas coincidem, a barra est na zona de sobre-compra
if(time[i]==ovb_time[j])
{
open_buff[i]=open[i];
high_buff[i]=high[i];
low_buff[i]=low[i];
close_buff[i]=close[i];
//--- 0 - cor vermelha
color_buff[i]=0;
//--- aumentar o contador
ovb_ind=j+1;
break;
}
}
//--- verificar se todos os dados continuam a existir
if(ovs_ind<ovs_size)
for(int j=ovs_ind;j<ovs_size;j++)
{
//--- se as datas coincidem, a barra est na zona de sobre-venda
if(time[i]==ovs_time[j])
{
open_buff[i]=open[i];
high_buff[i]=high[i];
low_buff[i]=low[i];
close_buff[i]=close[i];
//--- 1 - cor azul
color_buff[i]=1;
//--- aumentar o contador
ovs_ind=j+1;
break;
}
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

2000-2015, MetaQuotes Software Corp.

1326

Funes de Arquivo
//+------------------------------------------------------------------+
//| Manipulador de eventos ChartEvent

//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam
)
{
//---alterar a largura indicador de acordo com a escala
if(ChartGetInteger(0,CHART_SCALE)>3)
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,2);
else
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,1);
}

Tambm Veja
FileWriteString

2000-2015, MetaQuotes Software Corp.

1327

Funes de Arquivo

FileReadString
A funo l uma string a partir da posio atual do ponteiro de arquivo dentro de um arquivo.
string FileReadString(
int file_handle,

// Manipular arquivo

int length=-1

// Comprimento string

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
length=-1
[in] Nmero de caracteres para ler.
Valor do Retorno
Ler linha (string).
Observao
Quando ler a partir de um arquivo bin, o tamanho de uma string para ler deve ser especificada.
Quando ler a partir de um arquivo txt, o tamanho da string no necessria, e a string ser lida a
partir da posio atual para a alimentao da linha caractere "\r\n". Quando ler a partir de um
arquivo CSV,o tamanho da string no necessria tambm, a string ser lida a partir da posio
atual at o mais prximo delimitador ou at string de texto caractere final.
Se o arquivo aberto com a bandeira FILE_ANSI, ento a linha lida convertida para um Unicode.
Exemplo (o arquivo obtido aps a execuo do exemplo pela funo FileWriteInteger usado aqui)
//--- mosta a janela dos parmetros de entrada quando lanado o script
#property script_show_inputs
//--- paramtros para leitura de dados
input string InpFileName="Trend.bin"; // file name
input string InpDirectoryName="Data"; // nome do diretrio
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- abre o arquivo
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para leitura",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- variveis adicionais
int

str_size;

string str;

2000-2015, MetaQuotes Software Corp.

1328

Funes de Arquivo
//--- ler dados de um arquivo
while(!FileIsEnding(file_handle))
{
//--- descobrir quantos smbolos so usados para escrever o tempo
str_size=FileReadInteger(file_handle,INT_VALUE);
//--- ler a string
str=FileReadString(file_handle,str_size);
//--- imprimir a string
PrintFormat(str);
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Dados so lidos, %s arquivo est fechado",InpFileName);
}
else
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
}

Tambm Veja
Tipo string, Converso de Dados, FileWriteInteger

2000-2015, MetaQuotes Software Corp.

1329

Funes de Arquivo

FileReadStruct
A funo l o contedo em uma estrutura passada como um parmetro a partir de um arquivo binrio,
comeando com a posio atual do ponteiro de arquivo.
uint FileReadStruct(
int

file_handle,

// Manipular arquivo

const void& struct_object,

// estrutura alvo para o qual os contedos so lidos

int

// tamanho da estrutura em bytes

size=-1

);

Parmetros
file_handle
[in] Descritor de arquivo para abrir um arquivo bin.
struct_object
[out] O objeto desta estrutura. A estrutura no deve conter strings, arrays dinmicas ou funes
virtuais.
size=-1
[in] Nmero de bytes que devem ser lidos. Se a dimenso no for especificado ou a indicao do
valor maior do que o tamanho da estrutura, o tamanho exato da especificada estrutura usado.
Valor do Retorno
Se for bem sucedido, a funo retorna o nmero de bytes lidos. Ponteiro de arquivo movido pelo
mesmo nmero de bytes.
Exemplo (o arquivo obtido aps a utilizao do exemplo para a funo FileWriteStruct usado aqui)
//+------------------------------------------------------------------+
//|

Demo_FileReadStruct.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots

//---- Plotar Etiqueta1


#property indicator_label1

"Candles"

#property indicator_type1

DRAW_CANDLES

#property indicator_color1

clrOrange

#property indicator_style1

STYLE_SOLID

#property indicator_width1

#property indicator_separate_window
//--- parmetros para recebimento de dados
input string

InpFileName="EURUSD.txt"; // nome do arquivo

input string

InpDirectoryName="Data";

// nome do diretrio

2000-2015, MetaQuotes Software Corp.

1330

Funes de Arquivo
//+------------------------------------------------------------------+
//| Estrutura para armazenar dados candlestick

//+------------------------------------------------------------------+
struct candlesticks
{
double

open;

double

close; // preo de fechamento

// preo de abertura

double

high;

// preo de mximo

double

low;

// preo de mnimo

datetime

date;

// data

};
//--- buffers do indicador
double

open_buff[];

double

close_buff[];

double

high_buff[];

double

low_buff[];

//--- variveis globais


candlesticks cand_buff[];
int

size=0;

int

ind=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
int default_size=100;
ArrayResize(cand_buff,default_size);
//--- abre o arquivo
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_BIN|FILE_COMMON);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para leitura",InpFileName);
PrintFormat("File path: %s\\Files\\",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
//--- ler dados de um arquivo
while(!FileIsEnding(file_handle))
{
//--- escrever dados para array
FileReadStruct(file_handle,cand_buff[size]);
size++;
//--- verificar se array est transbordando
if(size==default_size)
{
//--- aumentar a dimenso array
default_size+=100;
ArrayResize(cand_buff,default_size);
}
}
//--- fechar o arquivo

2000-2015, MetaQuotes Software Corp.

1331

Funes de Arquivo
FileClose(file_handle);
PrintFormat("Dados so lidos, %s arquivo est fechado",InpFileName);
}
else
{
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
return(INIT_FAILED);
}
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,open_buff,INDICATOR_DATA);
SetIndexBuffer(1,high_buff,INDICATOR_DATA);
SetIndexBuffer(2,low_buff,INDICATOR_DATA);
SetIndexBuffer(3,close_buff,INDICATOR_DATA);
//--- valor vazio
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
ArraySetAsSeries(time,false);
//--- o loop para os castiais que ainda no foram manipulados
for(int i=prev_calculated;i<rates_total;i++)
{
//--- 0 por padro
open_buff[i]=0;
close_buff[i]=0;
high_buff[i]=0;
low_buff[i]=0;
//---verificar se todos os dados ainda esto presente
if(ind<size)
{
for(int j=ind;j<size;j++)
{
//--- se as datas coincidem, usar o valor do arquivo
if(time[i]==cand_buff[j].date)
{

2000-2015, MetaQuotes Software Corp.

1332

Funes de Arquivo
open_buff[i]=cand_buff[j].open;
close_buff[i]=cand_buff[j].close;
high_buff[i]=cand_buff[j].high;
low_buff[i]=cand_buff[j].low;
//--- aumentar o contador
ind=j+1;
break;
}
}
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
Estruturas e classes, FileWriteStruct

2000-2015, MetaQuotes Software Corp.

1333

Funes de Arquivo

FileSeek
A funo move a posio do ponteiro de arquivo por um certo nmero de bytes de informao em
relao posio especificada.
bool FileSeek(
int

file_handle,

// Manipular arquivo

long

offset,

// Em bytes

ENUM_FILE_POSITION

origin

// Posio para referncia

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
offset
[in] A mudana de bytes (pode tomar um valor negativo).
origin
[in] O ponto de partida para o deslocamento. Pode ser um dos valores de ENUM_FILE_POSITION.
Valor do Retorno
Retorna true se bem sucedido, caso contrrio false. Para obter informao sobre o erro chamar
GetLastError().
Observao
Se a execuo da funo FileSeek() resulta em uma mudana negativa (indo alm do "nvel limite"
do arquivo), o ponteiro do arquivo ser definido para o arquivo de incio.
Se a posio for definido para alm do "limite direito" do arquivo (maior do que o tamanho do
arquivo),a prxima escrita para o arquivo ser executado no a partir do final do arquivo, mas a
partir da posio definida. Neste caso, os valores indefinidos sero escritos para o final do arquivo
anterior e a posio definida.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FileSeek.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- mosta a janela dos parmetros de entrada quando lanado o script


#property script_show_inputs
//--- parmetros de entrada
input string InpFileName="file.txt";

// nome do arquivo

input string InpDirectoryName="Data";

// nome do diretrio

input int

InpEncodingType=FILE_ANSI; // ANSI=32 ou UNICODE=64

2000-2015, MetaQuotes Software Corp.

1334

Funes de Arquivo
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- especificar o valor da varivel para gerar nmeros aleatrios
_RandomSeed=GetTickCount();
//--- variveis para posies de pontos de incio das strings
ulong pos[];
int

size;

//--- redefine o valor de erro


ResetLastError();
//--- abre o arquivo
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_TXT|InpEncodingType);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para leitura",InpFileName);
//--- receber a posio inicial para cada string no arquivo
GetStringPositions(file_handle,pos);
//--- definir o nmero de strings no arquivo
size=ArraySize(pos);
if(!size)
{
//--- parar se o arquivo no tem strings
PrintFormat("%s arquivo est vazio!",InpFileName);
FileClose(file_handle);
return;
}
//--- fazer uma seleo aleatria de um nmero de string
int ind=MathRand()%size;
//--- deslocar posio de ponto de partida da string
if(FileSeek(file_handle,pos[ind],SEEK_SET)==true)
{
//--- ler e imprimir a string com o nmero ind
PrintFormat("Texto string com %d nmero: \"%s\"",ind,FileReadString(file_handle));
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("%s arquivo est vazio",InpFileName);
}
else
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
}
//+-------------------------------------------------------------------------------+
//| A funo define pontos de partida para cada uma das strings no arquivo e

//| coloca-los em arr array

//+-------------------------------------------------------------------------------+
void GetStringPositions(const int handle,ulong &arr[])
{

2000-2015, MetaQuotes Software Corp.

1335

Funes de Arquivo
//--- array tamanho padro
int def_size=127;
//--- alocar memria para o array
ArrayResize(arr,def_size);
//--- contador string
int i=0;
//--- se isto no o fim do arquivo, ento h pelo menos uma string
if(!FileIsEnding(handle))
{
arr[i]=FileTell(handle);
i++;
}
else
return; // o arquivo est vazio, sair
//--- define o deslocamento em bytes, dependendo em codificao
int shift;
if(FileGetInteger(handle,FILE_IS_ANSI))
shift=1;
else
shift=2;
//--- ir atravs das strings no loop
while(1)
{
//--- ler a string
FileReadString(handle);
//--- verificar o final do arquivo
if(!FileIsEnding(handle))
{
//--- armazenar a prxima posio da string
arr[i]=FileTell(handle)+shift;
i++;
//--- aumentar o tamanho da array, se ela transbordada
if(i==def_size)
{
def_size+=def_size+1;
ArrayResize(arr,def_size);
}
}
else
break; // final do arquivo, sair
}
//--- definir o tamanho real de array
ArrayResize(arr,i);
}

2000-2015, MetaQuotes Software Corp.

1336

Funes de Arquivo

FileSize
A funo retorna o tamanho do arquivo em bytes.
ulong FileSize(
int file_handle

// Manipular arquivo

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
Valor do Retorno
O valor do tipo int.
Observao
Para obter informao sobre o erro chamar GetLastError().
Exemplo:
//--- mostrar a janela de parmetros de entrada quando do lanamento do script
#property script_show_inputs
//--- parmetros de entrada
input ulong

InpThresholdSize=20;

input string InpBigFolderName="big";

// tamanho limite do arquivo em kilobytes


// pasta para arquivos grandes

input string InpSmallFolderName="small"; // pasta para arquivo pequeno


//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
string

file_name;

// varivel para armazenar os nomes dos arquivos

string

filter="*.csv"; // filtro para pesquisar os arquivos

ulong

file_size=0;

// tamanho do arquivo em bytes

int

size=0;

// nmero de arquivos

//--- imprimir o caminho para o arquivo que vamos trabalhar com


PrintFormat("Trabalhando em pasta %s\\Files\\",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
//--- receber o manipulador de pesquisa em comum na raiz da pasta de todos os terminais
long search_handle=FileFindFirst(filter,file_name,FILE_COMMON);
//--- verificar se FileFindFirst() executada com sucesso
if(search_handle!=INVALID_HANDLE)
{
//--- mover arquivos no loop de acordo com seus tamanhos
do
{
//--- abrir o arquivo
ResetLastError();
int file_handle=FileOpen(file_name,FILE_READ|FILE_CSV|FILE_COMMON);
if(file_handle!=INVALID_HANDLE)

2000-2015, MetaQuotes Software Corp.

1337

Funes de Arquivo
{
//--- receber o tamanho do arquivo
file_size=FileSize(file_handle);
//--- fechar o arquivo
FileClose(file_handle);
}
else
{

PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",file_name,GetLastError()


continue;
}
//--- imprimir o tamanho do arquivo
PrintFormat("Tamanho do %s arquivo igual para %d bytes",file_name,file_size);
//--- define o caminho para movimentar o arquivo
string path;
if(file_size>InpThresholdSize*1024)
path=InpBigFolderName+"//"+file_name;
else
path=InpSmallFolderName+"//"+file_name;
//--- mover o arquivo
ResetLastError();
if(FileMove(file_name,FILE_COMMON,path,FILE_REWRITE|FILE_COMMON))
PrintFormat("%s arquivo foi movido",file_name);
else
PrintFormat("Erro, cdigo = %d",GetLastError());
}
while(FileFindNext(search_handle,file_name));
//--- fechar o manipulador de pesquisa
FileFindClose(search_handle);
}
else
Print("Arquivo no encontrado!");
}

2000-2015, MetaQuotes Software Corp.

1338

Funes de Arquivo

FileTell
O arquivo retorna a posio atual do ponteiro de arquivo de um arquivo aberto.
ulong FileTell(
int file_handle

// Manipular arquivo

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
Valor do Retorno
Posio atual do descritor de arquivo em bytes a partir do incio do arquivo.
Observao
Para obter informao sobre o erro chamar GetLastError().
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FileTell.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- mosta a janela dos parmetros de entrada quando lanado o script


#property script_show_inputs
//--- parmetros de entrada
input string InpFileName="file.txt";

// nome do arquivo

input string InpDirectoryName="Data";

// nome do diretrio

input int

InpEncodingType=FILE_ANSI; // ANSI=32 ou UNICODE=64

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- especificar o valor da varivel para gerar nmeros aleatrios
_RandomSeed=GetTickCount();
//--- variveis para posies de pontos de incio das strings
ulong pos[];
int

size;

//--- redefine o valor de erro


ResetLastError();
//--- abre o arquivo
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_TXT|InpEncodingType);
if(file_handle!=INVALID_HANDLE)

2000-2015, MetaQuotes Software Corp.

1339

Funes de Arquivo
{
PrintFormat("%s arquivo est disponvel para leitura",InpFileName);
//--- receber a posio inicial para cada string no arquivo
GetStringPositions(file_handle,pos);
//--- definir o nmero de strings no arquivo
size=ArraySize(pos);
if(!size)
{
//--- parar se o arquivo no tem strings
PrintFormat("%s arquivo est vazio!",InpFileName);
FileClose(file_handle);
return;
}
//--- fazer uma seleo aleatria de um nmero de string
int ind=MathRand()%size;
//--- deslocar posio de ponto de partida da string
FileSeek(file_handle,pos[ind],SEEK_SET);
//--- ler e imprimir a string com o nmero ind
PrintFormat("Texto string com %d nmero: \"%s\"",ind,FileReadString(file_handle));
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("%s arquivo est vazio",InpFileName);
}
else
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
}
//+-------------------------------------------------------------------------------+
//| A funo define pontos de partida para cada uma das strings no arquivo e

//| coloca-los em arr array

//+-------------------------------------------------------------------------------+
void GetStringPositions(const int handle,ulong &arr[])
{
//--- array tamanho padro
int def_size=127;
//--- alocar memria para o array
ArrayResize(arr,def_size);
//--- contador string
int i=0;
//--- se isto no o fim do arquivo, ento h pelo menos uma string
if(!FileIsEnding(handle))
{
arr[i]=FileTell(handle);
i++;
}
else
return; // o arquivo est vazio, sair
//--- define o deslocamento em bytes, dependendo em codificao
int shift;
if(FileGetInteger(handle,FILE_IS_ANSI))

2000-2015, MetaQuotes Software Corp.

1340

Funes de Arquivo
shift=1;
else
shift=2;
//--- ir atravs das strings no loop
while(1)
{
//--- ler a string
FileReadString(handle);
//--- verificar o final do arquivo
if(!FileIsEnding(handle))
{
//--- armazenar a prxima posio da string
arr[i]=FileTell(handle)+shift;
i++;
//--- aumentar o tamanho da array, se ela transbordada
if(i==def_size)
{
def_size+=def_size+1;
ArrayResize(arr,def_size);
}
}
else
break; // final do arquivo, sair
}
//--- definir o tamanho real de array
ArrayResize(arr,i);
}

2000-2015, MetaQuotes Software Corp.

1341

Funes de Arquivo

FileWrite
A funo destina-se a gravao de dados em um arquivo CSV, delimitador sendo inserido
automaticamente a menos que seja igual a 0. Depois de escrever dentro do arquivo, o caractere de
final de linha "\r\n" ser adicionado.
uint FileWrite(
int file_handle,

// manipular arquivo

...

// Lista de parmetros gravados

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
...
[in] A lista de parmetros separados por vrgulas, para escrever no arquivo. O nmero de
parmetros escritos pode ser de at 63.
Valor do Retorno
Nmero de bytes escritos.
Observao
Os nmeros sero convertidos dentro de um texto na sada (veja a print() funo). Dados do tipo
double so emitidos com a preciso de 16 dgitos depois do ponto decimal, e os dados podem ser
exibidos quer no formato tradicional ou no formato cientfico - dependendo de qual formato ser o
mais compacto. Os dados do tipo float so mostrados com cinco dgitos depois do ponto decimal.
Para emitir nmeros reais com preciso diferente ou em um formato claramente especificado, use
DoubleToString().
Nmeros do tipo bool so exibidos como "true" ou "false" strings. Nmeros do tipo datetime so
apresentados como "YYYY.MM.DD HH:MI:SS".
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FileWrite.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- mostrar a janela de parmetros de entrada quando do lanamento do script


#property script_show_inputs
//--- parmetros para a recepo de dados a partir do terminal
input string

InpSymbolName="EURUSD";

// par de moedas

input ENUM_TIMEFRAMES

InpSymbolPeriod=PERIOD_H1;

// perodo de tempo

input int

InpFastEMAPeriod=12;

// perodo rpido EMA

input int

InpSlowEMAPeriod=26;

// perodo lento EMA

2000-2015, MetaQuotes Software Corp.

1342

Funes de Arquivo
input int

InpSignalPeriod=9;

// diferena de perodo mdio

input ENUM_APPLIED_PRICE InpAppliedPrice=PRICE_CLOSE;


input datetime

// tipo de preo

InpDateStart=D'2012.01.01 00:00'; // data de incio da cpia dos dados

//--- parmetros para a gravao de dados ao arquivo


input string

InpFileName="MACD.csv";

// nome do arquivo

input string

InpDirectoryName="Data"; // nome do diretrio

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
datetime date_finish; // copiando dados com a data final
bool

sign_buff[]; // sinal array (verdadeiro - comprar, falso - vender)

datetime time_buff[]; // array de chegada de tempo de sinais


int

sign_size=0; // tamanho de array

double

macd_buff[]; // array do valor do indicador

datetime date_buff[]; // array da data do indicador


int

macd_size=0; // tamanho de arrays de indicadores

//--- tempo final o tempo corrente


date_finish=TimeCurrent();
//--- receber a manipulao do indicador MACD
ResetLastError();

int macd_handle=iMACD(InpSymbolName,InpSymbolPeriod,InpFastEMAPeriod,InpSlowEMAPeriod,InpSignalP
if(macd_handle==INVALID_HANDLE)
{
//--- falha para receber a manipulao do indicador

PrintFormat("Erro quando recebe a manipulao do indicador. Cdigo de erro = %d",GetLastError


return;
}
//--- estando no loop at que o indicador calcula todos os seus valores
while(BarsCalculated(macd_handle)==-1)
Sleep(10); // pausa para permitir que o indicador calcule os respectivos valores
//--- copiar os valores do indicador para um determinado perodo de tempo
ResetLastError();
if(CopyBuffer(macd_handle,0,InpDateStart,date_finish,macd_buff)==-1)
{
PrintFormat("Falha para copiar valores do indicador. Cdigo de erro = %d",GetLastError());
return;
}
//--- copiar o tempo apropriado para os valores do indicador
ResetLastError();
if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,date_buff)==-1)
{
PrintFormat("Falha para copiar valores de tempo. Cdigo de erro = %d",GetLastError());
return;
}
//--- libera a memria ocupada pelo indicador
IndicatorRelease(macd_handle);
//--- receber o tamanho do buffer

2000-2015, MetaQuotes Software Corp.

1343

Funes de Arquivo
macd_size=ArraySize(macd_buff);
//--- analisar os dados e salva os sinais do indicador para arrays
ArrayResize(sign_buff,macd_size-1);
ArrayResize(time_buff,macd_size-1);
for(int i=1;i<macd_size;i++)
{
//--- sinal comprar
if(macd_buff[i-1]<0 && macd_buff[i]>=0)
{
sign_buff[sign_size]=true;
time_buff[sign_size]=date_buff[i];
sign_size++;
}
//--- sinal vender
if(macd_buff[i-1]>0 && macd_buff[i]<=0)
{
sign_buff[sign_size]=false;
time_buff[sign_size]=date_buff[i];
sign_size++;
}
}

//--- abrir o arquivo para escrever os valores do indicador (se o arquivo estiver ausente, ele ser
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para ser escrito",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- primeiro, escreva o nmero de sinais
FileWrite(file_handle,sign_size);
//--- escrever o tempo e os valores de sinais para o arquivo
for(int i=0;i<sign_size;i++)
FileWrite(file_handle,time_buff[i],sign_buff[i]);
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Os dados so escritos, %s arquivo esta fechado",InpFileName);
}
else
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
}

Tambm Veja
Comment, Print, StringFormat

2000-2015, MetaQuotes Software Corp.

1344

Funes de Arquivo

FileWriteArray
A funo escreve arrays de qualquer tipo, exceto para string de um arquivo BIN (pode strings ou arrays
dinmicas).
uint FileWriteArray(
int

file_handle,

// Manipular arquivo

const void& array1[],

// Array

int

start=0,

// Iniciar ndice array

int

count=WHOLE_ARRAY

// Nmero de elementos

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
array[]
[out] Array para gravao.
start=0
[in] Incio do ndice array (nmero do primeiro elemento gravado).
count=WHOLE_ARRAY
[in] Nmero de itens para gravar(WHOLE_ARRAY significa que as gravaes de todos os itens
comeam com o nmero inicial at o final da array).
Valor do Retorno
Nmero de itens gravados.
Observao
String array pode ser gravada em arquivo TXT. Neste caso, strings so automaticamente terminadas
pela linha final de caracteres "\r\n". Dependendo sobre o arquivo tipo ANSI ou UNICODE, strings so
ambas convertidas para ansi-codificao ou no.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FileWriteArray.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- parmetros de entrada


input string InpFileName="data.bin";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| Estrutura para armazenamento de dados de preos

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1345

Funes de Arquivo
struct prices
{
datetime

date; // data

double

bid;

// bid preo

double

ask;

// ask preo

};
//--- variveis globais
int

count=0;

int

size=20;

string path=InpDirectoryName+"//"+InpFileName;
prices arr[];
//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--- alocar memria para o array
ArrayResize(arr,size);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de Desinicializao do Expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- escrever a contagem restante de strings se count < n
WriteData(count);
}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

//+------------------------------------------------------------------+
void OnTick()
{
//--- salvar dados para array
arr[count].date=TimeCurrent();
arr[count].bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
arr[count].ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
//--- mostra dados correntes
Print("Date = ",arr[count].date," Bid = ",arr[count].bid," Ask = ",arr[count].ask);
//--- aumentar o contador
count++;
//--- se array arquivada, gravar dados no arquivo e zer-lo
if(count==size)
{
WriteData(size);
count=0;
}
}

2000-2015, MetaQuotes Software Corp.

1346

Funes de Arquivo
//+------------------------------------------------------------------+
//| Escrever n elementos array para arquivo

//+------------------------------------------------------------------+
void WriteData(const int n)
{
//--- abre o arquivo
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
if(handle!=INVALID_HANDLE)
{
//--- escrever os dados array para o final do arquivo
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arr,0,n);
//--- fechar o arquivo
FileClose(handle);
}
else
Print("Falha para abrir o arquivo, erro ",GetLastError());
}

Tambm Veja
Variveis, FileSeek

2000-2015, MetaQuotes Software Corp.

1347

Funes de Arquivo

FileWriteDouble
A funo escreve o valor de um parmetro duplo para um arquivo, a partir da posio atual do
ponteiro de arquivo.
uint FileWriteDouble(
int

file_handle,

// Manipular arquivo

double value

// Valor para escrever

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
value
[in] O valor do tipo double.
Valor do Retorno
Se for bem sucedido, a funo retorna o nmero de bytes escritos (neste caso sizeof(double)=8). O
ponteiro do arquivo deslocado pelo mesmo nmero de bytes.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FileWriteDouble.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- mostrar a janela de parmetros de entrada quando do lanamento do script


#property script_show_inputs
//--- parmetros para a recepo de dados a partir do terminal
input string

InpSymbolName="EURJPY";

// par de moedas

input ENUM_TIMEFRAMES

InpSymbolPeriod=PERIOD_M15;

// perodo de tempo

input int

InpMAPeriod=10;

// perodo suavizado

input int

InpMAShift=0;

// deslocacamente de indicador

input ENUM_MA_METHOD

InpMAMethod=MODE_SMA;

// tipo de suavizao

input ENUM_APPLIED_PRICE InpAppliedPrice=PRICE_CLOSE;


input datetime

// tipo de preo

InpDateStart=D'2013.01.01 00:00'; // data de incio da cpia dos dados

//--- parmetros para escrever dados no arquivo


input string

InpFileName="MA.csv";

input string

InpDirectoryName="Data"; // nome do diretrio

// file name

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{

2000-2015, MetaQuotes Software Corp.

1348

Funes de Arquivo
datetime date_finish=TimeCurrent();
double

ma_buff[];

datetime time_buff[];
int

size;

//--- receber a manipulador do indicador MA


ResetLastError();

int ma_handle=iMA(InpSymbolName,InpSymbolPeriod,InpMAPeriod,InpMAShift,InpMAMethod,InpAppliedPri
if(ma_handle==INVALID_HANDLE)
{
//--- falha para receber a manipulao do indicador

PrintFormat("Erro quando recebe a manipulao do indicador. Cdigo de erro = %d",GetLastError


return;
}
//--- estando no loop at que o indicador calcula todos os seus valores
while(BarsCalculated(ma_handle)==-1)
Sleep(20); // pausa para permitir que o indicador calcule os respectivos valores

PrintFormat("Valores dos indicadores comeando a partir de %s ser escrita no arquivo",TimeToStr


//--- copiar os valores dos indicadores
ResetLastError();
if(CopyBuffer(ma_handle,0,InpDateStart,date_finish,ma_buff)==-1)
{
PrintFormat("Falha para copiar valores do indicador. Cdigo de erro = %d",GetLastError());
return;
}
//--- copiar o tempo da apropriada chegada das barras
ResetLastError();
if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
{
PrintFormat("Falha para copiar valores de tempo. Cdigo de erro = %d",GetLastError());
return;
}
//--- receber o tamanho do buffer
size=ArraySize(ma_buff);
//--- libera a memria ocupada pelo indicador
IndicatorRelease(ma_handle);

//--- abrir o arquivo para escrever os valores do indicador (se o arquivo estiver ausente, ele ser
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para ser escrito",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- em primeiro lugar, escrever o tamanho da amostra de dados
FileWriteDouble(file_handle,(double)size);
//--- escrever o tempo do indicador e valor para o arquivo
for(int i=0;i<size;i++)
{
FileWriteDouble(file_handle,(double)time_buff[i]);
FileWriteDouble(file_handle,ma_buff[i]);

2000-2015, MetaQuotes Software Corp.

1349

Funes de Arquivo
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Os dados so escritos, %s arquivo esta fechado",InpFileName);
}
else
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
}

Tambm Veja
Tipos reais (double, float)

2000-2015, MetaQuotes Software Corp.

1350

Funes de Arquivo

FileWriteFloat
A funo escreve o valor do parmetro float para um arquivo bin, a partir da atual posio do ponteiro
de arquivo.
uint FileWriteFloat(
int

file_handle,

float value

// Manipular arquivo
// Valor para ser escrito

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
value
[in] O valor do tipo float.
Valor do Retorno
Se for bem sucedido, a funo retorna o nmero de bytes escritos (neste caso sizeof(float)=4). O
ponteiro do arquivo deslocado pelo mesmo nmero de bytes.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FileWriteFloat.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- mostrar a janela de parmetros de entrada quando do lanamento do script


#property script_show_inputs
//--- parmetros para a recepo de dados a partir do terminal
input string

InpSymbolName="EURUSD";

input ENUM_TIMEFRAMES InpSymbolPeriod=PERIOD_M15;


input datetime

// par de moedas
// perodo de tempo

InpDateStart=D'2013.01.01 00:00'; // data de incio da cpia dos dados

//--- parmetros para escrever dados no arquivo


input string

InpFileName="Close.bin"; // nome do arquivo

input string

InpDirectoryName="Data"; // nome do diretrio

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
datetime date_finish=TimeCurrent();
double

close_buff[];

datetime time_buff[];
int

size;

2000-2015, MetaQuotes Software Corp.

1351

Funes de Arquivo
//--- redefine o valor de erro
ResetLastError();
//--- copiar o preo de fechamento de cada barra
if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1)
{

PrintFormat("Falha ao copiar valores de preo de fechamento. Cdigo de erro = %d",GetLastErro


return;
}
//--- copiar o tempo para cada barra
if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
{
PrintFormat("Falha para copiar valores de tempo. Cdigo de erro = %d",GetLastError());
return;
}
//--- receber o tamanho do buffer
size=ArraySize(close_buff);

//--- abrir o arquivo para escrever os valores (se o arquivo estiver ausente, ele ser criado autom
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est aberto para escrita",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- escrever fechamento do tempo dos preos e os valores para o arquivo
for(int i=0;i<size;i++)
{
FileWriteDouble(file_handle,(double)time_buff[i]);
FileWriteFloat(file_handle,(float)close_buff[i]);
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Os dados so escritos, %s arquivo esta fechado",InpFileName);
}
else
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
}

Tambm Veja
Tipos reais (double, float), FileWriteDouble

2000-2015, MetaQuotes Software Corp.

1352

Funes de Arquivo

FileWriteInteger
A funo escreve o valor do parmetro int para um arquivo bin, a partir da posio atual do ponteiro
de arquivo.
uint FileWriteInteger(
int file_handle,

// Manipular Arquivo

int value,

// Valor para ser escrito

int size=INT_VALUE

// Tamanho em bytes

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
value
[in] Valor inteiro.
size=INT_VALUE
[in] Nmero de bytes (at 4 inclusive), que deve ser escrito. As constantes correspondentes so
fornecidos: CHAR_VALUE=1, SHORT_VALUE=2 e INT_VALUE=4, ento a funo pode escrever o
valor inteiro do tipo char, uchar, short, ushort, int, ou uint.
Valor do Retorno
Se for bem sucedido, a funo retorna o nmero de bytes escritos. O ponteiro do arquivo
deslocado pelo mesmo nmero de bytes.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FileWriteInteger.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- mostrar a janela de parmetros de entrada quando do lanamento do script


#property script_show_inputs
//--- parmetros para a recepo de dados a partir do terminal
input string

InpSymbolName="EURUSD";

// par de moedas

input ENUM_TIMEFRAMES

InpSymbolPeriod=PERIOD_H1;

// perodo de tempo

input datetime

InpDateStart=D'2013.01.01 00:00'; // data de incio da cpia dos dados

//--- parmetros para escrever dados no arquivo


input string

InpFileName="Trend.bin"; // nome do arquivo

input string

InpDirectoryName="Data"; // nome do diretrio

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()

2000-2015, MetaQuotes Software Corp.

1353

Funes de Arquivo
{
datetime date_finish=TimeCurrent();
double

close_buff[];

datetime time_buff[];
int

size;

//--- redefine o valor de erro


ResetLastError();
//--- copiar o preo de fechamento de cada barra
if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1)
{

PrintFormat("Falha ao copiar os valores dos preos de fechamento. Cdigo de erro = %d",GetLas


return;
}
//--- copiar o tempo para cada barra
if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
{
PrintFormat("Falha para copiar valores de tempo. Cdigo de erro = %d",GetLastError());
return;
}
//--- receber o tamanho do buffer
size=ArraySize(close_buff);

//--- abrir o arquivo para escrever os valores (se o arquivo estiver ausente, ele ser criado autom
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para ser escrito",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--int

up_down=0; // tendncia flag

int

arr_size;

uchar arr[];

// tamanho de array arr


// array tipo uchar

//--- escrever valores de tempo para o arquivo


for(int i=0;i<size-1;i++)
{
//--- comparar preos de fechamento das atuais e prximas barras
if(close_buff[i]<=close_buff[i+1])
{
if(up_down!=1)
{
//--- escrever valor de data para o arquivo usando FileWriteInteger
StringToCharArray(TimeToString(time_buff[i]),arr);
arr_size=ArraySize(arr);
//--- primeiro, escreva o nmero de smbolos na array
FileWriteInteger(file_handle,arr_size,INT_VALUE);
//--- escrever os smbolos
for(int j=0;j<arr_size;j++)
FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
//--- mudar a flag de tendncia

2000-2015, MetaQuotes Software Corp.

1354

Funes de Arquivo
up_down=1;
}
}
else
{
if(up_down!=-1)
{
//--- escrever valor de data para o arquivo usando FileWriteInteger
StringToCharArray(TimeToString(time_buff[i]),arr);
arr_size=ArraySize(arr);
//--- primeiro, escreva o nmero de smbolos na array
FileWriteInteger(file_handle,arr_size,INT_VALUE);
//--- escrever os smbolos
for(int j=0;j<arr_size;j++)
FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
//--- mudar a flag de tendncia
up_down=-1;
}
}
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Os dados so escritos, %s arquivo esta fechado",InpFileName);
}
else
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
}

Tambm Veja
IntegerToString, StringToInteger, Tipos Inteiros

2000-2015, MetaQuotes Software Corp.

1355

Funes de Arquivo

FileWriteLong
A funo escreve o valor do parmetro de tipo long para um arquivo bin, a partir da posio atual do
ponteiro de arquivo.
uint FileWriteLong(
int

file_handle,

long value

// Manipular arquivo
// Valor para ser escrito

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
value
[in] Valor do tipo long.
Valor do Retorno
Se for bem sucedido, a funo retorna o nmero de bytes escritos (neste caso sizeof(long)=8). O
ponteiro do arquivo deslocado pelo mesmo nmero de bytes.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FileWriteLong.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- mostrar a janela de parmetros de entrada quando do lanamento do script


#property script_show_inputs
//--- parmetros para a recepo de dados a partir do terminal
input string

InpSymbolName="EURUSD";

// par de moedas

input ENUM_TIMEFRAMES InpSymbolPeriod=PERIOD_H1;


input datetime

// time frame

InpDateStart=D'2013.01.01 00:00'; // data de incio da cpia dos dados

//--- parmetros para escrever dados no arquivo


input string

InpFileName="Volume.bin"; // nome do arquivo

input string

InpDirectoryName="Data";

// nome do diretrio

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
datetime date_finish=TimeCurrent();
long

volume_buff[];

datetime time_buff[];
int

size;

2000-2015, MetaQuotes Software Corp.

1356

Funes de Arquivo
//--- redefine o valor de erro
ResetLastError();
//--- copiar volumes de tick para cada bar
if(CopyTickVolume(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,volume_buff)==-1)
{

PrintFormat("Falha ao copiar valores do volume de tick. Cdigo de erro = %d",GetLastError());


return;
}
//--- copiar o tempo para cada barra
if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
{
PrintFormat("Falha para copiar valores de tempo. Cdigo de erro = %d",GetLastError());
return;
}
//--- receber o tamanho do buffer
size=ArraySize(volume_buff);

//--- abrir o arquivo para escrever os valores do indicador (se o arquivo estiver ausente, ele ser
ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para ser escrito",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- primeiro, escreva o tamanho da amostra de dados
FileWriteLong(file_handle,(long)size);
//--- escrever valores de tempo e de volume para o arquivo
for(int i=0;i<size;i++)
{
FileWriteLong(file_handle,(long)time_buff[i]);
FileWriteLong(file_handle,volume_buff[i]);
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Os dados so escritos, %s arquivo esta fechado",InpFileName);
}
else
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
}

Tambm Veja
Tipos inteiros, FileWriteInteger

2000-2015, MetaQuotes Software Corp.

1357

Funes de Arquivo

FileWriteString
A funo escreve o valor de um parmetro do tipo string em um arquivo BIN, CSV ou TXT comeando a
partir da posio atual do ponteiro de arquivo. Quando escrever para um arquivo CSV ou TXT: se
existe um smbolo na string '\n' (LF) sem caractere anterior '\r' (CR), ento antes de '\n' desaparecer '\r'
adicionado.
uint FileWriteString(
int

file_handle,

// Manipular arquivo

const string text_string,

// string para escrever

int

// nmero de smbolos

length=-1

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
text_string
[in] Seqncia.
length=-1
[in] O nmero de caracteres que voc quer escrever. Esta opo necessria para escrever uma
string em um arquivo BIN. Se o tamanho no for especificado, ento a string inteira, sem o trailer
0 (zero) escrita. Se voc especificar um tamanho menor do que o comprimento da string, ento
uma parte da string sem o trailer 0 (zero) escrita. Se voc especificar um tamanho maior do que
o comprimento da string, a string preenchido por um nmero apropriado de zeros. Para arquivos
do tipo CSV e TXT, este parmetro ignorado e a string escrita inteiramente.
Valor do Retorno
Se for bem sucedido, a funo retorna o nmero de bytes escritos. O ponteiro do arquivo
deslocado pelo mesmo nmero de bytes.
Observao
Note que quando se escreve para um arquivo aberto pela bandeira FILE_UNICODE (ou sem uma
bandeira FILE_ANSI), ento o nmero de bytes escrito ser duas vezes to grande como o nmero de
cadeia de string escritas. Quando gravar para um arquivo aberto com a bandeira FILE_ANSI, o
nmero de bytes escritos ir coincidir com o nmero de caracteres de string escritas.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FileWriteString.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- mostrar a janela de parmetros de entrada quando do lanamento do script


#property script_show_inputs

2000-2015, MetaQuotes Software Corp.

1358

Funes de Arquivo
//--- parmetros para a recepo de dados a partir do terminal
input string

InpSymbolName="EURUSD";

// par de moedas

input ENUM_TIMEFRAMES

InpSymbolPeriod=PERIOD_H1;

// perodo de tempo

input int

InpMAPeriod=14;

// perodo de mdia mvel

input ENUM_APPLIED_PRICE InpAppliedPrice=PRICE_CLOSE;


input datetime

// tipo de preo

InpDateStart=D'2013.01.01 00:00'; // data de incio da cpia dos dados

//--- parmetros para escrever dados no arquivo


input string

InpFileName="RSI.csv";

input string

InpDirectoryName="Data"; // nome do diretrio

// nome do arquivo

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
datetime date_finish; // copiando dados com a data final
double

rsi_buff[];

// array do valor do indicador

datetime date_buff[]; // array da data do indicador


int

rsi_size=0;

// tamanho de arrays de indicadores

//--- tempo final o atual


date_finish=TimeCurrent();
//--- receber a manipulao do indicador RSI
ResetLastError();
int rsi_handle=iRSI(InpSymbolName,InpSymbolPeriod,InpMAPeriod,InpAppliedPrice);
if(rsi_handle==INVALID_HANDLE)
{
//--- falha para receber a manipulao do indicador

PrintFormat("Erro quando recebe a manipulao do indicador. Cdigo de erro = %d",GetLastError


return;
}
//--- fica no loop, at que o indicador calcula todos os seus valores
while(BarsCalculated(rsi_handle)==-1)
Sleep(10); // pausa para permitir que o indicador calcule os respectivos valores
//--- copiar os valores do indicador para um determinado perodo de tempo
ResetLastError();
if(CopyBuffer(rsi_handle,0,InpDateStart,date_finish,rsi_buff)==-1)
{
PrintFormat("Falha para copiar valores do indicador. Cdigo de erro = %d",GetLastError());
return;
}
//--- copiar o tempo apropriado para os valores do indicador
ResetLastError();
if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,date_buff)==-1)
{
PrintFormat("Falha para copiar valores de tempo. Cdigo de erro = %d",GetLastError());
return;
}
//--- libera a memria ocupada pelo indicador
IndicatorRelease(rsi_handle);
//--- receber o tamanho do buffer

2000-2015, MetaQuotes Software Corp.

1359

Funes de Arquivo
rsi_size=ArraySize(rsi_buff);

//--- abrir o arquivo para escrever os valores do indicador (se o arquivo estiver ausente, ele ser
ResetLastError();

int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV|FILE_AN
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est disponvel para ser escrito",InpFileName);
PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- preparar variveis adicionais
string str="";
bool

is_formed=false;

//--- escrever datas de formao das reas de sobre-compra e sobre-venda


for(int i=0;i<rsi_size;i++)
{
//--- verifique os valores dos indicadores
if(rsi_buff[i]>=70 || rsi_buff[i]<=30)
{
//--- se o valor o primeiro nesta rea
if(!is_formed)
{
//--- adicionar o valor e a data
str=(string)rsi_buff[i]+"\t"+(string)date_buff[i];
is_formed=true;
}
else
str+="\t"+(string)rsi_buff[i]+"\t"+(string)date_buff[i];
//--- mover para a prxima iterao do loop
continue;
}
//--- verificar a flag
if(is_formed)
{
//--- a string formada, escrev-lo para o arquivo
FileWriteString(file_handle,str+"\r\n");
is_formed=false;
}
}
//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Os dados so escritos, %s arquivo esta fechado",InpFileName);
}
else
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
}

Tambm Veja
Tipo string, StringFormat

2000-2015, MetaQuotes Software Corp.

1360

Funes de Arquivo

FileWriteStruct
A funo escreve em bin-arquivo um contedo de uma estrutura passada como um parmetro,
comeando a partir da posio atual do ponteiro de arquivo.
uint FileWriteStruct(
int

file_handle,

// Manipular arquivo

const void& struct_object,

// link para um objeto

int

// tamanho a ser escrito em bytes

size=-1

);

Parmetros
file_handle
[in] Descritor de arquivo retornado pelo FileOpen().
struct_object
[in] Referncia ao objeto desta estrutura. A estrutura no deve conter strings, arrays dinmicas
ou funes virtuais.
size=-1
[in] Nmero de bytes que voc quer gravar. Se tamanho no especificado ou o especificado
nmero de bytes maior do que o tamanho da estrutura, a estrutura inteira escrita.
Valor do Retorno
Se for bem sucedido, a funo retorna o nmero de bytes escritos. O ponteiro do arquivo
deslocado pelo mesmo nmero de bytes.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FileWiteStruct.mq5 |

//|

Copyright 2013, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- mostrar a janela de parmetros de entrada quando do lanamento do script


#property script_show_inputs
//--- parmetros para a recepo de dados a partir do terminal
input string

InpSymbolName="EURUSD";

input ENUM_TIMEFRAMES InpSymbolPeriod=PERIOD_H1;


input datetime

// par de moedas
// time frame

InpDateStart=D'2013.01.01 00:00'; // data de incio da cpia dos dados

//--- parmetros para escrever dados no arquivo


input string

InpFileName="EURUSD.txt";

// nome do arquivo

input string

InpDirectoryName="Data";

// nome do diretrio

//+------------------------------------------------------------------+
//| Estrutura para armazenar dados candlestick

//+------------------------------------------------------------------+
struct candlesticks

2000-2015, MetaQuotes Software Corp.

1361

Funes de Arquivo
{
double

open;

// preo de abertura

double

close; // preo de fechamento

double

high;

// preo de mximo

double

low;

// preo de mnimo

datetime

date;

// data

};
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
datetime

date_finish=TimeCurrent();

int

size;

datetime

time_buff[];

double

open_buff[];

double

close_buff[];

double

high_buff[];

double

low_buff[];

candlesticks cand_buff[];
//--- redefine o valor de erro
ResetLastError();
//--- receber o tempo da chegada das barras a partir do intervalo
if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
{
PrintFormat("Falha para copiar valores de tempo. Cdigo de erro = %d",GetLastError());
return;
}
//--- receber os preos de mximo das barras a partir do intervalo
if(CopyHigh(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,high_buff)==-1)
{

PrintFormat("Falha ao copiar os valores dos preos de mximo. Cdigo de erro = %d",GetLastErr


return;
}
//--- receber os preos de mnimo das barras a partir do intervalo
if(CopyLow(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,low_buff)==-1)
{

PrintFormat("Falha ao copiar os valores dos preos de mnimo. Cdigo de erro = %d",GetLastErr


return;
}
//--- receber os preos de abertura das barras a partir do intervalo
if(CopyOpen(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,open_buff)==-1)
{

PrintFormat("Falha ao copiar os valores dos preos de abertura. Cdigo de erro = %d",GetLastE


return;
}
//--- receber os preos de fechamento das barras a partir do intervalo
if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1)
{

2000-2015, MetaQuotes Software Corp.

1362

Funes de Arquivo

PrintFormat("Falha ao copiar os valores dos preos de fechamento. Cdigo de erro = %d",GetLas


return;
}
//--- definir o tamanho de arrays
size=ArraySize(time_buff);
//--- salvar todos os dados na estrutura array
ArrayResize(cand_buff,size);
for(int i=0;i<size;i++)
{
cand_buff[i].open=open_buff[i];
cand_buff[i].close=close_buff[i];
cand_buff[i].high=high_buff[i];
cand_buff[i].low=low_buff[i];
cand_buff[i].date=time_buff[i];
}

//--- abrir o arquivo para escrever a estrutura array para o arquivo (se o arquivo estiver ausente,
ResetLastError();

int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN|FILE_CO
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("%s arquivo est aberto para escrita",InpFileName);
PrintFormat("File path: %s\\Files\\",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
//--- preparar o contador do nmero de bytes
uint counter=0;
//--- escrever valores array no loop
for(int i=0;i<size;i++)
counter+=FileWriteStruct(file_handle,cand_buff[i]);
PrintFormat("%d bytes de informao est escrito para %s arquivo",InpFileName,counter);

PrintFormat("Nmero total de bytes: %d * %d * %d = %d, %s",size,5,8,size*5*8,size*5*8==counte


//--- fechar o arquivo
FileClose(file_handle);
PrintFormat("Os dados so escritos, %s arquivo esta fechado",InpFileName);
}
else
PrintFormat("Falha para abrir %s arquivo, Cdigo de erro = %d",InpFileName,GetLastError());
}

Tambm Veja
Estruturas e classes

2000-2015, MetaQuotes Software Corp.

1363

Funes de Arquivo

FolderCreate
A funo cria uma pasta no diretrio Arquivos (dependendo do valor de common_flag).
bool FolderCreate(
string folder_name,

// String com o nome da nova pasta

int

// escopo

common_flag=0

);

Parmetros
folder_name
[in] O nome do diretrio que deseja criar. Contm o caminho completo para a pasta.
common_flag=0
[in] Bandeira determinando a localizao do diretrio. Se common_flag=FILE_COMMON, ento o
diretrio est na pasta compartilhada para todos os terminais do cliente \Terminal\Common\Files.
Caso contrrio, o diretrio est em uma pasta local (MQL5\Files ou MQL5\Tester\Files na caso de
testes).
Valor do Retorno
Retorna true se bem-sucedida, caso contrrio - false.
Observao
Por razes de segurana, o trabalho com arquivos estritamente controlada na lngua MQL5.
Arquivos com que as operaes de arquivo so conduzidas usando os meios MQL5, no podem estar
fora da caixa de proteo do arquivo.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FolderCreate.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- Descrio
#property description "O script mostra um exemplo de uso FolderCreate()."
#property description "Um parmetro externo define a pasta para criao de pastas."
#property description "Depois de executar o script, uma estrutura de pastas criada"
//--- Mostrar caixa de dilogo de parmetros de entrada quando se inicia o script
#property script_show_inputs
//--- O parmetro de entrada define a pasta em que o script est sendo executado
input bool

common_folder=false; // Uma pasta compartilhada de todos os terminais

int

flag=0;

// O valor da flag determina o lugar para a execuo de opera

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1364

Funes de Arquivo
void OnStart()
{
string working_folder;
//--- Definir o valor da flag, se o parmetro externo common_folder==true
if(common_folder)
{
flag=FILE_COMMON;
//--- Localize a pasta em que estamos trabalhando
working_folder=TerminalInfoString(TERMINAL_COMMONDATA_PATH)+"\\MQL5\\Files";
}
else working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";
//--- A pasta que ser criada na pasta MQL5\Files
string root="Folder_A";
if(CreateFolder(working_folder,root,flag))
{
//--- Crie uma pasta filho em Child_Folder_B1
string folder_B1="Child_Folder_B1";
string path=root+"\\"+folder_B1;

// Criar um nome de pasta baseado na estrutura

if(CreateFolder(working_folder,path,flag))
{
//--- Criar mais 3 pastas filho nesta pasta
string folder_C11="Child_Folder_C11";
string child_path=path+"\\"+folder_C11;// Criar um nome de pasta baseado na estrutura
CreateFolder(working_folder,child_path,flag);
//--- A segunda pasta filho
string folder_C12="Child_Folder_C12";
child_path=path+"\\"+folder_C12;
CreateFolder(working_folder,child_path,flag);
//--- A terceira pasta filho
string folder_C13="Child_Folder_C13";
child_path=path+"\\"+folder_C13;
CreateFolder(working_folder,child_path,flag);
}
}
//--}
//+------------------------------------------------------------------+
//| Tentar criar uma pasta e mostrar uma mensagem

//+------------------------------------------------------------------+
bool CreateFolder(string working_folder,string folder_path,int file_flag)
{
//--- Uma mensagem de depurao
PrintFormat("folder_path=%s",folder_path);
//--- Tentando criar uma pasta em relao ao caminho MQL5\Files
if(FolderCreate(folder_path,file_flag))
{
//--- Mostrar o caminho completo para a pasta criada
PrintFormat("Pasta %s foi criada",working_folder+"\\"+folder_path);

2000-2015, MetaQuotes Software Corp.

1365

Funes de Arquivo
//--- Redefine o cdigo de erro
ResetLastError();
//--- Retornar resultado bem-sucedido
return true;
}
else

PrintFormat("Falha ao criar a pasta %s. Cdigo de erro %d",working_folder+folder_path,GetLast


//--- Falhou
return false;
}

Tambm Veja
FileOpen(), FolderClean(), FileCopy()

2000-2015, MetaQuotes Software Corp.

1366

Funes de Arquivo

FolderDelete
A funo remove o diretrio especificado. Se a pasta no estiver vazia, ento ele no pode ser
removida.
bool FolderDelete(
string folder_name,

// String com o nome da pasta para deletar

int

// escopo

common_flag=0

);

Parmetros
folder_name
[in] O nome do diretrio que voc deseja excluir. Contm o caminho completo para a pasta.
common_flag=0
[in] Bandeira determinando a localizao do diretrio. Se common_flag=FILE_COMMON, ento o
diretrio est na pasta compartilhada para todos os terminais do cliente \Terminal\Common\Files.
Caso contrrio, o diretrio est em uma pasta local (MQL5\Files ou MQL5\Tester\Files no caso de
testes).
Valor do Retorno
Retorna true se bem sucedido, caso contrrio false.
Observao
Por razes de segurana, o trabalho com arquivos estritamente controlada na lngua MQL5.
Arquivos com que as operaes de arquivo so conduzidas usando os meios MQL5, no podem estar
fora da caixa de proteo do arquivo.
Se o diretrio contiver pelo menos um arquivo e / ou subdiretrio, ento este diretrio no pode ser
excludo, ele deve ser limpo primeiro. FolderClean() usado para limpar a pasta de todos os seus
arquivos ou sub-pastas.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FolderDelete.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- Descrio
#property description "O roteiro mostra um exemplo de uso FolderDelete()."

#property description "Primeiro duas pastas so criados, um deles est vazia, a segunda contm um a

#property description "Quando se tenta excluir uma pasta no-vazia, ser retornado um erro e um avi
//--- Mostrar a caixa de dilogo de parmetros de entrada quando se inicia o script
#property script_show_inputs
//--- Parmetros de entrada

2000-2015, MetaQuotes Software Corp.

1367

Funes de Arquivo
input string

firstFolder="empty";

input string

secondFolder="nonempty";// A pasta, em que um arquivo ser criado

string filename="delete_me.txt";

// Uma pasta vazia


// O nome do arquivo que ser criado na pasta secondFolder

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- Escreva o manipulador de arquivo aqui
int handle;
//--- Descubra em qual pasta estamos trabalhando
string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";
//--- Uma mensagem de depurao
PrintFormat("working_folder=%s",working_folder);
//--- Tentando criar uma pasta vazia em relao ao caminho MQL5\Files
if(FolderCreate(firstFolder,0)) // 0 (zero) significa que estamos trabalhando na pasta local do
{
//--- Insira o caminho completo para a pasta criada
PrintFormat("Pasta %s foi criada",working_folder+"\\"+firstFolder);
//--- Redefine o cdigo de erro
ResetLastError();
}
else

PrintFormat("Falha ao criar a pasta %s. Cdigo de erro %d",working_folder+"\\"+firstFolder, G


//--- Agora, crie uma pasta no-vazia utilizando a funo FileOpen()
string filepath=secondFolder+"\\"+filename;

// Formar caminho do arquivo que desejamos abrir pa

handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // Flag FILE_WRITE neste caso obrigatria, cons


if(handle!=INVALID_HANDLE)
PrintFormat("Arquivo %s foi aberto para leitura",working_folder+"\\"+filepath);
else

PrintFormat("Falha para criar arquivo %s na pasta %s. Cdigo de erro=",filename,secondFolder,


Comment(StringFormat("Preparar para deletar pastas %s e %s", firstFolder, secondFolder));
//--- Uma pequena pausa de 5 segundos para ler uma mensagem no grfico
Sleep(5000); // Sleep() no pode ser utilizado em indicadores!
//--- Mostrar uma caixa de dilogo e pedir ao usurio

int choice=MessageBox(StringFormat("Voc quer apagar pastas %s e %s?", firstFolder, secondFolder


"Deletando pastas",
MB_YESNO|MB_ICONQUESTION); //

Dois botes - "Yes" e "No"

//--- Executar uma ao dependendo da variante selecionada


if(choice==IDYES)
{
//--- Excluir no grfico o formulrio de comentrio
Comment("");
//--- Adicione uma mensagem dentro do jornal "Experts"
PrintFormat("Tentando deletar pastas %s e %s",firstFolder, secondFolder);
ResetLastError();

2000-2015, MetaQuotes Software Corp.

1368

Funes de Arquivo
//--- Deletar uma pasta vazia
if(FolderDelete(firstFolder))
//--- A seguinte mensagem deve aparecer uma vez que a pasta est vazia
PrintFormat("Pasta %s foi deletada com sucesso",firstFolder);
else

PrintFormat("Falha para deletar pasta %s. Cdigo de erro=%d", firstFolder, GetLastError())


ResetLastError();
//--- Deletar a pasta que contm um arquivo
if(FolderDelete(secondFolder))
PrintFormat("Pasta %s foi deletada com sucesso", secondFolder);
else
//--- A seguinte mensagem deve aparecer uma vez que a pasta contm um arquivo

PrintFormat("Falha para deletar pasta %s. Cdigo de erro=%d", secondFolder, GetLastError()


}
else
Print("Excluso cancelada");
//--}

Tambm Veja
FileOpen(), FolderClean(), FileMove()

2000-2015, MetaQuotes Software Corp.

1369

Funes de Arquivo

FolderClean
A funo exclui todos os arquivos em uma pasta especificada.
bool FolderClean(
string folder_name,

// String com o nome da pasta eliminada

int

// escopo

common_flag=0

);

Parmetros
folder_name
[in] O nome do diretrio onde voc deseja excluir todos os arquivos. Contm o caminho completo
para a pasta.
common_flag=0
[in] Bandeira determinando a localizao do diretrio. Se common_flag = FILE_COMMON, ento o
diretrio est na pasta compartilhada para todos os terminais de clientes \Terminal\Common
\Files. Caso contrrio, o diretrio est numa pasta local (MQL5\Files ou MQL5\Tester\Files no caso
dos testes).
Valor do Retorno
Retorna true se bem sucedido, caso contrrio false.
Observao
Por razes de segurana, o trabalho com arquivos estritamente controlada na lngua MQL5.
Arquivos com que as operaes de arquivo so conduzidas usando os meios MQL5, no podem estar
fora da caixa de proteo do arquivo.
Esta funo deve ser usada com cuidado, uma vez que todos os arquivos e todos os subdiretrios
so excludos irremediavelmente.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_FolderClean.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

//--- Descrio
#property description "O script mostra um exemplo de uso FolderClean()."
#property description "Primeiro, os arquivos so criados na pasta especificada utilizando a funo

#property description "Ento, antes que os arquivos sejam apagados, um aviso mostrado usando Mess
//--- Mostrar caixa de dilogo de parmetros de entrada quando se inicia o script
#property script_show_inputs
//--- Parmetros de entrada
input string

foldername="demo_folder";

// Criar uma pasta em MQL5/Files/

2000-2015, MetaQuotes Software Corp.

1370

Funes de Arquivo
input int

files=5;

// O nmero de arquivos para criar e excluir

//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
string name="testfile";
//---Primeiro abrir ou criar arquivos na pasta de dados do terminal
for(int N=0;N<files;N++)
{
//--- O nome do arquivo no formato demo_pasta\testfileN.txt'
string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
//--- Abrir um arquivo com a bandeira para a escrita, neste caso, o 'demo_pasta' ser criado
int handle=FileOpen(filemane,FILE_WRITE);
//--- Descubra se a funo FileOpen() foi bem sucedida
if(handle==INVALID_HANDLE)
{
PrintFormat("Falha para criar arquivo %s. Cdigo de erro",filemane,GetLastError());
ResetLastError();
}
else
{
PrintFormat("Arquivo %s foi aberto com sucesso",filemane);
//--- O arquivo aberto no mais necessrio, ento fech-lo
FileClose(handle);
}
}
//--- Verifique o nmero de arquivos na pasta
int k=FilesInFolder(foldername+"\\*.*",0);
PrintFormat("Totalmente a pasta %s contm %d arquivos",foldername,k);
//--- Mostrar uma janela para perguntar ao usurio

int choice=MessageBox(StringFormat("Voc vai apagar %d arquivos da pasta %s. Voc quer continuar
"Excluindo arquivos da pasta",
MB_YESNO|MB_ICONQUESTION); // Dois botes - "Sim" e "No"
ResetLastError();
//--- Executar uma ao dependendo da variante selecionada
if(choice==IDYES)
{
//--- Comear deletar arquivos
PrintFormat("Tentando deletar todos os arquivos da pasta %s",foldername);
if(FolderClean(foldername,0))
PrintFormat("Arquivos foram deletados com sucesso, %d arquivos que restaram na pasta %s",
foldername,
FilesInFolder(foldername+"\\*.*",0));
else

PrintFormat("Falha ao deletar arquivos da pasta %s. Cdigo de erro %d",foldername,GetLastE


}

2000-2015, MetaQuotes Software Corp.

1371

Funes de Arquivo
else
PrintFormat("Excluso cancelada");
//--}
//+------------------------------------------------------------------+
//| Retornar o nmero de arquivos na pasta especificada

//+------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
{
int count=0;
long handle;
string filename;
//--handle=FileFindFirst(path,filename,flag);
//--- Se pelo menos um arquivo encontrado, procurar por mais arquivos
if(handle!=INVALID_HANDLE)
{
//--- Mostrar o nome do arquivo
PrintFormat("Arquivo %s encontrado",filename);
//--- Aumentar o contador de arquivos/pastas encontrados
count++;
//--- Iniciar a pesquisa em todos arquivos/pastas
while(FileFindNext(handle,filename))
{
PrintFormat("Arquivo %s encontrado",filename);
count++;
}
//--- No se esquea de fechar o manipulador de pesquisa aps a concluso
FileFindClose(handle);
}
else // Falha ao obter o manipulador
{
PrintFormat("Pesquisa nos arquivos na pasta %s falhou",path);
}
//--- Retorna o resultado
return count;
}

Tambm Veja
FileFindFirst, FileFindNext, FileFindClose

2000-2015, MetaQuotes Software Corp.

1372

Indicadores Customizados

Indicadores Customizados
Este o grupo de funes utilizadas na criao dos indicadores personalizados. Estas funes no
podem ser usadas para escrever Expert Advisors e Scripts.
Funo

Ao

SetIndexBuffer

Vincula-se o buffer de indicador especificado


com dinmica unidimensional array do tipo
double

IndicatorSetDouble

Define o valor da propriedade de um indicador


do tipo double

IndicatorSetInteger

Define o valor da propriedade de um indicador


do tipo int

IndicatorSetString

Define o valor da propriedade de um indicador


do tipo string

PlotIndexSetDouble

Define o valor da propriedade de linha de um


indicador do tipo double

PlotIndexSetInteger

Define o valor da propriedade de linha de um


indicador do tipo int

PlotIndexSetString

Define o valor da propriedade de linha de um


indicador do tipo string

PlotIndexGetInteger

Retorna o valor da propriedade de linha de um


indicador do tipo inteiro

Propriedades de indicador podem ser definidas utilizando as diretivas de compilador ou o uso de


funes. Para entender melhor isso, recomendvel que voc estude estilos de indicador como
exemplos.
Todos os clculos necessrios de um indicador personalizado devem ser colocados na funo
predeterminada OnCalculate(). Se voc usar uma forma abreviada da funo chamada OnCalculate(),
como

int OnCalculate (const int rates_total, const int prev_calculated, const int begin, const double& p

ento a varivel rates_total contm o valor do nmero total de elementos da ordem de price[],
passados como um parmetro de entrada para calcular os valores do indicador.
Parmetro prev_calculated o resultado da execuo de OnCalculate() na chamada anterior, que
permite organizar um algoritmo salvo para calcular os valores do indicador. Por exemplo, se o valor
corrente de rates_total = 1000, prev_calculated = 999, ento talvez seja bastante para fazer os
clculos apenas para um valor de cada buffer indicador.
Se a informao sobre o tamanho da entrada da ordem de preo fosse disponibilizado, ento isso
levaria necessidade de fazer clculos para 1000 valores de cada buffer de indicador. Na primeira
chamada do OnCalculate(), o valor prev_calculated = 0. Se a ordem de price[] foi alterado de alguma
forma, ento neste caso prev_calculated tambm igual a 0 (zero).

2000-2015, MetaQuotes Software Corp.

1373

Indicadores Customizados
O parmetro begin mostra o nmero de valores iniciais da ordem de preo, que no contm dados
para o clculo. Por exemplo, se o valor de Accelerator Oscillator (para os quais os primeiros 37 valores
no so calculados) foram utilizados como um parmetro de entrada, ento begin = 37. Por exemplo,
vamos considerar um simples indicador:
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//---- plot Label1


#property indicator_label1

"Etiqueta 1"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- buffers do indicador


double

Label1Buffer[];

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
void OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
//--}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])
{
//--Print("begin = ",begin,"

prev_calculated = ",prev_calculated,"

rates_total = ",rates_total);

//--- valor retorno de prev_calculated para a prxima chamada


return(rates_total);
}

Arrast-lo a partir da janela do "Navegador" para a janela do indicador Accelerator Oscillator e ns


indicamos que os clculos devem ser feitos com base nos valores do indicador anterior:

2000-2015, MetaQuotes Software Corp.

1374

Indicadores Customizados

Como um resultado, a primeira chamada do valor OnCalculate() de prev_calculated ser igual a zero, e
em outras chamadas ser igual ao valor rates_total (at que o nmero de barras no grfico de preo
aumenta).

O valor do parmetro begin ser exatamente igual ao nmero das barras iniciais, para os quais os
valores do indicador Accelerator no so calculados de acordo com a lgica do indicador. Se ns
olharmos para o cdigo fonte do indicador personalizado Accelerator.mq5, ns veremos as linha
seguintes na funo OnInit():
//--- define a primeira barra a partir do qual o ndice ser desenhado
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,37);

Usando a funo PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, empty_first_values), ns definimos o


nmero no-existente dos primeiros valores no array zero de um indicador personalizado, o qual no

2000-2015, MetaQuotes Software Corp.

1375

Indicadores Customizados
precisamos aceitar para o clculo (empty_first_values). Assim, temos mecanismos para:
1. definir o nmero de valores iniciais de um indicador, o qual no dever ser usado para os clculos
de outro indicador personalizado;
2. obter informaes sobre o nmero dos primeiros valores a serem ignorados quando voc chamar um
outro indicador personalizado , sem entrar na lgica de seus clculos.

2000-2015, MetaQuotes Software Corp.

1376

Indicadores Customizados

Estilos de Indicador em Exemplos


O MetaTrader 5 Terminal Cliente inclui 38 indicadores tcnicos que podem ser usados em MQL5
programas usando funes apropriadas. Mas a principal vantagem da lngua MQL5 a capacidade de
criar indicadores personalizados, os quais podem ento serem utilizados em Expert Advisors ou
simplesmente serem aplicados sobre grficos de preos para fins de anlise tcnica.
O conjunto total dos indicadores podem serem derivados a partir de vrias bases de estilos de
desenhos, conhecidas como plotagem. Plotagem denota uma forma de visualizao de dados, que o
indicador calcula, armazena e providencia o pedido. Existem sete tipos bsicos plotagem:
1. Uma linha
2. Uma seo (segmento)
3. Histograma
4. Seta (smbolo)
5. Uma rea pintada (canal preenchido)
6. Bars
7. Castial (candlesticks) japons
Cada plotagem requer um para cinco arrays do tipo double, em que os valores dos indicadores so
armazenados. Para efeitos de comodidade, estes arrays so associados com os buffers do indicador. O
nmero de buffers em um indicador deve ser declarado com antecedncia usando diretivas de
compilador, por exemplo:
#property indicator_buffers 3 // Nmero de buffers
#property indicator_plots

2 // Nmero de plotes

O nmero de buffers no indicador sempre maior ou igual ao nmero de plotagem no indicador.


Como cada tipo de plotagem bsica pode ter variao de cor ou detalhes de construo, o nmero real
de tipos de plotagem em MQL5 de 18:
Plotagem

Descrio

Buffers de valor

Buffers de cor

DRAW_NONE

No apresentado
visualmente
no
grfico,
mas
os
valores
do
buffer
correspondente podem
ser vistos na Janela de
Dados

DRAW_LINE

Uma linha plotada


sobre os valores do
buffer correspondente
(valores vazios no
buffer
so
indesejveis)

DRAW_SECTION

desenhado como
segmentos de linha
entre os valores do

2000-2015, MetaQuotes Software Corp.

1377

Indicadores Customizados
buffer correspondente
(geralmente
tem
muitos valores vazios)
DRAW_HISTOGRAM

desenhado como um
histograma a partir da
linha zero para os
valores
do
buffer
correspondente (pode
ter valores vazios)

DRAW_HISTOGRAM2

desenhado como um
histograma sobre dois
buffers de indicador
(pode
ter
valores
vazios)

DRAW_ARROW

desenhado
smbolos(pode
valores vazios)

como
ter

DRAW_ZIGZAG

Similar
ao
estilo
DRAW_SECTION, mas
diferentemente, pode
plotar
segmentos
verticais
em
uma
barra

DRAW_FILLING

Preenchimento de cor
entre duas linhas. 2
valores dos buffers
correspondentes
so
mostrados na Janela
de Dados

DRAW_BARS

desenhado como
barras. 2 valores dos
buffers
correspondentes
so
mostrados na Janela
de Dados

DRAW_CANDLES

Desenhado
como
Castiais
Japoneses
(candlesticks).
2
valores dos buffers
correspondentes
so
mostrados na Janela
de Dados

DRAW_COLOR_LINE

Uma linha para o qual


voc pode alternar as
cores em diferentes
barras ou mudar suas

2000-2015, MetaQuotes Software Corp.

1378

Indicadores Customizados
cores,
a
momento

qualquer

DRAW_COLOR_SECTIO
N

Similar
ao
estilo
DRAW_SECTION, mas
a cor de cada seo
pode ser ajustada
individualmente; cor
tambm
pode
ser
ajustada
dinamicamente

DRAW_COLOR_HISTO
GRAM

Similar
ao
estilo
DRAW_HISTOGRAM,
mas cada faixa pode
ter uma cor diferente,
voc pode definir a cor
dinamicamente

DRAW_COLOR_HISTO
GRAM2

Similar
ao
estilo
DRAW_HISTOGRAM2,
mas cada faixa pode
ter uma cor diferente,
voc pode definir a cor
dinamicamente

DRAW_COLOR_ARRO
W

Similar
ao
estilo
DRAW_ARROW, mas
cada smbolo pode ter
sua cor. Cor pode ser
mudada
dinamicamente

DRAW_COLOR_ZIGZAG

O estilo DRAW_ZIGZAG
com opes de cores
individuais das sees
e mudana dinmica
das cores

DRAW_COLOR_BARS

O estilo DRAW_BARS
com opes de cores
individuais das barras
e mudana dinmica
das cores

DRAW_COLOR_CANDL
ES

O
estilo
DRAW_CANDLES com
opes
de
cores
individuais
dos
castiais (candlesticks)
e mudana dinmica
das cores

2000-2015, MetaQuotes Software Corp.

1379

Indicadores Customizados

A diferena entre um buffer de indicador e um array


Cada indicador, no seu nvel global, voc deve declarar uma ou mais arrays do tipo double, o qual
ento deve ser usado como um buffer de indicador usando a funo SetIndexBuffer(). Para desenhar
plotagem de indicador, apenas os valores dos buffers do indicador so utilizados, quaisquer outros
arrays no podem ser usados para esta finalidade. Alm disso, os valores de buffer so exibidos na
Janela de Dados.
Um buffer de indicador deve ser dinmico e no requer especificao de tamanho o tamanho do
array usado como buffer de indicador, definido pelo subsistema do terminal com execuo
automtica.
Aps o array estar ligado ao buffer de indicador, a direo de indexao definida por padro num
arrays comum, mas pode usar a funo ArraySetAsSeries() para alterar o modo de acesso aos
elementos array. Por padro, o buffer de indicador usado para armazenar dados usados para
plotagem INDICATOR_DATA).
Se os clculos dos valores de indicador requerem segurana de clculos intermedirios e
armazenamento de valores adicionais para cada barra, ento esse array pode ser declarado como um
buffer de clculo durante a ligao (INDICATOR_CALCULATIONS). Para valores intermedirios, voc
tambm pode usar um array regular, mas neste caso, o programador tem que gerenciar o tamanho do
array.
Algumas plotagens permitem definir uma cor para cada barra. Para armazenar a informao sobre cor,
buffers de cores so usados (INDICATOR_COLOR_INDEX). A cor um tipo integer color, mas todos os
buffers de indicadores sero do tipo double. Valores de cor e buffers auxiliares
(INDICATOR_CALCULATIONS) no podem ser obtidos usando CopyBuffer().
O nmero de buffers de indicadores devem ser especificados usando a diretiva de compilador
#property indicator_buffers number_of_buffers:
#property indicator_buffers 3

//

o indicador tem 3 buffers

O nmero mximo permitido de buffers em um indicador 512.

Relevncia de Buffers de Indicadores e Plotagem


Cada plotagem baseada em um ou mais buffers do indicador. Assim, para a exibio de castiais
(candlesticks) simples, quatro valores so obrigatrios - Open (abertura), High (alta), Low (baixa) e
Close (fechamento) de preos. Conseqentemente, para exibir um indicador na forma de castiais
(candlesticks), necessrio declarar 4 buffers de indicadores e 4 arrays do tipo double para eles. Por
exemplo:
//--- O indicador tem quatro buffers de indicadores
#property indicator_buffers 4
//--- O indicador tem uma plotagem
#property indicator_plots

//--- Graficamente plotando nmero 1 aparecer como castiais (candlesticks)


#property indicator_type1

DRAW_CANDLES

//--- Castiais (candlesticks) sero desenhados em clrDodgerBlue

2000-2015, MetaQuotes Software Corp.

1380

Indicadores Customizados
#property indicator_color1

clrDodgerBlue

//--- 4 arrays para buffers de indicadores


double OBuffer[];
double HBuffer[];
double LBuffer[];
double CBuffer[];

Graficamente, plotagens automticas usam buffers de indicadores de acordo com o nmero de


plotagem. A numerao da plotagem comea com um, a numerao dos buffers comea com zero. Se a
primeira plotagem requer 4 buffers do indicador, ento os primeiros quatro buffers do indicador sero
utilizados para desenh-lo. Estes quatro buffers devem estar lincados com os arrays apropriados com a
indexao correta usando a funo SetIndexBuffer().
//--- Arrays vinculados com buffers de indicador
SetIndexBuffer(0,OBuffer,INDICATOR_DATA);

// O primeiro buffer corresponde ao ndice zero

SetIndexBuffer(1,HBuffer,INDICATOR_DATA);

// O segundo buffer corresponde ao ndice 1

SetIndexBuffer(2,LBuffer,INDICATOR_DATA);

// O terceiro buffer corresponde ao ndice 2

SetIndexBuffer(3,CBuffer,INDICATOR_DATA);

// O quarto buffer corresponde ao ndice 3

A plotagem dos castiais (candlesticks), o indicador usar apenas o primeiro dos quatro buffers,
porque a plotagem do "candlestick" foi anunciado sobre o primeiro nmero.
Alterar o exemplo, e adicionar plotagem de uma linha simples - DRAW_LINE. Agora, suponha que a
linha numerada como 1, e os castiais (candlesticks) so o nmero 2. O nmero de buffers e o
nmero plotagem aumentou.
//--- O indicador tem 5 buffers de indicador
#property indicator_buffers 5
//--- O indicador tem 2 plotagens
#property indicator_plots

//--- Plotagem 1 uma linha


#property indicator_type1

DRAW_LINE

//--- A cor d linha clrDodgerRed


#property indicator_color1

clrDodgerRed

//--- Plotagem 2 desenhado como castial (candlestick) japons


#property indicator_type2

DRAW_CANDLES

//--- A cor do castial (candlestick) clrDodgerBlue


#property indicator_color2

clrDodgerBlue

//--- 5 arrays para buffers de indicador


double LineBuffer[];
double OBuffer[];
double HBuffer[];
double LBuffer[];
double CBuffer[];

A ordem das plotagem mudou, e agora a linha vem em primeiro lugar, seguido dos castiais
(candlesticks) Japoneses. Portanto, a ordem dos buffers apropriado - primeiro anunciamos um
buffer para a linha com o ndice zero, e ento quatro buffers para os castiais (candlesticks).
SetIndexBuffer(0,LineBuffer,INDICATOR_DATA);

// O primeiro buffer corresponde ao ndice 0

2000-2015, MetaQuotes Software Corp.

1381

Indicadores Customizados
//--- Ligando arrays com buffers de indicador para os castiais (candlesticks)
SetIndexBuffer(1,OBuffer,INDICATOR_DATA);

// O segundo buffer corresponde ao ndice 1

SetIndexBuffer(2,HBuffer,INDICATOR_DATA);

// O terceiro buffer corresponde ao ndice 2

SetIndexBuffer(3,LBuffer,INDICATOR_DATA);

// O quarto buffer corresponde ao ndice 3

SetIndexBuffer(4,CBuffer,INDICATOR_DATA);

// O quinto buffer corresponde ao ndice 4

O nmero de buffers e plotagens sero definidos usando somente diretivas de compilador,


impossvel alterar essas propriedades dinamicamente usando funes.

Verses Coloridas de Estilos


Como so vistos na tabela, os estilos so divididos em dois grupos. O primeiro grupo inclui estilos
cujo nome no existe a palavra COLOR, ns chamamos de estilos bsicos:
DRAW_LINE
DRAW_SECTION
DRAW_HISTOGRAM
DRAW_HISTOGRAM2
DRAW_ARROW
DRAW_ZIGZAG
DRAW_FILLING
DRAW_BARS
DRAW_CANDLES
No segundo grupo, os nomes de estilo contm a palavra COLOR, vamos cham-los de verses de
cores:
DRAW_COLOR_LINE
DRAW_COLOR_SECTION
DRAW_COLOR_HISTOGRAM
DRAW_COLOR_HISTOGRAM2
DRAW_COLOR_ARROW
DRAW_COLOR_ZIGZAG
DRAW_COLOR_BARS
DRAW_COLOR_CANDLES
Todas as verses de cores de estilos diferentes a partir das bsicas permitem especificar uma cor
para cada parte da plotagem. A parte mnima de plotagem uma barra, ento podemos dizer que as
verses de cores permitem definir a cor de cada bar.
As excees so os estilos DRAW_NONE e DRAW_FILLING, eles no tem verses de cores.
Para definir a plotagem da cor em cada barra, um buffer adicional para armazenar o ndice de cor foi
adicionada verso de cor. Estes ndices indicam o nmero de uma cor numa array especial, a qual
contm um conjunto predefinido de cores. O tamanho do array das cores 64. Isto significa que cada

2000-2015, MetaQuotes Software Corp.

1382

Indicadores Customizados
verso de cor de um estilo de pintura permite uma plotagem de 64 cores diferentes.
O conjunto e o nmero de cores na array especial de cores ser definido atravs de uma diretiva de
compilao #property indicator_color, onde pode especificar todas as cores necessrias separadas por
vrgulas. Por exemplo, como uma entrada de um indicador:
//--- Definir 8 cores para colorir os candlesticks (eles so armazenados na array especial)
#property indicator_color1

clrRed,clrBlue,clrGreen,clrYellow,clrMagenta,clrCyan,clrLime,clrOrange

Ele afirma que para plotar 1, 8 cores so definidas, que sero colocados em um array especial. Alm
disso o programa no especifica a cor da plotagem, mas apenas o seu ndice. Se quisermos definir a
cor vermelha para o nmero de barras K, o valor da cor do ndice a partir de array deve ser definido no
buffer de cor do indicador. A cor vermelha especificada pela primeira vez na diretiva, que
corresponde ao nmero de ndice 0.
//--- definir a cor clrRed para candlestick
col_buffer[buffer_index]=0;

O conjunto de cores no colocado de uma vez por todas, pode ser alterado de forma dinmica
usando PlotIndexSetInteger(). Exemplo:
//--- Definir a cor para cada ndice com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,

//

O nmero do estilo grfico

PLOT_LINE_COLOR,

//

Identificador da propriedade

plot_color_ind,

//

O ndice da cor, onde se escreve a cor

color_array[i]);

//

Uma nova cor

Propriedades do indicador e plotagem


Para plotagem de indicadores, propriedades podem ser definidas por meio de diretivas de compilador
e usando as funes apropriadas. Ler maiores informaes sobre isto em Conexo entre Propriedades
do Indicador e Funes. Mudana dinmica de propriedades do indicador usando funes especiais
permitem a criao de indicadores personalizados mais flexveis.

Incio do Desenho do Indicador no Grfico


Em muitos casos, de acordo com as condies do algoritmo, impossvel iniciar o clculo dos valores
do indicador imediatamente com a barra atual, uma vez que necessrio proporcionar um nmero
mnimo de barras anteriores disponveis no histrico. Por exemplo, muitos tipos de alisamento
implicam na utilizao de um array de preos sobre N barras anteriores, e com base nestes valores, o
valor do indicador na barra atual calculado.
Nestes casos, no existe qualquer maneira para calcular os valores do indicador para as primeiras N
barras, ou estes valores no se destinam a ser apresentados no grfico e so apenas subsidiadas para
calcular novos valores. Para evitar a plotagem do indicador nas primeiras N barras do histrico, defina
o valor N para a propriedade PLOT_DRAW_BEGIN para a plotagem correspondente:
//--- Ligando arrays com buffers de indicador para os castiais (candlesticks)
PlotIndexSetInteger(number_of_plot,PLOT_DRAW_BEGIN,N);

2000-2015, MetaQuotes Software Corp.

1383

Indicadores Customizados
Onde:
number_of_plot um valor a partir de zero para indicator_plots-1 (numerao dos lotes inicia com
zero).
N - o nmero da primeira barra no histrico, no qual o indicador no deve ser exibido sobre o
grfico.

2000-2015, MetaQuotes Software Corp.

1384

Indicadores Customizados

DRAW_NONE
O estilo DRAW_NONE projetado para uso em casos onde necessrio calcular os valores de um
buffer e mostr-los na Janela de Dados, mas a plotagem no grfico no necessria. Para configurar
com preciso use a expresso IndicatorSetInteger(INDICATOR_DIGITS,num_chars) na funo OnInit():
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,InvisibleBuffer,INDICATOR_DATA);
//--- Define a preciso dos valores a serem exibidos na Janela de Dados
IndicatorSetInteger(INDICATOR_DIGITS,0);
//--return(INIT_SUCCEEDED);
}

O nmero de buffers requeridos para plotagem de DRAW_NONE 1.


Um exemplo do indicador que mostra o nmero da barra na janela de dados, sobre a qual o mouse
passa sobre ela. A numerao corresponde as sries temporais (timeseries), significando que a atual
barra inacabada tem ndice zero e a mais antiga barra tem o maior ndice.

Note que apesar do fato de ser definida a plotagem para a cor vermelha #1, o indicador no desenha
nada no grfico.
//+------------------------------------------------------------------+
//|

DRAW_NONE.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1385

Indicadores Customizados
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar Invisvel


#property indicator_label1

"Barra ndice"

#property indicator_type1

DRAW_NONE

#property indicator_style1

STYLE_SOLID

#property indicator_color1

clrRed

#property indicator_width1

//--- buffers do indicador


double

InvisibleBuffer[];

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- Ligando um array e um buffer de indicador
SetIndexBuffer(0,InvisibleBuffer,INDICATOR_DATA);
//--- Define a preciso dos valores a serem exibidos na Janela de Dados
IndicatorSetInteger(INDICATOR_DIGITS,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static datetime lastbar=0;
//--- Se este for o primeiro clculo do indicador
if(prev_calculated==0)
{
//--- Renumerar as barras pela primeira vez
CalcValues(rates_total,close);
//--- Lembrar que a abertura do tempo da barra atual no fechamento da ltima barra
lastbar=(datetime)SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE);
}

2000-2015, MetaQuotes Software Corp.

1386

Indicadores Customizados
else
{
//--- Se uma nova barra apareceu, sua abertura de tempo difere da ltima barra
if(lastbar!=SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE))
{
//--- Renumerar as barras mais uma vez
CalcValues(rates_total,close);
//--- Atualizar o tempo de abertura da barra atual com a ltima barra
lastbar=(datetime)SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE);
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Nmero das barras como numa timeseries

//+------------------------------------------------------------------+
void CalcValues(int total,double const

&array[])

{
//--- Definir a indexao do buffer do indicador como numa timeseries
ArraySetAsSeries(InvisibleBuffer,true);
//--- Definir cada barra com sua numerao
for(int i=0;i<total;i++) InvisibleBuffer[i]=i;
}

2000-2015, MetaQuotes Software Corp.

1387

Indicadores Customizados

DRAW_LINE
DRAW_LINE desenha uma linha de cor especifica pelos valores do buffer do indicador. A largura, estilo
e cor da linha pode ser definido utilizando as diretivas de compilao e dinamicamente usando a
funo PlotIndexSetInteger(). Mudanas dinmicas das propriedades de plotagem permitem "avivar" os
indicadores, de modo que suas mudanas de aparncia dependem da situao corrente.
O nmero de buffers requerido para plotagem de DRAW_LINE 1.
Um exemplo do indicador que desenha a linha usando o fechamento de preo das barras. A linha de
cor, a largura e o estilo mudam aleatoriamente a cada N=5 ticks.

Note que inicialmente para plot1 com DRAW_LINE, as propriedades so definidas usando a diretiva de
compilador #property, e ento na funo OnCalculate() estas trs propriedades so definidas
aleatoriamente. O parmetro N definido nos parmetros externos do indicador para a possibilidade
de configurao manual (o guia Parmetros na janela Propriedades do indicador).
//+------------------------------------------------------------------+
//|

DRAW_LINE.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_LINE"


#property description "Ele desenha uma linha de uma cor especifica no fechamento dos preos"
#property description "Cor, a largura e o estilo de linhas alterado aleatoriamente"
#property description "depois de cada N ticks"

2000-2015, MetaQuotes Software Corp.

1388

Indicadores Customizados
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//--- Propriedades de linha so definidas usando as diretivas de compilao


#property indicator_label1

"Line"

// Nome de uma plotagem para a janela de dados

#property indicator_type1

DRAW_LINE

// Tipo de plotagem uma linha

#property indicator_color1

clrRed

// Cor da linha

#property indicator_style1

STYLE_SOLID // Estilo da linha

#property indicator_width1

// Largura da linha

//--- parmetros de entrada


input int

N=5;

// Nmero de ticks para mudar

//--- Um buffer do indicador para plotar


double

LineBuffer[];

//--- Um array para armazenar as cores


color colors[]={clrRed,clrBlue,clrGreen};
//--- Um array para armazenar os estilos de linha
ENUM_LINE_STYLE styles[]={STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- Ligando um array e um buffer de indicador
SetIndexBuffer(0,LineBuffer,INDICATOR_DATA);
//--- Inicializando o gerador de nmeros pseudo-aleatrios
MathSrand(GetTickCount());
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero crtico de ticks tem sido acumulado
if(ticks>=N)
{

2000-2015, MetaQuotes Software Corp.

1389

Indicadores Customizados
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- Bloco para clculo dos valores do indicador
for(int i=0;i<rates_total;i++)
{
LineBuffer[i]=close[i];
}
//--- Retorna o valor de prev_calculated para a prxima chamada da funo
return(rates_total);
}
//+------------------------------------------------------------------+
//| Altera a aparncia da linha desenhada no indicador

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades de linha
string comm="";
//--- Um bloco para alterar a cor da linha
//--- Obtm aleatoriamente um nmero
int number=MathRand();
//--- O divisor igual ao tamanho do array colors[]
int size=ArraySize(colors);
//--- Obter o ndice para selecionar uma nova cor como o restante da diviso inteira
int color_index=number%size;
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_COLOR,colors[color_index]);
//--- Escrever a cor da linha
comm=comm+(string)colors[color_index];
//--- Um bloco para alterar a largura da linha
number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5; // A largura definida de 0 a 4
//--- Definir a cor com a propriedade PLOT_LINE_WIDTH
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a largura da linha
comm=comm+", Width="+IntegerToString(width);
//--- Um bloco para mudar o estilo da linha
number=MathRand();
//--- O divisor igual ao tamanho do array de estilos
size=ArraySize(styles);
//--- Obter o ndice para selecionar um novo estilo como o resto da diviso inteira
int style_index=number%size;

2000-2015, MetaQuotes Software Corp.

1390

Indicadores Customizados
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_STYLE,styles[style_index]);
//--- Escrever o estilo de linha
comm=EnumToString(styles[style_index])+", "+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1391

Indicadores Customizados

DRAW_SECTION
DRAW_SECTION desenha sees da cor especfica pelos valores do buffer do indicador. A largura, cor e
estilo da linha podem ser especificadas como para o estilo DRAW_LINE - usando as diretivas de
compilao ou dinamicamente usando a funo PlotIndexSetInteger(). Mudanas dinmicas das
propriedades de plotagem permitem "avivar" os indicadores, de modo que suas aparncias sejam
alteradas dependendo da situao corrente.
Sees so desenhadas a partir de um valor no vazio para outro valor no vazio do buffer de
indicador, valores vazios so ignorados. Para especificar qual o valor que deve ser considerado como
"vazio", defina esse valor na propriedade PLOT_EMPTY_VALUE: Por exemplo, se o indicador deve ser
desenhado como uma seqncia de sees sobre valores diferentes de zero, ento voc precisa definir
o valor zero como um vazio:
//--- O valor 0 (vazio) no vai participar no desenho
PlotIndexSetDouble(index_of_plot_DRAW_SECTION,PLOT_EMPTY_VALUE,0);

Sempre preencha explicitamente nos valores dos buffers do indicador, defina um valor vazio num
buffer para os elementos que no devem ser plotados.
O nmero de buffers requeridos para plotagem de DRAW_SECTION 1.
Um exemplo do indicador que desenha sees entre os preos de Alta (high) e de Baixa (low). A cor, a
largura, e o estilo de todas sees mudam aleatoriamente a cada N ticks.

Note que para inicializar plot1 com DRAW_SECTION, as propriedades so definidas usando a diretiva
do compilador #property, e ento na funo OnCalculate(), estas trs propriedades so definidas
aleatoriamente. O parmetro N definido nos parmetros externos do indicador para a possibilidade
de configurao manual (o guia Parmetros na janela Propriedades do indicador).
//+------------------------------------------------------------------+
//|

DRAW_SECTION.mq5 |

2000-2015, MetaQuotes Software Corp.

1392

Indicadores Customizados
//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_SECTION"


#property description "Desenha sees em linha reta para cada barra"
#property description "A cor, a largura eo estilo de sees so alteradas aleatoriamente"
#property description "depois de cada N ticks"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar Seo


#property indicator_label1

"Seo"

#property indicator_type1

DRAW_SECTION

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

bars=5;

// O comprimento das sees nas barras

input int

N=5;

// O nmero de ticks para mudar o estilo das sees

//--- Um buffer do indicador para plotar


double

SectionBuffer[];

//--- Uma varivel auxiliar para calcular extremidades das sees


int

divider;

//--- Um array para armazenar as cores


color colors[]={clrRed,clrBlue,clrGreen};
//--- Um array para armazenar os estilos de linha
ENUM_LINE_STYLE styles[]={STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- Ligando um array e um buffer de indicador
SetIndexBuffer(0,SectionBuffer,INDICATOR_DATA);
//--- O valor 0 (vazio) no vai participar no desenho
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--- Verifica o parmetro do indicador
if(bars<=0)
{
PrintFormat("Valor invalido do parmetro da barra=%d",barras);
return(INIT_PARAMETERS_INCORRECT);
}
else divider=2*bars;
//---+

2000-2015, MetaQuotes Software Corp.

1393

Indicadores Customizados
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero crtico de ticks tem sido acumulado
if(ticks>=N)
{
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- O nmero de barra a partir da qual o clculo dos valores do indicador inicia
int start=0;
//--- Se o indicador foi calculado antes, ento definir o incio na barra anterior
if(prev_calculated>0) start=prev_calculated-1;
//--- Aqui esto todos os clculos dos valores do indicador
for(int i=start;i<rates_total;i++)
{
//--- Obter um resto da diviso do nmero de barra por 2*Barras
int rest=i%divider;
//--- Se o nmero de barra divisvel por 2*Barras
if(rest==0)
{
//--- Definir o final da seo na alta de preo desta barra
SectionBuffer[i]=high[i];
}
//---Se o resto da diviso igual para barras,
else
{
//--- Definir o final da seo na alta de preo desta barra
if(rest==bars) SectionBuffer[i]=low[i];
//--- Se nada aconteceu, ignore a barra - definir 0

2000-2015, MetaQuotes Software Corp.

1394

Indicadores Customizados
else SectionBuffer[i]=0;
}
}
//--- Retorna o valor de prev_calculated para a prxima chamada da funo
return(rates_total);
}
//+------------------------------------------------------------------+
//| Alterar a aparncia das sees no indicador

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades de linha
string comm="";
//--- Um bloco de mudana da cor da linha
int number=MathRand(); // Obter um nmero aleatrio
//--- O divisor igual ao tamanho do array colors[]
int size=ArraySize(colors);
//--- Obter o ndice para selecionar uma nova cor como o restante da diviso inteira
int color_index=number%size;
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_COLOR,colors[color_index]);
//--- Escrever a cor da linha
comm=comm+"\r\n"+(string)colors[color_index];
//--- Um bloco para alterar a largura da linha
number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5;

// A largura definida de 0 a 4

//--- Definir a largura


PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a largura da linha
comm=comm+"\r\nWidth="+IntegerToString(width);
//--- Um bloco para mudar o estilo da linha
number=MathRand();
//--- O divisor igual ao tamanho do array de estilos
size=ArraySize(styles);
//--- Obter o ndice para selecionar um novo estilo como o resto da diviso inteira
int style_index=number%size;
//--- define o estilo da linha
PlotIndexSetInteger(0,PLOT_LINE_STYLE,styles[style_index]);
//--- Escrever o estilo de linha
comm="\r\n"+EnumToString(styles[style_index])+""+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1395

Indicadores Customizados

DRAW_HISTOGRAM
O estilo DRAW_HISTOGRAM desenha um histograma como uma seqncia de colunas de uma
especifica cor do zero para um especifico valor. Os valores so extrados do buffer do indicador. A
largura, cor e estilo da coluna pode ser especificado como para o estilo DRAW_LINE - usando diretivas
de compilao ou dinamicamente usando a funo PlotIndexSetInteger(). Mudanas dinmicas das
propriedades de plotagem permitem alterar o visual do histograma com base na situao atual.
Uma vez que uma coluna a partir do nvel zero desenhada sobre cada barra, DRAW_HISTOGRAM
deve ser melhor utilizada numa janela do grfico em separado. Na maioria das vezes este tipo de de
plotagem usada para criar indicadores do tipo de oscilador, por exemplo, Bears Power ou OsMA. Para
os valores vazios que no so visveis, o valor zero deve ser especificado.
O nmero de buffers requerido para plotagem de DRAW_HISTOGRAM 1.
Um exemplo do indicador que desenha uma senide de uma cor especfica com base na funo
MathSin(). A cor, a largura e o estilo de todas colunas do histograma mudam aleatoriamente a cada N
ticks. O parmetro de barras determina o perodo da senide, isto , aps um nmero especifico de
barras a senide vai repetir o ciclo.

Note que inicialmente para plot1 com DRAW_HISTOGRAM, as propriedades so definidas usando a
diretiva de compilador #property, e ento na funo OnCalculate() estas trs propriedades so
definidas aleatoriamente. O parmetro N definido nos parmetros externos do indicador para a
possibilidade de configurao manual (o guia Parmetros na janela Propriedades do indicador).
//+------------------------------------------------------------------+
//|

DRAW_HISTOGRAM.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."

2000-2015, MetaQuotes Software Corp.

1396

Indicadores Customizados
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_HISTOGRAM"


#property description "Ele desenha um senide como um histograma em uma janela separada"
#property description "A cor e a largura das colunas so alterados aleatoriamente"
#property description "depois de cada N ticks"
#property description "O parmetro das barras define o nmero de barras no ciclo da senide"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar Histograma


#property indicator_label1

"Histograma"

#property indicator_type1

DRAW_HISTOGRAM

#property indicator_color1

clrBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

bars=30;

// O perodo de uma senide em barras

input int

N=5;

// O nmero de ticks para alterar o histograma

//--- buffers do indicador


double

HistogramBuffer[];

//--- Um fator para obter o ngulo 2Pi em radianos, quando multiplicado pelo parmetro das barras
double

multiplier;

//--- Um array para armazenar as cores


color colors[]={clrRed,clrBlue,clrGreen};
//--- Um array para armazenar os estilos de linha
ENUM_LINE_STYLE styles[]={STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,HistogramBuffer,INDICATOR_DATA);
//--- Calcular a multiplicao
if(bars>1)multiplier=2.*M_PI/bars;
else
{
PrintFormat("Defina o valor das barras=%d maior do que 1",bars);
//--- Finalizao antecipada do indicador
return(INIT_PARAMETERS_INCORRECT);
}
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

2000-2015, MetaQuotes Software Corp.

1397

Indicadores Customizados
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero crtico de ticks tem sido acumulado
if(ticks>=N)
{
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- Calcule os valores do indicador
int start=0;
//--- Se j foi calculado durante os incios anteriores do OnCalculate

if(prev_calculated>0) start=prev_calculated-1; // definir o incio do clculo com a penltima ba


//--- Preencher o buffer do indicador com valores
for(int i=start;i<rates_total;i++)
{
HistogramBuffer[i]=sin(i*multiplier);
}
//--- Retorna o valor de prev_calculated para a prxima chamada da funo
return(rates_total);
}
//+------------------------------------------------------------------+
//| Altera a aparncia das linhas no indicador

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades de linha
string comm="";
//--- Um bloco para alterar a cor da linha
int number=MathRand(); // Obter um nmero aleatrio
//--- O divisor igual ao tamanho do array colors[]
int size=ArraySize(colors);
//--- Obter o ndice para selecionar uma nova cor como o restante da diviso inteira
int color_index=number%size;

2000-2015, MetaQuotes Software Corp.

1398

Indicadores Customizados
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_COLOR,colors[color_index]);
//--- Escrever a cor da linha
comm=comm+"\r\n"+(string)colors[color_index];
//--- Um bloco para alterar a largura da linha
number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5;

// A largura definida de 0 a 4

//--- Definir a largura


PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a largura da linha
comm=comm+"\r\nWidth="+IntegerToString(width);
//--- Um bloco para mudar o estilo da linha
number=MathRand();
//--- O divisor igual ao tamanho do array de estilos
size=ArraySize(styles);
//--- Obter o ndice para selecionar um novo estilo como o resto da diviso inteira
int style_index=number%size;
//--- define o estilo da linha
PlotIndexSetInteger(0,PLOT_LINE_STYLE,styles[style_index]);
//--- Escrever o estilo de linha
comm="\r\n"+EnumToString(styles[style_index])+""+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1399

Indicadores Customizados

DRAW_HISTOGRAM2
O estilo DRAW_HISTOGRAM2 desenha uma histograma de uma cor especifica segmentos verticais
usando os valores de dois buffers do indicator. A largura, cor e estilo dos segmentos podem ser
especificados para o estilo DRAW_LINE - usando diretivas de compilao ou dinamicamente usando a
funo PlotIndexSetInteger(). Mudanas dinmicas das propriedades de plotagem permitem alterar o
visual do histograma com base na situao atual.
O estilo DRAW_HISTOGRAM2 pode ser usado numa sub-janela separada e na sua janela principal. Para
valores vazios nada desenhado, todos os valores nos buffers do indicador precisam ser definidos
explicitamente. Buffers no so inicializados com o valor zero.
O nmero de buffers requerido para plotagem de DRAW_HISTOGRAM2 2.
Um exemplo de indicador que plota um segmento vertical da cor especifica e largura entre a Abertura
(open) e o Fechamento (close) de preos de cada barra. A cor, a largura e o estilo de todas as colunas
do histograma mudam aleatoriamente a cada N ticks. durante a inicializao do indicador, na funo
OnInit(), o nmero do dia da semana em que no ser desenhado o histograma - invisible_day -
definido aleatoriamente. Para este fim um valor vazio definido PLOT_EMPTY_VALUE=0:
//--- Definir um valor vazio
PlotIndexSetDouble(index_of_plot_DRAW_SECTION,PLOT_EMPTY_VALUE,0);

Note que inicialmente para plot1 com DRAW_HISTOGRAM2, as propriedades so definidas usando a
diretiva de compilador #property, e ento na funo OnCalculate() estas trs propriedades so
definidas aleatoriamente. O parmetro N definido nos parmetros externos do indicador para a
possibilidade de configurao manual (o guia Parmetros na janela Propriedades do indicador).
//+------------------------------------------------------------------+
//|

DRAW_HISTOGRAM2.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

2000-2015, MetaQuotes Software Corp.

1400

Indicadores Customizados
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Un indicador para demonstrar DRAW_HISTOGRAM2"


#property description " desenhado um segmento entre a abertura e fechamento em cada barra"
#property description "A cor, a largura e o estilo so alterados aleatoriamente"
#property description "depois de cada N ticks"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar Histogram_2


#property indicator_label1

"Histogram_2"

#property indicator_type1

DRAW_HISTOGRAM2

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

N=5;

// O nmero de ticks para alterar o histograma

//--- buffers do indicador


double

Histogram_2Buffer1[];

double

Histogram_2Buffer2[];

//--- O dia da semana, em que o indicador no plotado


int invisible_day;
//--- Um array para armazenar as cores
color colors[]={clrRed,clrBlue,clrGreen};
//--- Um array para armazenar os estilos de linha
ENUM_LINE_STYLE styles[]={STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,Histogram_2Buffer1,INDICATOR_DATA);
SetIndexBuffer(1,Histogram_2Buffer2,INDICATOR_DATA);
//--- Definir um valor vazio
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--- Obtm aleatoriamente um nmero a partir do 0 at 5
invisible_day=MathRand()%6;
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,

2000-2015, MetaQuotes Software Corp.

1401

Indicadores Customizados
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero crtico de ticks tem sido acumulado
if(ticks>=N)
{
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- Calcule os valores do indicador
int start=0;
//--- Para obter o dia da semana pela abertura de preo de cada barra
MqlDateTime dt;
//--- Se j foi calculado durante os incios anteriores do OnCalculate

if(prev_calculated>0) start=prev_calculated-1; // definir o incio do clculo com a penltima ba


//--- Preencher o buffer do indicador com valores
for(int i=start;i<rates_total;i++)
{
TimeToStruct(time[i],dt);
if(dt.day_of_week==invisible_day)
{
Histogram_2Buffer1[i]=0;
Histogram_2Buffer2[i]=0;
}
else
{
Histogram_2Buffer1[i]=open[i];
Histogram_2Buffer2[i]=close[i];
}
}
//--- Retorna o valor de prev_calculated para a prxima chamada da funo
return(rates_total);
}
//+------------------------------------------------------------------+
//| Altera a aparncia das linhas no indicador

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1402

Indicadores Customizados
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades de linha
string comm="";
//--- Um bloco de mudana da cor da linha
int number=MathRand(); // Obter um nmero aleatrio
//--- O divisor igual ao tamanho do array colors[]
int size=ArraySize(colors);
//--- Obter o ndice para selecionar uma nova cor como o restante da diviso inteira
int color_index=number%size;
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_COLOR,colors[color_index]);
//--- Escrever a cor da linha
comm=comm+"\r\n"+(string)colors[color_index];
//--- Um bloco para alterar a largura da linha
number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5;

// A largura definida de 0 a 4

//--- Define a largura da linha


PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a largura da linha
comm=comm+"\r\nWidth="+IntegerToString(width);
//--- Um bloco para mudar o estilo da linha
number=MathRand();
//--- O divisor igual ao tamanho do array de estilos
size=ArraySize(styles);
//--- Obter o ndice para selecionar um novo estilo como o resto da diviso inteira
int style_index=number%size;
//--- define o estilo da linha
PlotIndexSetInteger(0,PLOT_LINE_STYLE,styles[style_index]);
//--- Escrever o estilo de linha
comm="\r\n"+EnumToString(styles[style_index])+""+comm;
//--- Adiciona informao sobre o dia que omitido nos clculos
comm="\r\nDia no plotado - "+EnumToString((ENUM_DAY_OF_WEEK)invisible_day)+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1403

Indicadores Customizados

DRAW_ARROW
O estilo DRAW_ARROW desenha setas de cor especfica (smbolos do conjunto Wingdings) baseado no
valor do buffer do indicador. A largura e a cor dos smbolos pode ser especificado semelhante ao
modelo DRAW_LINE - usando diretivas de compilador ou dinamicamente usando a funo
PlotIndexSetInteger(). Mudanas dinmicas das propriedades de plotagem permitem alterar o visual de
um indicador baseado na situao atual.
O cdigo de smbolo definido usando a propriedade PLOT_ARROW.
//--- Definir o cdigo smbolo a partir das fontes Wingdings para desenhar em PLOT_ARROW
PlotIndexSetInteger(0,PLOT_ARROW,code);

O valor padro do PLOT_ARROW=159 (um crculo).


Cada seta na verdade um smbolo que tem a altura e o ponto de ancoragem e pode abranger algumas
informaes importantes num grfico (por exemplo, o preo de fechamento da barra). Assim,
podemos adicionalmente especificar o deslocamento vertical em pixels, o qual no depende da escala
do grfico. As setas sero deslocadas para baixo pelo nmero especificado de pixels, embora os
valores do indicador permanecero os mesmos:
//--- Definir o deslocamento vertical das setas em pixels
PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,shift);

Um valor negativo de PLOT_ARROW_SHIFT significa a mudana de setas para cima, valores positivos
deslocam a seta para baixo.
O estilo DRAW_ARROW pode ser usado numa sub-janela separada de um grfico e em sua janela
principal. Valores vazios no so desenhados e no aparecem na "Janela de Dados", todos os valores
nos buffers do indicador devem ser definidos explicitamente. Buffers no so inicializados com o valor
zero.
//--- Definir um valor vazio
PlotIndexSetDouble(index_of_plot_DRAW_ARROW,PLOT_EMPTY_VALUE,0);

O nmero de buffers necessrios para plotagem DRAW_ARROW 1.


Um exemplo de indicador que desenha as setas em cada uma das barras com o preo mais alto do que
o preo final da barra anterior. A cor, a largura, deslocamento e smbolo de cdigo de todas setas so
alterados aleatoriamente a cada N ticks.

2000-2015, MetaQuotes Software Corp.

1404

Indicadores Customizados

No exemplo, para plot1 com o estilo DRAW_ARROW, as propriedades, a cor e o tamanho so


especificados usando a diretiva de compilador #property, e depois na funo OnCalculate() as
propriedades so definidas aleatoriamente. O parmetro N definido nos parmetros externos do
indicador para a possibilidade de configurao manual (o guia Parmetros na janela Propriedades do
indicador).
//+------------------------------------------------------------------+
//|

DRAW_ARROW.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_ARROW"


#property description "Desenha setas definidas pelos caracteres Unicode, sobre um grfico"

#property description "A cor, o tamanho, deslocamento e cdigo smbolo da seta, so alterados de fo
#property description "depois de cada N ticks"
#property description "O parmetro de cdigo define o valor da base: cdigo = 159 (um crculo)"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//--- Plotagem de Setas


#property indicator_label1

"Setas"

#property indicator_type1

DRAW_ARROW

#property indicator_color1

clrGreen

#property indicator_width1

//--- parmetros de entrada

2000-2015, MetaQuotes Software Corp.

1405

Indicadores Customizados
input int

N=5;

// Nmero de ticks para mudar

input ushort

code=159;

// Cdigo smbolo para desenhar em DRAW_ARROW

//--- Um buffer do indicador para plotar


double

ArrowsBuffer[];

//--- Um array para armazenar as cores


color colors[]={clrRed,clrBlue,clrGreen};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,ArrowsBuffer,INDICATOR_DATA);
//--- Definir o cdigo smbolo para desenho em PLOT_ARROW
PlotIndexSetInteger(0,PLOT_ARROW,code);
//--- Definir o deslocamento vertical das setas em pixels
PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,5);
//--- Definir como um valor vazio 0
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcular ticks para mudar a cor, tamanho, deslocamento e cdigo da seta
ticks++;
//--- Se um nmero crtico de ticks tem sido acumulado
if(ticks>=N)
{
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- Bloco para clculo dos valores do indicador

2000-2015, MetaQuotes Software Corp.

1406

Indicadores Customizados
int start=1;
if(prev_calculated>0) start=prev_calculated-1;
//--- Calculando loop
for(int i=1;i<rates_total;i++)
{
//--- Se o preo atual fechado mais alto do que o anterior, desenhar uma seta
if(close[i]>close[i-1])
ArrowsBuffer[i]=close[i];
//--- Otherwise specify the zero value
else
ArrowsBuffer[i]=0;
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Alterar a aparncia dos smbolos no indicador

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para formar as informaes sobre as propriedades do indicador
string comm="";
//--- Um bloco para alterar a cor da seta
int number=MathRand(); // Obter um nmero aleatrio
//--- O divisor igual ao tamanho do array colors[]
int size=ArraySize(colors);
//--- Obter o ndice para selecionar uma nova cor como o restante da diviso inteira
int color_index=number%size;
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_COLOR,colors[color_index]);
//--- Escrever a cor da linha
comm=comm+"\r\n"+(string)colors[color_index];
//--- Um bloco para mudar o tamanho das setas
number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5;

// O tamanho definido a partir de 0 at 4

//--- Definir a cor com a propriedade PLOT_LINE_WIDTH


PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a cor da linha
comm=comm+"\r\nWidth="+IntegerToString(width);
//--- Um bloco para mudar o cdigo das setas (PLOT_ARROW)
number=MathRand();

//--- Obter o restante da diviso de nmero inteiro para calcular um novo cdigo da seta(a partir d
int code_add=number%20;
//--- Definir o novo smbolo de cdigo como o resultado de code+code_add
PlotIndexSetInteger(0,PLOT_ARROW,code+code_add);
//--- Escreva o cdigo de smbolo PLOT_ARROW

2000-2015, MetaQuotes Software Corp.

1407

Indicadores Customizados
comm="\r\n"+"PLOT_ARROW="+IntegerToString(code+code_add)+comm;
//--- Um bloco de mudana do deslocamento vertical das setas em pixels
number=MathRand();
//--- Obter o deslocamento como o restante da diviso inteira
int shift=20-number%41;
//--- Definir o deslocamento novo de -20 a 20
PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,shift);
//--- Escrever o deslocamento PLOT_ARROW_SHIFT
comm="\r\n"+"PLOT_ARROW_SHIFT="+IntegerToString(shift)+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1408

Indicadores Customizados

DRAW_ZIGZAG
O estilo DRAW_ZIGZAG desenha segmentos da cor especifica baseada nos valor de dois buffers do
indicador. Este estilo muito similar ao DRAW_SECTION, mas ao contrrio deste ltimo, permite
desenhar segmentos verticais dentro de uma barra, se os valores de ambos os buffers do indicador
so definidos para este barra. Os segmentos so plotados a partir de um valor no primeiro buffer para
um valor no segundo buffer do indicador. Nenhum dos buffers pode conter somente valores vazios,
uma vez que neste caso nada plotado.
A largura, cor e estilo da linha podem ser especificadas como para o estilo DRAW_SECTION - usando
as diretivas de compilao ou dinamicamente usando a funo PlotIndexSetInteger(). Mudanas
dinmicas das propriedades de plotagem permitem "avivar" os indicadores, de modo que suas
aparncias sejam alteradas dependendo da situao corrente.
Sees so desenhadas a partir de um valor no vazio de um buffer para um valor no vazio de outro
buffer do indicador. Para especificar o valor que deve ser considerado como "vazio", defina esse valor
na propriedade PLOT_EMPTY_VALUE:
//--- O valor 0 (vazio) no vai participar no desenho
PlotIndexSetDouble(index_of_plot_DRAW_ZIGZAG,PLOT_EMPTY_VALUE,0);

Sempre preencher explicitamente os valores dos buffers do indicador, definir um valor vazio num
buffer para ignorar barras.
O nmero de buffers requeridos para plotagem DRAW_ZIGZAG 2.
Um exemplo de indicador de que plota uma serra com base nos altas e baixas dos preos. A cor, a
largura eo estilo das linhas zigzag alteram aleatoriamente a cada N ticks.

Note que para inicializar plot1 com DRAW_ZIGZAG, as propriedades so definidas usando a diretiva de
compilar #property, e ento na funo OnCalculate() estas propriedades so definidas aleatoriamente.
O parmetro N definido nos parmetros externos do indicador para a possibilidade de configurao

2000-2015, MetaQuotes Software Corp.

1409

Indicadores Customizados
manual (o guia Parmetros na janela Propriedades do indicador).
//+------------------------------------------------------------------+
//|

DRAW_ZIGZAG.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_ZIGZAG"


#property description "Ele desenha uma \"serra\" como segmentos de reta, ignorando as barras de um

#property description "O dia a ignorar selecionado aleatoriamente durante a inicializao do indi
#property description "A cor, a largura e tamanho dos segmentos so alterados aleatoriamente"
#property description " a cada N ticks"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar ZigZag


#property indicator_label1

"ZigZag"

#property indicator_type1

DRAW_ZIGZAG

#property indicator_color1

clrBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

N=5;

// Nmero de ticks para alterar

//--- buffers do indicador


double

ZigZagBuffer1[];

double

ZigZagBuffer2[];

//--- O dia da semana, em que o indicador no plotado


int invisible_day;
//--- Um array para armazenar as cores
color colors[]={clrRed,clrBlue,clrGreen};
//--- Um array para armazenar os estilos de linha
ENUM_LINE_STYLE styles[]={STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- Arrays de ligao e buffers do indicador
SetIndexBuffer(0,ZigZagBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,ZigZagBuffer2,INDICATOR_DATA);
//--- Obter um valor aleatrio de 0 para 6, para este dia o indicador no plotado
invisible_day=MathRand()%6;
//--- O valor 0 (vazio) no vai participar no desenho
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);

2000-2015, MetaQuotes Software Corp.

1410

Indicadores Customizados
//--- O valor 0 (vazio) no vai participar no desenho
PlotIndexSetString(0,PLOT_LABEL,"ZigZag1;ZigZag2");
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero suficiente de ticks foi acumulado
if(ticks>=N)
{
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- A estrutura de tempo necessrio para obter o dia da semana de cada barra
MqlDateTime dt;
//--- A posio inicial dos clculos
int start=0;

//--- Se o indicador foi calculado com o tick anterior, ento inicia o clculo com o passado, mas d
if(prev_calculated!=0) start=prev_calculated-1;
//--- Calculando loop
for(int i=start;i<rates_total;i++)
{
//--- Escreva o tempo de abertura da barra na estrutura
TimeToStruct(time[i],dt);
//--- Se o dia da semana desta barra igual para invisible_day
if(dt.day_of_week==invisible_day)
{
//--- Escrever valores vazios de buffers para este barra
ZigZagBuffer1[i]=0;
ZigZagBuffer2[i]=0;

2000-2015, MetaQuotes Software Corp.

1411

Indicadores Customizados
}
//--- Se o dia da semana OK, preencha os buffers
else
{
//--- Se o nmero de barra o mesmo
if(i%2==0)
{
//---

Escrever High (alta) no primeiro buffer a Low (baixa) no segundo

ZigZagBuffer1[i]=high[i];
ZigZagBuffer2[i]=low[i];
}
//--- O nmero da barra impar
else
{
//--- Preenchimento da barra na ordem inversa
ZigZagBuffer1[i]=low[i];
ZigZagBuffer2[i]=high[i];
}
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Alterar a aparncia dos segmentos zigzag

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades de ZigZag
string comm="";
//--- Um bloco para mudar a cor do ziguezague
int number=MathRand(); // Obter um nmero aleatrio
//--- O divisor igual ao tamanho do array colors[]
int size=ArraySize(colors);
//--- Obter o ndice para selecionar uma nova cor como o restante da diviso inteira
int color_index=number%size;
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_COLOR,colors[color_index]);
//--- Escrever a cor da linha
comm=comm+"\r\n"+(string)colors[color_index];
//--- Um bloco para alterar a largura da linha
number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5;

// A largura definida de 0 a 4

//--- Definir a cor com a propriedade PLOT_LINE_WIDTH


PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a largura da linha
comm=comm+"\r\nWidth="+IntegerToString(width);

2000-2015, MetaQuotes Software Corp.

1412

Indicadores Customizados

//--- Um bloco para mudar o estilo da linha


number=MathRand();
//--- O divisor igual ao tamanho do array de estilos
size=ArraySize(styles);
//--- Obter o ndice para selecionar um novo estilo como o resto da diviso inteira
int style_index=number%size;
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_STYLE,styles[style_index]);
//--- Escrever o estilo de linha
comm="\r\n"+EnumToString(styles[style_index])+""+comm;
//--- Adiciona informao sobre o dia que omitido nos clculos
comm="\r\nDia no plotado - "+EnumToString((ENUM_DAY_OF_WEEK)invisible_day)+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1413

Indicadores Customizados

DRAW_FILLING
O estilo DRAW_FILLING plota uma rea colorida entre valores de dois buffers do indicador. De fato,
este modelo desenha duas linhas e preenche o espao entre elas, com uma das duas cores especficas.
Ele usado para a criao de indicadores que desenham canais. Nenhum dos buffers podem conter
apenas valores vazios, uma vez que, neste caso, nada plotado.
Voc pode definir duas cores de preenchimento:
a primeira cor usada para as reas onde os valores do primeiro buffer so maiores do que os
valores do segundo buffer do indicador;
a segunda cor usada para as reas onde os valores de do segundo buffer do so maiores do que os
valores no primeiro buffer indicador.
A cor de preenchimento pode ser definida usando as diretivas do compilador ou dinamicamente usando
a funo PlotIndexSetInteger(). Mudanas dinmicas das propriedades de plotagem permitem "avivar"
os indicadores, de modo que suas mudanas de aparncia dependem da situao corrente.
O indicador calculado para todas as barras, para a qual os valores dos dois buffers do indicador no
so iguais a 0 ou o valor vazio. Para especificar o valor que deve ser considerado como "vazio", defina
esse valor na propriedade PLOT_EMPTY_VALUE:
#define INDICATOR_EMPTY_VALUE -1.0
...
//--- INDICATOR_EMPTY_VALUE (valor vazio) no vai participar no clculo de
PlotIndexSetDouble (DRAW_FILLING_creation_index,PLOT_EMPTY_VALUE,INDICATOR_EMPTY_VALUE);

Desenhar sobre as barras que no participam no clculo do indicador depende dos valores nos buffers
do indicador:
Barras, para os quais os valores de ambos os buffers do indicador so iguais a 0, no participam no
desenho do indicador. Isto significa que a rea com valores iguais a zero no preenchida.

Barras, para as quais os valores dos buffers do indicador so iguais ao "valor vazio", participam no
desenho do indicador. A rea com valores vazios ser preenchida de modo que conecte as reas com
valores significativos.

2000-2015, MetaQuotes Software Corp.

1414

Indicadores Customizados

Deve ser notado que se o "valor vazio" igual a zero, as barras que no participam no clculo do
indicador tambm so preenchidas.
O nmero de buffers necessrios para plotagem DRAW_FILLING 2.
Um exemplo do indicador que desenha um canal entre duas MAs com diferentes perodos mdios em
uma janela separada. A mudana das cores no cruzamento das mdias mveis mostra visualmente a
mudana das tendncias ascendentes e descendentes. As cores alteram aleatoriamente a cada N ticks.
O parmetro N definido nos parmetro externos do indicador para a possibilidade de configurao
manual (na guia Parmetros na janela Propriedades do indicador).

Note que inicialmente para plot1 com DRAW_FILLING as propriedades so definidas usando a diretiva
de compilador #property, e ento na funo OnCalculate() novas cores so definidas aleatoriamente.
//+------------------------------------------------------------------+
//|

DRAW_FILLING.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."

2000-2015, MetaQuotes Software Corp.

1415

Indicadores Customizados
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_FILLING"


#property description "Ele desenha um canal entre duas MAs em uma janela separada"
#property description "O preenchimento da cor alterada aleatoriamente"
#property description "depois de cada N ticks"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar Interseo


#property indicator_label1

"Interseo"

#property indicator_type1

DRAW_FILLING

#property indicator_color1

clrRed,clrBlue

#property indicator_width1

//--- parmetros de entrada


input int

Fast=13;

// Perodo rpido da MA

input int

Slow=21;

// Perodo lento da MA

input int

shift=1;

// Deslocamento das MAs para frente (positivo)

input int

N=5;

// Nmero de ticks para alterar

//--- buffers do Indicador


double

IntersectionBuffer1[];

double

IntersectionBuffer2[];

int fast_handle;
int slow_handle;
//--- Um array para armazenar as cores

color colors[]={clrRed,clrBlue,clrGreen,clrAquamarine,clrBlanchedAlmond,clrBrown,clrCoral,clrDarkSl
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,IntersectionBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,IntersectionBuffer2,INDICATOR_DATA);
//--PlotIndexSetInteger(0,PLOT_SHIFT,shift);
//--fast_handle=iMA(_Symbol,_Period,Fast,0,MODE_SMA,PRICE_CLOSE);
slow_handle=iMA(_Symbol,_Period,Slow,0,MODE_SMA,PRICE_CLOSE);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,

2000-2015, MetaQuotes Software Corp.

1416

Indicadores Customizados
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero suficiente de ticks foi acumulado
if(ticks>=N)
{
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Redefinir o contador de ticks para zero
ticks=0;
}

//--- Faz o primeiro clculo do indicador, ou os dados foram alterados e requerem um reclculo comp
if(prev_calculated==0)
{
//--- Copia todos os valores dos indicadores para os buffers apropriados
int copied1=CopyBuffer(fast_handle,0,0,rates_total,IntersectionBuffer1);
int copied2=CopyBuffer(slow_handle,0,0,rates_total,IntersectionBuffer2);
}
else // Preenche apenas os dados que so atualizados
{

//--- Obtm a diferena entre as barras atuais e as que iniciaram anteriormente ao OnCalculat
int to_copy=rates_total-prev_calculated;
//--- Se no existe qualquer diferena, ainda cpia um valor - na barra zero
if(to_copy==0) to_copy=1;
//--- copia valores to_copy para o fim dos buffers do indicador
int copied1=CopyBuffer(fast_handle,0,0,to_copy,IntersectionBuffer1);
int copied2=CopyBuffer(slow_handle,0,0,to_copy,IntersectionBuffer2);
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Altera as cores do preenchimento do canal

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades de linha
string comm="";
//--- Um bloco para alterar a cor da linha

2000-2015, MetaQuotes Software Corp.

1417

Indicadores Customizados
int number=MathRand(); // Obter um nmero aleatrio
//--- O divisor igual ao tamanho do array colors[]
int size=ArraySize(colors);
//--- Obter o ndice para selecionar uma nova cor como o restante da diviso inteira
int color_index1=number%size;
//--- Define a primeira cor como a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,colors[color_index1]);
//--- Escreve a primeira cor
comm=comm+"\r\nColor1 "+(string)colors[color_index1];
//--- Obter o ndice para selecionar uma nova cor como o restante da diviso inteira
number=MathRand(); // Obtm um nmero aleatrio
int color_index2=number%size;
//--- Define a segunda cor como a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,colors[color_index2]);
//--- Escreve a segunda cor
comm=comm+"\r\nColor2 "+(string)colors[color_index2];
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1418

Indicadores Customizados

DRAW_BARS
O estilo DRAW_BARS desenha barras nos valores de quatro buffers do indicador, que contm a
Abertura (open), Alta (high), Baixa (low) e Fechamento (close) dos preos. usado para a criao de
indicadores personalizados como barras, incluindo aqueles numa sub-janela separada de um grfico e
sobre outros instrumentos financeiros.
A cor das barras pode ser definida usando as diretivas de compilador ou dinamicamente utilizando a
funo PlotIndexSetInteger(). Mudanas dinmicas das propriedades de plotagem permitem "avivar" os
indicadores, de modo que suas mudanas de aparncia dependem da situao corrente.
O indicador desenhado apenas para as barras, para o qual os valores no vazios de todos quatro
buffers do indicador so definidos. Para especificar o valor que deve ser considerado como "vazio",
defina este valor na propriedade PLOT_EMPTY_VALUE:
//--- O valor 0 (vazio) no vai participar no desenho
PlotIndexSetDouble(index_of_plot_DRAW_BARS,PLOT_EMPTY_VALUE,0);

Sempre preencher explicitamente os valores dos buffers do indicador, definir um valor vazio num
buffer para ignorar barras.
O nmero de buffers necessrios para plotagem de DRAW_BARS 4. Todos os buffers para a plotagem
devem ir um aps o outro na ordem dada: Open (abertura do preo), High (alta do preo), Low (baixa
do preo) e Close (fechamento do preo). Nenhum dos buffers podem conter apenas valores vazios,
uma vez que, neste caso, nada plotado.
Um exemplo do indicador que desenha barras sobre um instrumento financeiro selecionado numa
janela separada. A cor das barras muda aleatoriamente a cada N ticks. O parmetro N definido nos
parmetro externos do indicador para a possibilidade de configurao manual (na guia Parmetros na
janela Propriedades do indicador).

Por favor, note que para plot1 com o estilo DRAW_BARS, a cor definida usando a diretiva de

2000-2015, MetaQuotes Software Corp.

1419

Indicadores Customizados
compilador #property, e ento, na funo OnCalculate() a cor definida aleatoriamente a partir de
uma lista preparada anteriormente.
//+------------------------------------------------------------------+
//|

DRAW_BARS.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_BARS"


#property description "Ele desenha barras de uma seleo de smbolos numa janela separada"

#property description "A cor e a largura das barras, bem como o smbolo so alterados aleatoriament
#property description "cada N ticks"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots

//--- plotar Barras


#property indicator_label1

"Barras"

#property indicator_type1

DRAW_BARS

#property indicator_color1

clrGreen

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

N=5;

// O nmero de ticks para alterar o tipo

input int

bars=500;

// O nmero de barras para mostrar

input bool

messages=false;

// Mostrar mensagens no log "Expert Advisors"

//--- buffers do Indicador


double

BarsBuffer1[];

double

BarsBuffer2[];

double

BarsBuffer3[];

double

BarsBuffer4[];

//--- Nome do smbolo


string symbol;
//--- Um array para armazenar as cores
color colors[]={clrRed,clrBlue,clrGreen,clrPurple,clrBrown,clrIndianRed};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- Se as barras so muito pequenas - concluir o trabalho antes do tempo
if(bars<50)
{

Comment("Por favor, especifique um nmero maior de barras! A operao do indicador foi termin
return(INIT_PARAMETERS_INCORRECT);

2000-2015, MetaQuotes Software Corp.

1420

Indicadores Customizados
}
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,BarsBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,BarsBuffer2,INDICATOR_DATA);
SetIndexBuffer(2,BarsBuffer3,INDICATOR_DATA);
SetIndexBuffer(3,BarsBuffer4,INDICATOR_DATA);
//--- O nome do smbolo, para o qual as barras so desenhadas
symbol=_Symbol;
//--- Definir a exibio do smbolo

PlotIndexSetString(0,PLOT_LABEL,symbol+" Open;"+symbol+" High;"+symbol+" Low;"+symbol+" Close");


IndicatorSetString(INDICATOR_SHORTNAME,"DRAW_BARS("+symbol+")");
//--- Um valor vazio
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero suficiente de ticks foi acumulado
if(ticks>=N)
{
//--- Selecione um novo smbolo a partir da janela de observao do Mercado
symbol=GetRandomSymbolName();
//--- Alterar as propriedades da linha
ChangeLineAppearance();
int tries=0;
//--- Faa 5 tentativas de preencher os buffers com os preos a partir smbolo
while(!CopyFromSymbolToBuffers(symbol,rates_total) && tries<5)
{
//--- Um contador de chamadas da funo CopyFromSymbolToBuffers()
tries++;
}
//--- Redefinir o contador de ticks para zero

2000-2015, MetaQuotes Software Corp.

1421

Indicadores Customizados
ticks=0;
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher os buffers do indicador com preos

//+------------------------------------------------------------------+
bool CopyFromSymbolToBuffers(string name,int total)
{

//--- No array de rates[], vamos copiar Open (abertura), High (alta), Low (baixa) e Close (fechamen
MqlRates rates[];
//--- O contador de tentativas
int attempts=0;
//--- Quanto foi copiado
int copied=0;
//--- Fazer 25 tentativas para obter uma srie temporal(timeseries) sobre o smbolo desejado
while(attempts<25 && (copied=CopyRates(name,_Period,0,bars,rates))<0)
{
Sleep(100);
attempts++;
if(messages) PrintFormat("%s Copiar taxas(%s) tentativas=%d",__FUNCTION__,nome,tentativas);
}
//--- Se falhou em copiar um nmero suficiente de barras
if(copied!=bars)
{
//--- Formar uma mensagem string

string comm=StringFormat("Para o smbolo %s, conseguiu receber somente %d barras de %d solici


name,
copied,
bars
);
//--- Mostrar uma mensagem num comentrio na janela do grfico principal
Comment(comm);
//--- Mostrar a mensagem
if(messages) Print(comm);
return(false);
}
else
{
//--- Definir a exibio do smbolo
PlotIndexSetString(0,PLOT_LABEL,name+" Open;"+name+" High;"+name+" Low;"+name+" Close");
IndicatorSetString(INDICATOR_SHORTNAME,"DRAW_BARS("+name+")");
}
//--- Inicializar buffers com valores vazios
ArrayInitialize(BarsBuffer1,0.0);
ArrayInitialize(BarsBuffer2,0.0);
ArrayInitialize(BarsBuffer3,0.0);
ArrayInitialize(BarsBuffer4,0.0);

2000-2015, MetaQuotes Software Corp.

1422

Indicadores Customizados
//--- Copiar os preos para os buffers
for(int i=0;i<copied;i++)
{
//--- Calcular o ndice apropriado para os buffers
int buffer_index=total-copied+i;
//--- Escreva os preos para os buffers
BarsBuffer1[buffer_index]=rates[i].open;
BarsBuffer2[buffer_index]=rates[i].high;
BarsBuffer3[buffer_index]=rates[i].low;
BarsBuffer4[buffer_index]=rates[i].close;
}
return(true);
}
//+------------------------------------------------------------------+
//| Aleatoriamente retorna um smbolo de Observao do Mercado

//+------------------------------------------------------------------+
string GetRandomSymbolName()
{
//--- O nmero de smbolos mostrada na janela de observao do Mercado
int symbols=SymbolsTotal(true);
//--- A posio de um smbolo na lista - um nmero aleatrio de 0 para smbolos
int number=MathRand()%symbols;
//--- Retornar o nome de um smbolo na posio especificada
return SymbolName(number,true);
}
//+------------------------------------------------------------------+
//| Altera a aparncia das barras

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades da barra
string comm="";
//--- Um bloco para alterar a cor das barras
int number=MathRand(); // Obter um nmero aleatrio
//--- O divisor igual ao tamanho do array colors[]
int size=ArraySize(colors);
//--- Obter o ndice para selecionar uma nova cor como o restante da diviso inteira
int color_index=number%size;
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_COLOR,colors[color_index]);
//--- Escrever a cor da linha
comm=comm+"\r\n"+(string)colors[color_index];
//--- Um bloco para alterar a largura das barras
number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5;

// A largura definida de 0 a 4

//--- Definir a cor com a propriedade PLOT_LINE_WIDTH


PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);

2000-2015, MetaQuotes Software Corp.

1423

Indicadores Customizados
//--- Escrever a largura da linha
comm=comm+"\r\nWidth="+IntegerToString(width);
//--- Escreve o nome do smbolo
comm="\r\n"+symbol+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1424

Indicadores Customizados

DRAW_CANDLES
O estilo DRAW_CANDLES desenha candlesticks sobre os valores dos quatro buffers do indicador, que
contm Open (abertura), High (alta), Low (baixa) e Close (fechamento) de preos. usado para a
criao de indicadores personalizados como uma seqncia de candlesticks, incluindo os inseridos
numa sub-janela separada de um grfico e noutros instrumentos financeiros.
A cor dos candlesticks pode ser definida usando as diretivas de compilador ou dinamicamente usando
a funo PlotIndexSetInteger(). Mudanas dinmicas das propriedades de plotagem permitem "avivar"
os indicadores, de modo que suas mudanas de aparncia dependem da situao corrente.
O indicador desenhado apenas para as barras, para o qual os valores no vazios de todos quatro
buffers do indicador so definidos. Para especificar o valor que deve ser considerado como "vazio",
defina este valor na propriedade PLOT_EMPTY_VALUE:
//--- O valor 0 (vazio) no vai participar no desenho
PlotIndexSetDouble(index_of_plot_DRAW_CANDLES,PLOT_EMPTY_VALUE,0);

Sempre preencher explicitamente os valores dos buffers do indicador, definir um valor vazio num
buffer para ignorar barras.
O nmero de buffers necessrios para plotagem de DRAW_CANDLES 4. Todos os buffers para a
plotagem devem ir um aps o outro na ordem dada: Open (abertura do preo), High (alta do preo),
Low (baixa do preo) e Close (fechamento do preo). Nenhum dos buffers podem conter apenas
valores vazios, uma vez que, neste caso, nada plotado.
Um exemplo de indicador que desenha candlesticks para um instrumento financeiro selecionado em
uma janela separada. A cor dos candlesticks muda aleatoriamente a cada N ticks. O parmetro N
definido nos parmetro externos do indicador para a possibilidade de configurao manual (na guia
Parmetros na janela Propriedades do indicador).

Por favor, note que para plot1, a cor definida usando a diretiva de compilador #property, e ento,

2000-2015, MetaQuotes Software Corp.

1425

Indicadores Customizados
na funo OnCalculate() a cor definida aleatoriamente a partir de uma lista preparada
anteriormente.
//+------------------------------------------------------------------+
//|

DRAW_CANDLES.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_CANDLES."


#property description "ele desenha candlesticks de um smbolo selecionado numa janela separada"
#property description " "
#property description "A cor e a largura dos candlesticks, bem como o smbolo so alterados"
#property description "aleatoriamente a cada N ticks"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots

//--- plotar Barras


#property indicator_label1

"DRAW_CANDLES1"

#property indicator_type1

DRAW_CANDLES

#property indicator_color1

clrGreen

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

N=5;

// O nmero de ticks para alterar o tipo

input int

bars=500;

// O nmero de barras para mostrar

input bool

messages=false;

// Mostrar mensagens no log "Expert Advisors"

//--- buffers do Indicador


double

Candle1Buffer1[];

double

Candle1Buffer2[];

double

Candle1Buffer3[];

double

Candle1Buffer4[];

//--- Nome do smbolo


string symbol;
//--- Um array para armazenar as cores
color colors[]={clrRed,clrBlue,clrGreen,clrPurple,clrBrown,clrIndianRed};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- Se as barras so muito pequenas - concluir o trabalho antes do tempo
if(bars<50)
{

2000-2015, MetaQuotes Software Corp.

1426

Indicadores Customizados

Comment("Por favor, especifique um nmero maior de barras! A operao do indicador foi termin
return(INIT_PARAMETERS_INCORRECT);
}
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,Candle1Buffer1,INDICATOR_DATA);
SetIndexBuffer(1,Candle1Buffer2,INDICATOR_DATA);
SetIndexBuffer(2,Candle1Buffer3,INDICATOR_DATA);
SetIndexBuffer(3,Candle1Buffer4,INDICATOR_DATA);
//--- Um valor vazio
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--- O nome do smbolo, para o qual as barras so desenhadas
symbol=_Symbol;
//--- Definir a exibio do smbolo

PlotIndexSetString(0,PLOT_LABEL,symbol+" Open;"+symbol+" High;"+symbol+" Low;"+symbol+" Close");


IndicatorSetString(INDICATOR_SHORTNAME,"DRAW_CANDLES("+symbol+")");
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=INT_MAX-100;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero suficiente de ticks foi acumulado
if(ticks>=N)
{
//--- Selecione um novo smbolo a partir da janela de observao do Mercado
symbol=GetRandomSymbolName();
//--- Alterar a forma
ChangeLineAppearance();
//--- Selecione um novo smbolo a partir da janela de observao do Mercado
int tries=0;
//--- Faa 5 tentativas de preencher os buffers de Plot1 com os preos a partir da smbolo
while(!CopyFromSymbolToBuffers(symbol,rates_total,0,
Candle1Buffer1,Candle1Buffer2,Candle1Buffer3,Candle1Buffer4)
&& tries<5)
{

2000-2015, MetaQuotes Software Corp.

1427

Indicadores Customizados
//--- Um contador de chamadas da funo CopyFromSymbolToBuffers()
tries++;
}
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preenche o candlestick especificado

//+------------------------------------------------------------------+
bool CopyFromSymbolToBuffers(string name,
int total,
int plot_index,
double &buff1[],
double &buff2[],
double &buff3[],
double &buff4[]
)
{

//--- No array de rates[], vamos copiar Open (abertura), High (alta), Low (baixa) e Close (fechamen
MqlRates rates[];
//--- O contador de tentativas
int attempts=0;
//--- Quanto foi copiado
int copied=0;
//--- Fazer 25 tentativas para obter uma srie temporal(timeseries) sobre o smbolo desejado
while(attempts<25 && (copied=CopyRates(name,_Period,0,bars,rates))<0)
{
Sleep(100);
attempts++;
if(messages) PrintFormat("%s Copiar taxas(%s) tentativas=%d",__FUNCTION__,nome,tentativas);
}
//--- Se falhou em copiar um nmero suficiente de barras
if(copied!=bars)
{
//--- Formar uma mensagem string

string comm=StringFormat("Para o smbolo %s, conseguiu receber somente %d barras de %d solici


name,
copied,
bars
);
//--- Mostrar uma mensagem num comentrio na janela do grfico principal
Comment(comm);
//--- Mostrar a mensagem
if(messages) Print(comm);
return(false);
}

2000-2015, MetaQuotes Software Corp.

1428

Indicadores Customizados
else
{
//--- Definir a exibio do smbolo

PlotIndexSetString(plot_index,PLOT_LABEL,name+" Open;"+name+" High;"+name+" Low;"+name+" Clos


}
//--- Inicializar buffers com valores vazios
ArrayInitialize(buff1,0.0);
ArrayInitialize(buff2,0.0);
ArrayInitialize(buff3,0.0);
ArrayInitialize(buff4,0.0);
//--- Sobre cada tick copiado preos para os buffers
for(int i=0;i<copied;i++)
{
//--- Calcular o ndice apropriado para os buffers
int buffer_index=total-copied+i;
//--- Escreva os preos para os buffers
buff1[buffer_index]=rates[i].open;
buff2[buffer_index]=rates[i].high;
buff3[buffer_index]=rates[i].low;
buff4[buffer_index]=rates[i].close;
}
return(true);
}
//+------------------------------------------------------------------+
//| Aleatoriamente retorna um smbolo de Observao do Mercado

//+------------------------------------------------------------------+
string GetRandomSymbolName()
{
//--- O nmero de smbolos mostrada na janela de observao do Mercado
int symbols=SymbolsTotal(true);
//--- A posio de um smbolo na lista - um nmero aleatrio de 0 para smbolos
int number=MathRand()%symbols;
//--- Retornar o nome de um smbolo na posio especificada
return SymbolName(number,true);
}
//+------------------------------------------------------------------+
//| Altera a aparncia das barras

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades da barra
string comm="";
//--- Um bloco para alterar a cor das barras
int number=MathRand(); // Obter um nmero aleatrio
//--- O divisor igual ao tamanho do array colors[]
int size=ArraySize(colors);
//--- Obter o ndice para selecionar uma nova cor como o restante da diviso inteira
int color_index=number%size;
//--- Definir a cor com a propriedade PLOT_LINE_COLOR

2000-2015, MetaQuotes Software Corp.

1429

Indicadores Customizados
PlotIndexSetInteger(0,PLOT_LINE_COLOR,colors[color_index]);
//--- Escrever a cor
comm=comm+"\r\n"+(string)colors[color_index];
//--- Escreve o nome do smbolo
comm="\r\n"+symbol+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1430

Indicadores Customizados

DRAW_COLOR_LINE
O valor DRAW_COLOR_LINE uma variante colorida do estilo DRAW_LINE; ele tambm desenha uma
linha usando os valores do buffer do indicador. Mas esse estilo, como todos os estilos de cores com a
palavra COLOR em seu ttulo tem um buffer indicador adicional e especial que armazena o ndice de
cores (nmero) a partir de um conjunto especial array de cores. Assim, a cor de cada segmento de
linha pode ser definida atravs da especificao do ndice de cores para desenhar a linha naquela
barra.
A largura, o estilo e as cores das linhas podem ser definidas usando as diretivas de compilador e
dinamicamente usando a funo PlotIndexSetInteger(). Mudanas dinmicas das propriedades de
plotagem permitem "avivar" os indicadores, de modo que suas mudanas de aparncia dependem da
situao corrente.
O nmero de buffers requerido para plotagem de DRAW_COLOR_LINE 2.
um buffer para armazenar os valores do indicador utilizado para desenhar uma linha;
um buffer para armazenar o ndice de cores da linha em cada barra.
Cores sero especificadas pela diretiva de compilador #property indicator_color1 separada por uma
vrgula. O nmero de cores no pode exceder a 64.
//--- Define 5 cores para colorir cada barra (elas so armazenadas no array especial)
#property indicator_color1

clrRed,clrBlue,clrGreen,clrOrange,clrDeepPink // (Podem ser especificad

Um exemplo do indicador que desenha a linha usando o fechamento de preo das barras. A largura da
linha e estilo so alterados aleatoriamente a cada N=5 ticks.

As cores dos segmentos de linhas tambm so alteradas aleatoriamente na funo personalizada


ChangeColors().
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1431

Indicadores Customizados
//| Altera a cor dos segmentos de linha

//+------------------------------------------------------------------+
void

ChangeColors(color

&cols[],int plot_colors)

{
//--- O nmero de cores
int size=ArraySize(cols);
//--string comm=ChartGetString(0,CHART_COMMENT)+"\r\n\r\n";
//--- Para cada ndice de cor definir uma nova cor aleatoriamente
for(int plot_color_ind=0;plot_color_ind<plot_colors;plot_color_ind++)
{
//--- Obter um valor aleatrio
int number=MathRand();
//--- Obter um ndice no array col[] como um resto da diviso inteira
int i=number%size;
//--- Definir a cor para cada ndice com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,

//

O nmero do estilo grfico

PLOT_LINE_COLOR,

//

Identificador da propriedade

plot_color_ind,

//

O ndice da cor, onde se escreve a cor

cols[i]);

//

Uma nova cor

//--- Escrever as cores

comm=comm+StringFormat("LineColorIndex[%d]=%s \r\n",plot_color_ind,ColorToString(cols[i],true
ChartSetString(0,CHART_COMMENT,comm);
}
//--}

O exemplo mostra a caracterstica das verses "cor" de indicadores - para mudar a cor de um
segmento de linha, voc no precisa alterar os valores no buffer ColorLineColors[] (que contm os
ndices de cores). Tudo que voc precisa fazer definir novas cores em um array especial. Isto
permite-lhe alterar rapidamente a cor de uma vez para toda a plotagem, mudando apenas um pequeno
array de cores utilizando a funo PlotIndexSetInteger().
Note que para inicializar plot1 com DRAW_COLOR_LINE as propriedades so definidas usando a
diretiva de compilador #property, e ento na funo OnCalculate() existem trs propriedades que so
definidas aleatoriamente.
O N e Length (o comprimento dos segmentos de corres nas barras) dos parmetros so definidos nos
parmetros externos do indicador para a possibilidade de configurao manual (a guia Parmetros na
janela Propriedades do indicador).
//+------------------------------------------------------------------+
//|

DRAW_COLOR_LINE.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

2000-2015, MetaQuotes Software Corp.

1432

Indicadores Customizados

#property description "Um indicador para demonstrar RAW_COLOR_LINE"


#property description "Ele desenha uma linha no Fechamento do preo em partes coloridas de cada 20
#property description "A largura, estilo e cor de partes da linha so alteradas aleatoriamente"
#property description "cada N ticks"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar ColorLine


#property indicator_label1

"ColorLine"

#property indicator_type1

DRAW_COLOR_LINE

//--- Define 5 cores para colorir cada barra (elas so armazenadas no array especial)
#property indicator_color1

clrRed,clrBlue,clrGreen,clrOrange,clrDeepPink // (Podem ser especificad

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

N=5;

//Nmero de ticks para alterar

input int

Length=20;

// A largura de cada parte de cor nas barras

int

line_colors=5; // O nmero para definir as cores 5 - ver #property indicator_color

//--- Um buffer para plotagem


double

ColorLineBuffer[];

//--- Um buffer para armazenar a cor da linha sobre cada barra


double

ColorLineColors[];

//--- O array para armazenar cores contendo 7 elementos


color colors[]={clrRed,clrBlue,clrGreen,clrChocolate,clrMagenta,clrDodgerBlue,clrGoldenrod};
//--- Um array para armazenar os estilos de linha
ENUM_LINE_STYLE styles[]={STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- Ligando um array e um buffer de indicador
SetIndexBuffer(0,ColorLineBuffer,INDICATOR_DATA);
SetIndexBuffer(1,ColorLineColors,INDICATOR_COLOR_INDEX);
//--- Inicializando o gerador de nmeros pseudo-aleatrios
MathSrand(GetTickCount());
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],

2000-2015, MetaQuotes Software Corp.

1433

Indicadores Customizados
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero crtico de ticks tem sido acumulado
if(ticks>=N)
{
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Alterar as cores de sees de linhas
ChangeColors(colors,5);
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- Bloco para clculo dos valores do indicador
for(int i=0;i<rates_total;i++)
{
//--- Escrever o valor do indicador para o buffer
ColorLineBuffer[i]=close[i];
//--- Agora, aleatoriamente definir um ndice de cores para esta barra
int color_index=i%(5*Length);
color_index=color_index/Length;
//--- Para esta barra, a linha ter a cor com o ndice color_index
ColorLineColors[i]=color_index;
}
//--- Retorna o valor de prev_calculated para a prxima chamada da funo
return(rates_total);
}
//+------------------------------------------------------------------+
//| Altera a cor dos segmentos de linha

//+------------------------------------------------------------------+
void

ChangeColors(color

&cols[],int plot_colors)

{
//--- O nmero de cores
int size=ArraySize(cols);
//--string comm=ChartGetString(0,CHART_COMMENT)+"\r\n\r\n";
//--- Para cada ndice de cor definir uma nova cor aleatoriamente
for(int plot_color_ind=0;plot_color_ind<plot_colors;plot_color_ind++)
{

2000-2015, MetaQuotes Software Corp.

1434

Indicadores Customizados
//--- Obter um valor aleatrio
int number=MathRand();
//--- Obter um ndice no array col[] como um resto da diviso inteira
int i=number%size;
//--- Definir a cor para cada ndice com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,

//

O nmero do estilo grfico

PLOT_LINE_COLOR,

//

Identificador da propriedade

plot_color_ind,

//

O ndice da cor, onde se escreve a cor

cols[i]);

//

Uma nova cor

//--- Escrever as cores

comm=comm+StringFormat("LineColorIndex[%d]=%s \r\n",plot_color_ind,ColorToString(cols[i],true
ChartSetString(0,CHART_COMMENT,comm);
}
//--}
//+------------------------------------------------------------------+
//| Altera a aparncia de uma linha visualizada no indicador

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades de linha
string comm="";
//--- Um bloco para alterar a largura da linha
int number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5; // A largura definida de 0 a 4
//--- Definir a cor com a propriedade PLOT_LINE_WIDTH
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a largura da linha
comm=comm+" Width="+IntegerToString(width);
//--- Um bloco para mudar o estilo da linha
number=MathRand();
//--- O divisor igual ao tamanho do array de estilos
int size=ArraySize(styles);
//--- Obter o ndice para selecionar um novo estilo como o resto da diviso inteira
int style_index=number%size;
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_STYLE,styles[style_index]);
//--- Escrever o estilo de linha
comm=EnumToString(styles[style_index])+", "+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1435

Indicadores Customizados

DRAW_COLOR_SECTION
O estilo DRAW_COLOR_SECTION uma verso de cor de DRAW_SECTION, mas ao contrrio deste
ltimo, permite sees de desenho de cores diferentes. O estilo DRAW_COLOR_SECTION, como todos
os estilos de cor com a palavra COLOR em seu ttulo tem um buffer de indicador adicional e especial
que armazena o ndice de cores (nmero) a partir de um conjunto especial array de cores. Assim, a cor
de cada uma das sees pode ser definido atravs da especificao do ndice de cores do ndice da
barra que corresponde a seo final.
A largura, cor e estilo das sees podem ser especificados como para o estilo DRAW_SECTION - usando
as as diretivas do compilador ou dinamicamente usando a funo PlotIndexSetInteger(). Mudanas
dinmicas das propriedades de plotagem permitem "avivar" os indicadores, de modo que suas
aparncias sejam alteradas dependendo da situao corrente.
Sees so desenhadas a partir de um valor no vazio para outro valor no vazio do buffer de
indicador, valores vazios so ignorados. Para especificar qual o valor que deve ser considerado como
"vazio", defina esse valor na propriedade PLOT_EMPTY_VALUE: Por exemplo, se o indicador deve ser
desenhado como uma seqncia de sees sobre valores diferentes de zero, ento voc precisa definir
o valor zero como um vazio:
//--- O valor 0 (vazio) no vai participar no desenho
PlotIndexSetDouble(index_of_plot_DRAW_COLOR_SECTION,PLOT_EMPTY_VALUE,0);

Sempre preencha explicitamente nos valores dos buffers do indicador, defina um valor vazio num
buffer para os elementos que no devem ser plotados.
O nmero de buffers requirido para plotagem de DRAW_COLOR_SECTION 2.
um buffer para armazenar os valores do indicador utilizado para desenhar uma linha;
um buffer para armazenar o ndice de cor, que usada para desenhar a seo (faz sentido definir
apenas valores no vazios).
Cores sero especificadas pela diretiva de compilador #property indicator_color1 separada por uma
vrgula. O nmero de cores no pode exceder a 64.
Um exemplo do indicador que desenha sees coloridas a cada 5 barras longas, usando os valores da
alta do preo. A cor, a largura e o estilo das sees alteram aleatoriamente a cada N ticks.

2000-2015, MetaQuotes Software Corp.

1436

Indicadores Customizados

Note que para inicializar plot1 com DRAW_COLOR_SECTION, 8 cores so definidas usando a diretiva
de compilador #property. Ento na funo OnCalculate(), cores so definidas aleatoriamente a partir
do array de cores colors[].
O parmetro N defindo nos parmetros externos do indicador para a possibilidade de configurao
manual (na guia Parmetros na janela Propriedades do indicador).
//+------------------------------------------------------------------+
//|

DRAW_COLOR_SECTION.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_COLOR_SECTION"

#property description "Ele desenha seces coloridas com o comprimento igual ao nmero de barras es
#property description "A cor, a largura eo estilo de sees so alteradas aleatoriamente"
#property description "depois de cada N ticks"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar ColorSection


#property indicator_label1

"ColorSection"

#property indicator_type1

DRAW_COLOR_SECTION

//--- Definir 8 cores para colorir sees (eles so armazenados numa array especial)
#property indicator_color1

clrRed,clrGold,clrMediumBlue,clrLime,clrMagenta,clrBrown,clrTan,clrMedi

#property indicator_style1

STYLE_SOLID

2000-2015, MetaQuotes Software Corp.

1437

Indicadores Customizados
#property indicator_width1

//--- parmetros de entrada


input int

N=5;

// Nmero de ticks para alterar

input int

bars_in_section=5;

// O comprimento das sees nas barras

//--- Uma varivel auxiliar para calcular extremidades das sees


int

divider;

int

color_sections;

//--- Um buffer para plotagem


double

ColorSectionBuffer[];

//--- Um buffer para armazenar a cor da linha sobre cada barra


double

ColorSectionColors[];

//--- Um array para armazenar as cores que contm 14 elementos


color colors[]=
{
clrRed,clrBlue,clrGreen,clrChocolate,clrMagenta,clrDodgerBlue,clrGoldenrod,
clrIndigo,clrLightBlue,clrAliceBlue,clrMoccasin,clrWhiteSmoke,clrCyan,clrMediumPurple
};
//--- Um array para armazenar os estilos de linha
ENUM_LINE_STYLE styles[]={STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,ColorSectionBuffer,INDICATOR_DATA);
SetIndexBuffer(1,ColorSectionColors,INDICATOR_COLOR_INDEX);
//--- O valor 0 (vazio) no vai participar no desenho
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//---- O nmero de cores para colorir as seces
int color_sections=8;

//

veja um comentrio para #property indicator_color1

//--- Verifica o parmetro do indicador


if(bars_in_section<=0)
{
PrintFormat("Comprimento seo invlido=%d",bars_in_section);
return(INIT_PARAMETERS_INCORRECT);
}
else divider=color_sections*bars_in_section;
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],

2000-2015, MetaQuotes Software Corp.

1438

Indicadores Customizados
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero crtico de ticks tem sido acumulado
if(ticks>=N)
{
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Alterar cores utilizadas para plotar as sees
ChangeColors(colors,color_sections);
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- O nmero de barra a partir da qual o clculo dos valores do indicador inicia
int start=0;
//--- Se o indicador foi calculado antes, ento definir o incio na barra anterior
if(prev_calculated>0) start=prev_calculated-1;
//--- Aqui esto todos os clculos dos valores do indicador
for(int i=start;i<rates_total;i++)
{

//--- Se o nmero de barras divisvel pela section_length, isso significa que esta a extr
if(i%bars_in_section==0)
{
//--- Definir o final da seo na alta de preo desta barra
ColorSectionBuffer[i]=high[i];
//--- O resto da diviso do nmero de barra pela scetion_length*number_of_colors
int rest=i%divider;
//Obter o nmero da cor =

a partir de 0 para number_of_colors-1

int color_indext=rest/bars_in_section;
ColorSectionColors[i]=color_indext;
}
//---Se o resto da diviso igual para barras,
else
{
//--- Se nada aconteceu, ignore a barra - definir 0
else ColorSectionBuffer[i]=0;
}
}
//--- Retorna o valor de prev_calculated para a prxima chamada da funo
return(rates_total);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1439

Indicadores Customizados
//| Altera a cor dos segmentos de linha

//+------------------------------------------------------------------+
void

ChangeColors(color

&cols[],int plot_colors)

{
//--- O nmero de cores
int size=ArraySize(cols);
//--string comm=ChartGetString(0,CHART_COMMENT)+"\r\n\r\n";
//--- Para cada ndice de cor definir uma nova cor aleatoriamente
for(int plot_color_ind=0;plot_color_ind<plot_colors;plot_color_ind++)
{
//--- Obter um valor aleatrio
int number=MathRand();
//--- Obter um ndice no array col[] como um resto da diviso inteira
int i=number%size;
//--- Definir a cor para cada ndice com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,

//

O nmero do estilo grfico

PLOT_LINE_COLOR,

//

Identificador da propriedade

plot_color_ind,

//

O ndice da cor, onde se escreve a cor

cols[i]);

//

Uma nova cor

//--- Escrever as cores

comm=comm+StringFormat("SectionColorIndex[%d]=%s \r\n",plot_color_ind,ColorToString(cols[i],t
ChartSetString(0,CHART_COMMENT,comm);
}
//--}
//+------------------------------------------------------------------+
//| Altera a aparncia de uma linha visualizada no indicador

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades de linha
string comm="";
//--- Um bloco para alterar a largura da linha
int number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5; // A largura definida de 0 a 4
//--- Definir a cor com a propriedade PLOT_LINE_WIDTH
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a largura da linha
comm=comm+" Width="+IntegerToString(width);
//--- Um bloco para mudar o estilo da linha
number=MathRand();
//--- O divisor igual ao tamanho do array de estilos
int size=ArraySize(styles);
//--- Obter o ndice para selecionar um novo estilo como o resto da diviso inteira
int style_index=number%size;

2000-2015, MetaQuotes Software Corp.

1440

Indicadores Customizados
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_STYLE,styles[style_index]);
//--- Escrever o estilo de linha
comm=EnumToString(styles[style_index])+", "+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1441

Indicadores Customizados

DRAW_COLOR_HISTOGRAM
O estilo DRAW_COLOR_HISTOGRAM desenha um histograma como uma seqncia de colunas coloridas
a partir de zero pra um valor especfico. Os valores so extrados do buffer do indicador. Cada coluna
pode ter a sua prpria cor a partir de um conjunto pr-definido de cores.
A largura, cor e estilo do histograma podem ser especificados como para o estilo DRAW_HISTOGRAM usando as diretivas de compilador ou dinamicamente usando a funo PlotIndexSetInteger(). Mudanas
dinmicas das propriedades de plotagem permitem alterar o visual do histograma com base na
situao atual.
Uma vez que uma coluna a partir do nvel zero desenhado em cada barra,
DRAW_COLOR_HISTOGRAM ser melhor utilizado numa janela de grfico em separado. Na maioria das
vezes este tipo de plotagem usada para criar indicadores do tipo osciladores, por exemplo, Awesome
Oscillator ou Market Facilitation Index. Para os valores vazios que no so visveis, o valor zero deve
ser especificado.
O nmero de buffers necessrios para plotagem DRAW_COLOR_HISTOGRAM 2.
um buffer para armazenar um valor que no seja zero do segmento vertical em cada barra, a
segunda extremidade do segmento estar sempre na linha zero do indicador;
um buffer para armazenar o ndice de cor, que usada para desenhar a seo (faz sentido definir
apenas valores no vazios).
Cores podem ser determinadas usando a diretiva de compilador #property indicator_color1 separadas
por uma vrgula. O nmero de cores no pode exceder a 64.
Um exemplo do indicador que desenha uma senide de uma cor especfica com base na funo
MathSin(). A cor, a largura e o estilo de todas colunas do histograma mudam aleatoriamente a cada N
ticks. O parmetro de barras determina o perodo da senide, isto , aps um nmero especifico de
barras a senide vai repetir o ciclo.

2000-2015, MetaQuotes Software Corp.

1442

Indicadores Customizados
Por favor note que para plot1 com o estilo DRAW_COLOR_HISTOGRAM, 5 cores so definidas usando a
diretiva de compilador #property, e ento na funo OnCalculate(), as cores so selecionadas
aleatoriamente a partir de quatorze cores armazenada no array de colors[]. O parmetro N definido
nos parmetros externos do indicador para a possibilidade de configurao manual (o guia Parmetros
na janela Propriedades do indicador).
//+------------------------------------------------------------------+
//|

DRAW_COLOR_HISTOGRAM.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_COLOR_HISTOGRAM"


#property description "Ele desenha um senide como um histograma em uma janela separada"
#property description "A cor e a largura das colunas so alterados aleatoriamente"
#property description "depois de cada N ticks"
#property description "O parmetro de barras define o nmero de barras para repetir a senide"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots

//--- parmetros de entrada


input int

bars=30;

// O perodo de uma senide em barras

input int

N=5;

// O nmero de ticks para alterar o histograma

//--- plotar Color_Histogram


#property indicator_label1

"Color_Histogram"

#property indicator_type1

DRAW_COLOR_HISTOGRAM

//--- Definir 8 cores para colorir sees (eles so armazenados numa array especial)
#property indicator_color1

clrRed,clrGreen,clrBlue,clrYellow,clrMagenta,clrCyan,clrMediumSeaGreen,

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- Um buffer de valores


double

Color_HistogramBuffer[];

//--- Um buffer de ndices de cor


double

Color_HistogramColors[];

//--- Um fator para obter o ngulo 2Pi em radianos, quando multiplicado pelo parmetro das barras
double

multiplier;

int

color_sections;

//--- Um array para armazenar as cores que contm 14 elementos


color colors[]=
{
clrRed,clrBlue,clrGreen,clrChocolate,clrMagenta,clrDodgerBlue,clrGoldenrod,
clrIndigo,clrLightBlue,clrAliceBlue,clrMoccasin,clrWhiteSmoke,clrCyan,clrMediumPurple
};
//--- Um array para armazenar os estilos de linha
ENUM_LINE_STYLE styles[]={STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};

2000-2015, MetaQuotes Software Corp.

1443

Indicadores Customizados
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,Color_HistogramBuffer,INDICATOR_DATA);
SetIndexBuffer(1,Color_HistogramColors,INDICATOR_COLOR_INDEX);
//---- O nmero de cores para a colorir a senide
color_sections=8;

//

Veja comentrio para #property indicator_color1

//--- Calcular a multiplicao


if(bars>1)multiplier=2.*M_PI/bars;
else
{
PrintFormat("Defina o valor das barras=%d maior do que 1",bars);
//--- Finalizao antecipada do indicador
return(INIT_PARAMETERS_INCORRECT);
}
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero crtico de ticks tem sido acumulado
if(ticks>=N)
{
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Alterar cores usadas para o histograma
ChangeColors(colors,color_sections);
//--- Redefinir o contador de ticks para zero
ticks=0;
}

2000-2015, MetaQuotes Software Corp.

1444

Indicadores Customizados
//--- Calcule os valores do indicador
int start=0;
//--- Se j foi calculado durante os incios anteriores do OnCalculate

if(prev_calculated>0) start=prev_calculated-1; // definir o incio do clculo com a penltima ba


//--- Preencher o buffer do indicador com valores
for(int i=start;i<rates_total;i++)
{
//--- Um valor
Color_HistogramBuffer[i]=sin(i*multiplier);
//--- Cor
int color_index=i%(bars*color_sections);
color_index/=bars;
Color_HistogramColors[i]=color_index;
}
//--- Retorna o valor de prev_calculated para a prxima chamada da funo
return(rates_total);
}
//+------------------------------------------------------------------+
//| Altera a cor dos segmentos de linha

//+------------------------------------------------------------------+
void

ChangeColors(color

&cols[],int plot_colors)

{
//--- O nmero de cores
int size=ArraySize(cols);
//--string comm=ChartGetString(0,CHART_COMMENT)+"\r\n\r\n";
//--- Para cada ndice de cor definir uma nova cor aleatoriamente
for(int plot_color_ind=0;plot_color_ind<plot_colors;plot_color_ind++)
{
//--- Obter um valor aleatrio
int number=MathRand();
//--- Obter um ndice no array col[] como um resto da diviso inteira
int i=number%size;
//--- Definir a cor para cada ndice com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,

//

O nmero do estilo grfico

PLOT_LINE_COLOR,

//

Identificador da propriedade

plot_color_ind,

//

O ndice da cor, onde se escreve a cor

cols[i]);

//

Uma nova cor

//--- Escrever as cores

comm=comm+StringFormat("HistogramColorIndex[%d]=%s \r\n",plot_color_ind,ColorToString(cols[i]
ChartSetString(0,CHART_COMMENT,comm);
}
//--}
//+------------------------------------------------------------------+
//| Altera a aparncia de uma linha visualizada no indicador

//+------------------------------------------------------------------+
void ChangeLineAppearance()

2000-2015, MetaQuotes Software Corp.

1445

Indicadores Customizados
{
//--- Uma string para a formao de informaes sobre as propriedades de linha
string comm="";
//--- Um bloco para alterar a largura da linha
int number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5; // A largura definida de 0 a 4
//--- Definir a cor com a propriedade PLOT_LINE_WIDTH
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a largura da linha
comm=comm+" Width="+IntegerToString(width);
//--- Um bloco para mudar o estilo da linha
number=MathRand();
//--- O divisor igual ao tamanho do array de estilos
int size=ArraySize(styles);
//--- Obter o ndice para selecionar um novo estilo como o resto da diviso inteira
int style_index=number%size;
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_STYLE,styles[style_index]);
//--- Escrever o estilo de linha
comm=EnumToString(styles[style_index])+", "+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1446

Indicadores Customizados

DRAW_COLOR_HISTOGRAM2
O estilo DRAW_COLOR_HISTOGRAM2 desenha uma histograma de uma cor especfica segmentos
verticais usando os valores de buffers do indicador. Mas diferentemente ao de uma cor
DRAW_HISTOGRAM2, este estilo pode ter a sua prpria cor a partir de um conjunto pr-definido em
cada coluna do histograma. Os valores de todos os segmentos so retirados do buffer do indicador.
A largura, o estilo e a cor do histograma pode ser especificado como para o estilo DRAW_HISTOGRAM2
usando as diretivas de compilador ou usando dinamicamente a funo PlotIndexSetInteger().
Mudanas dinmicas das propriedades de plotagem permitem alterar o visual do histograma com base
na situao atual.
O estilo DRAW_COLOR_HISTOGRAM2 pode ser usado em uma sub-janela separada de um grfico e em
sua janela principal. Para valores vazios nada desenhado, todos os valores nos buffers do indicador
precisam ser definidos explicitamente. Buffers no so inicializados com valores vazios.
O nmero de buffers necessrios para plotagem do DRAW_COLOR_HISTOGRAM2 3:
dois buffers para armazenar a extremidade superior e inferior do segmento vertical em cada barra;
um buffer para armazenar o ndice de cor, o qual usado para desenhar o segmento (faz sentido
definir apenas valores no vazios).
Um exemplo de indicador que desenha um histograma de uma cor especifica entre os preos de alta e
baixa. Para cada dia da semana, as linhas de histograma ter uma cor diferente. A cor do dia, a largura
e o estilo do histograma alterado aleatoriamente a cada N ticks.

Por favor note que para plot1 com o estilo DRAW_COLOR_HISTOGRAM2, 5 cores so definidas usando
a diretiva de compilador #property, e ento na funo OnCalculate() as cores so selecionadas
aleatoriamente a partir de 14 cores armazenadas no array colors[].
O parmetro N defindo nos parmetros externos do indicador para a possibilidade de configurao
manual (na guia Parmetros na janela Propriedades do indicador).

2000-2015, MetaQuotes Software Corp.

1447

Indicadores Customizados
//+------------------------------------------------------------------+
//|

DRAW_COLOR_HISTOGRAM2.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_COLOR_HISTOGRAM2"


#property description " desenhado um segmento entre a abertura e fechamento em cada barra"
#property description "A cor, a largura e o estilo so alterados aleatoriamente"
#property description "depois de cada N ticks"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots

//--- plotar ColorHistogram_2


#property indicator_label1

"ColorHistogram_2"

#property indicator_type1

DRAW_COLOR_HISTOGRAM2

//--- Definir 5 cores para colorir o histograma com base nos dias de semana (elas so armazenadas n
#property indicator_color1

clrRed,clrBlue,clrGreen,clrYellow,clrMagenta

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

N=5;

int

color_sections;

// O nmero de ticks para alterar o histograma

//--- Valores de buffers


double

ColorHistogram_2Buffer1[];

double

ColorHistogram_2Buffer2[];

//--- Um buffer de ndices de cor


double

ColorHistogram_2Colors[];

//--- Um array para armazenar as cores que contm 14 elementos


color colors[]=
{
clrRed,clrBlue,clrGreen,clrChocolate,clrMagenta,clrDodgerBlue,clrGoldenrod,
clrIndigo,clrLightBlue,clrAliceBlue,clrMoccasin,clrWhiteSmoke,clrCyan,clrMediumPurple
};
//--- Um array para armazenar os estilos de linha
ENUM_LINE_STYLE styles[]={STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,ColorHistogram_2Buffer1,INDICATOR_DATA);
SetIndexBuffer(1,ColorHistogram_2Buffer2,INDICATOR_DATA);

2000-2015, MetaQuotes Software Corp.

1448

Indicadores Customizados
SetIndexBuffer(2,ColorHistogram_2Colors,INDICATOR_COLOR_INDEX);
//--- Definir um valor vazio
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//---- O nmero de cores para a colorir a senide
color_sections=8;

//

Veja um comentrio #property indicator_color1

//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero crtico de ticks tem sido acumulado
if(ticks>=N)
{
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Mude as cores usadas para desenhar o histograma
ChangeColors(colors,color_sections);
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- Calcule os valores do indicador
int start=0;
//--- Para obter o dia da semana pela abertura de preo de cada barra
MqlDateTime dt;
//--- Se j foi calculado durante os incios anteriores do OnCalculate

if(prev_calculated>0) start=prev_calculated-1; // definir o incio do clculo com a penltima ba


//--- Preencher o buffer do indicador com valores
for(int i=start;i<rates_total;i++)
{
TimeToStruct(time[i],dt);
//--- valor
ColorHistogram_2Buffer1[i]=high[i];
ColorHistogram_2Buffer2[i]=low[i];

2000-2015, MetaQuotes Software Corp.

1449

Indicadores Customizados
//--- Define o ndice de cores de acordo com o dia da semana
int day=dt.day_of_week;
ColorHistogram_2Colors[i]=day;
}
//--- Retorna o valor de prev_calculated para a prxima chamada da funo
return(rates_total);
}
//+------------------------------------------------------------------+
//| Altera a cor dos segmentos de linha

//+------------------------------------------------------------------+
void

ChangeColors(color

&cols[],int plot_colors)

{
//--- O nmero de cores
int size=ArraySize(cols);
//--string comm=ChartGetString(0,CHART_COMMENT)+"\r\n\r\n";
//--- Para cada ndice de cor definir uma nova cor aleatoriamente
for(int plot_color_ind=0;plot_color_ind<plot_colors;plot_color_ind++)
{
//--- Obter um valor aleatrio
int number=MathRand();
//--- Obter um ndice no array col[] como um resto da diviso inteira
int i=number%size;
//--- Definir a cor para cada ndice com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,

//

O nmero do estilo grfico

PLOT_LINE_COLOR,

//

Identificador da propriedade

plot_color_ind,

//

O ndice da cor, onde se escreve a cor

cols[i]);

//

Uma nova cor

//--- Escrever as cores

comm=comm+StringFormat("HistogramColorIndex[%d]=%s \r\n",plot_color_ind,ColorToString(cols[i]
ChartSetString(0,CHART_COMMENT,comm);
}
//--}
//+------------------------------------------------------------------+
//| Altera a aparncia de uma linha visualizada no indicador

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades de linha
string comm="";
//--- Um bloco para alterar a largura da linha
int number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5; // A largura definida de 0 a 4
//--- Definir a cor com a propriedade PLOT_LINE_WIDTH
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a largura da linha

2000-2015, MetaQuotes Software Corp.

1450

Indicadores Customizados
comm=comm+" Width="+IntegerToString(width);
//--- Um bloco para mudar o estilo da linha
number=MathRand();
//--- O divisor igual ao tamanho do array de estilos
int size=ArraySize(styles);
//--- Obter o ndice para selecionar um novo estilo como o resto da diviso inteira
int style_index=number%size;
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_STYLE,styles[style_index]);
//--- Escrever o estilo de linha
comm=EnumToString(styles[style_index])+", "+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1451

Indicadores Customizados

DRAW_COLOR_ARROW
O estilo DRAW_COLOR_ARROW desenha setas coloridas (smbolos do conjunto Wingdings) baseado no
valor do buffer do indicador. Em contraste com DRAW_ARROW, neste estilo, possvel definir uma
cor partir de um conjunto predefinido de cores especificada pela propriedade indicator_color1 para
cada smbolo.
A largura e a cor dos smbolos podem ser especificadas com o estilo DRAW_ARROW usando diretivas
de compilador ou dinamicamente usando a funo PlotIndexSetInteger(). Mudanas dinmicas das
propriedades de plotagem permitem modificar a aparncia de um indicador com base na situao
atual.
O cdigo de smbolo definido usando a propriedade PLOT_ARROW.
//--- Definir o cdigo smbolo a partir das fontes Wingdings para desenhar em PLOT_ARROW
PlotIndexSetInteger(0,PLOT_ARROW,code);

O valor padro do PLOT_ARROW=159 (um crculo).


Cada seta na verdade um smbolo que tem a altura e o ponto de ancoragem e pode abranger algumas
informaes importantes num grfico (por exemplo, o preo de fechamento da barra). Assim,
podemos adicionalmente especificar o deslocamento vertical em pixels, o qual no depende da escala
do grfico. As setas sero deslocadas para baixo pelo nmero especificado de pixels, embora os
valores do indicador permanecero os mesmos:
//--- Definir o deslocamento vertical das setas em pixels
PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,shift);

Um valor negativo de PLOT_ARROW_SHIFT significa a mudana de setas para cima, valores positivos
deslocam a seta para baixo.
O estilo DRAW_COLOR_ARROW pode ser usado em separado na sub-janela do grfico e em sua janela
principal. Valores vazios no so desenhados e no aparecem na "Janela de Dados", todos os valores
nos buffers do indicador devem ser definidos explicitamente. Buffers no so inicializados com o valor
zero.
//--- Definir um valor vazio
PlotIndexSetDouble(plot_index_DRAW_COLOR_ARROW,PLOT_EMPTY_VALUE,0);

O nmero de buffers necessrios para plotagem de DRAW_COLOR_ARROW 2.


Um buffer para armazenar o valor do preo que utilizado para desenhar o smbolo (alm de um
deslocamento em pixels, determinado na propriedade PLOT_ARROW_SHIFT);
Um buffer para guardar o ndice de corque utilizado para desenhar uma seta(faz sentido
configurar apenas valores no vazios).
Um exemplo de indicador que desenha as setas em cada uma das barras com o preo mais alto do que
o preo final da barra anterior. A largura, deslocamento e smbolo de cdigo de todas setas so
alterados aleatoriamente a cada N ticks. A cor do smbolo depende do nmero da barra na qual est
desenhada.

2000-2015, MetaQuotes Software Corp.

1452

Indicadores Customizados

Neste exemplo, para plot1 com o estilo DRAW_COLOR_ARROW, as propriedades, cor e tamanho so
especificadas usando a diretiva de compilador #property, e ento, na funo OnCalculate() as
propriedades so definidas aleatoriamente. O parmetro N definido nos parmetros externos do
indicador para a possibilidade de configurao manual (o guia Parmetros na janela Propriedades do
indicador).
Por favor, note que inicialmente oito cores so usadas na diretiva de compilador #property, e ento,
na funo OnCalculate(), a cor definida aleatoriamente a partir das 14 cores que so armazenadas
no array colors[].
//+------------------------------------------------------------------+
//|

DRAW_COLOR_ARROW.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_COLOR_ARROW"

#property description "Desenha setas de diferentes cores definidas pelo caracteres Unicode, em um g
#property description "A cor, o tamanho, deslocamento e cdigo de smbolo da seta so alterados"
#property description " aleatoriamente a cada N ticks"
#property description "O parmetro de cdigo define o valor da base: cdigo = 159 (um crculo)"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar ColorArrow


#property indicator_label1

"ColorArrow"

2000-2015, MetaQuotes Software Corp.

1453

Indicadores Customizados
#property indicator_type1

DRAW_COLOR_ARROW

//--- Define 8 cores para colorir o histograma com base nos dias de semana (eles so armazenados no
#property indicator_color1

clrRed,clrBlue,clrSeaGreen,clrGold,clrDarkOrange,clrMagenta,clrYellowGr

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

N=5;

// Nmero de ticks para mudar

input ushort

code=159;

// Cdigo smbolo para desenhar em DRAW_ARROW

int

color_sections;

//--- Um buffer do indicador para plotar


double

ColorArrowBuffer[];

//--- Um buffer para armazenar ndices de cor


double

ColorArrowColors[];

//--- Um array para armazenar as cores que contm 14 elementos


color colors[]=
{
clrRed,clrBlue,clrGreen,clrChocolate,clrMagenta,clrDodgerBlue,clrGoldenrod,
clrIndigo,clrLightBlue,clrAliceBlue,clrMoccasin,clrWhiteSmoke,clrCyan,clrMediumPurple
};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,ColorArrowBuffer,INDICATOR_DATA);
SetIndexBuffer(1,ColorArrowColors,INDICATOR_COLOR_INDEX);
//--- Definir o cdigo smbolo para desenho em PLOT_ARROW
PlotIndexSetInteger(0,PLOT_ARROW,code);
//--- Definir o deslocamento vertical das setas em pixels
PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,5);
//--- Definir como um valor vazio 0
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//---- O nmero de cores para a colorir a senide
color_sections=8;

//

veja um comentrio #property indicator_color1

//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],

2000-2015, MetaQuotes Software Corp.

1454

Indicadores Customizados
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcular ticks para mudar a cor, tamanho, deslocamento e cdigo da seta
ticks++;
//--- Se um nmero crtico de ticks tem sido acumulado
if(ticks>=N)
{
//--- Alterar propriedades de seta
ChangeLineAppearance();
//--- Mude as cores usadas para desenhar o histograma
ChangeColors(colors,color_sections);
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- Bloco para clculo dos valores do indicador
int start=1;
if(prev_calculated>0) start=prev_calculated-1;
//--- Calculando loop
for(int i=1;i<rates_total;i++)
{
//--- Se o preo atual fechado mais alto do que o anterior, desenhar uma seta
if(close[i]>close[i-1])
ColorArrowBuffer[i]=close[i];
//--- Caso contrrio, especificar o valor nulo
else
ColorArrowBuffer[i]=0;
//--- Cor da seta
int index=i%color_sections;
ColorArrowColors[i]=index;
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Altera a cor dos segmentos de linha

//+------------------------------------------------------------------+
void

ChangeColors(color

&cols[],int plot_colors)

{
//--- O nmero de cores
int size=ArraySize(cols);
//--string comm=ChartGetString(0,CHART_COMMENT)+"\r\n\r\n";
//--- Para cada ndice de cor definir uma nova cor aleatoriamente
for(int plot_color_ind=0;plot_color_ind<plot_colors;plot_color_ind++)

2000-2015, MetaQuotes Software Corp.

1455

Indicadores Customizados
{
//--- Obter um valor aleatrio
int number=MathRand();
//--- Obter um ndice no array col[] como um resto da diviso inteira
int i=number%size;
//--- Definir a cor para cada ndice com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,

//

O nmero do estilo grfico

PLOT_LINE_COLOR,

//

Identificador da propriedade

plot_color_ind,

//

O ndice da cor, onde se escreve a cor

cols[i]);

//

Uma nova cor

//--- Escrever as cores

comm=comm+StringFormat("ArrowColorIndex[%d]=%s \r\n",plot_color_ind,ColorToString(cols[i],tru
ChartSetString(0,CHART_COMMENT,comm);
}
//--}
//+------------------------------------------------------------------+
//| Altera a aparncia de uma linha visualizada no indicador

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades de linha
string comm="";
//--- Um bloco para alterar a largura da linha
int number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5; // A largura definida de 0 a 4
//--- Definir a cor com a propriedade PLOT_LINE_WIDTH
PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a largura da linha
comm=comm+" Width="+IntegerToString(width);
//--- Um bloco para mudar o cdigo das setas (PLOT_ARROW)
number=MathRand();

//--- Obter o restante da diviso de nmero inteiro para calcular um novo cdigo da seta(a partir d
int code_add=number%20;
//--- Definir o novo smbolo de cdigo como o resultado de code+code_add
PlotIndexSetInteger(0,PLOT_ARROW,code+code_add);
//--- Escreva o cdigo de smbolo PLOT_ARROW
comm="\r\n"+"PLOT_ARROW="+IntegerToString(code+code_add)+comm;
//--- Um bloco de mudana do deslocamento vertical das setas em pixels
number=MathRand();
//--- Obter o deslocamento como o restante da diviso inteira
int shift=20-number%41;
//--- Define um deslocamento a partir de
PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,shift);
//--- Escrever o deslocamento PLOT_ARROW_SHIFT
comm="\r\n"+"PLOT_ARROW_SHIFT="+IntegerToString(shift)+comm;

2000-2015, MetaQuotes Software Corp.

1456

Indicadores Customizados

//--- Mostrar a informao no grfico usando um comentrio


Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1457

Indicadores Customizados

DRAW_COLOR_ZIGZAG
O estilo DRAW_COLOR_ZIGZAG desenha segmentos cores diferentes, usando os valores de dois
buffers do indicador. Este estilo uma verso colorida de DRAW_ZIGZAG, ou seja, permite a
especificar para cada segmento uma cor individual a partir do conjunto pr-definido de cores. Os
segmentos so plotados a partir de um valor no primeiro buffer para um valor no segundo buffer do
indicador. Nenhum dos buffers pode conter somente valores vazios, uma vez que neste caso nada
plotado.
A largura, cor e estilo das linhas podem ser especificadas como para o estilo DRAW_ZIGZAG - usando
as diretivas de compilao ou dinamicamente usando a funo PlotIndexSetInteger(). Mudanas
dinmicas das propriedades de plotagem permitem "avivar" os indicadores, de modo que suas
aparncias sejam alteradas dependendo da situao corrente.
Sees so desenhadas a partir de um valor no vazio de um buffer para um valor no vazio de outro
buffer do indicador. Para especificar o valor que deve ser considerado como "vazio", defina esse valor
na propriedade PLOT_EMPTY_VALUE:
//--- O valor 0 (vazio) no vai participar no desenho
PlotIndexSetDouble(index_of_plot_DRAW_COLOR_ZIGZAG,PLOT_EMPTY_VALUE,0);

Sempre preencha explicitamente nos valores dos buffers de indicador, defina um valor vazio num
buffer para saltar barras.
O nmero de buffers requerida para plotagem de DRAW_COLOR_ZIGZAG 3:
dois buffers para armazenar os valores das extremidades das sees em zigue-zague;
um buffer para armazenar o ndice de cor, que usada para desenhar a seo (faz sentido definir
apenas valores no vazios).
Um exemplo de indicador de que plota uma serra com base nos altas e baixas dos preos. A cor, a
largura e o estilo das linhas em ziguezague alteram aleatoriamente a cada N ticks.

2000-2015, MetaQuotes Software Corp.

1458

Indicadores Customizados
Por favor note que para plot1 com o estilo DRAW_COLOR_ZIGZAG, 8 cores so definidas usando a
diretiva de compilao #property, e ento na funo OnCalculate() a cor selecionada aleatoriamente
a partir de 14 cores armazenadas no array colors[].
O parmetro N defindo nos parmetros externos do indicador para a possibilidade de configurao
manual (na guia Parmetros na janela Propriedades do indicador).
//+------------------------------------------------------------------+
//|

DRAW_COLOR_ZIGZAG.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_COLOR_ZIGZAG"


#property description "Ele desenha uma linha tracejada, como uma seqncia das sees coloridas, a
#property description "A cor, a largura e tamanho dos segmentos so alterados aleatoriamente"
#property description " a cada N ticks"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots

//--- plotar Color_Zigzag


#property indicator_label1

"Color_Zigzag"

#property indicator_type1

DRAW_COLOR_ZIGZAG

//--- Definir 8 cores para colorir sees (eles so armazenados numa array especial)
#property indicator_color1

clrRed,clrBlue,clrGreen,clrYellow,clrMagenta,clrCyan,clrLime,clrOrange

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

N=5;

// Nmero de ticks para alterar

int

color_sections;

//--- Buffers dos valores das extremidades do segmento


double

Color_ZigzagBuffer1[];

double

Color_ZigzagBuffer2[];

//--- Buffers do ndice de cores das extremidades dos segmento


double

Color_ZigzagColors[];

//--- Um array para armazenar as cores que contm 14 elementos


color colors[]=
{
clrRed,clrBlue,clrGreen,clrChocolate,clrMagenta,clrDodgerBlue,clrGoldenrod,
clrIndigo,clrLightBlue,clrAliceBlue,clrMoccasin,clrWhiteSmoke,clrCyan,clrMediumPurple
};
//--- Um array para armazenar os estilos de linha
ENUM_LINE_STYLE styles[]={STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

2000-2015, MetaQuotes Software Corp.

1459

Indicadores Customizados
//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,Color_ZigzagBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,Color_ZigzagBuffer2,INDICATOR_DATA);
SetIndexBuffer(2,Color_ZigzagColors,INDICATOR_COLOR_INDEX);
//----Nmero de corres para colorir o zigzag
color_sections=8;

//

veja um comentrio para a #property indicator_color1

//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Calcule ticks para mudar o estilo, cor e largura da linha
ticks++;
//--- Se um nmero suficiente de ticks foi acumulado
if(ticks>=N)
{
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Alterar cores utilizadas para plotar as sees
ChangeColors(colors,color_sections);
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- A estrutura de tempo necessrio para obter o dia da semana de cada barra
MqlDateTime dt;
//--- A posio inicial dos clculos
int start=0;

//--- Se o indicador foi calculado com o tick anterior, ento inicia o clculo com o passado, mas d
if(prev_calculated!=0) start=prev_calculated-1;
//--- Calculando loop
for(int i=start;i<rates_total;i++)

2000-2015, MetaQuotes Software Corp.

1460

Indicadores Customizados
{
//--- Escreva o tempo de abertura da barra na estrutura
TimeToStruct(time[i],dt);
//--- Se ainda o nmero de barra
if(i%2==0)
{
//---

Escrever a alta no primeiro buffer e a baixa no segundo

Color_ZigzagBuffer1[i]=high[i];
Color_ZigzagBuffer2[i]=low[i];
//--- A cor do segmento
Color_ZigzagColors[i]=dt.day_of_year%color_sections;
}
//--- o nmero da barra mpar
else
{
//--- Preencha a barra numa ordem inversa
Color_ZigzagBuffer1[i]=low[i];
Color_ZigzagBuffer2[i]=high[i];
//--- A cor do segmento
Color_ZigzagColors[i]=dt.day_of_year%color_sections;
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Alterar a cor do segmento zigzag

//+------------------------------------------------------------------+
void

ChangeColors(color

&cols[],int plot_colors)

{
//--- O nmero de cores
int size=ArraySize(cols);
//--string comm=ChartGetString(0,CHART_COMMENT)+"\r\n\r\n";
//--- Para cada ndice de cor definir uma nova cor aleatoriamente
for(int plot_color_ind=0;plot_color_ind<plot_colors;plot_color_ind++)
{
//--- Obter um valor aleatrio
int number=MathRand();
//--- Obter um ndice no array col[] como um resto da diviso inteira
int i=number%size;
//--- Definir a cor para cada ndice com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,

//

O nmero do estilo grfico

PLOT_LINE_COLOR,

//

Identificador da propriedade

plot_color_ind,

//

O ndice da cor, onde se escreve a cor

cols[i]);

//

Uma nova cor

//--- Escrever as cores

2000-2015, MetaQuotes Software Corp.

1461

Indicadores Customizados

comm=comm+StringFormat("ZigzagColorIndex[%d]=%s \r\n",plot_color_ind,ColorToString(cols[i],tr
ChartSetString(0,CHART_COMMENT,comm);
}
//--}
//+------------------------------------------------------------------+
//| Alterar a aparncia dos segmentos zigzag

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao da informao sobre as propriedades de Color_ZigZag
string comm="";
//--- Um bloco para alterar a largura da linha
int number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5;

// A largura definida de 0 a 4

//--- Definir a cor com a propriedade PLOT_LINE_WIDTH


PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a largura da linha
comm=comm+"\r\nWidth="+IntegerToString(width);
//--- Um bloco para mudar o estilo da linha
number=MathRand();
//--- O divisor igual ao tamanho do array de estilos
int size=ArraySize(styles);
//--- Obter o ndice para selecionar um novo estilo como o resto da diviso inteira
int style_index=number%size;
//--- Definir a cor com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,PLOT_LINE_STYLE,styles[style_index]);
//--- Escrever o estilo de linha
comm="\r\n"+EnumToString(styles[style_index])+""+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1462

Indicadores Customizados

DRAW_COLOR_BARS
O estilo DRAW_COLOR_BARS desenha barra sobre valores de quatro buffers de indicador, que contm
Open (abertura), High (alta), Low (baixa) e Close (fechamento) de preos. Este estilo uma verso
avanada do DRAW_BARS e permite a especificao para cada barra de uma cor individual do conjunto
predefinido de cores. usado para a criao de indicadores personalizados como barras, incluindo
aqueles numa sub-janela separada de um grfico e sobre outros instrumentos financeiros.
A cor das barras pode ser definida usando as diretivas de compilador ou dinamicamente utilizando a
funo PlotIndexSetInteger(). Mudanas dinmicas das propriedades de plotagem permitem "avivar" os
indicadores, de modo que suas mudanas de aparncia dependem da situao corrente.
O indicador desenhado apenas para as barras, para o qual os valores no vazios de todos quatro
buffers do indicador so definidos. Para especificar o valor que deve ser considerado como "vazio",
defina este valor na propriedade PLOT_EMPTY_VALUE:
//--- O valor 0 (vazio) no vai participar no desenho
PlotIndexSetDouble(index_of_plot_DRAW_COLOR_BARS,PLOT_EMPTY_VALUE,0);

Sempre preencher explicitamente os valores dos buffers do indicador, definir um valor vazio num
buffer para ignorar barras.
O nmero requerido de buffers para plotagem de DRAW_COLOR_BARS 5:
quatro buffers para armazenar Open, High, Low e Close;
um buffer para armazenar o ndice das cores, que usado para desenhar uma barra(faz sentido
defini-lo apenas para as barras que sero desenhadas).
Todos os buffers para a plotagem devem ir um aps o outro na ordem determinada: Open, High, Low,
Close e o buffer de cor. Nenhum dos buffers de preos podem conter valores nulos, uma vez que neste
caso nada plotado.
Um exemplo do indicador que desenha barras sobre um instrumento financeiro selecionado numa
janela separada. A cor das barras muda aleatoriamente a cada N ticks. O parmetro N definido nos
parmetro externos do indicador para a possibilidade de configurao manual (na guia Parmetros na
janela Propriedades do indicador).

2000-2015, MetaQuotes Software Corp.

1463

Indicadores Customizados

Por favor note que para plot1 com o estilo DRAW_COLOR_BARS, 8 cores so definidas usando a
diretiva de compilador #property, e ento na funo OnCalculate() a cor selecionada aleatoriamente
a partir de 14 cores armazenadas no array de colors[].
//+------------------------------------------------------------------+
//|

DRAW_COLOR_BARS.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_COLOR_BARS"

#property description "Ele desenha diferentes cores nas barras de um smbolo selecionado numa janel

#property description "A cor e a largura das barras, bem como o smbolo so alterados aleatoriament
#property description "cada N ticks"
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots

//--- plotar ColorBars


#property indicator_label1

"ColorBars"

#property indicator_type1

DRAW_COLOR_BARS

//--- Define 8 cores para colorir barras (elas so armazenadas num array especial)
#property indicator_color1

clrRed,clrBlue,clrGreen,clrYellow,clrMagenta,clrCyan,clrLime,clrOrange

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int

N=5;

// O nmero de ticks para alterar o tipo

2000-2015, MetaQuotes Software Corp.

1464

Indicadores Customizados
input int

bars=500;

// O nmero de barras para mostrar

input bool

messages=false;

// Mostrar mensagens no log "Expert Advisors"

//--- buffers do Indicador


double

ColorBarsBuffer1[];

double

ColorBarsBuffer2[];

double

ColorBarsBuffer3[];

double

ColorBarsBuffer4[];

double

ColorBarsColors[];

//--- Nome do smbolo


string symbol;
int

bars_colors;

//--- Um array para armazenar as cores que contm 14 elementos


color colors[]=
{
clrRed,clrBlue,clrGreen,clrChocolate,clrMagenta,clrDodgerBlue,clrGoldenrod,
clrIndigo,clrLightBlue,clrAliceBlue,clrMoccasin,clrMagenta,clrCyan,clrMediumPurple
};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,ColorBarsBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,ColorBarsBuffer2,INDICATOR_DATA);
SetIndexBuffer(2,ColorBarsBuffer3,INDICATOR_DATA);
SetIndexBuffer(3,ColorBarsBuffer4,INDICATOR_DATA);
SetIndexBuffer(4,ColorBarsColors,INDICATOR_COLOR_INDEX);
//---- Nmero de cores para colorir as barras
bars_colors=8;

//

veja uma comentrio para a #property indicator_color1

//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=0;
//--- Conte ticks para mudar o estilo, cor e largura da barra

2000-2015, MetaQuotes Software Corp.

1465

Indicadores Customizados
ticks++;
//--- Se um nmero suficiente de ticks foi acumulado
if(ticks>=N)
{
//--- Selecione um novo smbolo a partir da janela de observao do Mercado
symbol=GetRandomSymbolName();
//--- Alterar as propriedades da linha
ChangeLineAppearance();
//--- Mude as cores usadas para desenhar os candlesticks
ChangeColors(colors,bars_colors);
int tries=0;
//--- Faa 5 tentativas de preencher os buffers com os preos a partir smbolo
while(!CopyFromSymbolToBuffers(symbol,rates_total,bars_colors) && tries<5)
{
//--- Um contador de chamadas da funo CopyFromSymbolToBuffers()
tries++;
}
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher os buffers do indicador com preos

//+------------------------------------------------------------------+
bool CopyFromSymbolToBuffers(string name,int total,int bar_colors)
{

//--- No array de rates[], vamos copiar Open (abertura), High (alta), Low (baixa) e Close (fechamen
MqlRates rates[];
//--- O contador de tentativas
int attempts=0;
//--- Quanto foi copiado
int copied=0;
//--- Fazer 25 tentativas para obter uma srie temporal(timeseries) sobre o smbolo desejado
while(attempts<25 && (copied=CopyRates(name,_Period,0,bars,rates))<0)
{
Sleep(100);
attempts++;
if(messages) PrintFormat("%s Copiar taxas(%s) tentativas=%d",__FUNCTION__,nome,tentativas);
}
//--- Se falhou em copiar um nmero suficiente de barras
if(copied!=bars)
{
//--- Formar uma mensagem string

string comm=StringFormat("Para o smbolo %s, conseguiu receber somente %d barras de %d solici


name,
copied,
bars

2000-2015, MetaQuotes Software Corp.

1466

Indicadores Customizados
);
//--- Mostrar uma mensagem num comentrio na janela do grfico principal
Comment(comm);
//--- Mostrar a mensagem
if(messages) Print(comm);
return(false);
}
else
{
//--- Definir a exibio do smbolo
PlotIndexSetString(0,PLOT_LABEL,name+" Open;"+name+" High;"+name+" Low;"+name+" Close");
IndicatorSetString(INDICATOR_SHORTNAME,"DRAW_COLOR_BARS("+name+")");
}
//--- Inicializar buffers com valores vazios
ArrayInitialize(ColorBarsBuffer1,0.0);
ArrayInitialize(ColorBarsBuffer2,0.0);
ArrayInitialize(ColorBarsBuffer3,0.0);
ArrayInitialize(ColorBarsBuffer4,0.0);
//--- Copiar os preos para os buffers
for(int i=0;i<copied;i++)
{
//--- Calcular o ndice apropriado para os buffers
int buffer_index=total-copied+i;
//--- Escreva os preos para os buffers
ColorBarsBuffer1[buffer_index]=rates[i].open;
ColorBarsBuffer2[buffer_index]=rates[i].high;
ColorBarsBuffer3[buffer_index]=rates[i].low;
ColorBarsBuffer4[buffer_index]=rates[i].close;
//--ColorBarsColors[buffer_index]=i%bar_colors;
}
return(true);
}
//+------------------------------------------------------------------+
//| Aleatoriamente retorna um smbolo de Observao do Mercado

//+------------------------------------------------------------------+
string GetRandomSymbolName()
{
//--- O nmero de smbolos mostrada na janela de observao do Mercado
int symbols=SymbolsTotal(true);
//--- A posio de um smbolo na lista - um nmero aleatrio de 0 para smbolos
int number=MathRand()%symbols;
//--- Retornar o nome de um smbolo na posio especificada
return SymbolName(number,true);
}
//+------------------------------------------------------------------+
//|

Alterar a cor do segmento zigzag

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1467

Indicadores Customizados
void

ChangeColors(color

&cols[],int plot_colors)

{
//--- O nmero de cores
int size=ArraySize(cols);
//--string comm=ChartGetString(0,CHART_COMMENT)+"\r\n\r\n";
//--- Para cada ndice de cor definir uma nova cor aleatoriamente
for(int plot_color_ind=0;plot_color_ind<plot_colors;plot_color_ind++)
{
//--- Obter um valor aleatrio
int number=MathRand();
//--- Obter um ndice no array col[] como um resto da diviso inteira
int i=number%size;
//--- Definir a cor para cada ndice com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,

//

O nmero do estilo grfico

PLOT_LINE_COLOR,

//

Identificador da propriedade

plot_color_ind,

//

O ndice da cor, onde se escreve a cor

cols[i]);

//

Uma nova cor

//--- Escrever as cores

comm=comm+StringFormat("BarColorIndex[%d]=%s \r\n",plot_color_ind,ColorToString(cols[i],true)
ChartSetString(0,CHART_COMMENT,comm);
}
//--}
//+------------------------------------------------------------------+
//| Altera a aparncia das barras

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades da barra
string comm="";
//--- Um bloco para alterar a largura das barras
int number=MathRand();
//--- Obter a largura do restante da diviso inteira
int width=number%5;

// A largura definida de 0 a 4

//--- Definir a cor com a propriedade PLOT_LINE_WIDTH


PlotIndexSetInteger(0,PLOT_LINE_WIDTH,width);
//--- Escrever a largura da linha
comm=comm+"\r\nWidth="+IntegerToString(width);
//--- Escreve o nome do smbolo
comm="\r\n"+symbol+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1468

Indicadores Customizados

2000-2015, MetaQuotes Software Corp.

1469

Indicadores Customizados

DRAW_COLOR_CANDLES
O estilo DRAW_COLOR_CANDLES style, como o DRAW_CANDLES, desenha candlesticks usando valores
de quatro buffers de indicador o qual contm Open (abertura), High (alta), Low (baixa) e Close
(fechamento) de preos. Alm disso, ele permite a especificao de uma cor para cada um candlestick
de um determinado conjunto. Para esta finalidade, o estilo tem um buffer de cor especial que
armazena os ndices de cor para cada barra. usado para a criao de indicadores personalizados
como uma seqncia de candlesticks, incluindo os inseridos numa sub-janela separada de um grfico e
noutros instrumentos financeiros.
O nmero de cores de candlesticks pode ser definido usando as diretivas de compilador ou
dinamicamente usando a funo PlotIndexSetInteger(). Mudanas dinmicas das propriedades de
plotagem permitem "avivar" os indicadores, de modo que suas mudanas de aparncia dependem da
situao corrente.
O indicador desenhado apenas para as barras, para o qual os valores no vazios de quatro buffers de
preos do indicador so definidos. Para especificar o valor que deve ser considerado como "vazio",
defina esse valor na propriedade PLOT_EMPTY_VALUE:
//--- O valor 0 (vazio) no vai participar no desenho
PlotIndexSetDouble(index_of_plot_DRAW_COLOR_CANDLES,PLOT_EMPTY_VALUE,0);

Sempre preencher explicitamente os valores dos buffers do indicador, definir um valor vazio num
buffer para ignorar barras.
O nmero de buffers necessrios para plotagem de DRAW_COLOR_CANDLES 5:
quatro buffers para armazenar Open, High, Low e Close;
um buffer para armazenar o ndice de cor, que usada para desenhar um candlestick (faz sentido
defini-lo apenas para os candlesticks que sero desenhados).
Todos os buffers para a plotagem devem ir um aps o outro na ordem determinada: Open, High, Low,
Close e o buffer de cor. Nenhum dos buffers de preos pode conter apenas valores vazios, uma vez
que, neste caso, nada plotado.
Um exemplo de indicador que desenha candlesticks para um instrumento financeiro selecionado em
uma janela separada. A cor dos candlesticks muda aleatoriamente a cada N ticks. O parmetro N
definido nos parmetro externos do indicador para a possibilidade de configurao manual (na guia
Parmetros na janela Propriedades do indicador).

2000-2015, MetaQuotes Software Corp.

1470

Indicadores Customizados

Por favor, note que para plot1, a cor definida usando a diretiva de compilador #property, e ento,
na funo OnCalculate() a cor definida aleatoriamente a partir de uma lista preparada
anteriormente.
//+------------------------------------------------------------------+
//|

DRAW_COLOR_CANDLES.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "Um indicador para demonstrar DRAW_COLOR_CANDLES."


#property description "ele desenha candlesticks de um smbolo selecionado numa janela separada"
#property description " "
#property description "A cor e a largura dos candlesticks, bem como o smbolo so alterados"
#property description "aleatoriamente a cada N ticks"
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots

//--- Plotar ColorCandles


#property indicator_label1

"ColorCandles"

#property indicator_type1

DRAW_COLOR_CANDLES

//--- Definir 8 cores para colorir os candlesticks (eles so armazenados na array especial)
#property indicator_color1

clrRed,clrBlue,clrGreen,clrYellow,clrMagenta,clrCyan,clrLime,clrOrange

#property indicator_style1

STYLE_SOLID

#property indicator_width1

2000-2015, MetaQuotes Software Corp.

1471

Indicadores Customizados
//--- parmetros de entrada
input int

N=5;

// O nmero de ticks para alterar o tipo

input int

bars=500;

// O nmero de candlesticks para mostrar

input bool

messages=false;

// Mostrar mensagens no log "Expert Advisors"

//--- buffers do Indicador


double

ColorCandlesBuffer1[];

double

ColorCandlesBuffer2[];

double

ColorCandlesBuffer3[];

double

ColorCandlesBuffer4[];

double

ColorCandlesColors[];

int

candles_colors;

//--- Nome do smbolo


string symbol;
//--- Um array para armazenar as cores que contm 14 elementos
color colors[]=
{
clrRed,clrBlue,clrGreen,clrChocolate,clrMagenta,clrDodgerBlue,clrGoldenrod,
clrIndigo,clrLightBlue,clrAliceBlue,clrMoccasin,clrMagenta,clrCyan,clrMediumPurple
};
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- Se as barras so muito pequenas - concluir o trabalho antes do tempo
if(bars<50)
{

Comment("Por favor, especifique um nmero maior de barras! A operao do indicador foi termin
return(INIT_PARAMETERS_INCORRECT);
}
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,ColorCandlesBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,ColorCandlesBuffer2,INDICATOR_DATA);
SetIndexBuffer(2,ColorCandlesBuffer3,INDICATOR_DATA);
SetIndexBuffer(3,ColorCandlesBuffer4,INDICATOR_DATA);
SetIndexBuffer(4,ColorCandlesColors,INDICATOR_COLOR_INDEX);
//--- Um valor vazio
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//--- O nome do smbolo, para o qual as barras so desenhadas
symbol=_Symbol;
//--- Definir a exibio do smbolo

PlotIndexSetString(0,PLOT_LABEL,symbol+" Open;"+symbol+" High;"+symbol+" Low;"+symbol+" Close");


IndicatorSetString(INDICATOR_SHORTNAME,"DRAW_COLOR_CANDLES("+symbol+")");
//---- O nmero de cores para a cor dos candlesticks
candles_colors=8;

//

Veja uma comentrio para a #property indicator_color1

//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1472

Indicadores Customizados
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int ticks=INT_MAX-100;
//--- Contar ticks para mudar o estilo e cor
ticks++;
//--- Se um nmero suficiente de ticks foi acumulado
if(ticks>=N)
{
//--- Selecione um novo smbolo a partir da janela de observao do Mercado
symbol=GetRandomSymbolName();
//--- Alterar a forma
ChangeLineAppearance();
//--- Mude as cores usadas para desenhar os candlesticks
ChangeColors(colors,candles_colors);
int tries=0;
//--- Faa 5 tentativas de preencher os buffers de Plot1 com os preos a partir da smbolo
while(!CopyFromSymbolToBuffers(symbol,rates_total,0,
ColorCandlesBuffer1,ColorCandlesBuffer2,ColorCandlesBuffer3,
ColorCandlesBuffer4,ColorCandlesColors,candles_colors)
&& tries<5)
{
//--- Um contador de chamadas da funo CopyFromSymbolToBuffers()
tries++;
}
//--- Redefinir o contador de ticks para zero
ticks=0;
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preenche o candlestick especificado

//+------------------------------------------------------------------+
bool CopyFromSymbolToBuffers(string name,
int total,
int plot_index,
double &buff1[],

2000-2015, MetaQuotes Software Corp.

1473

Indicadores Customizados
double &buff2[],
double &buff3[],
double &buff4[],
double &col_buffer[],
int

cndl_colors

)
{

//--- No array de rates[], vamos copiar Open (abertura), High (alta), Low (baixa) e Close (fechamen
MqlRates rates[];
//--- O contador de tentativas
int attempts=0;
//--- Quanto foi copiado
int copied=0;
//--- Fazer 25 tentativas para obter uma srie temporal(timeseries) sobre o smbolo desejado
while(attempts<25 && (copied=CopyRates(name,_Period,0,bars,rates))<0)
{
Sleep(100);
attempts++;
if(messages) PrintFormat("%s Copiar taxas(%s) tentativas=%d",__FUNCTION__,nome,tentativas);
}
//--- Se falhou em copiar um nmero suficiente de barras
if(copied!=bars)
{
//--- Formar uma mensagem string

string comm=StringFormat("Para o smbolo %s, conseguiu receber somente %d barras de %d solici


name,
copied,
bars
);
//--- Mostrar uma mensagem num comentrio na janela do grfico principal
Comment(comm);
//--- Mostrar a mensagem
if(messages) Print(comm);
return(false);
}
else
{
//--- Definir a exibio do smbolo

PlotIndexSetString(plot_index,PLOT_LABEL,name+" Open;"+name+" High;"+name+" Low;"+name+" Clos


IndicatorSetString(INDICATOR_SHORTNAME,"DRAW_COLOR_CANDLES("+symbol+")");
}
//--- Inicializar buffers com valores vazios
ArrayInitialize(buff1,0.0);
ArrayInitialize(buff2,0.0);
ArrayInitialize(buff3,0.0);
ArrayInitialize(buff4,0.0);
//--- Sobre cada tick copiado preos para os buffers
for(int i=0;i<copied;i++)
{

2000-2015, MetaQuotes Software Corp.

1474

Indicadores Customizados
//--- Calcular o ndice apropriado para os buffers
int buffer_index=total-copied+i;
//--- Escreva os preos para os buffers
buff1[buffer_index]=rates[i].open;
buff2[buffer_index]=rates[i].high;
buff3[buffer_index]=rates[i].low;
buff4[buffer_index]=rates[i].close;
//--- Definir a cor do candlestick
int color_index=i%cndl_colors;
col_buffer[buffer_index]=color_index;
}
return(true);
}
//+------------------------------------------------------------------+
//| Aleatoriamente retorna um smbolo de Observao do Mercado

//+------------------------------------------------------------------+
string GetRandomSymbolName()
{
//--- O nmero de smbolos mostrada na janela de observao do Mercado
int symbols=SymbolsTotal(true);
//--- A posio de um smbolo na lista - um nmero aleatrio de 0 para smbolos
int number=MathRand()%symbols;
//--- Retornar o nome de um smbolo na posio especificada
return SymbolName(number,true);
}
//+------------------------------------------------------------------+
//| Mudar a cor dos segmentos de candlestick

//+------------------------------------------------------------------+
void

ChangeColors(color

&cols[],int plot_colors)

{
//--- O nmero de cores
int size=ArraySize(cols);
//--string comm=ChartGetString(0,CHART_COMMENT)+"\r\n\r\n";
//--- Para cada ndice de cor definir uma nova cor aleatoriamente
for(int plot_color_ind=0;plot_color_ind<plot_colors;plot_color_ind++)
{
//--- Obter um valor aleatrio
int number=MathRand();
//--- Obter um ndice no array col[] como um resto da diviso inteira
int i=number%size;
//--- Definir a cor para cada ndice com a propriedade PLOT_LINE_COLOR
PlotIndexSetInteger(0,

//

O nmero do estilo grfico

PLOT_LINE_COLOR,

//

Identificador da propriedade

plot_color_ind,

//

O ndice da cor, onde se escreve a cor

cols[i]);

//

Uma nova cor

//--- Escrever as cores

comm=comm+StringFormat("CandleColorIndex[%d]=%s \r\n",plot_color_ind,ColorToString(cols[i],tr

2000-2015, MetaQuotes Software Corp.

1475

Indicadores Customizados
ChartSetString(0,CHART_COMMENT,comm);
}
//--}
//+------------------------------------------------------------------+
//| Mudar a aparncia dos candlesticks

//+------------------------------------------------------------------+
void ChangeLineAppearance()
{
//--- Uma string para a formao de informaes sobre as propriedades do candlestick
string comm="";
//--- Escreve o nome do smbolo
comm="\r\n"+symbol+comm;
//--- Mostrar a informao no grfico usando um comentrio
Comment(comm);
}

2000-2015, MetaQuotes Software Corp.

1476

Indicadores Customizados

Conexo entre as propriedades de indicadores e funes


correspondentes
Cada indicador personalizado tem inmeras propriedades, algumas das quais so obrigatrias e esto
sempre posicionadas no incio da descrio. So as seguintes propriedades:
indicao de uma janela
indicator_chart_window;

para

plotar

indicador

indicator_separate_window

ou

nmero de buffers do indicador indicator_buffers;


nmero de plotagem do indicador indicator_plots.
Tambm existem outras propriedades que podem ser definidas tanto atravs das diretivas pr
processador como das funes destinadas criao do indicador personalizado. Estas propriedades e
funes correspondentes so descritas na seguinte tabela.
Diretivas para propriedades
de sub-janela de indicador

Funes do tipo
IndicatorSet...()

Descrio para ajustar


propriedades da sub-janela

indicator_height

IndicatorSetInteger
(INDICATOR_INDICATOR_HEIG
HT, nHeight)

O valor fixo da altura da subjanela

indicator_minimum

IndicatorSetDouble
(INDICATOR_MINIMUM,
dMaxValue)

O valor
vertical

mnimo

do

eixo

indicator_maximum

IndicatorSetDouble
(INDICATOR_MAXIMUM,
dMinValue)

O valor mximo
vertical

do

eixo

indicator_levelN

IndicatorSetDouble
(INDICATOR_LEVELVALUE,
1, nLevelValue)

Valor de eixo vertical para N


nvel

nenhuma diretiva
processador

de

pr

N-

IndicatorSetString
(INDICATOR_LEVELTEXT, N-1,
sLevelName)

Nome de um nvel apresentado

indicator_levelcolor

IndicatorSetInteger
(INDICATOR_LEVELCOLOR, N1, nLevelColor)

Cor de N nvel

indicator_levelwidth

IndicatorSetInteger
(INDICATOR_LEVELWIDTH, N1, nLevelWidth)

Largura da linha para N nvel

indicator_levelstyle

IndicatorSetInteger
(INDICATOR_LEVELSTYLE, N-1,
nLevelStyle)

Estilo de linha para N nvel

Diretivas para plotagem de


propriedades
indicator_labelN

Funes do tipo
PlotIndexSet...()
PlotIndexSetString(N1,PLOT_LABEL,sLabel)

2000-2015, MetaQuotes Software Corp.

Descrio do ajuste da
propriedade de plotar
Nome abreviado do N nmero
de plotar. Ele exibido numa

1477

Indicadores Customizados

janela de dados e na dica popup quando passa-se o curso


sobre ele
indicator_colorN

PlotIndexSetInteger(N-1,
PLOT_LINE_COLOR, nColor)

Cor da linha para N plotagem

indicator_styleN

PlotIndexSetInteger(N-1,
PLOT_LINE_STYLE, nType)

Estilo da linha para N plotagem

indicator_typeN

PlotIndexSetInteger(N-1,
PLOT_DRAW_TYPE, nType)

Tipo de linha para N plotagem

indicator_widthN

PlotIndexSetInteger(N-1,
PLOT_LINE_WIDTH, nWidth)

Largura da
plotagem

Propriedades comum do
indicador

Funes do tipo
IndicatorSet...()

linha

para

Description

nenhuma diretiva
processador

de

pr

IndicatorSetString
(INDICATOR_SHORTNAME,
sShortName)

Define o nome abreviado


conveniente do indicador, que
ser exibido na lista de
indicadores
(aberto
no
terminal pressionando Ctrl+I).

nenhuma diretiva
processador

de

pr

IndicatorSetInteger
(INDICATOR_DIGITS, nDigits)

Conjuntos necessrios para


preciso da exibio de
valores dos indicadores nmero de casas decimais

nenhuma diretiva
processador

de

pr

IndicatorSetInteger
(INDICATOR_LEVELS, nLevels)

Define o nmero de nveis na


janela do indicador

Sem funo, a propriedade


pode ser definida apenas pela
diretiva pr processador.

Tipo do preo padro usado


para o clculo de indicadores.
Ele especificado quando
necessrio, somente quando o
OnCalculate() do primeiro tipo
usado.
O
valor da
propriedade
tambm pode ser definido a
partir
do
dilogo
de
propriedades do indicador na
aba "Parmetros" - "Aplicar
para".

indicator_applied_price

Deve notar-se que a numerao dos nveis e plotagens em termos de pr processador inicia-se com
um, enquanto a numerao das mesmas propriedades usando funes inicia-se com zero, ou seja, o
valor indicado deve ser pelo menos um do que o indicado para #property.
Existem vrias diretivas, para a qual no existem funes correspondentes:
Diretiva

Description

2000-2015, MetaQuotes Software Corp.

1478

Indicadores Customizados

indicator_chart_window

Indicador visualizado na janela principal

indicator_separate_window

Indicador
separada

indicator_buffers

Nmero necessrios de buffers do indicador

indicator_plots

Nmeros de plotagem no indicador

visualizado

2000-2015, MetaQuotes Software Corp.

numa

sub-janela

1479

Indicadores Customizados

SetIndexBuffer
A funo vincula um buffer especfico de indicador com um array unidimensional dinmico do tipo
double.
bool SetIndexBuffer(
int

index,

// ndice de buffer

double

buffer[],

// array

ENUM_INDEXBUFFER_TYPE data_type

// O que ser o armazenado

);

Parmetros
index
[in] Nmero do buffer do indicador. A numerao inicia com 0. O nmero deve ser inferior ao valor
declarado em #propertyindicator_buffers.
buffer[]
[in] Um array declarado no programa de indicador personalizado.
data_type
[in] Tipo de dados armazenados no array do indicador. Por padro ele INDICATOR_DATA (valores
de clculos do indicador). Ele tambm pode ter o valor de INDICATOR_COLOR_INDEX; neste caso,
este buffer usado para armazenar ndices de cor para o buffer do indicador anterior. Voc pode
especificar at cores na linha #propertyindicator_colorN. O valor INDICATOR_CALCULATIONS
significa que o buffer usado nos clculos intermedirio do indicador, e no se destina ao
desenho.
Valor do Retorno
Com sucesso, retorna true, do contrrio - false.
Observao
Aps a vinculao, o array buffer[] dinmico ser indexado como os arrays comuns, mesmo que a
indexao de timeseries seja obrigatoriamente pr-instalado para o array. Se voc quiser alterar a
ordem de acesso aos elementos do array do indicador, use a funo ArraySetAsSeries() aps a
vinculao do array usando a funo SetIndexBuffer(). Por favor, note que voc no pode alterar
o tamanho dos arrays dinmicos definidos como buffers do indicador pela funo SetIndexBuffer().
Para buffers do indicador, todas as operaes de alterao de tamanho so realizadas pela execuo
do sub-sistema do terminal.
Exemplo:
//+------------------------------------------------------------------+
//|

TestCopyBuffer1.mq5 |

//|

Copyright 2009, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

2000-2015, MetaQuotes Software Corp.

1480

Indicadores Customizados
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//---- plotar MA
#property indicator_label1

"MA"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input bool

AsSeries=true;

input int

period=15;

input ENUM_MA_METHOD

smootMode=MODE_EMA;

input ENUM_APPLIED_PRICE price=PRICE_CLOSE;


input int

shift=0;

//--- buffers do indicador


double

MABuffer[];

int

ma_handle;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
if(AsSeries) ArraySetAsSeries(MABuffer,true);
Print("Buffer do indicador timeseries = ",ArrayGetAsSeries(MABuffer));
SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
Print("Buffer do indicador aps SetIndexBuffer() timeseries = ",
ArrayGetAsSeries(MABuffer));
//--- alterar a ordem dos elementos de acesso do buffer do indicador
ArraySetAsSeries(MABuffer,AsSeries);
IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries);
//--ma_handle=iMA(Symbol(),0,period,shift,smootMode,price);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],

2000-2015, MetaQuotes Software Corp.

1481

Indicadores Customizados
const long &volume[],
const int &spread[])
{
//--- Copiar os valores da mdia mvel no buffer MABuffer
int copied=CopyBuffer(ma_handle,0,0,rates_total,MABuffer);
Print("MABuffer[0] = ",MABuffer[0]);// Dependendo dos valores AsSeries
// Receber um valor mais antigo
// Ou para a barra atual inacabada
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+

Tambm Veja
Propriedades dos indicadores personalizados, Acesso para indicadores e timeseries

2000-2015, MetaQuotes Software Corp.

1482

Indicadores Customizados

IndicatorSetDouble
A funo define o valor da propriedade do indicador correspondente. Propriedade do indicador deve
ser do tipo double. Existem duas variantes da funo.
Chamar especificando o identificador da propriedade.
bool IndicatorSetDouble(
int

prop_id,

double prop_value

// identificador
// valor para ser definido

);

Chamar especificando o identificador e o modificador da propriedade.


bool IndicatorSetDouble(
int

prop_id,

// identificador

int

prop_modifier,

// modificador

double prop_value

// valor para ser definido

Parmetros
prop_id
[in] Identificador da propriedade do indicador. O valor pode ser um dos valores do enumerador
ENUM_CUSTOMIND_PROPERTY_DOUBLE.
prop_modifier
[in] Modificador da propriedade especfica. Somente as propriedades de nvel requerem um
modificador. A numerao dos nveis a partir do 0. Isso significa que a fim de definir a
propriedade para o segundo nvel, voc precisa determinar 1 (menor que 1 quando usar a diretiva
de compilao).
prop_value
[in] Valor de propriedade.
Valor do Retorno
Em caso de execuo bem sucedida, retorna true, do contrrio - false.
Observao
Numerao das propriedades (modificadores) comea a partir de 1 (um) quando usa a diretiva de
#property, enquanto que a funo usa numerao a partir de (zero). No caso do nmero de nvel ser
definido incorretamente, o visor do indicador pode ser diferente do pretendido.
Por exemplo, o primeiro valor para o indicador de nvel de sub-janela separada pode ser ajustado de
duas maneiras:
property indicator_level1 50 - o valor 1 utilizado para especificar o nmero de nvel,
IndicatorSetDouble(INDICATOR_LEVELVALUE, 0, 50) - 0 usado para especificar o primeiro nvel.
Exemplo: indicador inverte para baixo os valores mximo e mnimo da janela do indicador e os
valores de nveis em que as linhas horizontais so colocadas.

2000-2015, MetaQuotes Software Corp.

1483

Indicadores Customizados

#property indicator_separate_window
//--- define o valor mximo e mnimo para a janela do indicador
#property indicator_minimum

#property indicator_maximum

100

//--- visualiza trs nveis horizontais na janela separada


#property indicator_level1 25
#property indicator_level2 50
#property indicator_level3 75
//--- definir a espessura dos nveis horizontais
#property indicator_levelwidth 1
//--- definir o estilo dos nveis horizontais
#property indicator_levelstyle STYLE_DOT
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- definir as descries dos nveis horizontais
IndicatorSetString(INDICATOR_LEVELTEXT,0,"Primeiro Nvel (ndice 0)");
IndicatorSetString(INDICATOR_LEVELTEXT,1,"Segundo Nvel (ndice 1)");
IndicatorSetString(INDICATOR_LEVELTEXT,2,"Terceiro Nvel (ndice 2)");
//--- define o mome abreviado para o indicador
IndicatorSetString(INDICATOR_SHORTNAME,"IndicatorSetDouble() Demo");
//--- definir a cor para cada nvel
IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrBlue);
IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrGreen);
IndicatorSetInteger(INDICATOR_LEVELCOLOR,2,clrRed);

2000-2015, MetaQuotes Software Corp.

1484

Indicadores Customizados
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int tick_counter=0;
static double level1=25,level2=50,level3=75;
static double max=100,min=0, shift=100;
//--- calcular ticks
tick_counter++;
//--- inverter os nveis a cada 10 tick
if(tick_counter%10==0)
{
//--- inverter sinal para os valores de nvel
level1=-level1;
level2=-level2;
level3=-level3;
//--- inverter sinal para os valores mximos e mnimos
max-=shift;
min-=shift;
//--- inverter o valor de deslocamento
shift=-shift;
//--- definir novo valor para nvel
IndicatorSetDouble(INDICATOR_LEVELVALUE,0,level1);
IndicatorSetDouble(INDICATOR_LEVELVALUE,1,level2);
IndicatorSetDouble(INDICATOR_LEVELVALUE,2,level3);
//--- definir novos valores mximo e mnimo na janela do indicador
Print("Set up max = ",max,",

min = ",min);

IndicatorSetDouble(INDICATOR_MAXIMUM,max);
IndicatorSetDouble(INDICATOR_MINIMUM,min);
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
Exemplos de Estilos de Indicador, Conexo entre Propriedades do Indicador e Funes, Estilos de
2000-2015, MetaQuotes Software Corp.

1485

Indicadores Customizados
Desenho

2000-2015, MetaQuotes Software Corp.

1486

Indicadores Customizados

IndicatorSetInteger
A funo define o valor da propriedade do indicador correspondente. Propriedade do indicador deve
ser do tipo int ou color. Existem duas variantes da funo.
Chamar especificando o identificador da propriedade.
bool IndicatorSetInteger(
int prop_id,

// identificador

int prop_value

// valor a ser definido

);

Chamar especificando o identificador e o modificador da propriedade.


bool IndicatorSetInteger(
int prop_id,

// identificador

int prop_modifier,

// modificador

int prop_value

// valor a ser definido

Parmetros
prop_id
[in] Identificador da propriedade do indicador. O valor pode ser um dos valores do enumerador
ENUM_CUSTOMIND_PROPERTY_INTEGER.
prop_modifier
[in] Modificador da propriedade especfica. Somente as propriedades de nvel requerem um
modificador.
prop_value
[in] Valor de propriedade.
Valor do Retorno
Em caso de execuo bem sucedida, retorna true, do contrrio - false.
Observao
Numerao das propriedades (modificadores) comea a partir de 1 (um) quando usa a diretiva de
#property, enquanto que a funo usa numerao a partir de (zero). No caso do nmero de nvel ser
definido incorretamente, o visor do indicador pode ser diferente do pretendido.
Por exemplo, para definir a espessura da primeira linha horizontal usar o ndice zero:
IndicatorSetInteger(INDICATOR_LEVELWIDTH, 0, 5) - ndice 0 usado para definir a espessura do
primeiro nvel.
Exemplo: indicador que define a cor, estilo e espessura do indicador de linhas horizontais.

2000-2015, MetaQuotes Software Corp.

1487

Indicadores Customizados

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
//--- visualiza trs nveis horizontais na janela separada
#property indicator_level1 20
#property indicator_level2 50
#property indicator_level3 80
//--- definir a espessura dos nveis horizontais
#property indicator_levelwidth 5
//--- definir a cor dos nveis horizontais
#property indicator_levelcolor clrAliceBlue
//--- definir o estilo dos nveis horizontais
#property indicator_levelstyle STYLE_DOT
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- definir as descries dos nveis horizontais
IndicatorSetString(INDICATOR_LEVELTEXT,0,"Primeiro Nvel (ndice 0)");
IndicatorSetString(INDICATOR_LEVELTEXT,1,"Segundo Nvel (ndice 1)");
IndicatorSetString(INDICATOR_LEVELTEXT,2,"Terceiro Nvel (ndice 2)");
//--- define o mome abreviado para o indicador
IndicatorSetString(INDICATOR_SHORTNAME,"IndicatorSetInteger() Demo");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1488

Indicadores Customizados
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
static int tick_counter=0;
//--- calcular ticks
tick_counter++;
//--- e calcular as cores dos nveis horizontais, dependendo do contador de tick
ChangeLevelColor(0,tick_counter,3,6,10); // trs ltimos parmetros esto comutando a cor
ChangeLevelColor(1,tick_counter,3,6,8);
ChangeLevelColor(2,tick_counter,4,7,9);
//--- modificar o estilo dos nveis horizontais
ChangeLevelStyle(0,tick_counter);
ChangeLevelStyle(1,tick_counter+5);
ChangeLevelStyle(2,tick_counter+15);
//--- obter a largura como o restante da diviso inteira por 5 ticks
int width=tick_counter%5;
//--- iterao em todos os nveis horizontais e definir espessura
for(int l=0;l<3;l++)
IndicatorSetInteger(INDICATOR_LEVELWIDTH,l,width+1);
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Definir a cor da linha horizontal na janela separada do indicador|
//+------------------------------------------------------------------+
void ChangeLevelColor(int level,

// nmero de linha horizontal

int tick_number,// dividendo, para obter o nmero do restante da diviso


int f_trigger,

// primeiro divisor de comutao de cor

int s_trigger,

// segundo divisor de comutao de cor

int t_trigger)

// terceiro divisor de comutao de cor

{
static color colors[3]={clrRed,clrBlue,clrGreen};
//--- ndice de cor a partir do array colors[]
int index=-1;
//--- calcular o nmero de cor a partir do array colors[] para pintar linha horizontal
if(tick_number%f_trigger==0)
index=0;

// se tick_number divide por f_trigger sem o restante

if(tick_number%s_trigger==0)
index=1;

// se tick_number divide por s_trigger sem o restante

2000-2015, MetaQuotes Software Corp.

1489

Indicadores Customizados
if(tick_number%t_trigger==0)
index=2;

// se tick_number divide por t_trigger sem o restante

//--- se a cor est definida, estabelea-a


if(index!=-1)
IndicatorSetInteger(INDICATOR_LEVELCOLOR,level,colors[index]);
//--}
//+------------------------------------------------------------------+
//| Define estilo de linha horizontal na janela do indicador separado|
//+------------------------------------------------------------------+
void ChangeLevelStyle(int level,

// nmero de linha horizontal

int tick_number// nmero para obter o resto da diviso


)
{
//--- array para armazenar estilos
static ENUM_LINE_STYLE styles[5]=
{STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};
//--- ndice de estilo a partir do array styles[]
int index=-1;
//--- calcular o nmero a partir do array styles[] para definir a linha horizontal
if(tick_number%50==0)
index=5;

// se tick_number divide por 50 sem o restante, ento o estilo STYLE_DASHDOTDOT

if(tick_number%40==0)
index=4;

// ... style is STYLE_DASHDOT

if(tick_number%30==0)
index=3;

// ... STYLE_DOT

if(tick_number%20==0)
index=2;

// ... STYLE_DASH

if(tick_number%10==0)
index=1;

// ... STYLE_SOLID

//--- se o estilo est definido, estabelea-o


if(index!=-1)
IndicatorSetInteger(INDICATOR_LEVELSTYLE,level,styles[index]);
}

Tambm Veja
Propriedades de Indicador Personalizado, Propriedades (#property) de programa, Estilos de Desenho

2000-2015, MetaQuotes Software Corp.

1490

Indicadores Customizados

IndicatorSetString
A funo define o valor da propriedade do indicador correspondente. Propriedade do indicador deve
ser do tipo string. Existem duas variantes da funo.
Chamar especificando o identificador da propriedade.
bool IndicatorSetString(
int

prop_id,

string prop_value

// identificador
// valor a ser definido

);

Chamar especificando o identificador e o modificador da propriedade.


bool IndicatorSetString(
int

prop_id,

// identificador

int

prop_modifier,

// modificador

string prop_value

// valor a ser definido

Parmetros
prop_id
[in] Identificador da propriedade do indicador. O valor pode ser um dos valores do enumerador
ENUM_CUSTOMIND_PROPERTY_STRING.
prop_modifier
[in] Modificador da propriedade especfica. Somente as propriedades de nvel requerem um
modificador.
prop_value
[in] Valor de propriedade.
Valor do Retorno
Em caso de execuo bem sucedida, retorna true, do contrrio - false.
Observao
Numerao das propriedades (modificadores) comea a partir de 1 (um) quando usa a diretiva de
#property, enquanto que a funo usa numerao a partir de (zero). No caso do nmero de nvel ser
definido incorretamente, o visor do indicador pode ser diferente do pretendido.
Por exemplo, na ordem para definir a descrio da primeira linha horizontal usar o ndice zero:
IndicatorSetString(INDICATOR_LEVELTEXT, 0, "Primeiro Nvel") - ndice 0 usado para definir a
descrio de texto do primeiro nvel.
Exemplo: indicador que define etiquetas de texto para as linhas horizontais do indicador.

2000-2015, MetaQuotes Software Corp.

1491

Indicadores Customizados

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
//--- visualiza trs nveis horizontais na janela separada
#property indicator_level1 30
#property indicator_level2 50
#property indicator_level3 70
//--- definir a cor dos nveis horizontais
#property indicator_levelcolor clrRed
//--- definir o estilo dos nveis horizontais
#property indicator_levelstyle STYLE_SOLID
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- definir as descries dos nveis horizontais
IndicatorSetString(INDICATOR_LEVELTEXT,0,"Primeiro Nvel (ndice 0)");
IndicatorSetString(INDICATOR_LEVELTEXT,1,"Segundo Nvel (ndice 1)");
IndicatorSetString(INDICATOR_LEVELTEXT,2,"Terceiro Nvel (ndice 2)");
//--- define o mome abreviado para o indicador
IndicatorSetString(INDICATOR_SHORTNAME,"IndicatorSetString() Demo");
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

2000-2015, MetaQuotes Software Corp.

1492

Indicadores Customizados
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}

Tambm Veja
Propriedades de Indicador Personalizado, Propriedades (#property) de Programa

2000-2015, MetaQuotes Software Corp.

1493

Indicadores Customizados

PlotIndexSetDouble
A funo define o valor da propriedade correspondente da linha do indicador correspondente. A
propriedade indicador deve ser do tipo double.
bool PlotIndexSetDouble(
int

plot_index,

// plotando o ndice do estilo

int

prop_id,

// propriedade identificador

double prop_value

// valor para ser definido

);

Parmetros
plot_index
[in] ndice de plotagem grfica
prop_id
[in] O valor pode ser um dos valores do enumerador ENUM_PLOT_PROPERTY_DOUBLE.
prop_value
[in] O valor da propriedade.
Valor do Retorno
Se com sucesso, retorna true, do contrrio false.

2000-2015, MetaQuotes Software Corp.

1494

Indicadores Customizados

PlotIndexSetInteger
A funo define o valor da propriedade correspondente da linha do indicador correspondente. A
propriedade do indicador deve ser do tipo int, char, bool ou color. Existem 2 variantes da funo.
Chamar indicando o identificador da propriedade.
bool PlotIndexSetInteger(
int plot_index,

// plotagem do ndice do estilo

int prop_id,

// propriedade identificador

int prop_value

// valor a ser definido

);

Chamar indicando o identificador e o modificador da propriedade.


bool PlotIndexSetInteger(
int plot_index,

// plotagem do ndice do estilo

int prop_id,

// propriedade identificador

int prop_modifier,

// propriedade modificador

int prop_value

// valor a ser definido

Parmetros
plot_index
[in] ndice de plotagem grfica
prop_id
[in] O valor pode ser um dos valores do enumerador ENUM_PLOT_PROPERTY_INTEGER.
prop_modifier
[in] Modificador da propriedade especfica. Propriedades de ndice de cor apenas requerem um
modificador.
prop_value
[in] O valor da propriedade.
Valor do Retorno
Se com sucesso, retorna true, do contrrio false.
Exemplo: um indicador que desenha uma linha de trs cores. O esquema de cores muda a cada 5
ticks.

2000-2015, MetaQuotes Software Corp.

1495

Indicadores Customizados

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots

//---- plotar ColorLine


#property indicator_label1

"ColorLine"

#property indicator_type1

DRAW_COLOR_LINE

#property indicator_color1

clrRed,clrGreen,clrBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- buffers do indicador


double

ColorLineBuffer[];

double

ColorBuffer[];

int

MA_handle;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
void OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,ColorLineBuffer,INDICATOR_DATA);
SetIndexBuffer(1,ColorBuffer,INDICATOR_COLOR_INDEX);
//--- obter manipulador MA
MA_handle=iMA(Symbol(),0,10,0,MODE_EMA,PRICE_CLOSE);
//--}
//+------------------------------------------------------------------+
//| Obter ndice de cor

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1496

Indicadores Customizados
int getIndexOfColor(int i)
{
int j=i%300;
if(j<100) return(0);// primeiro ndice
if(j<200) return(1);// segundo ndice
return(2); // terceiro ndice
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--static int ticks=0,modified=0;
int limit;
//--- primeiro clculo ou nmero de barras foi alterado
if(prev_calculated==0)
{
//--- copia valores da MA dentro do buffer do indicador ColorLineBuffer
int copied=CopyBuffer(MA_handle,0,0,rates_total,ColorLineBuffer);
if(copied<=0) return(0);// cpia falhou - lanar fora
//--- agora definir a cor da linha para cada barra
for(int i=0;i<rates_total;i++)
ColorBuffer[i]=getIndexOfColor(i);
}
else
{
//--- copia valores da MA dentro do buffer do indicador ColorLineBuffer
int copied=CopyBuffer(MA_handle,0,0,rates_total,ColorLineBuffer);
if(copied<=0) return(0);
ticks++;// contando ticks
if(ticks>=5)// hora de mudar o esquema de cores
{
ticks=0; // zerar o contador
modified++; // contador de mudanas de cor
if(modified>=3)modified=0;// zerar o contador
ResetLastError();
switch(modified)
{

2000-2015, MetaQuotes Software Corp.

1497

Indicadores Customizados
case 0:// primeiro esquema de cor
PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrRed);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrBlue);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,clrGreen);
Print("Esquema de cor "+modified);
break;
case 1:// segundo esquema de cor
PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrYellow);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrPink);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,clrLightSlateGray);
Print("Esquema de cor "+modified);
break;
default:// terceiro esquema de cor
PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrLightGoldenrod);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrOrchid);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,clrLimeGreen);
Print("Esquema de cor "+modified);
}
}
else
{
//--- definir posio inicial
limit=prev_calculated-1;
//--- Agora vamos definir a cor da linha para cada barra
for(int i=limit;i<rates_total;i++)
ColorBuffer[i]=getIndexOfColor(i);
}
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1498

Indicadores Customizados

PlotIndexSetString
A funo define o valor da propriedade correspondente da linha do indicador correspondente. A
propriedade indicador deve ser do tipo string.
bool PlotIndexSetString(
int

plot_index,

// plotando o ndice do estilo

int

prop_id,

// propriedade identificador

string prop_value

// valor para ser definido

);

Parmetros
plot_index
[in] ndice de representao grfica
prop_id
[in] O valor pode ser um dos valores do enumerador ENUM_PLOT_PROPERTY_STRING.
prop_value
[in] O valor da propriedade.
Valor do Retorno
Se com sucesso, retorna true, do contrrio false.

2000-2015, MetaQuotes Software Corp.

1499

Indicadores Customizados

PlotIndexGetInteger
A funo define o valor da propriedade correspondente da linha do indicador correspondente. A
propriedade do indicador deve ser do tipo int, color, bool ou char. Existem 2 variantes da funo.
Chamar indicando o identificador da propriedade.
int PlotIndexGetInteger(
int plot_index,

// plotagem do ndice do estilo

int prop_id,

// propriedade identificador

);

Chamar indicando o identificador e o modificador da propriedade.


int PlotIndexGetInteger(
int plot_index,

// plotagem do ndice

int prop_id,

// propriedade identificador

int prop_modifier

// propriedade modificador

Parmetros
plot_index
[in] ndice de plotagem grfica
prop_id
[in] O valor pode ser um dos valores do enumerador ENUM_PLOT_PROPERTY_INTEGER.
prop_modifier
[in] Modificador da propriedade especfica. Propriedades de ndice de cor apenas requerem um
modificador.
Observao
Funo projetado para extrair as configuraes do desenho da linha da indicador apropriada. A
funo trabalha em conjunto com a funo PlotIndexSetInteger para copiar as propriedades de
desenho de uma linha para outra.
Exemplo: um indicador que colore as velas dependendo do dia da semana. Cores para cada dia so
criados de uma maneira programada.

2000-2015, MetaQuotes Software Corp.

1500

Indicadores Customizados

#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots

//---- plotar ColorCandles


#property indicator_label1

"ColorCandles"

#property indicator_type1

DRAW_COLOR_CANDLES

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- buffers do indicador


double

OpenBuffer[];

double

HighBuffer[];

double

LowBuffer[];

double

CloseBuffer[];

double

ColorCandlesColors[];

color

ColorOfDay[6]={CLR_NONE,clrMediumSlateBlue,
clrDarkGoldenrod,clrForestGreen,clrBlueViolet,clrRed};

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
void OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,OpenBuffer,INDICATOR_DATA);
SetIndexBuffer(1,HighBuffer,INDICATOR_DATA);
SetIndexBuffer(2,LowBuffer,INDICATOR_DATA);
SetIndexBuffer(3,CloseBuffer,INDICATOR_DATA);
SetIndexBuffer(4,ColorCandlesColors,INDICATOR_COLOR_INDEX);
//--- definir o nmero de cores em buffer de cor

2000-2015, MetaQuotes Software Corp.

1501

Indicadores Customizados
PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,6);
//--- definir cores para o buffer de cores
for(int i=1;i<6;i++)
PlotIndexSetInteger(0,PLOT_LINE_COLOR,i,ColorOfDay[i]);
//--- define acuracidade
IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
printf("We have %u colors of days",PlotIndexGetInteger(0,PLOT_COLOR_INDEXES));
//--}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--int i;
MqlDateTime t;
//---if(prev_calculated==0) i=0;
else i=prev_calculated-1;
//---while(i<rates_total)
{
OpenBuffer[i]=open[i];
HighBuffer[i]=high[i];
LowBuffer[i]=low[i];
CloseBuffer[i]=close[i];
//--- definir a cor de cada vela
TimeToStruct(time[i],t);
ColorCandlesColors[i]=t.day_of_week;
//--i++;
}
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1502

Funes de Objeto

Funes de Objeto
Este o grupo de funes destinadas ao trabalho com objetos grficos relativos a qualquer grfico
especifico.
The functions defining the properties of graphical objects, as well as ObjectCreate() and ObjectMove()
operations for creating and moving objects along the chart are actually used for sending commands to
the chart. If these functions are executed successfully, the command is included in the common queue
of the chart events. Visual changes in the properties of graphical objects are implemented when
handling the queue of the chart events.
Thus, do not expect an immediate visual update of graphical objects after calling these functions.
Generally, the graphical objects on the chart are updated automatically by the terminal following the
change events - a new quote arrival, resizing the chart window, etc. Use ChartRedraw() function to
forcefully update the graphical objects.
Funo

Ao

ObjectCreate

Cria um objecto de tipo especfico para um


grfico especfico

ObjectName

Retorna o nome de um objeto do tipo


correspondente para um grfico especfico
(grfico de sub-janela especfica)

ObjectDelete

Remove o objeto com o nome especfico a


partir de um grfico especfico (a partir de
grfico de sub-janela especfica)

ObjectsDeleteAll

Remove todos os objetos com o tipo especfico


a partir de um grfico especfico (a partir de
grfico de sub-janela especfica)

ObjectFind

Pesquisa um objeto com o ID especificado pelo


nome

ObjectGetTimeByValue

Retorna o valor de tempo ao valor do preo do


objeto especifico

ObjectGetValueByTime

Retorna o valor do preo de um objeto ao


perodo especificado

ObjectMove

Muda as coordenadas do ponto de ancoragem


do objeto especificado

ObjectsTotal

Retorna o nmero de objetos do tipo especifico


no grfico especificado (grfico de sub-janela
especfica)

ObjectGetDouble

Retorna o valor double da propriedade do


objeto correspondente

ObjectGetInteger

Retorna o valor integer da propriedade do


objeto correspondente

ObjectGetString

Retorna o valor string da propriedade do objeto

2000-2015, MetaQuotes Software Corp.

1503

Funes de Objeto

correspondente
ObjectSetDouble

Define o valor da propriedade do objeto


correspondente

ObjectSetInteger

Define o valor da propriedade do objeto


correspondente

ObjectSetString

Define o valor da propriedade do objeto


correspondente

TextSetFont

Define a fonte para exibir o texto usando


mtodos de desenho (Arial 20, usado por
padro)

TextOut

Transfere o texto para um array personalizado


(buffer) projetado para a criao de recursos
grficos

TextGetSize

Retorna a largura e a altura da string nas


configuraes das fontes usadas no momento

Todos os objetos grficos devem ter um nico nome dentro de um grfico, incluindo suas sub-janelas.
Mudana de nome de um objeto grfico gera dois eventos: evento de excluso de um objeto com o
antigo nome, e evento de criao de um objeto com um novo nome.
Aps um objeto ser criado ou uma propriedade de objeto ser modificada, recomendado chamar a
funo ChartRedraw(), a qual comanda o terminal do cliente, forando o desenho de um grfico (e
todos os objetos visveis dentro dele).

2000-2015, MetaQuotes Software Corp.

1504

Funes de Objeto

ObjectCreate
A funo cria um objeto com o nome especifico, o tipo e as coordenadas iniciais na sub-janela de
grfico especifico. Durante a criao at 30 coordenadas podem ser especificadas.
bool ObjectCreate(
long

chart_id,

// identificador grfico

string

name,

// nome objeto

ENUM_OBJECT

type,

// tipo objeto

sub_window

nwin,

// ndice janela

datetime

time1,

// tempo do primeiro ponto de ancoragem

double

price1,

// preo do primeiro ponto de ancoragem

datetime

timeN=0,

// tempo de N ponto de ancoragem

double

priceN=0,

// preo de N ponto de ancoragem

datetime

time30=0,

// tempo do trigsimo ponto de ancoragem

double

price30=0

// preo do trigsimo ponto de ancoragem

...

...

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
name
[in] Nome do objeto. O nome deve ser nico dentro de um grfico, incluindo suas sub-janelas.
type
[in] Tipo do e objeto. O valor pode ser um dos valores do enumerador ENUM_OBJECT.
sub_window
[in] Nmero de sub-janela do grfico. 0 (zero) significa a principal janela do grfico. A sub-janela
especifica deve existir, caso contrrio, a funo retorna false.
time1
[in] A coordenada do tempo da primeira ancoragem.
price1
[in] A coordenada do preo do primeiro ponto de ancoragem.
timeN=0
[in] Tempo de N ponto de ancoragem.
priceN=0
[in] A coordenada do preo de N ponto de ancoragem.
time30=0
[in] A coordenada de tempo de N ponto de ancoragem.
price30=0
[in] A coordenada do preo do trigsimo ponto de ancoragem.

2000-2015, MetaQuotes Software Corp.

1505

Funes de Objeto

Valor do Retorno
Retorna verdadeiro ou falso independente se o objeto criado ou no. Para ler mais sobre o erro
chamar GetLastError(). Se o objeto j foi criado, a funo tenta mudar suas coordenadas.
Observao
An object name should not exceed 63 characters.
A numerao das sub-janelas do grfico (se houver sub-janelas com indicadores no grfico) comea
com 1. A janela principal do grfico sempre tem ndice 0.
O maior nmero de pontos de ancoragem (at 30) implementado para uso futuro. Ao mesmo
tempo, o limite de 30 possveis pontos de ancoragem para os objetos grficos determinado pela
limitao do nmero de parmetros (no mais do que 64), que pode ser usado quando chama uma
funo.
Quando um objeto renomeado, dois eventos so formados simultaneamente. Estes eventos podem
ser manipulados em um Expert Advisor ou o indicador pela funo OnChartEvent():
um evento de excluso de um objeto com o nome antigo;
um evento de criao de um objeto com um novo nome.
H um certo nmero de pontos de ancoragem que devem ser especificados durante a criao de
cada tipo de objeto:
ID

Description

Pontos de Ancoragem

OBJ_VLINE

Linha Vertical

Um ponto de ancoragem.
Efetivamente
apenas
as
coordenadas de tempo so
usadas.

OBJ_HLINE

Linha Horizontal

Um ponto de ancoragem.
Efetivamente
apenas
a
coordenada de preo usada.

OBJ_TREND

Linha de Tendncia

Dois pontos para Ancoragem.

OBJ_TRENDBYANGLE

Linha de Tendncia por ngulo

Dois pontos para Ancoragem.

OBJ_CYCLES

Linhas de Ciclo

Dois pontos para Ancoragem.

OBJ_ARROWED_LINE

Linha de Seta

Dois pontos para Ancoragem.

OBJ_CHANNEL

Canal Eqidistante

Trs pontos para Ancoragem.

OBJ_STDDEVCHANNEL

Canal de Desvio Padro

Dois pontos para Ancoragem.

OBJ_REGRESSION

Canal de Regresso Linear

Dois pontos para Ancoragem.

OBJ_PITCHFORK

Forquilha de Andrews

Trs pontos para Ancoragem.

OBJ_GANNLINE

Linha Gann

Dois pontos para Ancoragem.

OBJ_GANNFAN

Ventilador Gann

Dois pontos para Ancoragem.

OBJ_GANNGRID

Grade Gann

Dois pontos para Ancoragem.

OBJ_FIBO

Retrao de Fibonacci

Dois pontos para Ancoragem.

2000-2015, MetaQuotes Software Corp.

1506

Funes de Objeto

OBJ_FIBOTIMES

Fusos Horrios de Fibonacci

Dois pontos para Ancoragem.

OBJ_FIBOFAN

Fibonacci Fan

Dois pontos para Ancoragem.

OBJ_FIBOARC

Arcos de Fibonacci

Dois pontos para Ancoragem.

OBJ_FIBOCHANNEL

Canal de Fibonacci

Trs pontos para Ancoragem.

OBJ_EXPANSION

Expanso de Fibonacci

Trs pontos para Ancoragem.

OBJ_ELLIOTWAVE5

Onda Motriz de Elliott

Dois pontos para Ancoragem.

OBJ_ELLIOTWAVE3

Onde de Correo de Elliott

Trs pontos para Ancoragem.

OBJ_RECTANGLE

Rectangle

Dois pontos para Ancoragem.

OBJ_TRIANGLE

Triangle

Trs pontos para Ancoragem.

OBJ_ELLIPSE

Ellipse

Trs pontos para Ancoragem.

OBJ_ARROW_THUMB_UP

Polegares para cima

Um ponto de ancoragem.

OBJ_ARROW_THUMB_DOWN

Polegar para Baixo

Um ponto de ancoragem.

OBJ_ARROW_UP

Seta para cima

Um ponto de ancoragem.

OBJ_ARROW_DOWN

Seta para baixo

Um ponto de ancoragem.

OBJ_ARROW_STOP

Sinal Stop

Um ponto de ancoragem.

OBJ_ARROW_CHECK

Conferido

Um ponto de ancoragem.

OBJ_ARROW_LEFT_PRICE

Etiqueta de Preo Esquerda

Um ponto de ancoragem.

OBJ_ARROW_RIGHT_PRICE

Rtulo de Preo Direito

Um ponto de ancoragem.

OBJ_ARROW_BUY

Comprar

Um ponto de ancoragem.

OBJ_ARROW_SELL

Vender

Um ponto de ancoragem.

OBJ_ARROW

Seta

Um ponto de ancoragem.

OBJ_TEXT

Text

Um ponto de ancoragem.

OBJ_LABEL

Rtulo

Posio ser definida usando


as
propriedades
OBJPROP_XDISTANCE
e
OBJPROP_YDISTANCE.

OBJ_BUTTON

Boto

Posio ser definida usando


as
propriedades
OBJPROP_XDISTANCE
e
OBJPROP_YDISTANCE.

OBJ_CHART

Grfico

Posio ser definida usando


as
propriedades
OBJPROP_XDISTANCE
e
OBJPROP_YDISTANCE.

OBJ_BITMAP

Bitmap

Um ponto de ancoragem.

OBJ_BITMAP_LABEL

Rtulo Bitmap

Posio ser definida usando

2000-2015, MetaQuotes Software Corp.

1507

Funes de Objeto

as
propriedades
OBJPROP_XDISTANCE
e
OBJPROP_YDISTANCE.
OBJ_EDIT

Edit

Posio ser definida usando


as
propriedades
OBJPROP_XDISTANCE
e
OBJPROP_YDISTANCE.

OBJ_EVENT

O
objeto
"Evento"
correspondendo a um evento
no calendrio econmico

Um ponto de ancoragem.
Efetivamente
apenas
as
coordenadas de tempo so
usadas.

OBJ_RECTANGLE_LABEL

O objeto "Rtulo de Retngulo"


para criao e design de
interface grfico customizada.

Posio ser definida usando


as
propriedades
OBJPROP_XDISTANCE
e
OBJPROP_YDISTANCE.

2000-2015, MetaQuotes Software Corp.

1508

Funes de Objeto

ObjectName
A funo retorna o nome do objeto correspondente no grfico determinado, na sub-janela especfica,
de tipo especfico.
string ObjectName(
long chart_id,

// identificador grfico

int

pos,

// nmero da lista de objetos

int

sub_window=-1,

// ndice janela

int

type=-1

// tipo objeto

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
pos
[in] Nmero ordinal do objeto de acordo com o filtro especfico pelo nmero e tipo de sub-janela.
sub_window=-1
[in] Nmero de sub-janela do grfico. 0 significa janela do grfico principal, -1 significa todas
sub-janelas do grfico, incluindo a janela principal.
type=-1
[in] Tipo de objeto. O valor pode ser um dos valores do enumerador ENUM_OBJECT. -1 significa
todos os tipos.
Valor do Retorno
Nome do objeto retornado em caso de sucesso.
Observao
Quando um objeto renomeado, dois eventos so formados simultaneamente. Estes eventos podem
ser manipulados em um Expert Advisor ou o indicador pela funo OnChartEvent():
um evento de excluso de um objeto com o nome antigo;
um evento de criao de um objeto com um novo nome.

2000-2015, MetaQuotes Software Corp.

1509

Funes de Objeto

ObjectDelete
A funo remove o objeto com nome especfico a partir de um grfico especificado.
bool ObjectDelete(
long

chart_id,

string name

// identificador grfico
// nome objeto

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
name
[in] Nome do objeto para ser deletado.
Valor do Retorno
Retorna verdadeiro se a remoo for bem sucedida, caso contrrio, retorna false. Para ler mais
sobre o erro, chamar GetLastError().
Observao
Quando um objeto renomeado, dois eventos so formados simultaneamente. Estes eventos podem
ser manipulados em um Expert Advisor ou o indicador pela funo OnChartEvent():
um evento de excluso de um objeto com o nome antigo;
um evento de criao de um objeto com um novo nome.

2000-2015, MetaQuotes Software Corp.

1510

Funes de Objeto

ObjectsDeleteAll
Remove todos os objetos a partir de um grfico especfico, especfica sub-janela do grfico, do tipo
especificado.
int ObjectsDeleteAll(
long chart_id,

// identificador grfico

int

sub_window=-1,

// ndice janela

int

type=-1

// tipo objeto

);

Removes all objects of the specified type using prefix in object names.
int ObjectsDeleteAll(
long

chart_id,

const string
int
int

prefix,

sub_window=-1,
object_type=-1

// chart ID
// prefix in object name
// window index
// object type

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
prefix
[in] Prefix in object names. All objects whose names start with this set of characters will be
removed from chart. You can specify prefix as 'name' or 'name*' both variants will work the same.
If an empty string is specified as the prefix, objects with all possible names will be removed.
sub_window=-1
[in] Nmero de sub-janelas do grfico. 0 significa janela do grfico principal, -1 significa todas
sub-janelas do grfico, incluindo a janela principal.
type=-1
[in] Tipo de objeto. O valor pode ser um dos valores do enumerador ENUM_OBJECT. -1 significa
todos os tipos.
Valor do Retorno
Retorna o nmero de objetos excludos. Para ler mais sobre o erro, chamar GetLastError().

2000-2015, MetaQuotes Software Corp.

1511

Funes de Objeto

ObjectFind
A funo pesquisa por um objeto com o nome especfico no grfico com o ID especifico.
int ObjectFind(
long

chart_id,

string name

// identificador grfico
// nome objeto

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
name
[in] O nome do objeto pesquisado.
Valor do Retorno
Se for bem sucedido, a funo retorna o nmero da sub-janela (0 significa a janela principal do
grfico), no qual o objeto foi encontrado. Se o objeto no for encontrado, a funo retorna um
nmero negativo. Para ler mais sobre o erro, chamar GetLastError().
Observao
Quando um objeto renomeado, dois eventos so formados simultaneamente. Estes eventos podem
ser manipulados em um Expert Advisor ou o indicador pela funo OnChartEvent():
um evento de excluso de um objeto com o nome antigo;
um evento de criao de um objeto com um novo nome.

2000-2015, MetaQuotes Software Corp.

1512

Funes de Objeto

ObjectGetTimeByValue
A funo retorna o valor de tempo para o valor do preo especfico de um objeto especfico.
datetime ObjectGetTimeByValue(
long

chart_id,

// identificador grfico

string name,

// nome objeto

double value,

// Preo

int

// Nmero linha

line_id

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
name
[in] Nome do objeto.
value
[in] Valor do preo.
line_id
[in] Identificador de linha.
Valor do Retorno
O valor de tempo para o valor de determinado preo de um objeto especfico.
Observao
Um objeto pode ter vrios valores em uma coordenada de preo, portanto necessrio especificar o
nmero da linha. Esta funo aplica-se apenas aos seguintes objetos:
Linha de Tendncia (OBJ_TREND)
Linha de tendncia pelo ngulo (OBJ_TRENDBYANGLE)
Linha de Gann(OBJ_GANNLINE)
Canal eqidistante (OBJ_CHANNEL) - 2 linhas
Canal de regresso Linear (OBJ_REGRESSION) - 3 linhas
Canal de desvio padro (OBJ_STDDEVCHANNEL) - 3 linhas
Linha com setas (OBJ_ARROWED_LINE)
Tambm Veja
Tipos de Objeto

2000-2015, MetaQuotes Software Corp.

1513

Funes de Objeto

ObjectGetValueByTime
A funo retorna o valor do preo para o valor de tempo indicado de um objeto especfico.
double ObjectGetValueByTime(
long

chart_id,

// identificador grfico

string

name,

// nome objeto

datetime time,

// Tempo

int

// Nmero Linha

line_id

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
name
[in] Nome do objeto.
time
[in] Valor de tempo.
line_id
[in] ID de Linha.
Valor do Retorno
O valor do preo para o valor de tempo indicado de um objeto especfico.
Observao
Um objeto pode ter vrios valores em uma coordenada de preo, portanto necessrio especificar o
nmero da linha. Esta funo aplica-se apenas aos seguintes objetos:
Linha de Tendncia (OBJ_TREND)
Linha de tendncia pelo ngulo (OBJ_TRENDBYANGLE)
Linha de Gann(OBJ_GANNLINE)
Canal eqidistante (OBJ_CHANNEL) - 2 linhas
Canal de regresso Linear (OBJ_REGRESSION) - 3 linhas
Canal de desvio padro (OBJ_STDDEVCHANNEL) - 3 linhas
Linha com setas (OBJ_ARROWED_LINE)
Tambm Veja
Tipos de Objeto

2000-2015, MetaQuotes Software Corp.

1514

Funes de Objeto

ObjectMove
A funo altera as coordenadas do ponto de ancoragem do objeto especfico.
bool ObjectMove(
long

chart_id,

// identificador grfico

string

name,

// nome objeto

int

point_index,

// nmero ponto ancoragem

datetime time,

// Tempo

double

// Preo

price

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
name
[in] Nome do objeto.
point_index
[in] ndice do ponto de ancoragem. O nmero de pontos de ancoragem depende do tipo de objeto.
time
[in] Coordenada de tempo do ponto de ancoragem selecionado.
price
[in] Coordenada de preo do ponto de ancoragem selecionado.
Valor do Retorno
Se bem sucedido, retorna true, em caso de falha, retorna false. Para ler mais sobre o erro, chamar
GetLastError().

2000-2015, MetaQuotes Software Corp.

1515

Funes de Objeto

ObjectsTotal
A funo retorna o nmero de objetos na tabela determinada, sub-janela especifica, do tipo
especificado.
int ObjectsTotal(
long chart_id,

// identificador grfico

int

sub_window=-1,

// ndice janela

int

type=-1

// tipo objeto

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
sub_window=-1
[in] Nmero de sub-janela do grfico. 0 significa janela do grfico principal, -1 significa todas
sub-janelas do grfico, incluindo a janela principal.
type=-1
[in] Tipo de objeto. O valor pode ser um dos valores do enumerador ENUM_OBJECT. -1 significa
todos os tipos.
Valor do Retorno
O nmero de objetos.

2000-2015, MetaQuotes Software Corp.

1516

Funes de Objeto

ObjectSetDouble
A funo define o valor da propriedade do objeto correspondente. A propriedade objeto deve ser do
tipo double. Existem 2 variantes da funo.
Define valor da propriedade, sem modificador
bool ObjectSetDouble(
long

chart_id,

// identificador Grfico

string name,

// nome objeto

int

// propriedade

prop_id,

double prop_value

// valor

);

Define um valor de propriedade que indica o modificador


bool ObjectSetDouble(
long

chart_id,

// identificador Grfico

string name,

// nome objeto

int

prop_id,

// propriedade

int

prop_modifier,

// modificador

double prop_value

// valor

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
name
[in] Nome do objeto.
prop_id
[in]
ID da propriedade do objeto. O valor pode ser um dos valores do enumerador
ENUM_OBJECT_PROPERTY_DOUBLE.
prop_modifier
[in] Modificador da propriedade especfica. Ela indica o nmero do nvel em ferramentas
Fibonacci e no objeto grfico Tridente de Andrew. A numerao dos nveis comea a partir do
zero.
prop_value
[in] O valor da propriedade.
Valor do Retorno
A funo retorna true somente se o comando para alterar as propriedades de um objeto grfico foi
enviado a um grfico com sucesso. Do contrrio ele retorna false. Para ler mais sobre o erro,
chamar GetLastError().
Exemplo de criao de um objeto Fibonacci e adicionando um novo nvel nele
//| Programa Script da funo start (iniciar)

2000-2015, MetaQuotes Software Corp.

1517

Funes de Objeto
//+------------------------------------------------------------------+
void OnStart()
{
//--- arrays auxiliares
double high[],low[],price1,price2;
datetime time[],time1,time2;
//--- Copiar os preos de abertura - 100 barras mais recentes so suficientes
int copied=CopyHigh(Symbol(),0,0,100,high);
if(copied<=0)
{
Print("Falha ao copiar os valores da srie de preos de Alta");
return;
}
//--- Copiar os preo de fechamento - mais de 100 barras so suficientes
copied=CopyLow(Symbol(),0,0,100,low);
if(copied<=0)
{
Print("Falha ao copiar os valores da srie de preos de Baixa");
return;
}
//--- Copiar os tempos de abertura para as ltimas 100 barras
copied=CopyTime(Symbol(),0,0,100,time);
if(copied<=0)
{
Print("Falha ao copiar os valores da srie de preos de tempo");
return;
}
//--- Organizar o acesso aos dados copiados como para timeseries - retrocesso
ArraySetAsSeries(high,true);
ArraySetAsSeries(low,true);
ArraySetAsSeries(time,true);
//--- Coordenadas do primeiro ponto de ancoragem do objeto Fibo
price1=high[70];
time1=time[70];
//--- Coordenadas do segundo ponto de ancoragem do objeto Fibo
price2=low[50];
time2=time[50];
//--- Tempo para criar o objeto Fibo
bool created=ObjectCreate(0,"Fibo",OBJ_FIBO,0,time1,price1,time2,price2);
if(created) // Se o objeto for criado com sucesso
{
//--- definir a cor dos nveis de Fibo
ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,Blue);
//--- a propsito, quanto nveis Fibo temos?
int levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
Print("Fibo levels before = ",levels);
//---sada para Jornal => nmero de nvel: valor level_desription

2000-2015, MetaQuotes Software Corp.

1518

Funes de Objeto
for(int i=0;i<levels;i++)
{
Print(i,": ",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,i),
"

",ObjectGetString(0,"Fibo",OBJPROP_LEVELTEXT,i));

}
//--- Tentar aumentar o nmero de nveis por unidade
bool modified=ObjectSetInteger(0,"Fibo",OBJPROP_LEVELS,levels+1);
if(!modified) // falha ao alterar o nmero de nveis
{
Print("Falhou ao alterar o nmero de nveis da Fibo, erro ",GetLastError());
}
//--- apenas informa
Print("Nveis de Fibo depois = ",ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS));
//--- definir um valor para um nvel recm-criado
bool added=ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,levels,133);
if(added) // conseguiu definir um valor para o nvel
{
Print("Definido com sucesso mais um nvel Fibo");
//--- Tambm no se esquea de definir o nvel da descrio
ObjectSetString(0,"Fibo",OBJPROP_LEVELTEXT,levels,"my level");
ChartRedraw(0);
//--- Obter o valor real do nmero de nveis no objeto Fibo
levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
Print("Nveis de Fibo depois de adicionar = ",levels);
//--- mais uma vez a sada de todos os nveis - s para ter certeza
for(int i=0;i<levels;i++)
{
Print(i,":",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,i),
"

",ObjectGetString(0,"Fibo",OBJPROP_LEVELTEXT,i));

}
}
else // Falha se voc tentar aumentar o nmero de nveis no objeto Fibo
{
Print("Falhou ao definir mais um nvel Fibo. Error ",GetLastError());
}
}
}

Tambm Veja
Tipos de Objetos, Propriedades de objeto

2000-2015, MetaQuotes Software Corp.

1519

Funes de Objeto

ObjectSetInteger
A funo define o valor da propriedade do objeto correspondente. A propriedade do objeto deve ser do
tipo datetime,int,color,boolouchar. Existem 2 variantes da funo.
Define valor da propriedade, sem modificador
bool ObjectSetInteger(
long

chart_id,

// identificador Grfico

string name,

// nome objeto

int

prop_id,

// propriedade

long

prop_value

// valor

);

Define um valor de propriedade que indica o modificador


bool ObjectSetInteger(
long

chart_id,

// identificador Grfico

string name,

// nome objeto

int

prop_id,

// propriedade

int

prop_modifier,

// modificador

long

prop_value

// valor

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
name
[in] Nome do objeto.
prop_id
[in]
ID da propriedade do objeto. O valor pode ser um dos valores do enumerador
ENUM_OBJECT_PROPERTY_INTEGER.
prop_modifier
[in] Modificador da propriedade especfica. Indica o nmero do nvel em ferramentas Fibonacci e
no objeto grfico do tipo Tridente de Andrew. A numerao dos nveis comea a partir do zero.
prop_value
[in] O valor da propriedade.
Valor do Retorno
A funo retorna true somente se o comando para alterar as propriedades de um objeto grfico foi
enviado a um grfico com sucesso. Do contrrio ele retorna false. Para ler mais sobre o erro,
chamar GetLastError().
Um exemplo de como criar uma tabela de cores da Web
//+------------------------------------------------------------------+
//|

Tabela de Cores da Web|

2000-2015, MetaQuotes Software Corp.

1520

Funes de Objeto
//|

Copyright 2011, MetaQuotes Software Corp |

//|

http://www.metaquotes.net |

//+------------------------------------------------------------------+
#define X_SIZE 140

// largura de uma edio de objeto

#define Y_SIZE 33

// altura de uma edio de objeto

//+------------------------------------------------------------------+
//| Array de cores da Web

//+------------------------------------------------------------------+
color ExtClr[140]=
{

clrAliceBlue,clrAntiqueWhite,clrAqua,clrAquamarine,clrAzure,clrBeige,clrBisque,clrBlack,clrBlanc

clrBlue,clrBlueViolet,clrBrown,clrBurlyWood,clrCadetBlue,clrChartreuse,clrChocolate,clrCoral,clr

clrCornsilk,clrCrimson,clrCyan,clrDarkBlue,clrDarkCyan,clrDarkGoldenrod,clrDarkGray,clrDarkGreen

clrDarkMagenta,clrDarkOliveGreen,clrDarkOrange,clrDarkOrchid,clrDarkRed,clrDarkSalmon,clrDarkSea

clrDarkSlateBlue,clrDarkSlateGray,clrDarkTurquoise,clrDarkViolet,clrDeepPink,clrDeepSkyBlue,clrD

clrDodgerBlue,clrFireBrick,clrFloralWhite,clrForestGreen,clrFuchsia,clrGainsboro,clrGhostWhite,c

clrGoldenrod,clrGray,clrGreen,clrGreenYellow,clrHoneydew,clrHotPink,clrIndianRed,clrIndigo,clrIv

clrLavender,clrLavenderBlush,clrLawnGreen,clrLemonChiffon,clrLightBlue,clrLightCoral,clrLightCya

clrLightGoldenrod,clrLightGreen,clrLightGray,clrLightPink,clrLightSalmon,clrLightSeaGreen,clrLig

clrLightSlateGray,clrLightSteelBlue,clrLightYellow,clrLime,clrLimeGreen,clrLinen,clrMagenta,clrM

clrMediumAquamarine,clrMediumBlue,clrMediumOrchid,clrMediumPurple,clrMediumSeaGreen,clrMediumSla

clrMediumSpringGreen,clrMediumTurquoise,clrMediumVioletRed,clrMidnightBlue,clrMintCream,clrMisty

clrNavajoWhite,clrNavy,clrOldLace,clrOlive,clrOliveDrab,clrOrange,clrOrangeRed,clrOrchid,clrPale

clrPaleGreen,clrPaleTurquoise,clrPaleVioletRed,clrPapayaWhip,clrPeachPuff,clrPeru,clrPink,clrPlu

clrPurple,clrRed,clrRosyBrown,clrRoyalBlue,clrSaddleBrown,clrSalmon,clrSandyBrown,clrSeaGreen,cl

clrSienna,clrSilver,clrSkyBlue,clrSlateBlue,clrSlateGray,clrSnow,clrSpringGreen,clrSteelBlue,clr

clrThistle,clrTomato,clrTurquoise,clrViolet,clrWheat,clrWhite,clrWhiteSmoke,clrYellow,clrYellowG
};
//+------------------------------------------------------------------+
//| Criando e inicializando uma edio de objeto

//+------------------------------------------------------------------+
void CreateColorBox(int x,int y,color c)
{
//--- gerar um nome para uma nova edio de objeto
string name="ColorBox_"+(string)x+"_"+(string)y;
//--- criar uma nova edio de objeto
if(!ObjectCreate(0,name,OBJ_EDIT,0,0,0))
{
Print("No possvel criar: '",name,"'");
return;
}
//--- definir coordenadas, largura e altura
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x*X_SIZE);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y*Y_SIZE);
ObjectSetInteger(0,name,OBJPROP_XSIZE,X_SIZE);
ObjectSetInteger(0,name,OBJPROP_YSIZE,Y_SIZE);
//--- definir a cor do texto
if(clrBlack==c) ObjectSetInteger(0,name,OBJPROP_COLOR,clrWhite);
else

ObjectSetInteger(0,name,OBJPROP_COLOR,clrBlack);

2000-2015, MetaQuotes Software Corp.

1521

Funes de Objeto
//--- definir a cor de fundo
ObjectSetInteger(0,name,OBJPROP_BGCOLOR,c);
//--- definir o texto
ObjectSetString(0,name,OBJPROP_TEXT,(string)c);
}
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- criar tabela de cores 7x20 para edio de objetos
for(uint i=0;i<140;i++)
CreateColorBox(i%7,i/7,ExtClr[i]);
}

Tambm Veja
Tipos de Objetos, Propriedades de objeto

2000-2015, MetaQuotes Software Corp.

1522

Funes de Objeto

ObjectSetString
A funo define o valor da propriedade do objeto correspondente. A propriedade do objeto deve ser do
tipo string. Existem 2 variantes da funo.
Define valor da propriedade, sem modificador
bool ObjectSetString(
long

chart_id,

// identificador Grfico

string name,

// nome objeto

int

// propriedade

prop_id,

string prop_value

// valor

);

Define um valor de propriedade que indica o modificador


bool ObjectSetString(
long

chart_id,

// identificador Grfico

string name,

// nome objeto

int

prop_id,

// propriedade

int

prop_modifier,

// modificador

string prop_value

// valor

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
name
[in] Nome do objeto.
prop_id
[in]
ID da propriedade do objeto. O valor pode ser um dos valores do enumerador
ENUM_OBJECT_PROPERTY_STRING.
prop_modifier
[in] Modificador da propriedade especfica. Indica o nmero do nvel em ferramentas Fibonacci e
no objeto grfico do tipo Tridente de Andrew. A numerao dos nveis comea a partir do zero.
prop_value
[in] O valor da propriedade.
Valor do Retorno
A funo retorna true somente se o comando para alterar as propriedades de um objeto grfico foi
enviado a um grfico com sucesso. Do contrrio ele retorna false. Para ler mais sobre o erro,
chamar GetLastError().
Observao
Quando um objeto renomeado, dois eventos so formados simultaneamente. Estes eventos podem
ser manipulados em um Expert Advisor ou o indicador pela funo OnChartEvent():

2000-2015, MetaQuotes Software Corp.

1523

Funes de Objeto
um evento de excluso de um objeto com o nome antigo;
um evento de criao de um objeto com um novo nome.

2000-2015, MetaQuotes Software Corp.

1524

Funes de Objeto

ObjectGetDouble
A funo retorna o valor da propriedade do objeto correspondente. A propriedade objeto deve ser do
tipo double. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
double ObjectGetDouble(
long

chart_id,

// identificador Grfico

string name,

// nome objeto

int

prop_id,

// identificador propriedade

int

prop_modifier=0

// modificador propriedade, se requerida

);

2. Retorna true ou false, dependendo do sucesso da funo. Se bem sucedido, o valor da


propriedade colocado para receber uma varivel passada como referncia pelo ltimo parmetro.
bool ObjectGetDouble(
long

chart_id,

// identificador Grfico

string name,

// nome objeto

int

prop_id,

// identificador propriedade

int

prop_modifier,

// modificador propriedade

double&double_var

// aqui ns aceitamos o valor da propriedade

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
name
[in] Nome do objeto.
prop_id
[in]
ID da propriedade do objeto. O valor pode ser um dos valores do enumerador
ENUM_OBJECT_PROPERTY_DOUBLE.
prop_modifier
[in] Modificador da propriedade especfica. Para a primeira variante, o modificador tem valor
padro igual a 0. A maioria das propriedades no requerem um modificador. Indica o nmero do
nvel em ferramentas Fibonacci e no objeto grfico do tipo Tridente de Andrew. A numerao dos
nveis comea a partir do zero.
double_var
[out] Varivel do tipo double que recebeu o valor do propriedade solicitada.
Valor do Retorno
Valor do tipo double para a primeira variante chamada.
Para a segunda variante, se essa propriedade mantida e o valor foi colocado na varivel
double_var, a funo retorna true, caso contrrio, retorna false. Para ler mais sobre o erro, chamar
GetLastError().

2000-2015, MetaQuotes Software Corp.

1525

Funes de Objeto

ObjectGetInteger
A funo retorna o valor da propriedade do objeto correspondente. A propriedade do objeto deve ser
do tipo datetime,int,color,boolouchar. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
long ObjectGetInteger(
long

chart_id,

// identificador Grfico

string name,

// nome objeto

int

prop_id,

// identificador propriedade

int

prop_modifier=0

// modificador de propriedade, se requerida

);

2. Retorna true ou false, dependendo do sucesso da funo. Se bem sucedido, o valor da


propriedade colocado para receber uma varivel passada como referncia pelo ltimo parmetro.
bool ObjectGetInteger(
long

chart_id,

// identificador Grfico

string name,

// nome objeto

int

prop_id,

// identificador propriedade

int

prop_modifier,

// modificador propriedade

long&

long_var

// aqui ns aceitamos o valor da propriedade

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
name
[in] Nome do objeto.
prop_id
[in]
ID da propriedade do objeto. O valor pode ser um dos valores do enumerador
ENUM_OBJECT_PROPERTY_INTEGER.
prop_modifier
[in] Modificador da propriedade especfica. Para a primeira variante, o modificador tem valor
padro igual a 0. A maioria das propriedades no requerem um modificador. Indica o nmero do
nvel em ferramentas Fibonacci e no objeto grfico do tipo Tridente de Andrew. A numerao dos
nveis comea a partir do zero.
long_var
[out] Varivel do tipo long que recebe o valor da propriedade requisitada.
Valor do Retorno
O valor long para a primeira chamada da variante.
A funo retorna true para a segunda variante, se essa propriedade for mantida e o valor foi
colocado na varivel long_var, caso contrrio, retorna false. Para ler mais sobre o erro, chamar
GetLastError().

2000-2015, MetaQuotes Software Corp.

1526

Funes de Objeto

ObjectGetString
A funo retorna o valor da propriedade do objeto correspondente. A propriedade do objeto deve ser
do tipo string. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
string ObjectGetString(
long

chart_id,

// identificador Grfico

string name,

// nome objeto

int

prop_id,

// identificador propriedade

int

prop_modifier=0

// modificador de propriedade, se requisitada

);

2. Retorna true ou false, dependendo do sucesso da funo. Se bem sucedido, o valor da


propriedade colocado para receber uma varivel passada como referncia pelo ltimo parmetro.
bool ObjectGetString(
long

chart_id,

// identificador Grfico

string name,

// nome objeto

int

prop_id,

// identificador propriedade

int

prop_modifier,

// modificador propriedade

string&string_var

// aqui ns aceitamos o valor da propriedade

);

Parmetros
chart_id
[in] Identificador do grfico. Significa o grfico atual.
name
[in] Nome do objeto.
prop_id
[in]
ID da propriedade do objeto. O valor pode ser um dos valores do enumerador
ENUM_OBJECT_PROPERTY_STRING.
prop_modifier
[in] Modificador da propriedade especfica. Para a primeira variante, o modificador tem valor
padro igual a 0. A maioria das propriedades no requerem um modificador. Indica o nmero do
nvel em ferramentas Fibonacci e no objeto grfico do tipo Tridente de Andrew. A numerao dos
nveis comea a partir do zero.
string_var
[out] Varivel do tipo string que recebe o valor das propriedades requisitadas.
Valor do Retorno
Valor string para a primeira verso da chamada.
Retorna true para a segunda verso da chamada, se essa propriedade for mantida e o valor foi
colocado na varivel string_var, caso contrrio, retorna false. Para ler mais sobre o erro, chamar
GetLastError().

2000-2015, MetaQuotes Software Corp.

1527

Funes de Objeto

Observao
Quando um objeto renomeado, dois eventos so formados simultaneamente. Estes eventos podem
ser manipulados em um Expert Advisor ou o indicador pela funo OnChartEvent():
um evento de excluso de um objeto com o nome antigo;
um evento de criao de um objeto com um novo nome.

2000-2015, MetaQuotes Software Corp.

1528

Funes de Objeto

TextSetFont
A funo define a fonte para exibir o texto usando mtodos de desenho e retorna o resultado dessa
operao. Fonte Arial com o tamanho -120 (12 pt) usado por padro.
bool TextSetFont(
const string
int

name,

// nome da fonte ou caminho para o arquivo da fonte no disco

size,

// tamanho da fonte

uint

flags,

// combinao de sinalizadores

int

orientation=0

// ngulo de inclinao do texto

);

Parmetros
name
[in] Nome da fonte no sistema ou o nome do recurso contendo a fonte ou o caminho ao arquivo da
fonte no disco.
size
[in] O tamanho da fonte, que pode ser definida usando valores positivos e negativos. No caso de
valores negativos, o valor definido em dcimos de um ponto e o tamanho do texto depende das
configuraes do sistema operacional ("escala padro" ou "grande escala"). No caso de valores
negativos, o valor definido em dcimos de um ponto e o tamanho do texto depende das
configuraes do sistema operacional ("escala padro" ou "grande escala"). Veja a Nota abaixo
para mais informaes sobre as diferenas entre os modos.
flags
[in] Combinao de sinalizadores descrevendo o estilo da fonte.
orientation
[in] Inclinao horizontal do texto em relao ao eixo X, a unidade de medida 0,1 grau. Isso
significa que orientao=450 est para inclinao igual a 45 graus.
Valor de retorno
Retorna verdadeiro se a fonte atual instalado com xito, caso contrrio falso. Possibilidade de
erros de cdigos:
ERR_INVALID_PARAMETER(4003) - name apresenta NULL ou"" (string vazia),
ERR_INTERNAL_ERROR(4001) - erro de sistema operacional (por exemplo, uma tentativa de criar
uma fonte inexistente).
Observao
Se "::" usado em nome da fonte, a fonte baixada do recurso EX5. Se name nome da fonte
especificado com uma extenso, a fonte baixada do arquivo, se o caminho comea com "\" ou "/",
o arquivo procurado em relao ao diretrio MQL5. Caso contrrio, ele procurado em relao ao
caminho do arquivo EX5 que chamou a funo TextSetFont().
O tamanho da fonte definido usando valores positivos ou negativos. Esse fato define a
dependncia do tamanho do texto a partir das configuraes do sistema operacional (escala de
tamanho).
Se o tamanho especificado por um nmero positivo, este tamanho transformado em unidades
de medidas fsicas de um dispositivo (pixels) quando se muda de uma fonte lgica para uma fsica,
2000-2015, MetaQuotes Software Corp.

1529

Funes de Objeto
e este tamanho corresponde altura dos smbolos glifos escolhidos entre as fontes disponveis.
Este caso no recomendado quando os textos exibidos pela funo TextOut() e os exibidos pelo
OBJ_LABEL ("Etiquetas"), onde objetos grfico esto a ser utilizados em conjunto no grfico.
Se o tamanho determinado por um nmero negativo, este nmero deve ser definido em dcimos
de um ponto lgico (-350 igual a 35 pontos lgicos) dividido em 10. Um valor obtido ento
transformado em unidades de medidas fsicas de um dispositivo (pixels) e corresponde ao valor
absoluto da altura de um smbolo escolhido a partir das fontes disponveis. Multiplicar o do
tamanho de fonte determinada nas propriedades do objeto por -10 para tornar o tamanho de um
texto na tela semelhante ao de um objeto OBJ_LABEL.
Os sinalizadores podem ser usados com a combinao de sinalizadores de estilo com um dos
sinalizadores especificando a largura da fonte. Nome dos sinalizadores so mostrados abaixo.
Sinalizadores para especificar o estilo da fonte
Flag

Description

FONT_ITALIC

Itlico

FONT_UNDERLINE

Sublinhado

FONT_STRIKEOUT

Riscado

Sinalizadores para especificar a largura da fonte


Flag
FW_DONTCARE
FW_THIN
FW_EXTRALIGHT
FW_ULTRALIGHT
FW_LIGHT
FW_NORMAL
FW_REGULAR
FW_MEDIUM
FW_SEMIBOLD
FW_DEMIBOLD
FW_BOLD
FW_EXTRABOLD
FW_ULTRABOLD
FW_HEAVY
FW_BLACK
Tambm Veja

2000-2015, MetaQuotes Software Corp.

1530

Funes de Objeto
Recursos, ResourceCreate(), ResourceSave(), TextOut()

2000-2015, MetaQuotes Software Corp.

1531

Funes de Objeto

TextOut
A funo exibe um texto num array personalizado (buffer) e retorna o resultado dessa operao. O
array projetado para criar o recurso grfico.
bool TextOut(
const string

text,

// texto exibido

int

x,

// coordenada X

y,

// coordenada Y

int
uint

anchor,

// tipo de ncora

uint

&data[],

// buffer de sada

uint

width,

// largura de buffer em pixels

uint

height,

// altura de buffer em pixels

uint

color,

// cor do texto

color_format

// formato de cor para a sada

ENUM_COLOR_FORMAT
);

Parmetros
text
[in] Texto exibido que ser escrito para o buffer. Somente o texto de uma linha exibido.
x
[in] Coordenada X do ponto de ancoragem do texto exibido.
y
[in] Coordenada Y do ponto de ancoragem do texto exibido.
anchor
[in] O valor de sada dos 9 mtodos pr-definidos de localizao do ponto de ancoragem do texto
exibido. O valor definido por uma combinao de dois sinalizadores - sinalizadores de
alinhamento de texto horizontal e vertical. Nomes dos sinalizadores esto listados na Nota abaixo.
data[]
[in] Buffer, na qual o texto exibido. O buffer usado para criar o recurso grfico.
width
[in] Largura do buffer em pixels.
height
[in] Altura do buffer em pixels.
color
[in] Cor do texto.
color_format
[in] Formato de cor definida pelo valor do enumerador ENUM_COLOR_FORMAT.
Valor de retorno
Retorna true se bem sucedido, caso contrrio false.
Observao

2000-2015, MetaQuotes Software Corp.

1532

Funes de Objeto
Ponto de ancoragem determinado por anchor uma combinao de dois sinalizadores de
alinhamento de texto horizontal e vertical. Sinalizador de alinhamento de texto horizontal:
TA_LEFT ponto de ancoragem no lado esquerdo da caixa delimitada
TA_CENTER ponto de ancoragem horizontal localiza-se no centro da caixa delimitada
TA_RIGHT ponto de ancoragem no lado direito da caixa delimitada
Sinalizador de alinhamento de texto vertical:
TA_TOP ponto de ancoragem no lado superior da caixa delimitada
TA_VCENTER ponto de ancoragem verticais est localizado no centro da caixa delimitada
TA_BOTTOM ponto de ancoragem no lado inferior da caixa delimitada
Combinaes possveis de sinalizadores e pontos de ancoragem determinados so mostrados na
imagem.

Exemplo:
//--- largura e altura da tela (usado para o desenho)
#define IMG_WIDTH

200

#define IMG_HEIGHT 200


//--- exibir a janela de parmetro antes de lanar o script
#property script_show_inputs
//--- permite definir o formato de cor
input ENUM_COLOR_FORMAT clr_format=COLOR_FORMAT_XRGB_NOALPHA;
//--- array de desenho (buffer)
uint ExtImg[IMG_WIDTH*IMG_HEIGHT];
//+------------------------------------------------------------------+
//| Programa Script da funo start (iniciar)

//+------------------------------------------------------------------+
void OnStart()
{
//--- criar o objeto OBJ_BITMAP_LABEL para desenhar
ObjectCreate(0,"RELGIO",OBJ_BITMAP_LABEL,0,0,0);
//--- especificar o nome do recurso grfico para escrever no objeto RELGIO
ObjectSetString(0,"RELGIO",OBJPROP_BMPFILE,"::IMG");
//--- variveis auxiliares
double a;

// seta no canto

uint

nm=2700;

// minutos no canto

uint

nh=2700*12;

// horas no canto

uint

w,h;

// variveis para receber string de tamanhos de texto

2000-2015, MetaQuotes Software Corp.

1533

Funes de Objeto
int

x,y;

// variveis para o clculo das coordenadas atuais da string de texto dos p

//--- girar ponteiros do relgio em um loop infinito, at que o script seja interrompido
while(!IsStopped())
{
//--- limpar o buffer do array do desenho do relgio
ArrayFill(ExtImg,0,IMG_WIDTH*IMG_HEIGHT,0);
//--- definir a fonte para desenhar dgitos para o rosto do relgio
TextSetFont("Arial",-200,FW_EXTRABOLD,0);
//--- desenhar a face do relgio
for(int i=1;i<=12;i++)
{
//--- receber o tamanho da hora atual sobre a face do relgio
TextGetSize(string(i),w,h);
//--- calcular as coordenadas da hora atual sobre a face do relgio
a=-((i*300)%3600*M_PI)/1800.0;
x=IMG_WIDTH/2-int(sin(a)*80+0.5+w/2);
y=IMG_HEIGHT/2-int(cos(a)*80+0.5+h/2);
//--- sada da hora na face do relgio atravs do buffer ExtImg[]
TextOut(string(i),x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
}
//--- agora, especificar a fonte para desenhar o ponteiro dos minutos
TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nm%3600));
//--- receber o tamanho do ponteiro dos minutos
TextGetSize("----->",w,h);
//--- calcular as coordenadas do ponteiro dos minutos sobre a face do relgio
a=-(nm%3600*M_PI)/1800.0;
x=IMG_WIDTH/2-int(sin(a)*h/2+0.5);
y=IMG_HEIGHT/2-int(cos(a)*h/2+0.5);
//--- sada do ponteiro dos minutos na face do relgio atravs do buffer ExtImg[]
TextOut("----->",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
//--- agora, definir a fonte para desenhar o ponteiro dos minutos
TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nh/12%3600));
TextGetSize("==>",w,h);
//--- calcular as coordenadas do ponteiro das horas na face do relgio
a=-(nh/12%3600*M_PI)/1800.0;
x=IMG_WIDTH/2-int(sin(a)*h/2+0.5);
y=IMG_HEIGHT/2-int(cos(a)*h/2+0.5);
//--- sada do ponteiro das horas na face do relgio atravs do buffer ExtImg[]
TextOut("==>",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
//--- atualizar o recurso grfico
ResourceCreate("::IMG",ExtImg,IMG_WIDTH,IMG_HEIGHT,0,0,IMG_WIDTH,clr_format);
//--- forar a atualizao do grfico
ChartRedraw();
//--- aumentar os contadores da hora e minuto
nm+=60;
nh+=60;

2000-2015, MetaQuotes Software Corp.

1534

Funes de Objeto
//--- mantendo uma pequena pausa entre os quadros
Sleep(10);
}
//--- excluir o objeto RELGIO quando completar a operao do script
ObjectDelete(0,"CLOCK");
//--}

Tambm Veja
Recursos, ResourceCreate(), ResourceSave(), TextGetSize(), TextSetFont()

2000-2015, MetaQuotes Software Corp.

1535

Funes de Objeto

TextGetSize
A funo retorna a largura da linha e altura nas configuraes das fonte atuais.
bool TextGetSize(
const string

text,

// string de texto

uint&

width,

// largura do buffer em pixels

uint&

height

// altura de buffer em pixels

);

Parmetros
text
[in] String, para o qual deve ser obtido o comprimento e a largura.
width
[out] Parmetro de entrada para o recebimento da largura.
height
[out] Parmetro de entrada para o recebimento da altura.
Valor de retorno
Retorna true se bem sucedido, caso contrrio false. Possibilidade de erros de cdigos:
ERR_INTERNAL_ERROR(4001) - erro do sistema operacional.
Tambm Veja
Recursos, ResourceCreate(), ResourceSave(), TextSetFont(), TextOut()

2000-2015, MetaQuotes Software Corp.

1536

Indicadores Tcnicos

Funes Indicadores Tcnicos


Todas as funes, como iMA, iAC, iMACD, iIchimoku etc, tem uma cpia do indicador tcnico
correspondente criada no cache global do terminal do cliente. Se uma cpia do indicador com esses
parmetros j existe, a nova cpia no criada, e o contador de referncias para a cpia existente
aumenta.
Essas funes retornam o manipulador da cpia apropriada do indicador. Alm disso, usando este
manipulador, voc pode receber os dados calculados pelo indicador correspondente. Os dados do buffer
correspondentes (indicadores tcnicos contm dados calculados nos seus buffers internos, que podem
variar de 1 a 5, dependendo do indicador) podem ser copiados para um programa de MQL5 utilizando a
funo CopyBuffer().
Voc no pode consultar os dados do indicador diretamente aps ter sido criado, porque o clculo de
valores dos indicadores requer algum tempo, por isso melhor criar o indicador manipulando em
OnInit(). A Funo iCustom() cria o indicador personalizado correspondente, e retorna seu manipulador
no caso de ser criado com xito. Indicadores personalizadas podem conter at 512 buffers de
indicador, o contedo do qual pode tambm ser obtida atravs da funo CopyBuffer(), usando o
manipulador obtido.
Existe um mtodo universal para a criao qualquer indicador tcnico usando a funo
IndicatorCreate(). Esta funo aceita os seguintes dados como parmetros de entrada:
Nome do smbolo;
timeframe;
tipo de indicador para criar;
nmero de parmetros de entrada do indicador;
um array do tipo MqlParam contendo todos os parmetros de entrada necessrios.
A memria do computador pode ser liberada a partir de um indicador que no mais utilizado, usando
a funo IndicatorRelease(),onde o manipulador de indicador transmitido.
Nota. Chamada repetida da funo do indicador com os mesmos parmetros dentro de um MQL5programa no resulta num aumento mltiplo do contador de referncia, o contador ser aumentado
apenas uma vez por 1. No entanto, recomendado obter os manipuladores de indicadores em funo
OnInit() ou no construtor da classe, e ainda utilizar estes manipuladores em outras funes. O
contador de referncia diminui quando um MQL5-programa desinicializado.
Todas as funes de indicador tem pelo menos dois parmetros - o smbolo e o perodo. O NULL Valor
do smbolo significa o smbolo corrente, o valor 0 (zero) do perodo significa o prazo corrente.
Funo

Retorna o manipulador do indicador:

iAC

Accelerator Oscillator

iAD

Accumulation/Distribution

iADX

Average Directional Index

iADXWilder

Average Directional Index by Welles Wilder

iAlligator

Alligator

2000-2015, MetaQuotes Software Corp.

1537

Indicadores Tcnicos

iAMA

Adaptive Moving Average

iAO

Awesome Oscillator

iATR

Average True Range

iBearsPower

Bears Power

iBands

Bollinger Bands

iBullsPower

Bulls Power

iCCI

Commodity Channel Index

iChaikin

Chaikin Oscillator

iCustom

Custom indicator

iDEMA

Double Exponential Moving Average

iDeMarker

DeMarker

iEnvelopes

Envelopes

iForce

Force Index

iFractals

Fractals

iFrAMA

Fractal Adaptive Moving Average

iGator

Gator Oscillator

iIchimoku

Ichimoku Kinko Hyo

iBWMFI

Market Facilitation Index by Bill Williams

iMomentum

Momentum

iMFI

Money Flow Index

iMA

Moving Average

iOsMA

Moving Average of Oscillator (MACD histogram)

iMACD

Moving Averages Convergence-Divergence

iOBV

On Balance Volume

iSAR

Parabolic Stop And Reverse System

iRSI

Relative Strength Index

iRVI

Relative Vigor Index

iStdDev

Standard Deviation

iStochastic

Stochastic Oscillator

iTEMA

Triple Exponential Moving Average

iTriX

Triple Exponential Moving Averages Oscillator

iWPR

Williams' Percent Range

2000-2015, MetaQuotes Software Corp.

1538

Indicadores Tcnicos

iVIDyA

Variable Index DYnamic Average

iVolumes

Volumes

2000-2015, MetaQuotes Software Corp.

1539

Indicadores Tcnicos

iAC
A funo cria o Accelerator Oscillator num cach global do terminal do cliente e retorna seu
manipulador. Tem apenas um buffer.
int iAC(
string

symbol,

ENUM_TIMEFRAMES period

// smbolo nome
// perodo

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores do enumerador ENUM_TIMEFRAMES, 0 (zero)
significa o prazo corrente.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iAC.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iAC."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots

//--- plotagem do iAC


#property indicator_label1

"iAC"

#property indicator_type1

DRAW_COLOR_HISTOGRAM

#property indicator_color1

clrGreen, clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

2000-2015, MetaQuotes Software Corp.

1540

Indicadores Tcnicos
//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iAC,

// usar iAC

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iAC;

// tipo da funo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffers do indicador


double iACBuffer[];
double iACColors[];
//--- varivel para armazenamento do manipulador do indicador iAC
int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- ns manteremos o nmero de valores no indicador Accelerator Oscillator
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador
SetIndexBuffer(0,iACBuffer,INDICATOR_DATA);
SetIndexBuffer(1,iACColors,INDICATOR_COLOR_INDEX);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iAC)
handle=iAC(name,period);
else
handle=IndicatorCreate(name,period,IND_AC);
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)

2000-2015, MetaQuotes Software Corp.

1541

Indicadores Tcnicos
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iAC para o smbolo %s/%s, cdigo de er


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostrar o smbolo/prazo do indicador Accelerator Oscillator, calculado para
short_name=StringFormat("iAC(%s/%s)",name,EnumToString(period));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iAC
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o primeiro arranque do clculo do indicador, ou se o nmero de valores em que o indica

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- Se o array iACBuffer maior do que o nmero de valores no indicador iAC para smbolo/p
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

2000-2015, MetaQuotes Software Corp.

1542

Indicadores Tcnicos

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}

//--- preencher os arrays iACBuffer e iACColors com valores a partir do indicador Accelerator Oscil

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,
if(!FillArraysFromBuffer(iACBuffer,iACColors,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Accelerator Oscillator
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preenchendo buffers do indicador a partir do indicador iAC

//+------------------------------------------------------------------+
bool FillArraysFromBuffer(double &values[],

// valores do buffer do indicator Accelerator Os

double &color_indexes[], // buffer de cor(para armazenar o ndice das cor


int ind_handle,

// manipulador do indicador iAC

int amount

// nmero dos valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();
//--- preencher uma parte do array iACBuffer com valores a partir do buffer do indicador que tem o
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados a partir do indicador iAC, cdigo de erro %d",GetLastError


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- agora copiar o ndice de cores
if(CopyBuffer(ind_handle,1,0,amount,color_indexes)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar valores de cor a partir do indicador iAC, cdigo de erro %d",Get
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}

2000-2015, MetaQuotes Software Corp.

1543

Indicadores Tcnicos
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1544

Indicadores Tcnicos

iAD
A funo retorna o manipulador do indicador Accumulation/Distribution. Tem apenas um buffer.
int iAD(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

ENUM_APPLIED_VOLUME applied_volume

// tipo de volume para o clculo

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores do enumerador ENUM_TIMEFRAMES, 0 (zero)
significa o prazo corrente.
applied_volume
[in] O volume utilizado. Can be any of ENUM_APPLIED_VOLUME values.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iAD.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "dos buffers do indicador para o indicador tcnico iAD."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iAD


#property indicator_label1

"iAD"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrLightSeaGreen

2000-2015, MetaQuotes Software Corp.

1545

Indicadores Tcnicos
#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iAD,

// usar iAD

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iAD;

// tipo da funo

input ENUM_APPLIED_VOLUME

volumes;

// volume usado

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iADBuffer[];

//--- varivel para armazenar o manipulador do indicador iAD


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Accumulation/Distribution
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iADBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iAD)
handle=iAD(name,period,volumes);
else
{
//--- preencher a estrutura com os parmetros do indicador

2000-2015, MetaQuotes Software Corp.

1546

Indicadores Tcnicos
MqlParam pars[1];
pars[0].type=TYPE_INT;
pars[0].integer_value=volumes;
handle=IndicatorCreate(name,period,IND_AD,1,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iAD para o smbolo %s/%s, cdigo de er


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostrar o smbolo/prazo, o indicador de Accumulation/Distribution calculado para
short_name=StringFormat("iAD(%s/%s)",name,EnumToString(period));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iAD
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o primeiro arranque do clculo do indicador, ou se o nmero de valores em que o indica

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

2000-2015, MetaQuotes Software Corp.

1547

Indicadores Tcnicos

//--- se o array iADBuffer maior do que o nmero de valores no indicador iAD para smbolo/p
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iADBuffer com valores do indicador Accumulation/Distribution

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,
if(!FillArrayFromBuffer(iADBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Accumulation/Distribution
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preenchendo buffers do indicador a partir do indicador iAD

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],

// valores do buffer do indicator da linha Accumulatio

int ind_handle,

// manipulador do indicador iAD

int amount

// nmero dos valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();
//--- preencher uma parte do array iADBuffer com valores a partir do buffer do indicador que tem o
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados a partir do indicador iAD, cdigo de erro %d",GetLastError


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

2000-2015, MetaQuotes Software Corp.

1548

Indicadores Tcnicos
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1549

Indicadores Tcnicos

iADX
A funo retorna o manipulador do indicador Average Directional Movement Index.
int iADX(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES period,

// perodo

int

// perodo mdio

adx_period

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
adx_period
[in] Perodo para calcular o ndice.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
Os nmeros do buffer so os seguintes: 0 - MAIN_LINE, 1 - PLUSDI_LINE, 2 - MINUSDI_LINE.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iADX.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "dos buffers do indicador para o indicador tcnico iADX."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots

2000-2015, MetaQuotes Software Corp.

1550

Indicadores Tcnicos
//--- plotar ADX
#property indicator_label1

"ADX"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrLightSeaGreen

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- plotar DI_plus


#property indicator_label2

"DI_plus"

#property indicator_type2

DRAW_LINE

#property indicator_color2

clrYellowGreen

#property indicator_style2

STYLE_SOLID

#property indicator_width2

//--- plotar DI_minus


#property indicator_label3

"DI_minus"

#property indicator_type3

DRAW_LINE

#property indicator_color3

clrWheat

#property indicator_style3

STYLE_SOLID

#property indicator_width3

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iADX,

// usar iADX

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iADX;

// tipo da funo

input int

adx_period=14;

// clculo do perodo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffers do indicador


double

ADXBuffer[];

double

DI_plusBuffer[];

double

DI_minusBuffer[];

//--- varivel para armazenar o manipulador do indicador iADX


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Average Directional Movement Index
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador

2000-2015, MetaQuotes Software Corp.

1551

Indicadores Tcnicos
SetIndexBuffer(0,ADXBuffer,INDICATOR_DATA);
SetIndexBuffer(1,DI_plusBuffer,INDICATOR_DATA);
SetIndexBuffer(2,DI_minusBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iADX)
handle=iADX(name,period,adx_period);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[1];
pars[0].type=TYPE_INT;
pars[0].integer_value=adx_period;
handle=IndicatorCreate(name,period,IND_ADX,1,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iADX para o smbolo %s/%s, cdigo de e


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostrar o smbolo/prazo, o indicador de Average Directional Movement Index calculado para
short_name=StringFormat("iADX(%s/%s period=%d)",name,EnumToString(period),adx_period);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],

2000-2015, MetaQuotes Software Corp.

1552

Indicadores Tcnicos
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iADX
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o primeiro arranque do clculo do indicador, ou se o nmero de valores em que o indica

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iADXBuffer maior do que o nmero de valores no indicador iADX para smbolo
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array com valores do indicador Average Directional Movement Index

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,

if(!FillArraysFromBuffers(ADXBuffer,DI_plusBuffer,DI_minusBuffer,handle,values_to_copy)) return(
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Average Directional Movement Index
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preenchendo buffers do indicador a partir do indicador iADX

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1553

Indicadores Tcnicos
bool FillArraysFromBuffers(double &adx_values[],

// buffer do indicador da linha ADX

double &DIplus_values[],

// buffer do indicador para DI+

double &DIminus_values[],

// buffer do indicador para DI-

int ind_handle,

// manipulador do indicador iADXWilder

int amount

// nmero dos valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iADXBuffer com valores a partir do buffer do indicador que tem
if(CopyBuffer(ind_handle,0,0,amount,adx_values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados a partir do indicador iADX, cdigo de erro %d",GetLastErro


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

//--- preencher uma parte do array DI_plusBuffer com valores a partir do buffer do indicador que te
if(CopyBuffer(ind_handle,1,0,amount,DIplus_values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados a partir do indicador iADX, cdigo de erro %d",GetLastErro


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

//--- preencher uma parte do array DI_plusBuffer com valores a partir do buffer do indicador que te
if(CopyBuffer(ind_handle,2,0,amount,DIminus_values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados a partir do indicador iADX, cdigo de erro %d",GetLastErro


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1554

Indicadores Tcnicos

iADXWilder
A funo retorna o manipulador de Average Directional Movement Index por Welles Wilder.
int iADXWilder(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES period,

// perodo

int

// perodo mdio

adx_period

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
adx_period
[in] Perodo para calcular o ndice.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
Os nmeros do buffer so os seguintes: 0 - MAIN_LINE, 1 - PLUSDI_LINE, 2 - MINUSDI_LINE.
Exemplo:
//+------------------------------------------------------------------+
//|

iADXWilder.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "dos buffers do indicador para o indicador tcnico iADXWilder."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots

2000-2015, MetaQuotes Software Corp.

1555

Indicadores Tcnicos
//--- plotar ADX
#property indicator_label1

"ADX"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrLightSeaGreen

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- plotar DI_plus


#property indicator_label2

"DI_plus"

#property indicator_type2

DRAW_LINE

#property indicator_color2

clrYellowGreen

#property indicator_style2

STYLE_SOLID

#property indicator_width2

//--- plotar DI_minus


#property indicator_label3

"DI_minus"

#property indicator_type3

DRAW_LINE

#property indicator_color3

clrWheat

#property indicator_style3

STYLE_SOLID

#property indicator_width3

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iADXWilder,

// usar iADXWilder

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iADXWilder;

// tipo da funo

input int

adx_period=14;

// clculo do perodo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffers do indicador


double

ADXBuffer[];

double

DI_plusBuffer[];

double

DI_minusBuffer[];

//--- varivel para armazenar o manipulador do indicador iADXWilder


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;

//--- manteremos o nmero de valores no indicador Average Directional Movement Index por Welles Wil
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador

2000-2015, MetaQuotes Software Corp.

1556

Indicadores Tcnicos
SetIndexBuffer(0,ADXBuffer,INDICATOR_DATA);
SetIndexBuffer(1,DI_plusBuffer,INDICATOR_DATA);
SetIndexBuffer(2,DI_minusBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iADXWilder)
handle=iADXWilder(name,period,adx_period);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[1];
pars[0].type=TYPE_INT;
pars[0].integer_value=adx_period;
handle=IndicatorCreate(name,period,IND_ADXW,1,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iADXWilder para o smbolo %s/%s, cdig


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostrar o smbolo/prazo, o indicador de Average Directional Movement Index por Welles Wilder
short_name=StringFormat("iADXWilder(%s/%s period=%d)",name,EnumToString(period),adx_period);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],

2000-2015, MetaQuotes Software Corp.

1557

Indicadores Tcnicos
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iADXWilder
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o primeiro arranque do clculo do indicador, ou se o nmero de valores em que o indica

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iADXBuffer maior do que o nmero de valores no indicador iADXWilder para s
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}

//--- preencher o array com valores do indicador Average Directional Movement Index por Welles Wild

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,

if(!FillArraysFromBuffers(ADXBuffer,DI_plusBuffer,DI_minusBuffer,handle,values_to_copy)) return(
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Average Directional Movement Index
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preenchendo buffers do indicador a partir do indicador iADXWilder|
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1558

Indicadores Tcnicos
bool FillArraysFromBuffers(double &adx_values[],

// buffer do indicador da linha ADX

double &DIplus_values[],

// buffer do indicador para DI+

double &DIminus_values[],

// buffer do indicador para DI-

int ind_handle,

// manipulador do indicador iADXWilder

int amount

// nmero dos valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iADXBuffer com valores a partir do buffer do indicador que tem
if(CopyBuffer(ind_handle,0,0,amount,adx_values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Failed to copy data from the iADXWilder indicator, error code %d",GetLastError()
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

//--- preencher uma parte do array DI_plusBuffer com valores a partir do buffer do indicador que te
if(CopyBuffer(ind_handle,1,0,amount,DIplus_values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Failed to copy data from the iADXWilder indicator, error code %d",GetLastError()
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

//--- preencher uma parte do array DI_plusBuffer com valores a partir do buffer do indicador que te
if(CopyBuffer(ind_handle,2,0,amount,DIminus_values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Failed to copy data from the iADXWilder indicator, error code %d",GetLastError()
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1559

Indicadores Tcnicos

iAlligator
A funo retorna o manipulador do indicador Alligator.
int iAlligator(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

jaw_period,

// perodo para clculo da mandbula

int

jaw_shift,

// deslocamento horizontal da mandbula

int

teeth_period,

// perodo para clculo dos dentes

int

teeth_shift,

// deslocamento horizontal dos dentes

int

lips_period,

// perodo para o clculo da boca

int

lips_shift,

// deslocamento horizontal da boca

ENUM_MA_METHOD

ma_method,

// tipo de suavizao

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
jaw_period
[in] Perodo mdio para a linha azul (mandbula do Alligator)
jaw_shift
[in] O deslocamento da linha azul em relao tabela de preos.
teeth_period
[in] Perodo mdio para a linha vermelha (dentes do Alligator).
teeth_shift
[in] O deslocamento da linha vermelha em relao para a tabela de preos.
lips_period
[in] Perodo mdio para a linha verde (boca de Alligator).
lips_shift
[in] O deslocamento da linha verde em relao tabela de preos.
ma_method
[in] O mtodo da mdia. Pode ser qualquer um dos valores do ENUM_MA_METHOD.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.

2000-2015, MetaQuotes Software Corp.

1560

Indicadores Tcnicos

Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
Os nmeros do buffer so os seguintes: 0 - GATORJAW_LINE, 1 - GATORTEETH_LINE, 2 GATORLIPS_LINE.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iAlligator.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "dos buffers do indicador para o indicador tcnico iAlligator."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property description "Todos os outros parmetros so similares aos do padro Alligator."
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots

//--- plot Jaws


#property indicator_label1

"Jaws"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- plot Teeth


#property indicator_label2

"Teeth"

#property indicator_type2

DRAW_LINE

#property indicator_color2

clrRed

#property indicator_style2

STYLE_SOLID

#property indicator_width2

//--- plot Lips


#property indicator_label3

"Lips"

#property indicator_type3

DRAW_LINE

#property indicator_color3

clrLime

#property indicator_style3

STYLE_SOLID

#property indicator_width3

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1561

Indicadores Tcnicos
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iAlligator,

// usar iAlligator

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iAlligator;

// tipo de funo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

input int

jaw_period=13;

// perodo da linha da mandbula

input int

jaw_shift=8;

// deslocamento da linha da mandbula

input int

teeth_period=8;

// perodo da linha dos dentes

input int

teeth_shift=5;

// deslocamento da linha dos dentes

input int

lips_period=5;

// perodo da linha da boca

input int

lips_shift=3;

// deslocamento da linha da boca

input ENUM_MA_METHOD

MA_method=MODE_SMMA;

// mtodo das linhas mdias do Alligator

input ENUM_APPLIED_PRICE

applied_price=PRICE_MEDIAN;// tipo de preo utilizado para o clculo do

//--- buffers do indicador


double

JawsBuffer[];

double

TeethBuffer[];

double

LipsBuffer[];

//--- varivel para armazenar o manipulador do indicador


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores dentro do indicador Alligator
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador
SetIndexBuffer(0,JawsBuffer,INDICATOR_DATA);
SetIndexBuffer(1,TeethBuffer,INDICATOR_DATA);
SetIndexBuffer(2,LipsBuffer,INDICATOR_DATA);
//--- definir o deslocamento de cada linha
PlotIndexSetInteger(0,PLOT_SHIFT,jaw_shift);
PlotIndexSetInteger(1,PLOT_SHIFT,teeth_shift);
PlotIndexSetInteger(2,PLOT_SHIFT,lips_shift);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);

2000-2015, MetaQuotes Software Corp.

1562

Indicadores Tcnicos
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iAlligator)
handle=iAlligator(name,period,jaw_period,jaw_shift,teeth_period,
teeth_shift,lips_period,lips_shift,MA_method,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[8];

//--- perodos e deslocamentos das linhas do Alligator


pars[0].type=TYPE_INT;
pars[0].integer_value=jaw_period;
pars[1].type=TYPE_INT;
pars[1].integer_value=jaw_shift;
pars[2].type=TYPE_INT;
pars[2].integer_value=teeth_period;
pars[3].type=TYPE_INT;
pars[3].integer_value=teeth_shift;
pars[4].type=TYPE_INT;
pars[4].integer_value=lips_period;
pars[5].type=TYPE_INT;
pars[5].integer_value=lips_shift;

//--- tipo de suavizao


pars[6].type=TYPE_INT;
pars[6].integer_value=MA_method;
//--- tipo de preo
pars[7].type=TYPE_INT;
pars[7].integer_value=applied_price;
//--- criar manipulador
handle=IndicatorCreate(name,period,IND_ALLIGATOR,8,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iAlligator para o smbolo %s/%s, cdig


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostrar o smbolo/prazo do indicador Alligator calculado para
short_name=StringFormat("iAlligator(%s/%s, %d,%d,%d,%d,%d,%d)",name,EnumToString(period),

2000-2015, MetaQuotes Software Corp.

1563

Indicadores Tcnicos
jaw_period,jaw_shift,teeth_period,teeth_shift,lips_period,lips_shift);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iAlligator
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o primeiro arranque do clculo do indicador, ou se o nmero de valores que mudou o ind

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{
//--- Se o array JawsBuffer maior do que o nmero dos valores do indicador iAlligator para
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher os arrays com os valores do indicador de Alligator

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,

if(!FillArraysFromBuffers(JawsBuffer,jaw_shift,TeethBuffer,teeth_shift,LipsBuffer,lips_shift,han
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),

2000-2015, MetaQuotes Software Corp.

1564

Indicadores Tcnicos
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores dentro do indicador Alligator
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iAlligator

//+------------------------------------------------------------------+
bool FillArraysFromBuffers(double &jaws_buffer[],
int j_shift,

// buffer do indicador para a linha da mandbula


// deslocamento da linha da mandbula

double &teeth_buffer[], // buffer do indicador para a linha de dentes


int t_shift,

// deslocamento da linha dos dentes

double &lips_buffer[],

// buffer do indicador para a linha da boca

int l_shift,

// deslocamento da linha da boca

int ind_handle,

// manipulador do indicator iAlligator

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array JawsBuffer com valores a partir do buffer do indicador que tem
if(CopyBuffer(ind_handle,0,-j_shift,amount,jaws_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha para copiar dados a partir do indicador iAlligator, cdigo de erro %d",Get
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- preencher uma parte do array TeethBuffer com valores a partir do buffer do indicador que tem
if(CopyBuffer(ind_handle,1,-t_shift,amount,teeth_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha para copiar dados a partir do indicador iAlligator, cdigo de erro %d",Get
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

//--- preencher uma parte do array LipsBuffer com valores a partir do buffer do indicador que tem o
if(CopyBuffer(ind_handle,2,-l_shift,amount,lips_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha para copiar dados a partir do indicador iAlligator, cdigo de erro %d",Get
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);

2000-2015, MetaQuotes Software Corp.

1565

Indicadores Tcnicos
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1566

Indicadores Tcnicos

iAMA
A funo retorna o manipulador do indicador Adaptive Moving Average. Tem apenas um buffer.
int iAMA(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ama_period,

// perodo mdio para AMA

int

fast_ma_period,

// perodo rpido MA

int

slow_ma_period,

// perodo lento MA

int

ama_shift,

// deslocamento horizontal do indicador

ENUM_APPLIED_PRICE applied_price

// tipo do preo ou manipular

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ama_period
[in] O perodo de clculo, em que o coeficiente de eficincia calculado.
fast_ma_period
[in] Perodo rpido para o clculo do coeficiente de suavizao de um mercado de rpido.
slow_ma_period
[in] Perodo lento para o clculo do coeficiente de suavizao na ausncia de tendncia.
ama_shift
[in] Deslocamento do indicador relativo ao grfico de preos.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iAMA.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1567

Indicadores Tcnicos
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iAMA."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property description "Todos os outros parmetros so semelhantes aos do padro AMA."
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iAMA


#property indicator_label1

"iAMA"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iAMA,

// use iAMA

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iAMA;

// tipo de funo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

input int

ama_period=15;

// perodo para clculo

input int

fast_ma_period=2;

// perodo da MA rpida

input int

slow_ma_period=30;

// perodo da MA lenta

input int

ama_shift=0;

// deslocamento horizontal

input ENUM_APPLIED_PRICE

applied_price;

// tipo de preo

//--- buffer do indicador


double

iAMABuffer[];

//--- varivel para armazenar o manipulador do indicador iAMA


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Adaptive Moving Average
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1568

Indicadores Tcnicos
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,iAMABuffer,INDICATOR_DATA);
//--- definir deslocamento
PlotIndexSetInteger(0,PLOT_SHIFT,ama_shift);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iAMA)
handle=iAMA(name,period,ama_period,fast_ma_period,slow_ma_period,ama_shift,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[5];
pars[0].type=TYPE_INT;
pars[0].integer_value=ama_period;
pars[1].type=TYPE_INT;
pars[1].integer_value=fast_ma_period;
pars[2].type=TYPE_INT;
pars[2].integer_value=slow_ma_period;
pars[3].type=TYPE_INT;
pars[3].integer_value=ama_shift;
//--- tipo de preo
pars[4].type=TYPE_INT;
pars[4].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_AMA,5,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro
PrintFormat("Falha ao criar o indicador iAMA para o smbolo %s/%s, cdigo de erro %d",
name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostrar o smbolo/prazo, o indicador Adaptive Moving Average calculado para

2000-2015, MetaQuotes Software Corp.

1569

Indicadores Tcnicos

short_name=StringFormat("iAMA(%s/%s,%d,%d,%d,d)",name,EnumToString(period),ama_period,fast_ma_pe
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iAMA
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}
//--- se o primeiro arranque do clculo do indicador ou se o nmero de valores do indicador iAMA

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iAMABuffer maior do que o nmero de valores do indicador iAMA para smbolo
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher os arrays com os valores do indicador Adaptive Moving Average

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,
if(!FillArrayFromBuffer(iAMABuffer,ama_shift,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),

2000-2015, MetaQuotes Software Corp.

1570

Indicadores Tcnicos
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Adaptive Moving Average
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher o buffer do indicador a partir do indicador iAMA

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &ama_buffer[],

// buffer do indicador da linha AMA

int a_shift,

// deslocamento da linha AMA

int ind_handle,

// manipulador do indicador iAMA

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- Preencher a partir do array iAMABuffer com os valores do buffer do indicador que tem ndice 0
if(CopyBuffer(ind_handle,0,-a_shift,amount,ama_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados a partir do indicador iAMA, cdigo de erro %d",GetLastErro


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1571

Indicadores Tcnicos

iAO
A funo retorna o manipulador do indicador Awesome Oscillator. Tem apenas um buffer.
int iAO(
string

symbol,

ENUM_TIMEFRAMES period

// smbolo nome
// perodo

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iAO.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iAO."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar iAO


#property indicator_label1

"iAO"

#property indicator_type1

DRAW_COLOR_HISTOGRAM

#property indicator_color1

clrGreen,clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1572

Indicadores Tcnicos
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iAO,

// usar iAO

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iAO;

// tipo de funo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffers do indicador


double

iAOBuffer[];

double

iAOColors[];

//--- varivel para armazenar o manipulador do indicador iAO


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Awesome Oscillator
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador
SetIndexBuffer(0,iAOBuffer,INDICATOR_DATA);
SetIndexBuffer(1,iAOColors,INDICATOR_COLOR_INDEX);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iAO)
handle=iAO(name,period);
else
handle=IndicatorCreate(name,period,IND_AO);
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{

2000-2015, MetaQuotes Software Corp.

1573

Indicadores Tcnicos
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iAO para o smbolo %s/%s, cdigo de er


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostrar o smbolo/perodo o indicador Awesome Oscillator calculado para
short_name=StringFormat("iAO(%s/%s)",name,EnumToString(period));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiado do indicator iAO
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o primeiro arranque do clculo do indicador, ou se o nmero de valores no indicador fo

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iAOBuffer maior do que os valores no indicador iAO para smbolo/perodo, e
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama

2000-2015, MetaQuotes Software Corp.

1574

Indicadores Tcnicos
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}

//--- preencher os arrays iAOBuffer e iAOColors com valores a partir do indicador Awesome Oscillato

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,
if(!FillArraysFromBuffer(iAOBuffer,iAOColors,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Accelerator Oscillator
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher os buffers do indicador a partir do indicador iAO

//+------------------------------------------------------------------+
bool FillArraysFromBuffer(double &values[],

// buffer do indicador dos valores do Awesome Os

double &color_indexes[], // buffer de cor(para armazenar o ndice das cor


int ind_handle,

// manipulador do indicador iAO

int amount

// nmero dos valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iAOBuffer com valores a partir do buffer do indicador que tem n
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iAO, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- agora copiar o ndice de cores
if(CopyBuffer(ind_handle,1,0,amount,color_indexes)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar valores de cor do indicador iAO, cdigo de erro %d",GetLastError


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1575

Indicadores Tcnicos
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1576

Indicadores Tcnicos

iATR
A funo retorna o manipulador do indicador Average True Range. Tem apenas um buffer.
int iATR(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES period,

// perodo

int

// perodo mdio

ma_period

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] O valor do perodo mdio para clculo do indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iATR.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iATR


#property indicator_label1

"iATR"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrLightSeaGreen

2000-2015, MetaQuotes Software Corp.

1577

Indicadores Tcnicos
#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iATR,// usar iATR
Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input int

atr_period=14;

// clculo do perodo

input Creation

type=Call_iATR;

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

// tipo da funo

//--- buffer do indicador


double

iATRBuffer[];

//--- varivel para armazenamento do manipulador do indicador iAC


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero dos valores do indicador Average True Range indicator
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iATRBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iATR)
handle=iATR(name,period,atr_period);
else
{
//--- preencher a estrutura com os parmetros do indicador

2000-2015, MetaQuotes Software Corp.

1578

Indicadores Tcnicos
MqlParam pars[1];
pars[0].type=TYPE_INT;
pars[0].integer_value=atr_period;
handle=IndicatorCreate(name,period,IND_ATR,1,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iATR para o smbolo %s/%s, cdigo de e


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador True Range calculado para
short_name=StringFormat("iATR(%s/%s, period=%d)",name,EnumToString(period),atr_period);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iATR
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se o princpio de clculo do indicador ou se o nmero de valores modificados do indicador

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

2000-2015, MetaQuotes Software Corp.

1579

Indicadores Tcnicos

//--- se o array iATRBuffer maior do que o nmero de valores no indicador iATR para smbolo
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iATRBuffer com valores do indicador Average True Range
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iATRBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Accelerator Oscillator
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preenchendo os buffers do indicator a partir do indicador iATR

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],

// buffer do indicador para valores ATR values

int ind_handle,

// manipulador do indicador iATR

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher parte do array iATRBuffer com valores a partir do buffer do indicador que tem ndic
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar a partir do indicador iATR , cdigo de erro %d",GetLastError());


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

2000-2015, MetaQuotes Software Corp.

1580

Indicadores Tcnicos
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1581

Indicadores Tcnicos

iBearsPower
A funo retorna o manipulador do indicador Bears Power. Tem apenas um buffer.
int iBearsPower(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo mdio

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] O valor do perodo mdio para clculo do indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iBearsPower.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iBearsPower."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iBearsPower


#property indicator_label1

"iBearsPower"

#property indicator_type1

DRAW_HISTOGRAM

#property indicator_color1

clrSilver

2000-2015, MetaQuotes Software Corp.

1582

Indicadores Tcnicos
#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iBearsPower,

// usar iBearsPower

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iBearsPower;

// tipo da funo

input int

ma_period=13;

// perodo da mdia mvel

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iBearsPowerBuffer[];

//--- varivel para armazenar o manipulador do indicador iBearsPower


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Bears Power
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iBearsPowerBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iBearsPower)
handle=iBearsPower(name,period,ma_period);
else
{
//--- preencher a estrutura com os parmetros do indicador

2000-2015, MetaQuotes Software Corp.

1583

Indicadores Tcnicos
MqlParam pars[1];
//--- perodo da mdia mvel
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
handle=IndicatorCreate(name,period,IND_BEARS,1,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iBearsPower para o smbolo %s/%s, cdi


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostrar que o smbolo/perodo do indicador Bears Power calculado para
short_name=StringFormat("iBearsPower(%s/%s, period=%d)",name,EnumToString(period),ma_period);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iBearsPower
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)

2000-2015, MetaQuotes Software Corp.

1584

Indicadores Tcnicos
{

//--- se o array iBearsPowerBuffer maior do que o nmero de valores no indicador iBearsPowe


//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iBearsPowerBuffer com os valores do indicador Bears Power
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iBearsPowerBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Bears Power
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iBearsPower |
//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],

// buffer do indicador para valores do indicador Bears

int ind_handle,

// manipulador do indicator iBearsPower

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iBearsPowerBuffer com valores do indicador buffer do indicador q
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iBearsPower, cdigo de erro %d",GetLastError(


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1585

Indicadores Tcnicos
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1586

Indicadores Tcnicos

iBands
A funo retorna o manipulador do indicador Bollinger Bands.
int iBands(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

bands_period,

// perodo para o clculo da mdia da linha

int

bands_shift,

// deslocamento horizontal do indicador

double

deviation,

// nmero de desvios padro

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
bands_period
[in] O perodo mdio da linha principal do indicador.
bands_shift
[in] O deslocamento do indicador em relao ao grfico de preo.
deviation
[in] Desvio a partir da linha principal.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
Os nmeros de buffer so os seguintes: 0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iBands.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1587

Indicadores Tcnicos
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "buffers do indicador para o indicador tcnico iBands."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots

//--- plotar linha superior


#property indicator_label1

"Upper"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrMediumSeaGreen

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- plotar linha inferior


#property indicator_label2

"Lower"

#property indicator_type2

DRAW_LINE

#property indicator_color2

clrMediumSeaGreen

#property indicator_style2

STYLE_SOLID

#property indicator_width2

//--- plotar linha mdia


#property indicator_label3

"Middle"

#property indicator_type3

DRAW_LINE

#property indicator_color3

clrMediumSeaGreen

#property indicator_style3

STYLE_SOLID

#property indicator_width3

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iBands,

// usar iBands

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iBands;

// tipo da funo

input int

bands_period=20;

// perodo da mdia mvel

input int

bands_shift=0;

// deslocamento

input double

deviation=2.0;

// nmero de desvios padro

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE; // tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffers do indicador


double

UpperBuffer[];

double

LowerBuffer[];

2000-2015, MetaQuotes Software Corp.

1588

Indicadores Tcnicos
double

MiddleBuffer[];

//--- varivel para armazenar o manipulador do indicador iBands


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Bollinger Bands
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador
SetIndexBuffer(0,UpperBuffer,INDICATOR_DATA);
SetIndexBuffer(1,LowerBuffer,INDICATOR_DATA);
SetIndexBuffer(2,MiddleBuffer,INDICATOR_DATA);
//--- definir o deslocamento de cada linha
PlotIndexSetInteger(0,PLOT_SHIFT,bands_shift);
PlotIndexSetInteger(1,PLOT_SHIFT,bands_shift);
PlotIndexSetInteger(2,PLOT_SHIFT,bands_shift);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iBands)
handle=iBands(name,period,bands_period,bands_shift,deviation,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[4];
//--- perodo da mdia mvel
pars[0].type=TYPE_INT;
pars[0].integer_value=bands_period;
//--- deslocamento
pars[1].type=TYPE_INT;
pars[1].integer_value=bands_shift;
//--- nmero do desvio padro
pars[2].type=TYPE_DOUBLE;
pars[2].double_value=deviation;

2000-2015, MetaQuotes Software Corp.

1589

Indicadores Tcnicos
//--- tipo de preo
pars[3].type=TYPE_INT;
pars[3].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_BANDS,4,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iBands para o smbolo %s/%s, cdigo de


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Bollinger Bands calculado para
short_name=StringFormat("iBands(%s/%s, %d,%d,%G,%s)",name,EnumToString(period),
bands_period,bands_shift,deviation,EnumToString(applied_price));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iBands
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)

2000-2015, MetaQuotes Software Corp.

1590

Indicadores Tcnicos
{

//--- se o tamanho buffers do indicador maior do que o nmero de valores no indicador iBand
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array com valores do indicador Bollinger Bands

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,

if(!FillArraysFromBuffers(MiddleBuffer,UpperBuffer,LowerBuffer,bands_shift,handle,values_to_copy
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Bollinger Bands
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iBands

//+------------------------------------------------------------------+
bool FillArraysFromBuffers(double &base_values[],

// buffer do indicador da linha mdia do Boll

double &upper_values[],

// buffer do indicador da borda superior

double &lower_values[],

// buffer do indicador da borda inferior

int shift,

// deslocamento

int ind_handle,

// manipulador do indicador iBands

int amount

// nmero dos valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array MiddleBuffer com valores do buffer do indicador que tem ndice 0
if(CopyBuffer(ind_handle,0,-shift,amount,base_values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iBands, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

2000-2015, MetaQuotes Software Corp.

1591

Indicadores Tcnicos
//--- preencher uma parte do array UpperBuffer com valores do buffer do indicador que tem ndice 1
if(CopyBuffer(ind_handle,1,-shift,amount,upper_values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iBands, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- preencher uma parte do array LowerBuffer com valores do buffer do indicador que tem o ndice
if(CopyBuffer(ind_handle,2,-shift,amount,lower_values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iBands, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1592

Indicadores Tcnicos

iBullsPower
A funo retorna o manipulador do indicador Bulls Power. Tem apenas um buffer.
int iBullsPower(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo mdio

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] O perodo mdio para clculo do indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iBullsPower.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iBullsPower."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iBullsPower


#property indicator_label1

"iBullsPower"

#property indicator_type1

DRAW_HISTOGRAM

#property indicator_color1

clrSilver

2000-2015, MetaQuotes Software Corp.

1593

Indicadores Tcnicos
#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iBullsPower,

// usar iBullsPower

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iBullsPower;

// tipo da funo

input int

ma_period=13;

// perodo da mdia mvel

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iBullsPowerBuffer[];

//--- varivel para armazenar o manipulador do indicador iBullsPower


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Bulls Power
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iBullsPowerBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iBullsPower)
handle=iBullsPower(name,period,ma_period);
else
{
//--- preencher a estrutura com os parmetros do indicador

2000-2015, MetaQuotes Software Corp.

1594

Indicadores Tcnicos
MqlParam pars[1];
//--- perodo da mdia mvel
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
handle=IndicatorCreate(name,period,IND_BULLS,1,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iBullsPower para o smbolo %s/%s, cdi


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostrar que o smbolo/perodo do indicador Bulls Power calculado para
short_name=StringFormat("iBullsPower(%s/%s, period=%d)",name,EnumToString(period),ma_period);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iBullsPower
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)

2000-2015, MetaQuotes Software Corp.

1595

Indicadores Tcnicos
{

//--- se o array iBullsPowerBuffer maior do que o nmero de valores no indicador iBullsPowe


//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iBullsPowerBuffer com os valores do indicador Bulls Power
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iBullsPowerBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Bulls Power
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iBullsPower|
//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],

// buffer do indicador para valores do indicador Bulls

int ind_handle,

// manipulador do indicator iBullsPower

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iBullsPowerBuffer com valores do indicador buffer do indicador q
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iBullsPower, cdigo de erro %d",GetLastError(


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1596

Indicadores Tcnicos
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1597

Indicadores Tcnicos

iCCI
A funo retorna o manipulador do indicador Commodity Channel Index. Tem apenas um buffer.
int iCCI(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo mdio

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou de manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] O perodo mdio para o clculo de indicadores.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iCCI.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iCCI."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 1

2000-2015, MetaQuotes Software Corp.

1598

Indicadores Tcnicos
#property indicator_plots

//--- plotar iCCI


#property indicator_label1

"iCCI"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrLightSeaGreen

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- nveis horizontais na janela de indicador


#property indicator_level1

-100.0

#property indicator_level2

100.0

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iCCI,

// usar iCCI

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iCCI;

// tipo da funo

input int

ma_period=14;

// perodo da mdia mvel

input ENUM_APPLIED_PRICE

applied_price=PRICE_TYPICAL;

// tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iCCIBuffer[];

//--- varivel para armazenar o manipulador do indicator iCCI


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Commodity Channel Index
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iCCIBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{

2000-2015, MetaQuotes Software Corp.

1599

Indicadores Tcnicos
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iCCI)
handle=iCCI(name,period,ma_period,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[2];
//--- perodo de mdia mvel
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
//--- tipo de preo
pars[1].type=TYPE_INT;
pars[1].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_CCI,2,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iCCI para o smbolo %s/%s, cdigo de e


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador iCCI calculado para
short_name=StringFormat("iCCI(%s/%s, %d, %s)",name,EnumToString(period),
ma_period,EnumToString(applied_price));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])

2000-2015, MetaQuotes Software Corp.

1600

Indicadores Tcnicos
{
//--- nmero de valores copiados a partir do indicador iCCI
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iCCIBuffer maior do que o nmero de valores no indicador iCCI para o smbo
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iCCIBuffer com valores do indicador Commodity Channel Index
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iCCIBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Commodity Channel Index
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iCCI

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],

// buffer do indicador de valores do Commodity Channel

int ind_handle,

// manipulador do indicador iCCI

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro

2000-2015, MetaQuotes Software Corp.

1601

Indicadores Tcnicos
ResetLastError();

//--- preencher uma parte do array iCCIBuffer com valores do buffer do indicador que tem ndice 0 (
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iCCI, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1602

Indicadores Tcnicos

iChaikin
A funo retorna o manipulador do indicador Chaikin Oscillator. Tem apenas um buffer.
int iChaikin(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

fast_ma_period,

// perodo rpido

int

slow_ma_period,

// perodo lento

ENUM_MA_METHOD

ma_method,

// tipo suavizado

ENUM_APPLIED_VOLUME applied_volume

// tipo de volume

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
fast_ma_period
[in] Perodo mdio rpido para clculos.
slow_ma_period
[in] Perodo mdio lento para clculos.
ma_method
[in] Tipo suavizado. Pode ser uma das mdias constantes de ENUM_MA_METHOD.
applied_volume
[in] O volume usado. Pode ser uma das constantes do ENUM_APPLIED_VOLUME.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iChaikin.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"

2000-2015, MetaQuotes Software Corp.

1603

Indicadores Tcnicos
#property description "de buffers do indicador para o indicador tcnico iChaikin."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iChaikin


#property indicator_label1

"iChaikin"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrLightSeaGreen

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iChaikin,

// usar iChaikin

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iChaikin;

// tipo da funo

input int

fast_ma_period=3;

// perodo rpido da mdia mvel

input int

slow_ma_period=10;

// perodo lento da mdia mvel

input ENUM_MA_METHOD

ma_method=MODE_EMA;

// tipo de suavizao

input ENUM_APPLIED_VOLUME

applied_volume=VOLUME_TICK;

// tipo de volume

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iChaikinBuffer[];

//--- varivel para armazenar o manipulador do indicator iChaikin


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Chaikin Oscillator
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iChaikinBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;

2000-2015, MetaQuotes Software Corp.

1604

Indicadores Tcnicos
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iChaikin)
handle=iChaikin(name,period,fast_ma_period,slow_ma_period,ma_method,applied_volume);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[4];
//--- perodo rpido da mdia mvel
pars[0].type=TYPE_INT;
pars[0].integer_value=fast_ma_period;
//--- perodo lento da mdia mvel
pars[1].type=TYPE_INT;
pars[1].integer_value=slow_ma_period;
//--- tipo de suavizao
pars[2].type=TYPE_INT;
pars[2].integer_value=ma_method;
//--- tipo de volume
pars[3].type=TYPE_INT;
pars[3].integer_value=applied_volume;
handle=IndicatorCreate(name,period,IND_CHAIKIN,4,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro
PrintFormat("Falha ao criar o manipulador do indicador iChaikin para o smbolo %s/%s, cdigo
name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Chaikin Oscillator calculado para
short_name=StringFormat("iChaikin(%s/%s, %d, %d, %s, %s)",name,EnumToString(period),
fast_ma_period,slow_ma_period,
EnumToString(ma_method),EnumToString(applied_volume));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}

2000-2015, MetaQuotes Software Corp.

1605

Indicadores Tcnicos
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iChaikin
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iCCIBuffer maior do que o nmero de valores no indicador iChaikin para o s
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iChaikinBuffer com valores do indicador Chaikin Oscillator
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iChaikinBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Chaikin Oscillator

2000-2015, MetaQuotes Software Corp.

1606

Indicadores Tcnicos
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iChaikin

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],

// buffer do indicator para valores do Chaikin Oscillat

int ind_handle,

// manipulador do indicador iChaikin

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iChaikinBuffer com valores do buffer do indicador que tem ndice
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iChaikin, cdigo de erro %d",GetLastError());


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1607

Indicadores Tcnicos

iCustom
A funo retorna o manipulador de um indicador personalizado especifico.
int iCustom(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES period,

// perodo

string

// folder/nome_do_indicador_personalizado

...

name

// lista de parmetros de entrada do indicador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
name
[in] O nome do indicador personalizado, com o caminho relativo ao diretrio raiz de indicadores
(MQL5\Indicators\). Se um indicador est localizado em um subdiretrio, por exemplo, em MQL5/
Indicadores/Exemplos, o
seu nome deve ser especificado
como:
"Examples\
\nome_do_indicador" ( necessrio utilizar uma barra dupla, em vez de uma nica barra como um
separador).
...
[in] entrada-parmetros de um indicador personalizado, separados por vrgulas. Tipo e ordem dos
parmetros devem coincidir. Se no h parmetros especficos, ento valores padres sero
usados.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
Um indicador personalizado deve ser compilado (com extenso EX5) e localizado no diretrio MQL5/
Indicadores do terminal do cliente ou seu subdiretrio.
Indicadores que requerem teste so definidos automaticamente a partir da chamada da funo
iCustom(), se o correspondente parmetro for definido atravs de um string constante. Para todos
os outros casos (uso da funo IndicatorCreate() ou uso de uma string no-constante no parmetro
de define o nome do indicador) a propriedade #property tester_indicator requerida:
#property tester_indicator "indicator_name.ex5"

Se o primeiro formulrio de chamada usado no indicador, ento na inicializao do indicador, na


aba "Parmetros", voc pode escolher dados adicionais para clculo. Se a opo "Aplicar para" do
parmetro no selecionada, o clculo padro baseia-se nos valores "Fechamento" dos preos.

2000-2015, MetaQuotes Software Corp.

1608

Indicadores Tcnicos

Quando voc chama um indicador personalizado a partir do programa MQL5, o parmetro


Applied_Price ou um manipulador de outro indicador deve ser passado por ltimo, depois de todas as
variveis de entrada do indicador personalizado.
Tambm Veja
Propriedades de Programa, Sries Temporais e Acesso a Indicadores,IndicatorCreate(),
IndicatorRelease()
Exemplo:
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//---- Plotar Etiqueta1


#property indicator_label1

"Etiqueta1"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- parmetros de entrada


input int MA_Period=21;
input int MA_Shift=0;
input ENUM_MA_METHOD MA_Method=MODE_SMA;
//--- buffers do indicador
double

Label1Buffer[];

//--- Manipulador do indicador personalizado Moving Average.mq5


int MA_handle;
//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- mapeamento de buffers do indicador
SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
ResetLastError();

2000-2015, MetaQuotes Software Corp.

1609

Indicadores Tcnicos
MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",
MA_Period,
MA_Shift,
MA_Method,
PRICE_CLOSE // usando o fechamento de preos
);
Print("MA_handle = ",MA_handle,"

error = ",GetLastError());

//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- Copiar os valores do indicador Custom Moving Average para o nosso buffer do indicador
int copy=CopyBuffer(MA_handle,0,0,rates_total,Label1Buffer);
Print("copy = ",copy,"

rates_total = ",rates_total);

//--- Se a nossa tentativa falhou - Reportar isto


if(copy<=0)
Print("Uma tentativa de obter os valores se houve falha do Custom Moving Average");
//--- valor retorno de prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1610

Indicadores Tcnicos

iDEMA
A funo retorna o manipulador do indicador Double Exponential Moving Average. Tem apenas um
buffer.
int iDEMA(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo mdio

int

ma_shift,

// deslocamento horizontal

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] Perodo mdio (barras contadas) para os clculos.
ma_shift
[in] Deslocamento do indicador relativo ao grfico de preos.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iDEMA.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iDEMA."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"

2000-2015, MetaQuotes Software Corp.

1611

Indicadores Tcnicos
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iDEMA


#property indicator_label1

"iDEMA"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iDEMA,

// usar iDEMA

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iDEMA;

// tipo de funo

input int

ma_period=14;

// perodo de mdia mvel

input int

ma_shift=0;

// deslocamento

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE; // tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iDEMABuffer[];

//--- varivel para armazenar o manipulador do indicator iDEMA


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Double Exponential Moving Average
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iDEMABuffer,INDICATOR_DATA);
//--- definir deslocamento
PlotIndexSetInteger(0,PLOT_SHIFT,ma_shift);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda

2000-2015, MetaQuotes Software Corp.

1612

Indicadores Tcnicos
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iDEMA)
handle=iDEMA(name,period,ma_period,ma_shift,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[3];
//--- perodo de mdia mvel
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
//--- deslocamento
pars[1].type=TYPE_INT;
pars[1].integer_value=ma_shift;
//--- tipo de preo
pars[2].type=TYPE_INT;
pars[2].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_DEMA,3,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro
PrintFormat("Falha ao criar o manipulador do indicador iDEMA para o smbolo %s/%s, cdigo de
name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Double Exponential Moving Average calculado para
short_name=StringFormat("iDEMA(%s/%s, %d, %d, %s)",name,EnumToString(period),
ma_period,ma_shift,EnumToString(applied_price));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,

2000-2015, MetaQuotes Software Corp.

1613

Indicadores Tcnicos
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iDEMA
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iDEMABuffer maior do que o nmero de valores no indicador iDEMA para o sm
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iDEMABuffer com valores do indicador Double Exponential Moving Average
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iDEMABuffer,ma_shift,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Double Exponential Moving Average
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1614

Indicadores Tcnicos
//| Preencher buffers do indicador a partir do indicador iDEMA

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],

// buffer do indicator para valores do Double Exponenti

int shift,

// deslocamento

int ind_handle,

// manipulador do indicador iDEMA

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();
//--- preencher uma parte do array iDEMABuffer com valores do buffer do indicador que tem ndice 0
if(CopyBuffer(ind_handle,0,-shift,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iDEMA, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1615

Indicadores Tcnicos

iDeMarker
A funo retorna o manipulador do indicador Double DeMarker. Tem apenas um buffer.
int iDeMarker(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES period,

// perodo

int

// perodo mdio

ma_period

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] Perodo mdio (barras contadas) para os clculos.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iDeMarker.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iDeMarker."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iDeMarker


#property indicator_label1

"iDeMarker"\

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrLightSeaGreen

2000-2015, MetaQuotes Software Corp.

1616

Indicadores Tcnicos
#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- nveis horizontais na janela de indicador


#property indicator_level1

0.3

#property indicator_level2

0.7

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iDeMarker,

// usar iDeMarker

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iDeMarker;

// tipo de funo

input int

ma_period=14;

// perodo de mdia mvel

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iDeMarkerBuffer[];

//--- varivel para armazenar o manipulador do indicator iDeMarker


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador DeMarker
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iDeMarkerBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iDeMarker)
handle=iDeMarker(name,period,ma_period);

2000-2015, MetaQuotes Software Corp.

1617

Indicadores Tcnicos
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[1];
//--- perodo de mdia mvel
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
handle=IndicatorCreate(name,period,IND_DEMARKER,1,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iDeMarker para o smbolo %s/%s, cdigo


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador DeMarker calculado para
short_name=StringFormat("iDeMarker(%s/%s, period=%d)",name,EnumToString(period),ma_period);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iDeMarker
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

2000-2015, MetaQuotes Software Corp.

1618

Indicadores Tcnicos

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iDeMarkerBuffer maior do que o nmero de valores no indicador iDeMarker pa


//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iDeMarkerBuffer com valores do indicador DeMarker
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iDeMarkerBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador DeMarker
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iDeMarker

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],

// buffer do indicator para valores do DeMarker

int ind_handle,

// manipulador do indicador iDeMarker

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iDeMarkerBuffer com valores do buffer do indicador que tem ndic
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iDeMarker, cdigo de erro %d",GetLastError())


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem

2000-2015, MetaQuotes Software Corp.

1619

Indicadores Tcnicos
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1620

Indicadores Tcnicos

iEnvelopes
A funo retorna o manipulador do indicador Envelopes.
int iEnvelopes(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo para o clculo da linha da mdia mvel

int

ma_shift,

// deslocamento horizontal do indicador

ENUM_MA_METHOD

ma_method,

// tipo de suavizao

ENUM_APPLIED_PRICE applied_price,

// tipo de preo ou de manipulador

double

// desvio dos limites da linha mediana (em percentagens)

deviation

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] Perodo da mdia mvel para a linha principal.
ma_shift
[in] O deslocamento do indicador em relao grfico de preo.
ma_method
[in] Tipo suavizado. Pode ser um dos valores ENUM_MA_METHOD.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
deviation
[in] O desvio da linha principal (em porcentagem).
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
Os nmeros de buffer: 0 - UPPER_LINE, 1 - LOWER_LINE.
Exemplo:
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1621

Indicadores Tcnicos
//|

Demo_iEnvelopes.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar linha superior


#property indicator_label1

"Upper"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- plotar linha inferior


#property indicator_label2

"Lower"

#property indicator_type2

DRAW_LINE

#property indicator_color2

clrRed

#property indicator_style2

STYLE_SOLID

#property indicator_width2

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iEnvelopes,

// usar iEnvelopes

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iEnvelopes;

// tipo de funo

input int

ma_period=14;

// perodo de mdia mvel

input int

ma_shift=0;

// deslocamento

input ENUM_MA_METHOD

ma_method=MODE_SMA;

// tipo de suavizao

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE; // tipo de preo

input double

deviation=0.1;

// desvio das bordas da mdia mvel

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

UpperBuffer[];

double

LowerBuffer[];

//--- varivel para armazenar o manipulador do indicator iEnvelopes

2000-2015, MetaQuotes Software Corp.

1622

Indicadores Tcnicos
int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Envelopes
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador
SetIndexBuffer(0,UpperBuffer,INDICATOR_DATA);
SetIndexBuffer(1,LowerBuffer,INDICATOR_DATA);
//--- definir o deslocamento de cada linha
PlotIndexSetInteger(0,PLOT_SHIFT,ma_shift);
PlotIndexSetInteger(1,PLOT_SHIFT,ma_shift);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iEnvelopes)
handle=iEnvelopes(name,period,ma_period,ma_shift,ma_method,applied_price,deviation);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[5];
//--- perodo de mdia mvel
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
//--- deslocamento
pars[1].type=TYPE_INT;
pars[1].integer_value=ma_shift;
//--- tipo de suavizao
pars[2].type=TYPE_INT;
pars[2].integer_value=ma_method;
//--- tipo de preo
pars[3].type=TYPE_INT;
pars[3].integer_value=applied_price;
//--- tipo de preo

2000-2015, MetaQuotes Software Corp.

1623

Indicadores Tcnicos
pars[4].type=TYPE_DOUBLE;
pars[4].double_value=deviation;
handle=IndicatorCreate(name,period,IND_ENVELOPES,5,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iEnvelopes para o smbolo %s/%s, cdig


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Envelopes calculado para
short_name=StringFormat("iEnvelopes(%s/%s, %d, %d, %s,%s, %G)",name,EnumToString(period),
ma_period,ma_shift,EnumToString(ma_method),EnumToString(applied_price),deviation);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iEnvelopes
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

2000-2015, MetaQuotes Software Corp.

1624

Indicadores Tcnicos
//--- se o array UpperBuffer maior do que o nmero de valores no indicador iEnvelopes para
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher os arrays UpperBuffer e LowerBuffer com valores do indicador Envelopes
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArraysFromBuffers(UpperBuffer,LowerBuffer,ma_shift,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Envelopes
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iEnvelopes

//+------------------------------------------------------------------+
bool FillArraysFromBuffers(double &upper_values[],

// buffer do indicator linha da borda superio

double &lower_values[],

// indicador da linha da borda inferior

int shift,

// deslocamento

int ind_handle,

// manipulador do indicador iEnvelopes

int amount

// nmero dos valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();
//--- preencher uma parte do array UpperBuffer com valores do buffer do indicador que tem ndice 0
if(CopyBuffer(ind_handle,0,-shift,amount,upper_values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iEnvelopes, cdigo de erro %d",GetLastError()


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- preencher uma parte do array LowerBuffer com valores do buffer do indicador que tem ndice 1
if(CopyBuffer(ind_handle,1,-shift,amount,lower_values)<0)
{

2000-2015, MetaQuotes Software Corp.

1625

Indicadores Tcnicos
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iEnvelopes, cdigo de erro %d",GetLastError()


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1626

Indicadores Tcnicos

iForce
A funo retorna o manipulador do indicador Force Index. Tem apenas um buffer.
int iForce(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo mdio

ENUM_MA_METHOD

ma_method,

// tipo suavizado

ENUM_APPLIED_VOLUME applied_volume

// tipo de volume para clculo

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] Perodo mdio para clculo do indicador.
ma_method
[in] Tipo suavizado. Pode ser um dos valores ENUM_MA_METHOD.
applied_volume
[in] O volume usado. Pode ser um dos valores ENUM_APPLIED_VOLUME.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iForce.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iForce."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t

2000-2015, MetaQuotes Software Corp.

1627

Indicadores Tcnicos

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- desenhando iForce


#property indicator_label1

"iForce"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrLightSeaGreen

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iForce,

// usar iForce

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iForce;

// tipo de funo

input int

ma_period=13;

// perodo mdio

input ENUM_MA_METHOD

ma_method=MODE_SMA;

// tipo de suavizao

input ENUM_APPLIED_VOLUME

applied_volume=VOLUME_TICK;

// tipo de volume

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iForceBuffer[];

//--- varivel para armazenar o manipulador do indicator iForce


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Force
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iForceBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)

2000-2015, MetaQuotes Software Corp.

1628

Indicadores Tcnicos
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iForce)
handle=iForce(name,period,ma_period,ma_method,applied_volume);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[3];
//--- perodo de mdia mvel
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
//--- tipo de suavizao
pars[1].type=TYPE_INT;
pars[1].integer_value=ma_method;
//--- tipo de volume
pars[2].type=TYPE_INT;
pars[2].integer_value=applied_volume;
//--- tipo de preo
handle=IndicatorCreate(name,period,IND_FORCE,3,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iForce para o smbolo %s/%s, cdigo de


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Force calculado para
short_name=StringFormat("iForce(%s/%s, %d, %s, %s)",name,EnumToString(period),
ma_period,EnumToString(ma_method),EnumToString(applied_volume));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],

2000-2015, MetaQuotes Software Corp.

1629

Indicadores Tcnicos
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iForce
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iForceBuffer maior do que o nmero de valores no indicador iForce para o s
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iForceBuffer com valores do indicador Force
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iForceBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Force
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iForce

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],

// buffer do indicator para valores do Force Index

2000-2015, MetaQuotes Software Corp.

1630

Indicadores Tcnicos
int ind_handle,

// manipulador do indicador iForce

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iForceBuffer com valores do buffer do indicador que tem ndice 0
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iForce, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1631

Indicadores Tcnicos

iFractals
A funo retorna o manipulador do indicador Fractals.
int iFractals(
string

symbol,

ENUM_TIMEFRAMES period

// smbolo nome
// perodo

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
Os nmeros de buffer so os seguintes: 0 - UPPER_LINE, 1 - LOWER_LINE.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iFractals.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iFractals."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar FractalUp

2000-2015, MetaQuotes Software Corp.

1632

Indicadores Tcnicos
#property indicator_label1

"FractalUp"

#property indicator_type1

DRAW_ARROW

#property indicator_color1

clrBlue

//--- plotar FractalDown


#property indicator_label2

"FractalDown"

#property indicator_type2

DRAW_ARROW

#property indicator_color2

clrRed

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iFractals,

// usar iFractals

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iFractals;

// tipo de funo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffers do indicador


double

FractalUpBuffer[];

double

FractalDownBuffer[];

//--- varivel para armazenar o manipulador do indicator iFractals


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Fractals
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador
SetIndexBuffer(0,FractalUpBuffer,INDICATOR_DATA);
SetIndexBuffer(1,FractalDownBuffer,INDICATOR_DATA);

//--- definir cdigos usando um smbolo do conjunto de caractres Wingdings para a propriedade PLOT_
PlotIndexSetInteger(0,PLOT_ARROW,217); // seta acima
PlotIndexSetInteger(1,PLOT_ARROW,218); // seta abaixo
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{

2000-2015, MetaQuotes Software Corp.

1633

Indicadores Tcnicos
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iFractals)
handle=iFractals(name,period);
else
handle=IndicatorCreate(name,period,IND_FRACTALS);
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iFractals para o smbolo %s/%s, cdigo


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Fractals calculado para
short_name=StringFormat("iFractals(%s/%s)",name,EnumToString(period));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iFractals
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

2000-2015, MetaQuotes Software Corp.

1634

Indicadores Tcnicos

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array FractalUpBuffer maior do que o nmero de valores no indicador iFractals pa


//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher os arrays FractalUpBuffer e FractalDownBuffer com valores do indicador Fractals
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArraysFromBuffers(FractalUpBuffer,FractalDownBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Fractals
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iFractals

//+------------------------------------------------------------------+
bool FillArraysFromBuffers(double &up_arrows[],

// buffer do indicator para setas acima

double &down_arrows[],

// buffer do indicator para setas abaixo

int ind_handle,

// manipulador do indicador iFractals

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array FractalUpBuffer com valores do buffer do indicador que tem ndic
if(CopyBuffer(ind_handle,0,0,amount,up_arrows)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iFractals ao array FractalUpBuffer array, cd


GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

2000-2015, MetaQuotes Software Corp.

1635

Indicadores Tcnicos

//--- preencher uma parte do array FractalDownBuffer com valores do buffer do indicador que tem nd
if(CopyBuffer(ind_handle,1,0,amount,down_arrows)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iFractals ao array FractalDownBuffer array, c


GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1636

Indicadores Tcnicos

iFrAMA
A funo retorna o manipulador do indicador Fractal Adaptive Moving Average. Tem apenas um buffer.
int iFrAMA(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo mdio

int

ma_shift,

// deslocamento horizontal no grfico

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] Perodo (contando as barras) para os clculos do indicador.
ma_shift
[in] Deslocamento do indicador no grfico de preo.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iFrAMA.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iFrAMA."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

2000-2015, MetaQuotes Software Corp.

1637

Indicadores Tcnicos

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//--- desenhando iFrAMA


#property indicator_label1

"iFrAMA"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iFrAMA,

// usar iFrAMA

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iFrAMA;

// tipo de funo

input int

ma_period=14;

// perodo da mdia mvel

input int

ma_shift=0;

// deslocamento

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE;

// tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iFrAMABuffer[];

//--- varivel para armazenar o manipulador do indicator iFrAMA


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Fractal Adaptive Moving Average
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iFrAMABuffer,INDICATOR_DATA);
//--- definir deslocamento
PlotIndexSetInteger(0,PLOT_SHIFT,ma_shift);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);

2000-2015, MetaQuotes Software Corp.

1638

Indicadores Tcnicos
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iFrAMA)
handle=iFrAMA(name,period,ma_period,ma_shift,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[3];
//--- perodo de mdia mvel
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
//--- deslocamento
pars[1].type=TYPE_INT;
pars[1].integer_value=ma_shift;
//--- tipo de preo
pars[2].type=TYPE_INT;
pars[2].integer_value=applied_price;
//--- tipo de preo
handle=IndicatorCreate(name,period,IND_FRAMA,3,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iFrAMA para o smbolo %s/%s, cdigo de


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador iFrAMA calculado para
short_name=StringFormat("iFrAMA(%s/%s, %d, %d, %s)",name,EnumToString(period),
ma_period,ma_shift,EnumToString(applied_price));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,

2000-2015, MetaQuotes Software Corp.

1639

Indicadores Tcnicos
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iFrAMA
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iFrAMABuffer maior do que o nmero de valores no indicador iFrAMA para o s
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iFrAMABuffer com valores do indicador Fractal Adaptive Moving Average
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iFrAMABuffer,ma_shift,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Fractal Adaptive Moving Average
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1640

Indicadores Tcnicos
//| Preencher buffers do indicador a partir do indicador iFrAMA

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],

// buffer do indicator para valores do Fractal Adaptive

int shift,

// deslocamento

int ind_handle,

// manipulador do indicador iFrAMA

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iFrAMABuffer com valores do buffer do indicador que tem ndice 0
if(CopyBuffer(ind_handle,0,-shift,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iFrAMA, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1641

Indicadores Tcnicos

iGator
A funo retorna o manipulador do indicador Gator. O oscilador mostra a diferena entre as linhas azul
e vermelha do Jacar (histograma superior) e diferena entre as linhas vermelha e verde (menor
histograma).
int iGator(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

jaw_period,

// perodo para clculo da mandbula

int

jaw_shift,

// deslocamento horizontal da mandbula

int

teeth_period,

// perodo para clculo dos dentes

int

teeth_shift,

// deslocamento horizontal dos dentes

int

lips_period,

// perodo para o clculo da boca

int

lips_shift,

// deslocamento horizontal da boca

ENUM_MA_METHOD

ma_method,

// tipo de suavizao

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
jaw_period
[in] Perodo mdio para a linha azul (mandbula do Alligator).
jaw_shift
[in] O deslocamento da linha azul em relao tabela de preos. No est diretamente ligado ao
deslocamento visual do histograma do indicador.
teeth_period
[in] Perodo mdio para a linha vermelha (dentes do Alligator).
teeth_shift
[in] O deslocamento da linha vermelha em relao para a tabela de preos. No est diretamente
ligado ao deslocamento visual do histograma do indicador.
lips_period
[in] Perodo mdio para a linha verde (boca de Alligator).
lips_shift
[in] O deslocamento da linha verde em relao tabela de preos. No est diretamente ligado ao
deslocamento visual do histograma do indicador.
ma_method
[in] Tipo suavizado. Pode ser um dos valores ENUM_MA_METHOD.

2000-2015, MetaQuotes Software Corp.

1642

Indicadores Tcnicos
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
Nmeros de buffer: 0 - UPPER_HISTOGRAM, 1 - buffer de cor do histograma superior, 2 LOWER_HISTOGRAM, 3 - buffer de cor do histograma inferior.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iGator.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "dos buffers do indicador para o indicador tcnico iGator."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property description "Todos os outros parmetros so similares aos do padro Gator Oscillator."
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots

//--- desenhando GatorUp


#property indicator_label1

"GatorUp"

#property indicator_type1

DRAW_COLOR_HISTOGRAM

#property indicator_color1

clrGreen, clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- desenhando GatorDown


#property indicator_label2

"GatorDown"

#property indicator_type2

DRAW_COLOR_HISTOGRAM

#property indicator_color2

clrGreen, clrRed

#property indicator_style2

STYLE_SOLID

#property indicator_width2

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation

2000-2015, MetaQuotes Software Corp.

1643

Indicadores Tcnicos
{
Call_iGator,

// usar iGator

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iGator;

// tipo de funo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

input int

jaw_period=13;

// perodo da linha da mandbula

input int

jaw_shift=8;

// deslocamento da linha da mandbula

input int

teeth_period=8;

// perodo da linha dos dentes

input int

teeth_shift=5;

// deslocamento da linha dos dentes

input int

lips_period=5;

// perodo da linha da boca

input int

lips_shift=3;

// deslocamento da linha da boca

input ENUM_MA_METHOD

MA_method=MODE_SMMA;

// mtodo das linhas mdias do Alligator

input ENUM_APPLIED_PRICE

applied_price=PRICE_MEDIAN;// tipo de preo utilizado para o clculo do

//--- buffers do indicador


double

GatorUpBuffer[];

double

GatorUpColors[];

double

GatorDownBuffer[];

double

GatorDownColors[];

//--- varivel para armazenar o manipulador do indicator iGator


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- deslocamento dos valores para os histogramas superior e inferior
int shift;
//--- manteremos o nmero de valores no indicador Gator Oscillator
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador
SetIndexBuffer(0,GatorUpBuffer,INDICATOR_DATA);
SetIndexBuffer(1,GatorUpColors,INDICATOR_COLOR_INDEX);
SetIndexBuffer(2,GatorDownBuffer,INDICATOR_DATA);
SetIndexBuffer(3,GatorDownColors,INDICATOR_COLOR_INDEX);
/*

Todas as mudanas nos parmetros especificados referem-se o indicador Alligator, que a base par

Isso porque eles no se movem como o indicador Gator em si, mas eles se movem conforme as linha
Cujo os valores so utilizados para calcular o Gator Oscillator!
*/

//--- vamos calcular o deslocamento para os histogramas superior e inferior, que igual diferen
shift=MathMin(jaw_shift,teeth_shift);
PlotIndexSetInteger(0,PLOT_SHIFT,shift);

2000-2015, MetaQuotes Software Corp.

1644

Indicadores Tcnicos

//--- apesar do indicador conter dois histogramas, o mesmo deslocamento usado - esta a execuo
PlotIndexSetInteger(1,PLOT_SHIFT,shift);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iGator)
handle=iGator(name,period,jaw_period,jaw_shift,teeth_period,teeth_shift,
lips_period,lips_shift,MA_method,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[8];
//--- perodos e deslocamentos da linhas do Alligator
pars[0].type=TYPE_INT;
pars[0].integer_value=jaw_period;
pars[1].type=TYPE_INT;
pars[1].integer_value=jaw_shift;
pars[2].type=TYPE_INT;
pars[2].integer_value=teeth_period;
pars[3].type=TYPE_INT;
pars[3].integer_value=teeth_shift;
pars[4].type=TYPE_INT;
pars[4].integer_value=lips_period;
pars[5].type=TYPE_INT;
pars[5].integer_value=lips_shift;
//--- tipo de suavizao
pars[6].type=TYPE_INT;
pars[6].integer_value=MA_method;
//--- tipo de preo
pars[7].type=TYPE_INT;
pars[7].integer_value=applied_price;
//--- criando o manipulador
handle=IndicatorCreate(name,period,IND_GATOR,8,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iGator para o smbolo %s/%s, cdigo de

2000-2015, MetaQuotes Software Corp.

1645

Indicadores Tcnicos
name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Gator Oscillator calculado para
short_name=StringFormat("iGator(%s/%s, %d, %d ,%d, %d, %d, %d)",name,EnumToString(period),
jaw_period,jaw_shift,teeth_period,teeth_shift,lips_period,lips_shift);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iGator
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{
//--- se o array GatorUpBuffer maior do que o nmero de valores no indicador iGator para o
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada

2000-2015, MetaQuotes Software Corp.

1646

Indicadores Tcnicos
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher os arrays com valores do indicador Gator Oscillator

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,
if(!FillArraysFromBuffers(GatorUpBuffer,GatorUpColors,GatorDownBuffer,GatorDownColors,
shift,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Gator Oscillator
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iGator

//+------------------------------------------------------------------+
bool FillArraysFromBuffers(double &ups_buffer[],

// buffer do indicator para o histograma s

double &up_color_buffer[],

// buffer do indicator para o ndice de pr

double &downs_buffer[],

// buffer do indicator para o histograma i

double &downs_color_buffer[], // buffer do indicator para o ndice de pr


int u_shift,

// deslocamento para o histograma superior

int ind_handle,

// manipulador do indicador iGator

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();
//--- preencher uma parte do array GatorUpBuffer com valores do buffer do indicador que tem ndice
if(CopyBuffer(ind_handle,0,-u_shift,amount,ups_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iGator, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- preencher uma parte do array GatorUpColors com valores do buffer do indicador que tem ndice
if(CopyBuffer(ind_handle,1,-u_shift,amount,up_color_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iGator, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

2000-2015, MetaQuotes Software Corp.

1647

Indicadores Tcnicos

//--- preencher uma parte do array GatorDownBuffer com valores do buffer do indicador que tem ndic
if(CopyBuffer(ind_handle,2,-u_shift,amount,downs_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iGator, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

//--- preencher uma parte do array GatorDownColors com valores do buffer do indicador que tem ndic
if(CopyBuffer(ind_handle,3,-u_shift,amount,downs_color_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iGator, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1648

Indicadores Tcnicos

iIchimoku
A funo retorna o manipulador do indicador Ichimoku Kinko Hyo.
int iIchimoku(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES period,

// perodo

int

tenkan_sen,

// perodo Tenkan-sen

int

kijun_sen,

// perodo Kijun-sen

int

senkou_span_b

// perodo Senkou Span B

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
tenkan_sen
[in] Perodo mdio para Tenkan Sen.
kijun_sen
[in] Perodo mdio para Kijun Sen.
senkou_span_b
[in] Perodo mdio para Senkou Span B.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
Os nmeros de buffer: 0 - TENKANSEN_LINE, 1 - KIJUNSEN_LINE, 2 - SENKOUSPANA_LINE, 3 SENKOUSPANB_LINE, 4 - CHIKOUSPAN_LINE.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iIchimoku.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"

2000-2015, MetaQuotes Software Corp.

1649

Indicadores Tcnicos
#property description "de buffers do indicador para o indicador tcnico iIchimoku."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property description "Todos os outros parmetros, assim como no padro Ichimoku Kinko Hyo."
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots

//--- plotar Tenkan_sen


#property indicator_label1

"Tenkan_sen"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- plotar Kijun_sen


#property indicator_label2

"Kijun_sen"

#property indicator_type2

DRAW_LINE

#property indicator_color2

clrBlue

#property indicator_style2

STYLE_SOLID

#property indicator_width2

//--- plotar Senkou_Span


#property indicator_label3

"Senkou Span A;Senkou Span B" // two fields will be shown in Data Windo

#property indicator_type3

DRAW_FILLING

#property indicator_color3

clrSandyBrown, clrThistle

#property indicator_style3

STYLE_SOLID

#property indicator_width3

//--- plotar Chikou_Span


#property indicator_label4

"Chikou_Span"

#property indicator_type4

DRAW_LINE

#property indicator_color4

clrLime

#property indicator_style4

STYLE_SOLID

#property indicator_width4

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iIchimoku,

// usar iIchimoku

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iIchimoku;

// tipo de funo

input int

tenkan_sen=9;

// perodo Tenkan-sen

input int

kijun_sen=26;

// perodo Kijun-sen

input int

senkou_span_b=52;

// perodo Senkou Span B

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador

2000-2015, MetaQuotes Software Corp.

1650

Indicadores Tcnicos
double

Tenkan_sen_Buffer[];

double

Kijun_sen_Buffer[];

double

Senkou_Span_A_Buffer[];

double

Senkou_Span_B_Buffer[];

double

Chinkou_Span_Buffer[];

//--- varivel para armazenar o manipulador do indicator iIchimoku


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Ichimoku Kinko Hyo
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador
SetIndexBuffer(0,Tenkan_sen_Buffer,INDICATOR_DATA);
SetIndexBuffer(1,Kijun_sen_Buffer,INDICATOR_DATA);
SetIndexBuffer(2,Senkou_Span_A_Buffer,INDICATOR_DATA);
SetIndexBuffer(3,Senkou_Span_B_Buffer,INDICATOR_DATA);
SetIndexBuffer(4,Chinkou_Span_Buffer,INDICATOR_DATA);
//--- definir o deslocamento para o canal Senkou Span das barras kijun_sen na futura direo
PlotIndexSetInteger(2,PLOT_SHIFT,kijun_sen);

//--- no necessrio definir um deslocamento para a linha Span Chinkou, uma vez que os dados Chin
//--- j esto armazenados com um deslocamento na iIchimoku
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iIchimoku)
handle=iIchimoku(name,period,tenkan_sen,kijun_sen,senkou_span_b);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[3];
//--- perodos e deslocamentos da linhas do Alligator
pars[0].type=TYPE_INT;
pars[0].integer_value=tenkan_sen;

2000-2015, MetaQuotes Software Corp.

1651

Indicadores Tcnicos
pars[1].type=TYPE_INT;
pars[1].integer_value=kijun_sen;
pars[2].type=TYPE_INT;
pars[2].integer_value=senkou_span_b;
//--- criando o manipulador
handle=IndicatorCreate(name,period,IND_ICHIMOKU,3,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iIchimoku para o smbolo %s/%s, cdigo


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Ichimoku Kinko Hyo calculado para
short_name=StringFormat("iIchimoku(%s/%s, %d, %d ,%d)",name,EnumToString(period),
tenkan_sen,kijun_sen,senkou_span_b);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iIchimoku
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

2000-2015, MetaQuotes Software Corp.

1652

Indicadores Tcnicos

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{
//--- se o array Tenkan_sen_Buffer maior do que o nmero de valores no indicador iIchimoku
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher os arrays com valores do indicador Ichimoku Kinko Hyo

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,

if(!FillArraysFromBuffers(Tenkan_sen_Buffer,Kijun_sen_Buffer,Senkou_Span_A_Buffer,Senkou_Span_B_
kijun_sen,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Ichimoku Kinko Hyo
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iIchimoku

//+------------------------------------------------------------------+
bool FillArraysFromBuffers(double &tenkan_sen_buffer[],

// buffer do indicador da linha Tenkan-

double &kijun_sen_buffer[],

// buffer do indicator da linha Kijun_s

double &senkou_span_A_buffer[],

// buffer do indicator da linha Senkou

double &senkou_span_B_buffer[],

// buffer do indicator da linha Senkou

double &chinkou_span_buffer[],

// buffer do indicator da linha Chinkou

int senkou_span_shift,

// deslocamento das linhas Senkou Span

int ind_handle,

// manipulador do iIchimoku

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array Tenkan_sen_Buffer com valores do buffer do indicador que tem nd
if(CopyBuffer(ind_handle,0,0,amount,tenkan_sen_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

2000-2015, MetaQuotes Software Corp.

1653

Indicadores Tcnicos

PrintFormat("1.Falha ao copiar dados do indicador iIchimoku, cdigo de erro %d",GetLastError(


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

//--- preencher uma parte do array Kijun_sen_Buffer com valores do buffer do indicador que tem ndi
if(CopyBuffer(ind_handle,1,0,amount,kijun_sen_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("2.Falha ao copiar dados do indicador iIchimoku, cdigo de erro %d",GetLastError(


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

//--- preencher uma parte do array Chinkou_Span_Buffer com valores do buffer do indicador que tem
//--- se senkou_span_shift>0, a linha deslocada na direo futura pelas barras senkou_span_shift
if(CopyBuffer(ind_handle,2,-senkou_span_shift,amount,senkou_span_A_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("3.Falha ao copiar dados do indicador iIchimoku, cdigo de erro %d",GetLastError(


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- preencher uma parte do array com valores do buffer do indicador que tem ndice 3 (trs)
//--- se senkou_span_shift>0, a linha deslocada na direo futura pelas barras senkou_span_shift
if(CopyBuffer(ind_handle,3,-senkou_span_shift,amount,senkou_span_B_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("4.Falha ao copiar dados do indicador iIchimoku, cdigo de erro %d",GetLastError(


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- preencher uma parte do array Senkou_Span_B_Buffer com valores do buffer do indicador que tem

//--- ao copiar Chinkou Span, no precisamos considerar a mudana, uma vez que os dados Chinkou Spa
//--- j esto armazenados com um deslocamento na iIchimoku
if(CopyBuffer(ind_handle,4,0,amount,chinkou_span_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("5.Falha ao copiar dados do indicador iIchimoku, cdigo de erro %d",GetLastError(


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

2000-2015, MetaQuotes Software Corp.

1654

Indicadores Tcnicos
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1655

Indicadores Tcnicos

iBWMFI
A funo retorna o manipulador do indicador Market Facilitation Index. Tem apenas um buffer.
int iBWMFI(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

ENUM_APPLIED_VOLUME applied_volume

// tipo de volume para o clculo

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
applied_volume
[in] O volume usado. Pode ser uma das constantes do ENUM_APPLIED_VOLUME.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iBWMFI.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iBWMFI."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar iBWMFI


#property indicator_label1

"iBWMFI"

#property indicator_type1

DRAW_COLOR_HISTOGRAM

#property indicator_color1

clrLime,clrSaddleBrown,clrBlue,clrPink

2000-2015, MetaQuotes Software Corp.

1656

Indicadores Tcnicos
#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iBWMFI,

// usar iBWMFI

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iBWMFI;

// tipo de funo

input ENUM_APPLIED_VOLUME

applied_volume=VOLUME_TICK;// tipo de volume

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iBWMFIBuffer[];

double

iBWMFIColors[];

//--- varivel para armazenar o manipulador do indicator iBWMFI


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;

//--- varivel para armazenar o manipulador do indicador Market Facilitation Index por Bill William
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador
SetIndexBuffer(0,iBWMFIBuffer,INDICATOR_DATA);
SetIndexBuffer(1,iBWMFIColors,INDICATOR_COLOR_INDEX);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iBWMFI)
handle=iBWMFI(name,period,applied_volume);
else

2000-2015, MetaQuotes Software Corp.

1657

Indicadores Tcnicos
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[1];
//--- tipo de volume
pars[0].type=TYPE_INT;
pars[0].integer_value=applied_volume;
handle=IndicatorCreate(name,period,IND_BWMFI,1,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iBWMFI para o smbolo %s/%s, cdigo de


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}

//--- mostrar que o smbolo/perodo do indicador Market Facilitation Index por Bill Williams calc
short_name=StringFormat("iBWMFI(%s/%s, %s)",name,EnumToString(period),
EnumToString(applied_volume));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiado do indicador iBWMFI
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

2000-2015, MetaQuotes Software Corp.

1658

Indicadores Tcnicos

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iBWMFIBuffer maior do que o nmero de valores no indicador iBWMFI para o s
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher os arrays com os valores do indicador Market Facilitation Index por Bill Williams

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,
if(!FillArraysFromBuffers(iBWMFIBuffer,iBWMFIColors,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Market Facilitation Index por Bill Williams
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iBWMFI

//+------------------------------------------------------------------+
bool FillArraysFromBuffers(double &values[],

// buffer do indicator para os valores do histogram

double &colors[],

// buffer do indicator para cores do histograma

int ind_handle,

// manipulado do indicador iBWMFI

int amount

// nmero de valores copiado

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iBWMFIBuffer com valores do indicador buffer do indicador que te
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iBWMFI, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

2000-2015, MetaQuotes Software Corp.

1659

Indicadores Tcnicos

//--- preencher uma parte do array iBWMFIColors com valores do buffer do indicador que tem ndice 1
if(CopyBuffer(ind_handle,1,0,amount,colors)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iBWMFI, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1660

Indicadores Tcnicos

iMomentum
A funo retorna o manipulador do indicador Momentum. Tem apenas um buffer.
int iMomentum(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

mom_period,

// perodo mdio

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou de manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
mom_period
[in] Perodo mdio(barras contadas) para o clculo de modificao do preo.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iMomentum.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iMomentum."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property description "Todos os outros parmetros so similares ao padro Momentum."
#property indicator_separate_window

2000-2015, MetaQuotes Software Corp.

1661

Indicadores Tcnicos
#property indicator_buffers 1
#property indicator_plots

//--- plotar iMomentum


#property indicator_label1

"iMomentum"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrDodgerBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iMomentum,

// usar iMomentum

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iMomentum;

// tipo de funo

input int

mom_period=14;

// perodo do indicador Momentum

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE; // tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iMomentumBuffer[];

//--- varivel para armazenar o manipulador do indicator iMomentum


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Momentum
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iMomentumBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;

2000-2015, MetaQuotes Software Corp.

1662

Indicadores Tcnicos
}
//--- criar manipulador do indicador
if(type==Call_iMomentum)
handle=iMomentum(name,period,mom_period,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[2];
//--- perodo
pars[0].type=TYPE_INT;
pars[0].integer_value=mom_period;
//--- tipo de preo
pars[1].type=TYPE_INT;
pars[1].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_MOMENTUM,2,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iMomentum para o smbolo %s/%s, cdigo


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Momentum calculado para
short_name=StringFormat("iMomentum(%s/%s, %d, %s)",name,EnumToString(period),
mom_period, EnumToString(applied_price));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iMomentum

2000-2015, MetaQuotes Software Corp.

1663

Indicadores Tcnicos
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iMomentumBuffer maior do que o nmero de valores no indicador iMomentum pa


//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iMomentumBuffer com valores do indicador Momentum
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iMomentumBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Momentum
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iMomentum

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],

// buffer do indicator para valores do Momentum

int ind_handle,

// manipulador do indicador iMomentum

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iMomentumBuffer com valores do buffer do indicador que tem ndic

2000-2015, MetaQuotes Software Corp.

1664

Indicadores Tcnicos
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iMomentum, cdigo de erro %d",GetLastError())


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1665

Indicadores Tcnicos

iMFI
A funo retorna o manipulador do indicador Money Flow Index.
int iMFI(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo mdio

ENUM_APPLIED_VOLUME applied_volume

// tipo de volume para o clculo

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] Perodo mdio (barras contadas) para clculo.
applied_volume
[in] O volume usado. Pode ser um dos valores ENUM_APPLIED_VOLUME.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iMFI.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iMFI."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property description "Todos os outros parmetros so similares ao padro Money Flow Index."
#property indicator_separate_window
#property indicator_buffers 1

2000-2015, MetaQuotes Software Corp.

1666

Indicadores Tcnicos
#property indicator_plots

//--- plotar iMFI


#property indicator_label1

"iMFI"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrDodgerBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- nveis horizontais na janela de indicador


#property indicator_level1

20

#property indicator_level2

80

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iMFI,

// usar iMFI

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iMFI;

// tipo de funo

input int

ma_period=14;

// perodo

input ENUM_APPLIED_VOLUME

applied_volume=VOLUME_TICK;

// tipo de volume

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iMFIBuffer[];

//--- varivel para armazenar o manipulador do indicator iMFI


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Money Flow Index
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iMFIBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{

2000-2015, MetaQuotes Software Corp.

1667

Indicadores Tcnicos
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iMFI)
handle=iMFI(name,period,ma_period,applied_volume);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[2];
//--- perodo
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
//--- tipo de volume
pars[1].type=TYPE_INT;
pars[1].integer_value=applied_volume;
handle=IndicatorCreate(name,period,IND_MFI,2,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador para o smbolo %s/%s, cdigo de erro %


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Money Flow Index calculado para
short_name=StringFormat("iMFI(%s/%s, %d, %s)",name,EnumToString(period),
ma_period, EnumToString(applied_volume));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])

2000-2015, MetaQuotes Software Corp.

1668

Indicadores Tcnicos
{
//--- nmero de valores copiados a partir do indicador iMFI
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iMFIBuffer maior do que o nmero de valores no indicador iMFI para o smbo
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iMFIBuffer com valores do indicador Money Flow Index
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iMFIBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Flow Index
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iMFI

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],

// buffer do indicator para valores do Money Flow Index

int ind_handle,

// manipulador do indicador iMFI

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro

2000-2015, MetaQuotes Software Corp.

1669

Indicadores Tcnicos
ResetLastError();

//--- preencher uma parte do array iMFIBuffer com valores do buffer do indicador que tem ndice 0 (
if(CopyBuffer(ind_handle,0,0,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iMFI, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1670

Indicadores Tcnicos

iMA
A funo retorna o manipulador do indicador Moving Average. Tem apenas um buffer.
int iMA(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo mdio

int

ma_shift,

// deslocamento horizontal

ENUM_MA_METHOD

ma_method,

// tipo suavizado

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou de manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] Perodo mdio para clculo da mdia mvel.
ma_shift
[in] Deslocamento do indicador relativo ao grfico de preos.
ma_method
[in] Tipo suavizado. Pode ser um dos valores ENUM_MA_METHOD.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iMA.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

2000-2015, MetaQuotes Software Corp.

1671

Indicadores Tcnicos
#property description "O indicador demonstra como obter dados"
#property description "de buffers do indicador para o indicador tcnico iMA."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property description "Todos os outros parmetros, assim como no padro Moving Average."
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iMA


#property indicator_label1

"iMA"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iMA,

// usar iMA

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iMA;

// tipo de funo

input int

ma_period=10;

// perodo da mdia mvel

input int

ma_shift=0;

// deslocamento

input ENUM_MA_METHOD

ma_method=MODE_SMA;

// tipo de suavizao

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE;

// tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iMABuffer[];

//--- varivel para armazenar o manipulador do indicator iMA


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Moving Average
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iMABuffer,INDICATOR_DATA);

2000-2015, MetaQuotes Software Corp.

1672

Indicadores Tcnicos
//--- definir deslocamento
PlotIndexSetInteger(0,PLOT_SHIFT,ma_shift);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iMA)
handle=iMA(name,period,ma_period,ma_shift,ma_method,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[4];
//--- perodo
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
//--- deslocamento
pars[1].type=TYPE_INT;
pars[1].integer_value=ma_shift;
//--- tipo de suavizao
pars[2].type=TYPE_INT;
pars[2].integer_value=ma_method;
//--- tipo de preo
pars[3].type=TYPE_INT;
pars[3].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_MA,4,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iMA para o smbolo %s/%s, cdigo de er


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Moving Average calculado para
short_name=StringFormat("iMA(%s/%s, %d, %d, %s, %s)",name,EnumToString(period),

ma_period, ma_shift,EnumToString(ma_method),EnumToString(applied_price))
IndicatorSetString(INDICATOR_SHORTNAME,short_name);

2000-2015, MetaQuotes Software Corp.

1673

Indicadores Tcnicos
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iMA
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iMABuffer maior do que o nmero de valores no indicador iMA para o smbolo
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array iMABuffer com valores do indicador Adaptive Moving Average
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iMABuffer,ma_shift,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);

2000-2015, MetaQuotes Software Corp.

1674

Indicadores Tcnicos
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Moving Average
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador MA

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &values[],
int shift,

// buffer do indicator para valores do Moving Average


// deslocamento

int ind_handle,

// manipulador do indicador iMA

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iMABuffer com valores do buffer do indicador que tem ndice 0 (z
if(CopyBuffer(ind_handle,0,-shift,amount,values)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iMA, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1675

Indicadores Tcnicos

iOsMA
A funo retorna o manipulador do indicador Moving Average of Oscillator. O oscilador s mostra a
diferena entre valores do indicador MACD e sua linha de sinal. Tem apenas um buffer.
int iOsMA(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

fast_ema_period,

// perodo Mdia Mvel Rpida

int

slow_ema_period,

// perodo Mdia Mvel Lenta

int

signal_period,

// perodo para diferena entre as mdias

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou de manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
fast_ema_period
[in] Perodo para clculo da Mdia Mvel Rpida.
slow_ema_period
[in] Perodo para clculo da Mdia Mvel Lenta.
signal_period
[in] Perodo para o clculo da linha de sinal.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
Em alguns sistemas este oscilador tambm conhecido como histograma MACD.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iOsMA.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

2000-2015, MetaQuotes Software Corp.

1676

Indicadores Tcnicos
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iOsMA."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t

#property description "Todos os outros parmetros so similares ao padro Moving Average of Oscilla
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iOsMA


#property indicator_label1

"iOsMA"

#property indicator_type1

DRAW_HISTOGRAM

#property indicator_color1

clrSilver

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iOsMA,

// usar iOsMA

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iOsMA;

// tipo de funo

input int

fast_ema_period=12;

// perodo da Mdia Mvel Rpida

input int

slow_ema_period=26;

// perodo da Mdia Mvel Lenta

input int

signal_period=9;

// perodo da diferena entre as mdias mvei

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE; // tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iOsMABuffer[];

//--- varivel para armazenar o manipulador do indicador iAMA


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Moving Average
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+

2000-2015, MetaQuotes Software Corp.

1677

Indicadores Tcnicos
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iOsMABuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iOsMA)
handle=iOsMA(name,period,fast_ema_period,slow_ema_period,signal_period,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[4];
//--- perodo da mdia mvel rpida
pars[0].type=TYPE_INT;
pars[0].integer_value=fast_ema_period;
//--- perodo lento da mdia mvel
pars[1].type=TYPE_INT;
pars[1].integer_value=slow_ema_period;
//--- perodo mdio da diferena entre a mdia mvel rpida e a lenta
pars[2].type=TYPE_INT;
pars[2].integer_value=signal_period;
//--- tipo de preo
pars[3].type=TYPE_INT;
pars[3].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_OSMA,4,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro
PrintFormat("Falha ao criar o manipulador do indicador iOsMA para o smbolo %s/%s, cdigo de
name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Moving Average of Oscillator calculado para
short_name=StringFormat("iOsMA(%s/%s,%d,%d,%d,%s)",name,EnumToString(period),

2000-2015, MetaQuotes Software Corp.

1678

Indicadores Tcnicos

fast_ema_period,slow_ema_period,signal_period,EnumToString(applied_price
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iOsMA
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iOsMABuffer maior do que o nmero de valores no indicador iOsMA para o sm
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher os arrays com valores do indicador iOsMA
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iOsMABuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),

2000-2015, MetaQuotes Software Corp.

1679

Indicadores Tcnicos
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Moving Average of Oscillator
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iOsMA

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &ama_buffer[],

// buffer do indicator para valores do OsMA

int ind_handle,

// manipulador do indicador iOsMA

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();
//--- preencher uma parte do array iOsMABuffer com valores do buffer do indicador que tem ndice 0
if(CopyBuffer(ind_handle,0,0,amount,ama_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iOsMA, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1680

Indicadores Tcnicos

iMACD
A funo retorna o manipulador do indicador Moving Averages Convergence/Divergence. Em sistemas
onde s chamado Histograma MACD, este indicador apresentado com duas linhas. No terminal
do cliente, o indicador Moving Averages Convergence/Divergence apresentado como um histograma.
int iMACD(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

fast_ema_period,

// perodo para clculo da mdia mvel rpida

int

slow_ema_period,

// perodo para clculo da mdia mvel lenta

int

signal_period,

// perodo para diferena entre as mdias

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou de manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
fast_ema_period
[in] Perodo para clculo da Mdia Mvel Rpida.
slow_ema_period
[in] Perodo para clculo da Mdia Mvel Lenta.
signal_period
[in] Perodo para clculo da linha de Sinal.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
Os nmeros de buffer so os seguintes: 0 - MAIN_LINE, 1 - SIGNAL_LINE.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iMACD.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

2000-2015, MetaQuotes Software Corp.

1681

Indicadores Tcnicos
//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iMACD."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property description "Todos os outros parmetros, assim como no padro MACD."
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar MACD


#property indicator_label1

"MACD"

#property indicator_type1

DRAW_HISTOGRAM

#property indicator_color1

clrSilver

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- plotar Signal


#property indicator_label2

"Signal"

#property indicator_type2

DRAW_LINE

#property indicator_color2

clrRed

#property indicator_style2

STYLE_DOT

#property indicator_width2

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iMACD,

// usar iMACD

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iMACD;

// tipo de funo

input int

fast_ema_period=12;

// perodo da Mdia Mvel Rpida

input int

slow_ema_period=26;

// perodo da Mdia Mvel Lenta

input int

signal_period=9;

// perodo da diferena entre as mdias mvei

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE; // tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffers do indicador


double

MACDBuffer[];

double

SignalBuffer[];

//--- varivel para armazenar o manipulador do indicator iMACD


int

handle;

//--- varivel para armazenamento

2000-2015, MetaQuotes Software Corp.

1682

Indicadores Tcnicos
string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Moving Averages Convergence/Divergence
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador
SetIndexBuffer(0,MACDBuffer,INDICATOR_DATA);
SetIndexBuffer(1,SignalBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iMACD)
handle=iMACD(name,period,fast_ema_period,slow_ema_period,signal_period,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[4];
//--- perodo da mdia mvel rpida
pars[0].type=TYPE_INT;
pars[0].integer_value=fast_ema_period;
//--- perodo lento da mdia mvel
pars[1].type=TYPE_INT;
pars[1].integer_value=slow_ema_period;
//--- perodo mdio da diferena entre a mdia mvel rpida e a lenta
pars[2].type=TYPE_INT;
pars[2].integer_value=signal_period;
//--- tipo de preo
pars[3].type=TYPE_INT;
pars[3].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_MACD,4,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

2000-2015, MetaQuotes Software Corp.

1683

Indicadores Tcnicos
PrintFormat("Falha ao criar o manipulador do indicador iMACD para o smbolo %s/%s, cdigo de
name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}

//--- mostra que o smbolo/prazo do indicador Moving Average Convergence/Divergence calculado par
short_name=StringFormat("iMACD(%s/%s,%d,%d,%d,%s)",name,EnumToString(period),

fast_ema_period,slow_ema_period,signal_period,EnumToString(applied_price
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iMACD
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array MACDBuffer maior do que o nmero de valores no indicador iMACD para o smb
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama

2000-2015, MetaQuotes Software Corp.

1684

Indicadores Tcnicos
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher os arrays com valores do indicador iMACD

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,
if(!FillArraysFromBuffers(MACDBuffer,SignalBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicadorMoving Averages Convergence/Divergence
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iMACD

//+------------------------------------------------------------------+
bool FillArraysFromBuffers(double &macd_buffer[],

// buffer do indicator para valores de MACD

double &signal_buffer[],

// buffer do indicator da linha de sinal do in

int ind_handle,

// manipulador do indicador iMACD

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();
//--- preencher uma parte do array iMACDBuffer com valores do buffer do indicador que tem ndice 0
if(CopyBuffer(ind_handle,0,0,amount,macd_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iMACD, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

//--- preencher uma parte do array SignalBuffer com valores do buffer do indicador que tem ndice 1
if(CopyBuffer(ind_handle,1,0,amount,signal_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iMACD, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}

2000-2015, MetaQuotes Software Corp.

1685

Indicadores Tcnicos
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1686

Indicadores Tcnicos

iOBV
A funo retorna o manipulador do indicador On Balance Volume. Tem apenas um buffer.
int iOBV(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

ENUM_APPLIED_VOLUME applied_volume

// tipo de volume para clculo

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
applied_volume
[in] O volume usado. Pode ser um dos valores ENUM_APPLIED_VOLUME.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iOBV.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iOBV."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iOBV


#property indicator_label1

"iOBV"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrLightSeaGreen

2000-2015, MetaQuotes Software Corp.

1687

Indicadores Tcnicos
#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iOBV ,

// usar iOBV

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iOBV;

// tipo de funo

input ENUM_APPLIED_VOLUME

applied_volume=VOLUME_TICK;

// tipo de volume

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffers do indicador


double

iOBVBuffer[];

//--- varivel para armazenar o manipulador do indicator iOBV


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador On Balance Volume
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iOBVBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iOBV)
handle=iOBV(name,period,applied_volume);
else
{
//--- preencher a estrutura com os parmetros do indicador

2000-2015, MetaQuotes Software Corp.

1688

Indicadores Tcnicos
MqlParam pars[1];
//--- tipo de volume
pars[0].type=TYPE_INT;
pars[0].integer_value=applied_volume;
handle=IndicatorCreate(name,period,IND_OBV,1,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador para o smbolo %s/%s, cdigo de erro %


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador On Balance Volume calculado para
short_name=StringFormat("iOBV(%s/%s, %s)",name,EnumToString(period),
EnumToString(applied_volume));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iOBV
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud

2000-2015, MetaQuotes Software Corp.

1689

Indicadores Tcnicos
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iOBVBuffer maior do que o nmero de valores no indicador iOBV para o smbo
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array com valores do indicador iOBV
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iOBVBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador On Balance Volume
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iOBV

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &obv_buffer[],

// buffer do indicator para valores do OBV

int ind_handle,

// manipulador do indicador iOBV

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iOBVBuffer com valores do buffer do indicador que tem ndice 0 (
if(CopyBuffer(ind_handle,0,0,amount,obv_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iOBV, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}

2000-2015, MetaQuotes Software Corp.

1690

Indicadores Tcnicos
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1691

Indicadores Tcnicos

iSAR
A funo retorna o manipulador do indicador Parabolic Stop and Reverse system. Tem apenas um
buffer.
int iSAR(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES period,

// perodo

double

step,

// incrementar passo

double

maximum

// mximo nvel de parada

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
step
[in] O nvel de parada incrementado, usualmente 0.02.
maximum
[in] O mximo nvel de parada, usualmente 0.2.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iSAR.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iSAR."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t

#property description "Todos os outros parmetros so similares ao padro Parabolic Stop and Revers
#property indicator_chart_window

2000-2015, MetaQuotes Software Corp.

1692

Indicadores Tcnicos
#property indicator_buffers 1
#property indicator_plots

//--- desenhando iSAR


#property indicator_label1

"iSAR"

#property indicator_type1

DRAW_ARROW

#property indicator_color1

clrBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iSAR,

// usar iSAR

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iSAR;

// tipo de funo

input double

step=0.02;

// passo - o fator de acelerao para arra

input double

maximum=0.2;

// mximo valor do passo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffers do indicador


double

iSARBuffer[];

//--- varivel para armazenar o manipulador do indicator iSAR


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Parabolic SAR
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iSARBuffer,INDICATOR_DATA);

//--- definir um cdigo de smbolo do conjunto de caracteres Wingdings para a propriedade PLOT_ARRO
PlotIndexSetInteger(0,PLOT_ARROW,159);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{

2000-2015, MetaQuotes Software Corp.

1693

Indicadores Tcnicos
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iSAR)
handle=iSAR(name,period,step,maximum);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[2];
//--- valor do passo
pars[0].type=TYPE_DOUBLE;
pars[0].double_value=step;
//--- limite do valor do passo que pode ser usado para os clculos
pars[1].type=TYPE_DOUBLE;
pars[1].double_value=maximum;
handle=IndicatorCreate(name,period,IND_SAR,2,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iSAR para o smbolo %s/%s, cdigo de e


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Parabolic SAR calculado para
short_name=StringFormat("iSAR(%s/%s, %G, %G)",name,EnumToString(period),
step,maximum);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])

2000-2015, MetaQuotes Software Corp.

1694

Indicadores Tcnicos
{
//--- nmero de valores copiados a partir do indicador iSAR
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iSARBuffer maior do que o nmero de valores no indicador iSAR para o smbo
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher os arrays com valores do indicador iSAR
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iSARBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador SAR
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iSAR

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &sar_buffer[],

// buffer do indicator para valores do Parabolic SA

int ind_handle,

// manipulador do indicador iSAR

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro

2000-2015, MetaQuotes Software Corp.

1695

Indicadores Tcnicos
ResetLastError();

//--- preencher uma parte do array iSARBuffer com valores do buffer do indicador que tem ndice 0 (
if(CopyBuffer(ind_handle,0,0,amount,sar_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iSAR, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1696

Indicadores Tcnicos

iRSI
A funo retorna o manipulador do indicador Relative Strength Index. Tem apenas um buffer.
int iRSI(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo mdio

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] Perodo mdio para clculo do RSI.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iRSI.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iRSI."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t

#property description "Todos os outros parmetros so similares ao padro Relative Strength Index."
#property indicator_separate_window

2000-2015, MetaQuotes Software Corp.

1697

Indicadores Tcnicos
#property indicator_buffers 1
#property indicator_plots

//--- desenhando iRSI


#property indicator_label1

"iRSI"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrDodgerBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- limites para mostrar os valores na janela do indicador


#property indicator_maximum 100
#property indicator_minimum 0
//--- nveis horizontais na janela de indicador
#property indicator_level1

70.0

#property indicator_level2

30.0

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iRSI,

// usar iRSI

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iRSI;

// tipo de funo

input int

ma_period=14;

// perodo da mdia mvel

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE;

// tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iRSIBuffer[];

//--- varivel para armazenar o manipulador do indicator iRSI


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Relative Strength Index
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iRSIBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);

2000-2015, MetaQuotes Software Corp.

1698

Indicadores Tcnicos
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iRSI)
handle=iRSI(name,period,ma_period,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[2];
//--- perodo de mdia mvel
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
//--- limite do valor do passo que pode ser usado para os clculos
pars[1].type=TYPE_INT;
pars[1].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_RSI,2,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iRSI para o smbolo %s/%s, cdigo de e


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Relative Strength Index calculado para
short_name=StringFormat("iRSI(%s/%s, %d, %d)",name,EnumToString(period),
ma_period,applied_price);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],

2000-2015, MetaQuotes Software Corp.

1699

Indicadores Tcnicos
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iRSI
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iRSIBuffer maior do que o nmero de valores no indicador iRSI para o smbo
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array com valores do indicador iRSI
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iRSIBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Relative Strength Index
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &rsi_buffer[],
int ind_handle,

// buffer do indicator para valores do Relative Str


// manipulador do indicador iRSI

2000-2015, MetaQuotes Software Corp.

1700

Indicadores Tcnicos
int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iRSIBuffer com valores do buffer do indicador que tem ndice 0 (
if(CopyBuffer(ind_handle,0,0,amount,rsi_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iRSI, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1701

Indicadores Tcnicos

iRVI
A funo retorna o manipulador do indicador Relative Vigor Index.
int iRVI(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES period,

// perodo

int

// perodo mdio

ma_period

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] Perodo mdio para clculo do indicador RVI.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
Os nmeros de buffer so os seguintes: 0 - MAIN_LINE, 1 - SIGNAL_LINE.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iRVI.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iRVI."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property description "Todos os outros parmetros so similares ao padro Relative Vigor Index."
#property indicator_separate_window
#property indicator_buffers 2

2000-2015, MetaQuotes Software Corp.

1702

Indicadores Tcnicos
#property indicator_plots

//--- plotar RVI


#property indicator_label1

"RVI"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrGreen

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- plotar Signal


#property indicator_label2

"Signal"

#property indicator_type2

DRAW_LINE

#property indicator_color2

clrRed

#property indicator_style2

STYLE_SOLID

#property indicator_width2

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iRVI,

// usar iRVI

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iRVI;

// tipo de funo

input int

ma_period=10;

// perodo para clculos

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffers do indicador


double

RVIBuffer[];

double

SignalBuffer[];

//--- varivel para armazenar o manipulador do indicator iRVI


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Relative Vigor Index
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador
SetIndexBuffer(0,RVIBuffer,INDICATOR_DATA);
SetIndexBuffer(1,SignalBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);

2000-2015, MetaQuotes Software Corp.

1703

Indicadores Tcnicos
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iRVI)
handle=iRVI(name,period,ma_period);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[1];
//--- perodo para clculos
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
handle=IndicatorCreate(name,period,IND_RVI,1,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iRVI para o smbolo %s/%s, cdigo de e


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Relative Vigor Index calculado para
short_name=StringFormat("iRVI(%s/%s, %d, %d)",name,EnumToString(period),ma_period);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])

2000-2015, MetaQuotes Software Corp.

1704

Indicadores Tcnicos
{
//--- nmero de valores copiados a partir do indicador iRVI
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array RVIBuffer maior do que o nmero de valores no indicador iRVI para o smbol
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array com valores do indicador iRVI
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(RVIBuffer,SignalBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Relative Vigor Index
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iRVI

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &rvi_buffer[],

// buffer do indicator para valores do Relative

double &signal_buffer[],

// buffer do indicator da linha de sinal

int ind_handle,

// manipulador do indicador iRVI

int amount

// nmero de valores copiados

)
{

2000-2015, MetaQuotes Software Corp.

1705

Indicadores Tcnicos
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iRVIBuffer com valores do buffer do indicador que tem ndice 0 (
if(CopyBuffer(ind_handle,0,0,amount,rvi_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iRVI, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

//--- preencher uma parte do array SignalBuffer com valores do buffer do indicador que tem ndice 1
if(CopyBuffer(ind_handle,1,0,amount,signal_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iRVI, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1706

Indicadores Tcnicos

iStdDev
A funo retorna o manipulador do indicador Standard Deviation. Tem apenas um buffer.
int iStdDev(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo mdio

int

ma_shift,

// deslocamento horizontal

ENUM_MA_METHOD

ma_method,

// tipo suavizado

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] Perodo mdio para clculos do indicador.
ma_shift
[in] Deslocamento do indicador relativo ao grfico de preos.
ma_method
[in] Tipo de mdia. Pode ser qualquer um dos valores do ENUM_MA_METHOD.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iStdDev.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

2000-2015, MetaQuotes Software Corp.

1707

Indicadores Tcnicos
#property description "O indicador demonstra como obter dados"
#property description "de buffers do indicador para o indicador tcnico iStdDev."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property description "Todos os outros parmetros so similares ao padro Deviation."
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iStdDev


#property indicator_label1

"iStdDev"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrMediumSeaGreen

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iStdDev,

// usar iStdDev

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iStdDev;

// tipo de funo

input int

ma_period=20;

// perodo mdio

input int

ma_shift=0;

// deslocamento

input ENUM_MA_METHOD

ma_method=MODE_SMA;

// tipo de suavizao

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE; // tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iStdDevBuffer[];

//--- varivel para armazenar o manipulador do indicator iStdDev


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Standard Deviation
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iStdDevBuffer,INDICATOR_DATA);

2000-2015, MetaQuotes Software Corp.

1708

Indicadores Tcnicos
//--- definir deslocamento
PlotIndexSetInteger(0,PLOT_SHIFT,ma_shift);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iStdDev)
handle=iStdDev(name,period,ma_period,ma_shift,ma_method,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[4];
//--- perodo
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
//--- deslocamento
pars[1].type=TYPE_INT;
pars[1].integer_value=ma_shift;
//--- tipo de suavizao
pars[2].type=TYPE_INT;
pars[2].integer_value=ma_method;
//--- tipo de preo
pars[3].type=TYPE_INT;
pars[3].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_STDDEV,4,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iStdDev para o smbolo %s/%s, cdigo d


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Standard Deviation calculado para
short_name=StringFormat("iStdDev(%s/%s, %d, %d, %s, %s)",name,EnumToString(period),

ma_period,ma_shift,EnumToString(ma_method),EnumToString(applied_price));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);

2000-2015, MetaQuotes Software Corp.

1709

Indicadores Tcnicos
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iStdDev
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iStdDevBuffer maior do que o nmero de valores no indicador iStdDev para o
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array com valores do indicador Standard Deviation
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iStdDevBuffer,ma_shift,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);

2000-2015, MetaQuotes Software Corp.

1710

Indicadores Tcnicos
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Standard Deviation
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iStdDev

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &std_buffer[],

// buffer do indicator para linha Standard Deviatio

int std_shift,

// deslocamento da linha Standard Deviation

int ind_handle,

// manipulador do indicador iStdDev

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();
//--- preencher uma parte do array iStdDevBuffer com valores do buffer do indicador que tem ndice
if(CopyBuffer(ind_handle,0,-std_shift,amount,std_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iStdDev, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1711

Indicadores Tcnicos

iStochastic
A funo retorna o manipulador do indicador Stochastic Oscillator.
int iStochastic(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES period,

// perodo

int

Kperiod,

// K-period (nmero de barras para clculos)

int

Dperiod,

// D-period (perodo da primeira suavizao)

int

slowing,

// final da suavizao

ENUM_MA_METHOD

ma_method,

// tipo de suavizao

ENUM_STO_PRICE

price_field

// mtodo de clculo estocstico

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
Kperiod
[in] Perodo mdio (barras contadas) para o clculo da linha K%.
Dperiod
[in] Perodo mdio (barras contadas) para o clculo da linha %D.
slowing
[in] Valor da desacelerao.
ma_method
[in] Tipo de mdia. Pode ser qualquer um dos valores do ENUM_MA_METHOD.
price_field
[in] Parmetros de seleo de preo para clculos. Pode ser um dos valoresENUM_STO_PRICE.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Observao
O nmero de buffer: 0 - MAIN_LINE, 1 - SIGNAL_LINE.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iStochastic.mq5 |

2000-2015, MetaQuotes Software Corp.

1712

Indicadores Tcnicos
//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iStochastic."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property description "Todos os outros parmetros so similares ao padro."
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar Stochastic


#property indicator_label1

"Stochastic"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrLightSeaGreen

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- plotar Signal


#property indicator_label2

"Signal"

#property indicator_type2

DRAW_LINE

#property indicator_color2

clrRed

#property indicator_style2

STYLE_SOLID

#property indicator_width2

//--- definir o limite dos valores do indicador


#property indicator_minimum 0
#property indicator_maximum 100
//--- nveis horizontais na janela de indicador
#property indicator_level1

-100.0

#property indicator_level2

100.0

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iStochastic,

// usar iStochastic

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iStochastic;

// tipo de funo

input int

Kperiod=5;

// o perodo K ( o nmero de barras para clc

input int

Dperiod=3;

// o perodo D (o perodo da suavizao prim

input int

slowing=3;

// perodo final da suavizao

input ENUM_MA_METHOD

ma_method=MODE_SMA;

// tipo de suavizao

input ENUM_STO_PRICE

price_field=STO_LOWHIGH;

// mtodo de clculo do Estocstico

2000-2015, MetaQuotes Software Corp.

1713

Indicadores Tcnicos
input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffers do indicador


double

StochasticBuffer[];

double

SignalBuffer[];

//--- varivel para armazenar o manipulador do indicator iStochastic


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Stochastic Oscillatorr
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de arrays para buffers do indicador
SetIndexBuffer(0,StochasticBuffer,INDICATOR_DATA);
SetIndexBuffer(1,SignalBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iStochastic)
handle=iStochastic(name,period,Kperiod,Dperiod,slowing,ma_method,price_field);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[5];
//--- o perodo K para clculos
pars[0].type=TYPE_INT;
pars[0].integer_value=Kperiod;
//--- o perodo D para suavizao primria
pars[1].type=TYPE_INT;
pars[1].integer_value=Dperiod;
//--- o perodo K final para suavizao
pars[2].type=TYPE_INT;
pars[2].integer_value=slowing;
//--- tipo de suavizao

2000-2015, MetaQuotes Software Corp.

1714

Indicadores Tcnicos
pars[3].type=TYPE_INT;
pars[3].integer_value=ma_method;
//--- mtodo de clculo do Estocstico
pars[4].type=TYPE_INT;
pars[4].integer_value=price_field;
handle=IndicatorCreate(name,period,IND_STOCHASTIC,5,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador para o smbolo %s/%s, cdigo de erro %


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Stochastic Oscillator calculado para
short_name=StringFormat("iStochastic(%s/%s, %d, %d, %d, %s, %s)",name,EnumToString(period),

Kperiod,Dperiod,slowing,EnumToString(ma_method),EnumToString(price_field
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iStochastic
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

2000-2015, MetaQuotes Software Corp.

1715

Indicadores Tcnicos

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array StochasticBuffer maior do que o nmero de valores no indicador iStochastic


//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher os arrays com valores do indicador iStochastic

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,
if(!FillArraysFromBuffers(StochasticBuffer,SignalBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Stochastic Oscillator
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iStochastic |
//+------------------------------------------------------------------+
bool FillArraysFromBuffers(double &main_buffer[],

// buffer do indicador dos valores do Stochast

double &signal_buffer[],

// buffer do indicator da linha de sinal

int ind_handle,

// manipulador do indicador iStochastic

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array StochasticBuffer com valores do buffer do indicador que tem ndi
if(CopyBuffer(ind_handle,MAIN_LINE,0,amount,main_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iStochastic, cdigo de erro %d",GetLastError(


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

//--- preencher uma parte do array SignalBuffer com valores do buffer do indicador que tem ndice 1

2000-2015, MetaQuotes Software Corp.

1716

Indicadores Tcnicos
if(CopyBuffer(ind_handle,SIGNAL_LINE,0,amount,signal_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iStochastic, cdigo de erro %d",GetLastError(


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1717

Indicadores Tcnicos

iTEMA
A funo retorna o manipulador do indicador Triple Exponential Moving Average. Tem apenas um
buffer.
int iTEMA(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo mdio

int

ma_shift,

// deslocamento horizontal indicador

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] Perodo mdio (barras contadas) para clculo.
ma_shift
[in] Deslocamento do indicador relativo tabela de preos.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iTEMA.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iTEMA."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"

2000-2015, MetaQuotes Software Corp.

1718

Indicadores Tcnicos
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t

#property description "Todos os outros parmetros so similares ao padro Triple Exponential Moving
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iTEMA


#property indicator_label1

"iTEMA"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iTEMA,

// usar iTEMA

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iTEMA;

// tipo de funo

input int

ma_period=14;

// perodo mdio

input int

ma_shift=0;

// deslocamento

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE; // tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iTEMABuffer[];

//--- varivel para armazenar o manipulador do indicator Triple Exponential Moving Average
int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Triple Exponential Moving Average
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iTEMABuffer,INDICATOR_DATA);
//--- definir deslocamento
PlotIndexSetInteger(0,PLOT_SHIFT,ma_shift);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;

2000-2015, MetaQuotes Software Corp.

1719

Indicadores Tcnicos
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iTEMA)
handle=iTEMA(name,period,ma_period,ma_shift,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[3];
//--- perodo
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
//--- deslocamento
pars[1].type=TYPE_INT;
pars[1].integer_value=ma_shift;
//--- tipo de preo
pars[2].type=TYPE_INT;
pars[2].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_TEMA,3,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro
PrintFormat("Falha ao criar o manipulador do indicador iTEMA para o smbolo %s/%s, cdigo de
name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Triple Exponential Moving Average calculado para
short_name=StringFormat("iTEMA(%s/%s, %d, %d, %s)",name,EnumToString(period),
ma_period,ma_shift,EnumToString(applied_price));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,

2000-2015, MetaQuotes Software Corp.

1720

Indicadores Tcnicos
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iTEMA
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iTEMABuffer maior do que o nmero de valores no indicador iTEMA para o sm
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array com valores do indicador Triple Exponential Moving Average
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iTEMABuffer,ma_shift,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Triple Exponential Moving Average
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}

2000-2015, MetaQuotes Software Corp.

1721

Indicadores Tcnicos
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iTEMA

//+------------------------------------------------------------------+

bool FillArrayFromBuffer(double &tema_buffer[], // buffer do indicator para valores do Triple Expon


int t_shift,

// deslocamento da linha

int ind_handle,

// manipulador do indicador iTEMA

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();
//--- preencher uma parte do array iTEMABuffer com valores do buffer do indicador que tem ndice 0
if(CopyBuffer(ind_handle,0,-t_shift,amount,tema_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iTEMA, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1722

Indicadores Tcnicos

iTriX
A funo retorna o manipulador do indicador Triple Exponential Moving Averages Oscillator. Tem
apenas um buffer.
int iTriX(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

ma_period,

// perodo mdio

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
ma_period
[in] Perodo mdio (barras contadas) para clculos.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iTriX.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iTriX."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window

2000-2015, MetaQuotes Software Corp.

1723

Indicadores Tcnicos
#property indicator_buffers 1
#property indicator_plots

//--- plotar iTriX


#property indicator_label1

"iTriX"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrRed

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iTriX,

// usar iTriX

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iTriX;

// tipo de funo

input int

ma_period=14;

// perodo

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE; // tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iTriXBuffer[];

//--- varivel para armazenar o manipulador do indicator iTriX


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Triple Exponential Moving Averages Oscillator
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iTriXBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;

2000-2015, MetaQuotes Software Corp.

1724

Indicadores Tcnicos
}
//--- criar manipulador do indicador
if(type==Call_iTriX)
handle=iTriX(name,period,ma_period,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[2];
//--- perodo
pars[0].type=TYPE_INT;
pars[0].integer_value=ma_period;
//--- tipo de preo
pars[1].type=TYPE_INT;
pars[1].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_TRIX,2,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro
PrintFormat("Falha ao criar o manipulador do indicador iTriX para o smbolo %s/%s, cdigo de
name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}

//--- mostra que o smbolo/prazo do indicador Triple Exponential Moving Averages Oscillator calcu
short_name=StringFormat("iTriX(%s/%s, %d, %s)",name,EnumToString(period),
ma_period,EnumToString(applied_price));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iTriX

2000-2015, MetaQuotes Software Corp.

1725

Indicadores Tcnicos
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iTriXBuffer maior do que o nmero de valores no indicador iTriX para o sm
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array com valores do indicador Triple Exponential Moving Averages Oscillator
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iTriXBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Triple Exponential Moving Averages Oscillator
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iTriX

//+------------------------------------------------------------------+

bool FillArrayFromBuffer(double &trix_buffer[], // buffer do indicator para valores do Triple Expon


int ind_handle,

// manipulador do indicador iTriX

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();
//--- preencher uma parte do array iTriXBuffer com valores do buffer do indicador que tem ndice 0

2000-2015, MetaQuotes Software Corp.

1726

Indicadores Tcnicos
if(CopyBuffer(ind_handle,0,0,amount,trix_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iTriX, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1727

Indicadores Tcnicos

iWPR
A funo retorna o manipulador do indicador Larry Williams' Percent Range. Tem apenas um buffer.
int iWPR(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES period,

// perodo

int

// perodo mdio

calc_period

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
calc_period
[in] Perodo (barras contadas) para clculo do indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iWPR.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iWPR."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iWPR


#property indicator_label1

"iWPR"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrCyan

2000-2015, MetaQuotes Software Corp.

1728

Indicadores Tcnicos
#property indicator_style1

STYLE_SOLID

#property indicator_width1

//--- definir o limite dos valores do indicador


#property indicator_minimum -100
#property indicator_maximum 0
//--- nveis horizontais na janela de indicador
#property indicator_level1

-20.0

#property indicator_level2

-80.0

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iWPR,

// usar iWPR

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iWPR;

// tipo de funo

input int

calc_period=14;

// perodo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iWPRBuffer[];

//--- varivel para armazenar o manipulador do indicator iWPR


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Larry Williams' Percent Range
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iWPRBuffer,INDICATOR_DATA);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}

2000-2015, MetaQuotes Software Corp.

1729

Indicadores Tcnicos
//--- criar manipulador do indicador
if(type==Call_iWPR)
handle=iWPR(name,period,calc_period);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[1];
//--- perodo
pars[0].type=TYPE_INT;
pars[0].integer_value=calc_period;
handle=IndicatorCreate(name,period,IND_WPR,1,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iWPR para o smbolo %s/%s, cdigo de e


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Williams' Percent Range calculado para
short_name=StringFormat("iWPR(%s/%s, %d)",name,EnumToString(period),calc_period);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iWPR
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{

2000-2015, MetaQuotes Software Corp.

1730

Indicadores Tcnicos
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iWPRBuffer maior do que o nmero de valores no indicador iWPR para o smbo
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array com valores do indicador Williams' Percent Range
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iWPRBuffer,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Larry Williams' Percent Range
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iWPR

//+------------------------------------------------------------------+
bool FillArrayFromBuffer(double &wpr_buffer[],

// buffer do indicator para valores do Williams' Pe

int ind_handle,

// manipulador do indicador iWPR

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iWPRBuffer com valores do buffer do indicador que tem ndice 0 (
if(CopyBuffer(ind_handle,0,0,amount,wpr_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iWPR, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado

2000-2015, MetaQuotes Software Corp.

1731

Indicadores Tcnicos
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1732

Indicadores Tcnicos

iVIDyA
A funo retorna o manipulador do indicador Variable Index Dynamic Average. Tem apenas um buffer.
int iVIDyA(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

int

cmo_period,

// perodo para indicador Chande Momentum

int

ema_period,

// perodo suavizado do indicador EMA

int

ma_shift,

// deslocamento horizontal no grfico

ENUM_APPLIED_PRICE applied_price

// tipo de preo ou manipulador

);

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
cmo_period
[in] Perodo (barras contadas) para clculo do indicador Chande Momentum Oscillator.
ema_period
[in] Perodo do indicador EMA (barras contadas) para clculo do fator de suavizao.
ma_shift
[in] Deslocamento do indicador relativo ao grfico de preos.
applied_price
[in] O preo usado. Pode ser qualquer das constantes de preos ENUM_APPLIED_PRICE ou um
manipulador de outro indicador.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iVIDyA.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

2000-2015, MetaQuotes Software Corp.

1733

Indicadores Tcnicos
#property description "O indicador demonstra como obter dados"
#property description "de buffers do indicador para o indicador tcnico iVIDyA."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t

#property description "Todos os outros parmetros so similares ao padro Variable Index Dynamic Av
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots

//--- plotar iVIDyA


#property indicator_label1

"iVIDyA"

#property indicator_type1

DRAW_LINE

#property indicator_color1

clrBlue

#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iVIDyA,

// usar iVIDyA

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iVIDyA;

// tipo de funo

input int

cmo_period=15;

// o perodo do indicador Chande Momentum

input int

ema_period=12;

// perodo do fator de suavizao

input int

ma_shift=0;

// deslocamento

input ENUM_APPLIED_PRICE

applied_price=PRICE_CLOSE; // tipo de preo

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffer do indicador


double

iVIDyABuffer[];

//--- varivel para armazenar o manipulador do indicator iVIDyA


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Variable Index Dynamic Average
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iVIDyABuffer,INDICATOR_DATA);

2000-2015, MetaQuotes Software Corp.

1734

Indicadores Tcnicos
//--- definir deslocamento
PlotIndexSetInteger(0,PLOT_SHIFT,ma_shift);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iVIDyA)
handle=iVIDyA(name,period,cmo_period,ema_period,ma_shift,applied_price);
else
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[4];
//--- o perodo do indicador Chande Momentum
pars[0].type=TYPE_INT;
pars[0].integer_value=cmo_period;
//--- perodo do fator de suavizao
pars[1].type=TYPE_INT;
pars[1].integer_value=ema_period;
//--- deslocamento
pars[2].type=TYPE_INT;
pars[2].integer_value=ma_shift;
//--- tipo de preo
pars[3].type=TYPE_INT;
pars[3].integer_value=applied_price;
handle=IndicatorCreate(name,period,IND_VIDYA,4,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro

PrintFormat("Falha ao criar o manipulador do indicador iVIDyA para o smbolo %s/%s, cdigo de


name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Variable Index Dynamic Average calculado para
short_name=StringFormat("iVIDyA(%s/%s, %d, %d, %d, %s)",name,EnumToString(period),
cmo_period,ema_period,ma_shift,EnumToString(applied_price));
IndicatorSetString(INDICATOR_SHORTNAME,short_name);

2000-2015, MetaQuotes Software Corp.

1735

Indicadores Tcnicos
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador iVIDyA
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iVIDyABuffer maior do que o nmero de valores no indicador iVIDyA para o s
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher o array com valores do indicador Variable Index Dynamic Average
//--- se FillArrayFromBuffer retorna falso, significa que a informao no est pronta ainda, sair
if(!FillArrayFromBuffer(iVIDyABuffer,ma_shift,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);

2000-2015, MetaQuotes Software Corp.

1736

Indicadores Tcnicos
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Variable Index Dynamic Average
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iVIDyA

//+------------------------------------------------------------------+

bool FillArrayFromBuffer(double &vidya_buffer[],// buffer do indicator para valores do Variable Ind


int v_shift,

// deslocamento da linha

int ind_handle,

// manipulador do indicador iVIDyA

int amount

// nmero de valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iVIDyABuffer com valores do buffer do indicador que tem ndice 0
if(CopyBuffer(ind_handle,0,-v_shift,amount,vidya_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro
PrintFormat("Falha ao copiar dados do indicador iVIDyA, cdigo de erro %d",GetLastError());
//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1737

Indicadores Tcnicos

iVolumes
A funo retorna o manipulador do indicador. Tem apenas um buffer.
int iVolumes(
string

symbol,

// smbolo nome

ENUM_TIMEFRAMES

period,

// perodo

ENUM_APPLIED_VOLUME applied_volume

// tipo de volume para o clculo

Parmetros
symbol
[in] O nome do smbolo de segurana, os dados que devem ser usados para calcular o indicador. O
valor NULL significa o smbolo atual.
period
[in] O valor do perodo pode ser um dos valores ENUM_TIMEFRAMES, 0 (zero) significa o prazo
corrente.
applied_volume
[in] O volume utilizado. Pode ser um dos valores ENUM_APPLIED_VOLUME.
Valor de retorno
Retorna o manipulador de um indicador tcnico especifico, em caso de falha de retorna
INVALID_HANDLE. A memria do computador pode ser liberada a partir de um indicador que no
mais utilizado, usando a funo IndicatorRelease(), onde o manipulador de indicador transmitido.
Exemplo:
//+------------------------------------------------------------------+
//|

Demo_iVolumes.mq5 |

//|

Copyright 2011, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

#property description "O indicador demonstra como obter dados"


#property description "de buffers do indicador para o indicador tcnico iVolumes."
#property description "Um smbolo e o prazo utilizado para o clculo do indicador,"
#property description "so definidos pelos parmetros de smbolo e perodo."

#property description "O mtodo de criao do manipulador definido atravs do parmetro "type" (t
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots

//--- plotar iVolumes


#property indicator_label1

"iVolumes"

#property indicator_type1

DRAW_COLOR_HISTOGRAM

#property indicator_color1

clrGreen, clrRed

2000-2015, MetaQuotes Software Corp.

1738

Indicadores Tcnicos
#property indicator_style1

STYLE_SOLID

#property indicator_width1

//+------------------------------------------------------------------+
//| Enumerador dos mtodos de criao do manipulador

//+------------------------------------------------------------------+
enum Creation
{
Call_iVolumes,

// usar iVolumes

Call_IndicatorCreate

// usar IndicatorCreate

};
//--- parmetros de entrada
input Creation

type=Call_iVolumes;

// tipo de funo

input ENUM_APPLIED_VOLUME

applied_volume=VOLUME_TICK;

// tipo de volume

input string

symbol=" ";

// smbolo

input ENUM_TIMEFRAMES

period=PERIOD_CURRENT;

// timeframe

//--- buffers do indicador


double

iVolumesBuffer[];

double

iVolumesColors[];

//--- varivel para armazenar o manipulador do indicator iVolumes


int

handle;

//--- varivel para armazenamento


string name=symbol;
//--- nome do indicador num grfico
string short_name;
//--- manteremos o nmero de valores no indicador Volumes
int

bars_calculated=0;

//+------------------------------------------------------------------+
//| Funo de inicializao do indicador customizado

//+------------------------------------------------------------------+
int OnInit()
{
//--- atribuio de array para buffer do indicador
SetIndexBuffer(0,iVolumesBuffer,INDICATOR_DATA);
SetIndexBuffer(1,iVolumesColors,INDICATOR_COLOR_INDEX);
//--- determinar o smbolo do indicador, desenhado para
name=symbol;
//--- excluir os espaos direita e esquerda
StringTrimRight(name);
StringTrimLeft(name);
//--- se resulta em comprimento zero da string do 'name'
if(StringLen(name)==0)
{
//--- tomar o smbolo do grfico, o indicador est anexado para
name=_Symbol;
}
//--- criar manipulador do indicador
if(type==Call_iVolumes)
handle=iVolumes(name,period,applied_volume);
else

2000-2015, MetaQuotes Software Corp.

1739

Indicadores Tcnicos
{
//--- preencher a estrutura com os parmetros do indicador
MqlParam pars[1];
//--- tipo de preo
pars[0].type=TYPE_INT;
pars[0].integer_value=applied_volume;
handle=IndicatorCreate(name,period,IND_VOLUMES,1,pars);
}
//--- se o manipulador no criado
if(handle==INVALID_HANDLE)
{
//--- mensagem sobre a falha e a sada do cdigo de erro
PrintFormat("Falha ao criar o manipulador do indicador iVolumes para o smbolo %s/%s, cdigo
name,
EnumToString(period),
GetLastError());
//--- o indicador interrompido precocemente
return(INIT_FAILED);
}
//--- mostra que o smbolo/prazo do indicador Volumes calculado para

short_name=StringFormat("iVolumes(%s/%s, %s)",name,EnumToString(period),EnumToString(applied_vol
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- inicializao normal do indicador
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de iterao do indicador customizado

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- nmero de valores copiados a partir do indicador
int values_to_copy;
//--- determinar o nmero de valores calculados no indicador
int calculated=BarsCalculated(handle);
if(calculated<=0)
{
PrintFormat("BarsCalculated() retornando %d, cdigo de erro %d",calculated,GetLastError());
return(0);
}

//--- se for o princpio do clculo do indicador, ou se o nmero de valores modificado no indicad

2000-2015, MetaQuotes Software Corp.

1740

Indicadores Tcnicos

//--- ou se necessrio clculo do indicador para duas ou mais barras (isso significa que algo mud
if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
{

//--- se o array iVolumesBuffer maior do que o nmero de valores no indicador iVolumes para
//--- caso contrrio, copiamos menor do que o tamanho dos buffers do indicador
if(calculated>rates_total) values_to_copy=rates_total;
else

values_to_copy=calculated;

}
else
{

//--- isso significa que no a primeira vez do clculo do indicador, desde a ltima chama
//--- para o clculo no mais do que uma barra adicionada
values_to_copy=(rates_total-prev_calculated)+1;
}
//--- preencher os arrays com valores do indicador iVolumes

//--- se FillArraysFromBuffer retorna falso, isto significa que a informao ainda no est pronta,
if(!FillArraysFromBuffers(iVolumesBuffer,iVolumesColors,handle,values_to_copy)) return(0);
//--- formar a mensagem
string comm=StringFormat("%s ==>

Valor atualizado no indicador %s: %d",

TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),
short_name,
values_to_copy);
//--- exibir a mensagem de servio no grfico
Comment(comm);
//--- memorizar o nmero de valores no indicador Volumes
bars_calculated=calculated;
//--- retorna o valor prev_calculated para a prxima chamada
return(rates_total);
}
//+------------------------------------------------------------------+
//| Preencher buffers do indicador a partir do indicador iVolumes

//+------------------------------------------------------------------+
bool FillArraysFromBuffers(double &volume_buffer[],

// buffer do indicator para valores do Volume

double &color_buffer[],

// buffer do indicator de cores

int ind_handle,

// manipulador do indicador iVolumes

int amount

// nmero dos valores copiados

)
{
//--- redefinir o cdigo de erro
ResetLastError();

//--- preencher uma parte do array iVolumesBuffer com valores do buffer do indicador que tem ndice
if(CopyBuffer(ind_handle,0,0,amount,volume_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iVolumes, cdigo de erro %d",GetLastError());


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}

//--- preencher uma parte do array iVolumesColors com valores do buffer do indicador que tem ndice

2000-2015, MetaQuotes Software Corp.

1741

Indicadores Tcnicos
if(CopyBuffer(ind_handle,1,0,amount,color_buffer)<0)
{
//--- Se a cpia falhar, informe o cdigo de erro

PrintFormat("Falha ao copiar dados do indicador iVolumes, cdigo de erro %d",GetLastError());


//--- parar com resultado zero - significa que indicador considerado como no calculado
return(false);
}
//--- est tudo bem
return(true);
}
//+------------------------------------------------------------------+
//| Funo de desinicializao do indicador

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- limpar o grfico aps excluir o indicador
Comment("");
}

2000-2015, MetaQuotes Software Corp.

1742

Trabalhando com Resultados de Otimizao

Trabalhando com Resultados de Otimizao


Funes para organizar processamento personalizado da otimizao resultando no testador de
estratgia. Elas podem ser chamadas durante a otimizao de agentes de teste, bem como localmente
em Expert Advisors e scripts.
Quando voc executa um Expert Advisor no testador de estratgia, voc pode criar seu prprio
conjunto de dados com base nos tipos simples ou estruturas simples (no contm strings, objetos de
classe ou objetos de arrays dinmicas). Este conjunto de dados podem ser salvos utilizando a funo
FrameAdd() numa estrutura especial chamando um quadro. Durante a otimizao de um Expert
Advisor cada agente pode enviar uma srie de quadros para o terminal. Todos os quadros recebidos
so gravados no arquivo *.MQD na pasta terminal_directory/MQL5/Files/Tester expert nomeada igual
ao Expert Advisor. Eles so escritos na ordem em que so recebidas dos agentes. O recebimento de
um quadro no terminal do cliente a partir de um agente de teste gera o evento TesterPass.
Os quadros podem ser armazenados na memria do computador e num arquivo com o nome
especifico. A linguagem MQL5 no estabelece limitaes sobre o nmero de quadros.
Funo

Ao

FrameFirst

Move um ponteiro de leitura de quadro para o


incio e redefine previamente um conjunto de
filtros

FrameFilter

Define a estrutura do filtro de leitura e move o


ponteiro para o incio

FrameNext

L um quadro e move o ponteiro para o


prximo

FrameInputs

Recebe parmetros de entrada, no qual o


quadro formado

FrameAdd

Adiciona um quadro com dados

ParameterGetRange

Recebe os dados na faixa de valores e o passo


de alterao para uma varivel de entrada ao
otimizar um Expert Advisor no Testador de
Estratgia

ParameterSetRange

Especifica o uso de varivel de entrada ao


otimizar um Expert Advisor no Testador de
Estratgia: valor, mudana de passo, os valores
iniciais e finais

Tambm Veja
Testando Estatsticas, Propriedades de Execuo do Programa MQL5

2000-2015, MetaQuotes Software Corp.

1743

Trabalhando com Resultados de Otimizao

FrameFirst
Move um ponteiro de leitura de quadro para o incio e redefine um conjunto de filtros.
bool FrameFirst();

Valor do Retorno
Retorna true se bem sucedido, caso contrrio false. Para obter informaes sobre o erro, chamar a
funo GetLastError().

2000-2015, MetaQuotes Software Corp.

1744

Trabalhando com Resultados de Otimizao

FrameFilter
Define a estrutura do filtro de leitura e move o ponteiro para o incio.
bool FrameFilter(
const string

name,

// Nome pblico/etiqueta

long

id

// ID Pblica

);

Valor do Retorno
Retorna true se bem sucedido, caso contrrio false. Para obter informaes sobre o erro, chamar a
funo GetLastError().
Observao
Se uma string vazia passado como o primeiro parmetro, o filtro funcionar apenas com um
parmetro numrico, ou seja, apenas quadros com o id especifico sero vistos. Se o valor do
segundo parmetro ULONG_MAX, apenas o filtro de texto funcionar.
Chamar FrameFilter("", ULONG_MAX) equivalente a chamar FrameFirst(), ou seja, igual a no
utilizao de qualquer filtro.

2000-2015, MetaQuotes Software Corp.

1745

Trabalhando com Resultados de Otimizao

FrameNext
L um quadro e move o ponteiro para o prximo. Existem duas variantes da funo.
1. Chamando para receber um valor numrico
bool FrameNext(
ulong&

pass,

// O nmero de uma passagem na otimizao, durante o qual o quadro foi adici

string& name,

// Nome pblico/etiqueta

long&

// ID pblica

id,

double& value

// Valor

);

2. Chamando para receber todos os dados de um quadro


bool FrameNext(
ulong&

pass,

// O nmero de uma passagem na otimizao, durante o qual o quadro foi adici

string& name,

// Nome pblico/etiqueta

long&

// ID pblica

id,

double& value,

// Valor

void&

// Array de qualquer tipo

data[]

);

Parmetros
pass
[out] O nmero de um passe durante a otimizao do testador de estratgia.
name
[out] O nome do identificador.
id
[out] O valor do identificador.
value
[out] Um valor numrico nico.
data
[out] Uma array de qualquer tipo.
Valor do Retorno
Retorna true se bem sucedido, caso contrrio false. Para obter informaes sobre o erro, chamar a
funo GetLastError().
Observao
Na segunda verso da chamada, voc deve manipular corretamente os dados recebidos no array
data[].

2000-2015, MetaQuotes Software Corp.

1746

Trabalhando com Resultados de Otimizao

FrameInputs
Recebe parmetros de entrada, no qual o quadro com o nmero especificado de passe formado.
bool FrameInputs(
ulong

pass,

// O nmero de um passe na otimizao

string& parameters[],

// Um array de strings na forma "parameterN=valueN"

uint&

// O nmero total de parmetros

parameters_count

);

Parmetros
pass
[out] O nmero de um passe durante a otimizao do testador de estratgia.
parameters
[out] Um array de uma string com a descrio de nomes e valores de parmetros
parameters_count
[out] O nmero de elementos no array parameters[].
Valor do Retorno
Retorna true se bem sucedido, caso contrrio false. Para obter informaes sobre o erro, chamar a
funo GetLastError().
Observao
Tendo obtido o nmero de strings parameters_count no array parameters[], pode organizar um loop
para percorrer todos os registros. Isso ajudar voc a encontrar os valores dos parmetros de
entrada de um Expert Advisor para o nmero de passe especificado.

2000-2015, MetaQuotes Software Corp.

1747

Trabalhando com Resultados de Otimizao

FrameAdd
Adicionar um quadro com dados. Existem duas variantes da funo.
1. Adicionar dados a partir de um arquivo
bool FrameAdd(
const string name,

// Nome pblico/etiqueta

long

id,

// ID pblico

double

value,

// Valor

const string

filename

// Nome de um arquivo de dados

);

2. Adicionando dados a partir de um array de qualquer tipo


bool FrameAdd(
const string name,

// Nome pblico/etiqueta

long

id,

// ID pblico

double

value,

// Valor

const void&

data[]

// Array de qualquer tipo

);

Parmetros
name
[in] Etiqueta de um quadro Pblico. Ele pode ser usado para um filtro na funo FrameFilter().
id
[in] Um identificador pblico do quadro. Ele pode ser usado para um filtro na funo
FrameFilter().
value
[in] Um valor numrico para escrever no quadro. Ele utilizado para transmitir um passe nico
como resultado da funo OnTester().
filename
[in] O nome do arquivo que contm os dados para adicionar ao quadro. O arquivo deve ser
localizar na pasta MQL5/Files.
data
[in] Uma array de um tipo qualquer para escrever no quadro. Passado por referncia.
Valor do Retorno
Retorna true se bem sucedido, caso contrrio false. Para obter informaes sobre o erro, chamar a
funo GetLastError().

2000-2015, MetaQuotes Software Corp.

1748

Trabalhando com Resultados de Otimizao

ParameterGetRange
Recebe os dados na faixa de valores e o passo de alterao para uma varivel de entrada ao otimizar
um Expert Advisor no Testador de Estratgia. Existem 2 variantes da funo.
1. Recebimento de dados do parmetro de entrada para o tipo integer
bool ParameterGetRange(
const string name,

// nome do parmetro (varivel de entrada)

bool&

enable,

// parmetro de otimizao habilitado

long&

value,

// o valor do parmetro

long&

start,

// valor inicial

long&

step,

// alterar passo

long&

stop

// valor final

);

2. Recebendo dados para o parmetro de entrada tipo real


bool ParameterGetRange(
const string name,

// nome do parmetro (varivel de entrada)

double&

enable,

// parmetro de otimizao habilitado

double&

value,

// valor do parmetro

double&

start,

// valor inicial

double&

step,

// alterar passo

double&

stop

// valor final

);

Parmetros
name
[in] varivel de entrada ID. Essas variveis so parmetros externos de uma aplicao. Seus
valores podem ser especificados quando do lanamento num grfico ou durante um nico teste.
enable
[out] Sinaliza que este parmetro pode ser usado para enumerar os valores durante a otimizao
no Testador de Estratgia.
value
[out] Valor do parmetro.
start
[out] Valor do parmetro inicial durante a otimizao.
step
[out] Parmetro altera o passo ao enumerar os seus valores.
stop
[out] Valor do parmetro final durante a otimizao.
Valor de retorno
Retorna true se bem sucedido, caso contrrio false. Para obter informaes sobre o erro, utilize a

2000-2015, MetaQuotes Software Corp.

1749

Trabalhando com Resultados de Otimizao


funo GetLastError().
Observao
A funo pode ser chamado apenas pelos manipuladores OnTesterInit(), OnTesterPass() e
OnTesterDeinit(). Foi introduzida para receber os valores dos parmetros de entrada do Expert
Advisor e faixas de variao durante a otimizao no Testador de Estratgia.
Quando chamado em OnTesterInit(), os dados obtidos podem ser usados para redefinir as regras de
enumerao de qualquer varivel de entrada usando ParameterSetRange(). Portanto, novo Start,
Stop e valores do Step podem ser definidos no parmetro de entrada e podem at mesmo serem
completamente excludos a partir da otimizao, independentemente das configuraes do Testador
de Estratgia. Isto permite-lhe gerenciar a rea dos parmetros de entrada durante a otimizao,
excluindo alguns parmetros a partir da otimizao de acordo com os valores dos parmetros
fundamentais do Expert Advisor.
Exemplo:
#property description "Expert Advisor para a demonstrao da funo ParameterGetRange()."
#property description "Deve ser lanado no modo de otimizao do Testador de Estratgia"
//--- parmetros de entrada
input int

Input1=1;

input double

Input2=2.0;

input bool

Input3=false;

input ENUM_DAY_OF_WEEK

Input4=SUNDAY;

//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--- Expert Advisor projetado para operao somente no Testador de Estratgia
if(!MQL5InfoInteger(MQL5_OPTIMIZATION))
{
MessageBox("Deve ser lanado no modo de otimizao do Testador de Estratgia!");
//--- finalizar a operao do Expert Advisor com antecedncia e remover do grfico
return(INIT_FAILED);
}
//--- completada com sucesso a inicializao
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo TesterInit

//+------------------------------------------------------------------+
void OnTesterInit()
{
//--- exemplo de parmetros de entrada tipo long
string name="Input1";
bool enable;
long par1,par1_start,par1_step,par1_stop;
ParameterGetRange(name,enable,par1,par1_start,par1_step,par1_stop);

2000-2015, MetaQuotes Software Corp.

1750

Trabalhando com Resultados de Otimizao


Print("Primeiro parmetro");
PrintFormat("%s=%d

habilitado=%s

a partir de %d para %d com passo=%d",

name,par1,(string)enable,par1_start,par1_stop,par1_step);
//--- exemplo de parmetros de entrada tipo double
name="Input2";
double par2,par2_start,par2_step,par2_stop;
ParameterGetRange(name,enable,par2,par2_start,par2_step,par2_stop);
Print("Segundo parmetro");
PrintFormat("%s=%G

habilitado=%s

a partir de %G para %G com passo=%G",

name,par2,(string)enable,par2_start,par2_stop,par2_step);
//--- exemplo de parmetros de entrada tipo bool
name="Input3";
long par3,par3_start,par3_step,par3_stop;
ParameterGetRange(name,enable,par3,par3_start,par3_step,par3_stop);
Print("Terceiro parmetro");
PrintFormat("%s=%s

habilitado=%s

a partir de %s para %s",

name,(string)par3,(string)enable,
(string)par3_start,(string)par3_stop);
//--- exemplo de parmetros de entrada tipo enumerador
name="Input4";
long par4,par4_start,par4_step,par4_stop;
ParameterGetRange(name,enable,par4,par4_start,par4_step,par4_stop);
Print("Quarto parmetro");
PrintFormat("%s=%s

habilitado=%s

a partir de %s para %s",

name,EnumToString((ENUM_DAY_OF_WEEK)par4),(string)enable,
EnumToString((ENUM_DAY_OF_WEEK)par4_start),
EnumToString((ENUM_DAY_OF_WEEK)par4_stop));
}
//+------------------------------------------------------------------+
//| Funo TesterDeinit

//+------------------------------------------------------------------+
void OnTesterDeinit()
{
//--- esta mensagem ser mostrada aps a otimizao ser concluda
Print(__FUNCTION__," Otimizao concluda");
}

2000-2015, MetaQuotes Software Corp.

1751

Trabalhando com Resultados de Otimizao

ParameterSetRange
Especifica o uso de varivel de entrada ao otimizar um Expert Advisor no Testador de Estratgia:
valor, mudana de passo, os valores iniciais e finais. Existem 2 variantes da funo.
1. Especificando os valores para o parmetro de entrada do tipo integer
bool ParameterSetRange(
const string name,

// nome do parmetro (varivel de entrada)

bool

enable,

// parmetro de otimizao habilitado

long

value,

// valor do parmetro

long

start,

// valor inicial

long

step,

// mudar etapa

long

stop

// valor final

);

2. Especificando os valores para o parmetro de entrada de tipo real


bool ParameterSetRange(
const string name,

// nome do parmetro (varivel de entrada)

double

enable,

// parmetro de otimizao habilitado

double

value,

// valor dos parmetros

double

start,

// valor inicial

double

step,

// mudar etapa

double

stop

// valor final

);

Parmetros
name
[in] input ou sinput ID varivel. Essas variveis so parmetros externos de uma aplicao. Seus
valores podem ser especificados quando iniciar o programa.
enable
[in] Ativar este parmetro para enumerar os valores durante a otimizao no Testador de
Estratgia.
value
[in] valor do parmetro.
start
[in] Valor do parmetro inicial durante a otimizao.
step
[in] Alterao de parmetro etapa ao enumerar seus valores.
stop
[in] Valor do parmetro final durante a otimizao.
Valor de retorno
Retorna true se bem sucedido, caso contrrio false. Para obter informaes sobre o erro, utilize a

2000-2015, MetaQuotes Software Corp.

1752

Trabalhando com Resultados de Otimizao


funo GetLastError().
Observao
A funo s pode ser chamado pelo manipulador OnTesterInit() ao lanar otimizao a partir do
Testador de Estratgia. Ele projetado para especificar o alcance do parmetro e alterar o passo. O
parmetro pode ser completamente excludo da otimizao, independentemente das configuraes
do Testador de Estratgia. Ele tambm permite o uso de variveis declaradas com modificador de
entrada no processo de otimizao.
A funo ParameterSetRange() permite que voc gerencie uma otimizao Expert Advisor no
Testador de Estratgia dependendo dos valores de seus parmetros fundamentais, incluindo ou
excluindo os parmetros de entrada necessrios a partir da otimizao e definir o intervalo
necessrio e o passo de mudana.

2000-2015, MetaQuotes Software Corp.

1753

Trabalhando com Eventos

Funes de Eventos
Este grupo contm funes para trabalhar com eventos personalizados e eventos de timer. Alm deste
grupo, h funes especiais para manipulao de eventos pr-definidos.
Funo

Ao

EventSetMillisecondTimer

Inicia gerador de eventos de timer de alta


resoluo com um perodo de menos de 1
segundo para o grfico em curso

EventSetTimer

Inicia o gerador de eventos do time com a


periodicidade especificada para o grfico atual

EventKillTimer

Interrompe a gerao de eventos pelo timer no


quadro atual

EventChartCustom

Gera um evento personalizado para o grfico


especificado

Tambm Veja
Tipos de Eventos de Grficos

2000-2015, MetaQuotes Software Corp.

1754

Trabalhando com Eventos

EventSetMillisecondTimer
A funo indica ao terminal de cliente que eventos de timer devem ser gerados em intervalos
inferiores a um segundo, para este Expert Advisor ou aquele indicador.
bool EventSetMillisecondTimer(
int milliseconds

// nmero de milissegundos

);

Parmetros
milliseconds
[in] Nmero de milissegundos que definem a freqncia de eventos de timer.
Valor de retorno
No caso de sucesso na execuo, retorna true, do contrrio - false. Para receber um cdigo de erro,
a funo GetLastError() dever ser utilizada.
Observao
Este recurso projetado para os casos em que necessrio timer de alta resoluo. Em outras
palavras, eventos de timer devem ser recebidos com mais freqncia do que uma vez por segundo.
Se um timer convencional, com o perodo de mais de um segundo o suficiente para voc, use o
evento EventSetTimer().
O intervalo mnimo de 1000 milissegundos usado no dispositivo para testar estratgia. Em geral,
quando o perodo do timer reduzido, o tempo de teste maior, ento o manipulador de eventos de
timer utilizado mais frequentemente. Ao trabalhar em modo de tempo real, os eventos de timer
so gerados no mais do que uma vez em 10-16 milissegundos, devido a limitaes de hardware.
Normalmente, esta funo ser chamada pela funo OnInit() ou no construtor de classe. Para
manipular eventos provenientes do timer, um Expert Advisor ou um indicador deve usar a funo
OnTimer().
Cada Expert Advisor e cada indicador trabalha com o seu prprio timer, recebendo eventos
exclusivamente deste timer. Durante fechamento do aplicativo MQL5, o cronmetro forosamente
encerrado caso tenha sido criado, mas no foi desativado pela funo EventKillTimer().
Apenas um timer pode ser utilizado para cada programa. Cada aplicativo MQL5 e grfico tem sua
prpria lista de eventos, onde todos os novos eventos so colocados. Se a lista j contm eventos
de Timer ou este evento est em fase de processamento, ento o novo evento de Timer no
adicionado a fila do aplicativo MQL5.

2000-2015, MetaQuotes Software Corp.

1755

Trabalhando com Eventos

EventSetTimer
A funo indica ao terminal do cliente que para este indicador ou Expert Advisor, eventos do timer
devem ser gerados com a periodicidade especificada.
bool EventSetTimer(
int seconds

// nmero de segundos

);

Parmetros
seconds
[in] Nmero de segundos que determinam a freqncia de ocorrncia do evento timer.
Valor do Retorno
Em caso de sucesso retorna verdadeiro, caso contrrio falso. A fim de obter o cdigo de erro, a
funo GetLastError() deve ser chamada.
Observao
Normalmente, esta funo deve ser chamada a partir da funo OnInit() ou de uma classe
construtor. A fim de manipular eventos provenientes do timer, o Expert Advisor deve ter a funo
OnTimer().
Todo Expert Advisor, assim como todo indicador funciona com seu prprio timer e recebe eventos
apenas a partir dele. Assim quando um programa MQL5 deixa de funcionar, o timer destrudo
foradamente se ele foi criado, mas ainda no foi desativado pela funo EventKillTimer().
Para cada programa no mais de que um timer pode ser executado. Cada programa MQL5 e cada
grfico tem a sua prpria fila de eventos em que todos os eventos recentemente recebidos so
colocados. Se o evento Timer est presente ou est a ser processado, o novo evento de timer no
ser colocado na fila do programa MQL5.

2000-2015, MetaQuotes Software Corp.

1756

Trabalhando com Eventos

EventKillTimer
Especifica o terminal do cliente o que necessrio para finalizar a gerao de eventos do Timer.
void EventKillTimer();

Valor do Retorno
Sem valor de retorno.
Observao
Normalmente, esta funo deve ser chamada a partir de uma funo OnDeinit(), se a funo
EventSetTimer() for chamada de OnInit(). Esta funo tambm pode ser chamada para formar o
destruidor de classe, se a funo EventSetTimer() foi chamada no construtor dessa classe.
Todo Expert Advisor, assim como todo indicador funciona com seu prprio timer e recebe eventos
apenas a partir dele. Assim quando programa MQL5 deixa de funcionar, o timer destrudo
foradamente se ele foi criado, mas ainda no foi desativado pela funo EventKillTimer().

2000-2015, MetaQuotes Software Corp.

1757

Trabalhando com Eventos

EventChartCustom
A funo gera um evento personalizado para o grfico especificado.
bool EventChartCustom(
long

chart_id,

// identificador do evento recebendo grfico

ushort custom_event_id,

// identificador de evento

long

// parmetro do tipo long

lparam,

double dparam,

// parmetro do tipo double

string sparam

// parmetro de string do evento

);

Parmetros
chart_id
[in] Identificador grfico. Significa o grfico atual.
custom_event_id
[in] ID dos usurios do evento. Este identificador automaticamente adicionado ao valor
CHARTEVENT_CUSTOM e convertido para o tipo integer.
lparam
[in] Evento parmetro do tipo long passado para a funo OnChartEvent.
dparam
[in] Evento parmetro do tipo double passado para a funo OnChartEvent.
sparam
[in] Evento parmetro do tipo string passado para a funo OnChartEvent. Se a string maior do
que 63 caracteres, ser truncado.
Valor do Retorno
Retorna verdadeiro se um evento personalizado foi colocada com sucesso na fila do grfico de
eventos que recebe os eventos. Em caso de falha, ele retorna false. Use GetLastError() para obter o
cdigo de erro.
Observao
Um Expert Advisor ou o indicador ligado a tabela especificada manipula o evento utilizando a
funo OnChartEvent(int event_id, long& lparam, double& dparam, string& sparam).
Para cada tipo de evento, os parmetros de entrada da funo OnChartEvent() tm valores definidos
que so requeridos para o processamento deste evento. Os eventos e valores passados atravs destes
parmetros so listados na tabela abaixo.
Evento

Valor
do
parmetro id

Valor
parmetro
lparam

do

Evento de uma
teclada

CHARTEVENT_KE
YDOWN

cdigo de uma
tecla pressionada

Valor
parmetro
dparam

do

Repita
a
contagem
(o
nmero de vezes

2000-2015, MetaQuotes Software Corp.

Valor
parmetro
sparam

do

O valor da string
de uma pequena
mscara
de

1758

Trabalhando com Eventos

que a tecla
repetida
como
um resultado de
que o usurio
pressiona
a
tecla)

descrever
o
estado de botes
do teclado

Evento
do
mouse (se a
propriedade
CHART_EVENT_
MOUSE_MOVE=tr
ue,
ento

definido para o
grfico)

CHARTEVENT_MO
USE_MOVE

a coordenada X

a coordenada Y

O valor de string
de uma mscara
de
bites
descrevendo
o
estado de botes
de mouse

Evento
de
criao
de
objeto
grfico
(se
CHART_EVENT_O
BJECT_CREATE=t
rue, ento
definido para o
grfico)

CHARTEVENT_OB
JECT_CREATE

Nome do objeto
grfico criado

Evento
de
mudana de uma
propriedade de
objeto via janela
de dilogo de
propriedades

CHARTEVENT_OB
JECT_CHANGE

Nome do objeto
grfico
modificado

Caso
de
apagamento
objeto
grfico
(se
CHART_EVENT_O
BJECT_DELETE=t
rue, ento
definido para o
grfico)

CHARTEVENT_OB
JECT_DELETE

Nome do objeto
grfico excludo

Evento de um
click de mouse
no grfico

CHARTEVENT_C
LICK

a coordenada X

a coordenada Y

Evento de um
click de mouse
num
objeto
grfico
pertencente ao
grfico

CHARTEVENT_OB
JECT_CLICK

a coordenada X

a coordenada Y

Nome do objeto
grfico, na qual
o evento ocorreu

2000-2015, MetaQuotes Software Corp.

1759

Trabalhando com Eventos

Evento de um
objeto
grfico
arrastado usando
o mouse

CHARTEVENT_OB
JECT_DRAG

Nome do objeto
grfico movido

Evento da edio
de
texto
finalizada
na
caixa de entrada
do objeto grfico
LabelEdit

CHARTEVENT_OB
JECT_ENDEDIT

Nome do objeto
grfico
LabelEdit, cuja
edio de texto
foi concluda

Evento
mudana
grfico

CHARTEVENT_C
HART_CHANGE

CHARTEVENT_CU
STOM+N

Valor
definido
pela
funo
EventChartCusto
m()

Valor
definido
pela
funo
EventChartCusto
m()

Valor
definido
pela
funo
EventChartCusto
m()

de
no

ID do evento de
usurio sob N
nmero

Exemplo:
//+------------------------------------------------------------------+
//|

ButtonClickExpert.mq5 |

//|

Copyright 2009, MetaQuotes Software Corp. |

//|

https://www.mql5.com |

//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

#property version

"1.00"

string buttonID="Boto";
string labelID="Informao";
int broadcastEventID=5000;
//+------------------------------------------------------------------+
//| Funo de inicializao do Expert

//+------------------------------------------------------------------+
int OnInit()
{
//--- Criar um boto para enviar eventos personalizados
ObjectCreate(0,buttonID,OBJ_BUTTON,0,100,100);
ObjectSetInteger(0,buttonID,OBJPROP_COLOR,clrWhite);
ObjectSetInteger(0,buttonID,OBJPROP_BGCOLOR,clrGray);
ObjectSetInteger(0,buttonID,OBJPROP_XDISTANCE,100);
ObjectSetInteger(0,buttonID,OBJPROP_YDISTANCE,100);
ObjectSetInteger(0,buttonID,OBJPROP_XSIZE,200);
ObjectSetInteger(0,buttonID,OBJPROP_YSIZE,50);
ObjectSetString(0,buttonID,OBJPROP_FONT,"Arial");
ObjectSetString(0,buttonID,OBJPROP_TEXT,"Boto");
ObjectSetInteger(0,buttonID,OBJPROP_FONTSIZE,10);

2000-2015, MetaQuotes Software Corp.

1760

Trabalhando com Eventos


ObjectSetInteger(0,buttonID,OBJPROP_SELECTABLE,0);
//--- Criar uma etiqueta para exibir informaes
ObjectCreate(0,labelID,OBJ_LABEL,0,100,100);
ObjectSetInteger(0,labelID,OBJPROP_COLOR,clrRed);
ObjectSetInteger(0,labelID,OBJPROP_XDISTANCE,100);
ObjectSetInteger(0,labelID,OBJPROP_YDISTANCE,50);
ObjectSetString(0,labelID,OBJPROP_FONT,"Trebuchet MS");
ObjectSetString(0,labelID,OBJPROP_TEXT,"No informado");
ObjectSetInteger(0,labelID,OBJPROP_FONTSIZE,20);
ObjectSetInteger(0,labelID,OBJPROP_SELECTABLE,0);
//--return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Funo de Desinicializao do Expert

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--ObjectDelete(0,buttonID);
ObjectDelete(0,labelID);
}
//+------------------------------------------------------------------+
//| Funo tick (ponto) de um Expert

//+------------------------------------------------------------------+
void OnTick()
{
//--}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- Verifique o evento pressionando um boto do mouse
if(id==CHARTEVENT_OBJECT_CLICK)
{
string clickedChartObject=sparam;
//--- Se voc clicar sobre o objeto com o nome buttonID
if(clickedChartObject==buttonID)
{
//--- Estado do boto - pressionado ou no
bool selected=ObjectGetInteger(0,buttonID,OBJPROP_STATE);
//--- registrar uma mensagem de depurao
Print("Boto pressionado = ",selected);

2000-2015, MetaQuotes Software Corp.

1761

Trabalhando com Eventos


int customEventID; // Nmero do evento personalizado para enviar
string message;

// Mensagem a ser enviada no caso

//--- Se o boto for pressionado


if(selected)
{
message="Boto pressionado";
customEventID=CHARTEVENT_CUSTOM+1;
}
else // Boto no est pressionado
{
message="Boto no est pressionado";
customEventID=CHARTEVENT_CUSTOM+999;
}
//--- Enviar um evento personalizado "nosso" grfico
EventChartCustom(0,customEventID-CHARTEVENT_CUSTOM,0,0,message);
///--- Envie uma mensagem para todos os grficos abertos
BroadcastEvent(ChartID(),0,"Transmisso de mensagem");
//--- Depurar mensagem
Print("Enviar um evento com ID = ",customEventID);
}
ChartRedraw();// Redesenho forado de todos os objetos de grfico
}
//--- Verificar o evento pertence ao evento de utilizador
if(id>CHARTEVENT_CUSTOM)
{
if(id==broadcastEventID)
{
Print("Tem transmisso de mensagem a partir de um grfico com id = "+lparam);
}
else
{
//--- Ns lemos uma mensagem de texto no evento
string info=sparam;
Print("Manipular o evento do usurio com o ID = ",id);
//--- Exibe uma mensagem numa etiqueta
ObjectSetString(0,labelID,OBJPROP_TEXT,sparam);
ChartRedraw();// Redesenho forado de todos os objetos de grfico
}
}
}
//+------------------------------------------------------------------+
//| Enviar evento de transmisso para todos os grficos abertos

//+------------------------------------------------------------------+
void BroadcastEvent(long lparam,double dparam,string sparam)
{
int eventID=broadcastEventID-CHARTEVENT_CUSTOM;
long currChart=ChartFirst();
int i=0;

2000-2015, MetaQuotes Software Corp.

1762

Trabalhando com Eventos


while(i<CHARTS_MAX)

// Temos, certamente, no mais do que CHARTS_MAX abrindo gr

{
EventChartCustom(currChart,eventID,lparam,dparam,sparam);
currChart=ChartNext(currChart); // Recebemos um novo grfico do anterior
if(currChart==-1) break;

// Alcanado o final da lista de grficos

i++;// No esquea de aumentar o contador


}
}
//+------------------------------------------------------------------+

Tambm Veja
Eventos do Terminal Cliente, Funes de Manipulao de Evento

2000-2015, MetaQuotes Software Corp.

1763

Trabalhando com OpenCL

Trabalhando com OpenCL


Programas em OpenCLso utilizados para a realizao de clculos sobre placas de vdeo que suportam
OpenCL 1.1 ou superior. Placas de vdeo modernas contm centenas de pequenos processadores
especializados que podem executar simultaneamente operaes matemticas simples, com fluxos de
dados de entrada. A linguagem OpenCL organiza computao paralela e proporciona maior velocidade
para uma certa classe de tarefas.
Funes para os programas em execuo em OpenCL:
Funo

Ao

CLHandleType

Retorna o tipo do manipulador de OpenCL como


valor
da
enumerao
ENUM_OPENCL_HANDLE_TYPE

CLGetInfoInteger

Retorna o valor da propriedade de uma integer


para um objeto ou dispositivo OpenCL

CLContextCreate

Cria um contexto OpenCL

CLContextFree

Remove um contexto OpenCL

CLGetDeviceInfo

Receives device property from OpenCL driver

CLProgramCreate

Cria um programa OpenCL a partir de um


cdigo fonte

CLProgramFree

Remove um programa OpenCL

CLKernelCreate

Cria uma funo de partida OpenCL

CLKernelFree

Remove uma funo de partida OpenCL

CLSetKernelArg

Define um parmetro para a funo OpenCL

CLSetKernelArgMem

Define um buffer OpenCL como um parmetro


da funo OpenCL

CLBufferCreate

Cria um buffer OpenCL

CLBufferFree

Exclui um buffer OpenCL

CLBufferWrite

Grava um array num buffer OpenCL

CLBufferRead

L um buffer de OpenCL num array

CLExecute

Executa um programa OpenCL

2000-2015, MetaQuotes Software Corp.

1764

Trabalhando com OpenCL

CLHandleType
Retorna o tipo de um manipulador
ENUM_OPENCL_HANDLE_TYPE.

de

OpenCL

como

um

valor

do

enumerador

ENUM_OPENCL_HANDLE_TYPE CLHandleType(
int handle

// Manipulao de um objeto OpenCL

);

Parmetros
handle
[in] Um manipulador para um objeto OpenCL: um contexto, um kernel ou um programa OpenCL.
Valor do Retorno
O tipo de manipulador de OpenCL como valor do enumerador ENUM_OPENCL_HANDLE_TYPE.
ENUM_OPENCL_HANDLE_TYPE
Identificador

Descrio

OPENCL_INVALID

Manipulador incorreto

OPENCL_CONTEXT

Um manipulador de contexto OpenCL

OPENCL_PROGRAM

Um manipulador do programa OpenCL

OPENCL_KERNEL

Um manipulador do kernel OpenCL

OPENCL_BUFFER

Um manipulador do buffer OpenCL

2000-2015, MetaQuotes Software Corp.

1765

Trabalhando com OpenCL

CLGetInfoInteger
Retorna o valor de uma propriedade integer para um objeto ou dispositivo OpenCL.
long CLGetInfoInteger(
int handle,

// O manipulador do objeto OpenCL ou o nmero do disposit

ENUM_OPENCL_PROPERTY_INTEGER prop

// Propriedade solicitada

);

Parmetros
handle
[in] Um manipulador para o objeto OpenCL ou o nmero do dispositivo OpenCL. A numerao dos
dispositivos OpenCL comea com um zero.
prop
[in] O tipo de uma propriedade solicitada do enumerador ENUM_OPENCL_PROPERTY_INTEGER, o
valor que voc deseja obter.
Valor do Retorno
O valor da propriedade, se for bem-sucedido ou -1 em caso de erro. Para obter informaes sobre o
erro, utilize a funo GetLastError().
ENUM_OPENCL_PROPERTY_INTEGER
Identificador

Descrio

Tipo

CL_DEVICE_COUNT

O nmero de dispositivos com


suporte a OpenCL. Esta
propriedade no requer a
especificao do
primeiro
parmetro, ou seja, voc pode
passar um valor zero para o
parmetro do manipulador.

int

CL_DEVICE_TYPE

Tipo de dispositivo

ENUM_CL_DEVICE_TYPE

CL_DEVICE_VENDOR_ID

Identificador
fornecedor

do

uint

CL_DEVICE_MAX_COMPUTE_UN
ITS

Nmero de tarefas paralelas


calculados em dispositivos
OpenCL. Um grupo de trabalho
resolve
uma
tarefa
computacional. O menor valor
1

uint

CL_DEVICE_MAX_CLOCK_FREQ
UENCY

Define a maior freqncia do


dispositivo em MHz.

uint

CL_DEVICE_GLOBAL_MEM_SIZ
E

Tamanho da memria global


do dispositivo em bites

ulong

CL_DEVICE_LOCAL_MEM_SIZE

Tamanho

uint

nico

dos

dados

2000-2015, MetaQuotes Software Corp.

1766

Trabalhando com OpenCL


processados
(cena)
memria local, em bites
CL_BUFFER_SIZE

de

Actual size of the OpenCL


buffer in bytes.

ulong

O enumerador ENUM_CL_DEVICE_TYPE contm possveis tipos de dispositivos que suportam OpenCL.


Voc pode receber o tipo de dispositivo pelo seu nmero ou o manipulador do objeto OpenCL,
chamando CLGetInfoInteger(handle_or_deviceN, CL_DEVICE_TYPE).
ENUM_CL_DEVICE_TYPE
Identificador

Descrio

CL_DEVICE_ACCELERATOR

Aceleradores OpenCL dedicados (por exemplo, a


IBM CELL Blade). Estes dispositivos se
comunicam com o processador hospedeiro
utilizando uma interconexo de perifricos,
como PCIe.

CL_DEVICE_CPU

Um dispositivo OpenCL que o processador


hospedeiro. O processador hospedeiro executa
as implementaes OpenCL, sendo uma nica
ou multi-core CPU.

CL_DEVICE_GPU

Um dispositivo OpenCL que uma GPU.

CL_DEVICE_DEFAULT

O dispositivo padro OpenCL no sistema. O


dispositivo padro no pode ser um dispositivo
CL_DEVICE_TYPE_CUSTOM.

CL_DEVICE_CUSTOM

Aceleradores dedicados que no


programas escritos em OpenCL C.

suportam

Exemplo:
void OnStart()
{
int cl_ctx;
//--- inicializar contexto OpenCL
if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE)
{
Print("OpenCL no encontrado");
return;
}
//--- Exibir informaes sobre a plataforma

Print("Tipo OpenCL: ",EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(cl_ctx,CL_DEVICE_TYPE))


Print("Fornecedor ID OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_VENDOR_ID));
Print("Unidades OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_COMPUTE_UNITS));
Print("Freqncia OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_CLOCK_FREQUENCY)," MHz");
Print("Memria global OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE)," bytes");
Print("Memria local OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE)," bytes");

2000-2015, MetaQuotes Software Corp.

1767

Trabalhando com OpenCL


//--}

2000-2015, MetaQuotes Software Corp.

1768

Trabalhando com OpenCL

CLGetInfoString
Retorna valor string de uma propriedade para o objeto OpenCL ou dispositivo.
bool CLGetInfoString(
int handle,

// Objeto manipulador de OpenCL ou nmero de dispositivo

ENUM_OPENCL_PROPERTY_STRING
string& value

prop,

// propriedade solicitada
// string referenciada

);

Parmetros
handle
[in] Objeto manipulador de OpenCL ou nmero de dispositivo OpenCL. A numerao dos
dispositivos OpenCL comea com um zero.
prop
[in] Tipo de propriedade requerida do enumerador ENUM_OPENCL_PROPERTY_STRING, o valor do
qual deve ser obtido.
value
[out] String para receber o valor da propriedade.
Valor de retorno
true se bem sucedido, caso contrrio false. Para obter informaes sobre o erro, utilize a funo
GetLastError().
ENUM_OPENCL_PROPERTY_STRING
Identificador
CL_PLATFORM_PROFILE

Descrio
CL_PLATFORM_PROFILE - Perfil OpenCL. Nome do
perfil pode ser um dos seguintes valores:
FULL_PROFILE - implementao suporta
OpenCL (funcionalidade definida como a
parte da especificao do kernel sem
necessidade de extenses adicionais para o
apoio OpenCL);
EMBEDDED_PROFILE
implementao
suporta OpenCL como um suplemento. Perfil
alterado definido como um subconjunto
para cada verso OpenCL.

CL_PLATFORM_VERSION

Verso OpenCL

CL_PLATFORM_VENDOR

Nome do fornecedor da Plataforma

CL_PLATFORM_EXTENSIONS

Lista de extenses suportadas pela plataforma.


Nomes de extenso deve ser suportado por todos
os dispositivos relacionados com esta plataforma

CL_DEVICE_NAME

O nome do dispositivo

2000-2015, MetaQuotes Software Corp.

1769

Trabalhando com OpenCL


CL_DEVICE_VENDOR

Nome do fornecedor

CL_DRIVER_VERSION

Verso
do
driver
OpenCL
major_number.minor_number

CL_DEVICE_PROFILE

Perfil de dispositivo OpenCL. Nome do perfil pode


ser um dos seguintes valores:

em

formato

FULL_PROFILE - implementao suporta


OpenCL (funcionalidade definida como a
parte da especificao do kernel sem
necessidade de extenses adicionais para o
apoio OpenCL);
EMBEDDED_PROFILE
implementao
suporta OpenCL como um suplemento. Perfil
alterado definido como um subconjunto
para cada verso OpenCL.
CL_DEVICE_VERSION

OpenCL
verso
em
formato
"OpenCL<space><major_version.minor_version><s
pace><vendor-specific information>"

CL_DEVICE_EXTENSIONS

Lista de extenses suportadas pelo dispositivo. A


lista pode conter extenses suportadas pelo
fornecedor, bem como um ou mais nomes
aprovados:
cl_khr_int64_base_atomics
cl_khr_int64_extended_atomics
cl_khr_fp16
cl_khr_gl_sharing
cl_khr_gl_event
cl_khr_d3d10_sharing
cl_khr_dx9_media_sharing
cl_khr_d3d11_sharing

CL_DEVICE_BUILT_IN_KERNELS

A lista de kernels suportados separados por ";".

CL_DEVICE_OPENCL_C_VERSION

A verso mximo suportado pelo compilador para


este dispositivo. Verso formato:
"OpenCL<space>C<space><major_version.minor_ve
rsion><space><vendor-specific information> "

Exemplo:
void OnStart()
{
int cl_ctx;
string str;
//--- inicializar contexto OpenCL
if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE)
{
Print("OpenCL no encontrado");
return;
}

2000-2015, MetaQuotes Software Corp.

1770

Trabalhando com OpenCL


//--- Exibir informaes sobre a plataforma
if(CLGetInfoString(cl_ctx,CL_PLATFORM_NAME,str))
Print("Nome da plataforma OpenCL: ");
if(CLGetInfoString(cl_ctx,CL_PLATFORM_VENDOR,str))
Print("Fornecedor da plataforma OpenCL: ",str);
if(CLGetInfoString(cl_ctx,CL_PLATFORM_VERSION,str))
Print("Verso da plataforma OpenCL: ",str);
if(CLGetInfoString(cl_ctx,CL_PLATFORM_PROFILE,str))
Print("Perfil da plataforma OpenCL: ",str);
if(CLGetInfoString(cl_ctx,CL_PLATFORM_EXTENSIONS,str))
Print("Extenso da plataforma OpenCL: ",str);
//--- Exibir informaes sobre o dispositivo
if(CLGetInfoString(cl_ctx,CL_DEVICE_NAME,str))
Print("Nome do dispositivo OpenCL: ",str);
if(CLGetInfoString(cl_ctx,CL_DEVICE_PROFILE,str))
Print("Perfil do dispositivo OpenCL: ",str);
if(CLGetInfoString(cl_ctx,CL_DEVICE_BUILT_IN_KERNELS,str))
Print("Kernels dispositivo OpenCL: ",str);
if(CLGetInfoString(cl_ctx,CL_DEVICE_EXTENSIONS,str))
Print("Extenso do dispositivo OpenCL: ",str);
if(CLGetInfoString(cl_ctx,CL_DEVICE_VENDOR,str))
Print("Fornecedor do dispositivo OpenCL: ",str);
if(CLGetInfoString(cl_ctx,CL_DEVICE_VERSION,str))
Print("Verso do dispositivo OpenCL: ",str);
if(CLGetInfoString(cl_ctx,CL_DEVICE_OPENCL_C_VERSION,str))
Print("Verso do c OpenCL: ",str);
//--- Exibir informaes gerais sobre o dispositivo OpenCL

Print("Tipo OpenCL: ",EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(cl_ctx,CL_DEVICE_TYPE))


Print("Fornecedor ID OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_VENDOR_ID));
Print("Unidades OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_COMPUTE_UNITS));
Print("Freqncia OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_CLOCK_FREQUENCY));
Print("Memria global OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE));
Print("Memria local OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE));
//--}

2000-2015, MetaQuotes Software Corp.

1771

Trabalhando com OpenCL

CLContextCreate
Cria um contexto OpenCL e retorna seu manipulador.
int CLContextCreate(
int device

// Nmero de srie do dispositivo OpenCL ou macro

);

Parmetro
device
[in] O nmero ordinal do dispositivo-OpenCL no sistema. Instead of a specific number, you can
specify one of the following values:
CL_USE_ANY any available device with OpenCL support is allowed;
CL_USE_CPU_ONLY only OpenCL emulation on CPU is allowed;
CL_USE_GPU_ONLY OpenCL emulation is prohibited and only specialized devices with OpenCL
support (video cards) can be used.
Valor do Retorno
Um manipulador para o contexto OpenCL se for bem sucedido, caso contrrio, -1. Para obter
informaes sobre o erro, utilize a funo GetLastError().

2000-2015, MetaQuotes Software Corp.

1772

Trabalhando com OpenCL

CLContextFree
Remove um contexto OpenCL.
void CLContextFree(
int context

// Manipulador para um contexto OpenCL

);

Parmetros
context
[in] Manipula o contexto OpenCL.
Valor do Retorno
Nenhum. No caso de um erro interno o valor do modificador _LastError. Para obter informaes
sobre o erro, utilize a funo GetLastError().

2000-2015, MetaQuotes Software Corp.

1773

Trabalhando com OpenCL

CLGetDeviceInfo
The function receives device property from OpenCL driver.
bool CLGetDeviceInfo(
int

handle,

// manipulador de dispositivo OpenCL

int

property_id,

// solicitado propriedade ID

uchar&

data[],

// array para recebimento de dados

uint&

size

// deslocamento na array de elementos, 0 por padro

);

Parmetros
handle
[in] OpenCL device index or OpenCL handle created by CLContextCreate() function.
property_id
[in] ID of the OpenCL device property that should be received. The values can be of one of the
predetermined ones listed in the table below.
data[]
[out] The array for receiving data on the requested property.
size
[out] Size of the received data in the array data[].
Valor de retorno
true se bem sucedido, caso contrrio false. Para obter informaes sobre o erro, utilize a funo
GetLastError().
Observao
Para array unidimensionais, o nmero do elemento, com o qual a leitura de dados para a escrita
num buffer de OpenCL comea, calculado tendo em conta os sinalizadores AS_SERIES.
The list of available IDs of OpenCL device properties
Exact description of the property and its functions can be found at the official OpenCL web site.
Identificador

Valor

CL_DEVICE_TYPE

0x1000

CL_DEVICE_VENDOR_ID

0x1001

CL_DEVICE_MAX_COMPUTE_UNITS

0x1002

CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS

0x1003

CL_DEVICE_MAX_WORK_GROUP_SIZE

0x1004

CL_DEVICE_MAX_WORK_ITEM_SIZES

0x1005

CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHA
R

0x1006

2000-2015, MetaQuotes Software Corp.

1774

Trabalhando com OpenCL

CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHO
RT

0x1007

CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT

0x1008

CL_DEVICE_PREFERRED_VECTOR_WIDTH_LON
G

0x1009

CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLO
AT

0x100A

CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOU
BLE

0x100B

CL_DEVICE_MAX_CLOCK_FREQUENCY

0x100C

CL_DEVICE_ADDRESS_BITS

0x100D

CL_DEVICE_MAX_READ_IMAGE_ARGS

0x100E

CL_DEVICE_MAX_WRITE_IMAGE_ARGS

0x100F

CL_DEVICE_MAX_MEM_ALLOC_SIZE

0x1010

CL_DEVICE_IMAGE2D_MAX_WIDTH

0x1011

CL_DEVICE_IMAGE2D_MAX_HEIGHT

0x1012

CL_DEVICE_IMAGE3D_MAX_WIDTH

0x1013

CL_DEVICE_IMAGE3D_MAX_HEIGHT

0x1014

CL_DEVICE_IMAGE3D_MAX_DEPTH

0x1015

CL_DEVICE_IMAGE_SUPPORT

0x1016

CL_DEVICE_MAX_PARAMETER_SIZE

0x1017

CL_DEVICE_MAX_SAMPLERS

0x1018

CL_DEVICE_MEM_BASE_ADDR_ALIGN

0x1019

CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE

0x101A

CL_DEVICE_SINGLE_FP_CONFIG

0x101B

CL_DEVICE_GLOBAL_MEM_CACHE_TYPE

0x101C

CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE

0x101D

CL_DEVICE_GLOBAL_MEM_CACHE_SIZE

0x101E

CL_DEVICE_GLOBAL_MEM_SIZE

0x101F

CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE

0x1020

CL_DEVICE_MAX_CONSTANT_ARGS

0x1021

CL_DEVICE_LOCAL_MEM_TYPE

0x1022

CL_DEVICE_LOCAL_MEM_SIZE

0x1023

CL_DEVICE_ERROR_CORRECTION_SUPPORT

0x1024

2000-2015, MetaQuotes Software Corp.

1775

Trabalhando com OpenCL

CL_DEVICE_PROFILING_TIMER_RESOLUTION

0x1025

CL_DEVICE_ENDIAN_LITTLE

0x1026

CL_DEVICE_AVAILABLE

0x1027

CL_DEVICE_COMPILER_AVAILABLE

0x1028

CL_DEVICE_EXECUTION_CAPABILITIES

0x1029

CL_DEVICE_QUEUE_PROPERTIES

0x102A

CL_DEVICE_NAME

0x102B

CL_DEVICE_VENDOR

0x102C

CL_DRIVER_VERSION

0x102D

CL_DEVICE_PROFILE

0x102E

CL_DEVICE_VERSION

0x102F

CL_DEVICE_EXTENSIONS

0x1030

CL_DEVICE_PLATFORM

0x1031

CL_DEVICE_DOUBLE_FP_CONFIG

0x1032

CL_DEVICE_PREFERRED_VECTOR_WIDTH_HAL
F

0x1034

CL_DEVICE_HOST_UNIFIED_MEMORY

0x1035

CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR

0x1036

CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT

0x1037

CL_DEVICE_NATIVE_VECTOR_WIDTH_INT

0x1038

CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG

0x1039

CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT

0x103A

CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE

0x103B

CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF

0x103C

CL_DEVICE_OPENCL_C_VERSION

0x103D

CL_DEVICE_LINKER_AVAILABLE

0x103E

CL_DEVICE_BUILT_IN_KERNELS

0x103F

CL_DEVICE_IMAGE_MAX_BUFFER_SIZE

0x1040

CL_DEVICE_IMAGE_MAX_ARRAY_SIZE

0x1041

CL_DEVICE_PARENT_DEVICE

0x1042

CL_DEVICE_PARTITION_MAX_SUB_DEVICES

0x1043

CL_DEVICE_PARTITION_PROPERTIES

0x1044

CL_DEVICE_PARTITION_AFFINITY_DOMAIN

0x1045

2000-2015, MetaQuotes Software Corp.

1776

Trabalhando com OpenCL

CL_DEVICE_PARTITION_TYPE

0x1046

CL_DEVICE_REFERENCE_COUNT

0x1047

CL_DEVICE_PREFERRED_INTEROP_USER_SYNC

0x1048

CL_DEVICE_PRINTF_BUFFER_SIZE

0x1049

CL_DEVICE_IMAGE_PITCH_ALIGNMENT

0x104A

CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMEN
T

0x104B

Exemplo:
void OnStart()
{
//--int dCount= CLGetInfoInteger(0,CL_DEVICE_COUNT);
for(int i = 0; i<dCount; i++)
{
int clCtx=CLContextCreate(i);
if(clCtx == -1)
Print("ERRO na CLContextCreate");
string device;
CLGetInfoString(clCtx,CL_DEVICE_NAME,device);
Print(i,": ",device);
uchar data[1024];
uint size;
CLGetDeviceInfo(clCtx,CL_DEVICE_VENDOR,data,size);
Print("tamanho = ",size);
string str=CharArrayToString(data);
Print(str);
}
}
//--- example of entries in Experts journal
//

2013.07.24 10:50:48

opencl (EURUSD,H1)

2: Advanced Micro Devices, Inc.

//

2013.07.24 10:50:48

opencl (EURUSD,H1)

size = 32

//

2013.07.24 10:50:48

opencl (EURUSD,H1)

Tahiti

//

2013.07.24 10:50:48

opencl (EURUSD,H1)

Intel(R) Corporation

//

2013.07.24 10:50:48

opencl (EURUSD,H1)

size = 21

//

2013.07.24 10:50:48

opencl (EURUSD,H1)

1:

//

2013.07.24 10:50:48

opencl (EURUSD,H1)

NVIDIA Corporation

//

2013.07.24 10:50:48

opencl (EURUSD,H1)

size = 19

//

2013.07.24 10:50:48

opencl (EURUSD,H1)

0: GeForce GTX 580

2000-2015, MetaQuotes Software Corp.

Intel(R) Core(TM) i7-3770 CPU @ 3.40G

1777

Trabalhando com OpenCL

CLProgramCreate
Cria um programa OpenCL a partir de um cdigo fonte.
int CLProgramCreate(
int

context,

const string source

// Manipulador para um contexto OpenCL


// O cdigo-fonte

);

Parmetros
context
[in] Manipula o contexto OpenCL.
source
[in] String com o cdigo-fonte do programa OpenCL.
Valor do Retorno
Um manipulador para um objeto OpenCL se for bem sucedido. Em caso de erro retornado -1. Para
obter informaes sobre o erro, utilize a funo GetLastError().
Observao
At o momento, so utilizados os seguintes cdigos de erro:
ERR_OPENCL_INVALID_HANDLE manipulador invlido para lidar com o OpenCL contexto.
ERR_INVALID_PARAMETER parmetro invlido de string.
ERR_NOT_ENOUGH_MEMORY no h memria suficiente para concluir a operao.
ERR_OPENCL_PROGRAM_CREATE erro interno do OpenCL ou erro de compilao.
In some graphic cards working with the double type numbers is disabled by default. This can lead to
compilation error 5105. To enable support for the double type numbers, please add the following
directive to your OpenCL program: #pragma OPENCL EXTENSION cl_khr_fp64 : enable
Example:
//+------------------------------------------------------------------+
//| OpenCL kernel

//+------------------------------------------------------------------+
const string
cl_src=
//--- by default some GPU doesn't support doubles
//--- cl_khr_fp64 directive is used to enable work with doubles
"#pragma OPENCL EXTENSION cl_khr_fp64 : enable

\r\n"

//--- OpenCL kernel function


"__kernel void Test_GPU(__global double *data,

\r\n"

"

const

int N,

\r\n"

"

const

int total_arrays)

\r\n"

"

\r\n"

"

uint kernel_index=get_global_id(0);

\r\n"

"

if (kernel_index>total_arrays) return;

\r\n"

"

uint local_start_offset=kernel_index*N;

\r\n"

2000-2015, MetaQuotes Software Corp.

1778

Trabalhando com OpenCL


"

for(int i=0; i<N; i++)

"

"
"

\r\n"
data[i+local_start_offset] *= 2.0;

"

\r\n"

\r\n"
\r\n"

\r\n";

//+------------------------------------------------------------------+
//| Test_CPU

//+------------------------------------------------------------------+
bool Test_CPU(double &data[],const int N,const int id,const int total_arrays)
{
//--- check array size
if(ArraySize(data)==0) return(false);
//--- check array index
if(id>total_arrays) return(false);
//--- calculate local offset for array with index id
int local_start_offset=id*N;
//--- multiply elements by 2
for(int i=0; i<N; i++)
{
data[i+local_start_offset]*=2.0;
}
return true;
}
//--#define ARRAY_SIZE

100

#define TOTAL_ARRAYS 5

// size of the array


// total arrays

//--- OpenCL handles


int cl_ctx;

// OpenCL context handle

int cl_prg;

// OpenCL program handle

int cl_krn;

// OpenCL kernel handle

int cl_mem;

// OpenCL buffer handle

//--double DataArray1[]; // data array for CPU calculation


double DataArray2[]; // data array for GPU calculation
//+------------------------------------------------------------------+
//| Script program start function

//+------------------------------------------------------------------+
int OnStart()
{
//--- initialize OpenCL objects
//--- create OpenCL context
if((cl_ctx=CLContextCreate())==INVALID_HANDLE)
{
Print("OpenCL not found. Error=",GetLastError());
return(1);
}
//--- create OpenCL program
if((cl_prg=CLProgramCreate(cl_ctx,cl_src))==INVALID_HANDLE)
{

2000-2015, MetaQuotes Software Corp.

1779

Trabalhando com OpenCL


CLContextFree(cl_ctx);
Print("OpenCL program create failed. Error=",GetLastError());
return(1);
}
//--- create OpenCL kernel
if((cl_krn=CLKernelCreate(cl_prg,"Test_GPU"))==INVALID_HANDLE)
{
CLProgramFree(cl_prg);
CLContextFree(cl_ctx);
Print("OpenCL kernel create failed. Error=",GetLastError());
return(1);
}
//--- create OpenCL buffer

if((cl_mem=CLBufferCreate(cl_ctx,ARRAY_SIZE*TOTAL_ARRAYS*sizeof(double),CL_MEM_READ_WRITE))==INV
{
CLKernelFree(cl_krn);
CLProgramFree(cl_prg);
CLContextFree(cl_ctx);
Print("OpenCL buffer create failed. Error=",GetLastError());
return(1);
}
//--- set OpenCL kernel constant parameters
CLSetKernelArgMem(cl_krn,0,cl_mem);
CLSetKernelArg(cl_krn,1,ARRAY_SIZE);
CLSetKernelArg(cl_krn,2,TOTAL_ARRAYS);
//--- prepare data arrays
ArrayResize(DataArray1,ARRAY_SIZE*TOTAL_ARRAYS);
ArrayResize(DataArray2,ARRAY_SIZE*TOTAL_ARRAYS);
//--- fill arrays with data
for(int j=0; j<TOTAL_ARRAYS; j++)
{
//--- calculate local start offset for jth array
uint local_offset=j*ARRAY_SIZE;
//--- prepare array with index j
for(int i=0; i<ARRAY_SIZE; i++)
{
//--- fill arrays with function MathCos(i+j);
DataArray1[i+local_offset]=MathCos(i+j);
DataArray2[i+local_offset]=MathCos(i+j);
}
};
//--- test CPU calculation
for(int j=0; j<TOTAL_ARRAYS; j++)
{
//--- calculation of the array with index j
Test_CPU(DataArray1,ARRAY_SIZE,j,TOTAL_ARRAYS);
}
//--- prepare CLExecute params
uint

offset[]={0};

2000-2015, MetaQuotes Software Corp.

1780

Trabalhando com OpenCL


//--- global work size
uint

work[]={TOTAL_ARRAYS};

//--- write data to OpenCL buffer


CLBufferWrite(cl_mem,DataArray2);
//--- execute OpenCL kernel
CLExecute(cl_krn,1,offset,work);
//--- read data from OpenCL buffer
CLBufferRead(cl_mem,DataArray2);
//--- total error
double total_error=0;
//--- compare results and calculate error
for(int j=0; j<TOTAL_ARRAYS; j++)
{
//--- calculate local offset for jth array
uint local_offset=j*ARRAY_SIZE;
//--- compare the results
for(int i=0; i<ARRAY_SIZE; i++)
{
double v1=DataArray1[i+local_offset];
double v2=DataArray2[i+local_offset];
double delta=MathAbs(v2-v1);
total_error+=delta;
//--- show first and last arrays
if((j==0) || (j==TOTAL_ARRAYS-1))
PrintFormat("array %d of %d, element [%d]:

%f, %f, [error]=%f",j+1,TOTAL_ARRAYS,i,v1,v

}
}
PrintFormat("Total error: %f",total_error);
//--- delete OpenCL objects
//--- free OpenCL buffer
CLBufferFree(cl_mem);
//--- free OpenCL kernel
CLKernelFree(cl_krn);
//--- free OpenCL program
CLProgramFree(cl_prg);
//--- free OpenCL context
CLContextFree(cl_ctx);
//--return(0);
}

2000-2015, MetaQuotes Software Corp.

1781

Trabalhando com OpenCL

CLProgramFree
Remove um programa OpenCL.
void CLProgramFree(
int program

// Manipulador para um objeto OpenCL

);

Parmetros
program
[in] Manipulador para um objeto OpenCL.
Valor do Retorno
Nenhum. No caso de um erro interno o valor do modificador _LastError. Para obter informaes
sobre o erro, utilize a funo GetLastError().

2000-2015, MetaQuotes Software Corp.

1782

Trabalhando com OpenCL

CLKernelCreate
Cria o kernel do programa OpenCL e retorna seu manipulador.
int CLKernelCreate(
int

program,

// Manipulador para um objeto OpenCL

const string kernel_name

// Nome do kernel

);

Parmetros
program
[in] Manipulador para um objeto do programa OpenCL.
kernel_name
[in] O nome da funo do kernel no programa apropriado OpenCL, em que a execuo se inicia.
Valor do Retorno
Um manipulador para um objeto OpenCL se for bem sucedido. Em caso de erro retornado -1. Para
obter informaes sobre o erro, utilize a funo GetLastError().
Observao
At o momento, so utilizados os seguintes cdigos de erro:
ERR_OPENCL_INVALID_HANDLE - manipulador invlido para lidar com o programa OpenCL.
ERR_INVALID_PARAMETER - parmetro invlido de string.
ERR_OPENCL_TOO_LONG_KERNEL_NAME - nome do kernel contm mais de 127 caracteres.
ERR_OPENCL_KERNEL_CREATE - Ocorreu um erro interno durante a criao de um objeto OpenCL.

2000-2015, MetaQuotes Software Corp.

1783

Trabalhando com OpenCL

CLKernelFree
Remove uma funo inicial OpenCL.
void CLKernelFree(
int kernel

// Manipulador para o kernel de um programa OpenCL

);

Parmetros
kernel_name
[in] Manipulador do objeto do kernel.
Valor do Retorno
Nenhum. No caso de um erro interno o valor do modificador _LastError. Para obter informaes
sobre o erro, utilize a funo GetLastError().

2000-2015, MetaQuotes Software Corp.

1784

Trabalhando com OpenCL

CLSetKernelArg
Define um parmetro para a funo OpenCL.
bool CLSetKernelArg(
int

kernel,

// Manipulador para o kernel de um programa OpenCL

uint

arg_index,

// O nmero do argumento da funo OpenCL

void arg_value

// Cdigo-fonte

);

Parmetros
kernel
[in] Manipulador para um kernel do programa OpenCL.
arg_index
[in] O nmero do argumento da funo, a numerao comea com zero.
arg_value
[in] O valor do argumento da funo.
Valor do Retorno
Retorna true se for bem sucedido, caso contrrio retorna false. Para obter informaes sobre o erro,
utilize a funo GetLastError().
Observao
At o momento, so utilizados os seguintes cdigos de erro:
ERR_INVALID_PARAMETER,
ERR_OPENCL_INVALID_HANDLE manipulador invlido para o kernel OpenCL.
ERR_OPENCL_SET_KERNEL_PARAMETER - erro interno do OpenCL.

2000-2015, MetaQuotes Software Corp.

1785

Trabalhando com OpenCL

CLSetKernelArgMem
Define um buffer OpenCL como um parmetro da funo OpenCL.
bool CLSetKernelArgMem(
int

kernel,

// Manipulador para o kernel de um programa OpenCL

uint

arg_index,

// O nmero do argumento da funo OpenCL

int

cl_mem_handle

// Manipulador para buffer de OpenCL

);

Parmetros
kernel
[in] Manipulador para um kernel do programa OpenCL.
arg_index
[in] O nmero do argumento da funo, a numerao comea com zero.
cl_mem_handle
[in] Um manipulador para um buffer OpenCL.
Valor do Retorno
Retorna true se for bem sucedido, caso contrrio retorna false. Para obter informaes sobre o erro,
utilize a funo GetLastError().

2000-2015, MetaQuotes Software Corp.

1786

Trabalhando com OpenCL

CLBufferCreate
Cria um buffer OpenCL e retorna seu manipulador.
int CLBufferCreate(
int

context,

// Manipulador para um contexto OpenCL

uint

size,

// Tamanho do buffer

uint flags

// Combinao de sinalizadores que especifique as propriedades do buffer Open

);

Parmetros
context
[in] Um manipulador de contexto OpenCL.
size
[in] Tamanho do buffer em bites.
flags
[in]
Propriedades de buffer que
sinalizadores:CL_MEM_READ_WRITE,
CL_MEM_ALLOC_HOST_PTR.

so definidas usando
CL_MEM_WRITE_ONLY,

uma combinao de
CL_MEM_READ_ONLY,

Valor do Retorno
Um manipulador para um buffer OpenCL se for bem sucedido. Em caso de erro retornado -1. Para
obter informaes sobre o erro, utilize a funo GetLastError().
Observao
At o momento, so utilizados os seguintes cdigos de erro:
ERR_OPENCL_INVALID_HANDLE - invlido manipulador ao contexto OpenCL.
ERR_NOT_ENOUGH_MEMORY memria insuficiente.
ERR_OPENCL_BUFFER_CREATE erro interno criando buffers.

2000-2015, MetaQuotes Software Corp.

1787

Trabalhando com OpenCL

CLBufferFree
Exclui um buffer de OpenCL.
void CLBufferFree(
int

buffer

// Manipulador para um buffer OpenCL

);

Parmetros
buffer
[in] Um manipulador para um buffer OpenCL.
Valor do Retorno
Nenhum. No caso de um erro interno o valor do modificador _LastError. Para obter informaes
sobre o erro, utilize a funo GetLastError().

2000-2015, MetaQuotes Software Corp.

1788

Trabalhando com OpenCL

CLBufferWrite
Escreve para o buffer OpenCL e retorna o nmero de elementos escritos.
uint CLBufferWrite(
int

buffer,

// Um manipulador para o buffer OpenCL

const void& data[],

// Uma array de valores

uint

buffer_offset=0,

// Um deslocamento no buffer OpenCL em bites, 0 por padr

uint

data_offset=0,

// Um deslocamento na array de elementos, 0 por padro

uint

data_count=WHOLE_ARRAY

// O nmero de valores a partir do array para a escrita,

);

Parmetros
buffer
[in] O manipulador do buffer OpenCL.
data[]
[in] Um array de valores que deve ser escrito no buffer OpenCL. Passado por referncia.
buffer_offset
[in] Uma compensao no buffer OpenCL em bites, a partir do qual comea a escrita. Por padro,
a escrita comea com o incio do buffer.
data_offset
[in] O ndice do primeiro elemento array, comeando a partir do qual valores de array so escritos
no buffer OpenCL. Por padro, so tomados os valores desde o incio do array.
data_count
[in] O nmero de valores que devem ser escritos. Todos os valores do array, por padro.
Valor do Retorno
O nmero de elementos escritos. 0 (zero) devolvido em caso de erro. Para obter informaes
sobre o erro, utilize a funo GetLastError().
Observao
Para arrays unidimensionais, o nmero do elemento, com o qual a leitura de dados para a escrita
num buffer de OpenCL comea, calculado tendo em conta os sinalizadores AS_SERIES.
Um array de duas ou mais dimenses apresentado como unidimensional. Neste caso, data_offset
o nmero de elementos que devem ser ignorados na apresentao, e no o nmero de elementos na
primeira dimenso.

2000-2015, MetaQuotes Software Corp.

1789

Trabalhando com OpenCL

CLBufferRead
L um buffer de OpenCL em uma array e retorna o nmero de elementos de leitura.
uint CLBufferRead(
int

buffer,

// Um manipulador para o buffer OpenCL

const void& data[],

// Uma array de valores

uint

buffer_offset=0,

// Um deslocamento no buffer OpenCL em bites, 0 por padr

uint

data_offset=0,

// Um deslocamento na array de elementos, 0 por padro

uint

data_count=WHOLE_ARRAY

// O nmero de valores a partir da buffer de leitura, to

);

Parmetros
buffer
[in] Um manipulador do buffer OpenCL.
data[]
[in] Um array para receber os valores do buffer OpenCL. Passado por referncia.
buffer_offset
[in] Um deslocamento no buffer OpenCL em bites, a partir da qual se inicia a leitura. Por padro,
a leitura comea com o incio do buffer.
data_offset
[in] O ndice do primeiro elemento array para escrever os valores de buffer OpenCL. Por padro, a
escrita dos valores lidos em um array comea a partir do ndice zero.
data_count
[in] O nmero de valores que devem ser lidos. Todo o buffer OpenCL lido por padro.
Valor do Retorno
O nmero de elementos de leitura. 0 (zero) devolvido em caso de erro. Para obter informaes
sobre o erro, utilize a funo GetLastError().
Observao
Para arrays unidimensionais, o nmero do elemento, em que a escrita de dados num buffer de
OpenCL inicia, calculado tendo em conta os sinalizadores AS_SERIES.
Um array de duas ou mais dimenses apresentado como unidimensional. Neste caso, data_offset
o nmero de elementos que devem ser ignorados na apresentao, e no o nmero de elementos na
primeira dimenso.

2000-2015, MetaQuotes Software Corp.

1790

Trabalhando com OpenCL

CLExecute
A funo executa um programa OpenCL. Existem trs verses da funo:
1. Lanamento das funes kernel usando um kernel
bool CLExecute(
int

kernel

// Manipulador para o kernel de um programa OpenCL

);

2. Lanamento de vrias cpias do kernel (funo OpenCL) com descrio do espao de tarefas
bool CLExecute(
int

kernel,

// Manipulador para o kernel de um programa OpenCL

uint

work_dim,

// Dimenso do espao de tarefas

const uint& global_work_offset[],

// Compensao inicial no espao de tarefas

const uint& global_work_size[]

// Nmero total de tarefas

);

3. Lanamento de vrias cpias do kernel (funo OpenCL) com descrio do espao de tarefa e
especificao do tamanho de subconjunto de tarefa local do grupo
bool CLExecute(
int

kernel,

// Manipulador para o kernel de um programa OpenCL

uint

work_dim,

// Dimenso do espao de tarefas

const uint& global_work_offset[],

// Compensao inicial no espao de tarefas

const uint& global_work_size[],

// Nmero total de tarefas

const uint& local_work_size[]

// Nmero de tarefas no grupo local

);

Parmetros
kernel
[in] Manipulador para o kernel OpenCL.
work_dim
[in] Dimenso do espao tarefas.
global_work_offset[]
[in] Compensao inicial no espao de tarefas.
global_work_size[]
[in] O tamanho de um subconjunto de tarefas.
local_work_size[]
[in] O tamanho do subconjunto de tarefa local do grupo.
Valor do Retorno
Retorna true se for bem sucedido, caso contrrio retorna false. Para obter informaes sobre o erro,
utilize a funo GetLastError().
Observao

2000-2015, MetaQuotes Software Corp.

1791

Trabalhando com OpenCL


Considerar o uso dos parmetros no exemplo a seguir:
work_dim especifica work_items[] da dimenso do array descrevendo as tarefas. Se work_dim=3,
array tridimensional work_items[N1, N2, N3] usado.
global_work_size[] contm os valores definindo o tamanho array do work_items[]. Se work_dim=3,
array do global_work_size[3] pode ser {40, 100, 320}. Ento ns temos work_items[40, 100, 320].
Assim, o nmero total de tarefas 40 100 320 = 1 280 000.
local_work_size[] define o subconjunto das tarefas que sero executadas pelo kernel especfico de
programa OpenCL. A sua dimenso igual a dimensowork_items[] e permite a diviso exata da
tarefa comum de subconjunto dentro de subconjuntos menores. Na verdade, os tamanhos do array
do local_work_size[] devem ser selecionados de modo a dividir a tarefa global work_items[]
definindo dentro de subconjuntos menores. local_work_size[3]={10, 10, 10} vai se encaixar no
exemplo corrente, como work_items[40, 100, 320] podem ser obtidos a partir do array do
local_items[10, 10, 10] sem excesso.

2000-2015, MetaQuotes Software Corp.

1792

Biblioteca Padro

Biblioteca Padro
Este grupo de captulos contm os detalhes tcnicos da Biblioteca Padro MQL5 e as descries de
todos os seus componentes fundamentais.
A Biblioteca Padro MQL5 escrita em linguagem MQL5 e projetada para facilitar a escrita de
programas (indicadores, scripts, experts) para os usurios finais. A biblioteca oferece acesso prtico
para a maioria das funes internas MQL5.
A Biblioteca Padro MQL5 alocado no diretrio de trabalho do terminal e na pasta "Include".
Seo

Localizao

Classe da base

Include\

Dados das Classes

Include\Arrays\

Classes para operaes de arquivo

Include\Files\

Classes para operaes tipo string

Include\Strings\

Classes para objetos grficos

Include\Objects\

Classe para criao de grficos personalizados

Include\Canvas\

Classe para trabalhar com grficos

Include\Charts\

Indicadores tcnicos

Include\Indicators\

Classes de negociao

Include\Trade\

Classes de estratgias de negociao

Include\Expert\

Classes para criao de painis de controle e


dilogos

Include\Controls\

2000-2015, MetaQuotes Software Corp.

1793

Biblioteca Padro

Classe Base CObject


CObject a classe base para a construo de uma biblioteca padro MQL5.

Descrio
Classe CObject permite a todos os seus descendentes fazerem parte de uma lista interligada. Tambm
identifica uma srie de mtodos virtuais para prosseguimento da execuo em classes descendentes.

Declarao
class CObject

Ttulo
#include <Object.mqh>

Mtodos de classe
Atributos
Prev

Obtm o valor do item anterior

Prev

Define o valor do item anterior

Next

Obtm o valor do elemento posterior

Next

Define o prximo elemento

Mtodos para comparar


virtual Compare

Retorna o resultado da comparao com outro


objeto

Entrada/sada
virtual Save

Grava objeto para um arquivo

virtual Load

L o objeto a partir do arquivo

virtual Type

Retorna o tipo de objeto

As classes derivadas:
CArray
CChartObject
CChart
CString
CFile
CList
CTreeNode

2000-2015, MetaQuotes Software Corp.

1794

Biblioteca Padro

Prev
Obtm um ponteiro para o item anterior da lista .
CObject* Prev()

Valor do Retorno
Ponteiro para o item anterior da lista. Se o item listado em primeiro lugar, ento retorna NULL.
Exemplo
//--- example for CObject::Prev()
#include <Object.mqh>
//--void OnStart()
{
CObject *object_first,*object_second;
//--object_first=new CObject;
if(object_first==NULL)
{
printf("Object create error");
return;
}
object_second=new CObject;
if(object_second==NULL)
{
printf("Object create error");
delete object_first;
return;
}
//--- set interconnect
object_first.Next(object_second);
object_second.Prev(object_first);
//--- use prev object
CObject *object=object_second.Prev();
//--- delete objects
delete object_first;
delete object_second;
}

2000-2015, MetaQuotes Software Corp.

1795

Biblioteca Padro

Prev
Define o ponteiro para o item anterior da lista.
void Prev(
CObject* object

// Pointer to the previous list item

Parmetros
object
[in] New ponteiro valor para o item anterior da lista.
Exemplo
//--- example for CObject::Prev(CObject*)
#include <Object.mqh>
//--void OnStart()
{
CObject *object_first,*object_second;
//--object_first=new CObject;
if(object_first==NULL)
{
printf("Object create error");
return;
}
object_second=new CObject;
if(object_second==NULL)
{
printf("Object create error");
delete object_first;
return;
}
//--- set interconnect
object_first.Next(object_second);
object_second.Prev(object_first);
//--- use objects
//--- ...
//--- delete objects
delete object_first;
delete object_second;
}

2000-2015, MetaQuotes Software Corp.

1796

Biblioteca Padro

Next
Obtm um ponteiro para o prximo elemento da lista.
CObject* Next()

Valor do Retorno
Ponteiro para o prximo item na lista. Se for o ltimo item na lista, retorna NULL.
Exemplo
//--- example for CObject::Next()
#include <Object.mqh>
//--void OnStart()
{
CObject *object_first,*object_second;
//--object_first=new CObject;
if(object_first==NULL)
{
printf("Object create error");
return;
}
object_second=new CObject;
if(object_second==NULL)
{
printf("Object create error");
delete object_first;
return;
}
//--- set interconnect
object_first.Next(object_second);
object_second.Prev(object_first);
//--- use next object
CObject *object=object_first.Next();
//--- delete objects
delete object_first;
delete object_second;
}

2000-2015, MetaQuotes Software Corp.

1797

Biblioteca Padro

Next
Define o ponteiro para o prximo elemento da lista.
void Next(
CObject* object

// Pointer to the next list item

Parmetros
object
[in] Novo ponteiro de valor para o prximo item da lista.
Exemplo
//--- example for CObject::Next(CObject*)
#include <Object.mqh>
//--void OnStart()
{
CObject *object_first,*object_second;
//--object_first=new CObject;
if(object_first==NULL)
{
printf("Object create error");
return;
}
object_second=new CObject;
if(object_second==NULL)
{
printf("Object create error");
delete object_first;
return;
}
//--- set interconnect
object_first.Next(object_second);
object_second.Prev(object_first);
//--- use objects
//--- ...
//--- delete objects
delete object_first;
delete object_second;
}

2000-2015, MetaQuotes Software Corp.

1798

Biblioteca Padro

Compare
Compara o item de dados na lista com dados sobre outro elemento da lista.
virtual int Compare(
CObject const * node,

// Node to compare with

int

// Compare mode

mode=0

) const

Parmetros
node
[in] Ponteiro para um item da lista a comparar
mode=0
[in] Comparao de Variante
Valor do Retorno
0 - no caso dos itens da lista serem iguais, -1 - se o item da lista menor do que o item na lista a
comparar (n), 1 - se o item da lista de maior do que o item na lista a comparar (n).
Observao
Mtodo Compare () na classe CObject sempre retorna 0 e no executa qualquer ao. Se voc quiser
comparar dados de classe derivada, o mtodo Compare (...) deve ser implementado. O parmetro
de modo deve ser usado quando implementao for comparao multivariada.
Exemplo
//--- example for CObject::Compare(...)
#include <Object.mqh>
//--void OnStart()
{
CObject *object_first,*object_second;
//--object_first=new CObject;
if(object_first==NULL)
{
printf("Object create error");
return;
}
object_second=new CObject;
if(object_second==NULL)
{
printf("Object create error");
delete object_first;
return;
}
//--- set interconnect
object_first.Next(object_second);

2000-2015, MetaQuotes Software Corp.

1799

Biblioteca Padro
object_second.Prev(object_first);
//--- compare objects
int result=object_first.Compare(object_second);
//--- delete objects
delete object_first;
delete object_second;
}

2000-2015, MetaQuotes Software Corp.

1800

Biblioteca Padro

Save
Salva lista de elementos de dados no arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para abrir mais cedo, com a funo FileOpen(), binrio
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Observao
Mtodo Save (int) na classe CObject sempre retorna verdadeiro e no executa qualquer ao. Se
voc deseja salvar os dados derivados de classe no arquivo, o mtodo Save (int) deve ser
implementado.
Exemplo
//--- example for CObject::Save(int)
#include <Object.mqh>
//--void OnStart()
{
int

file_handle;

CObject *object=new CObject;


//--if(object!=NULL)
{
printf("Object create error");
return;
}
//--- set objects data
//--- . . .
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!object.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
delete object;
FileClose(file_handle);
//--return;

2000-2015, MetaQuotes Software Corp.

1801

Biblioteca Padro
}
FileClose(file_handle);
}
delete object;
}

2000-2015, MetaQuotes Software Corp.

1802

Biblioteca Padro

Load
Carrega item de dados na lista a partir de um arquivo.
virtual bool Load(
int file_handle

// handle to file

Parmetros
file_handle
[in] Manipulador para abrir mais cedo, com a funo FileOpen(), binrio
Valor do Retorno
verdadeiro - se concludo com xito, falso - se com erro.
Observao
Mtodo Load (int) na classe CObject sempre retorna verdadeiro e no executa qualquer ao. Se
voc deseja carregar os dados derivados de classe a partir de um arquivo, o mtodo Load (int) deve
ser implementado.
Exemplo
//--- example for CObject::Load(int)
#include <Object.mqh>
//--void OnStart()
{
int

file_handle;

CObject *object=new CObject;


//--if(object!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!object.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
delete object;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);

2000-2015, MetaQuotes Software Corp.

1803

Biblioteca Padro
}
//--- use object
//--- . . .
delete object;
}

2000-2015, MetaQuotes Software Corp.

1804

Biblioteca Padro

Type
Obtm o identificador do tipo.
virtual int Type() const

Valor do Retorno
Identificador do tipo (para CObject - 0).
Exemplo
//--- example for CObject::Type()
#include <Object.mqh>
//--void OnStart()
{
CObject *object=new CObject;
//--object=new CObject;
if(object ==NULL)
{
printf("Object create error");
return;
}
//--- get objects type
int type=object.Type();
//--- delete object
delete object;
}

2000-2015, MetaQuotes Software Corp.

1805

Biblioteca Padro

Estruturas de Dados
Esta seo contm os detalhes tcnicos de trabalhar com vrias estruturas de dados (arrays, listas
vinculadas, etc.) e descrio dos componentes relevantes da Biblioteca Padro MQL5.
Usando as classes de estruturas de dados, ser economizado tempo ao criar armazenamentos de dados
personalizados de vrios formatos (incluindo estruturas de dados compostos).
A Biblioteca Padro MQL5 (em termos de conjuntos de dados) colocada no diretrio de trabalho do
terminal, na pasta Include\Arrays.

Arrays de dados
Uso de classes de Arrays dinmicos de dados economizar tempo ao criar armazenamentos de dados
personalizados de vrios formatos (incluindo arrays multidimensionais).
A Biblioteca Padro MQL5 (em termos de arrays de dados) colocada no diretrio de trabalho do
terminal, na pasta Include\Arrays.
Classe

Descrio

Classe base do array de dados dinmico CArray

Classe base do array de dados dinmico

CArrayChar

Array dinmico de variveis do tipo char ou


uchar

CArrayShort

Array dinmico de variveis do tipo short ou


ushort

CArrayInt

Array dinmico de variveis do tipo int ou uint

CArrayLong

Array dinmico de variveis do tipo long ou


ulong

CArrayFloat

Array dinmico de variveis do tipo float

CArrayDouble

Array dinmico de variveis do tipo double

CArrayString

Array dinmico de variveis do tipo string

Classe base de objeto do array CArrayObj

Array dinmico de ponteiros CObject

Classe base da lista CList

Oferece a capacidade de trabalhar com uma


lista de situaes do CObject e seu descendente

CTreeNode

Oferece a capacidade de trabalhar com os ns


da rvore binria Ctree

CTree

Oferece a capacidade de trabalhar com a rvore


binria das instncias de classe CTreeNode e
seus descendentes

2000-2015, MetaQuotes Software Corp.

1806

Biblioteca Padro

CArray
CArray uma classe base de array dinmica de variveis.

Descrio
Classe CArray possibilita trabalhar com um array dinmico de variveis na parte dos atributos de
gerenciamento de alocao da memria, ordenao e trabalho com arquivos.

Declarao
class CArray : public CObject

Ttulo
#include <Arrays\Array.mqh>

Mtodos de classe
Atributos
Step

Obtm o tamanho do incremento de passo do


array

Step

Defina o tamanho do incremento do array

Total

Obtm o nmero de elementos no array

Available

Obtm o nmero de elementos livres do array


que esto disponveis sem alocao de memria
adicional

Max

Obtm o tamanho mximo possvel do array


sem realocao de memria

IsSorted

Obtm assinatura do array ordenado para uma


opo especfica

SortMode

Obtm a verso do array de classificao

Mtodos claros
Clear

Exclui todos os elementos do array, sem


liberao de memria

Classificar mtodos
Sort

Classifica um array para uma opo especfica

Entrada/sada
virtual Save

Salva array de dados no arquivo

virtual Load

Carrega array de dados a partir de um arquivo

As classes derivadas:

2000-2015, MetaQuotes Software Corp.

1807

Biblioteca Padro
CArrayChar
CArrayShort
CArrayInt
CArrayLong
CArrayFloat
CArrayDouble
CArrayString
CArrayObj

2000-2015, MetaQuotes Software Corp.

1808

Biblioteca Padro

Step
Define o tamanho do incremento do array.
int Step() const

Valor do Retorno
Tamanho de incremento do array.
Exemplo
//--- example for CArray::Step()
#include <Arrays\Array.mqh>
//--void OnStart()
{
CArray *array=new CArray;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- get resize step
int step=array.Step();
//--- use array
//--- ...
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1809

Biblioteca Padro

Step
Define o tamanho do incremento do array.
bool Step(
int step

// step

Parmetros
step
[in] Os novos valores dos incrementos dos passos no tamanho do array.
Valor do Retorno
Verdadeiro se obteve xito, falso - se houve uma tentativa de estabelecer um passo menor ou igual
a zero.
Exemplo
//--- example for CArray::Step(int)
#include <Arrays\Array.mqh>
//--void OnStart()
{
CArray *array=new CArray;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- set resize step
bool result=array.Step(1024);
//--- use array
//--- ...
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1810

Biblioteca Padro

Total
Obtm o nmero de elementos no array.
int Total() const;

Valor do Retorno
Nmero de elementos no array.
Exemplo
//--- example for CArray::Total()
#include <Arrays\Array.mqh>
//--void OnStart()
{
CArray *array=new CArray;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- check total
int total=array.Total();
//--- use array
//--- ...
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1811

Biblioteca Padro

Available
Obtm o nmero de elementos livres do array que esto disponveis sem alocao de memria
adicional.
int Available() const

Valor do Retorno
Nmero de elementos livres do array que esto disponveis sem alocao de memria adicional.
Exemplo
//--- example for CArray::Available()
#include <Arrays\Array.mqh>
//--void OnStart()
{
CArray *array=new CArray;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- check available
int available=array.Available();
//--- use array
//--- ...
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1812

Biblioteca Padro

Max
Obtm o tamanho mximo possvel do array sem realocao de memria.
int Max() const

Valor do Retorno
O tamanho mximo possvel do array sem realocao de memria.
Exemplo
//--- example for CArray::Max()
#include <Arrays\Array.mqh>
//--void OnStart()
{
CArray *array=new CArray;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- check maximum size
int max=array.Max();
//--- use array
//--- ...
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1813

Biblioteca Padro

IsSorted
Obtm assinatura do array ordenado para uma opo especfica.
bool IsSorted(
int mode=0

// Sorting mode

) const

Parmetros
mode=0
[in] Verso de teste da classificao.
Valor do Retorno
Flag da lista ordenada. Se a lista classificada pela verso especfica - verdadeiro, do contrrio falso.
Observao
O sinal do array ordenado no pode ser alterado diretamente. O sinal classificado define o mtodo
Sort () e resetar qualquer mtodos para adicionar / inserir exceto o InsertSort (...).
Exemplo
//--- example for CArray::IsSorted()
#include <Arrays\Array.mqh>
//--void OnStart()
{
CArray *array=new CArray;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- check sorted
if(array.IsSorted())
{
//--- use methods for sorted array
//--- ...
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1814

Biblioteca Padro

SortMode
Obtm a verso do array de classificao.
int SortMode() const;

Valor do Retorno
Modo de classificao.
Exemplo
//--- example for CArray::SortMode()
#include <Arrays\Array.mqh>
//--void OnStart()
{
CArray *array=new CArray;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- check sort mode
int sort_mode=array.SortMode();
//--- use array
//--- ...
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1815

Biblioteca Padro

Clear
Exclui todos os elementos do array, sem liberao de memria.
void Clear()

Valor do Retorno
Nenhum.

Exemplo
//--- example for CArray::Clear()
#include <Arrays\Array.mqh>
//--void OnStart()
{
CArray *array=new CArray;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- use array
//--- ...
//--- clear array
array.Clear();
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1816

Biblioteca Padro

Sort
Classifica um array para uma opo especfica.
void Sort(
int mode=0

// Sorting mode

Parmetros
mode=0
[in] Modo de classificao do array.
Valor do Retorno
No tem.
Observao
Classificao de um array sempre ascendente. Para arrays dos tipos de dados primitivos
(CArrayChar, CArrayShort, etc.), o modo de parmetro no usado. Para CArrayObj, classificao
multivariada deve ser implementada na classe derivada, mtodo Sort (int).
Exemplo
//--- example for CArray::Sort(int)
#include <Arrays\Array.mqh>
//--void OnStart()
{
CArray *array=new CArray;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- sorting by mode 0
array.Sort(0);
//--- use array
//--- ...
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1817

Biblioteca Padro

Save
Salva array de dados no arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArray::Save(int)
#include <Arrays\Array.mqh>
//--void OnStart()
{
int

file_handle;

CArray *array=new CArray;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1818

Biblioteca Padro

Load
Carrega array de dados a partir de um arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArray::Load(...)
#include <Arrays\Array.mqh>
//--void OnStart()
{
int

file_handle;

CArray *array=new CArray;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1819

Biblioteca Padro

CArrayChar
CArrayChar uma classe de array dinmico de variveis do tipo char ou uchar.

Descrio
A classe CArrayChar posibilita o trabalho com um array dinmico de variveis do tipo char ou uchar. A
classe possibilita adicionar/inserir/excluir elementos em: array, ordenao de array e pesquisando em
array ordenado. Alm disto, implementa mtodos para trabalhar com o arquivo.

Declarao
class CArrayChar : public CArray

Ttulo
#include <Arrays\ArrayChar.mqh>

Mtodos de classe
Controle de memria
Reserve

Memria alocada para aumentar o tamanho do


array

Resize

Define um novo tamanho (mais pequeno) do


array

Shutdown

Limpa o array com uma liberao de memria


completa

Mtodos para adicionar


Add

Adiciona um elemento para o final do array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

Insert

Insere um elemento no array para uma posio


especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

AssignArray

Copia os elementos array a partir de outro array

AssignArray

Copia os elementos array a partir de outro array

Mtodos para modificar


Update

Altera

elemento

2000-2015, MetaQuotes Software Corp.

na

posio

do

array

1820

Biblioteca Padro

determinado
Shift

Desloca um item a partir de uma dada posio


no array para um deslocamento determinado

Mtodos para excluir


Delete

Remove o elemento a partir de uma posio


especfica no array

DeleteRange

Exclui um grupo de elementos a partir de uma


posio especfica no array

Mtodos de acesso
At

Obtm o elemento a partir de uma posio dada


no array

Mtodos para comparar


CompareArray

Compara o array com outro array

CompareArray

Compara o array com outro array

Mtodos para array ordenado


InsertSort

Elemento de inseres em array ordenado

Pesquisa

Procura por um elemento igual a amostra em


array ordenado

SearchGreat

Procura por um elemento de mais amostras em


array ordenado

SearchLess

Procura por um elemento menor do que a


amostra em array ordenado

SearchGreatOrEqual

Procura por um elemento maior ou igual ao


modelo em array ordenado

SearchLessOrEqual

Procura por um elemento menor ou igual ao


modelo apresentado em array ordenado

SearchFirst

Localiza o primeiro elemento igual ao modelo


em array ordenado

SearchLast

Localiza o ltimo elemento igual ao modelo em


array ordenado

SearchLinear

Procura o elemento igual a amostra no array

Entrada/sada
virtual Save

Salva array de dados no arquivo

virtual Load

Carrega array de dados a partir de um arquivo

virtual Type

Obtm o identificador do tipo do array

2000-2015, MetaQuotes Software Corp.

1821

Biblioteca Padro

Reserve
Memria alocada para aumentar o tamanho do array.
bool Reserve(
int size

// Number

Parmetros
size
[in] O nmero de elementos adicionais do array.
Valor do Retorno
verdadeiro se com sucesso; falso - se houve uma tentativa de buscar com quantidade menor ou
igual a zero, ou se o array no aumentou.
Observao
Para reduzir a fragmentao da memria, o aumento do tamanho do array feito com um passo
dado anteriormente atravs do mtodo de Step (int), ou 16 (por padro).
Exemplo
//--- example for CArrayChar::Reserve(int)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- reserve memory
if(!array.Reserve(1024))
{
printf("Reserve error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1822

Biblioteca Padro

Resize
Define um novo tamanho (menor) do array.
bool Resize(
int size

// Size

Parmetros
size
[in] Novo tamanho do array.
Valor do Retorno
Verdadeiro se com sucesso; falso - se houve uma tentativa de definir o tamanho inferior ou igual a
zero.
Observao
Alterando o tamanho do array permite uma utilizao tima do uso de memria. Elementos
suprfluos perdidos direita. Para reduzir a fragmentao da memria, o tamanho do array
alterado com um passo dado previamente atravs do mtodo de Step (int), ou 16 (padro).
Exemplo
//--- example for CArrayChar::Resize(int)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- resize array
if(!array.Resize(10))
{
printf("Resize error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1823

Biblioteca Padro

Shutdown
Limpa o array com uma liberao de memria completa.
bool Shutdown()

Valor do Retorno
Verdadeiro se obteve xito, falso - se ocorreu um erro.
Exemplo
//--- example for CArrayChar::Shutdown()
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shutdown array
if(!array.Shutdown())
{
printf("Shutdown error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1824

Biblioteca Padro

Add
Adiciona um elemento para o final do array.
bool Add(
char element

// Element to add

Parmetros
element
[in] o valor do elemento para adicionar ao array.
Valor do Retorno
verdadeiro com sucesso, falso - no pode adicionar um elemento.
Exemplo
//--- example for CArrayChar::Add(char)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
for(int i=0;i<100;i++)
{
if(!array.Add(i))
{
printf("Element addition error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1825

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const char& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayChar::AddArray(const char &[])
#include <Arrays\ArrayChar.mqh>
//--char src[];
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1826

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const CArrayChar* src

// Pointer to the source

Parmetros
src
[in] Ponteiro a uma instncia de classe CArrayChar - elementos fontes para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayChar::AddArray(const CArrayChar*)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayChar *src=new CArrayChar;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete src;
delete array;
return;
}
//--- delete source array
delete src;

2000-2015, MetaQuotes Software Corp.

1827

Biblioteca Padro
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1828

Biblioteca Padro

Insert
Insere um elemento no array para uma posio especfica.
bool Insert(
char element,

// Element to insert

int

// Position

pos

Parmetros
element
[in] O valor do elemento para ser inserido no array
pos
[in] Posio no array para inserir
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayChar::Insert(char,int)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert elements
for(int i=0;i<100;i++)
{
if(!array.Insert(i,0))
{
printf("Insert error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1829

Biblioteca Padro

InsertArray
Insere um array de elementos de outro array com uma posio especfica.
bool InsertArray(
const char& src[],

// Source array

int

// Position

pos

Parmetros
src[]
[in] Referncia a um array de elementos fontes para inserir
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayChar::InsertArray(const char &[],int)
#include <Arrays\ArrayChar.mqh>
//--char src[];
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1830

Biblioteca Padro

InsertArray
Insere um array de elementos de outro array com uma posio especfica.
bool InsertArray(
CArrayChar* src,

// Pointer to the source

int

// Position

pos

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayChar - elementos fontes para inserir.
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayChar::InsertArray(const CArrayChar*,int)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayChar *src=new CArrayChar;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete src;
delete array;

2000-2015, MetaQuotes Software Corp.

1831

Biblioteca Padro
return;
}
//--- delete source array
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1832

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const char& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayChar::AssignArray(const char &[])
#include <Arrays\ArrayChar.mqh>
//--char src[];
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1833

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const CArrayChar* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayChar - elemento fonte para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayChar::AssignArray(const CArrayChar*)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayChar *src

=new CArrayChar;

if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete src;
delete array;
return;
}
//--- arrays is identical
//--- delete source array

2000-2015, MetaQuotes Software Corp.

1834

Biblioteca Padro
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1835

Biblioteca Padro

Update
Altera o elemento no array de posio especfica.
bool Update(
int

pos,

char element

// Position
// Value

Parmetros
pos
[in] Posio do elemento no array para alterar
element
[in] Novo elemento de valor
Valor do Retorno
verdadeiro se com sucesso; falso - no pode alterar o elemento.
Exemplo
//--- example for CArrayChar::Update(int,char)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- update element
if(!array.Update(0,'A'))
{
printf("Update error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1836

Biblioteca Padro

Shift
Desloca um item a partir de uma dada posio no array para um deslocamento determinado.
bool Shift(
int pos,

// Position

int shift

// Value

Parmetros
pos
[in] Posio do elemento array movido
shift
[in] O valor de deslocamento (tanto positivo como negativo).
Valor do Retorno
verdadeiro se com sucesso, falso - no pode mover o item.
Exemplo
//--- example for CArrayChar::Shift(int,int)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shift element
if(!array.Shift(10,-5))
{
printf("Shift error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1837

Biblioteca Padro

Delete
Remove o elemento a partir de uma posio dada no array.
bool Delete(
int pos

// Position

Parmetros
pos
[in] Remove posio do elemento no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover o elemento.
Exemplo
//--- example for CArrayChar::Delete(int)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete element
if(!array.Delete(0))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1838

Biblioteca Padro

DeleteRange
Exclui um grupo de elementos a partir de uma posio dada no array.
bool DeleteRange(
int from,

// Position of the first element

int to

// Positions of the last element

Parmetros
from
[in] Posio da primeira remoo do elemento no array.
to
[in] Posio do ltimo elemento deletado no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover elementos.
Exemplo
//--- example for CArrayChar::DeleteRange(int,int)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete elements
if(!array.DeleteRange(0,10))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1839

Biblioteca Padro

At
Obtm o elemento a partir de uma posio dada no array.
char At(
int pos

// Position

) const

Parmetros
pos
[in] Posio do elemento desejado no array.
Valor do Retorno
O valor do elemento em caso de sucesso. Retorna CHAR_MAX se houver uma tentativa de obter um
elemento de posies no existentes (o ltimo erro ERR_OUT_OF_RANGE ).
Observao
CHAR_MAX pode ser um valor vlido de um elemento array, ento havendo um valor, verifique
sempre o ltimo cdigo de erro.
Exemplo
//--- example for CArrayChar::At(int)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
for(int i=0;i<array.Total();i++)
{
char result=array.At(i);
if(result==CHAR_MAX && GetLastError()==ERR_OUT_OF_RANGE)
{
//--- error of reading from array
printf("Get element error");
delete array;
return;
}
//--- use element
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

1840

Biblioteca Padro
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1841

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArray(
const char& src[]

// Source array

) const

Parmetros
src[]
[in] A referncia a um array de elementos fontes para comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.
Exemplo
//--- example for CArrayChar::CompareArray(const char &[])
#include <Arrays\ArrayChar.mqh>
//--char src[];
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- compare with another array
int result=array.CompareArray(src);
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1842

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArray(
const CArrayChar* src

// Pointer to the sources

) const

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayChar- elementos fontes para comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.
Exemplo
//--- example for CArrayChar::CompareArray(const CArrayChar*)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayChar *src=new CArrayChar;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- compare with another array
int result=array.CompareArray(src);
//--- delete arrays
delete src;
delete array;
}

2000-2015, MetaQuotes Software Corp.

1843

Biblioteca Padro

InsertSort
Elemento de inseres no array ordenado
bool InsertSort(
char element

// Element to insert

Parmetros
element
[in] O valor do elemento a ser inserido em array ordenado
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayChar::InsertSort(char)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- insert element
if(!array.InsertSort('A'))
{
printf("Insert error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1844

Biblioteca Padro

Pesquisa
Procura por um elemento igual a amostra em array ordenado.
int Search(
char element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayChar::Search(char)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.Search('A')!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1845

Biblioteca Padro

SearchGreat
Procura por um elemento de mais amostras em array ordenado.
int SearchGreat(
char element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayChar::SearchGreat(char)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreat('A')!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1846

Biblioteca Padro

SearchLess
Procura por um elemento menor do que a amostra no array ordenado.
int SearchLess(
char element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayChar::SearchLess(char)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLess('A')!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1847

Biblioteca Padro

SearchGreatOrEqual
Procura por um elemento maior ou igual ao modelo em array ordenado
int SearchGreatOrEqual(
char element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayChar::SearchGreatOrEqual(char)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreatOrEqual('A')!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1848

Biblioteca Padro

SearchLessOrEqual
Procura por um elemento menor ou igual a amostra no array ordenado.
int SearchLessOrEqual(
char element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayChar::SearchLessOrEqual(char)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLessOrEqual('A')!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1849

Biblioteca Padro

SearchFirst
Localiza o primeiro elemento igual ao modelo em array ordenado.
int SearchFirst(
char element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayChar::SearchFirst(char)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchFirst('A')!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1850

Biblioteca Padro

SearchLast
Localiza o ltimo elemento igual ao modelo no array ordenado.
int SearchLast(
char element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayChar::SearchLast(char)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLast('A')!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1851

Biblioteca Padro

SearchLinear
Procura por elemento igual a amostra no array
int SearchLinear(
char element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
A posio do elemento encontrado, se com sucesso. Igual a -1 se o elemento no foi encontrado.
Observao
O mtodo usa o algoritmo de busca linear (ou busca sequencial) para arrays no classificados.
Exemplo
//--- example for CArrayChar::SearchLinear(char)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- search element
if(array.SearchLinear('A')!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1852

Biblioteca Padro

Save
Salva array de dados no arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - se concludo com xito, falso - se com erro.
Exemplo
//--- example for CArrayChar::Save(int)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
int

file_handle;

CArrayChar *array=new CArrayChar;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1853

Biblioteca Padro

Load
Carrega array de dados a partir de um arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - se concludo com xito, falso - se com erro.
Exemplo
//--- example for CArrayChar::Load(int)
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
int

file_handle;

CArrayChar *array=new CArrayChar;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- use arrays elements
for(int i=0;i<array.Total();i++)
{
printf("Element[%d] = %c",i,array.At(i));

2000-2015, MetaQuotes Software Corp.

1854

Biblioteca Padro
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1855

Biblioteca Padro

Type
Obtm o identificador do tipo do array.
virtual int Type() const

Valor do Retorno
Tipo da ID do array (por CArrayChar - 77).
Exemplo
//--- example for CArrayChar::Type()
#include <Arrays\ArrayChar.mqh>
//--void OnStart()
{
CArrayChar *array=new CArrayChar;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- get array type
int type=array.Type();
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1856

Biblioteca Padro

CArrayShort
CArrayShort uma classe de array dinmico de variveis do tipo short ou ushort.

Descrio
Classe CArrayShort posibilita o trabalho com um array dinmico de variveis do tipo short ou ushort. A
classe possibilita adicionar/inserir/excluir elementos em: array, ordenao de array e pesquisando em
array ordenado. Alm disto, implementa mtodos para trabalhar com o arquivo.

Declarao
class CArrayShort : public CArray

Ttulo
#include <Arrays\ArrayShort.mqh>

Mtodos de classe
Controle de memria
Reserve

Memria alocada para aumentar o tamanho do


array

Resize

Define um novo tamanho (mais pequeno) do


array

Shutdown

Limpa o array com uma liberao de memria


completa

Mtodos para adicionar


Add

Adiciona um elemento para o final do array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

Insert

Insere um elemento no array para uma posio


especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

AssignArray

Copia os elementos array a partir de outro array

AssignArray

Copia os elementos array a partir de outro array

Mtodos de atualizao
Update

Altera

elemento

2000-2015, MetaQuotes Software Corp.

na

posio

do

array

1857

Biblioteca Padro

determinado
Shift

Desloca um item a partir de uma dada posio


no array para um deslocamento determinado

Mtodos para excluir


Delete

Remove o elemento a partir de uma posio


especfica no array

DeleteRange

Exclui um grupo de elementos a partir de uma


posio especfica no array

Mtodos de acesso
At

Obtm o elemento a partir de uma posio dada


no array

Mtodos para comparar


CompareArray

Compara o array com outro array

CompareArray

Compara o array com outro array

Operaes de array ordenado


InsertSort

Elemento de inseres em array ordenado

Pesquisa

Procura por um elemento igual ao modelo em


array ordenado

SearchGreat

Procura por um elemento de mais amostras em


array ordenado

SearchLess

Procura por um elemento menor do que a


amostra em array ordenado

SearchGreatOrEqual

Procura por um elemento maior ou igual ao


modelo em array ordenado

SearchLessOrEqual

Procura por um elemento menor ou igual ao


modelo apresentado em array ordenado

SearchFirst

Localiza o primeiro elemento igual ao modelo


em array ordenado

SearchLast

Localiza o ltimo elemento igual ao modelo em


array ordenado

SearchLinear

Procura o elemento igual a amostra no array

Entrada/sada
virtual Save

Salva array de dados no arquivo

virtual Load

Carrega array de dados a partir de um arquivo

virtual Type

Obtm o identificador do tipo do array

2000-2015, MetaQuotes Software Corp.

1858

Biblioteca Padro

Reserve
Memria alocada para aumentar o tamanho do array.
bool Reserve(
int size

// Number

Parmetros
size
[in] O nmero de elementos adicionais do array.
Valor do Retorno
verdadeiro se com sucesso; falso - se houve uma tentativa de buscar com quantidade menor ou
igual a zero, ou se o array no aumentou.
Observao
Para reduzir a fragmentao da memria, o aumento do tamanho do array feito com um passo
dado anteriormente atravs do mtodo de Step (int), ou 16 (por padro).
Exemplo
//--- example for CArrayShort::Reserve(int)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- reserve memory
if(!array.Reserve(1024))
{
printf("Reserve error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1859

Biblioteca Padro

Resize
Define um novo tamanho (menor) do array.
bool Resize(
int size

// Size

Parmetros
size
[in] Novo tamanho do array.
Valor do Retorno
Verdadeiro se com sucesso; falso - se houve uma tentativa de definir o tamanho inferior ou igual a
zero.
Observao
Alterando o tamanho do array permite uma utilizao tima do uso de memria. Elementos
suprfluos perdidos direita. Para reduzir a fragmentao da memria, o tamanho do array
alterado com um passo dado previamente atravs do mtodo de Step (int), ou 16 (padro).
Exemplo
//--- example for CArrayShort::Resize(int)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- resize array
if(!array.Resize(10))
{
printf("Resize error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1860

Biblioteca Padro

Shutdown
Limpa o array com uma liberao de memria completa.
bool Shutdown()

Valor do Retorno
Verdadeiro se obteve xito, falso - se ocorreu um erro.
Exemplo
//--- example for CArrayShort::Shutdown()
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shutdown array
if(!array.Shutdown())
{
printf("Shutdown error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1861

Biblioteca Padro

Add
Adiciona um elemento para o final do array.
bool Add(
short element

// Element to add

Parmetros
element
[in] O valor do elemento para adicionar ao array.
Valor do Retorno
verdadeiro com sucesso, falso - no pode adicionar um elemento.
Exemplo
//--- example for CArrayShort::Add(short)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
for(int i=0;i<100;i++)
{
if(!array.Add(i))
{
printf("Element addition error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1862

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const short& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayShort::AddArray(const short &[])
#include <Arrays\ArrayShort.mqh>
//--short src[];
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1863

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const CArrayShort* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayShort - elementos fontes para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayShort::AddArray(const CArrayShort*)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayShort *src=new CArrayShort;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete src;
delete array;
return;
}
//--- delete source array
delete src;

2000-2015, MetaQuotes Software Corp.

1864

Biblioteca Padro
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1865

Biblioteca Padro

Insert
Insere um elemento no array para uma posio especfica.
bool Insert(
short element,

// Element to insert

int

// Position

pos

Parmetros
element
[in] O valor do elemento para ser inserido no array
pos
[in] Posio no array para inserir
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayShort::Insert(short,int)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert elements
for(int i=0;i<100;i++)
{
if(!array.Insert(i,0))
{
printf("Insert error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1866

Biblioteca Padro

InsertArray
Insere um array de elementos a partir de outro array com posio especfica.
bool InsertArray(
const short& src[],
int

pos

// Source array
// Position

Parmetros
src[]
[in] Referncia a um array de elementos fontes para inserir
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayShort::InsertArray(const short &[],int)
#include <Arrays\ArrayShort.mqh>
//--short src[];
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1867

Biblioteca Padro

InsertArray
Insere um array de elementos a partir de outro array com posio especfica.
bool InsertArray(
CArrayShort* src,
int

pos

// Pointer to the source


// Position

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayShort - elementos fontes para inserir.
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayShort::InsertArray(const CArrayShort*,int)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayShort *src=new CArrayShort;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete src;
delete array;

2000-2015, MetaQuotes Software Corp.

1868

Biblioteca Padro
return;
}
//--- delete source array
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1869

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const short& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayShort::AssignArray(const short &[])
#include <Arrays\ArrayShort.mqh>
//--short src[];
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1870

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const CArrayShort* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayShort - elemento fonte para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayShort::AssignArray(const CArrayShort*)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayShort *src

=new CArrayShort;

if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete src;
delete array;
return;
}
//--- arrays is identical
//--- delete source array

2000-2015, MetaQuotes Software Corp.

1871

Biblioteca Padro
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1872

Biblioteca Padro

Update
Altera o elemento no array de posio especfica.
bool Update(
int

pos,

short element

// Position
// Value

Parmetros
pos
[in] Posio do elemento no array para alterar
element
[in] Novo elemento de valor
Valor do Retorno
verdadeiro se com sucesso; falso - no pode alterar o elemento.
Exemplo
//--- example for CArrayShort::Update(int,short)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- update element
if(!array.Update(0,100))
{
printf("Update error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1873

Biblioteca Padro

Shift
Desloca um item a partir de uma dada posio no array para um deslocamento determinado.
bool Shift(
int pos,

// Positions

int shift

// Shift

Parmetros
pos
[in] Posio do elemento array movido
shift
[in] O valor de deslocamento (tanto positivo como negativo).
Valor do Retorno
verdadeiro se com sucesso, falso - no pode mover o item.
Exemplo
//--- example for CArrayShort::Shift(int,int)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shift element
if(!array.Shift(10,-5))
{
printf("Shift error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1874

Biblioteca Padro

Delete
Remove o elemento a partir de uma posio dada no array.
bool Delete(
int pos

// Position

Parmetros
pos
[in] Remove posio do elemento no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover o elemento.
Exemplo
//--- example for CArrayShort::Delete(int)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete element
if(!array.Delete(0))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1875

Biblioteca Padro

DeleteRange
Exclui um grupo de elementos a partir de uma posio dada no array.
bool DeleteRange(
int from,

// Position of the first element

int to

// Position of the lase element

Parmetros
from
[in] Posio da primeira remoo do elemento no array.
to
[in] Posio do ltimo elemento deletado no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover elementos.
Exemplo
//--- example for CArrayShort::DeleteRange(int,int)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete elements
if(!array.DeleteRange(0,10))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1876

Biblioteca Padro

At
Obtm o elemento a partir de uma posio dada no array.
short At(
int pos

// Position

) const

Parmetros
pos
[in] Posio do elemento desejado no array.
Valor do Retorno
O valor do elemento em caso de sucesso. Retorna SHORT_MAX se houver uma tentativa de obter um
elemento de posies no existentes (o ltimo erro ERR_OUT_OF_RANGE).
Observao
SHORT_MAX pode ser um valor vlido de um elemento array, ento havendo um valor, verifique
sempre o ltimo cdigo de erro.
Exemplo
//--- example for CArrayShort::At(int)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
for(int i=0;i<array.Total();i++)
{
short result=array.At(i);
if(result==SHORT_MAX && GetLastError()==ERR_OUT_OF_RANGE)
{
//--- error of reading from array
printf("Get element error");
delete array;
return;
}
//--- use element
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

1877

Biblioteca Padro
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1878

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArray(
const short& src[]

// Source array

) const

Parmetros
src[]
[in] A referncia a um array de elementos fontes para comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.
Exemplo
//--- example for CArrayShort::CompareArray(const short &[])
#include <Arrays\ArrayShort.mqh>
//--short src[];
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- compare with another array
int result=array.CompareArray(src);
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1879

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArray(
const CArrayShort* src

// Pointer to the source

) const

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayShort - elementos fontes para comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.

Exemplo
//--- example for CArrayShort::CompareArray(const CArrayShort*)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayShort *src=new CArrayShort;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- compare with another array
int result=array.CompareArray(src);
//--- delete arrays
delete src;
delete array;
}

2000-2015, MetaQuotes Software Corp.

1880

Biblioteca Padro

InsertSort
Elemento de inseres no array ordenado
bool InsertSort(
short element

// Element to insert

Parmetros
element
[in] O valor do elemento a ser inserido em array ordenado
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayShort::InsertSort(short)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- insert element
if(!array.InsertSort(100))
{
printf("Insert error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1881

Biblioteca Padro

Pesquisa
Procura por um elemento igual a amostra em array ordenado.
int Search(
short element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayShort::Search(short)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.Search(100)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1882

Biblioteca Padro

SearchGreat
Procura por um elemento de mais amostras em array ordenado.
int SearchGreat(
short element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayShort::SearchGreat(short)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreat(100)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1883

Biblioteca Padro

SearchLess
Procura por um elemento menor do que a amostra no array ordenado.
int SearchLess(
short element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayShort::SearchLess(short)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLess(100)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1884

Biblioteca Padro

SearchGreatOrEqual
Procura por um elemento maior ou igual da amostra no array ordenado.
int SearchGreatOrEqual(
short element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayShort::SearchGreatOrEqual(short)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreatOrEqual(100)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1885

Biblioteca Padro

SearchLessOrEqual
Procura por um elemento menor ou igual a amostra no array ordenado.
int SearchLessOrEqual(
short element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayShort::SearchLessOrEqual(short)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLessOrEqual(100)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1886

Biblioteca Padro

SearchFirst
Localiza o primeiro elemento igual ao modelo em array ordenado.
int SearchFirst(
short element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayShort::SearchFirst(short)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchFirst(100)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1887

Biblioteca Padro

SearchLast
Localiza o ltimo elemento igual ao modelo no array ordenado.
int SearchLast(
short element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayShort::SearchLast(short)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLast(100)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1888

Biblioteca Padro

SearchLinear
Procura por elemento igual a amostra no array
int SearchLinear(
short element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
A posio do elemento encontrado, se com sucesso. Igual a -1 se o elemento no foi encontrado.
Observao
O mtodo usa o algoritmo de busca linear (ou busca sequencial) para arrays no classificados.
Exemplo
//--- example for CArrayShort::SearchLinear(short)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- search element
if(array.SearchLinear(100)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1889

Biblioteca Padro

Save
Salva array de dados no arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArrayShort::Save(int)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
int

file_handle;

CArrayShort *array=new CArrayShort;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- add 100 arrays elements
for(int i=0;i<100;i++)
{
array.Add(i);
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);

2000-2015, MetaQuotes Software Corp.

1890

Biblioteca Padro
}
delete array;
}

2000-2015, MetaQuotes Software Corp.

1891

Biblioteca Padro

Load
Carrega array de dados a partir de um arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArrayShort::Load(int)
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
int

file_handle;

CArrayShort *array=new CArrayShort;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- use arrays elements
for(int i=0;i<array.Total();i++)
{
printf("Element[%d] = %d",i,array.At(i));

2000-2015, MetaQuotes Software Corp.

1892

Biblioteca Padro
}
delete array;
}

2000-2015, MetaQuotes Software Corp.

1893

Biblioteca Padro

Type
Obtm o identificador do tipo do array.
virtual int Type() const

Valor do Retorno
Tipo de ID do array (por CArrayShort - 82).
Exemplo
//--- example for CArrayShort::Type()
#include <Arrays\ArrayShort.mqh>
//--void OnStart()
{
CArrayShort *array=new CArrayShort;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- get array type
int type=array.Type();
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1894

Biblioteca Padro

CArrayInt
CArrayInt uma classe de array dinmico de variveis do tipo int ou uint.

Descrio
Classe CArrayInt posibilita o trabalho com um array dinmico de variveis do tipo int ou uint. A classe
possibilita adicionar/inserir/excluir elementos em: array, ordenao de array e pesquisando em array
ordenado. Alm disto, implementa mtodos para trabalhar com o arquivo.

Declarao
class CArrayInt : public CArray

Ttulo
#include <Arrays\ArrayInt.mqh>

Mtodos de classe
Controle de memria
Reserve

Memria alocada para aumentar o tamanho do


array

Resize

Define um novo tamanho (mais pequeno) do


array

Shutdown

Limpa o array com uma liberao de memria


completa

Mtodos para adicionar


Add

Adiciona um elemento para o final do array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

Insert

Insere um elemento no array para uma posio


especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

AssignArray

Copia os elementos array a partir de outro array

AssignArray

Copia os elementos array a partir de outro array

Mtodos de atualizao
Update

Altera

elemento

2000-2015, MetaQuotes Software Corp.

na

posio

do

array

1895

Biblioteca Padro

determinado
Shift

Desloca um item a partir de uma dada posio


no array para um deslocamento determinado

Mtodos para excluir


Delete

Remove o elemento a partir de uma posio


especfica no array

DeleteRange

Exclui um grupo de elementos a partir de uma


posio especfica no array

Mtodos de acesso
At

Obtm o elemento a partir de uma posio dada


no array

Mtodos para comparar


CompareArray

Compara o array com outro array

CompareArray

Compara o array com outro array

Operaes de array ordenado


InsertSort

Elemento de inseres em array ordenado

Pesquisa

Procura por um elemento igual ao modelo em


array ordenado

SearchGreat

Procura por um elemento de mais amostras em


array ordenado

SearchLess

Procura por um elemento menor do que a


amostra em array ordenado

SearchGreatOrEqual

Procura por um elemento maior ou igual ao


modelo em array ordenado

SearchLessOrEqual

Procura por um elemento menor ou igual ao


modelo apresentado em array ordenado

SearchFirst

Localiza o primeiro elemento igual ao modelo


em array ordenado

SearchLast

Localiza o ltimo elemento igual ao modelo em


array ordenado

SearchLinear

Procura o elemento igual a amostra no array

Entrada/sada
virtual Save

Salva array de dados no arquivo

virtual Load

Carrega array de dados a partir de um arquivo

virtual Type

Obtm o identificador do tipo do array

2000-2015, MetaQuotes Software Corp.

1896

Biblioteca Padro

Reserve
Memria alocada para aumentar o tamanho do array.
bool Reserve(
int size

// Number

Parmetros
size
[in] O nmero de elementos adicionais do array.
Valor do Retorno
verdadeiro se com sucesso; falso - se houve uma tentativa de buscar com quantidade menor ou
igual a zero, ou se o array no aumentou.
Observao
Para reduzir a fragmentao da memria, o aumento do tamanho do array feito com um passo
dado anteriormente atravs do mtodo de Step (int), ou 16 (por padro).
Exemplo
//--- example for CArrayInt::Reserve(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- reserve memory
if(!array.Reserve(1024))
{
printf("Reserve error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1897

Biblioteca Padro

Resize
Define um novo tamanho (menor) do array.
bool Resize(
int size

// Number

Parmetros
size
[in] Novo tamanho do array.
Valor do Retorno
Verdadeiro se com sucesso; falso - se houve uma tentativa de definir o tamanho inferior ou igual a
zero.
Observao
Alterando o tamanho do array permite uma utilizao tima do uso de memria. Elementos
suprfluos perdidos direita. Para reduzir a fragmentao da memria, o tamanho do array
alterado com um passo dado previamente atravs do mtodo de Step (int), ou 16 (padro).
Exemplo
//--- example for CArrayInt::Resize(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- resize array
if(!array.Resize(10))
{
printf("Resize error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1898

Biblioteca Padro

Shutdown
Limpa o array com uma liberao de memria completa.
bool Shutdown()

Valor do Retorno
Verdadeiro se obteve xito, falso - se ocorreu um erro.
Exemplo
//--- example for CArrayInt::Shutdown()
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shutdown array
if(!array.Shutdown())
{
printf("Shutdown error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1899

Biblioteca Padro

Add
Adiciona um elemento para o final do array.
bool Add(
int element

// Element to add

Parmetros
element
[in] o valor do elemento para adicionar ao array.
Valor do Retorno
verdadeiro com sucesso, falso - no pode adicionar um elemento.
Exemplo
//--- example for CArrayInt::Add(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
for(int i=0;i<100;i++)
{
if(!array.Add(i))
{
printf("Element addition error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1900

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const int& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayInt::AddArray(const int &[])
#include <Arrays\ArrayInt.mqh>
//--int src[];
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1901

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const CArrayInt* src

// Pointer to the source

Parmetros
src
Ponteiro para uma instncia de classe CArrayInt - elementos fontes para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayInt::AddArray(const CArrayInt*)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayInt *src=new CArrayInt;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete src;
delete array;
return;
}
//--- delete source array
delete src;

2000-2015, MetaQuotes Software Corp.

1902

Biblioteca Padro
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1903

Biblioteca Padro

Insert
Insere um elemento no array para uma posio especfica.
bool Insert(
int element,

// Element to insert

int pos

// Position

Parmetros
element
[in] O valor do elemento para ser inserido no array
pos
[in] Posio no array para inserir
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayInt::Insert(int,int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert elements
for(int i=0;i<100;i++)
{
if(!array.Insert(i,0))
{
printf("Insert error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1904

Biblioteca Padro

InsertArray
Insere um array de elementos a partir de outro array com posio especfica.
bool InsertArray(
const int& src[],
int

pos

// Source array
// Position

Parmetros
src[]
[in] Referncia a um array de elementos fontes para inserir
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayInt::InsertArray(const int &[],int)
#include <Arrays\ArrayInt.mqh>
//--int src[];
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1905

Biblioteca Padro

InsertArray
Insere um array de elementos a partir de outro array com posio especfica.
bool InsertArray(
CArrayInt* src,
int

pos

// Pointer to the source


// Position

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayInt - elementos fontes para inserir.
pos
[in] Posio no array para inserir.
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayInt::InsertArray(const CArrayInt*,int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayInt *src=new CArrayInt;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete src;
delete array;

2000-2015, MetaQuotes Software Corp.

1906

Biblioteca Padro
return;
}
//--- delete source array
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1907

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const int& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayInt::AssignArray(const int &[])
#include <Arrays\ArrayInt.mqh>
//--int src[];
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1908

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const CArrayInt* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayInt - elemento fonte para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.

Exemplo
//--- example for CArrayInt::AssignArray(const CArrayInt*)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayInt *src

=new CArrayInt;

if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete src;
delete array;
return;
}

2000-2015, MetaQuotes Software Corp.

1909

Biblioteca Padro
//--- arrays is identical
//--- delete source array
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1910

Biblioteca Padro

Update
Altera o elemento no array de posio especfica.
bool Update(
int pos,

// Position

int element

// Value

Parmetros
pos
[in] Posio do elemento no array para alterar.
element
[in] Novo elemento de valor
Valor do Retorno
verdadeiro se com sucesso; falso - no pode alterar o elemento.
Exemplo
//--- example for CArrayInt::Update(int,int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- update element
if(!array.Update(0,10000))
{
printf("Update error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1911

Biblioteca Padro

Shift
Desloca um item a partir de uma dada posio no array para um deslocamento determinado.
bool Shift(
int pos,

// Position

int shift

// Shift

Parmetros
pos
[in] Posio do elemento array movido
shift
[in] O valor de deslocamento (tanto positivo como negativo).
Valor do Retorno
verdadeiro se com sucesso, falso - no pode mover o item.
Exemplo
//--- example for CArrayInt::Shift(int,int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shift element
if(!array.Shift(10,-5))
{
printf("Shift error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1912

Biblioteca Padro

Delete
Remove o elemento a partir de uma posio dada no array.
bool Delete(
int pos

// Position

Parmetros
pos
[in] Remove posio do elemento no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover o elemento.
Exemplo
//--- example for CArrayInt::Delete(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete element
if(!array.Delete(0))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1913

Biblioteca Padro

DeleteRange
Exclui um grupo de elementos a partir de uma posio dada no array.
bool DeleteRange(
int from,

// Position of the first element

int to

// Position of the last element

Parmetros
from
[in] Posio da primeira remoo do elemento no array.
to
[in] Posio do ltimo elemento deletado no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover elementos.
Exemplo
//--- example for CArrayInt::DeleteRange(int,int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete elements
if(!array.DeleteRange(0,10))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1914

Biblioteca Padro

At
Obtm o elemento a partir de uma posio dada no array.
int At(
int pos

// Position

) const

Parmetros
pos
[in] Posio do elemento desejado no array.
Valor do Retorno
O valor do elemento em caso de sucesso. Retorna INT_MAX se houver uma tentativa de obter um
elemento de posies no existentes (o ltimo erro ERR_OUT_OF_RANGE).
Observao
INT_MAX pode ser um valor vlido de elemento de array, assim havendo um valor, verificar sempre
o ltimo cdigo de erro.
Exemplo
//--- example for CArrayInt::At(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
for(int i=0;i<array.Total();i++)
{
int result=array.At(i);
if(result==INT_MAX && GetLastError()==ERR_OUT_OF_RANGE)
{
//--- error of reading from array
printf("Get element error");
delete array;
return;
}
//--- use element
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

1915

Biblioteca Padro
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1916

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArray(
const int& src[]

// Source array

) const

Parmetros
src[]
[in] A referncia a um array de elementos fontes para comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.
Exemplo
//--- example for CArrayInt::CompareArray(const int &[])
#include <Arrays\ArrayInt.mqh>
//--int src[];
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- compare with another array
int result=array.CompareArray(src);
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1917

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArray(
const CArrayInt* src

// Pointer to the source

) const

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayInt - elementos fontes para comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.
Exemplo
//--- example for CArrayInt::CompareArray(const CArrayInt*)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayInt *src=new CArrayInt;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- compare with another array
int result=array.CompareArray(src);
//--- delete arrays
delete src;
delete array;
}

2000-2015, MetaQuotes Software Corp.

1918

Biblioteca Padro

InsertSort
Elemento de inseres no array ordenado
bool InsertSort(
int element

// Element to insert

Parmetros
element
[in] o valor do elemento a ser inserido dentro de um array ordenado
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayInt::InsertSort(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- insert element
if(!array.InsertSort(10000))
{
printf("Insert error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1919

Biblioteca Padro

Pesquisa
Procura por um elemento igual a amostra em array ordenado.
int Search(
int element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayInt::Search(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.Search(10000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1920

Biblioteca Padro

SearchGreat
Procura por um elemento de mais amostras em array ordenado.
int SearchGreat(
int element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayInt::SearchGreat(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreat(10000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1921

Biblioteca Padro

SearchLess
Procura por um elemento menor do que a amostra no array ordenado.
int SearchLess(
int element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayInt::SearchLess(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLess(10000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1922

Biblioteca Padro

SearchGreatOrEqual
Procura por um elemento maior ou igual da amostra no array ordenado.
int SearchGreatOrEqual(
int element

// Element to search

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayInt::SearchGreatOrEqual(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreatOrEqual(10000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1923

Biblioteca Padro

SearchLessOrEqual
Procura por um elemento menor ou igual a amostra no array ordenado.
int SearchLessOrEqual(
int element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayInt::SearchLessOrEqual(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLessOrEqual(10000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1924

Biblioteca Padro

SearchFirst
Localiza o primeiro elemento igual ao modelo em array ordenado.
int SearchFirst(
int element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayInt:: SearchFirst(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchFirst(10000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1925

Biblioteca Padro

SearchLast
Localiza o ltimo elemento igual ao modelo no array ordenado.
int SearchLast(
int element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayInt::SearchLast(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLast(10000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1926

Biblioteca Padro

SearchLinear
Procura por elemento igual a amostra no array
int SearchLinear(
int element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
A posio do elemento encontrado, se com sucesso. Igual a -1 se o elemento no foi encontrado.
Observao
O mtodo usa o algoritmo de busca linear (ou busca sequencial) para arrays no classificados.
Exemplo
//--- example for CArrayInt::SearchLinear(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- search element
if(array.SearchLinear(10000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1927

Biblioteca Padro

Save
Salva array de dados no arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArrayInt::Save(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
int

file_handle;

CArrayInt *array=new CArrayInt;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- add 100 arrays elements
for(int i=0;i<100;i++)
{
array.Add(i);
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);

2000-2015, MetaQuotes Software Corp.

1928

Biblioteca Padro
}
delete array;
}

2000-2015, MetaQuotes Software Corp.

1929

Biblioteca Padro

Load
Carrega array de dados a partir de um arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArrayInt::Load(int)
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
int

file_handle;

CArrayInt *array=new CArrayInt;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- use arrays elements
for(int i=0;i<array.Total();i++)
{
printf("Element[%d] = %d",i,array.At(i));

2000-2015, MetaQuotes Software Corp.

1930

Biblioteca Padro
}
delete array;
}

2000-2015, MetaQuotes Software Corp.

1931

Biblioteca Padro

Type
Obtm o identificador do tipo do array.
virtual int Type() const

Valor do Retorno
Tipo de ID do array(por CArrayInt - 82).
Exemplo
//--- example for CArrayInt::Type()
#include <Arrays\ArrayInt.mqh>
//--void OnStart()
{
CArrayInt *array=new CArrayInt;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- get array type
int type=array.Type();
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1932

Biblioteca Padro

CArrayLong
CArrayLong uma classe de array dinmico de variveis do tipo long ou ulong.

Descrio
Classe CArrayLong posibilita o trabalho com um array dinmico de variveis do tipo long ou ulong. A
classe possibilita adicionar/inserir/excluir elementos em: array, ordenao de array e pesquisando em
array ordenado. Alm disto, implementa mtodos para trabalhar com o arquivo.

Declarao
class CArrayLong : public CArray

Ttulo
#include <Arrays\ArrayLong.mqh>

Mtodos de classe
Controle de memria
Reserve

Memria alocada para aumentar o tamanho do


array

Resize

Define um novo tamanho (mais pequeno) do


array

Shutdown

Limpa o array com uma liberao de memria


completa

Mtodos para adicionar


Add

Adiciona um elemento para o final do array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

Insert

Insere um elemento no array para uma posio


especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

AssignArray

Copia os elementos array a partir de outro array

AssignArray

Copia os elementos array a partir de outro array

Mtodos de atualizao
Update

Altera

elemento

2000-2015, MetaQuotes Software Corp.

na

posio

do

array

1933

Biblioteca Padro

determinado
Shift

Desloca um item a partir de uma dada posio


no array para um deslocamento determinado

Mtodos para excluir


Delete

Remove o elemento a partir de uma posio


especfica no array

DeleteRange

Exclui um grupo de elementos a partir de uma


posio especfica no array

Mtodos de acesso
At

Obtm o elemento a partir de uma posio dada


no array

Mtodos para comparar


CompareArray

Compara o array com outro array

CompareArray

Compara o array com outro array

Operaes de array ordenado


InsertSort

Elemento de inseres em array ordenado

Pesquisa

Procura por um elemento igual ao modelo em


array ordenado

SearchGreat

Procura por um elemento de mais amostras em


array ordenado

SearchLess

Procura por um elemento menor do que a


amostra em array ordenado

SearchGreatOrEqual

Procura por um elemento maior ou igual ao


modelo em array ordenado

SearchLessOrEqual

Procura por um elemento menor ou igual ao


modelo apresentado em array ordenado

SearchFirst

Localiza o primeiro elemento igual ao modelo


em array ordenado

SearchLast

Localiza o ltimo elemento igual ao modelo em


array ordenado

SearchLinear

Procura o elemento igual a amostra no array

Entrada/sada
virtual Save

Salva array de dados no arquivo

virtual Load

Carrega array de dados a partir de um arquivo

virtual Type

Obtm o identificador do tipo do array

2000-2015, MetaQuotes Software Corp.

1934

Biblioteca Padro

Reserve
Memria alocada para aumentar o tamanho do array.
bool Reserve(
int size

// Number

Parmetros
size
[in] O nmero de elementos adicionais do array.
Valor do Retorno
verdadeiro se com sucesso; falso - se houve uma tentativa de buscar com quantidade menor ou
igual a zero, ou se o array no aumentou.
Observao
Para reduzir a fragmentao da memria, o aumento do tamanho do array feito com um passo
dado anteriormente atravs do mtodo de Step (int), ou 16 (por padro).
Exemplo
//--- example for CArrayLong::Reserve(int)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- reserve memory
if(!array.Reserve(1024))
{
printf("Reserve error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1935

Biblioteca Padro

Resize
Define um novo tamanho (menor) do array.
bool Resize(
int size

// Size

Parmetros
size
[in] Novo tamanho do array.
Valor do Retorno
Verdadeiro se com sucesso; falso - se houve uma tentativa de definir o tamanho inferior ou igual a
zero.
Observao
Alterando o tamanho do array permite uma utilizao tima do uso de memria. Elementos
suprfluos perdidos direita. Para reduzir a fragmentao da memria, o tamanho do array
alterado com um passo dado previamente atravs do mtodo de Step (int), ou 16 (padro).
Exemplo
//--- example for CArrayLong::Resize(int)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- resize array
if(!array.Resize(10))
{
printf("Resize error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1936

Biblioteca Padro

Shutdown
Limpa o array com uma liberao de memria completa.
bool Shutdown()

Valor do Retorno
Verdadeiro se obteve xito, falso - se ocorreu um erro.
Exemplo
//--- example for CArrayLong::Shutdown()
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shutdown array
if(!array.Shutdown())
{
printf("Shutdown error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1937

Biblioteca Padro

Add
Adiciona um elemento para o final do array.
bool Add(
long element

// Element to add

Parmetros
element
[in] O valor do elemento para adicionar ao array.
Valor do Retorno
verdadeiro com sucesso, falso - no pode adicionar um elemento.
Exemplo
//--- example for CArrayLong::Add(long)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
for(int i=0;i<100;i++)
{
if(!array.Add(i))
{
printf("Element addition error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1938

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const long& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayLong::AddArray(const long &[])
#include <Arrays\ArrayLong.mqh>
//--long src[];
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1939

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const CArrayLong* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayLong - elementos fontes para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayLong::AddArray(const CArrayLong*)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayLong *src=new CArrayLong;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete src;
delete array;
return;
}
//--- delete source array
delete src;

2000-2015, MetaQuotes Software Corp.

1940

Biblioteca Padro
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1941

Biblioteca Padro

Insert
Insere um elemento no array para uma posio especfica.
bool Insert(
long element,

// Element to insert

int

// Position

pos

Parmetros
element
[in] O valor do elemento para ser inserido no array
pos
[in] Posio no array para inserir
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayLong::Insert(long,int)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert elements
for(int i=0;i<100;i++)
{
if(!array.Insert(i,0))
{
printf("Insert error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1942

Biblioteca Padro

InsertArray
Insere um array de elementos a partir de outro array com posio especfica.
bool InsertArray(
const long& src[],
int

pos

// Source array
// Position

Parmetros
src[]
[in] Referncia a um array de elementos fontes para inserir
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayLong::InsertArray(const long &[],int)
#include <Arrays\ArrayLong.mqh>
//--long src[];
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1943

Biblioteca Padro

InsertArray
Insere um array de elementos a partir de outro array com posio especfica.
bool InsertArray(
CArrayLong* src,
int

pos

// Pointer to the source


// Position

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayLong - elementos fontes para inserir.
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayLong::InsertArray(const CArrayLong*,int)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayLong *src=new CArrayLong;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete src;
delete array;

2000-2015, MetaQuotes Software Corp.

1944

Biblioteca Padro
return;
}
//--- delete source array
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1945

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const long& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayLong::AssignArray(const long &[])
#include <Arrays\ArrayLong.mqh>
//--long src[];
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1946

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const CArrayLong* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayLong - elemento fonte para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayLong::AssignArray(const CArrayLong*)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayLong *src

=new CArrayLong;

if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete src;
delete array;
return;
}
//--- arrays is identical
//--- delete source array

2000-2015, MetaQuotes Software Corp.

1947

Biblioteca Padro
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1948

Biblioteca Padro

Update
Altera o elemento no array de posio especfica.
bool Update(
int

pos,

long element

// Position
// Value

Parmetros
pos
[in] Posio do elemento no array para alterar
element
[in] Novo elemento de valor
Valor do Retorno
verdadeiro se com sucesso; falso - no pode alterar o elemento.
Exemplo
//--- example for CArrayLong::Update(int,long)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- update element
if(!array.Update(0,1000000))
{
printf("Update error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1949

Biblioteca Padro

Shift
Desloca um item a partir de uma dada posio no array para um deslocamento determinado.
bool Shift(
int pos,

// Position

int shift

// Shift

Parmetros
pos
[in] Posio do elemento array movido
shift
[in] O valor de deslocamento (tanto positivo como negativo).
Valor do Retorno
verdadeiro se com sucesso, falso - no pode mover o item.
Exemplo
//--- example for CArrayLong::Shift(int,int)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shift element
if(!array.Shift(10,-5))
{
printf("Shift error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1950

Biblioteca Padro

Delete
Remove o elemento a partir de uma posio dada no array.
bool Delete(
int pos

// Position

Parmetros
pos
[in] Remove posio do elemento no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover o elemento.
Exemplo
//--- example for CArrayLong::Delete(int)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete element
if(!array.Delete(0))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1951

Biblioteca Padro

DeleteRange
Exclui um grupo de elementos a partir de uma posio dada no array.
bool DeleteRange(
int from,

// Position of the first element

int to

// Position of the last element

Parmetros
from
[in] Posio da primeira remoo do elemento no array.
to
[in] Posio do ltimo elemento deletado no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover elementos.
Exemplo
//--- example for CArrayLong::DeleteRange(int,int)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete elements
if(!array.DeleteRange(0,10))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1952

Biblioteca Padro

At
Obtm o elemento a partir de uma posio dada no array.
long At(
int pos

// Position

) const

Parmetros
pos
[in] Posio do elemento desejado no array.
Valor do Retorno
O valor do elemento em caso de sucesso. Retorna LONG_MAX se houver uma tentativa de obter um
elemento de posies no existentes (o ltimo erro ERR_OUT_OF_RANGE).
Observao
LONG_MAX pode ser um valor vlido de elemento de array, assim havendo um valor, verificar
sempre o ltimo cdigo de erro.
Exemplo
//--- example for CArrayLong::At(int)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
for(int i=0;i<array.Total();i++)
{
long result=array.At(i);
if(result==LONG_MAX && GetLastError()==ERR_OUT_OF_RANGE)
{
//--- Error reading from the array
printf("Get element error");
delete array;
return;
}
//--- use element
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

1953

Biblioteca Padro
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1954

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArray(
const long& src[]

// Source array

) const

Parmetros
src[]
[in] A referncia a um array de elementos fontes para comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.
Exemplo
//--- example for CArrayLong::CompareArray(const long &[])
#include <Arrays\ArrayLong.mqh>
//--long src[];
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- compare with another array
int result=array.CompareArray(src);
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1955

Biblioteca Padro

CompareArrayconst
Compara o array com outro array.
bool CompareArrayconst(
const CArrayLong* src

// Pointer to the source

) const

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayLong - elementos fontes para comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.
Exemplo
//--- example for CArrayLong::CompareArray(const CArrayLong*)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayLong *src=new CArrayLong;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- compare with another array
int result=array.CompareArray(src);
//--- delete arrays
delete src;
delete array;
}

2000-2015, MetaQuotes Software Corp.

1956

Biblioteca Padro

InsertSort
Elemento de inseres no array ordenado
bool InsertSort(
long element

// Element to insert

Parmetros
element
[in] O valor do elemento a ser inserido em array ordenado
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.

Exemplo
//--- example for CArrayLong::InsertSort(long)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- insert element
if(!array.InsertSort(1000000))
{
printf("Insert error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1957

Biblioteca Padro

Pesquisa
Procura por um elemento igual ao modelo apresentado no array ordenado.
int Search(
long element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayLong::Search(long)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.Search(1000000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1958

Biblioteca Padro

SearchGreat
Procura por um elemento de amostra maior, no array ordenado.
int SearchGreat(
long element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayLong::SearchGreat(long)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreat(1000000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1959

Biblioteca Padro

SearchLess
Procura por um elemento menor do que a amostra no array ordenado.
int SearchLess(
long element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayLong::SearchLess(long)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLess(1000000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1960

Biblioteca Padro

SearchGreatOrEqual
Procura por um elemento maior ou igual ao modelo no array ordenado.
int SearchGreatOrEqual(
long element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayLong::SearchGreatOrEqual(long)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreatOrEqual(1000000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1961

Biblioteca Padro

SearchLessOrEqual
Procura por um elemento menor ou igual ao modelo no array ordenado.
int SearchLessOrEqual(
long element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayLong::SearchLessOrEqual(long)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLessOrEqual(1000000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1962

Biblioteca Padro

SearchFirst
Localiza o primeiro elemento igual ao modelo no array ordenado.
int SearchFirst(
long element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayLong::SearchFirst(long)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchFirst(1000000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1963

Biblioteca Padro

SearchLast
Localiza o ltimo elemento igual ao modelo no array ordenado.
int SearchLast(
long element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayLong::SearchLast(long)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLast(1000000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1964

Biblioteca Padro

SearchLinear
Pesquisas para o elemento igual ao modelo no array.
int SearchLinear(
long element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
A posio do elemento encontrado, se com sucesso. Igual a -1 se o elemento no foi encontrado.
Observao
O mtodo usa o algoritmo de busca linear (ou busca sequencial) para arrays no classificados.
Exemplo
//--- example for CArrayLong::SearchLinear(long)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- search element
if(array.SearchLinear(1000000)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1965

Biblioteca Padro

Save
Salva array de dados no arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - se concludo com xito, falso - se com erro.
Exemplo
//--- example for CArrayLong::Save(int)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
int

file_handle;

CArrayLong *array=new CArrayLong;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- add 100 arrays elements
for(int i=0;i<100;i++)
{
array.Add(i);
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);

2000-2015, MetaQuotes Software Corp.

1966

Biblioteca Padro
}
delete array;
}

2000-2015, MetaQuotes Software Corp.

1967

Biblioteca Padro

Load
Carrega array de dados a partir de um arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - se concludo com xito, falso - se com erro.
Exemplo
//--- example for CArrayLong::Load(int)
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
int

file_handle;

CArrayLong *array=new CArrayLong;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- use arrays elements
for(int i=0;i<array.Total();i++)
{
printf("Element[%d] = %I64",i,array.At(i));

2000-2015, MetaQuotes Software Corp.

1968

Biblioteca Padro
}
delete array;
}

2000-2015, MetaQuotes Software Corp.

1969

Biblioteca Padro

Type
Obtm o identificador do tipo do array.
virtual int Type() const

Valor do Retorno
Tipo de ID da matriz (por CArrayLong - 84).
Exemplo
//--- example for CArrayLong::Type()
#include <Arrays\ArrayLong.mqh>
//--void OnStart()
{
CArrayLong *array=new CArrayLong;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- get array type
int type=array.Type();
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1970

Biblioteca Padro

CArrayFloat
CArrayFloat uma classe de array dinmico de variveis do tipo float.

Descrio
A classe CArrayFloat posibilita o trabalho com um array dinmico de variveis do tipo float. A classe
possibilita adicionar/inserir/excluir elementos em: array, ordenao de array e pesquisando em array
ordenado. Alm disto, implementa mtodos para trabalhar com o arquivo.

Declarao
class CArrayFloat : public CArray

Ttulo
#include <Arrays\ArrayFloat.mqh>

Mtodos de classe
Atributos
Delta

Define a tolerncia de comparao

Controle de memria
Reserve

Memria alocada para aumentar o tamanho do


array

Resize

Define um novo tamanho (mais pequeno) do


array

Shutdown

Limpa o array com uma liberao de memria


completa

Mtodos para adicionar


Add

Adiciona um elemento para o final do array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

Insert

Insere um elemento no array para uma posio


especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

AssignArray

Copia os elementos array a partir de outro array

AssignArray

Copia os elementos array a partir de outro array

2000-2015, MetaQuotes Software Corp.

1971

Biblioteca Padro

Mtodos de atualizao
Update

Altera o elemento
determinado

na

posio

do

array

Shift

Desloca um item a partir de uma dada posio


no array para um deslocamento determinado

Delete

Remove o elemento a partir de uma posio


especfica no array

DeleteRange

Exclui um grupo de elementos a partir de uma


posio especfica no array

Mtodos de acesso
At

Obtm o elemento a partir de uma posio dada


no array

Mtodos para comparar


CompareArray

Compara o array com outro array

CompareArray

Compara o array com outro array

Operaes de array ordenado


InsertSort

Elemento de inseres em array ordenado

Pesquisa

Procura por um elemento igual ao modelo em


array ordenado

SearchGreat

Procura por um elemento de mais amostras em


array ordenado

SearchLess

Procura por um elemento menor do que a


amostra em array ordenado

SearchGreatOrEqual

Procura por um elemento maior ou igual ao


modelo em array ordenado

SearchLessOrEqual

Procura por um elemento menor ou igual ao


modelo apresentado em array ordenado

SearchFirst

Localiza o primeiro elemento igual ao modelo


em array ordenado

SearchLast

Localiza o ltimo elemento igual ao modelo em


array ordenado

SearchLinear

Procura o elemento igual a amostra no array

Entrada/sada
virtual Save

Salva array de dados no arquivo

virtual Load

Carrega array de dados a partir de um arquivo

virtual Type

Obtm o identificador do tipo do array

2000-2015, MetaQuotes Software Corp.

1972

Biblioteca Padro

Delta
Define a comparao de tolerncia.
void Delta(
float delta

// Tolerance

Parmetros
delta
[in] o novo valor de admisso de comparao.
Valor do Retorno
Nenhum
Observao
Admisso de comparao utilizado na pesquisa. Os valores so considerados iguais se a diferena
for menor ou igual a tolerncia. A tolerncia padro 0.0.
Exemplo
//--- example for CArrayFloat::Delta(float)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- set compare variation
array.Delta(0.001);
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1973

Biblioteca Padro

Reserve
Memria alocada para aumentar o tamanho do array.
bool Reserve(
int size

// Number

Parmetros
size
[in] O nmero de elementos adicionais do array.
Valor do Retorno
verdadeiro se com sucesso; falso - se houve uma tentativa de buscar com quantidade menor ou
igual a zero, ou se o array no aumentou.
Observao
Para reduzir a fragmentao da memria, o aumento do tamanho do array feito com um passo
dado anteriormente atravs do mtodo de Step (int), ou 16 (por padro).
Exemplo
//--- example for CArrayFloat::Reserve(int)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- reserve memory
if(!array.Reserve(1024))
{
printf("Reserve error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1974

Biblioteca Padro

Resize
Define um novo tamanho (menor) do array.
bool Resize(
int size

// Size

Parmetros
size
[in] Novo tamanho do array.
Valor do Retorno
Verdadeiro se com sucesso; falso - se houve uma tentativa de definir o tamanho inferior ou igual a
zero.
Observao
Alterando o tamanho do array permite uma utilizao tima do uso de memria. Elementos
suprfluos perdidos direita. Para reduzir a fragmentao da memria, o tamanho do array
alterado com um passo dado previamente atravs do mtodo de Step (int), ou 16 (padro).
Exemplo
//--- example for CArrayFloat::Resize(int)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- resize array
if(!array.Resize(10))
{
printf("Resize error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1975

Biblioteca Padro

Shutdown
Limpa o array com uma liberao de memria completa.
bool Shutdown()

Valor do Retorno
Verdadeiro se obteve xito, falso - se ocorreu um erro.
Exemplo
//--- example for CArrayFloat::Shutdown()
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shutdown array
if(!array.Shutdown())
{
printf("Shutdown error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1976

Biblioteca Padro

Add
Adiciona um elemento para o final do array.
bool Add(
float element

// Element to add

Parmetros
element
[in] O valor do elemento para adicionar ao array.
Valor do Retorno
verdadeiro com sucesso, falso - no pode adicionar um elemento.
Exemplo
//--- example for CArrayFloat::Add(float)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
for(int i=0;i<100;i++)
{
if(!array.Add(i))
{
printf("Element addition error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1977

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const float& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayFloat::AddArray(const float &[])
#include <Arrays\ArrayFloat.mqh>
//--float src[];
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1978

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const CArrayFloat* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia da classe elementos CArrayFloat - elementos fontes para
adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayFloat::AddArray(const CArrayFloat*)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayFloat *src=new CArrayFloat;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete src;
delete array;
return;
}
//--- delete source array

2000-2015, MetaQuotes Software Corp.

1979

Biblioteca Padro
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1980

Biblioteca Padro

Insert
Insere um elemento no array para uma posio especfica.
bool Insert(
float element,

// Element to insert

int

// Position

pos

Parmetros
element
[in] O valor do elemento para ser inserido no array
pos
[in] Posio no array para inserir
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayFloat::Insert(float,int)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert elements
for(int i=0;i<100;i++)
{
if(!array.Insert(i,0))
{
printf("Insert error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1981

Biblioteca Padro

InsertArray
Insere um array de elementos de outro array com uma posio especfica.
bool InsertArray(
const float& src[],
int

pos

// Source array
// Position

Parmetros
src[]
[in] Referncia a um array de elementos fontes para inserir
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayFloat::InsertArray(const float &[],int)
#include <Arrays\ArrayFloat.mqh>
//--float src[];
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1982

Biblioteca Padro

InsertArray
Insere um array de elementos a partir de outro array com posio especfica.
bool InsertArray(
CArrayFloat* src,
int

pos

// Pointer to the source


// Position

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayFloat - elementos fontes para inserir.
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayFloat::InsertArray(const CArrayFloat*,int)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayFloat *src=new CArrayFloat;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete src;
delete array;

2000-2015, MetaQuotes Software Corp.

1983

Biblioteca Padro
return;
}
//--- delete source array
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1984

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const float& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayFloat::AssignArray(const float &[])
#include <Arrays\ArrayFloat.mqh>
//--float src[];
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1985

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const CArrayFloat* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayFloat - elemento fonte para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayFloat::AssignArray(const CArrayFloat*)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayFloat *src

=new CArrayFloat;

if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete src;
delete array;
return;
}
//--- arrays is identical
//--- delete source array

2000-2015, MetaQuotes Software Corp.

1986

Biblioteca Padro
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1987

Biblioteca Padro

Update
Altera o elemento no array de posio especfica.
bool Update(
int

pos,

float element

// Position
// Value

Parmetros
pos
[in] Posio do elemento no array para alterar
element
[in] Novo elemento de valor
Valor do Retorno
verdadeiro se com sucesso; falso - no pode alterar o elemento.
Exemplo
//--- example for CArrayFloat::Update(int,float)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- update element
if(!array.Update(0,100.0))
{
printf("Update error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1988

Biblioteca Padro

Shift
Desloca um item a partir de uma dada posio no array para um deslocamento determinado.
bool Shift(
int pos,

// Position

int shift

// Shift

Parmetros
pos
[in] Posio do elemento array movido
shift
[in] O valor de deslocamento (tanto positivo como negativo).
Valor do Retorno
verdadeiro se com sucesso, falso - no pode mover o item.
Exemplo
//--- example for CArrayFloat::Shift(int,int)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shift element
if(!array.Shift(10,-5))
{
printf("Shift error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1989

Biblioteca Padro

Delete
Remove o elemento a partir de uma posio dada no array.
bool Delete(
int pos

// Position

Parmetros
pos
[in] Remove posio do elemento no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover o elemento.
Exemplo
//--- example for CArrayFloat::Delete(int)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete element
if(!array.Delete(0))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1990

Biblioteca Padro

DeleteRange
Exclui um grupo de elementos a partir de uma posio dada no array.
bool DeleteRange(
int from,

// Position of the first element

int to

// Position of last element

Parmetros
from
[in] Posio da primeira remoo do elemento no array.
to
[in] Posio do ltimo elemento deletado no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover elementos.
Exemplo
//--- example for CArrayFloat::DeleteRange(int,int)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete elements
if(!array.DeleteRange(0,10))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1991

Biblioteca Padro

At
Obtm o elemento a partir de uma posio dada no array.
float At(
int pos

// Position

) const

Parmetros
pos
[in] Posio do elemento desejado no array.
Valor do Retorno
O valor do elemento em caso de sucesso. Retorna FLT_MAX se houve uma tentativa de obter um
elemento de posies no existentes (o ltimo erro ERR_OUT_OF_RANGE).
Observao
FLT_MAX pode ser um valor vlido de elemento de array, assim havendo um valor, verificar sempre
o ltimo cdigo de erro.
Exemplo
//--- example for CArrayFloat::At(int)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
for(int i=0;i<array.Total();i++)
{
float result=array.At(i);
if(result==FLT_MAX && GetLastError()==ERR_OUT_OF_RANGE)
{
//--- error reading from array
printf("Get element error");
delete array;
return;
}
//--- use element
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

1992

Biblioteca Padro
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1993

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArray(
const float& src[]

// Source array

) const

Parmetros
src[]
[in] A referncia a um array de elementos fontes para comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.
Exemplo
//--- example for CArrayFloat::CompareArray(const float &[])
#include <Arrays\ArrayFloat.mqh>
//--float src[];
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- compare with another array
int result=array.CompareArray(src);
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1994

Biblioteca Padro

AssignArrayconst
Copia os elementos array a partir de outro array.
bool AssignArrayconst(
const CArrayFloat* src

// Pointer to the source

) const

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayFloat - elemento fonte para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayFloat::CompareArray(const CArrayFloat*)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayFloat *src=new CArrayFloat;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- compare with another array
int result=array.CompareArray(src);
//--- delete arrays
delete src;
delete array;
}

2000-2015, MetaQuotes Software Corp.

1995

Biblioteca Padro

InsertSort
Elemento de inseres no array ordenado
bool InsertSort(
float element

// Element to insert

Parmetros
element
[in] O valor do elemento a ser inserido em array ordenado
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayFloat::InsertSort(float)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- insert element
if(!array.InsertSort(100.0))
{
printf("Insert error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

1996

Biblioteca Padro

Pesquisa
Procura por um elemento igual a amostra em array ordenado.
int Search(
float element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayFloat::Search(float)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.Search(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1997

Biblioteca Padro

SearchGreat
Procura por um elemento de mais amostras em array ordenado.
int SearchGreat(
float element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayFloat::SearchGreat(float)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreat(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1998

Biblioteca Padro

SearchLess
Procura por um elemento menor do que a amostra no array ordenado.
int SearchLess(
float element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayFloat:: SearchLess(float)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLess(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

1999

Biblioteca Padro

SearchGreatOrEqual
Procura por um elemento maior ou igual da amostra no array ordenado.
int SearchGreatOrEqual(
float element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayFloat::SearchGreatOrEqual(float)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreatOrEqual(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2000

Biblioteca Padro

SearchLessOrEqual
Procura por um elemento menor ou igual a amostra no array ordenado.
int SearchLessOrEqual(
float element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayFloat::SearchLessOrEqual(float)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLessOrEqual(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2001

Biblioteca Padro

SearchFirst
Localiza o primeiro elemento igual ao modelo em array ordenado.
int SearchFirst(
float element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayFloat::SearchFirst(float)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchFirst(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2002

Biblioteca Padro

SearchLast
Localiza o ltimo elemento igual ao modelo no array ordenado.
int SearchLast(
float element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayFloat::SearchLast(float)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLast(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2003

Biblioteca Padro

SearchLinear
Procura por elemento igual a amostra no array
int SearchLinear(
float element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
A posio do elemento encontrado, se com sucesso. Igual a -1 se o elemento no foi encontrado.
Observao
O mtodo usa o algoritmo de busca linear (ou busca sequencial) para arrays no classificados.
Exemplo
//--- example for CArrayFloat::SearchLinear(float)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- search element
if(array.SearchLinear(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2004

Biblioteca Padro

Save
Salva array de dados no arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArrayFloat::Save(int)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
int

file_handle;

CArrayFloat *array=new CArrayFloat;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- add 100 arrays elements
for(int i=0;i<100;i++)
{
array.Add(i);
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);

2000-2015, MetaQuotes Software Corp.

2005

Biblioteca Padro
}
delete array;
}

2000-2015, MetaQuotes Software Corp.

2006

Biblioteca Padro

Load
Carrega array de dados a partir de um arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArrayFloat::Load(int)
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
int

file_handle;

CArrayFloat *array=new CArrayFloat;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- use arrays elements
for(int i=0;i<array.Total();i++)
{
printf("Element[%d] = %f",i,array.At(i));

2000-2015, MetaQuotes Software Corp.

2007

Biblioteca Padro
}
delete array;
}

2000-2015, MetaQuotes Software Corp.

2008

Biblioteca Padro

Type
Obtm o identificador do tipo do array.
virtual int Type() const

Valor do Retorno
Tipo da ID do array (para CArrayFloat - 87).
Exemplo
//--- example for CArrayFloat::Type()
#include <Arrays\ArrayFloat.mqh>
//--void OnStart()
{
CArrayFloat *array=new CArrayFloat;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- get array type
int type=array.Type();
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2009

Biblioteca Padro

CArrayDouble
CArrayDouble uma classe de array dinmico de variveis do tipo double.

Descrio
Classe CArrayDouble posibilita o trabalho com um array dinmico de variveis do tipo double. A classe
possibilita adicionar/inserir/excluir elementos em: array, ordenao de array e pesquisando em array
ordenado. Alm disto, implementa mtodos para trabalhar com o arquivo.

Declarao
class CArrayDouble : public CArray

Ttulo
#include <Arrays\ArrayDouble.mqh>

Mtodos de classe
Atributos
Delta

Define a tolerncia de comparao

Controle de memria
Reserve

Memria alocada para aumentar o tamanho do


array

Resize

Define um novo tamanho (mais pequeno) do


array

Shutdown

Limpa o array com uma liberao de memria


completa

Mtodos para adicionar


Add

Adiciona um elemento para o final do array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

Insert

Insere um elemento no array para uma posio


especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

AssignArray

Copia os elementos array a partir de outro array

AssignArray

Copia os elementos array a partir de outro array

2000-2015, MetaQuotes Software Corp.

2010

Biblioteca Padro

Mtodos de atualizao
Update

Altera o elemento
determinado

na

posio

do

array

Shift

Desloca um item a partir de uma dada posio


no array para um deslocamento determinado

Mtodos para excluir


Delete

Remove o elemento a partir de uma posio


especfica no array

DeleteRange

Exclui um grupo de elementos a partir de uma


posio especfica no array

Mtodos de acesso
At

Obtm o elemento a partir de uma posio dada


no array

Mtodos para comparar


CompareArray

Compara o array com outro array

CompareArray

Compara o array com outro array

Procurar por min/max


Minimum

Obtm o ndice do menor elemento do array no


intervalo determinado

Maximum

Obtm o ndice maior elemento do matriz no


intervalo determinado

Operaes de array ordenado


InsertSort

Elemento de inseres em array ordenado

Pesquisa

Procura por um elemento igual ao modelo em


array ordenado

SearchGreat

Procura por um elemento de mais amostras em


array ordenado

SearchLess

Procura por um elemento menor do que a


amostra em array ordenado

SearchGreatOrEqual

Procura por um elemento maior ou igual ao


modelo em array ordenado

SearchLessOrEqual

Procura por um elemento menor ou igual ao


modelo apresentado em array ordenado

SearchFirst

Localiza o primeiro elemento igual ao modelo


em array ordenado

SearchLast

Localiza o ltimo elemento igual ao modelo em


array ordenado

2000-2015, MetaQuotes Software Corp.

2011

Biblioteca Padro

SearchLinear

Procura o elemento igual a amostra no array

Entrada/sada
virtual Save

Salva array de dados no arquivo

virtual Load

Carrega array de dados a partir de um arquivo

virtual Type

Obtm o identificador do tipo do array

As classes derivadas:
CIndicatorBuffer

2000-2015, MetaQuotes Software Corp.

2012

Biblioteca Padro

Delta
Define a comparao de tolerncia.
void Delta(
double delta

// Tolerance

Parmetros
delta
[in] O novo valor da admisso de comparao.
Valor do Retorno
Nenhum
Observao
Admisso de comparao utilizado na pesquisa. Os valores so considerados iguais se a diferena
for menor ou igual a tolerncia. A tolerncia padro 0.0.
Exemplo
//--- example for CArrayDouble::Delta(double)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- set compare variation
array.Delta(0.001);
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2013

Biblioteca Padro

Reserve
Memria alocada para aumentar o tamanho do array.
bool Reserve(
int size

// Number

Parmetros
size
[in] O nmero de elementos adicionais do array.
Valor do Retorno
verdadeiro se com sucesso; falso - se houve uma tentativa de buscar com quantidade menor ou
igual a zero, ou se o array no aumentou.
Observao
Para reduzir a fragmentao da memria, o aumento do tamanho do array feito com um passo
dado anteriormente atravs do mtodo de Step (int), ou 16 (por padro).
Exemplo
//--- example for CArrayDouble::Reserve(int)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- reserve memory
if(!array.Reserve(1024))
{
printf("Reserve error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2014

Biblioteca Padro

Resize
Define um novo tamanho (menor) do array.
bool Resize(
int size

// Size

Parmetros
size
[in] Novo tamanho do array.
Valor do Retorno
Verdadeiro se com sucesso; falso - se houve uma tentativa de definir o tamanho inferior ou igual a
zero.
Observao
Alterando o tamanho do array permite uma utilizao tima do uso de memria. Elementos
suprfluos perdidos direita. Para reduzir a fragmentao da memria, o tamanho do array
alterado com um passo dado previamente atravs do mtodo de Step (int), ou 16 (padro).
Exemplo
//--- example for CArrayDouble::Resize(int)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- resize array
if(!array.Resize(10))
{
printf("Resize error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2015

Biblioteca Padro

Shutdown
Limpa o array com uma liberao de memria completa.
bool Shutdown()

Valor do Retorno
Verdadeiro se obteve xito, falso - se ocorreu um erro.
Exemplo
//--- example for CArrayDouble::Shutdown()
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shutdown array
if(!array.Shutdown())
{
printf("Shutdown error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2016

Biblioteca Padro

Add
Adiciona um elemento para o final do array.
bool Add(
double element

// Element to add

Parmetros
element
[in] o valor do elemento para adicionar ao array
Valor do Retorno
verdadeiro com sucesso, falso - no pode adicionar um elemento.
Exemplo
//--- example for CArrayDouble::Add(double)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
for(int i=0;i<100;i++)
{
if(!array.Add(i))
{
printf("Element addition error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2017

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const double& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayDouble::AddArray(const double &[])
#include <Arrays\ArrayDouble.mqh>
//--double src[];
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2018

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const CArrayDouble* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia da classe CArrayDouble - elementos fontes para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayDouble::AddArray(const CArrayDouble*)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayDouble *src=new CArrayDouble;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete src;
delete array;
return;
}
//--- delete source array
delete src;

2000-2015, MetaQuotes Software Corp.

2019

Biblioteca Padro
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2020

Biblioteca Padro

Insert
Insere um elemento no array para uma posio especfica.
bool Insert(
double element,

// Element to insert

int

// Position

pos

Parmetros
element
[in] O valor do elemento para ser inserido no array
pos
[in] Posio no array para inserir
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayDouble::Insert(double,int)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert elements
for(int i=0;i<100;i++)
{
if(!array.Insert(i,0))
{
printf("Insert error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2021

Biblioteca Padro

InsertArray
Insere um array de elementos a partir de outro array com posio especfica.
bool InsertArray(
const double& src[],

// Source array

int

// Position

pos

Parmetros
src[]
[in] Referncia a um array de elementos fontes para inserir
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayDouble::InsertArray(const double &[],int)
#include <Arrays\ArrayDouble.mqh>
//--double src[];
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2022

Biblioteca Padro

InsertArray
Insere um array de elementos a partir de outro array com posio especfica.
bool InsertArray(
CArrayDouble* src,

// Pointer to the source

int

// Position

pos

Parmetros
src
[in] Ponteiro para uma instncia da classe CArrayDouble - elementos fontes para inserir.
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayDouble::InsertArray(const CArrayDouble*,int)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayDouble *src=new CArrayDouble;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete src;
delete array;

2000-2015, MetaQuotes Software Corp.

2023

Biblioteca Padro
return;
}
//--- delete source array
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2024

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const double& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayDouble::AssignArray(const double &[])
#include <Arrays\ArrayDouble.mqh>
//--double src[];
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2025

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const CArrayDouble* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia da classe CArrayDouble - elemento fonte para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayDouble::AssignArray(const CArrayDouble*)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayDouble *src

=new CArrayDouble;

if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete src;
delete array;
return;
}
//--- arrays is identical
//--- delete source array

2000-2015, MetaQuotes Software Corp.

2026

Biblioteca Padro
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2027

Biblioteca Padro

Update
Altera o elemento no array de posio especfica.
bool Update(
int

pos,

double element

// Position
// Value

Parmetros
pos
[in] Posio do elemento no array para alterar
element
[in] Novo Valor.
Valor do Retorno
verdadeiro se com sucesso; falso - no pode alterar o elemento.
Exemplo
//--- example for CArrayDouble::Update(int,double)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- update element
if(!array.Update(0,100.0))
{
printf("Update error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2028

Biblioteca Padro

Shift
Desloca um item a partir de uma dada posio no array para um deslocamento determinado.
bool Shift(
int pos,

// Position

int shift

// Shift

Parmetros
pos
[in] Posio do array de elemento movido
shift
[in] O valor de deslocamento (tanto positivo como negativo).
Valor do Retorno
verdadeiro se com sucesso, falso - no pode mover o item.
Exemplo
//--- example for CArrayDouble::Shift(int,int)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shift element
if(!array.Shift(10,-5))
{
printf("Shift error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2029

Biblioteca Padro

Delete
Remove o elemento a partir de uma posio dada no array.
bool Delete(
int pos

// Position

Parmetros
pos
[in] posio remove o elemento no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover o elemento.
Exemplo
//--- example for CArrayDouble::Delete(int)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete element
if(!array.Delete(0))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2030

Biblioteca Padro

DeleteRange
Exclui um grupo de elementos a partir de uma posio dada no array.
bool DeleteRange(
int from,

// Position of the first element

int to

// Position of last element

Parmetros
from
[in] Posio do primeiro remove o elemento no array.
to
[in] Posio do ltimo exclue o elemento no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover elementos.
Exemplo
//--- example for CArrayDouble::DeleteRange(int,int)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete elements
if(!array.DeleteRange(0,10))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2031

Biblioteca Padro

At
Obtm o elemento a partir de uma posio dada no array.
double At(
int pos

// Position

) const

Parmetros
pos
[in] Posio do elemento desejado no array.
Valor do Retorno
O valor do elemento em caso de sucesso. Retorna DBL_MAX se houve uma tentativa de obter um
elemento de posies no existentes (o ltimo erro ERR_OUT_OF_RANGE).
Observao
DBL_MAX pode ser um valor vlido de elemento de array, assim havendo um valor, verificar sempre
o ltimo cdigo de erro.
Exemplo
//--- example for CArrayDouble::At(int)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
for(int i=0;i<array.Total();i++)
{
double result=array.At(i);
if(result==DBL_MAX && GetLastError()==ERR_OUT_OF_RANGE)
{
//---

Error reading from the array

printf("Get element error");


delete array;
return;
}
//--- use element
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

2032

Biblioteca Padro
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2033

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArray(
const double& src[]

// Source array

) const

Parmetros
src[]
[in] Referncia a um array de elementos fontes para comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.
Exemplo
//--- example for CArrayDouble::CompareArray(const double &[])
#include <Arrays\ArrayDouble.mqh>
//--double src[];
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- compare with another array
int result=array.CompareArray(src);
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2034

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArray(
const CArrayDouble* src

// Pointer to the source

) const

Parmetros
src
[in] Ponteiro para uma instncia da classe CArrayDouble - elementos fontes para comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.

Exemplo
//--- example for CArrayDouble::CompareArray(const CArrayDouble*)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayDouble *src=new CArrayDouble;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- compare with another array
int result=array.CompareArray(src);
//--- delete arrays
delete src;
delete array;
}

2000-2015, MetaQuotes Software Corp.

2035

Biblioteca Padro

Minimum
Obtm o ndice do elemento menor de array no intervalo especfico.
int Minimum(
int start,

// starting index

int count

// number of elements to proceed

) const

Parmetros
start
[in] Iniciando ndice do array.
count
[in] Nmero de elementos para proceder.
Valor de retorno
ndice do elemento menor de array no intervalo especfico.

2000-2015, MetaQuotes Software Corp.

2036

Biblioteca Padro

Maximum
Obtm o ndice do elemento maior de array no intervalo especfico.
int Maximum(
int start,

// starting index

int count

// number of elements to proceed

) const

Parmetros
start
[in] Iniciando ndice do array.
count
[in] Nmero de elementos para proceder.
Valor de retorno
ndice do elemento maior de array no intervalo especfico.

2000-2015, MetaQuotes Software Corp.

2037

Biblioteca Padro

InsertSort
Elemento de inseres no array ordenado
bool InsertSort(
double element

// Element to insert

Parmetros
element
[in] o valor do elemento a ser inserido em array ordenado
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayDouble::InsertSort(double)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- insert element
if(!array.InsertSort(100.0))
{
printf("Insert error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2038

Biblioteca Padro

Pesquisa
Procura por um elemento igual a amostra em array ordenado.
int Search(
double element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayDouble::Search(double)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.Search(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2039

Biblioteca Padro

SearchGreat
Procura por um elemento de mais amostras em array ordenado.
int SearchGreat(
double element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayDouble::SearchGreat(double)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreat(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2040

Biblioteca Padro

SearchLess
Procura por um elemento menor do que a amostra no array ordenado.
int SearchLess(
double element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayDouble:: SearchLess(double)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLess(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2041

Biblioteca Padro

SearchGreatOrEqual
Procura por um elemento maior ou igual da amostra no array ordenado.
int SearchGreatOrEqual(
double element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayDouble::SearchGreatOrEqual(double)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreatOrEqual(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2042

Biblioteca Padro

SearchLessOrEqual
Procura por um elemento menor ou igual a amostra no array ordenado.
int SearchLessOrEqual(
double element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayDouble::SearchLessOrEqual(double)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLessOrEqual(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2043

Biblioteca Padro

SearchFirst
Localiza o primeiro elemento igual ao modelo em array ordenado.
int SearchFirst(
double element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayDouble::SearchFirst(double)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchFirst(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2044

Biblioteca Padro

SearchLast
Localiza o ltimo elemento igual ao modelo no array ordenado.
int SearchLast(
double element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayDouble::SearchLast(double)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLast(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2045

Biblioteca Padro

SearchLinear
Pesquisa o elemento igual da amostra no array ordenado.
int SearchLinear(
double element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
A posio do elemento encontrado, se com sucesso. Igual a -1 se o elemento no foi encontrado.
Observao
O mtodo usa o algoritmo de busca linear (ou busca sequencial) para arrays no classificados.
Exemplo
//--- example for CArrayDouble::SearchLinear(double)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- search element
if(array.SearchLinear(100.0)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2046

Biblioteca Padro

Save
Salva array de dados no arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArrayDouble::Save(int)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
int

file_handle;

CArrayDouble *array=new CArrayDouble;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- add 100 arrays elements
for(int i=0;i<100;i++)
{
array.Add(i);
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);

2000-2015, MetaQuotes Software Corp.

2047

Biblioteca Padro
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2048

Biblioteca Padro

Load
Carrega array de dados a partir de um arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArrayDouble::Load(int)
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
int

file_handle;

CArrayDouble *array=new CArrayDouble;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- use arrays elements
for(int i=0;i<array.Total();i++)
{
printf("Element[%d] = %f",i,array.At(i));

2000-2015, MetaQuotes Software Corp.

2049

Biblioteca Padro
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2050

Biblioteca Padro

Type
Obtm o identificador do tipo do array.
virtual int Type() const

Valor do Retorno
Tipo de ID do array (por CArrayDouble - 87).
Exemplo
//--- example for CArrayDouble::Type()
#include <Arrays\ArrayDouble.mqh>
//--void OnStart()
{
CArrayDouble *array=new CArrayDouble;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- get array type
int type=array.Type();
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2051

Biblioteca Padro

CArrayString
CArrayString uma classe de array dinmico de variveis do tipo string.

Descrio
Classe CArrayString posibilita o trabalho com um array dinmico de variveis do tipo string. A classe
possibilita adicionar/inserir/excluir elementos em: array, ordenao de array e pesquisando em array
ordenado. Alm disto, implementa mtodos para trabalhar com o arquivo.

Declarao
class CArrayString : public CArray

Ttulo
#include <Arrays\ArrayString.mqh>

Mtodos de classe
Controle de memria
Reserve

Memria alocada para aumentar o tamanho do


array

Resize

Define um novo tamanho (mais pequeno) do


array

Shutdown

Define um novo tamanho (mais pequeno) do


array

Mtodos para adicionar


Add

Adiciona um elemento para o final do array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

ddArray

Adiciona ao final dos elementos array a partir


de um outro array

Insert

Insere um elemento no array para uma posio


especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

AssignArray

Copia os elementos array a partir de outro array

AssignArray

Copia os elementos array a partir de outro array

Mtodos de atualizao
Update

Altera

elemento

2000-2015, MetaQuotes Software Corp.

na

posio

do

array

2052

Biblioteca Padro

determinado
Shift

Desloca um item a partir de uma dada posio


no array para um deslocamento determinado

Mtodos para excluir


Delete

Remove o elemento a partir de uma posio


especfica no array

DeleteRange

Exclui um grupo de elementos a partir de uma


posio especfica no array

Mtodos de acesso
At

Obtm o elemento a partir de uma posio dada


no array

Mtodos para comparar


CompareArray

Compara o array com outro array

CompareArray

Compara o array com outro array

Operao do array ordenado


InsertSort

Elemento de inseres em array ordenado

Pesquisa

Procura por um elemento igual ao da amostra


no array ordenado

SearchGreat

Procura por um elemento de mais amostras em


array ordenado

SearchLess

Procura por um elemento menor do que a


amostra em array ordenado

SearchGreatOrEqual

Procura por um elemento maior ou igual a


amostra no array ordenado

SearchLessOrEqual

Procura por um elemento menor ou igual a


amostra no array ordenado

SearchFirst

Localiza o primeiro elemento igual a amostra no


array ordenado

SearchLast

Localiza o ltimo elemento igual a amostra no


array ordenado

SearchLinear

Procura o elemento igual a amostra no array

Entrada/sada
virtual Save

Salva array de dados no arquivo

virtual Load

Carrega array de dados a partir de um arquivo

virtual Type

Obtm o identificador do tipo do array

2000-2015, MetaQuotes Software Corp.

2053

Biblioteca Padro

Reserve
Memria alocada para aumentar o tamanho do array.
bool Reserve(
int size

// Number

Parmetros
size
[in] O nmero de elementos adicionais do array.
Valor do Retorno
verdadeiro se com sucesso; falso - se houve uma tentativa de buscar com quantidade menor ou
igual a zero, ou se o array no aumentou.
Observao
Para reduzir a fragmentao da memria, o aumento do tamanho do array feito com um passo
dado anteriormente atravs do mtodo de Step (int), ou 16 (por padro).
Exemplo
//--- example for CArrayString::Reserve(int)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- reserve memory
if(!array.Reserve(1024))
{
printf("Reserve error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2054

Biblioteca Padro

Resize
Define um novo tamanho (menor) do array.
bool Resize(
int size

// Size

Parmetros
size
[in] Nova tamanho do array
Valor do Retorno
Verdadeiro se com sucesso; falso - se houve uma tentativa de definir o tamanho inferior ou igual a
zero.
Observao
Alterando o tamanho do array permite uma utilizao tima do uso de memria. Elementos
suprfluos perdidos direita. Para reduzir a fragmentao da memria, o tamanho do array
alterado com um passo dado previamente atravs do mtodo de Step (int), ou 16 (padro).
Exemplo
//--- example for CArrayString::Resize(int)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- resize array
if(!array.Resize(10))
{
printf("Resize error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2055

Biblioteca Padro

Shutdown
Limpa o array com uma liberao de memria completa.
bool Shutdown()

Valor do Retorno
Verdadeiro se obteve xito, falso - se ocorreu um erro.
Exemplo
//--- example for CArrayString::Shutdown()
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shutdown array
if(!array.Shutdown())
{
printf("Shutdown error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2056

Biblioteca Padro

Add
Adiciona um elemento para o final do array.
bool Add(
string element

// Element to add

Parmetros
element
[in] o valor do elemento para adicionar ao array
Valor do Retorno
verdadeiro com sucesso, falso - no pode adicionar um elemento.
Exemplo
//--- example for CArrayString::Add(string)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
for(int i=0;i<100;i++)
{
if(!array.Add(IntegerToString(i)))
{
printf("Element addition error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2057

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const string& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayString::AddArray(const string &[])
#include <Arrays\ArrayString.mqh>
//--string src[];
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2058

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const CArrayString* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayString - a fonte de elementos a acrescentar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Exemplo
//--- example for CArrayString::AddArray(const CArrayString*)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayString *src=new CArrayString;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- add another array
if(!array.AddArray(src))
{
printf("Array addition error");
delete src;
delete array;
return;
}
//--- delete source array
delete src;

2000-2015, MetaQuotes Software Corp.

2059

Biblioteca Padro
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2060

Biblioteca Padro

Insert
Insere um elemento no array para uma posio especfica.
bool Insert(
string element,

// Element to insert

int

// Position

pos

Parmetros
element
[in] O valor do elemento para ser inserido no array
pos
[in] Posio no array para inserir
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayString::Insert(string,int)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert elements
for(int i=0;i<100;i++)
{
if(!array.Insert(IntegerToString(i),0))
{
printf("Insert error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2061

Biblioteca Padro

InsertArray
Insere um array de elementos a partir de outro array com posio especfica.
bool InsertArray(
const string& src[],
int

// Source array

pos

// Position

Parmetros
src[]
[in] Referncia a um array de elementos fontes para inserir
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayString::InsertArray(const string &[],int)
#include <Arrays\ArrayString.mqh>
//--string src[];
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2062

Biblioteca Padro

InsertArray
Insere um array de elementos a partir de outro array com posio especfica.
bool InsertArray(
CArrayString* src,
int

pos

// Pointer to the source


// Position

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayString - a fonte de elementos para inserir.
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Exemplo
//--- example for CArrayString::InsertArray(const CArrayString*,int)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayString *src=new CArrayString;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- insert another array
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete src;
delete array;

2000-2015, MetaQuotes Software Corp.

2063

Biblioteca Padro
return;
}
//--- delete source array
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2064

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const string& src[]

// Source array

Parmetros
src[]
[in] Referncia a um array de elementos fontes para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayString::AssignArray(const string &[])
#include <Arrays\ArrayString.mqh>
//--string src[];
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2065

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const CArrayString* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayString - fonte de elementos para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Exemplo
//--- example for CArrayString::AssignArray(const CArrayString*)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayString *src

=new CArrayString;

if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- assign another array
if(!array.AssignArray(src))
{
printf("Array assigned error");
delete src;
delete array;
return;
}
//--- arrays is identical
//--- delete source array

2000-2015, MetaQuotes Software Corp.

2066

Biblioteca Padro
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2067

Biblioteca Padro

Update
Altera o elemento no array de posio especfica.
bool Update(
int

pos,

string element

// Position
// Value

Parmetros
pos
[in] Posio do elemento no array para alterar
element
[in] Elemento de novo valor
Valor do Retorno
verdadeiro se com sucesso; falso - no pode alterar o elemento.
Exemplo
//--- example for CArrayString::Update(int, string)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- update element
if(!array.Update(0,"ABC"))
{
printf("Update error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2068

Biblioteca Padro

Shift
Desloca um item a partir de uma dada posio no array para um deslocamento determinado.
bool Shift(
int pos,

// Position

int shift

// Shift

Parmetros
pos
[in] Posio do array de elemento movido
shift
[in] O valor de deslocamento (tanto positivo como negativo).
Valor do Retorno
verdadeiro se com sucesso, falso - no pode mover o item.
Exemplo
//--- example for CArrayString::Shift(int,int)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shift element
if(!array.Shift(10,-5))
{
printf("Shift error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2069

Biblioteca Padro

Delete
Remove o elemento a partir de uma posio dada no array.
bool Delete(
int pos

// Position

Parmetros
pos
[in] posio remove o elemento no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover o elemento.
Exemplo
//--- example for CArrayString::Delete(int)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete element
if(!array.Delete(0))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2070

Biblioteca Padro

DeleteRange
Exclui um grupo de elementos a partir de uma posio dada no array.
bool DeleteRange(
int from,

// Position of the first element

int to

// Position of last element

Parmetros
from
[in] Posio do primeiro remove o elemento no array.
to
[in] Posio do ltimo exclue o elemento no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover elementos.
Exemplo
//--- example for CArrayString::DeleteRange(int,int)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete elements
if(!array.DeleteRange(0,10))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2071

Biblioteca Padro

At
Obtm o elemento a partir de uma posio dada no array.
string At(
int pos

// Position

) const

Parmetros
pos
[in] Posio do elemento desejado no array.
Valor do Retorno
O valor do elemento em caso de sucesso. Retorna aspas ( " ) se houver uma tentativa de obter um
elemento de posies no existentes (o ltimo erro ERR_OUT_OF_RANGE).
Observao
Duas aspas ( "" ) pode ser um valor vlido de um elemento do array, ento havendo um valor,
verifique sempre o ltimo cdigo de erro
Exemplo
//--- example for CArrayString::At(int)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
for(int i=0;i<array.Total();i++)
{
string result=array.At(i);
if(result=="" && GetLastError()==ERR_OUT_OF_RANGE)
{
//--- Error reading from array
printf("Get element error");
delete array;
return;
}
//--- use element
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

2072

Biblioteca Padro
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2073

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArray(
const string& src[]

// Source array

) const

Parmetros
src[]
[in] Referncia a um array de elementos fontes para comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.
Exemplo
//--- example for CArrayString::CompareArray(const string &[])
#include <Arrays\ArrayString.mqh>
//--string src[];
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- compare with another array
int result=array.CompareArray(src);
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2074

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArrays(
const CArrayString* src

// Pointer to the source

) const

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayString - a fonte de elementos de comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.
Exemplo
//--- example for CArrayString::CompareArray(const CArrayString*)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayString *src=new CArrayString;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- add source arrays elements
//--- . . .
//--- compare with another array
int result=array.CompareArray(src);
//--- delete arrays
delete src;
delete array;
}

2000-2015, MetaQuotes Software Corp.

2075

Biblioteca Padro

InsertSort
Elemento de inseres no array ordenado
bool InsertSort(
string element

// Element to insert

Parmetros
element
[in] o valor do elemento a ser inserido em array ordenado
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Exemplo
//--- example for CArrayString::InsertSort(string)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- insert element
if(!array.InsertSort("ABC"))
{
printf("Insert error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2076

Biblioteca Padro

Pesquisa
Procura por um elemento igual a amostra em array ordenado.
int Search(
string element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayString::Search(string)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.Search("ABC")!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2077

Biblioteca Padro

SearchGreat
Procura por um elemento de mais amostras em array ordenado.
int SearchGreat(
string element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayString::SearchGreat(string)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreat("ABC")!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2078

Biblioteca Padro

SearchLess
Procura por um elemento menor do que a amostra no array ordenado.
int SearchLess(
string element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayString:: SearchLess(string)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLess("ABC")!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2079

Biblioteca Padro

SearchGreatOrEqual
Procura por um elemento maior ou igual da amostra no array ordenado.
int SearchGreatOrEqual(
string element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayString:: SearchGreatOrEqual(string)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchGreatOrEqual("ABC")!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2080

Biblioteca Padro

SearchLessOrEqual
Procura por um elemento menor ou igual a amostra no array ordenado.
int SearchLessOrEqual(
string element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayString:: SearchLessOrEqual(string)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLessOrEqual("ABC")!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2081

Biblioteca Padro

SearchFirst
Localiza o primeiro elemento igual ao modelo em array ordenado.
int SearchFirst(
string element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayString:: SearchFirst(string)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchFirst("ABC")!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2082

Biblioteca Padro

SearchLast
Localiza o ltimo elemento igual ao modelo no array ordenado.
int SearchLast(
string element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayString:: SearchLast(string)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- search element
if(array.SearchLast("ABC")!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2083

Biblioteca Padro

SearchLinear
Procura por elemento igual a amostra no array
int SearchLinear(
string element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
A posio do elemento encontrado, se com sucesso. Igual a -1 se o elemento no foi encontrado.
Observao
O mtodo usa o algoritmo de busca linear (ou busca sequencial) para arrays no classificados.
Exemplo
//--- example for CArrayString::SearchLinear(string)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- search element
if(array.SearchLinear("ABC")!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2084

Biblioteca Padro

Save
Salva array de dados no arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArrayString::Save(int)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
int

file_handle;

CArrayString *array=new CArrayString;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- add 100 arrays elements
for(int i=0;i<100;i++)
{
array.Add(IntegerToString(i));
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);

2000-2015, MetaQuotes Software Corp.

2085

Biblioteca Padro
}
delete array;
}

2000-2015, MetaQuotes Software Corp.

2086

Biblioteca Padro

Load
Carrega array de dados a partir de um arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArrayString::Load(int)
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
int

file_handle;

CArrayString *array=new CArrayString;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- use arrays elements
for(int i=0;i<array.Total();i++)
{
printf("Element[%d] = %s",i,array.At(i));

2000-2015, MetaQuotes Software Corp.

2087

Biblioteca Padro
}
delete array;
}

2000-2015, MetaQuotes Software Corp.

2088

Biblioteca Padro

Type
Obtm o identificador do tipo do array.
virtual int Type() const

Valor do Retorno
Tipo de ID do array (por CArrayString - 89).
Exemplo
//--- example for CArrayString::Type()
#include <Arrays\ArrayString.mqh>
//--void OnStart()
{
CArrayString *array=new CArrayString;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- get array type
int type=array.Type();
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2089

Biblioteca Padro

CArrayObj
CArrayObj uma classe de array dinmico de ponteiros para instncias de CObject e seus herdeiros.

Descrio
A classe CArrayObj possibilita trabalhar com um array dinmico de ponteiros para instncias de
CObject e seus herdeiros. Isto d a possibilidade de trabalhar como arrays dinmicos
multidimensionais de tipos de dados primitivos e para estruturas de dados organizados mais difceis.
Na classe implementada existe a possibilidade de adicionar/inserir/excluir elementos em: array,
ordenao de array e pesquisando em array ordenado. Alm disto, implementa mtodos para trabalhar
com o arquivo.
Existem certas sutilezas na classe CArrayObj.

Declarao
class CArrayObj : public CArray

Ttulo
#include <Arrays\ArrayObj.mqh>

Mtodo de Classe
Atributos
FreeMode

Obtm o flag de gerenciamento de memria

FreeMode

Define o flag de gerenciamento de memria

Controle de memria
Reserve

Memria alocada para aumentar o tamanho do


array

Resize

Define um novo tamanho (mais pequeno) do


array

Shutdown

Limpa o array com uma iseno total do array


de memria (no do elemento).

Mtodos para adicionar


Add

Adiciona um elemento para o final do array

ddArray

Adiciona um elemento para o final do array

Insert

Insere um elemento no array para uma posio


especfica

InsertArray

Insere um array de elementos a partir de outro


array com posio especfica

AssignArray

Copia os elementos array a partir de outro array

2000-2015, MetaQuotes Software Corp.

2090

Biblioteca Padro

Mtodos de atualizao
Update

Altera o elemento
determinado

na

posio

do

array

Shift

Desloca um item a partir de uma dada posio


no array para um deslocamento determinado

Mtodos para excluir


Detach

Obtm o elemento a partir da posio


determinada e remove-o a partir do array

Delete

Remove o elemento a partir de uma posio


especfica no array

DeleteRange

Exclui um grupo de elementos a partir de uma


posio especfica no array

Clear

Remove todos os elementos do array, sem a


liberao do array de memria

Mtodos de acesso
At

Obtm o elemento a partir de uma posio dada


no array

Mtodos para comparar


CompareArray

Compara o array com outro array

Operaes de array ordenado


InsertSort

Elemento de inseres em array ordenado

Pesquisa

Procura por um elemento igual ao modelo em


array ordenado

SearchGreat

Procura por um elemento de mais amostras em


array ordenado

SearchLess

Procura por um elemento menor do que a


amostra em array ordenado

SearchGreatOrEqual

Procura por um elemento maior ou igual ao


modelo em array ordenado

SearchLessOrEqual

Procura por um elemento menor ou igual ao


modelo apresentado em array ordenado

SearchFirst

Localiza o primeiro elemento igual ao modelo


em array ordenado

SearchLast

Localiza o ltimo elemento igual ao modelo em


array ordenado

Entrada/sada
Save

Salva array de dados no arquivo

2000-2015, MetaQuotes Software Corp.

2091

Biblioteca Padro

Load

Carrega array de dados a partir de um arquivo

Type

Obtm o identificador do tipo do array

As classes derivadas:
CIndicator
CIndicators
A aplicao prtica dos arrays so descendentes da classe CObject (incluindo todas as classes da
biblioteca padro).
Por exemplo, considere as opes para o array bidimensional:
#include <Arrays\ArrayDouble.mqh>
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
int i,j;
int first_size=10;
int second_size=100;
//--- create array
CArrayObj

*array=new CArrayObj;

CArrayDouble *sub_array;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create subarrays
for(i=0;i<first_size;i++)
{
sub_array=new CArrayDouble;
if(sub_array==NULL)
{
delete array;
printf("Object create error");
return;
}
//--- fill array
for(j=0;j<second_size;j++)
{
sub_array.Add(i*j);
}
array.Add(sub_array);
}
//--- create array OK
for(i=0;i<first_size;i++)

2000-2015, MetaQuotes Software Corp.

2092

Biblioteca Padro
{
sub_array=array.At(i);
for(j=0;j<second_size;j++)
{
double element=sub_array.At(j);
//--- use array element
}
}
delete array;
}

Sutilezas
A classe tem um mecanismo para controlar a dinmica de memria, por isso tenha cuidado ao
trabalhar com elementos do array.
Mecanismo de gerenciamento de memria pode ser ligado / desligado atravs do mtodo FreeMode
(bool). Por padro, o mecanismo ativado.
Por conseguinte, existem duas opes para lidar com a classe CArrayObj classe:
1. Mecanismo de gerenciamento de memria est ativada. (padro)
Neste caso, a CArrayObj assume a responsabilidade de liberar os elementos de memria aps a sua
remoo do array. Neste programa o usurio no deve liberar os elementos do array.
Exemplo
int i;
//--- Create an array
CArrayObj *array=new CArrayObj;
//--- Fill array elements
for(i=0;i<10;i++) array.Add(new CObject);
//--- Do something
for(i=0;i<array.Total();i++)
{
CObject *object=array.At(i);
//--- Action with an element
. . .
}
//--- Remove the array with the elements
delete array;

2. Mecanismo de gerenciamento de memria est desativado.


Neste caso, a CArrayObj no assume a responsabilidade para liberar os elementos de memria aps a
sua remoo do array. Neste programa o usurio deve liberar os elementos do array.
Exemplo
int i;

2000-2015, MetaQuotes Software Corp.

2093

Biblioteca Padro

//--- Create an array


CArrayObj *array=new CArrayObj;
//--- Disable the mechanism of memory management
array.FreeMode(false);
//--- Fill array elements
for(i=0;i<10;i++) array.Add(new CObject);
//--- Do something
for(i=0;i<array.Total();i++)
{
CObject *object=array.At(i);
//--- Action with an element
. . .
}
//--- Remove array elements
while(array.Total()) delete array.Detach();
//--- Remove empty array
delete array;

2000-2015, MetaQuotes Software Corp.

2094

Biblioteca Padro

FreeMode
Obtm o flag de gerenciamento de memria.
bool FreeMode() const

Valor do Retorno
Flag de gerenciamento de memria .
Exemplo
//--- example for CArrayObj::FreeMode()
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- get free mode flag
bool array_free_mode=array.FreeMode();
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2095

Biblioteca Padro

FreeMode
Define o flag de gerenciamento de memria.
void FreeMode(
bool mode

// New flag

Parmetros
mode
[in] O novo valor do flag de gerenciamento de memria.
Valor do Retorno
Nenhum.
Observao
Definir o flag de gerenciamento de memria - um ponto importante no uso da classe CArrayObj.
Desde que os elementos do array so ponteiros para objetos dinmicos, importante determinar o
que fazer com eles quando remover o array.
Se o flag estiver definido, remove um elemento a partir do array, o elemento automaticamente
excludo pelo operador "delete". Se o flag no est definido, assumido que um ponteiro para o
objeto excludo ainda est em algum lugar no programa do usurio e ser aliviado dele (do
programa) ento.
Se o usurio resetar o flag de gerenciamento de memria, deve compreender a sua responsabilidade
para a remoo do array antes da concluso do programa, porque de outra forma, a memria
liberada no ocupada pelos elementos quando eles criam um novo operador.
Se o usurio no resetar o flag de gerenciamento de memria, h um outro "recife", ou seja,
grandes quantidades de dados eventualmente poderiam at mesmo quebrar o seu terminal.
Usando ponteiros e array armazenados em algum lugar das variveis locais, aps a remoo do array
ir levar a um erro crtico e trava o programa do usurio. Por padro, o flag de gerenciamento de
memria est definido, ou seja, a classe do array responsvel por liberar os elementos de
memria.
Exemplo
//--- example for CArrayObj::FreeMode(bool)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}

2000-2015, MetaQuotes Software Corp.

2096

Biblioteca Padro
//--- reset free mode flag
array.FreeMode(false);
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2097

Biblioteca Padro

Reserve
Memria alocada para aumentar o tamanho do array.
bool Reserve(
int size

// Number

Parmetros
size
[in] O nmero de elementos adicionais do array.
Valor do Retorno
verdadeiro se com sucesso; falso - se houve uma tentativa de buscar com quantidade menor ou
igual a zero, ou se o array no aumentou.
Observao
Para reduzir a fragmentao da memria, o aumento do tamanho do array feito com um passo
dado anteriormente atravs do mtodo de Step (int), ou 16 (por padro).
Exemplo
//--- example for CArrayObj::Reserve(int)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
if(!array.Reserve(1024))
{
printf("Reserve error");
delete array;
return;
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2098

Biblioteca Padro

Resize
Define um novo tamanho (menor) do array.
bool Resize(
int size

// Size

Parmetros
size
[in] Nova tamanho do array
Valor do Retorno
Para reduzir a fragmentao da memria, alterar o tamanho do array com um passo dado
previamente pelo mtodo Step (int), ou 16 (por padro).
Observao
Alterar o tamanho do array permite o uso de memria na maneira ideal. Excesso de elementos
localizados direita so perdidos. A memria para elementos perdidos liberada ou no,
dependendo do modo de gerenciamento de memria.
Para reduzir a fragmentao da memria, alterar o tamanho do array com um passo dado
previamente pelo mtodo Step (int), ou 16 (por padro).
Exemplo
//--- example for CArrayObj::Resize(int)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- resize array
if(!array.Resize(10))
{
printf("Resize error");
delete array;
return;
}
//--- delete array
delete array;

2000-2015, MetaQuotes Software Corp.

2099

Biblioteca Padro
}

2000-2015, MetaQuotes Software Corp.

2100

Biblioteca Padro

Clear
Remove todos os elementos do array sem a liberao do array de memria.
void Clear()

Valor do Retorno
No tem.
Observao
Se ativado o gerenciamento de memria, a memria e os itens excludos estaro isentos.
Exemplo
//--- example for CArrayObj::Clear()
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- clear array
array.Clear();
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2101

Biblioteca Padro

Shutdown
Limpa o array com uma iseno total do array de memria (no do elemento).
bool Shutdown()

Valor do Retorno
Verdadeiro se obteve xito, falso - se ocorreu um erro.
Observao
Se ativado o gerenciamento de memria, a memria e os itens excludos estaro isentos.
Exemplo
//--- example for CArrayObj::Shutdown()
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shutdown array
if(!array.Shutdown())
{
printf("Shutdown error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2102

Biblioteca Padro

CreateElement
Cria um novo elemento do array na posio determinada.
bool CreateElement(
int index

// Position

Parmetros
index
[in] posio em que deseja-se criar um novo elemento.
Valor do Retorno
verdadeiro se obteve xito, falso - no pode criar o elemento.
Observao
Mtodo CreateElement (int) na classe CArrayObj sempre retorna falso e no executa qualquer ao.
Se necessrio, em uma classe derivada, o mtodo CreateElement (int) deve ser implementado.
Exemplo
//--- example for CArrayObj::CreateElement(int)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
int

size=100;

CArrayObj *array=new CArrayObj;


//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- fill array
array.Reserve(size);
for(int i=0;i<size;i++)
{
if(!array.CreateElement(i))
{
printf("Element create error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;

2000-2015, MetaQuotes Software Corp.

2103

Biblioteca Padro
}

2000-2015, MetaQuotes Software Corp.

2104

Biblioteca Padro

Add
Adiciona um elemento para o final do array.
bool Add(
CObject* element

// Element to add

Parmetros
element
[in] o valor do elemento para adicionar ao array
Valor do Retorno
verdadeiro com sucesso, falso - no pode adicionar um elemento.
Observao
O elemento no adicionado ao array, se o valor for invlido para ponteiro de transmisso (tais
como NULL).
Exemplo
//--- example for CArrayObj::Add(CObject*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add 100 arrays elements
for(int i=0;i<100;i++)
{
if(!array.Add(new CObject))
{
printf("Element addition error");
delete array;
return;
}
}
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2105

Biblioteca Padro

ddArray
Adiciona ao final dos elementos array a partir de um outro array.
bool AddArray(
const CArrayObj * src

// Pointer to the array-source

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayDouble - fontes de elementos para adicionar.
Valor do Retorno
verdadeiro com sucesso, falso - se voc no pode adicionar itens.
Observao
A adio de elementos do array no array realmente copiar os ponteiros. Portanto, quando na
chamada do mtodo existe uma "barreira", ento pode haver um ponteiro para um objeto dinmico
em mais de uma varivel.
//--- example
extern bool

make_error;

extern int

error;

extern CArrayObj *src;


//--- Create a new instance CArrayObj
//--- Default memory management is turned on
CArrayObj *array=new CArrayObj;
//--- Add (copy) the elements of the source array
if(array!=NULL)
bool result=array.AddArray(src);
if(make_error)
{
//--- Perform erroneous actions
switch(error)
{
case 0:
//--- Remove the source array, without checking its memory management flag
delete src;
//--- Result:
//--- It is possible to address an element by invalid pointer in the receiver array
break;
case 1:
//--- Disable the mechanism of memory management in the source array
if(src.FreeMode()) src.FreeMode(false);
//--- But do not remove the source array
//--- Result:

//--- After removing the receiver array it is possible to address an element by invalid po
break;

2000-2015, MetaQuotes Software Corp.

2106

Biblioteca Padro
case 2:
//--- Disable the mechanism of memory management in the source array
src.FreeMode(false);
//--- Disable the mechanism of memory management in the receiver array
array.FreeMode(false);
//--- Result:
//--- After the program termination get a "memory leak"
break;
}
}
else
{
//--- Disable the mechanism of memory management in the source array
if(src.FreeMode()) src.FreeMode(false);
//--- Delete the source array
delete src;
//--- Result:
//--- Addressing the receiver array element will be correct
//--- Deleting the receiver array will lead to deleting its elements
}

Exemplo
//--- example for CArrayObj::AddArray(const CArrayObj*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayObj *src=new CArrayObj;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- reset free mode flag
src.FreeMode(false);
//--- fill source array
//--- . . .
//--- add another array

2000-2015, MetaQuotes Software Corp.

2107

Biblioteca Padro
if(!array.AddArray(src))
{
printf("Array addition error");
delete src;
delete array;
return;
}
//--- delete source array without elements
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2108

Biblioteca Padro

Insert
Insere um elemento no array para uma posio especfica.
bool Insert(
CObject* element,

// Element to insert

int

// Position

pos

Parmetros
element
[in] o valor do elemento para ser inserido em um array
pos
[in] Posio no array para inserir
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Observao
O elemento no adicionado ao array, se o valor for invlido para ponteiro de transmisso (tais
como NULL).
Exemplo
//--- example for CArrayObj::Insert(CObject*,int)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- insert elements
for(int i=0;i<100;i++)
{
if(!array.Insert(new CObject,0))
{
printf("Insert error");
delete array;
return;
}
}
//--- use array
//--- . . .

2000-2015, MetaQuotes Software Corp.

2109

Biblioteca Padro
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2110

Biblioteca Padro

InsertArray
Insere um array de elementos a partir de outro array com posio especfica.
bool InsertArray(
const CArrayObj* src,

// Pointer to the source

int

// Position

pos

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayObj - elementos fontes para inserir.
pos
[in] Posio no array para inserir
Valor do Retorno
Verdadeiro se com sucesso, falso - no pode colar os itens.
Observao
Veja: CArrayObj::AddArray(const CArrayObj*).
Exemplo
//--- example for CArrayObj::InsertArray(const CArrayObj*,int)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayObj *src=new CArrayObj;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- reset free mode flag
src.FreeMode(false);
//--- fill source array
//--- . . .
//--- insert another array

2000-2015, MetaQuotes Software Corp.

2111

Biblioteca Padro
if(!array.InsertArray(src,0))
{
printf("Array inserting error");
delete src;
delete array;
return;
}
//--- delete source array without elements
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2112

Biblioteca Padro

AssignArray
Copia os elementos array a partir de outro array.
bool AssignArray(
const CArrayObj* src

// Pointer to the source

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayObj - fonte de elementos para copiar.
Valor do Retorno
verdadeiro se com sucesso, falso - no possvel copiar os itens.
Observao
Se o receptor array AssignArray no est vazio, todos os seus elementos sero removidos do array e
o flag de gerenciamento de memria, memria e os itens apagados sero liberados. O receptor
Array uma cpia exata da fonte do array. Veja tambm CArrayObj::AddArray(const CArrayObj*).
Exemplo
//--- example for CArrayObj::AssignArray(const CArrayObj*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayObj *src=new CArrayObj;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- reset free mode flag
src.FreeMode(false);
//--- fill source array
//--- . . .
//--- assign another array
if(!array.AssignArray(src))
{

2000-2015, MetaQuotes Software Corp.

2113

Biblioteca Padro
printf("Array assigned error");
delete src;
delete array;
return;
}
//--- arrays is identical
//--- delete source array without elements
delete src;
//--- use array
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2114

Biblioteca Padro

Update
Altera o elemento no array de posio especfica.
bool Update(
int

pos,

CObject* element

// Position
// Value

Parmetros
pos
[in] Posio do elemento no array para alterar
element
[in] Elemento de novo valor
Valor do Retorno
verdadeiro se com sucesso; falso - no pode alterar o elemento.
Observao
O elemento no muda se um parmetro passar por um ponteiro invlido (isto NULO). Se ativado o
gerenciamento de memria, o espao reservado de memria liberado.
Exemplo
//--- example for CArrayObj::Update(int,CObject*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- update element
if(!array.Update(0,new CObject))
{
printf("Update error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2115

Biblioteca Padro

Shift
Desloca um item a partir de uma dada posio no array para um deslocamento determinado.
bool Shift(
int pos,

// Position

int shift

// Shift

Parmetros
pos
[in] Posio do array de elemento movido
shift
[in] O valor de deslocamento (tanto positivo como negativo).
Valor do Retorno
verdadeiro se com sucesso, falso - no pode mover o item.
Exemplo
//--- example for CArrayObj::Shift(int,int)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- shift element
if(!array.Shift(10,-5))
{
printf("Shift error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2116

Biblioteca Padro

Detach
Remove um item a partir de uma determinada posio no array.
CObject* Detach(
int pos

// Position

Parmetros
pos
[in] Posio do item apreendido no array.
Valor do Retorno
Ponteiro para a remoo de elementos em caso de sucesso. Retorna NULL se no pode remover o
elemento.
Observao
Quando removido a partir do elemento de array, no ser removido em qualquer estado do flag de
gerenciamento de memria. Ponteiro para o elemento de array retirado a partir dos elementos da
liberao aps uso.
Exemplo
//--- example for CArrayObj::Detach(int)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
CObject *object=array.Detach(0);
if(object==NULL)
{
printf("Detach error");
delete array;
return;
}
//--- use element
//--- . . .
//--- delete element
delete object;
//--- delete array

2000-2015, MetaQuotes Software Corp.

2117

Biblioteca Padro
delete array;
}

2000-2015, MetaQuotes Software Corp.

2118

Biblioteca Padro

Delete
Remove o elemento a partir de uma posio dada no array.
bool Delete(
int pos

// Position

Parmetros
pos
[in] posio remove o elemento no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover o elemento.
Observao
Se ativado o gerenciamento de memria, a memria e os itens excludos estaro isentos.
Exemplo
//--- example for CArrayObj::Delete(int)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
if(!array.Delete(0))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2119

Biblioteca Padro

DeleteRange
Exclui um grupo de elementos a partir de uma posio dada no array.
bool DeleteRange(
int from,

// Position of the first element

int to

// Position of last element

Parmetros
from
[in] Posio do primeiro remove o elemento no array.
to
[in] Posio do ltimo exclue o elemento no array.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover elementos.
Observao
Se ativado o gerenciamento de memria, a memria e os itens excludos estaro isentos.
Exemplo
//--- example for CArrayObj::DeleteRange(int,int)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- delete elements
if(!array.DeleteRange(0,10))
{
printf("Delete error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2120

Biblioteca Padro

At
Obtm o elemento a partir de uma posio dada no array.
CObject* At(
int pos

// Position

Parmetros
pos
[in] Posio do elemento desejado no array.
Valor do Retorno
O valor do elemento, se bem sucedido. Retorna NULL se houver uma tentativa de obter um
elemento de posio inexistente.
Exemplo
//--- example for CArrayObj::At(int)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add elements
//--- . . .
for(int i=0;i<array.Total();i++)
{
CObject *result=array.At(i);
if(result==NULL)
{
//--- Error reading from array
printf("Get element error");
delete array;
return;
}
//--- use element
//--- . . .
}
delete array;
}

2000-2015, MetaQuotes Software Corp.

2121

Biblioteca Padro

CompareArray
Compara o array com outro array.
bool CompareArray(
const CArrayObj* src

// Pointer to the source

) const

Parmetros
src
[in] Ponteiro para uma instncia de classe CArrayObj - a fonte de elementos de comparao.
Valor do Retorno
Verdadeiro se arrays so iguais, falso - se no.
Exemplo
//--- example for CArrayObj::CompareArray(const CArrayObj*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- create source array
CArrayObj *src=new CArrayObj;
if(src==NULL)
{
printf("Object create error");
delete array;
return;
}
//--- fill source array
//--- . . .
//--- compare with another array
int result=array.CompareArray(src);
//--- delete arrays
delete src;
delete array;
}

2000-2015, MetaQuotes Software Corp.

2122

Biblioteca Padro

InsertSort
Elemento de inseres no array ordenado
bool InsertSort(
CObject* element

// Element to insert

Parmetros
element
[in] O valor do elemento a ser inserido num array ordenado
Valor do Retorno
verdadeiro se com sucesso, falso - no pode inserir o elemento.
Observao
O elemento no adicionado ao array, se o valor for invlido para ponteiro de transmisso (tais
como NULL).
Exemplo
//--- example for CArrayObj::InsertSort(CObject*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- insert element
if(!array.InsertSort(new CObject))
{
printf("Insert error");
delete array;
return;
}
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2123

Biblioteca Padro

Pesquisa
Procura por um elemento igual a amostra em array ordenado.
int Search(
CObject* element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayObj::Search(CObject*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- create sample
CObject *sample=new CObject;
if(sample==NULL)
{
printf("Sample create error");
delete array;
return;
}
//--- set sample attributes
//--- . . .
//--- search element
if(array.Search(sample)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2124

Biblioteca Padro

SearchGreat
Procura por um elemento de mais amostras em array ordenado.
int SearchGreat(
CObject* element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayObj::SearchGreat(CObject*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- create sample
CObject *sample=new CObject;
if(sample==NULL)
{
printf("Sample create error");
delete array;
return;
}
//--- set sample attributes
//--- . . .
//--- search element
if(array.SearchGreat(sample)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2125

Biblioteca Padro

SearchLess
Procura por um elemento menor do que a amostra no array ordenado.
int SearchLess(
CObject* element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayObj:: SearchLess(CObject*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- create sample
CObject *sample=new CObject;
if(sample==NULL)
{
printf("Sample create error");
delete array;
return;
}
//--- set sample attributes
//--- . . .
//--- search element
if(array.SearchLess(sample)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2126

Biblioteca Padro

SearchGreatOrEqual
Procura por um elemento maior ou igual da amostra no array ordenado.
int SearchGreatOrEqual(
CObject* element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayObj::SearchGreatOrEqual(CObject*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- create sample
CObject *sample=new CObject;
if(sample==NULL)
{
printf("Sample create error");
delete array;
return;
}
//--- set sample attributes
//--- . . .
//--- search element
if(array.SearchGreatOrEqual(sample)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2127

Biblioteca Padro

SearchLessOrEqual
Procura por um elemento menor ou igual a amostra no array ordenado.
int SearchLessOrEqual(
CObject* element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayObj:: SearchLessOrEqual(CObject*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- create sample
CObject *sample=new CObject;
if(sample==NULL)
{
printf("Sample create error");
delete array;
return;
}
//--- set sample attributes
//--- . . .
//--- search element
if(array.SearchLessOrEqual(sample)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2128

Biblioteca Padro

SearchFirst
Localiza o primeiro elemento igual ao modelo em array ordenado.
int SearchFirst(
CObject* element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayObj::SearchFirst(CObject*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- create sample
CObject *sample=new CObject;
if(sample==NULL)
{
printf("Sample create error");
delete array;
return;
}
//--- set sample attributes
//--- . . .
//--- search element
if(array.SearchFirst(sample)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2129

Biblioteca Padro

SearchLast
Localiza o ltimo elemento igual ao modelo no array ordenado.
int SearchLast(
CObject* element

// Sample

) const

Parmetros
element
[in] O elemento de amostra para pesquisar no array.
Valor do Retorno
Se a posio do elemento foi encontrado com sucesso. Igual a -1, se o item no foi encontrado.
Exemplo
//--- example for CArrayObj:: SearchLast(CObject*)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- sort array
array.Sort();
//--- create sample
CObject *sample=new CObject;
if(sample==NULL)
{
printf("Sample create error");
delete array;
return;
}
//--- set sample attributes
//--- . . .
//--- search element
if(array.SearchLast(sample)!=-1) printf("Element found");
else

printf("Element not found");

//--- delete array


delete array;
}

2000-2015, MetaQuotes Software Corp.

2130

Biblioteca Padro

Save
Salva array de dados no arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para abertura prvia pelo arquivo de funo binria FileOpen (...).
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CArrayObj::Save(int)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
int

file_handle;

CArrayObj *array=new CArrayObj;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- add arrays elements
//--- . . .
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
delete array;
}

2000-2015, MetaQuotes Software Corp.

2131

Biblioteca Padro

Load
Array carrega dados a partir de um arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para abrir mais cedo, com a funo FileOpen (...), arquivo binrio.
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Observao
Quando l a partir do array de arquivo criado cada elemento do mtodo chamando CArrayObj ::
CreateElement (int).
Exemplo
//--- example for CArrayObj::Load(int)
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
int

file_handle;

CArrayObj *array=new CArrayObj;


//--if(array!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!array.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
delete array;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}

2000-2015, MetaQuotes Software Corp.

2132

Biblioteca Padro
//--- use arrays elements
//--- . . .
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2133

Biblioteca Padro

Type
Obtm o identificador do tipo do array.
virtual int Type() const

Valor do Retorno
Tipo de ID da matriz (por CArrayObj - 7778).
Exemplo
//--- example for CArrayObj::Type()
#include <Arrays\ArrayObj.mqh>
//--void OnStart()
{
CArrayObj *array=new CArrayObj;
//--if(array==NULL)
{
printf("Object create error");
return;
}
//--- get array type
int type=array.Type();
//--- delete array
delete array;
}

2000-2015, MetaQuotes Software Corp.

2134

Biblioteca Padro

CList
CList classe uma classe de lista dinmica de instncias da classe CObject e seus herdeiros.

Descrio
Classe CList possibilita trabalhar com uma lista de instncias de CObject e seus herdeiros. Na classe
implementada existe a possibilidade de adicionar/inserir/excluir itens na lista, ordenar a lista e
procurar na lista ordenada. Alm disto, implementa mtodos para trabalhar com o arquivo.
Existem certas sutilezas na classe CList. A classe tem um mecanismo para controlar a dinmica de
memria, por isso deve-se ter cuidado quando se trabalha com elementos da lista.
As sutilezas do mecanismo de gesto de memria so semelhantes s descritas no CArrayObj.

Declarao
class CList : public CObject

Ttulo
#include <Arrays\List.mqh>

Mtodos de classe
Atributos
FreeMode

Obtm o flag de gerenciamento de memria ao


excluir itens da lista.

FreeMode

Define o flag de gerenciamento de memria ao


excluir itens na lista

Total

Obtm o nmero de elementos na lista

IsSorted

Obtm flag da lista ordenada

SortMode

Obtm a verso da ordenao

Criar mtodos
CreateElement

Cria um novo item lista

Mtodos para adicionar


Add

Adiciona elemento para o final da lista

Insert

Elemento de inseres na lista na posio


determinada

Mtodos para excluir


DetachCurrent

Remove um item a partir da posio atual da


lista sem excluir o item "fisicamente"

DeleteCurrent

Remove o elemento a partir da posio atual na


lista

2000-2015, MetaQuotes Software Corp.

2135

Biblioteca Padro

Delete

Remove o elemento a partir de posio


determinada na lista

Clear

Remove todos os itens da lista

Navegao
IndexOf

Obtm o ndice do item da lista

GetNodeAtIndex

Obtm um item com o ndice determinado da


lista

GetFirstNode

Obtm o primeiro elemento da lista

GetPrevNode

Obtm o elemento anterior da lista

GetCurrentNode

Obtm o item atual da lista

GetNextNode

Obtm o prximo item na lista

GetLastNode

Obtm o ltimo item

Mtodos de ordenao
Sort

Ordenar lista

MoveToIndex

Move o item da lista atual para uma posio


determinada

Exchange

Altera elementos dos lugares da lista

Mtodos para comparar


CompareList

Compara a lista com outra lista

Os mtodos de pesquisa
Pesquisa

Procura por um elemento igual ao modelo de


lista ordenada

Entrada/sada
virtual Save

Salva os dados na lista de arquivos

virtual Load

Carrega os dados a partir da lista de arquivos

virtual Type

Obtm a lista do tipo identificada

2000-2015, MetaQuotes Software Corp.

2136

Biblioteca Padro

FreeMode
Obtm o flag de gerenciamento de memria ao excluir itens da lista.
bool FreeMode() const

Valor do Retorno
Flag de gerenciamento de memria .
Exemplo
//--- example for CList::FreeMode()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- get free mode flag
bool list_free_mode=list.FreeMode();
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2137

Biblioteca Padro

FreeMode
Define o flag de gerenciamento de memria ao excluir itens da lista.
void FreeMode(
bool mode

// New value

Parmetros
mode
[in] O novo valor do flag de gerenciamento de memria.
Observao
Definir o flag de gerenciamento de memria - um ponto importante no uso da classe CList. Desde
que os elementos da lista so ponteiros para objetos dinmicos, importante determinar o que
fazer com eles quando remover a partir da lista. Se o flag estiver definido, ento remove um item
da lista, o item excludo automaticamente pelo operador "delete". Se o flag no est definido,
assumido que um ponteiro para o objeto excludo ainda est em algum lugar no programa do usurio
e ser aliviado dele (do programa) ento.
Se o usurio resetar o flag de gerenciamento de memria, deve compreender a sua responsabilidade
para a remoo dos itens na lista antes da concluso do programa, porque de outra forma, a
memria liberada no ocupada pelos elementos quando eles criam um novo operador. Se o usurio
no resetar o flag de gerenciamento de memria, h um outro "recife", ou seja, grandes
quantidades de dados eventualmente poderiam at mesmo quebrar o seu terminal.
Usando ponteiros, itens da lista armazenados em algum lugar das variveis locais, aps a remoo
da lista, ir levar a um erro crtico e trava o programa do usurio. Por padro, o flag de
gerenciamento de memria est definido, ou seja, a classe da lista responsvel por liberar os
elementos de memria.
Exemplo
//--- example for CList::FreeMode(bool)
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- reset free mode flag
list.FreeMode(false);
//--- use list
//--- . . .
//--- delete list

2000-2015, MetaQuotes Software Corp.

2138

Biblioteca Padro
delete list;
}

2000-2015, MetaQuotes Software Corp.

2139

Biblioteca Padro

Total
Obtm o nmero de elementos na lista.
int Total() const

Valor do Retorno
Nmero de elementos na lista.
Exemplo
//--- example for CList::Total()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- check total
int total=list.Total();
//--- use list
//--- ...
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2140

Biblioteca Padro

IsSorted
Obtm a lista de flag ordenado.
bool IsSorted(
int mode=0

// Sorting mode

) const

Parmetros
mode=0
[in] Verso de testes para ordenao
Valor do Retorno
Flag da lista ordenada. Se a lista ordenada pela opo determinada, ento verdadeiro, caso
contrrio ser falso.
Observao
Flag da lista ordenada no pode ser alterado diretamente. Flag definido pelo Sort (int) e reseta
qualquer mtodo para adicionar/inserir.
Exemplo
//--- example for CList::IsSorted()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- check sorted
if(list.IsSorted(0))
{
//--- use methods for sorted list
//--- ...
}
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2141

Biblioteca Padro

SortMode
Obtm a verso de ordenao.
int SortMode() const

Valor do Retorno
Opo de ordenao, ou -1 se a lista no ordenada.
Exemplo
//--- example for CList::SortMode()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- check sort mode
int sort_mode=list.SortMode();
//--- use list
//--- ...
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2142

Biblioteca Padro

CreateElement
Cria um novo item lista.
CObject* CreateElement()

Valor do Retorno
Se com sucesso, retorna ponteiro para o elemento recm criado. Retorna NULL se no for possvel
criar o elemento.
Observao
Mtodo CreateElement () na classe CList sempre retorna NULL e no executa nenhuma ao. Se
necessrio, em uma classe derivada, o mtodo CreateElement () deve ser implementado.
Exemplo
//--- example for CList::CreateElement(int)
#include <Arrays\List.mqh>
//--void OnStart()
{
int

size=100;

CList *list=new CList;


//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- fill list
for(int i=0;i<size;i++)
{
CObject *object=list.CreateElement();
if(object==NULL)
{
printf("Element create error");
delete list;
return;
}
list.Add(object);
}
//--- use list
//--- . . .
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2143

Biblioteca Padro

Add
Adiciona um elemento para o final da lista.
int Add(
CObject* element

// Element to add

Parmetros
element
[in] O valor do elemento para adicionar lista.
Valor do Retorno
Se for bem sucedido, retorna o ndice do elemento adicionado, ou -1 em caso de erro.
Observao
O elemento no adicionado lista caso o parmetro no passe ponteiro vlido (isto , NULL).
Exemplo
//--- example for CList::Add(Cobject*)
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- add 100 elements
for(int i=0;i<100;i++)
{
if(list.Add(new CObject)==-1)
{
printf("Element addition error");
delete list;
return;
}
}
//--- use list
//--- . . .
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2144

Biblioteca Padro

Insert
Elemento de inseres na lista na posio determinada.
int Insert(
CObject* element,

// Element to insert

int

// Position

pos

Parmetros
element
[in] o valor do elemento a inserir na lista
pos
[in] Posio na lista para inserir
Valor do Retorno
Se com sucesso, retorna o ndice do elemento inserido, ou -1 em caso de erro.
Observao
O elemento no adicionado lista caso o parmetro no passe ponteiro vlido (isto , NULL).
Exemplo
//--- example for CList::Insert(CObject*,int)
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- insert 100 elements
for(int i=0;i<100;i++)
{
if(list.Insert(new CObject,0)==-1)
{
printf("Element insert error");
delete list;
return;
}
}
//--- use list
//--- . . .
//--- delete list

2000-2015, MetaQuotes Software Corp.

2145

Biblioteca Padro
delete list;
}

2000-2015, MetaQuotes Software Corp.

2146

Biblioteca Padro

DetachCurrent
Remove um item a partir da posio atual da lista sem excluir o item "fisicamente".
CObject* DetachCurrent()

Valor do Retorno
Ponteiro para a remoo de elementos em caso de sucesso. Retorna NULL se no pode remover o
elemento.
Observao
Quando removido da lista, o item no removido em qualquer estado do flag de gerenciamento de
memria. O Ponteiro retira o elemento de liberao da lista de ingredientes aps o uso.
Exemplo
//--- example for CList::DetachCurrent()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- add list elements
//--- . . .
CObject *object=list.DetachCurrent();
if(object==NULL)
{
printf("Detach error");
delete list;
return;
}
//--- use element
//--- . . .
//--- delete element
delete object;
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2147

Biblioteca Padro

DeleteCurrent
Remove o elemento a partir da posio atual na lista.
bool DeleteCurrent()

Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover o elemento.
Observao
Se ativado o gerenciamento de memria e a memria, ento a remoo do elemento liberada.
Exemplo
//--- example for CList::DeleteCurrent()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- add list elements
//--- . . .
if(!list.DeleteCurrent())
{
printf("Delete error");
delete list;
return;
}
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2148

Biblioteca Padro

Delete
Remove o elemento a partir da posio dada na lista.
bool Delete(
int pos

// Position

Parmetros
pos
[in] posio remove o elemento na lista.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode remover o elemento.
Observao
Se ativado o gerenciamento de memria e a memria, ento a remoo do elemento liberada.
Exemplo
//--- example for CList::Delete(int)
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- add list elements
//--- . . .
if(!list.Delete(0))
{
printf("Delete error");
delete list;
return;
}
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2149

Biblioteca Padro

Clear
Remove todos os elementos da lista.
void Clear()

Observao
Se ativado o gerenciamento de memria, a memria e os itens excludos estaro isentos.
Exemplo
//--- example for CList::Clear()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- add list elements
//--- . . .
//--- clear list
list.Clear();
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2150

Biblioteca Padro

IndexOf
Obtm o ndice do item da lista.
int IndexOf(
CObject* element

// Pointer to the element

Parmetros
element
[in] Ponteiro para o item da lista.
Valor do Retorno
Item de ndice na lista, ou -1.
Exemplo
//--- example for CList::IndexOf(CObject*)
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
CObject *object=new CObject;
if(object==NULL)
{
printf("Element create error");
delete list;
return;
}
if(list.Add(object))
{
int pos=list.IndexOf(object);
}
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2151

Biblioteca Padro

GetNodeAtIndex
Obtm um item com o ndice determinado da lista.
CObject* GetNodeAtIndex(
int pos

// position

Parmetros
pos
[in] ndice do item na lista.
Valor de retorno
Ponteiro para o item em caso de sucesso. NULL, se no pode obter um ponteiro.
Exemplo
//--- example for CList::GetNodeAtIndex(int)
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- add list elements
//--- . . .
CObject *object=list.GetNodeAtIndex(10);
if(object==NULL)
{
printf("Get node error");
delete list;
return;
}
//--- use element
//--- . . .
//--- do not delete element
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2152

Biblioteca Padro

GetFirstNode
Obtm o primeiro elemento da lista.
CObject* GetFirstNode()

Valor do Retorno
Ponteiro para o primeiro item em caso de sucesso. NULL se no pode obter um ponteiro.
Exemplo
//--- example for CList::GetFirstNode()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- add list elements
//--- . . .
CObject *object=list.GetFirstNode();
if(object==NULL)
{
printf("Get node error");
delete list;
return;
}
//--- use element
//--- . . .
//--- do not delete element
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2153

Biblioteca Padro

GetPrevNode
Obtm o elemento anterior da lista.
CObject* GetPrevNode()

Valor do Retorno
Ponteiro para o elemento anterior em caso de sucesso. NULL, se no pode obter um ponteiro.
Exemplo
//--- example for CList::GetPrevNode()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- add list elements
//--- . . .
CObject *object=list.GetPrevNode();
if(object==NULL)
{
printf("Get node error");
delete list;
return;
}
//--- use element
//--- . . .
//--- do not delete element
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2154

Biblioteca Padro

GetCurrentNode
Obtm o item atual da lista.
CObject* GetCurrentNode()

Valor do Retorno
Se com sucesso, retorna o ponteiro para o item atual. Retorna NULL se no pode obter um ponteiro.
Exemplo
//--- example for CList::GetCurrentNode()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- add list elements
//--- . . .
CObject *object=list.GetCurrentNode();
if(object==NULL)
{
printf("Get node error");
delete list;
return;
}
//--- use element
//--- . . .
//--- do not delete element
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2155

Biblioteca Padro

GetNextNode
Obtm o prximo item na lista.
CObject* GetNextNode()

Valor do Retorno
Se com sucesso, retorna o ponteiro para o prximo item. Retorna NULL se no pode obter um
ponteiro.
Exemplo
//--- example for CList::GetNextNode()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- add list elements
//--- . . .
CObject *object=list.GetNextNode();
if(object==NULL)
{
printf("Get node error");
delete list;
return;
}
//--- use element
//--- . . .
//--- do not delete element
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2156

Biblioteca Padro

GetLastNode
Obtm o ltimo elemento da lista.
CObject* GetLastNode()

Valor do Retorno
Ponteiro para o ltimo elemento em caso de sucesso. NULL se no pode obter um ponteiro.
Exemplo
//--- example for CList::GetLastNode()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- add list elements
//--- . . .
CObject *object=list.GetLastNode();
if(object==NULL)
{
printf("Get node error");
delete list;
return;
}
//--- use element
//--- . . .
//--- do not delete element
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2157

Biblioteca Padro

Sort
Ordena uma lista.
void Sort(
int mode

// Sorting mode

Parmetros
mode
[in] Modo de ordenao.
Valor do Retorno
No tem.
Observao
A ordenao da lista sempre em ordem crescente.
Exemplo
//--- example for CList::Sort(int)
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- sorting by mode 0
list.Sort(0);
//--- use list
//--- ...
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2158

Biblioteca Padro

MoveToIndex
Move o item da lista atual para a posio determinada.
bool MoveToIndex(
int pos

// Position

Parmetros
pos
[in] Posio na lista para mover.
Valor do Retorno
verdadeiro se com sucesso, falso - no pode mover o item.
Exemplo
//--- example for CList::MoveToIndex(int)
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- move current node to begin
list.MoveToIndex(0);
//--- use list
//--- . . .
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2159

Biblioteca Padro

Exchange
Muda elementos dos lugares da lista.
bool Exchange(
CObject* node1,

// List item

CObject* node2

// List item

Parmetros
node1
[in] Lista de itens
node2
[in] Lista de itens
Valor do Retorno
verdadeiro se com sucesso. Falso se no pode mudar os elementos em alguns lugares.
Exemplo
//--- example for CList::Exchange(CObject*,CObject*)
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- exchange
list.Exchange(list.GetFirstNode(),list.GetLastNode());
//--- use list
//--- . . .
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2160

Biblioteca Padro

CompareList
Compara a lista com outra lista.
bool CompareList(
CList* list

// With whom we compare

Parmetros
list
[in] Um ponteiro para uma instncia de classe CList - elementos fontes para comparao.
Valor do Retorno
verdadeiro se as listas so iguais, falso - se no.
Exemplo
//--- example for CList::CompareList(const CList*)
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- create source list
CList *src=new CList;
if(src==NULL)
{
printf("Object create error");
delete list;
return;
}
//--- fill source list
//--- . . .
//--- compare with another list
bool result=list.CompareList(src);
//--- delete lists
delete src;
delete list;
}

2000-2015, MetaQuotes Software Corp.

2161

Biblioteca Padro

Pesquisa
Procura por um elemento igual ao modelo na lista ordenada.
CObject* Search(
CObject* element

// Sample

Parmetros
element
[in] Amostra de clula para procurar na lista.
Valor do Retorno
Ponteiro para o item encontrado em caso de sucesso. NULL, se o item no foi encontrado.
Exemplo
//--- example for CList::Search(CObject*)
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- add lists elements
//--- . . .
//--- sort list
list.Sort(0);
//--- create sample
CObject *sample=new CObject;
if(sample==NULL)
{
printf("Sample create error");
delete list;
return;
}
//--- set sample attributes
//--- . . .
//--- search element
if(list.Search(sample)!=NULL) printf("Element found");
else

printf("Element not found");

//--- delete list


delete list;
}

2000-2015, MetaQuotes Software Corp.

2162

Biblioteca Padro

Save
Salva os dados na lista de arquivos.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador previamente aberto usando a funo do arquivo FileOpen (...).
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CList::Save(int)
#include <Arrays\List.mqh>
//--void OnStart()
{
int

file_handle;

CList *list=new CList;


//--if(list!=NULL)
{
printf("Object create error");
return;
}
//--- add lists elements
//--- . . .
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!list.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
delete list;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- delete list
delete list;

2000-2015, MetaQuotes Software Corp.

2163

Biblioteca Padro
}

2000-2015, MetaQuotes Software Corp.

2164

Biblioteca Padro

Load
Carrega a lista de dados de um arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador aberto anteriormente, com a funo FileOpen (...), binria
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Observao
Quando l a partir dos itens da lista de arquivo para criar, cada elemento do mtodo chamado
CList :: CreateElement ().
Exemplo
//--- example for CLoad::Load(int)
#include <Arrays\List.mqh>
//--void OnStart()
{
int

file_handle;

CList *list=new CList;


//--if(list!=NULL)
{
printf("Object create error");
return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!list.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
delete list;
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}

2000-2015, MetaQuotes Software Corp.

2165

Biblioteca Padro
//--- use list elements
//--- . . .
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2166

Biblioteca Padro

Type
Obtm a lista do tipo identificada.
virtual int Type()

Valor do Retorno
Lista do tipo identificada (para CList - 7779).
Exemplo
//--- example for CList::Type()
#include <Arrays\List.mqh>
//--void OnStart()
{
CList *list=new CList;
//--if(list==NULL)
{
printf("Object create error");
return;
}
//--- get list type
int type=list.Type();
//--- delete list
delete list;
}

2000-2015, MetaQuotes Software Corp.

2167

Biblioteca Padro

CTreeNode
CTreeNode uma classe de n da rvore binria CTree.

Descrio
Classe CTreeNode possibilita trabalhar com os ns da rvore binria Ctree. Opes de navegao
atravs da rvore implementado na classe. Tambm os mtodos de trabalho com um arquivo so
implementados.

Declarao
class CTreeNode : public CObject

Ttulo
#include <Arrays\TreeNode.mqh>

Mtodos de classe
Atributos
Owner

Retorna/define o ponteiro do n proprietrio

Left

Retorna/define o ponteiro do n esquerdo

Right

Retorna/define o ponteiro do n direito

Balance

Obtm o equilbrio do n

BalanceL

Obtm o equilbrio do sub-ramo esquerdo do n

BalanceR

Obtm o equilbrio da sub-ramo direito do n

Criao de um novo elemento


CreateSample

Cria uma nova instncia de n

Comparao
RefreshBalance

Recalcula o equilbrio do n

Pesquisa
GetNext

Obtm o ponteiro do prximo n

Entrada/sada
SaveNode

Salva os dados do n para um arquivo

LoadNode

Transfere os dados do n de um arquivo

virtual Type

Obtm o identificador do tipo de n

As classes derivadas:
CTree

2000-2015, MetaQuotes Software Corp.

2168

Biblioteca Padro
Os descendentes das rvores da classe CTreeNode obtm aplicao prtica.
Um descendente de classe CTreeNode deve ter mtodos predefinidos: CreateSample que cria uma
nova instncia de descendente da classe CTreeNode, Compare que compara os valores dos camposchave do descendente da classe CTreeNode, Type (Se for necessrio identificar um n), SaveNode e
LoadNode (Se for necessrio trabalhar com um arquivo).
Vamos considerar e exemplo de um descendente da classe Ctree.
//+------------------------------------------------------------------+
//|

MyTreeNode.mq5 |

//|

Copyright 2010, MetaQuotes Software Corp. |

//|

http://www.metaquotes.net/ |

//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

//--#include <Arrays\TreeNode.mqh>
//+------------------------------------------------------------------+
//| Describe classderived from CTreeNode.

//+------------------------------------------------------------------+
//| Class CMyTreeNode.

//| Purpose: Class of element of a binary tree.

//|

Descendant of class CTreeNode.

//+------------------------------------------------------------------+
class CMyTreeNode : public CTreeNode
{
protected:
//--- user's data
long

m_long;

// key field of type long

double

m_double;

// custom variable of type double

string

m_string;

// custom variable of type string

datetime

m_datetime;

// custom variable of type datetime

public:
CMyTreeNode();
//--- methods of accessing these user's data
long

GetLong(void)

{ return(m_long); }

void

SetLong(long value)

{ m_long=value;

double

GetDouble(void)

{ return(m_double); }

void

SetDouble(double value)

{ m_double=value;

string

GetString(void)

{ return(m_string); }

void

SetString(string value)

{ m_string=value;

datetime

GetDateTime(void)

{ return(m_datetime); }

void

SetDateTime(datetime value)

{ m_datetime=value;

//--- methods of working with files


virtual bool

Save(int file_handle);

virtual bool

Load(int file_handle);

protected:

2000-2015, MetaQuotes Software Corp.

}
}
}
}

2169

Biblioteca Padro
virtual int

Compare(const CObject *node,int mode);

//--- methods of creating class instances


virtual CTreeNode* CreateSample();
};
//+------------------------------------------------------------------+
//| CMyTreeNode class constructor.

//| INPUT:

none.

//| OUTPUT: none.

//| REMARK: none.

//+------------------------------------------------------------------+
void CMyTreeNode::CMyTreeNode()
{
//--- initialization of user's data
m_long

=0;

m_double

=0.0;

m_string

="";

m_datetime

=0;

}
//+------------------------------------------------------------------+
//| Comparison with another three node by the specified algorithm.

//| INPUT:

node - array element to compare,

//|

mode - identifier of comparison algorithm.

//| OUTPUT: result of comparison (>0,0,<0).

//| REMARK: none.

//+------------------------------------------------------------------+
int CMyTreeNode::Compare(const CObject *node,int mode)
{
//--- parameter mode is ignored, because tree construction algorithm is the only one
int res=0;
//--- explicit type casting
CMyTreeNode *n=node;
res=(int)(m_long-n.m_long);
//--return(res);
}
//+------------------------------------------------------------------+
//| Creation of a new class instance.

//| INPUT:

none.

//| OUTPUT: pointer to a new instance of class CMyTreeNode.

//| REMARK: none.

//+------------------------------------------------------------------+
CTreeNode* CMyTreeNode::CreateSample()
{
CMyTreeNode *result=new CMyTreeNode;
//--return(result);
}
//+------------------------------------------------------------------+
//| Write tree node data to a file.

2000-2015, MetaQuotes Software Corp.

2170

Biblioteca Padro
//| INPUT:

file_handle -handle of a file pre-opened for writing.

//| OUTPUT: true if OK, otherwise false.

//| REMARK: none.

//+------------------------------------------------------------------+
bool CMyTreeNode::Save(int file_handle)
{
uint i=0,len;
//--- checks
if(file_handle<0) return(false);
//--- writing user data
//--- writing custom variable of type long
if(FileWriteLong(file_handle,m_long)!=sizeof(long))

return(false);

//--- writing custom variable of type double


if(FileWriteDouble(file_handle,m_double)!=sizeof(double))

return(false);

//--- writing custom variable of type string


len=StringLen(m_string);
//--- write string length
if(FileWriteInteger(file_handle,len,INT_VALUE)!=INT_VALUE)

return(false);

//--- write the string


if(len!=0 && FileWriteString(file_handle,m_string,len)!=len) return(false);
//--- writing custom variable of type datetime
if(FileWriteLong(file_handle,m_datetime)!=sizeof(long))

return(false);

//--return(true);
}
//+------------------------------------------------------------------+
//| Read tree node data from a file.

//| INPUT:

file_handle -handle of a file pre-opened for reading.

//| OUTPUT: true if OK, otherwise false.

//| REMARK: none.

//+------------------------------------------------------------------+
bool CMyTreeNode::Load(int file_handle)
{
uint i=0,len;
//--- checks
if(file_handle<0) return(false);
//--- reading
if(FileIsEnding(file_handle)) return(false);
//--- reading custom variable of type char
//--- reading custom variable of type long
m_long=FileReadLong(file_handle);
//--- reading custom variable of type double
m_double=FileReadDouble(file_handle);
//--- reading custom variable of type string
//--- read the string length
len=FileReadInteger(file_handle,INT_VALUE);
//--- read the string
if(len!=0) m_string=FileReadString(file_handle,len);
else

m_string="";

2000-2015, MetaQuotes Software Corp.

2171

Biblioteca Padro
//--- reading custom variable of type datetime
m_datetime=FileReadLong(file_handle);
//--return(true);
}

2000-2015, MetaQuotes Software Corp.

2172

Biblioteca Padro

Owner
Obtm o ponteiro do n proprietrio.
CTreeNode* Owner()

Valor do Retorno
Ponteiro do n-proprietrio.

Owner
Define o ponteiro do n proprietrio.
void Owner(
CTreeNode* node

// node

Parmetros
node
[in] O novo valor do ponteiro do n proprietrio.
Valor do Retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

2173

Biblioteca Padro

Left
Obtm o ponteiro do n esquerdo.
CTreeNode* Left()

Valor do Retorno
Ponteiro do n esquerdo.

Left
Define o ponteiro do n esquerdo.
void Left(
CTreeNode* node

// node

Parmetros
node
[in] O novo valor do ponteiro do n esquerdo.
Valor do Retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

2174

Biblioteca Padro

Right
Obtm o ponteiro do n direito.
CTreeNode* Right()

Valor do Retorno
O ponteiro do n direito.

Right
Define o ponteiro do n direito.
void Right(
CTreeNode* node

// node

Parmetros
node
[in] O novo valor do ponteiro do n direito.
Valor do Retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

2175

Biblioteca Padro

Balance
Obtm o equilbrio do n.
int Balance() const

Valor do Retorno
Equilbrio do n.

2000-2015, MetaQuotes Software Corp.

2176

Biblioteca Padro

BalanceL
Obtm o equilbrio do sub-ramo esquerdo do n.
int BalanceL() const

Valor do Retorno
Equilbrio do sub-ramo esquerdo do n.

2000-2015, MetaQuotes Software Corp.

2177

Biblioteca Padro

BalanceR
Obtm o equilbrio da sub-ramo direito do n.
int BalanceR() const

Valor do Retorno
Equilbrio do sub-ramo direito do n.

2000-2015, MetaQuotes Software Corp.

2178

Biblioteca Padro

CreateSample
Cria uma nova amostra do n.
virtual CTreeNode* CreateSample()

Valor do Retorno
Ponteiro para a nova amostra do n ou NULL.

2000-2015, MetaQuotes Software Corp.

2179

Biblioteca Padro

RefreshBalance
Recalcula o equilbrio do n.
int RefreshBalance()

Valor do Retorno
Equilbrio do n.

2000-2015, MetaQuotes Software Corp.

2180

Biblioteca Padro

GetNext
Obtm o ponteiro do prximo n.
CTreeNode* GetNext(
CTreeNode* node

// node

Parmetros
node
[in] N do incio da busca.
Valor do Retorno
Ponteiro do prximo n.

2000-2015, MetaQuotes Software Corp.

2181

Biblioteca Padro

SaveNode
Escreve dados do n num arquivo.
bool SaveNode(
int file_handle

// handle

Parmetros
file_handle
[in] Manipulador de um arquivo binrio que foi aberto anteriormente para escrever.
Valor do Retorno
verdadeiro em caso de sucesso, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

2182

Biblioteca Padro

LoadNode
L dados do n de um arquivo.
bool LoadNode(
int

file_handle,

CTreeNode* main

// handle
// node

Parmetros
file_handle
[in] Manipulador de um arquivo binrio que foi aberto anteriormente para leitura.
main
[in] N para dados.
Valor do Retorno
verdadeiro em caso de sucesso, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

2183

Biblioteca Padro

Type
Obtm o identificador do tipo do n.
virtual int Type() const

Valor do Retorno
Identificador do tipo do n.

2000-2015, MetaQuotes Software Corp.

2184

Biblioteca Padro

CTree
Classe CTree uma classe da rvore binria das amostras de classe CTreeNode e seus descendentes.

Descrio
Classe CTree possibilita o trabalho com uma rvore binria de classe CTreeNode e seus descendentes.
Opes de adicionar/inserir/excluir elementos e pesquisar numa rvore so implementados na classe.
Alm disso, mtodos de trabalho com um arquivo so implementados.
Note que o mecanismo de gerenciamento de memria dinmica no est implementado na classe
CTree (como distinto das classe CList e CArrayObj). Todos ns da rvore so excludos com a
liberao de memria.

Declarao
class CTree : public CTreeNode

Ttulo
#include <Arrays\Tree.mqh>

Mtodos de classe
Atributos
Root

Obtm um n da raiz da rvore

Criao de um novo elemento


CreateElement

Cria uma nova instncia de n

Preenchimento
Insert

Adiciona um n a uma rvore

Eliminao
Detach

Destaca um n determinado numa rvore

Delete

Exclui um n determinado numa rvore

Clear

Exclu todos os ns da rvore

Pesquisa
Find

Procura por um n numa rvore pela amostra

Entrada/sada
virtual Save

Salva todos os dados da rvore para um arquivo

virtual Load

Downloads de dados da rvore de um arquivo

virtual Type

Obtm identificador do tipo de rvore

rvores da descendncia da classe CTreeNode - descendentes de classe CTree obtm a aplicao

2000-2015, MetaQuotes Software Corp.

2185

Biblioteca Padro
prtica.
Descendente de classe CTree deve ter um mtodo predefinido CreateElement que cria uma nova
amostra de classe descendente CTreeNode.
Vamos considerar um exemplo da descendncia da classe CTree.
//+------------------------------------------------------------------+
//|

MyTree.mq5 |

//|

Copyright 2010, MetaQuotes Software Corp. |

//|

http://www.metaquotes.net/ |

//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link

"https://www.mql5.com"

//--#include <Arrays\Tree.mqh>
#include "MyTreeNode.mqh"
//--input int extCountedNodes = 100;
//+------------------------------------------------------------------+
//| Describe class CMyTree derived from CTree.

//+------------------------------------------------------------------+
//| Class CMyTree.

//| Purpose: Construction and navigation of a binary search tree.

//+------------------------------------------------------------------+
class CMyTree : public CTree
{
public:
//--- methods of search on the tree by custom data
CMyTreeNode*

FindByLong(long find_long);

//--- method of creation of the tree element


virtual CTreeNode *CreateElement();
};
//--CMyTree MyTree;
//+------------------------------------------------------------------+
//| Creation of a new tree node.

//| INPUT:

none.

//| OUTPUT: pointer to the new tree node of OK, or NULL.

//| REMARK: none.

//+------------------------------------------------------------------+
CTreeNode *CMyTree::CreateElement()
{
CMyTreeNode *node=new CMyTreeNode;
//--return(node);
}
//+------------------------------------------------------------------+
//| Search of element in a list by value m_long.

2000-2015, MetaQuotes Software Corp.

2186

Biblioteca Padro
//| INPUT:

find_long - searched value.

//| OUTPUT: pointer of a found list element, or NULL.

//| REMARK: none.

//+------------------------------------------------------------------+
CMyTreeNode* CMyTree::FindByLong(long find_long)
{
CMyTreeNode *res=NULL;
CMyTreeNode *node;
//--- create a tree node to pass the search parameter
node=new CMyTreeNode;
if(node==NULL) return(NULL);
node.SetLong(find_long);
//--res=Find(node);
delete node;
//--return(res);
}
//+------------------------------------------------------------------+
//| script "testing of class CMyTree"

//+------------------------------------------------------------------+
//---

array for string initialization

string str_array[11]={"p","oo","iii","uuuu","yyyyy","ttttt","rrrr","eee","ww","q","999"};
//--int OnStart() export
{
int

i;

uint

pos;

int

beg_time,end_time;

CMyTreeNode *node; //--- temporary pointer to the sample of class CMyTreeNode


//--printf("Start test %s.",__FILE__);
//--- Fill out MyTree with samples of class MyTreeNode in the amount of extCountedNodes.
beg_time=GetTickCount();
for(i=0;i<extCountedNodes;i++)
{
node=MyTree.CreateElement();
if(node==NULL)
{
//--- emergency exit
printf("%s (%4d): create error",__FILE__,__LINE__);
return(__LINE__);
}
NodeSetData(node,i);
node.SetLong(i);
MyTree.Insert(node);
}
end_time=GetTickCount();
printf("Filling time of MyTree is %d ms.",end_time-beg_time);

2000-2015, MetaQuotes Software Corp.

2187

Biblioteca Padro
//--- Create a temporary tree TmpMyTree.
CMyTree TmpMyTree;
//--- Detach 50% of tree elements (all even)
//--- and add them to the temporary tree TmpMyTree.
beg_time=GetTickCount();
for(i=0;i<extCountedNodes;i+=2)
{
node=MyTree.FindByLong(i);
if(node!=NULL)
if(MyTree.Detach(node)) TmpMyTree.Insert(node);
}
end_time=GetTickCount();

printf("Deletion time of %d elements from MyTree is %d ms.",extCountedNodes/2,end_time-beg_time)


//--- Return the detached
node=TmpMyTree.Root();
while(node!=NULL)
{
if(TmpMyTree.Detach(node)) MyTree.Insert(node);
node=TmpMyTree.Root();
}
//--- Check work of method Save(int file_handle);
int file_handle;
file_handle=FileOpen("MyTree.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!MyTree.Save(file_handle))
{
//--- error writing to a file
//--- emergency exit
printf("%s: Error %d in %d!",__FILE__,GetLastError(),__LINE__);
//--- close file before leaving!!!
FileClose(file_handle);
return(__LINE__);
}
FileClose(file_handle);
}
//--- Check work of method Load(int file_handle);
file_handle=FileOpen("MyTree.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!TmpMyTree.Load(file_handle))
{
//--- error reading from file
//--- emergency exit
printf("%s: Error %d in %d!",__FILE__,GetLastError(),__LINE__);
//--- close file before leaving!!!
FileClose(file_handle);
return(__LINE__);
}

2000-2015, MetaQuotes Software Corp.

2188

Biblioteca Padro
FileClose(file_handle);
}
//--MyTree.Clear();
TmpMyTree.Clear();
//--printf("End test %s. OK!",__FILE__);
//--return(0);
}
//+------------------------------------------------------------------+
//| Function of output of node contents to journal

//+------------------------------------------------------------------+
void NodeToLog(CMyTreeNode *node)
{
printf("

%I64d,%f,'%s','%s'",
node.GetLong(),node.GetDouble(),
node.GetString(),TimeToString(node.GetDateTime()));

}
//+------------------------------------------------------------------+
//| Function of "filling" of node with random values

//+------------------------------------------------------------------+
void NodeSetData(CMyTreeNode *node,int mode)
{
if(mode%2==0)
{
node.SetLong(mode*MathRand());
node.SetDouble(MathPow(2.02,mode)*MathRand());
}
else
{
node.SetLong(mode*(long)(-1)*MathRand());
node.SetDouble(-MathPow(2.02,mode)*MathRand());
}
node.SetString(str_array[mode%10]);
node.SetDateTime(10000*mode);
}

2000-2015, MetaQuotes Software Corp.

2189

Biblioteca Padro

Root
Obtm o n raiz da rvore.
CTreeNode* Root() const

Valor do Retorno
Ponteiro do n raiz da rvore.

2000-2015, MetaQuotes Software Corp.

2190

Biblioteca Padro

CreateElement
Cria uma nova instncia do n.
virtual CTreeNode* CreateElement()

Valor do Retorno
Ponteiro da nova instncia do n ou NULL.

2000-2015, MetaQuotes Software Corp.

2191

Biblioteca Padro

Insert
Adiciona um n a uma rvore.
CTreeNode* Insert(
CTreeNode* new_node

// node

Parmetros
new_node
[in] ponteiro de um n para inserir numa rvore.
Valor do Retorno
Ponteiro do n proprietrio ou NULL.

2000-2015, MetaQuotes Software Corp.

2192

Biblioteca Padro

Detach
Destaca um n determinado a partir de uma rvore.
bool Detach(
CTreeNode* node

// node

Parmetros
node
[in] Ponteiro do n para destacar.
Valor do Retorno
verdadeiro em caso de sucesso, caso contrrio falso.
Observao
Aps destacar, o ponteiro do n no liberado. A rvore fica equilibrada.

2000-2015, MetaQuotes Software Corp.

2193

Biblioteca Padro

Delete
Exclui um n determinado de uma rvore.
bool Delete(
CTreeNode* node

// node

Parmetros
node
[in] ponteiro do n a ser excludo.
Valor do Retorno
verdadeiro em caso de sucesso, caso contrrio falso.
Observao
Aps a excluso, um ponteiro de n liberado. A rvore fica equilibrada.

2000-2015, MetaQuotes Software Corp.

2194

Biblioteca Padro

Clear
Exclui todos os ns de uma rvore.
void Clear()

Valor do Retorno
Nenhum.
Observao
Aps a excluso, ponteiros de n so liberados.

2000-2015, MetaQuotes Software Corp.

2195

Biblioteca Padro

Find
Procura por um n numa rvore por exemplo.
CTreeNode* Find(
CTreeNode* node

// node

Parmetros
node
[in] N que contm amostra de busca de dados.
Valor do Retorno
Ponteiro do n encontrado ou NULL.

2000-2015, MetaQuotes Software Corp.

2196

Biblioteca Padro

Save
Grava dados da rvore num arquivo.
virtual bool Save(
int file_handle

// handle

Parmetros
file_handle
[in] Manipulador de um arquivo binrio que foi aberto anteriormente para escrever.
Valor do Retorno
verdadeiro em caso de sucesso, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

2197

Biblioteca Padro

Load
L os dados de rvore num arquivo.
virtual bool Load(
int file_handle

// handle

Parmetros
file_handle
[in] Manipulador de um arquivo binrio que foi aberto anteriormente para leitura.
Valor do Retorno
verdadeiro em caso de sucesso, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

2198

Biblioteca Padro

Type
Obtm o identificador do tipo de rvore.
virtual int Type() const

Valor do Retorno
Identificador do tipo de rvore.

2000-2015, MetaQuotes Software Corp.

2199

Biblioteca Padro

Objetos Grficos
Esta seo contm os detalhes tcnicos de como trabalhar com classes de objetos grficos e uma
descrio dos componentes relevantes da Biblioteca Padro MQL5.
O uso de classes de objetos grficos vai economizar tempo ao criar programas personalizados (scripts,
expert).
Biblioteca Padro MQL5 (em termos de objetos grficos) colocado no diretrio de trabalho do
terminal na pasta Include\ChartObjects.
Class/Group

Descrio

Base class for graphical object CChartObject

Classe base de um objeto grfico

Lines

Classe do grupo "Lines"

Canais

Classe do grupo "Channels"

Gann Tools

Classe do grupo "Gann"

Fibonacci

Classe no grupo "Fibonacci"

Elliott Tools

Classe no grupo "Elliott"

Shapes

Classe no grupo "Shapes"

Arrows

Classe do grupo "Arrows"

Controls

Classe do grupo "Controls"

2000-2015, MetaQuotes Software Corp.

2200

Biblioteca Padro

CChartObject
CChartObject uma classe base de objetos grficos de tipo grfico da biblioteca MQL5 padro.

Descrio
A classe CChartObject proporciona o acesso simplificado para todos os seus descendentes para
funes API MQL5.

Declarao
class CChartObject : public CObject

Ttulo
#include <ChartObjects\ChartObject.mqh>

Mtodos de classe
Atributos
ChartId

Obtm a ID que pertence a um grfico

Window

Obtm o nmero de janelas do grfico

Name

obtm/define o nome de um objeto grfico

NumPoints

Obtm o nmero de pontos de ancoragem

Assign
Attach

Vincula um grfico

SetPoint

Define o ponto de ancoragem

Delete
Delete

Exclui um grfico

Detach

Destacar um grfico

Shift
ShiftObject

O movimento relativo do objeto

ShiftPoint

O movimento relativo do ponto do objeto

Propriedades do objeto
Time

Obtm/define as coordenadas de tempo do


ponto de objeto

Price

Obtm/define a coordenada do preo do ponto


de objeto

Color

obtm/define a cor do objeto

Style

Obtm/define o estilo de linha do objeto

2000-2015, MetaQuotes Software Corp.

2201

Biblioteca Padro

Width

Obtm/define a largura do objeto de linha

BackGround

Obtm/define o flag desenhando o objeto em


segundo plano

Selected

Obtm/define o flag "selecionada" de um


objeto grfico

Selectable

Obtm/define o flag selecionando o objeto

Descrio

Obtm/define o texto do objeto

Tooltip

Obtm/define a dica do objeto

Timeframes

Obtm/define a mscara
visualizao do objeto

Z_Order

Obtm/define a prioridade de clicar num


grfico

CreateTime

Obtm a criao do objeto tempo

dos

flags

para

Nveis de propriedades do objeto


LevelsCount

Obtm/define o nmero de nveis de objeto

LevelColor

Obtm/define a cor do nvel de linha

LevelStyle

Obtm/define o nivel de estilo de linha

LevelWidth

Obtm/define a largura do nvel de linha

LevelValue

Obtm/define o nvel

LevelDescription

Obtm/define o nvel do texto

Acesso a funes API MQL5


GetInteger

Obtm o valor das propriedades de objetos

SetInteger

Define as propriedades do objeto

GetDouble

Obtm o valor das propriedades de objetos

SetDouble

Define as propriedades do objeto

GetString

Obtm o valor das propriedades de objetos

SetString

Define as propriedades do objeto

Entrada/sada
virtual Save

Mtodo de entrada virtual no arquivo

virtual Load

Mtodo virtual de leitura a partir de um arquivo

virtual Type

Mtodo virtual de identificao

As classes derivadas:
CChartObjectArrow
CChartObjectBitmap

2000-2015, MetaQuotes Software Corp.

2202

Biblioteca Padro
CChartObjectBmpLabel
CChartObjectCycles
CChartObjectElliottWave3
CChartObjectEllipse
CChartObjectFiboArc
CChartObjectFiboFan
CChartObjectFiboTimes
CChartObjectHLine
CChartObjectRectangle
CChartObjectSubChart
CChartObjectText
CChartObjectTrend
CChartObjectTriangle
CChartObjectVLine

2000-2015, MetaQuotes Software Corp.

2203

Biblioteca Padro

ChartId
Obtm a ID do grfico pertencente a um objeto grfico.
long ChartId() const

Valor do Retorno
A Id do grfico onde o objeto grfico est localizado. Se o objeto no for encontrado, ele retorna -1.
Exemplo
//--- example for CChartObject::ChartId
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get chart idintifier of chart object
long chart_id=object.ChartId();
}

2000-2015, MetaQuotes Software Corp.

2204

Biblioteca Padro

Window
Obtm o nmero de janelas em que o grfico um objeto grfico.
int Window() const

Valor do Retorno
Nmero de janelas onde o grfico um objeto grfico (0 - janela principal). Se o objeto no for
encontrado, ele retorna -1.
Exemplo
//--- example for CChartObject::Window
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get window of chart object
int window=object.Window();
}

2000-2015, MetaQuotes Software Corp.

2205

Biblioteca Padro

Name (Mtodo Get)


Obtm o nome do objeto grfico.
string Name() const

Valor do Retorno
Nome do objeto grfico anexado a uma instncia de classe. Se o objeto no for encontrado, retorna
NULL.

Name (Mtodo Set)


Define o nome do objeto grfico.
bool Name(
string name

// new name

Parmetros
name
[in] O novo nome do objeto grfico.
Valor do Retorno
verdadeiro se obteve xito, falso - no possvel alterar o nome.
Exemplo
//--- example for CChartObject::Name
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get name of chart object
string object_name=object.Name();
if(object_name!="MyChartObject")
{
//--- set name of chart object
object.Name("MyChartObject");
}
}

2000-2015, MetaQuotes Software Corp.

2206

Biblioteca Padro

NumPoints
Obtm o nmero de pontos de ancoragem de um objeto grfico.
int NumPoints() const

Valor do Retorno
Nmero de pontos ligados a um objeto grfico anexado a uma instncia de classe. Se o objeto no
est anexado, ele retorna 0.
Exemplo
//--- example for CChartObject::NumPoints
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get points count of chart object
int points=object.NumPoints();
}

2000-2015, MetaQuotes Software Corp.

2207

Biblioteca Padro

Attach
Vincula um objeto grfico a uma instncia de classe.
bool Attach(
long

chart_id,

// ID Grafico

string name,

// Name of the object

int

window,

// Chart window

int

points

// Number of points

Parmetros
chart_id
[out] Identificador do Grfico
name
[in] Nome do objeto grfico.
window
[in] Nmero de janela do grfico (0 - janela principal).
points
[in] Nmero de pontos de ancoragem do objeto grfico.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode vincular o objeto.
Exemplo
//--- example for CChartObject::Attach
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- attach chart object
if(!object.Attach(ChartID(),"MyObject",0,2))
{
printf("Object attach error");
return;
}
}

2000-2015, MetaQuotes Software Corp.

2208

Biblioteca Padro

SetPoint
Define as novas coordenadas de ponto de ancoragem do objeto grfico.
bool SetPoint(
int

point,

// Point number

datetime new_time,

// Time coordinate

double

// Price coordinate

new_price

Parmetros
point
[in] Nmero de um ponto de ancoragem.
new_time
[in] Novo valor para a coordenada de tempo do ponto de ancoragem especfico.
new_price
[in] Novo valor da coordenada de preo do ponto de ancoragem especfico.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode alterar as coordenadas do ponto.
Exemplo
//--- example for CChartObject::SetPoint
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
double

price;

//--if(object.NumPoints()>0)
{
//--- set point of chart object
object.SetPoint(0,CurrTime(),price);
}
}

2000-2015, MetaQuotes Software Corp.

2209

Biblioteca Padro

Delete
Remove um objeto grfico anexado ao grfico.
bool Delete()

Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode remover o objeto.
Exemplo
//--- example for CChartObject::Delete
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- detach chart object
if(!object.Delete())
{
printf("Object delete error");
return;
}
}

2000-2015, MetaQuotes Software Corp.

2210

Biblioteca Padro

Detach
Destaca o objeto grfico.
void Detach()

Valor do Retorno
Nenhum.
Exemplo
//--- example for CChartObject::Detach
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- detach chart object
object.Detach();
}

2000-2015, MetaQuotes Software Corp.

2211

Biblioteca Padro

ShiftObject
Move um objeto grfico.
bool ShiftObject(
datetime d_time,

// Increment of time coordinate

double

// Increment of price coordinate

d_price

Parmetros
d_time
[in] Incremento da coordenada de tempo para todos os pontos de ancoragem.
d_price
[in] Incremento da coordenada de preo para todos os pontos de ancoragem.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode deslocar o objeto.
Exemplo
//--- example for CChartObject::ShiftObject
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
datetime

d_time;

double

d_price;

//--- shift chart object


object.ShiftObject(d_time,d_price);
}

2000-2015, MetaQuotes Software Corp.

2212

Biblioteca Padro

ShiftPoint
Desloca um ponto de ancoragem especfico do objeto grfico.
bool ShiftPoint(
int

point,

// Point number

datetime d_time,

// Increment of time coordinate

double

// Increment of price coordinate

d_price

Parmetros
point
[in] Nmero de um ponto de ancoragem.
d_time
[in] Incremento da coordenada de tempo para todos os pontos de ancoragem.
d_price
[in] Incremento da coordenada de preo para todos os pontos de ancoragem.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode deslocar o ponto.
Exemplo
//--- example for CChartObject::ShiftPoint
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
datetime

d_time;

double

d_price;

//--if(object.NumPoints()>0)
{
//--- shift point of chart object
object.ShiftPoint(0,d_time,d_price);
}
}

2000-2015, MetaQuotes Software Corp.

2213

Biblioteca Padro

Time (Mtodo Get)


Obtm a coordenada de tempo do ponto de ancoragem especfico do objeto grfico.
datetime Time(
int point

// Point number

) const

Parmetros
point
[in] Nmero de um ponto de ancoragem.
Valor do Retorno
Coordenada de tempo de ponto de ancoragem especfico do objeto grfico anexado a uma instncia
de classe. Se o objeto no anexado ou o objeto no tem este ponto, retorna 0.

Time (Mtodo Set)


Define a cooordenada de tempo do ponto de ancoragem esepcfico de um objeto grfico.
bool Time(
int

point,

datetime new_time

// Point number
// Time

Parmetros
point
[in] Nmero de um ponto de ancoragem.
new_time
[in] Novo valor para a coordenada de tempo do ponto de ancoragem especfico.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode mudar as coordenadas de tempo.
Exemplo
//--- example for CChartObject::Time
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--for(int i=0;i<object.NumPoints();i++)
{
//--- get time of point chart object
datetime point_time=object.Time(i);
if(point_time==0)

2000-2015, MetaQuotes Software Corp.

2214

Biblioteca Padro
{
//--- set time of point chart object
object.Time(i,TimeCurrent());
}
}
}

2000-2015, MetaQuotes Software Corp.

2215

Biblioteca Padro

Price (Mtodo Get)


Obtm a coordenada de preo do ponto de ancoragem do objeto grfico.
double Price(
int point

// Point number

) const

Parmetros
point
[in] Nmero de um ponto de ancoragem.
Valor do Retorno
Coordenada de preo do ponto de ancoragem especfico do objeto grfico anexado a uma instncia
da classe. Se no houver nenhum objeto anexado ou o objeto no tem este ponto, ele retorna
EMPTY_VALUE.

Price (Mtodo Set)


Define a coordenada de preo do ponto de ancoragem especfico de um objecto grfico.
bool Price(
int

point,

double new_price

// Point number
// Price

Parmetros
point
[in] Nmero de um ponto de ancoragem.
new_price
[in] O novo valor para a coordenada de preo do ponto de ancoragem especfico.
Valor do Retorno
verdadeiro - se bem sucedido, falso - se no pode alterar a coordenada de preo.
Exemplo
//--- example for CChartObject::Price
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
double

price;

//--for(int i=0;i<object.NumPoints();i++)
{
//--- get price of point chart object

2000-2015, MetaQuotes Software Corp.

2216

Biblioteca Padro
double point_price=object.Price(i);
if(point_price!=price)
{
//--- set price of point chart object
object.Price(i,price);
}
}
}

2000-2015, MetaQuotes Software Corp.

2217

Biblioteca Padro

Color (Mtodo Get)


Obtm a cor da linha do objeto grfico.
color Color() const

Valor do Retorno
A cor da linha do objeto grfico, atribudo instncia de classe. Se no houver nenhum objeto
atribudo, ele retorna CLR_NONE.

Color (Mtodo Set)


Define a cor da linha do objeto grfico.
bool Color(
color new_color

// New color

Parmetros
new_color
[in] O novo valor de cor da linha do objeto grfico.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode mudar a cor.
Exemplo
//--- example for CChartObject::Color
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get color of chart object
color object_color=object.Color();
if(object_color!=clrRed)
{
//--- set color of chart object
object.Color(clrRed);
}
}

2000-2015, MetaQuotes Software Corp.

2218

Biblioteca Padro

Style (Mtodo Get)


Obtm o estilo de linha do objeto grfico.
ENUM_LINE_STYLE Style() const

Valor do Retorno
Estilo de linha do objeto grfico anexado instncia de classe. Se no houver nenhum objeto
anexado, retorna WRONG_VALUE.

Style (Mtodo Set)


Define o estilo de linha do objeto grfico.
bool Style(
ENUM_LINE_STYLE new_style

// Style

Parmetros
new_style
[in] Novo valor do estilo de linha.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no possvel mudar o estilo.
Exemplo
//--- example for CChartObject::Style
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get style of chart object
ENUM_LINE_STYLE style=object.Style();
if(style!=STYLE_SOLID)
{
//--- set style of chart object
object.Style(STYLE_SOLID);
}
}

2000-2015, MetaQuotes Software Corp.

2219

Biblioteca Padro

Width (Mtodo Get)


Obtm a linha do objeto grfico.
int Width() const

Valor do Retorno
A linha do objeto grfico que esteja vinculada a uma instncia de classe. Se no est anexado ao
objeto, retorna -1.

Width (Mtodo Set)


Define a linha do objeto grfico.
bool Width(
int new_width

// Thickness

Parmetros
new_width
[in] O novo valor da linha do objeto grfico.
Valor do Retorno
verdadeiro - se bem sucedido, falso - se no pode alterar a largura.
Exemplo
//--- example for CChartObject::Width
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get width of chart object
int width=object.Width();
if(width!=1)
{
//--- set width of chart object
object.Width(1);
}
}

2000-2015, MetaQuotes Software Corp.

2220

Biblioteca Padro

Background (Mtodo Get)


Obtm o flag desenhando o objeto em segundo plano (fundo).
bool Background() const

Valor do Retorno
Flag desenhado em segundo plano, um objeto grfico que esteja vinculado a uma instncia de
classe. Se no vinculado, o objeto retorna falso.

Background (Mtodo Set)


Define o flag desenhando o objeto em segundo plano (fundo).
bool Background(
bool background

// Value of the flag

Parmetros
background
[in] O novo valor do flag desenhando um objeto em segundo plano (fundo).
Valor do Retorno
verdadeiro - se bem sucedido, falso - no possvel mudar o flag.
Exemplo
//--- example for CChartObject::Background
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get background flag of chart object
bool background_flag=object.Background();
if(!background_flag)
{
//--- set background flag of chart object
object.Background(true);
}
}

2000-2015, MetaQuotes Software Corp.

2221

Biblioteca Padro

Selected (Mtodo Get)


Obtm o flag indicando que o objeto grfico foi selecionado Em outras palavras - se o objeto grfico
selecionado ou no.
bool Selected() const

Valor do Retorno
O estado em que o objeto anexado a uma instncia de classe selecionado. Se no houver nenhum
objeto anexado, retorna falso.

Selected (Mtodo Set)


Define o flag indicando que o objeto grfico foi selecionado.
bool Selected(
bool selected

// Value of the flag

Parmetros
selected
[in] Novo valor do flag.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no possvel mudar o flag.
Exemplo
//--- example for CChartObject::Selected
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get the "selected" flag of chart object
bool selected_flag=object.Selected();
if(selected_flag)
{
//--- set the "selected" flag of chart object
object.Selected(false);
}
}

2000-2015, MetaQuotes Software Corp.

2222

Biblioteca Padro

Selectable (Mtodo Get)


Obtm o flag que indica a capacidade de um objeto grfico ser selecionado. Em outras palavras - se o
objeto grfico pode ser selecionada ou no.
bool Selectable() const

Valor do Retorno
Flag indicando a capacidade do objeto ser selecionado, anexado a uma instncia da classe. Se no
houver nenhum objeto anexado, retorna falso.

Selectable (Mtodo Set)


Define o flag que indica a capacidade de um objeto grfico a ser selecionado.
bool Selectable(
bool selectable

// Value of the flag

Parmetros
selectable
[in] Novo valor do flag.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no possvel mudar o flag.
Exemplo
//--- example for CChartObject::Selectable
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get the "selectable" flag of chart object
bool selectable_flag=object.Selectable();
if(selectable_flag)
{
//--- set the "selectable" flag of chart object
object.Selectable(false);
}
}

2000-2015, MetaQuotes Software Corp.

2223

Biblioteca Padro

Description (Mtodo Get)


Obtm uma descrio (texto) do objeto grfico.
string Description() const

Valor do Retorno
Descrio (texto) do objeto grfico que esteja vinculado a uma instncia de classe. Se nenhum
objeto vinculado, retorna NULL.

Description (Mtodo Set)


Define a descrio(texto) do objeto grfico.
bool Description(
string text

// Text

Parmetros
text
[in] Novo valor das descries (texto) do objeto grfico.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode alterar a descrio (texto).
Exemplo
//--- example for CChartObject::Description
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get description of chart object
string description=object.Description();
if(description=="")
{
//--- set description of chart object
object.Description("MyObject");
}
}

2000-2015, MetaQuotes Software Corp.

2224

Biblioteca Padro

Tooltip (Mtodo Get)


Obtm o texto da dica de ferramenta do objeto grfico.
string Tooltip() const

Valor de retorno
O texto de uma dica de ferramenta do objeto grfico anexado a uma instncia da classe. Se o
objeto no foi anexado, ele retorna NULL.

Tooltip (Mtodo Set)


Define o texto da dica de ferramenta de um objeto grfico.
bool Tooltip(
string new_tooltip

// new text of a tooltip

Parmetros
new_tooltip
[in] O novo texto de uma dica de ferramenta.
Valor de retorno
verdadeiro - se bem sucedido, falso se a dica de ferramenta falhar.
Nota:
Se a propriedade no definida, ento a dica de ferramenta gerada automaticamente pelo
terminal e ser exibida. Uma dica de ferramenta pode ser desativada, definindo o valor "\n" (linha
de alimentao).

2000-2015, MetaQuotes Software Corp.

2225

Biblioteca Padro

Timeframes (Mtodo Get)


Obtm o flag de visibilidade do objeto grfico.
int Timeframes() const

Valor do Retorno
Flags de visibilidade do objeto grfico anexadas a uma instncia da classe. Se o objeto no
anexado, ele retorna 0.

Timeframes (Mtodo Set)


Define o flag de visibilidade do objeto grfico.
bool Timeframes(
int new_timeframes

// Visibility flags

Parmetros
new_timeframes
[in] Novos flags de visibilidade do objeto grfico.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode mudar as flags de visibilidade.
Exemplo
//--- example for CChartObject::Timeframes
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get timeframes of chart object
int timeframes=object.Timeframes();
if(!(timeframes&OBJ_PERIOD_H1))
{
//--- set timeframes of chart object
object.Timeframes(timeframes|OBJ_PERIOD_H1);
}
}

2000-2015, MetaQuotes Software Corp.

2226

Biblioteca Padro

Z_Order (Mtodo Get)


Obtm o valor da prioridade do objeto grfico ao clicar no grfico (CHARTEVENT_CLICK).
long Z_Order() const

Valor do Retorno
Prioridade de um objeto grfico, anexado instncia de classe. Se no houver nenhum objeto
anexado, ele retorna 0.

Z_Order (Mtodo Set)


Define a prioridade do objeto grfico ao clicar no grfico (CHARTEVENT_CLICK).
bool Z_Order(
long value

// new priority

Parmetros
value
[in] O novo valor da prioridade do objeto grfico ao clicar no grfico (CHARTEVENT_CLICK).
Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode alterar a prioridade.
Observao
Z_Order uma prioridade de um objeto grfico para receber eventos ao clicar no grfico
(CHARTEVENT_CLICK). Ao definir o valor maior do que 0 (valor padro), voc pode aumentar a
prioridade objeto.

2000-2015, MetaQuotes Software Corp.

2227

Biblioteca Padro

CreateTime
Obtm o tempo para criar o objeto grfico.
datetime CreateTime() const

Valor do Retorno
Tempo para criar objeto grfico que esteja vinculado a uma instncia de classe. Se o objeto no
vinculado, ele retorna 0.
Exemplo
//--- example for CChartObject::CreateTime
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get create time of chart object
datetime create_time=object.CreateTime();
}

2000-2015, MetaQuotes Software Corp.

2228

Biblioteca Padro

LevelsCount (Mtodo Get)


Obtm o nmero de nveis do objeto grfico.
int LevelsCount() const

Valor do Retorno
Nmero de nveis do objto grfico anexado a uma instncia de classe. Se o objeto no anexado,
ele retorna 0.

LevelsCount (Mtodo Set)


Define o nmero de nveis do objeto grfico.
bool LevelsCount(
int levels

// Number of levels

Parmetros
levels
[in] O novo nmero de nveis do objeto grfico.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no possvel alterar o nmero de nveis.
Exemplo
//--- example for CChartObject::LevelsCount
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get levels count of chart object
int levels_count=object.LevelsCount();
//--- set levels count of chart object
object.LevelsCount(levels_count+1);
}

2000-2015, MetaQuotes Software Corp.

2229

Biblioteca Padro

LevelColor (Mtodo Get)


Obtm a cor da linha de nvel especfico do objeto grfico.
color LevelColor(
int level

// Level number

) const

Parmetros
level
[in] Nmero de nvel.
Valor do Retorno
Cor da linha de nvel especfico do objeto grfico anexado a uma instncia de classe. Se no est
vinculado ao objeto ou no existe um nvel especificado de objeto, retorna CLR_NONE.

LevelColor (Mtodo Set)


Define a cor da linha de nvel especfico do objeto grfico.
bool LevelColor(
int

level,

color new_color

// Level number
// New color

Parmetros
level
[in] Nmero de nvel.
new_color
[in] Nova cor de linha de nvel especfico.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode mudar a cor.
Exemplo
//--- example for CChartObject::LevelColor
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--for(int i=0;i<object.LevelsCount();i++)
{
//--- get level color of chart object
color level_color=object.LevelColor(i);
if(level_color!=clrRed)

2000-2015, MetaQuotes Software Corp.

2230

Biblioteca Padro
{
//--- set level color of chart object
object.LevelColor(i,clrRed);
}
}
}

2000-2015, MetaQuotes Software Corp.

2231

Biblioteca Padro

LevelStyle (Mtodo Get)


Obtm o estilo da linha de nvel especfico do objeto grfico.
ENUM_LINE_STYLE LevelStyle(
int level

// Level number

) const

Parmetros
level
[in] Nmero de nvel.
Valor do Retorno
Estilo da linha de nvel especfico do objeto grfico anexado a uma instncia de classe. Se no
anexado ao objeto ou o objeto no tem um nvel especfico, retorna WRONG_VALUE.

LevelStyle (Mtodo Set)


Define estilo da linha de nvel especfico do objeto grfico.
int LevelStyle(
int

level,

ENUM_LINE_STYLE style

// Level number
// Line Style

Parmetros
level
[in] Nmero de nvel.
style
[in] Novo estilo de linha do nvel especificado.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no possvel mudar o estilo.
Exemplo
//--- example for CChartObject::LevelStyle
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--for(int i=0;i<object.LevelsCount();i++)
{
//--- get level style of chart object
ENUM_LINE_STYLE level_style=object.LevelStyle(i);
if(level_style!=STYLE_SOLID)

2000-2015, MetaQuotes Software Corp.

2232

Biblioteca Padro
{
//--- set level style of chart object
object.LevelStyle(i,STYLE_SOLID);
}
}
}

2000-2015, MetaQuotes Software Corp.

2233

Biblioteca Padro

LevelWidth (Get Method)


Obtm a largura da linha de nvel especfico do objeto grfico.
int LevelWidth(
int level

// Level number

) const

Parmetros
level
[in] Nmero de nvel.
Valor do Retorno
A largura da linha de nvel especfico do objeto grfico anexado instncia de classe. Se no houver
nenhum objeto anexado ou o objeto no tem o nvel especificado, ele retorna -1.

LevelWidth (Mtodo Set)


Define a largura da linha de nvel especfico do objeto grfico.
bool LevelWidth(
int level,

// Level number

int new_width

// New width

Parmetros
level
[in] Nmero de nvel.
new_width
[in] Nova largura da linha do nvel especificado.
Valor do Retorno
verdadeiro - se bem sucedido, falso - se no pode alterar a largura.
Exemplo
//--- example for CChartObject::LevelWidth
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--for(int i=0;i<object.LevelsCount();i++)
{
//--- get level width of chart object
int level_width=object.LevelWidth(i);
if(level_width!=1)

2000-2015, MetaQuotes Software Corp.

2234

Biblioteca Padro
{
//--- set level width of chart object
object.LevelWidth(i,1);
}
}
}

2000-2015, MetaQuotes Software Corp.

2235

Biblioteca Padro

LevelValue (Mtodo Get)


Obtm o valor de nvel especfico do objeto grfico.
double LevelValue(
int level

// Level number

) const

Parmetros
level
[in] Nmero de nvel.
Valor do Retorno
O valor deste nvel de objeto grfico que est vinculado a uma instncia de classe. Se no
vinculado ao objeto ou no existe um nvel especfico do objeto, retorna EMPTY_VALUE.

LevelValue (Mtodo Set)


Define o valor do nvel especfico do objeto grfico.
bool LevelValue(
int

level,

double new_value

// Level number
// New value

Parmetros
level
[in] Nmero de nvel.
new_value
[in] Novo valor do nvel especificado.
Valor do Retorno
veradeiro - sem bem sucedido, falso - se no pode alterar o valor
Exemplo
//--- example for CChartObject::LevelValue
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--for(int i=0;i<object.LevelsCount();i++)
{
//--- get level value of chart object
double level_value=object.LevelValue(i);
if(level_value!=0.1*i)

2000-2015, MetaQuotes Software Corp.

2236

Biblioteca Padro
{
//--- set level value of chart object
object.LevelValue(i,0.1*i);
}
}
}

2000-2015, MetaQuotes Software Corp.

2237

Biblioteca Padro

LevelDescription (Mtodo Get)


Obtm uma descrio (texto) do nvel de objeto grfico.
string LevelDescription(
int level

// Level number

) const

Parmetros
level
[in] Nmero de nveis de objeto grfico.
Valor do Retorno
Descrio (texto) do nvel de objeto grfico que esteja vinculado a uma instncia de classe. Se no
vincular o objeto ou no especificado o nvel do objeto, retorna NULL.

LevelDescription (Mtodo Set)


Define a descrio (texto) do nvel de objeto grfico.
bool LevelDescription(
int

level ,

string text

// Level number
// Text

Parmetros
level
[in] Nmero de nvel de objeto grfico.
text
[in] O novo valor da descrio (texto) do nvel de objeto grfico.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode alterar a descrio (texto).
Exemplo
//--- example for CChartObject::LevelDescription
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--for(int i=0;i<object.LevelsCount();i++)
{
//--- get level description of chart object
string level_description=object.LevelDescription(i);
if(level_description=="")

2000-2015, MetaQuotes Software Corp.

2238

Biblioteca Padro
{
//--- set level description of chart object
object.LevelDescription(i,"Level_"+IntegerToString(i));
}
}
}

2000-2015, MetaQuotes Software Corp.

2239

Biblioteca Padro

GetInteger
Fornece acesso simplificado s funes ObjectGetInteger() do API MQL5 para as propriedades de valor
tipo integer (bool, char, uchar, short, ushort, int, uint, ling, ulong, datetime, color) viculadas a uma
instncia da classe grfica. Existem duas verses de uma chamada desta funo:
Obtendo um valor de propriedade, sem verificar a exatido
long GetInteger(
ENUM_OBJECT_PROPERTY_INTEGER prop_id,

// Identifier of integer-property

int

// Modifier

modifier=-1

) const

Parmetros
prop_id
[in] ID de propriedades grficas tipo double.
modifier=-1
[in] Modificador (ndexador) de recursos do tipo double.
Valor do Retorno
Se bem sucedido, retorna o valor da propriedade de tipo integer, se houver erro vai retornar 0.
Obtendo um valor de propriedade ao verificar a correo de tal tratamento
bool GetInteger(
ENUM_OBJECT_PROPERTY_INTEGER prop_id,

// Identifier of integer-property

int

modifier,

// Modifier

long&

value

// Link to variable

) const

Parmetros
prop_id
[in] ID de propriedades grficas tipo integer do objeto.
modifier
[in] Modificador (indexador) da propriedade tipo integer.
value
[out] Referncia a uma varivel para acomodar as propriedades de valor tipo integer.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no pode obter a propriedade tipo integer.
Exemplo
//--- example for CChartObject::GetInteger
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()

2000-2015, MetaQuotes Software Corp.

2240

Biblioteca Padro
{
CChartObject object;
//--- get color of chart object by easy method
printf("Objects color is %s",ColorToString(object.GetInteger(OBJPROP_COLOR),true));
//--- get color of chart object by classic method
long color_value;
if(!object.GetInteger(OBJPROP_COLOR,0,color_value))
{
printf("Get integer property error %d",GetLastError());
return;
}
else
printf("Objects color is %s",color_value);
for(int i=0;i<object.LevelsCount();i++)
{
//--- get levels width by easy method
printf("Level %d width is %d",i,object.GetInteger(OBJPROP_LEVELWIDTH,i));
//--- get levels width by classic method
long width_value;
if(!object.GetInteger(OBJPROP_LEVELWIDTH,i,width_value))
{
printf("Get integer property error %d",GetLastError());
return;
}
else
printf("Level %d width is %d",i,width_value);
}
}

2000-2015, MetaQuotes Software Corp.

2241

Biblioteca Padro

SetInteger
Fornece acesso simplificado s funes ObjectSetInteger() do API MQL5 para alterar as propriedades
tipo integer (bool, carvo animal, uchar, short, ushort, int, uint, ling, ulong, datetime, cor) ligadas a
uma instncia de classe grfica. Existem duas verses de uma chamada da funo:
Define um valor de propriedade que no requer um modificador
bool SetInteger(
ENUM_OBJECT_PROPERTY_INTEGER prop_id,

// Identifier of integer-property

long

// Value

value

Parmetros
prop_id
[in] ID de propriedades grficas tipo integer do objeto.
value
[in] novas propriedades mutveis de valor tipo integer.
Define um valor de propriedade que indica o modificador
bool SetInteger(
ENUM_OBJECT_PROPERTY_INTEGER prop_id,

// Identifier of integer-property

int

modifier,

// Modifier

long

value

// Value

Parmetros
prop_id
[in] ID de propriedades grficas tipo integer do objeto.
modifier
[in] Modificador (indexador) da propriedade tipo integer.
value
[in] novas propriedades mutveis de valor tipo integer.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no possvel mudar a propriedade tipo integer.
Exemplo
//--- example for CChartObject::SetInteger
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- set new color of chart object

2000-2015, MetaQuotes Software Corp.

2242

Biblioteca Padro
if(!object.SetInteger(OBJPROP_COLOR,clrRed))
{
printf("Set integer property error %d",GetLastError());
return;
}
for(int i=0;i<object.LevelsCount();i++)
{
//--- set levels width
if(!object.SetInteger(OBJPROP_LEVELWIDTH,i,i))
{
printf("Set integer property error %d",GetLastError());
return;
}
}
}

2000-2015, MetaQuotes Software Corp.

2243

Biblioteca Padro

GetDouble
Fornece acesso simplificado s funes ObjectGetDouble() do API MQL5 para obter os valores de
propriedades duplas (tipo float e double) do objeto grfico, atribudos instncia de classe. Existem
duas verses de uma chamada desta funo:
Obtendo um valor de propriedade, sem verificar a exatido
double GetDouble(
ENUM_OBJECT_PROPERTY_DOUBLE prop_id,

// Identifier of double-property

int

// Modifier

modifier=-1

) const

Parmetros
prop_id
[in] ID de propriedades grficas tipo double.
modifier=-1
[in] Modificador (ndexador) de recursos do tipo double.
Valor do Retorno
Se for bem sucedido, retorna o valor da propriedade de tipo double, em caso de erro, ele retorna
EMPTY_VALUE.
Obtendo um valor de propriedade ao verificar a correo de tal tratamento
bool GetDouble(
ENUM_OBJECT_PROPERTY_DOUBLE prop_id,

// Identifier of double-property

int

modifier,

// Modifier

double&

value

// Link to variable

) const

Parmetros
prop_id
[in] ID de propriedades grficas tipo double.
modifier
[in] Modificador (ndexador) de recursos do tipo double.
value
[out] Referncia a uma varivel para acomodar as propriedades de valor tipo double.
Valor do Retorno
verdadeiro - se bem sucedida, falso - no pode obter um recurso tipo double.
Exemplo
//--- example for CChartObject::GetDouble
#include <ChartObjects\ChartObject.mqh>
//---

2000-2015, MetaQuotes Software Corp.

2244

Biblioteca Padro
void OnStart()
{
CChartObject object;
//--for(int i=0;i<object.LevelsCount();i++)
{
//--- get levels value by easy method
printf("Level %d value=%f",i,object.GetDouble(OBJPROP_LEVELVALUE,i));
//--- get levels value by classic method
double value;
if(!object.SetDouble(OBJPROP_LEVELVALUE,i,value))
{
printf("Get double property error %d",GetLastError());
return;
}
else
printf("Level %d value=%f",i,value);
}
}

2000-2015, MetaQuotes Software Corp.

2245

Biblioteca Padro

SetDouble
Fornece acesso simplificado s funes ObjectSetDouble() do API MQL5 para alterar as propriedades
duplas (tipo float e double) vinculadas a uma instncia do objeto grfico da classe. Existem duas
verses de uma chamada desta funo:
Define um valor de propriedade que no requer um modificador
bool SetDouble(
ENUM_OBJECT_PROPERTY_DOUBLE prop_id,

// Identifier of double-property

double

// Value

value

Parmetros
prop_id
[in] ID de propriedades grficas tipo double.
value
[in] Novos valores mutveis de recursos tipo double
Define um valor de propriedade que indica o modificador
bool SetDouble(
ENUM_OBJECT_PROPERTY_DOUBLE prop_id,

// Identifier of double-property

int

modifier,

// Modifier

double

value

// Value

Parmetros
prop_id
[in] ID de propriedades grficas tipo double.
modifier
[in] Modificador (indexador) de propriedade do tipo double.
value
[in] Novos valores mutveis de propriedade tipo double
Valor do Retorno
verdadeiro - se bem sucedido, falso - no possvel mudar o recurso tipo double.
Exemplo
//--- example for CChartObject::SetDouble
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//---

2000-2015, MetaQuotes Software Corp.

2246

Biblioteca Padro
for(int i=0;i<object.LevelsCount();i++)
{
//--- set level value of chart object
if(!object.SetDouble(OBJPROP_LEVELVALUE,i,0.1*i))
{
printf("Set double property error %d",GetLastError());
return;
}
}
}

2000-2015, MetaQuotes Software Corp.

2247

Biblioteca Padro

GetString
Fornece acesso simplificado s funes ObjectGetString() do API MQL5 para as propriedades tipo
string, vinculado a uma instncia de classe do objeto grfico. Existem duas verses de uma
chamada desta funo:
Obtendo um valor de propriedade, sem verificar a exatido
string GetString(
ENUM_OBJECT_PROPERTY_STRING prop_id,

// Identifier of string-property

int

// Modifier

modifier=-1

) const

Parmetros
prop_id
[in] Identificador das propriedades tipo string do objeto grfico.
modifier=-1
[in] Modificador (indexador) de propriedade tipo string.
Valor do Retorno
Valor da propriedade tipo string.
Obtendo um valor de propriedade ao verificar a correo de tal tratamento
bool GetString(
ENUM_OBJECT_PROPERTY_STRING prop_id,

// Identifier of string-property

int

modifier,

// Modifier

string&

value

// Link to variable

) const

Parmetros
prop_id
[in] Identificador das propriedades tipo string do objeto grfico.
modifier
[in] Modificador (indexador) de propriedade tipo string.
value
[out] Referncia a uma varivel para acomodar as propriedades de valor tipo string.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no possvel obter a propriedade tipo string.
Exemplo
//--- example for CChartObject::GetString
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()

2000-2015, MetaQuotes Software Corp.

2248

Biblioteca Padro
{
CChartObject object;
string

value;

//--- get name of chart object by easy method


printf("Object name is '%s'",object.GetString(OBJPROP_NAME));
//--- get name of chart object by classic method
if(!object.GetString(OBJPROP_NAME,0,value))
{
printf("Get string property error %d",GetLastError());
return;
}
else
printf("Object name is '%s'",value);
for(int i=0;i<object.LevelsCount();i++)
{
//--- get levels description by easy method
printf("Level %d description is '%s'",i,object.GetString(OBJPROP_LEVELTEXT,i));
//--- get levels description by classic method
if(!object.GetString(OBJPROP_LEVELTEXT,i,value))
{
printf("Get string property error %d",GetLastError());
return;
}
else
printf("Level %d description is '%s'",i,value);
}
}

2000-2015, MetaQuotes Software Corp.

2249

Biblioteca Padro

SetString
Fornece acesso simplificado s funes ObjectSetString() do API MQL5 para alterar as propriedades
amarradas do tipo string instncia do objeto grfico de classe. Existem duas verses de uma
chamada desta funo:
Define um valor de propriedade que no requer um modificador
bool SetString(
ENUM_OBJECT_PROPERTY_STRING prop_id,

// Identifier of string-property

string

// Value

value

Parmetros
prop_id
[in] Identificador das propriedades tipo string do objeto grfico.
value
[in] Novos valores mutveis das propriedades do tipo string.
Define um valor de propriedade que indica o modificador
bool SetString(
ENUM_OBJECT_PROPERTY_STRING prop_id,

// Identifier of string-property

int

modifier,

// Modifier

string

value

// Value

Parmetros
prop_id
[in] Identificador das propriedades tipo string do objeto grfico.
modifier
[in] Modificador (indexador) de propriedade tipo string.
value
[in] Novos valores mutveis das propriedades do tipo string.
Valor do Retorno
verdadeiro - se bem sucedido, falso - no possvel mudar propriedade tipo string.
Exemplo
//--- example for CChartObject::SetString
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- set new name of chart object

2000-2015, MetaQuotes Software Corp.

2250

Biblioteca Padro
if(!object.SetString(OBJPROP_NAME,"MyObject"))
{
printf("Set string property error %d",GetLastError());
return;
}
for(int i=0;i<object.LevelsCount();i++)
{
//--- set levels description
if(!object.SetString(OBJPROP_LEVELTEXT,i,"Level_"+IntegerToString(i)))
{
printf("Set string property error %d",GetLastError());
return;
}
}
}

2000-2015, MetaQuotes Software Corp.

2251

Biblioteca Padro

Save
Salva todos os parmetros do objeto no arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador do arquivo aberto anteriormente usando a funo FileOpen(...).
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CChartObject::Save
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
int

file_handle;

CChartObject object=new CChartObject;


//--- set object parameters
//--- . . .
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!object.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
}

2000-2015, MetaQuotes Software Corp.

2252

Biblioteca Padro

Load
Carrega os parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador do arquivo previamente aberto usando a funo FileOpen(...).
Valor do Retorno
verdadeiro - concludo com sucesso, falso - com erro.
Exemplo
//--- example for CChartObject::Load
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
int

file_handle;

CChartObject object;
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!object.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- use object
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

2253

Biblioteca Padro

Type
Obtm o identificador de tipo do objeto grfico .
virtual int Type() const

Valor do Retorno
Identificador do tipo de objeto (0x8888 para CChartObject).
Exemplo
//--- example for CChartObject::Type
#include <ChartObjects\ChartObject.mqh>
//--void OnStart()
{
CChartObject object;
//--- get object type
int type=object.Type();
}

2000-2015, MetaQuotes Software Corp.

2254

Biblioteca Padro

Objects Lines
Um grupo de objetos grficos chamado "Lines".
Esta seo contm os detalhes tcnicos de trabalhar com um grupo de objetos grficos chamado
"Lines" e uma descrio dos componentes relevantes da Biblioteca Padro MQL5.
Nome da classe

Objeto

CChartObjectVLine

Objeto grfico "Vertical Line"

CChartObjectHLine

Objeto grfico "Horizontal Line"

CChartObjectTrend

Objeto grfico "Trend Line"

CChartObjectTrendByAngle

Objeto grfico "Trend Line by Angle"

CChartObjectCycles

Objeto grfico "Cyclic Lines"

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2255

Biblioteca Padro

CChartObjectVLine
CChartObjectVLine uma classe de acesso simplificado s propriedades do objeto grfico "Vertical
Line".

Descrio
Classe CChartObjectVLine fornece acesso s propriedades do objeto grfico "Vertical Line".

Declarao
class CChartObjectVLine : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsLines.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Vertical Line"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2256

Biblioteca Padro

Create
Cria o objeto grfico "Vertical Line".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time

// Time coordinate

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time
[in] Coordenadas de tempo do ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2257

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_VLINE para CChartObjectVLine).

2000-2015, MetaQuotes Software Corp.

2258

Biblioteca Padro

CChartObjectHLine
CChartObjectHLine uma classe de acesso simplificado s propriedade de objeto grfico "Horizonal
Line".

Descrio
Classe CChartObjectHLine fornece acesso s propriedade de objeto grfico "Horizonal Line".

Declarao
class CChartObjectHLine : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsLines.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Horizonal Line"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2259

Biblioteca Padro

Create
Cria o grfico objeto "Horizonal Line".
bool Create(
long

chart_id,

// Chart identifier

string name,

// Object name

long

// Chart window

window,

double price

// Price coordinate

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
price
[in] Coordenadas de preo do ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2260

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_HLINE para CChartObjectHLine).

2000-2015, MetaQuotes Software Corp.

2261

Biblioteca Padro

CChartObjectTrend
CChartObjectTrend uma classe para acesso simplificado s propriedades do objeto grfico "Trend
Line".

Descrio
Classe CChartObjectTrend fornece acesso a "s propriedades do objeto grfico "Trend Line".

Declarao
class CChartObjectTrend : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsLines.mqh>

Mtodos de classe
Create
Create

Cria objeto grfico "Trend Line"

Propriedades
RayLeft

Obtm/Define a propriedade "Ray Left"

RayRight

Obtm/Define a propriedade "Ray Right"

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

As classes derivadas:
CChartObjectChannel
CChartObjectFibo
CChartObjectFiboChannel
CChartObjectFiboExpansion
CChartObjectGannFan
CChartObjectGannGrid
CChartObjectPitchfork
EquidistantCChartObjectRegression
CChartObjectStdDevChannel
CChartObjectTrendByAngle
Veja tambm

2000-2015, MetaQuotes Software Corp.

2262

Biblioteca Padro
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2263

Biblioteca Padro

Create
Cria o objeto grfico "Trend Line".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// 1st time coordinate

double

// 1st price coordinate

price1,

datetime time2,

// 2nd time coordinate

double

// 2nd price coordinate

price2

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2264

Biblioteca Padro

RayLeft (Mtodo Get)


Obtm o valor da Propriedade "Ray Left".
bool RayLeft() const

Valor de retorno
O valor da propriedade "Ray Left", atribudo instncia de classe. Se no houver nenhum objeto
atribudo, ele retorna falso.

RayLeft (Mtodo Set)


Define um novo valor de flag propriedade "Ray Left".
bool RayLeft(
bool ray

// flag

Parmetros
ray
[in] O novo valor da Propriedade Ray Left.
Valor de retorno
verdadeiro se obteve xito, falso se a bandeira no mudou erro.

2000-2015, MetaQuotes Software Corp.

2265

Biblioteca Padro

RayRight (Mtodo Get)


Obtm o valor da Propriedade "Ray Right".
bool RayRight() const

Valor de retorno
O valor da propriedade "Ray Right", atribudo instncia de classe. Se no houver nenhum objeto
atribudo, ele retorna falso.

RayRight (Mtodo Set)


Define um novo valor de flag propriedade "Ray Right".
bool RayRight(
bool ray

// flag

Parmetros
ray
[in] O novo valor da propriedade "Ray Right".
Valor de retorno
verdadeiro se obteve xito, falso se a bandeira no mudou erro.

2000-2015, MetaQuotes Software Corp.

2266

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipula o arquivo j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2267

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] manipulador do arquivo j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2268

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_TREND para CChartObjectTrend).

2000-2015, MetaQuotes Software Corp.

2269

Biblioteca Padro

CChartObjectTrendByAngle
CChartObjectTrendByAngle uma classe de acesso simplificado s propriedades do objeto grfico
"Trend Line by Angle".

Descrio
Classe CChartObjectTrendByAngle fornece acesso propriedades do objeto grfico "Trend Line by
Angle".

Declarao
class CChartObjectTrendByAngle : public CChartObjectTrend

Ttulo
#include <ChartObjects\ChartObjectsLines.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Trend Line by Angle"

Propriedades
Angle

Obtm/Define a propriedade "Angle"

Entrada/sada
virtual Type

Mtodo virtual de identificao

As classes derivadas:
CChartObjectGannLine
Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2270

Biblioteca Padro

Create
Cria o objeto grfico "Trend Line by Angle"
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

long

window,

// Chart window

datetime time1,

// 1st time coordinate

double

// 1st price coordinate

price1,

datetime time2,

// 2nd time coordinate

double

// 2nd price coordinate

price2

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2271

Biblioteca Padro

Angle (Mtodo Get)


Obtm o valor da propriedade "Angle".
double Angle() const

Valor de retorno
O valor da propriedade "Angle", atribudo instncia de classe. Se no houver nenhum objeto
atribudo, retorna EMPTY_VALUE.

Angle (Mtodo Set)


Sets new value for the "Angle" property.
bool Angle(
double angle

// Angle

Parmetros
angle
[in] O novo valor da propriedade "Angle".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2272

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_TRENDBYANGLE para CChartObjectTrendByAngle).

2000-2015, MetaQuotes Software Corp.

2273

Biblioteca Padro

CChartObjectCycles
CChartObjectCycles uma classe de acesso simplificado s propriedades do objeto grfico "Cyclic
Lines".

Descrio
Classe CChartObjectCycles fornece acesso s propriedades do objeto grfico "Cyclic Lines".

Declarao
class CChartObjectCycles : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsLines.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Cyclic Lines"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2274

Biblioteca Padro

Create
Cria o objeto grfico "Cyclic Lines"
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

long

window,

// Chart window

datetime time1,

// 1st time coordinate

double

// 1st price coordinate

price1,

datetime time2,

// 2nd time coordinate

double

// 2nd price coordinate

price2

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2275

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_CYCLES para CChartObjectCycles).

2000-2015, MetaQuotes Software Corp.

2276

Biblioteca Padro

Objects Channels
Um grupo de objetos grficos chamado "Channels".
Esta seo contm os detalhes tcnicos de trabalhar com um grupo de classes de objetos grficos
chamado "Channels" e uma descrio dos componentes relevantes da Biblioteca Padro MQL5.
Nome da classe

Objeto

CChartObjectChannel

Objeto grfico "Equidistant Channel"

EquidistantCChartObjectRegression

Objeto grfico "Linear Regression Channell"

CChartObjectStdDevChannel

Objeto grfico "Standard deviations Channel"

CChartObjectPitchfork

Objeto grfico "Andrew's Pitchfork"

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2277

Biblioteca Padro

CChartObjectChannel
O CChartObjectChannel uma classe para o acesso simplificado a propriedades de objetos grficos
"Equidistant Channel".

Descrio
A classe CChartObjectChannel fornece acesso as propriedades do objeto "Equidistant Channel".

Declarao
class CChartObjectChannel : public CChartObjectTrend

Ttulo
#include <ChartObjects\ChartObjectsChannels.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Equidistant Channel"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2278

Biblioteca Padro

Create
Cria o objeto grfico "Equidistant Channel"
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// Time coordinate of the first anchor point

double

// Price coordinate of the first anchor point

price1,

datetime time2,

// Time coordinate of the second anchor point

double

// Price coordinate of the second anchor point

price2,

datetime time3,

// Time coordinate of the third anchor point

double

// Price coordinate of the third anchor point

price3

Parmetros
chart_id
[in] ID do grfico(0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
time3
[in] Coordenada de tempo do terceiro ponto de ancoragem.
price3
[in] Coordenada de preo do terceiro ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2279

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
int Type() const

Valor de retorno
Tipo de identificador do objeto (OBJ_CHANNEL for CChartObjectChannel).

2000-2015, MetaQuotes Software Corp.

2280

Biblioteca Padro

EquidistantCChartObjectRegression
CChartObjectRegression uma classe para acesso simplificado s propriedades do objeto grfico
"Linear Regression Channel".

Descrio
A classe CChartObjectRegression fornece acesso simplificado s propriedades do objeto grfico
"Linear Regression Channel".

Declarao
class CChartObjectRegression : public CChartObjectTrend

Ttulo
#include <ChartObjects\ChartObjectsChannels.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico


Channel"

"Linear Regression

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2281

Biblioteca Padro

Create
Cria o objeto grfico "Linear Regression Channel"
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

long

window,

// Chart window

datetime time1,

// First time coordinate

datetime time2

// Second time coordinate

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2282

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
int Type() const

Valor de retorno
Tipo de identificador do objeto (OBJ_REGRESSION for CChartObjectRegression).

2000-2015, MetaQuotes Software Corp.

2283

Biblioteca Padro

CChartObjectStdDevChannel
CChartObjectStdDevChannel uma classe para o acesso simplificado s propriedades do objeto grfico
"Standard Deviation Channel".

Descrio
A classe CChartObjectStdDevChannel fornece acesso s propriedades do objeto "Standard Deviation
Channel".

Declarao
class CChartObjectStdDevChannel : public CChartObjectTrend

Ttulo
#include <ChartObjects\ChartObjectsChannels.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Standard Deviation


Channel"

Propriedades
Deviations

Obtm/Define a propriedade "Deviation"

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2284

Biblioteca Padro

Create
Cria o objeto grfico "Standard Deviation Channel"
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

datetime time2,

// Second time coordinate

double

// Deviation

deviation

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
deviation
[in] O valor numrico para a propriedade "Deviation".
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2285

Biblioteca Padro

Deviation (Mtodo Get)


Obtm o valor numrico propriedade "Deviation".
double Deviation() const

Valor de retorno
O valor numrico da propriedade "Deviation", atribudo instncia de classe. Se no houver nenhum
objeto atribudo, retorna EMPTY_VALUE.

Deviation (Mtodo Set)


Define o valor numrico para a propriedade "Deviation" .
bool Deviation(
double deviation

// Deviation

Parmetros
deviation
[in] O novo valor da propriedade "Deviation".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2286

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipula o arquivo j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2287

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipula o arquivo j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2288

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
int Type() const

Valor de retorno
Tipo de identificador do objetoOBJ_STDDEVCHANNEL for CChartObjectStdDevChannel).

2000-2015, MetaQuotes Software Corp.

2289

Biblioteca Padro

CChartObjectPitchfork
A CChartObjectPitchfork uma classe para acesso simplificado das propriedades do objeto grfico
"Pitchfork de Andrew" .

Descrio
A classe CChartObjectPitchfork fornece o acesso das propriedades do objeto "Pitchfork de Andrew"

Declarao
class CChartObjectPitchfork : public CChartObjectTrend

Ttulo
#include <ChartObjects\ChartObjectsChannels.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Pitchfork de Andrew "

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2290

Biblioteca Padro

Create
Cria o objeto grfico "Pitchfork de Andrew "
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

long

window,

// Chart window

datetime time1,

// Time coordinate of the first anchor point

double

// Price coordinate of the first anchor point

price1,

datetime time2,

// Time coordinate of the second anchor point

double

// Price coordinate of the second anchor point

price2,

datetime time3,

// Time coordinate of the third anchor point

double

// Price coordinate of the third anchor point

price3

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
time3
[in] Coordenada de tempo do terceiro ponto de ancoragem.
price3
[in] Coordenada de preo do terceiro ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2291

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
int Type() const

Valor de retorno
Tipo de identificador do objeto (OBJ_PITCHFORK for CChartObjectPitchfork).

2000-2015, MetaQuotes Software Corp.

2292

Biblioteca Padro

Gann Tools
Um grupo de objetos grficos chamado "Gann Tools".
Esta seo contm os detalhes tcnicos de trabalhar com um grupo de objetos grficos chamado "Gann
Tools" e uma descrio dos componentes relevantes da Biblioteca Padro MQL5.
Nome da classe

Objeto

CChartObjectGannLine

Objeto grfico "Gann Line"

CChartObjectGannFan

Objeto grfico "Gann Fan"

CChartObjectGannGrid

Objeto grfico "Gann Grid"

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2293

Biblioteca Padro

CChartObjectGannLine
CChartObjectGannLine uma classe para acesso simplificado s propriedades do objeto grfico "Gann
Line".

Descrio
Classe CChartObjectGannLine fornece acesso s propriedades do objeto grfico "Gann Line".

Declarao
class CChartObjectGannLine : public CChartObjectTrendByAngle

Ttulo
#include <ChartObjects\ChartObjectsGann.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Gann Line"

Propriedades
PipsPerBar

Obtm/Define a propriedade "Scale"

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2294

Biblioteca Padro

Create
Cria o objeto grfico "Gann Line".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Pips per bar

ppb

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
ppb
[in] Pips por barra.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2295

Biblioteca Padro

PipsPerBar (Mtodo Get)


Obtm o valor da propriedade "Pips per bar".
double PipsPerBar() const

Valor de retorno
Valor da propriedade "Pips per bar" do objeto, atribudo instncia de classe. Se no houver
nenhum objeto atribudo, retorna EMPTY_VALUE.

PipsPerBar (Mtodo Set)


Define um novo valor propriedade "Pips per bar".
bool PipsPerBar(
double ppb

// Pips per bar

Parmetros
ppb
[in] O novo valor da propriedade "Pips per bar".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2296

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador do arquivo binrio j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2297

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador do arquivo binrio j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2298

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_GANNLINE para CChartObjectGannLine).

2000-2015, MetaQuotes Software Corp.

2299

Biblioteca Padro

CChartObjectGannFan
CChartObjectGannFan uma classe para acesso simplificado s propriedades do objeto grfico "Gann
Fan".

Descrio
Classe CChartObjectGannFan fornece acesso s propriedades do objeto grfico "Gann Fan"

Declarao
class CChartObjectGannFan : public CChartObjectTrend

Ttulo
#include <ChartObjects\ChartObjectsGann.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Gann Fan"

Propriedades
PipsPerBar

Obtm/Define a propriedade "Pips per bar"

Downtrend

Obtm/Define a propriedade "Downtrend"

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2300

Biblioteca Padro

Create
Cria o objeto grfico "Gann Fan".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Pips per bar

ppb

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
ppb
[in] Pips por barra.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2301

Biblioteca Padro

PipsPerBar (Mtodo Get)


Obtm o valor da propriedade "Pips per bar".
double PipsPerBar() const

Valor de retorno
Valor da propriedade "Pips per bar" do objeto, atribudo instncia de classe. Se no houver
nenhum objeto atribudo, retorna EMPTY_VALUE.

PipsPerBar (Mtodo Set)


Define um novo valor propriedade "Pips per bar".
bool PipsPerBar(
double ppb

// Pips per bar

Parmetros
ppb
[in] O novo valor da propriedade "Pips per bar".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2302

Biblioteca Padro

Downtrend (Mtodo Get)


Obtm o valor da propriedade "Downtrend".
bool Downtrend() const

Valor de retorno
Valor da propriedade do objeto "Downtrend", atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

Downtrend (Mtodo Set)


Define novo valor da propriedade "Downtrend".
bool Downtrend(
bool downtrend

// Flag value

Parmetros
downtrend
[in] O novo valor da Propriedade "Downtrend".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2303

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador do arquivo binrio j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2304

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador do arquivo binrio j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2305

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_GANNFAN para CChartObjectGannFan).

2000-2015, MetaQuotes Software Corp.

2306

Biblioteca Padro

CChartObjectGannGrid
CChartObjectGannGrid uma classe para o acesso simplificado s propriedades de objeto grfico
"Gann Grid".

Descrio
Classe CChartObjectGannGrid fornece acesso s propriedades de objeto grfico "Gann Grid".

Declarao
class CChartObjectGannGrid : public CChartObjectTrend

Ttulo
#include <ChartObjects\ChartObjectsGann.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Gann Grid"

Propriedades
PipsPerBar

Obtm/Define a propriedade "Pips per bar"

Downtrend

Obtm/Define a propriedade "Downtrend"

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2307

Biblioteca Padro

Create
Cria o objeto grfico "Gann Grid".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Pips per bar

ppb

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
ppb
[in] Pips por barra.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2308

Biblioteca Padro

PipsPerBar (Mtodo Get)


Obtm o valor da propriedade "Pips per bar".
double PipsPerBar() const

Valor de retorno
Valor da propriedade "Pips per bar" do objeto, atribudo instncia de classe. Se no houver
nenhum objeto atribudo, retorna EMPTY_VALUE.

PipsPerBar (Mtodo Set)


Define um novo valor propriedade "Pips per bar".
bool PipsPerBar(
double ppb

// Pips per bar

Parmetros
ppb
[in] O novo valor da propriedade "Pips per bar".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2309

Biblioteca Padro

Downtrend (Mtodo Get)


Obtm o valor da propriedade "Downtrend".
bool Downtrend() const

Valor de retorno
Valor da propriedade do objeto "Downtrend", atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

Downtrend (Mtodo Set)


Define novo valor da propriedade "Downtrend".
bool Downtrend(
bool downtrend

// Flag value

Parmetros
downtrend
[in] O novo valor da Propriedade "Downtrend".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2310

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador do arquivo binrio j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2311

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador do arquivo binrio j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2312

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_GANNGRID para CChartObjectGannGrid).

2000-2015, MetaQuotes Software Corp.

2313

Biblioteca Padro

Fibonacci
Um grupo de objetos grficos chamado "Fibonacci Tools".
Esta seo contm os detalhes tcnicos de trabalhar com um grupo de objetos grficos chamado
"Fibonacci Tools" e uma descrio dos componentes relevantes da Biblioteca Padro MQL5.
Nome da classe

Objeto

CChartObjectFibo

Objeto grfico "Fibonacci Retracement"

CChartObjectFiboTimes

Objeto grfico"Fibonacci Time Zones"

CChartObjectFiboFan

Objeto grfico "Fibonacci Fan"

CChartObjectFiboArc

Objeto grfico "Fibonacci Arc"

CChartObjectFiboChannel

Objeto grfico "Fibonacci Channel"

CChartObjectFiboExpansion

Objeto grfico "Fibonacci Expansion"

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2314

Biblioteca Padro

CChartObjectFibo
CChartObjectFibo uma classe para o acesso simplificado s propriedades do objeto grfico
"Fibonacci".

Descrio
Classe CChartObjectFibo fornece o acesso s propriedades do objeto grfico "Fibonacci".

Declarao
class CChartObjectFibo : public CChartObjectTrend

Ttulo
#include <ChartObjects\ChartObjectsFibo.mqh>

Mtodos de classe
Create
Create

Cria objeto grfico "Fibonacci Retracement"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2315

Biblioteca Padro

Create
Cria o objeto grfico "Fibonacci Retracement".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Second price coordinate

price2

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2316

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_FIBO para CChartObjectFibo).

2000-2015, MetaQuotes Software Corp.

2317

Biblioteca Padro

CChartObjectFiboTimes
CChartObjectFiboTimes uma classe para acesso simplificado s "propriedades do objeto grfico
"Fibonacci Time Zones".

Descrio
Classe CChartObjectFiboTimes fornece acesso s "propriedades do objeto grfico "Fibonacci Time
Zones".

Declarao
class CChartObjectFiboTimes : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsFibo.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Fibonacci Time Zones"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2318

Biblioteca Padro

Create
Cria o objeto grfico "Fibonacci Time Zones".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Second price coordinate

price2

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2319

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_FIBOTIMES para CChartObjectFiboTimes).

2000-2015, MetaQuotes Software Corp.

2320

Biblioteca Padro

CChartObjectFiboFan
CChartObjectFiboFan uma classe para acesso simplificado s propriedades do objeto grfico
"Fibonacci Fan".

Descrio
Classe CChartObjectFiboFan fornece acesso s propriedades do objeto grfico "Fibonacci Fan".

Declarao
class CChartObjectFiboFan : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsFibo.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Fibonacci Fan"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2321

Biblioteca Padro

Create
Cria o objeto grfico "Fibonacci Fan".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Second price coordinate

price2

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2322

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_FIBOFAN para CChartObjectFiboFan).

2000-2015, MetaQuotes Software Corp.

2323

Biblioteca Padro

CChartObjectFiboArc
CChartObjectFiboArc uma classe para acesso simplificado s propriedades do objeto grfico
"Fibonacci Arc" .

Descrio
Classe CChartObjectFiboArc fornece acesso s propriedades do objeto grfico "Fibonacci Arc".

Declarao
class CChartObjectFiboArc : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsFibo.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Fibonacci Arc"

Propriedades
Scale

Obtm/Define a propriedade "Scale"

Elipse

Obtm/Define a propriedade "Ellipse"

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2324

Biblioteca Padro

Create
Cria o objeto grfico "Fibonacci Arc"
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

price2,

// Second price coordinate

double

scale

// Scale

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
scale
[in] Escala.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2325

Biblioteca Padro

Scale (Mtodo Get)


Obtm o valor da propriedade "Scale".
double Scale() const

Valor de retorno
Valor da propriedade "Scale" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, retorna EMPTY_VALUE.

Scale (Mtodo Set)


Define um novo valor para a propriedade "Scale".
bool Scale(
double scale

// Scale

Parmetros
scale
[in] O novo valor para a propriedade "Scale".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2326

Biblioteca Padro

Ellipse (Mtodo Get)


Obtm o valor da propriedade "Ellipse".
bool Ellipse() const

Valor de retorno
Valor da propriedade "Ellipse" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

Ellipse (Mtodo Set)


Define novo valor flag para a propriedade "Ellipse".
bool Ellipse(
bool ellipse

// flag value

Parmetros
ellipse
[in] O novo valor para a propriedade "Scale".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2327

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador do arquivo binrio j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2328

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador do arquivo binrio j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2329

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_FIBOARC para CChartObjectFiboArc).

2000-2015, MetaQuotes Software Corp.

2330

Biblioteca Padro

CChartObjectFiboChannel
CChartObjectFiboChannel uma classe para acesso simplificado s propriedades do objeto grfico
"Fibonacci Channel".

Descrio
Classe CChartObjectFiboChannel fornece acesso s propriedades do objeto grfico "Fibonacci
Channel".

Declarao
class CChartObjectFiboChannel : public CChartObjectTrend

Ttulo
#include <ChartObjects\ChartObjectsFibo.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Fibonacci Channel"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2331

Biblioteca Padro

Create
Cria o objeto grfico "Fibonacci Channel".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Second price coordinate

price2,

datetime time3,

// Third time coordinate

double

// Third price coordinate

price3

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
time3
[in] Coordenada de tempo do terceiro ponto de ancoragem.
price3
[in] Coordenada de preo do terceiro ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2332

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_FIBOCHANNEL para CChartObjectFiboChannel).

2000-2015, MetaQuotes Software Corp.

2333

Biblioteca Padro

CChartObjectFiboExpansion
CChartObjectFiboExpansion uma classe para acesso simplificado s propriedades do objeto
grfico"Fibonacci Expansion".

Descrio
Classe CChartObjectFiboExpansion fornece acesso s propriedades do objeto grfico"Fibonacci
Expansion".

Declarao
class CChartObjectFiboExpansion : public CChartObjectTrend

Ttulo
#include <ChartObjects\ChartObjectsFibo.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Fibonacci Expanso"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2334

Biblioteca Padro

Create
Cria o objeto grfico "Fibonacci Expansion".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Second price coordinate

price2,

datetime time3,

// Third time coordinate

double

// Third price coordinate

price3

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
time3
[in] Coordenada de tempo do terceiro ponto de ancoragem.
price3
[in] Coordenada de preo do terceiro ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2335

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_EXPANSION para CChartObjectFiboExpansion).

2000-2015, MetaQuotes Software Corp.

2336

Biblioteca Padro

Elliott Tools
Um grupo de objetos grficos chamado "Elliott Tools".
Esta seo contm os detalhes tcnicos de trabalhar com um grupo de objetos grficos chamado
"Elliott Tools" e uma descrio dos componentes relevantes da Biblioteca Padro MQL5.
Nome da classe

Objeto

CChartObjectElliottWave3

Objeto grfico "Correcting Wave"

CChartObjectElliottWave5

Objeto grfico"Impulse Wave"

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2337

Biblioteca Padro

CChartObjectElliottWave3
CChartObjectElliottWave3 uma classe para o acesso simplificado s propriedades de objetos grficos
"Correcting Wave".

Descrio
A Classe CChartObjectElliottWave3 fornece acesso s propriedades de objetos grficos "Correcting
Wave".

Declarao
class CChartObjectElliottWave3 : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsElliott.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Correcting Wave"

Propriedades
Degree

Obtm/Define a propriedade "Degree"

Lines

Obtm/define a propriedade "Lines"

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

As classes derivadas:
CChartObjectElliottWave5
Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2338

Biblioteca Padro

Create
Cria o objeto grfico "Correcting Wave".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Second price coordinate

price2,

datetime time3,

// Third time coordinate

double

// Third price coordinate

price3

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
time3
[in] Coordenada de tempo do terceiro ponto de ancoragem.
price3
[in] Coordenada de tempo do terceiro ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2339

Biblioteca Padro

Degree (Mtodo Get)


Obtm o valor da propriedade "Degree".
ENUM_ELLIOT_WAVE_DEGREE Degree() const

Valor de retorno
Valor da propriedade do objeto "Degree", atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna WRONG_VALUE.

Degree (Mtodo Set)


Define um novo valor para a propriedade "Degree".
bool Degree(
ENUM_ELLIOT_WAVE_DEGREE degree

// property value

Parmetros
degree
[in] O novo valor para a propriedade "Degree".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2340

Biblioteca Padro

Lines (Mtodo Get)


Obtm o valor da propriedade "Lines".
bool Lines() const

Valor de retorno
Valor da propriedade de objeto "Lines", atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

Lines (Mtodo Set)


Define um novo valor para a propriedade "Lines".
bool Lines(
bool lines

// flag value

Parmetros
lines
[in] O novo valor para a propriedade "Lines".
Valor de retorno
verdadeiro se obteve xito, falso se a flag no mudar.

2000-2015, MetaQuotes Software Corp.

2341

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador do arquivo binrio j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2342

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador do arquivo binrio j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2343

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo de objeto (OBJ_ELLIOTWAVE3 para CChartObjectElliottWave3).

2000-2015, MetaQuotes Software Corp.

2344

Biblioteca Padro

CChartObjectElliottWave5
CChartObjectElliottWave5 uma classe ao acesso simplificado s propriedades de objetos grficos
"Impulse Wave".

Descrio
Classe CChartObjectElliottWave5 fornece o acesso s propriedades de objetos grficos "Impulse
Wave".

Declarao
class CChartObjectElliottWave5 : public CChartObjectElliottWave3

Ttulo
#include <ChartObjects\ChartObjectsElliott.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Impulse Wave"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2345

Biblioteca Padro

Create
Cria o objeto grfico "Impulse Wave".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Second price coordinate

price2,

datetime time3,

// Third time coordinate

double

// Third price coordinate

price3,

datetime time4,

// Fourth time coordinate

double

// Fourth price coordinate

price4,

datetime time5

// Fifth time coordinate

double

// Fifth price coordinate

price5,

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
time3
[in] Coordenada de tempo do terceiro ponto de ancoragem.
price3
[in] Coordenada de preo do terceiro ponto de ancoragem.
time4
[in] Coordenada de tempo do quarto ponto de ancoragem.

2000-2015, MetaQuotes Software Corp.

2346

Biblioteca Padro
price4
[in] Coordenada de preo do quarto ponto de ancoragem.
time5
[in] Coordenada de tempo do quinto ponto de ancoragem.
price5
[in] Coordenada de preo do quinto ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2347

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
identificador do tipo de objeto (OBJ_ELLIOTWAVE5 para CChartObjectElliottWave5).

2000-2015, MetaQuotes Software Corp.

2348

Biblioteca Padro

Objects Shapes
Um grupo de objetos grficos chamado "Shapes".
Esta seo contm os detalhes tcnicos de trabalhar com um grupo de objetos grficos chamado
"Shapes" e uma descrio dos componentes relevantes da Biblioteca Padro MQL5.
Nome da classe

Objeto

CChartObjectRectangle

Objeto grfico "Rectangle"

CChartObjectTriangle

Objeto grfico "Triangle"

CChartObjectEllipse

Objeto grfico "Ellipse"

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2349

Biblioteca Padro

CChartObjectRectangle
CChartObjectRectangle uma classe para acesso simplificado s propriedades do objeto grfico
"Rectangle".

Descrio
Classe CChartObjectRectangle fornece acesso s propriedades do objeto grfico "Rectangle".

Declarao
class CChartObjectRectangle : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsShapes.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Rectangle"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2350

Biblioteca Padro

Create
Cria o objeto grfico "Rectangle".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

long

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Second price coordinate

price2

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
Valor de retorno
verdadeiro se bem-sucedido, 0 se houver erro

2000-2015, MetaQuotes Software Corp.

2351

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_RECTANGLE para CChartObjectRectangle).

2000-2015, MetaQuotes Software Corp.

2352

Biblioteca Padro

CChartObjectTriangle
CChartObjectTriangle uma classe de acesso simplificado s propriedades do objeto grfico para
"Triangle".

Descrio
Classe CChartObjectTriangle fornece acesso s propriedades do objeto grfico para "Triangle".

Declarao
class CChartObjectTriangle : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsShapes.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Triangle"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2353

Biblioteca Padro

Create
Cria o objeto grfico "Triangle".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

long

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Second price coordinate

price2,

datetime time3,

// Third time coordinate

double

// Third price coordinate

price3

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
time3
[in] Coordenada de tempo do terceiro ponto de ancoragem.
price3
[in] Coordenada de preo do terceiro ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se ocorrer erro

2000-2015, MetaQuotes Software Corp.

2354

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_TRIANGLE para CChartObjectTriangle).

2000-2015, MetaQuotes Software Corp.

2355

Biblioteca Padro

CChartObjectEllipse
Classe CChartObjectEllipse uma classe de acesso simplificado s propriedades do objeto grfico
"Ellipse".

Descrio
Classe CChartObjectEllipse fornece acesso s propriedades do objeto grfico "Ellipse".

Declarao
class CChartObjectEllipse : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsShapes.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Ellipse"

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2356

Biblioteca Padro

Create
Cria o objeto grfico "Ellipse".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time1,

// First time coordinate

double

// First price coordinate

price1,

datetime time2,

// Second time coordinate

double

// Second price coordinate

price2,

datetime time3,

// Third time coordinate

double

// Third price coordinate

price3

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time1
[in] Coordenada de tempo do primeiro ponto de ancoragem.
price1
[in] Coordenada de preo do primeiro ponto de ancoragem.
time2
[in] Coordenada de tempo do segundo ponto de ancoragem.
price2
[in] Coordenada de preo do segundo ponto de ancoragem.
time3
[in] Coordenada de tempo do terceiro ponto de ancoragem.
price3
[in] Coordenada de preo do terceiro ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se ocorrer erro

2000-2015, MetaQuotes Software Corp.

2357

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_ELLIPSE para CChartObjectEllipse).

2000-2015, MetaQuotes Software Corp.

2358

Biblioteca Padro

Objects Arrows
Grupo para objetos grficos chamado "Arrows".
Esta seo contm os detalhes tcnicos de trabalho com um grupo de classes de objetos grficos
chamado "Arrow" e uma descrio dos componentes relevantes da Biblioteca Padro MQL5. Em
essncia, o "arrow" um cone a ser exibido ao usurio, correspondendo a um determinado cdigo.
Existem dois tipos de objetos grficos "Arrow" para exibir cones nos grficos:
Objeto "Arrow" que permite especificar o cdigo do cone exibido no grfico.
Objetos de grupo para exibir certos tipos de cones (e o preciso cdigo fixo correspondente).

Classe para "arrow" exibe cones de cdigo arbitrrio


Nome da classe

Nome do objeto arrow

CChartObjectArrow

Arrow

Classe do cdigo fixo para o cone "arrow"


Nome da classe

Nome do objeto arrow

CChartObjectArrowCheck

Verificar

CChartObjectArrowDown

Seta para cima

CChartObjectArrowUp

Seta para baixo

CChartObjectArrowStop

Sinal de Parada

CChartObjectArrowThumbDown

Polegar para cima

CChartObjectArrowThumbUp

Polegar para Baixo

CChartObjectArrowLeftPrice

Etiqueta de Preo Esquerda

CChartObjectArrowRightPrice

Etiqueta de Preo Direito

Veja tambm
Objetos tipo, Mtodos de Vinculao de Objetos Grficos

2000-2015, MetaQuotes Software Corp.

2359

Biblioteca Padro

CChartObjectArrow
Classe CChartObjectArrow uma classe para acesso simplificado a propriedades de objetos grficos
"Arrow".

Descrio
Classe CChartObjectArrow fornece o acesso a propriedades comuns de objetos "Arrow" para todos os
seus descendentes.

Declarao
class CChartObjectArrow : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsArrows.mqh>

Mtodos de classe
Create
Create

Cria objeto grfico "Arrow"

Propriedades
ArrowCode

Obtm/Define propriedade "Arrow Code"

Anchor

Obtm/Define propriedade "Anchor"

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

Veja tambm
Objetos tipo, Mtodos de Vinculao de Objetos Grficos

2000-2015, MetaQuotes Software Corp.

2360

Biblioteca Padro

Create
Cria objeto de grfico "Arrow".
bool Create(
long

chart_id,

// Chart ID

string

name,

// Object Name

int

window,

// Chart Window

datetime time,

// Time

double

price,

// Price

char

code

// Arrow Code

Parmetros
chart_id
[in] Identificador de Grfico (0 - grfico corrente).
name
[in] Nome de objeto (deve ser nico).
window
[in] Nmero de janela do grfico (0 - janela de base).
time
[in] Coordenada de tempo.
price
[in] Coordenada de preo
code
[in] Cdigo "Arrow" (Wingdings).
Valor de retorno
verdadeiro - se bem sucedido, caso contrrio falso.
Exemplo
//--- example for CChartObjectArrow::Create
#include <ChartObjects\ChartObjectsArrows.mqh>
//--void OnStart()
{
CChartObjectArrow arrow;
//--- set object parameters
double price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
if(!arrow.Create(0,"Arrow",0,TimeCurrent(),price,181))
{
//--- arrow create error
printf("Arrow create: Error %d!",GetLastError());
//---

2000-2015, MetaQuotes Software Corp.

2361

Biblioteca Padro
return;
}
//--- use arrow
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

2362

Biblioteca Padro

ArrowCode (Mtodo Get)


Obtm o cdigo do smbolo para "Arrow".
char ArrowCode() const

Valor de retorno
Cdigo de smbolo do objeto "Arrow", atribudo instncia de classe. Se no houver nenhum objeto
atribudo, ele retorna 0.

ArrowCode (Mtodo Set)


Define cdigo do smbolo "Arrow"
bool ArrowCode(
char code

// Code value

Parmetros
code
[in] novo valor para o cdigo "arrow" (Wingdings).
Valor de retorno
verdadeiro - se bem sucedido, falso - se o cdigo no foi alterado.
Exemplo
//--- example for CChartObjectArrow::ArrowCode
#include <ChartObjects\ChartObjectsArrows.mqh>
//--void OnStart()
{
CChartObjectArrow arrow;
char

code=181;

//--- set object parameters


double price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
if(!arrow.Create(0,"Arrow",0,TimeCurrent(),price,code))
{
//--- arrow create error
printf("Arrow create: Error %d!",GetLastError());
//--return;
}
//--- use arrow to possible changes code
//--- . . .
//--- get code of arrow
if(arrow.ArrowCode()!=code)
{
//--- set code of arrow

2000-2015, MetaQuotes Software Corp.

2363

Biblioteca Padro
arrow.ArrowCode(code);
}
//--- use arrow
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

2364

Biblioteca Padro

Anchor (Get Method)


Obtm o tipo de ncora do objeto "Arrow"
ENUM_ARROW_ANCHOR Anchor() const

Valor de retorno
Tipo de ncora do objeto "Arrow", atribudo instncia de classe. Se no houver nenhum objeto
atribudo, ele retorna WRONG_VALUE.

Anchor (Set Method)


Define o tipo de ncora para o objeto "Arrow"
bool Anchor(
ENUM_ARROW_ANCHOR anchor

// new anchor type

Parmetros
anchor
[in] Novo tipo de ncora
Valor de retorno
verdadeiro se obteve xito, falso se o tipo de ncora no mudou.
Exemplo
//--- example for CChartObject::Anchor
#include <ChartObjects\ChartObjectsArrows.mqh>
//--void OnStart()
{
CChartObjectArrow arrow;
ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM;
//--- set object parameters
double price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
if(!arrow.Create(0,"Arrow",0,TimeCurrent(),price,181))
{
//--- arrow create error
printf("Arrow create: Error %d!",GetLastError());
//--return;
}
//--- get anchor of arrow
if(arrow.Anchor()!=anchor)
{
//--- set anchor of arrow
arrow.Anchor(anchor);
}

2000-2015, MetaQuotes Software Corp.

2365

Biblioteca Padro
//--- use arrow
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

2366

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// file handle

Parmetros
file_handle
[in] Manipula o arquivo j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Exemplo
//--- example for CChartObjectArrow::Save
#include <ChartObjects\ChartObjectsArrows.mqh>
//--void OnStart()
{
int

file_handle;

CChartObjectArrow arrow;
//--- set object parameters
double price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
if(!arrow.Create(0,"Arrow",0,TimeCurrent(),price,181))
{
//--- arrow create error
printf("Arrow create: Error %d!",GetLastError());
//--return;
}
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_WRITE|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!arrow.Save(file_handle))
{
//--- file save error
printf("File save: Error %d!",GetLastError());
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
}

2000-2015, MetaQuotes Software Corp.

2367

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// file handle

Parmetros
file_handle
[in] manipula o arquivo j aberto usando a funo FileOpen (...).
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Exemplo
//--- example for CChartObjectArrow::Load
#include <ChartObjects\ChartObjectsArrows.mqh>
//--void OnStart()
{
int

file_handle;

CChartObjectArrow arrow;
//--- open file
file_handle=FileOpen("MyFile.bin",FILE_READ|FILE_BIN|FILE_ANSI);
if(file_handle>=0)
{
if(!arrow.Load(file_handle))
{
//--- file load error
printf("File load: Error %d!",GetLastError());
FileClose(file_handle);
//--return;
}
FileClose(file_handle);
}
//--- use arrow
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

2368

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (por exemplo, para OBJ_ARROW CChartObjectArrow)
Exemplo
//--- example for CChartObjectArrow::Type
#include <ChartObjects\ChartObjectsArrows.mqh>
//--void OnStart()
{
CChartObjectArrow arrow;
//--- get arrow type
int type=arrow.Type();
}

2000-2015, MetaQuotes Software Corp.

2369

Biblioteca Padro

Setas com cdigo fixo


Classes "Setas com cdigo fixo" servem para o acesso simplificado s propriedades dos seguintes
objetos grficos:
Nome da classe

Nome do objeta tipo Seta

CChartObjectArrowCheck

"Arrow Check" (Verificar Seta)

CChartObjectArrowDown

"Arrow Down" (Seta Abaixo)

CChartObjectArrowUp

"Arrow Up" (Seta Acima)

CChartObjectArrowStop

"Arrow Stop" (Seta Parar)

CChartObjectArrowThumbDown

"Good" ("Big finger up") - Sinal Positivo com


Dedo Acima

CChartObjectArrowThumbUp

"Bad" ("Big finger down")- Sinal Negativo com


Dedo Abaixo

CChartObjectArrowLeftPrice

"Left price" (preo a esquerda)

CChartObjectArrowRightPrice

"Right price" (preo a direita)

Descrio
Classe "Setas com cdigo fixo" fornece acesso s propriedades do objeto.

Declaraes
class CChartObjectArrowCheck

: public CChartObjectArrow;

class CChartObjectArrowDown

: public CChartObjectArrow;

class CChartObjectArrowUp

: public CChartObjectArrow;

class CChartObjectArrowStop

: public CChartObjectArrow;

class CChartObjectArrowThumbDown

: public CChartObjectArrow;

class CChartObjectArrowThumbUp

: public CChartObjectArrow;

class CChartObjectArrowLeftPrice

: public CChartObjectArrow;

class CChartObjectArrowRightPrice : public CChartObjectArrow;

Ttulo
<ChartObjects\ChartObjectsArrows.mqh>

Mtodos de classe
Create
Create

Cria um objeto grfico especfico

Propriedades
ArrowCode

"Stub" para o mtodo de mudana do cdigo

2000-2015, MetaQuotes Software Corp.

2370

Biblioteca Padro

Entrada/sada
virtual Type

Mtodo virtual de identificao

Veja tambm
Objetos tipo, Mtodos de Vinculao de Objetos Grficos

2000-2015, MetaQuotes Software Corp.

2371

Biblioteca Padro

Create
Cria objeto grfico tipo "Seta com cdigo fixo".
bool Create(
long

chart_id,

// Chart ID

string

name,

// Object Name

int

window,

// Chart Window

datetime time,

// Time

double

// Price

price

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] nico nome do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time
[in] Coordenada de tempo.
price
[in] Coordenada de preo
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.
Exemplo
//--- example for CChartObjectArrowCheck::Create
//--- example for CChartObjectArrowDown::Create
//--- example for CChartObjectArrowUp::Create
//--- example for CChartObjectArrowStop::Create
//--- example for CChartObjectArrowThumbDown::Create
//--- example for CChartObjectArrowThumbUp::Create
//--- example for CChartObjectArrowLeftPrice::Create
//--- example for CChartObjectArrowRightPrice::Create
#include <ChartObjects\ChartObjectsArrows.mqh>
//--void OnStart()
{
//--- for example, take CChartObjectArrowCheck
CChartObjectArrowCheck arrow;
//--- set object parameters
double price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
if(!arrow.Create(0,"ArrowCheck",0,TimeCurrent(),price))

2000-2015, MetaQuotes Software Corp.

2372

Biblioteca Padro
{
//--- arrow create error
printf("Arrow create: Error %d!",GetLastError());
//--return;
}
//--- use arrow
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

2373

Biblioteca Padro

ArrowCode
Probe alteraes de cdigo tipo "Arrow".
bool ArrowCode(
char code

// code value

Parmetros
code
[in] qualquer valor
Valor de retorno
Sempre falso.
Exemplo
//--- example for CChartObjectArrowCheck::ArrowCode
//--- example for CChartObjectArrowDown::ArrowCode
//--- example for CChartObjectArrowUp::ArrowCode
//--- example for CChartObjectArrowStop::ArrowCode
//--- example for CChartObjectArrowThumbDown::ArrowCode
//--- example for CChartObjectArrowThumbUp::ArrowCode
//--- example for CChartObjectArrowLeftPrice::ArrowCode
//--- example for CChartObjectArrowRightPrice::ArrowCode
#include <ChartObjects\ChartObjectsArrows.mqh>
//--void OnStart()
{
//--- for example, take CChartObjectArrowCheck
CChartObjectArrowCheck arrow;
//--- set object parameters
double price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
if(!arrow.Create(0,"ArrowCheck",0,TimeCurrent(),price))
{
//--- arrow create error
printf("Arrow create: Error %d!",GetLastError());
//--return;
}
//--- set code of arrow
if(!arrow.ArrowCode(181))
{
//--- it is not error
printf("Arrow code can not be changed");
}
//--- use arrow
//--- . . .
}

2000-2015, MetaQuotes Software Corp.

2374

Biblioteca Padro

Type
Retorna grfico tipo identificador de objeto
virtual int Type() const

Valor de retorno
Tipo identificador de objeto(OBJ_ARROW_CHECK for CChartObjectArrowCheck, OBJ_ARROW_DOWN
for CChartObjectArrowDown, OBJ_ARROW_UP for CChartObjectArrowUp, OBJ_ARROW_STOP for
CChartObjectArrowStop,
OBJ_ARROW_THUMB_DOWN
for
CChartObjectArrowThumbDown,
OBJ_ARROW_THUMB_UP
for
CChartObjectArrowThumbUp,
OBJ_ARROW_LEFT_PRICE
for
CChartObjectArrowLeftPrice, OBJ_ARROW_RIGHT_PRICE for CChartObjectArrowRightPrice).
Exemplo
//--- example for CChartObjectArrowCheck::Type
//--- example for CChartObjectArrowDown::Type
//--- example for CChartObjectArrowUp::Type
//--- example for CChartObjectArrowStop::Type
//--- example for CChartObjectArrowThumbDown::Type
//--- example for CChartObjectArrowThumbUp::Type
//--- example for CChartObjectArrowLeftPrice::Type
//--- example for CChartObjectArrowRightPrice::Type
#include <ChartObjects\ChartObjectsArrows.mqh>
//--void OnStart()
{
//--- for example, take CChartObjectArrowCheck
CChartObjectArrowCheck arrow;
//--- get arrow type
int type=arrow.Type();
}

2000-2015, MetaQuotes Software Corp.

2375

Biblioteca Padro

Object Controls
Um grupo de objetos grficos chamado "Object Controls".
Esta seo contm os detalhes tcnicos de trabalhar com um grupo de objetos grficos chamado
"Object Controls e uma descrio dos componentes relevantes da Biblioteca Padro MQL5.
Nome da classe

Objeto

CChartObjectText

Objeto grfico "Text"

CChartObjectLabel

Objeto grfico "Text Label"

CChartObjectEdit

Objeto grfico "Edit"

CChartObjectButton

Objeto grfico "Button"

CChartObjectSubChart

Objeto grfico "Chart"

CChartObjectBitmap

Objeto grfico "Bitmap"

CChartObjectBmpLabel

Objeto grfico "Bitmap Label"

CChartObjectRectLabel

Objeto grfico "Rectangle Label"

Veja tambm
Tipos de objeto, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2376

Biblioteca Padro

CChartObjectText
CChartObjectText uma classe de acesso simplificado s propriedade do objeto grfico "Text".

Descrio
Classe CChartObjectText fornece acesso s propriedade do objeto grfico "Text".

Declarao
class CChartObjectText : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsTxtControls.mqh>

Mtodos de classe
Create
Create

Cria objeto grfico "Text"

Propriedades
Angle

Obtm/Define a propriedade "Angle"

Font

Obtm/Define a propriedade "Font"

FontSize

Obtm/Define a propriedade "FontSize"

Anchor

Obtm/Define propriedade "Anchor"

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

As classes derivadas:
CChartObjectLabel
Veja tambm
Tipos de objetos, Propriedades de objetos, Mtodos de Vinculao de Objeto, Objetos Grficos

2000-2015, MetaQuotes Software Corp.

2377

Biblioteca Padro

Create
Cria o objeto grfico "Text".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time,

// Time coordinate

double

// Price coordinate

price

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time
[in] Coordenadas de tempo do ponto de ancoragem.
price
[in] Coordenadas de preo do ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2378

Biblioteca Padro

Angle (Mtodo Get)


Obtm o valor da propriedade "Angle".
double Angle() const

Valor de retorno
Valor da propriedade "Angle" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, retorna EMPTY_VALUE.

Angle (Mtodo Set)


Define novo valor da propriedade "Angle".
bool Angle(
double angle

// new angle

Parmetros
angle
[in] O novo valor da propriedade "Angle".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2379

Biblioteca Padro

Font (Mtodo Get)


Obtm o valor da propriedade "Font".
string Font() const

Valor de retorno
Valor da propriedade "Font" do objeto, atribudo instncia de classe. Se no houver nenhum objeto
atribudo, ele retorna "".

Font (Mtodo Set)


Define novo valor da propriedade "Font".
bool Font(
string font

// new font

Parmetros
font
[in] O novo valor da propriedade "Font".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2380

Biblioteca Padro

FontSize (Mtodo Get)


Obtm o valor da propriedade "FontSize".
int FontSize() const

Valor de retorno
Valor da propriedade "FontSize" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

FontSize (Mtodo Set)


Define novo valor da propriedade "FontSize".
bool FontSize(
int size

// new font size

Parmetros
size
[in] O novo valor da propriedade "Font".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2381

Biblioteca Padro

Anchor (Mtodo Get)


Obtm o valor da propriedade "Anchor".
ENUM_ANCHOR_POINT Anchor() const

Valor de retorno
Valor da propriedade "Anchor" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna WRONG_VALUE.

Anchor (Mtodo Set)


Define novo valor da propriedade "Anchor".
bool Anchor(
ENUM_ANCHOR_POINT anchor

// new value

Parmetros
anchor
[in] O novo valor da propriedade "Anchor".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2382

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2383

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2384

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_TEXT para CChartObjectText).

2000-2015, MetaQuotes Software Corp.

2385

Biblioteca Padro

CChartObjectLabel
CChartObjectLabel uma classe de acesso simplificado s propriedades do objeto grfico "Label" .

Descrio
Classe CChartObjectLabel fornece acesso s propriedades do objeto grfico "Label"

Declarao
class CChartObjectLabel : public CChartObjectText

Ttulo
#include <ChartObjects\ChartObjectsTxtControls.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Label"

Propriedades
X_Distance

Obtm/Define a propriedade "X_Distance"

Y_Distance

Obtm/Define a propriedade "Y_Distance"

X_Size

Obtm/Define a propriedade "X_Size"

Y_Size

Obtm/Define propriedade "Y_Size"

Corner

Obtm/Define a propriedade "Corner"

Time

"Stub" para mudar a Coordenada de Tempo

Price

"Stub" para mudar a Coordenada de Preo

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

As classes derivadas:
CChartObjectEdit
Veja tambm
Tipos de objetos, Propriedades de objetos, ngulo de grfico, Mtodos de Vinculao de Objeto,
Objetos Grficos

2000-2015, MetaQuotes Software Corp.

2386

Biblioteca Padro

Create
Cria o objeto grfico "Label".
bool Create(
long

chart_id,

// Chart identifier

string name,

// Object name

int

window,

// Chart window

int

X,

// X coordinate

int

// Y coordinate

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
X
[in] Coordenada X.
Y
[in] Coordenada Y.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2387

Biblioteca Padro

X_Distance (Mtodo Get)


Obtm o valor da propriedade "X_Distance".
int X_Distance() const

Valor de retorno
Valor da propriedade "X_Distance" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

X_Distance (Mtodo Set)


Define novo valor da propriedade "X_Distance".
bool X_Distance(
int X

// new value

Parmetros
X
[in] O novo valor da propriedade "X_Distance".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2388

Biblioteca Padro

Y_Distance (Mtodo Get)


Obtm o valor da propriedade "Y_Distance".
int Y_Distance() const

Valor de retorno
Valor da propriedade "Y_Distance" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

Y_Distance (Mtodo Set)


Define novo valor da propriedade "Y_Distance".
bool Y_Distance(
int Y

// new value

Parmetros
Y
[in] O novo valor da propriedade "Y_Distance".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2389

Biblioteca Padro

X_Size
Obtm o valor da propriedade "X_Size".
int X_Size() const

Valor de retorno
Valor da propriedade "X_Size" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

2000-2015, MetaQuotes Software Corp.

2390

Biblioteca Padro

Y_Size
Obtm o valor da propriedade "Y_Size".
int Y_Size() const

Valor de retorno
Valor da propriedade "Y_Size" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

2000-2015, MetaQuotes Software Corp.

2391

Biblioteca Padro

Corner (Mtodo Get)


Obtm o valor da propriedade "Corner".
ENUM_BASE_CORNER Corner() const

Valor de retorno
Valor da propriedade "Corner" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna WRONG_VALUE.

Corner (Mtodo Set)


Define novo valor da propriedade "Corner".
bool Corner(
ENUM_BASE_CORNER corner

// new value

Parmetros
corner
[in] O novo valor da propriedade "Corner".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2392

Biblioteca Padro

Time
Probe mudanas da coordenada do tempo.
bool Time(
datetime time

// any value

Parmetros
time
[in] Qualquer valor do tipo "datetime".
Valor de retorno
sempre falso.

2000-2015, MetaQuotes Software Corp.

2393

Biblioteca Padro

Price
Probe mudanas da coordenada do preo.
bool Price(
double price

// any value

Parmetros
price
[in] Qualquer valor do tipo "double".
Valor de retorno
sempre falso.

2000-2015, MetaQuotes Software Corp.

2394

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2395

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2396

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_LABEL para CChartObjectLabel).

2000-2015, MetaQuotes Software Corp.

2397

Biblioteca Padro

CChartObjectEdit
CChartObjectEdit uma classe de acesso simplificado s propriedades do objeto grfico "Edit".

Descrio
Classe CChartObjectEdit fornece acesso s propriedades do objeto grfico"Edit".

Declarao
class CChartObjectEdit : public CChartObjectLabel

Ttulo
#include <ChartObjects\ChartObjectsTxtControls.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Edit"

Propriedades
TextAlign

Obtm/Define a propriedade "TextAlign"

X_Size

Obtm a propriedade "X Size"

Y_Size

Obtm a propriedade "Y Size"

BackColor

Obtm/define a propriedade "Background Color"

BorderColor

Obtm/define a propriedade "Border Color"

ReadOnly

Obtm/define a propriedade "Read Only"

Angle

Obtm/define a propriedade "Angle"

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

As classes derivadas:
CChartObjectButton
Veja tambm
Tipos de objetos, Propriedades de objetos, ngulo de grfico, Mtodos de Vinculao de Objeto,
Objetos Grficos

2000-2015, MetaQuotes Software Corp.

2398

Biblioteca Padro

Create
Cria o objeto grfico "Edit".
bool Create(
long

chart_id,

// Chart identifier

string name,

// Object name

int

window,

// Chart window

int

X,

// X coordinate

int

Y,

// Y coordinate

int

sizeX,

// X size

int

sizeY

// Y size

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
X
[in] Coordenada X.
Y
[in] Coordenada Y.
sizeX
[in] Tamanho de X.
sizeY
[in] Tamanho de Y.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2399

Biblioteca Padro

TextAlign (Mtodo Get)


Obtm o valor da propriedade "TextAlign" (modo de alinhamento do texto).
ENUM_ALIGN_MODE TextAlign() const

Valor de retorno
Valor da propriedade "TextAlign" do objeto, atribudo instncia de classe.

TextAlign (Mtodo Set)


Define o valor da propriedade "TextAlign" (Alinhamento modo texto).
bool TextAlign(
ENUM_ALIGN_MODE align

// new value

Parmetros
align
[in] O novo valor da propriedade "TextAlign".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2400

Biblioteca Padro

X_Size
Define novo valor da propriedade "X_Size".
bool X_Size(
int size

// new size

Parmetros
size
[in] O novo valor da propriedade "X_Size".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2401

Biblioteca Padro

Y_Size
Define novo valor da propriedade "Y_Size".
bool Y_Size(
int size

// new size

Parmetros
size
[in] O novo valor da propriedade "Y_Size".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2402

Biblioteca Padro

BackColor (Mtodo Get)


Obtm o valor da propriedade "BackColor".
color BackColor() const

Valor de retorno
Valor da propriedade "BackColor" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna CLR_NONE.

BackColor (Mtodo Set)


Define novo valor da propriedade "BackColor".
bool BackColor(
color new_color

// new background color

Parmetros
new_color
[in] O novo valor da propriedade "BackColor".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2403

Biblioteca Padro

BorderColor (Mtodo Get)


Obtm o valor da propriedade "Border Color".
color BorderColor() const

Valor de retorno
Valor da propriedade "Border Color" do objeto, atribudo instncia de classe. Se no houver
nenhum objeto atribudo, ele retorna CLR_NONE.

BorderColor (Mtodo Set)


Define novo valor da propriedade "Border Color".
bool BorderColor(
color new_color

// new border color

Parmetros
new_color
[in] O novo valor da propriedade "Border Color".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2404

Biblioteca Padro

ReadOnly (Mtodo Get)


Obtm o valor da propriedade "Read Only".
bool ReadOnly() const

Valor de retorno
O valor da propriedade do objeto "Read Only", atribudo instncia de classe. Se no houver
nenhum objeto atribudo, ele retorna falso.

ReadOnly (Mtodo Set)


Define novo valor da propriedade "Read Only.
bool ReadOnly(
const

bool flag

// new value

Parmetros
flag
[in] O novo valor para da propriedade "Read Only.
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2405

Biblioteca Padro

Angle
Probe alteraes da propriedade "Angle".
bool Angle(
double angle

// any value

Parmetros
angle
[in] Qualquer valor do tipo "double".
Valor de retorno
sempre falso.

2000-2015, MetaQuotes Software Corp.

2406

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2407

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2408

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_EDIT para CChartObjectEdit).

2000-2015, MetaQuotes Software Corp.

2409

Biblioteca Padro

CChartObjectButton
CChartObjectButton uma classe simplificada de acesso s propriedades do objeto grfico "Button".

Descrio
Class CChartObjectButton fornece acesso s propriedades do objeto grfico "Button".

Declarao
class CChartObjectButton : public CChartObjectEdit

Ttulo
#include <ChartObjects\ChartObjectsTxtControls.mqh>

Mtodos de classe
Create
Create

Formulrio herdado da CChartObjectEdit

Propriedades
State

Obtm/Define
Desligado)

estado

do

boto

(Ligado/

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objetos, Propriedades de objetos, ngulo de grfico, Mtodos de Vinculao de Objeto,
Objetos Grficos

2000-2015, MetaQuotes Software Corp.

2410

Biblioteca Padro

State (Mtodo Get)


Obtm o valor da propriedade "State".
bool State() const

Valor de retorno
Valor da propriedade "State" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

State (Mtodo Set)


Define novo valor da propriedade "State".
bool State(
bool state

// new state value

Parmetros
X
[in] O novo valor da propriedade "State".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2411

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2412

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2413

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_BUTTON para CChartObjectButton).

2000-2015, MetaQuotes Software Corp.

2414

Biblioteca Padro

CChartObjectSubChart
CChartObjectSubChart uma classe de acesso simplificado s propriedades do objeto grfico "Chart".

Descrio
Classe CChartObjectSubChart fornece acesso s propriedades do objeto grfico "Chart".

Declarao
class CChartObjectSubChart : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectSubChart.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Chart"

Propriedades
X_Distance

Obtm/Define a propriedade "X_Distance"

Y_Distance

Obtm/Define a propriedade "Y_Distance"

Corner

Obtm/Define a propriedade "Corner"

X_Size

Obtm/Define a propriedade "X_Size"

Y_Size

Obtm/Define propriedade "Y_Size"

Symbol

Obtm/Define a propriedade "Symbol"

Period

Obtm/Define a propriedade "Period"

Scale

Obtm/Define a propriedade "Scale"

DateScale

Obtm/Define propriedade "Show date scale"

PriceScale

Obtm/Define propriedade "Show price scale"

Time

"Stub" para alterao da coordenada de tempo

Price

"Stub" para alterao da coordenada de preo

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

Veja tambm

2000-2015, MetaQuotes Software Corp.

2415

Biblioteca Padro
Tipos de objetos, Propriedades de objetos, ngulo de grfico, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2416

Biblioteca Padro

Create
Cria o objeto grfico "SubChart".
bool Create(
long

chart_id,

// Chart identifier

string name,

// Object name

int

window,

// Chart window

int

X,

// X coordinate

int

Y,

// Y coordinate

int

sizeX,

// X size

int

sizeY

// Y size

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
X
[in] Coordenada X.
Y
[in] Coordenada Y.
sizeX
[in] Tamanho de X.
sizeY
[in] Tamanho de Y.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2417

Biblioteca Padro

X_Distance (Mtodo Get)


Obtm o valor da propriedade "X_Distance".
int X_Distance() const

Valor de retorno
Valor da propriedade "X_Distance" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

X_Distance (Mtodo Set)


Define novo valor da propriedade "X_Distance".
bool X_Distance(
int X

// new value

Parmetros
X
[in] O novo valor da propriedade "X_Distance".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2418

Biblioteca Padro

Y_Distance (Mtodo Get)


Obtm o valor da propriedade "Y_Distance".
int Y_Distance() const

Valor de retorno
Valor da propriedade "Y_Distance" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

Y_Distance (Mtodo Set)


Define novo valor da propriedade "Y_Distance".
bool Y_Distance(
int Y

// new value

Parmetros
Y
[in] O novo valor da propriedade "Y_Distance".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2419

Biblioteca Padro

Corner (Mtodo Get)


Obtm o valor da propriedade "Corner".
ENUM_BASE_CORNERCorner() const

Valor de retorno
Valor da propriedade "Corner" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna WRONG_VALUE.

Corner (Mtodo Set)


Define novo valor da propriedade "Corner".
bool Corner(
ENUM_BASE_CORNER corner

// new value

Parmetros
corner
[in] O novo valor da propriedade "Corner".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2420

Biblioteca Padro

X_Size (Mtodo Get)


Obtm o valor da propriedade "X_Size".
int X_Size() const

Valor de retorno
Valor da propriedade "X_Size" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

X_Size (Mtodo Set)


Define novo valor da propriedade "X_Size".
bool X_Size(
int X

// new value

Parmetros
X
[in] O novo valor da propriedade "X_Size".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2421

Biblioteca Padro

Y_Size (Mtodo Get)


Obtm o valor da propriedade "Y_Size".
int Y_Size() const

Valor de retorno
Valor da propriedade "Y_Size" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

Y_Size (Mtodo Set)


Define novo valor da propriedade "Y_Size".
bool Y_Size(
int Y

// new value

Parmetros
Y
[in] O novo valor da propriedade "Y_Size".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2422

Biblioteca Padro

Symbol (Mtodo Get)


Obtm o valor da propriedade "Symbol".
string Symbol() const

Valor de retorno
Valor da propriedade "Symbol" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna "".

Symbol (Mtodo Set)


Define novo valor da propriedade "Symbol".
bool Symbol(
string symbol

// new symbol

Parmetros
symbol
[in] O novo valor da propriedade "Smbolo".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2423

Biblioteca Padro

Period (Mtodo Get)


Obtm o valor da propriedade "Period".
int Period() const

Valor de retorno
Valor da propriedade "Period" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

Period (Mtodo Set)


Define novo valor da propriedade "Period".
bool Period(
int period

// new period

Parmetros
period
[in] O novo valor da propriedade "Period".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2424

Biblioteca Padro

Scale (Mtodo Get)


Obtm o valor da propriedade "Scale".
double Scale() const

Valor de retorno
Valor da propriedade do objeto "Scale", atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna EMPTY_VALUE.

Scale (Mtodo Set)


Define um novo valor para a propriedade "Scale".
bool Scale(
double scale

// new scale

Parmetros
scale
[in] O novo valor para a propriedade "Scale".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2425

Biblioteca Padro

DateScale (Mtodo Get)


Obtm o valor da propriedade "DateScale".
bool DateScale() const

Valor de retorno
Valor da Propriedade do objeto "DateScale", atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

DateScale (Mtodo Set)


Define novo valor da propriedade "DateScale".
bool DateScale(
bool scale

// new value

Parmetros
scale
[in] O novo valor da propriedade "DateScale".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2426

Biblioteca Padro

PriceScale (Mtodo Get)


Obtm o valor da propriedade "PriceScale".
bool PriceScale() const

Valor de retorno
Valor da propriedade do objeto "PriceScale", atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

PriceScale (Mtodo Set)


Define novo valor da propriedade "PriceScale".
bool PriceScale(
bool scale

// new value

Parmetros
scale
[in] O novo valor da propriedade "PriceScale".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2427

Biblioteca Padro

Time
Probe mudanas da coordenada do tempo.
bool Time(
datetime time

// any value

Parmetros
time
[in] Qualquer valor do tipo "datetime".
Valor de retorno
sempre falso.

2000-2015, MetaQuotes Software Corp.

2428

Biblioteca Padro

Price
Probe mudanas da coordenada do preo.
bool Price(
double price

// any value

Parmetros
price
[in] Qualquer valor do tipo "double".
Valor de retorno
sempre falso.

2000-2015, MetaQuotes Software Corp.

2429

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2430

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2431

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_CHART para CChartObjectSubChart).

2000-2015, MetaQuotes Software Corp.

2432

Biblioteca Padro

CChartObjectBitmap
CChartObjectBitmap uma classe para acesso simplificado s propriedades do objeto grfico
"Bitmap".

Descrio
Classe CChartObjectBitmap fornece acesso s propriedades do objeto grfico "Bitmap".<

Declarao
class CChartObjectBitmap : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsBmpControls.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "Bitmap"

Propriedades
BmpFile

Obtm/Define a propriedade "BMP Filename"

X_Offset

Obtm/Define a propriedade "X_Offset"

Y_Offset

Obtm/Define a propriedade "X_Offset"

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objetos, Propriedades de objetos, Objetos grficos

2000-2015, MetaQuotes Software Corp.

2433

Biblioteca Padro

Create
Cria o objeto grfico "Bitmap".
bool Create(
long

chart_id,

// Chart identifier

string

name,

// Object name

int

window,

// Chart window

datetime time,

// Time coordinate

double

// Price coordinate

price

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto para criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
time
[in] Coordenadas de tempo do ponto de ancoragem.
price
[in] Coordenadas de preo do ponto de ancoragem.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2434

Biblioteca Padro

BmpFile (Get Method)


Obtm o valor da propriedade "BmpFile".
string BmpFile() const

Valor de retorno
Valor da propriedade "BmpFile" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

BmpFile (Set Method)


Define um novo valor propriedade "BmpFile".
bool BmpFile(
string name

// new file name

Parmetros
name
[in] O novo valor da propriedade "BmpFile".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2435

Biblioteca Padro

X_Offset (Mtodo Get)


Obtm o valor da propriedade "X_Offset" (coordenada X do canto superior esquerdo da rea retangular
visvel nos objetos grficos).
int X_Offset() const

Valor de retorno
Valor da propriedade "X_Offset" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

X_Offset (Mtodo Set)


Define um novo valor para a propriedade "X_Offset" (coordenada X do canto superior esquerdo da rea
retangular visvel nos objetos grficos). O valor definido em pixels em relao ao canto superior
esquerdo da imagem original.
bool X_Offset(
int X

// new value

Parmetros
X
[in] O novo valor da propriedade "X_Offset".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2436

Biblioteca Padro

Y_Offset (Mtodo Get)


Obtm o valor da propriedade "Y_Offset" (coordenada Y do canto superior esquerdo da rea retangular
visvel nos objetos grficos).
int Y_Offset() const

Valor de retorno
Valor da propriedade "Y_Offset" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

Y_Offset (Mtodo Set)


Define um novo valor para a propriedade "Y_Offset" (coordenada Y do canto superior esquerdo da rea
retangular visvel nos objetos grficos). O valor definido em pixels em relao ao canto superior
esquerdo da imagem original.
bool Y_Offset(
int Y

// new value

Parmetros
Y
[in] O novo valor para a propriedade "Y_Offset".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2437

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2438

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2439

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto(OBJ_BITMAP para CChartObjectBitmap).

2000-2015, MetaQuotes Software Corp.

2440

Biblioteca Padro

CChartObjectBmpLabel
CChartObjectBmpLabel uma classe para acesso simplificado s propriedades do objeto grfico
"Bitmap Label".

Descrio
Classe CChartObjectBmpLabel fornece acesso s propriedades do objeto grfico "Bitmap Label".

Declarao
class CChartObjectBmpLabel : public CChartObject

Ttulo
#include <ChartObjects\ChartObjectsBmpControls.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "BmpLabel"

Propriedades
X_Distance

Obtm/Define a propriedade "X_Distance"

Y_Distance

Obtm/Define a propriedade "Y_Distance"

X_Offset

Obtm/Define a propriedade "X_Offset"

Y_Offset

Obtm/Define a propriedade "X_Offset"

Corner

Obtm/Define a propriedade "Corner"

X_Size

Obtm/Define a propriedade "X_Size"

Y_Size

Obtm/Define propriedade "Y_Size"

BmpFileOn

Obtm/Define a propriedade "BmpFileOn"


quando o boto estiver ligado (On)

BmpFileOff

Obtm/Define a propriedade "BmpFileOff"


quando o boto estiver desligado (Off)

State

Obtm/Define
a
propriedade
State" (Ligado/Desligado)

Time

"Stub" para alterao da coordenada de tempo

Price

"Stub" para alterao da coordenada de preo

"Button

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

2000-2015, MetaQuotes Software Corp.

2441

Biblioteca Padro

virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objetos, Propriedades de objetos, ngulo de grfico, Objetos grfico

2000-2015, MetaQuotes Software Corp.

2442

Biblioteca Padro

Create
Cria o objeto grfico "BmpLabel".
bool Create(
long

chart_id,

// Chart identifier

string name,

// Object name

int

window,

// Chart window

int

X,

// X coordinate

int

// Y coordinate

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto a criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
X
[in] Coordenada X.
Y
[in] Coordenada Y.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2443

Biblioteca Padro

X_Distance (Mtodo Get)


Obtm o valor da propriedade "X_Distance".
int X_Distance() const

Valor de retorno
Valor da propriedade "X_Distance" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

X_Distance (Mtodo Set)


Define novo valor da propriedade "X_Distance".
bool X_Distance(
int X

// new value

Parmetros
X
[in] O novo valor da propriedade "X_Distance".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2444

Biblioteca Padro

Y_Distance (Mtodo Get)


Obtm o valor da propriedade "Y_Distance".
int Y_Distance() const

Valor de retorno
Valor da propriedade "Y_Distance" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

Y_Distance (Mtodo Set)


Define novo valor da propriedade "Y_Distance".
bool Y_Distance(
int Y

// new value

Parmetros
Y
[in] O novo valor da propriedade "Y_Distance".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2445

Biblioteca Padro

X_Offset (Mtodo Get)


Obtm o valor da propriedade "X_Offset" (coordenada X do canto superior esquerdo da rea retangular
visvel nos objetos grficos).
int X_Offset() const

Valor de retorno
Valor da propriedade "X_Offset" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

X_Offset (Mtodo Set)


Define um novo valor para a propriedade "X_Offset" (coordenada X do canto superior esquerdo da rea
retangular visvel nos objetos grficos). O valor definido em pixels em relao ao canto superior
esquerdo da imagem original.
bool X_Offset(
int X

// new value

Parmetros
X
[in] O novo valor da propriedade "X_Offset".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2446

Biblioteca Padro

Y_Offset (Mtodo Get)


Obtm o valor da propriedade "Y_Offset" (coordenada Y do canto superior esquerdo da rea retangular
visvel nos objetos grficos).
int Y_Offset() const

Valor de retorno
Valor da propriedade "Y_Offset" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

Y_Offset (Mtodo Set)


Define um novo valor para a propriedade "Y_Offset" (coordenada Y do canto superior esquerdo da rea
retangular visvel nos objetos grficos). O valor definido em pixels em relao ao canto superior
esquerdo da imagem original.
bool Y_Offset(
int Y

// new value

Parmetros
Y
[in] O novo valor para a propriedade "Y_Offset".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2447

Biblioteca Padro

Corner (Mtodo Get)


Obtm o valor da propriedade "Corner".
ENUM_BASE_CORNERCorner() const

Valor de retorno
Valor da propriedade "Corner" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna WRONG_VALUE.

Corner (Set Method)


Define novo valor da propriedade "Corner".
bool Corner(
ENUM_BASE_CORNER corner

// new value

Parmetros
corner
[in] O novo valor da propriedade "Corner".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2448

Biblioteca Padro

X_Size
Obtm o valor da propriedade "X_Size".
int X_Size() const

Valor de retorno
Valor da propriedade "X_Size" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

2000-2015, MetaQuotes Software Corp.

2449

Biblioteca Padro

Y_Size
Obtm o valor da propriedade "Y_Size".
int Y_Size() const

Valor de retorno
Valor da propriedade "Y_Size" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

2000-2015, MetaQuotes Software Corp.

2450

Biblioteca Padro

BmpFileOn (Mtodo Get)


Obtm o valor da propriedade "BmpFileOn".
string BmpFileOn() const

Valor de retorno
Valor da propriedade "BmpFileOn" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna "".

BmpFileOn (Mtodo Set)


Define novo valor da propriedade "BmpFileOn".
bool BmpFileOn(
string name

// file name

Parmetros
name
[in] O novo valor da propriedade "BmpFileOn".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2451

Biblioteca Padro

BmpFileOff (Mtodo Get)


Obtm o valor da propriedade "BmpFileOff".
string BmpFileOff() const

Valor de retorno
Valor da propriedade "BmpFileOff" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna "".

BmpFileOff (Mtodo Set)


Define novo valor da propriedade "BmpFileOff".
bool BmpFileOff(
string name

// file name

Parmetros
name
[in] O novo valor da propriedade "BmpFileOff".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2452

Biblioteca Padro

State (Get Method)


Obtm o valor da propriedade "State".
bool State() const

Valor de retorno
Valor da propriedade "State" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

State (Set Method)


Define novo valor da propriedade "State".
bool State(
bool state

// new state value

Parmetros
state
[in] O novo valor da propriedade "State".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2453

Biblioteca Padro

Time
Probe mudanas da coordenada do tempo.
bool Time(
datetime time

// any value

Parmetros
time
[in] Qualquer valor do tipo "datetime".
Valor de retorno
sempre falso.

2000-2015, MetaQuotes Software Corp.

2454

Biblioteca Padro

Price
Probe mudanas da coordenada do preo.
bool Price(
double price

// any value

Parmetros
price
[in] Qualquer valor do tipo "double".
Valor de retorno
sempre falso.

2000-2015, MetaQuotes Software Corp.

2455

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2456

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2457

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_BITMAP_LABEL para CChartObjectBmpLabel).

2000-2015, MetaQuotes Software Corp.

2458

Biblioteca Padro

CChartObjectRectLabel
CChartObjectRectLabel uma classe de acesso simplificado s propriedades do objeto grfico
"Rectangle Label".

Descrio
Classe CChartObjectRectLabel fornece acesso s propriedades do objeto grfico "Rectangle Label".

Declarao
class CChartObjectRectLabel : public CChartObjectLabel

Ttulo
#include <ChartObjects\ChartObjectsTxtControls.mqh>

Mtodos de classe
Create
Create

Cria o objeto grfico "RectLabel"

Propriedades
X_Size

Define o tamanho horizontal

Y_Size

Define o tamanho vertical

BackColor

Obtm/Define a cor de segundo plano (fundo)

Angle

Um mtodo "Stub"

BorderType

Obtm/Define o tipo de borda

Entrada/sada
virtual Save

Mtodo virtual para escrever o arquivo

virtual Load

Mtodo virtual para a leitura a partir do arquivo

virtual Type

Mtodo virtual de identificao

Veja tambm
Tipos de objetos, Propriedades de objetos, Objetos grficos

2000-2015, MetaQuotes Software Corp.

2459

Biblioteca Padro

Create
Cria o objeto grfico "CChartObjectRectLabel".
bool Create(
long

chart_id,

// ID Grafico

string name,

// Object name

int

window,

// Chart window

int

X,

// X coordinate

int

Y,

// Y coordinate

int

sizeX,

// Horizontal size

int

sizeY

// Vertical size

Parmetros
chart_id
[in] Identificador de grfico (0 - grfico corrente).
name
[in] Um nome exclusivo do objeto a criar.
window
[in] Nmero de janela do grfico (0 - janela de base).
X
[in] Coordenada X.
Y
[in] Coordenada Y.
sizeX
[in] Tamanho horizontal.
sizeY
[in] Tamanho vertical.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2460

Biblioteca Padro

X_Size
Define o valor da propriedade "X_Size".
bool X_Size(
int size

// Horizontal size

Parmetros
size
[in] Novo tamanho horizontal.
Valor de retorno
veradeiro se obteve xito, falso se a propriedade no foi alterada.
Observao
Para obter os valores das propriedades X_Size e
CChartObjectLabel.

Y_Size usar o mtodo de classe pai

2000-2015, MetaQuotes Software Corp.

2461

Biblioteca Padro

Y_Size
Define o valor da propriedade "Y_Size".
bool Y_Size(
int size

// Vertical size

Parmetros
size
[in] Novo tamanho vertical.
Valor de retorno
veradeiro se obteve xito, falso se a propriedade no foi alterada.
Observao
Para obter os valores das propriedades X_Size e
CChartObjectLabel.

Y_Size usar o mtodo de classe pai

2000-2015, MetaQuotes Software Corp.

2462

Biblioteca Padro

BackColor
Obtm a cor de segundo plano (fundo).
color BackColor() const

Valor de retorno
A cor do fundo do objeto, atribudo instncia de classe. Se no houver nenhum objeto atribudo,
ele retorna 0.

BackColor
Define a cor de segundo plano (fundo).
bool BackColor(
color new_color

// New color

Parmetros
new_color
[in] Nova cor de segundo plano (fundo).
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2463

Biblioteca Padro

Angle
Um mtodo "stub".
bool Angle(
double angle

// any value

Parmetros
angle
[in] Qualquer valor do tipo double.
Valor de retorno
Sempre falso.

2000-2015, MetaQuotes Software Corp.

2464

Biblioteca Padro

BorderType
Obtm o tipo de borda.
int BorderType() const

Valor de retorno
Tipo de borda do objeto, atribudo instncia de classe. Se no houver nenhum objeto atribudo,
ele retorna 0.

BorderType
Define o tipo de borda.
bool BorderType(
int type

// Border type

Parmetros
type
[in] Novo tipo de borda.
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2465

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2466

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2467

Biblioteca Padro

Type
Retorna o identificador do tipo objeto grfico.
virtual int Type() const

Valor de retorno
Identificador do tipo objeto (OBJ_RECTANGLE_LABEL para CChartObjectRectangleLabel).

2000-2015, MetaQuotes Software Corp.

2468

Biblioteca Padro

CCanvas
CCanvas uma classe para simplificar a criao de imagens customizadas.

Descrio
CCanvas permite a criao de um recurso grfico (com ou sem vinculao a um objeto grfico) e
desenhos grficos primitivos.

Declarao
class CCanvas

Ttulo
#include <Canvas\Canvas.mqh>

Mtodos de Classe por Grupos


Criao
Create

Cria um recurso grfico sem vinculao a um


objeto grfico

CreateBitmap

Cria um recurso grfico vinculado a um objeto


grfico

CreateBitmapLabel

Cria um recurso grfico vinculado a um objeto


grfico

Destroy

Destri o recurso grfico

Propriedades
ChartObjectName

Recebe o nome de um objeto grfico vinculado

ResourceName

Recebe o nome de um recurso grfico

Width

Recebe a largura de um recurso grfico

Height

Recebe o comprimento de um recurso grfico

LineStyleSet

Configura o estilo de linha

Atualizando um objeto na tela


Update

Apresenta mudanas na tela

Resize

Redimensiona um recurso grfico

Apagando/preenchendo com cor


Erase

Apaga ou preenche com cores especficas

Acesso de dados
PixelGet

Recebe a cor do ponto com as coordenadas


determinadas

2000-2015, MetaQuotes Software Corp.

2469

Biblioteca Padro

PixelSet

Recebe a cor do ponto com as coordenadas


determinadas

Desenho primitivos
LineVertical

Desenha uma linha vertical

LineHorizontal

Desenha uma linha horizontal

Line

Desenha uma linha mo livre

Polyline

Desenha vrias linhas

Polygon

Desenha um polgono

Rectangle

Desenha um retngulo

Circle

Desenha um crculo

Tringulo

Desenha um tringulo

Desenhos primitivos preenchidos


FillRectangle

Desenha um retngulo preenchido

FillCircle

Desenha um crculo preenchido

FillTriangle

Desenha um tringulo preenchido

Fill

Preenche uma rea

Desenhos primitivos suavizados


PixelSetAA

Desenha um pixel

LineAA

desenha uma linha

PolylineAA

Desenha vrias linhas

PolygonAA

Desenha um polgono

TriangleAA

Desenha um tringulo

CircleAA

Desenha um crculo

Text
FontSet

Configura os parmetros da fonte

FontNameSet

Configura o nome da fonte

FontSizeSet

Configura o tamanho da fonte

FontFlagsSet

Configura as bandeiras da fonte

FontAngleSet

Define ngulo de inclinao da fonte

FontGet

Recebe os parmetros da fonte

FontNameGet

Recebe o nome da fonte

FontSizeGet

Recebe o tamanho da fonte

FontFlagsGet

Recebe as flags da fonte

2000-2015, MetaQuotes Software Corp.

2470

Biblioteca Padro

FontAngleGet

Recebe o ngulo inclinado da fonte

TextOut

Exibe texto

TextWidth

Recebe a largura do texto

TextHeight

Recebe o comprimento do texto

TextSize

Recebe o tamanho do texto

Transparncia
TransparentLevelSet

Configura o nvel de transparncia

Entrada/sada
LoadFromFile

L uma imagem de um arquivo BMP

2000-2015, MetaQuotes Software Corp.

2471

Biblioteca Padro

ChartObjectName
Recebe o nome de um objeto grfico vinculado.
string ChartObjectName();

Valor de retorno
O nome de um objeto grfico vinculado

2000-2015, MetaQuotes Software Corp.

2472

Biblioteca Padro

Circle
Desenha um crculo
void Circle(
int

x,

// X coordinate

int

y,

// Y coordinate

int

r,

// radius

const uint clr

// color

);

Parmetros
x
[in] coordenada X do centro do crculo.
y
[in] coordenada y do centro do crculo.
r
[in] Raio do crculo.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2473

Biblioteca Padro

CircleAA
Desenha um crculo usando um algoritmo de suavizao de borda
void CircleAA(
const int

x,

// X coordinate

const int

y,

// Y coordinate

const double r,

// radius

const uint

// color

clr

);

Parmetros
x
[in] coordenada X do centro do crculo.
y
[in] coordenada y do centro do crculo.
r
[in] Raio do crculo.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2474

Biblioteca Padro

Create
Cria um recurso grfico sem ligar a um objeto grfico.
virtual bool Create(
const string

name,

// name

const int

width,

// width

const int

height,

// height

ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA

// format

);

Parmetros
name
[in] Base para o nome do recurso grfico. Um nome de recurso gerado durante a criao,
adicionando uma seqncia pseudo aleatria.
width
[in] Largura (tamanho ao longo do eixo X) em pixels.
height
[in] Altura (tamanho ao longo do eixo Y) em pixels.
clrfmt=COLOR_FORMAT_XRGB_NOALPHA
[in] Mtodo de processamento de cores. Veja a descrio da funo ResourceCreate() para saber
mais sobre os mtodos de processamento de cores.
Valor de retorno
verdade - se bem sucedido, caso contrrio - falso.

2000-2015, MetaQuotes Software Corp.

2475

Biblioteca Padro

CreateBitmap
Cria um recurso grfico vinculado a um objeto grfico.
1. Cria um recurso grfico na janela principal do grfico corrente.
bool CreateBitmap(
const string

name,

// name

const datetime

time,

// time

const double

price,

// price

const int

width,

// width

const int

height,

// height

ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA

// format

);

2. Cria um recurso grfico, usando um ID de grfico e um nmero da sub-janela.


bool CreateBitmap(
const long

chart_id,

// chart ID

const int

subwin,

// subwindow number

const string

name,

// name

const datetime

time,

// time

const double

price,

// price

const int

width,

// width

const int

height,

// height

ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA

// format

);

Parmetros
chart_id
[in] ID Chart para criar um objeto.
subwin
[in] Nmero do Grfico na sub-janela para criar um objeto.
name
[in] Nome do objeto grfico e uma base para um nome de recurso grfico.
time
[in] Ancoragem de objeto grfico com coordenada de tempo.
price
[in] Ancoragem de objeto grfico com coordenada de preo.
width
[in] Recurso grfico da largura (tamanho ao longo do eixo X) em pixels.
height
[in] Recurso grfico da largura (tamanho ao longo do eixo Y) em pixels.
clrfmt=COLOR_FORMAT_XRGB_NOALPHA

2000-2015, MetaQuotes Software Corp.

2476

Biblioteca Padro
[in] Mtodo de processamento de cores. Veja a descrio da funo ResourceCreate() para saber
mais sobre os mtodos de processamento de cores.
Valor de retorno
verdade - se bem sucedido, caso contrrio - falso.
Observao
Se a primeira verso funo for usada, o objeto criado na janela principal do grfico corrente.
Tamanho do objeto coincide com o tamanho de um recurso grfico.

2000-2015, MetaQuotes Software Corp.

2477

Biblioteca Padro

CreateBitmapLabel
Cria um recurso grfico vinculado a um objeto grfico.
1. Cria um recurso grfico na janela principal do grfico corrente.
bool CreateBitmapLabel(
const string

name,

// name

const int

x,

// X coordinate

const int

y,

// Y coordinate

const int

width,

// width

const int

height,

// height

ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA

// format

);

2. Cria um recurso grfico, usando um ID de grfico e um nmero da sub-janela.


bool CreateBitmapLabel(
const long

chart_id,

// chart ID

const int

subwin,

// subwindow number

const string

name,

// name

const int

x,

// X coordinate

const int

y,

// Y coordinate

const int

width,

// width

const int

height,

// height

ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA

// format

);

Parmetros
chart_id
[in] ID Chart para criar um objeto.
subwin
[in] Nmero do Grfico na sub-janela para criar um objeto.
name
[in] Nome do objeto grfico e uma base para um nome de recurso grfico.
x
[in] Chart object anchor point X coordinate.
y
[in] Chart object anchor point Y coordinate.
width
[in] Recurso grfico da largura (tamanho ao longo do eixo X) em pixels.
height
[in] Recurso grfico da largura (tamanho ao longo do eixo Y) em pixels.
clrfmt=COLOR_FORMAT_XRGB_NOALPHA

2000-2015, MetaQuotes Software Corp.

2478

Biblioteca Padro
[in] Mtodo de processamento de cores. Veja a descrio da funo ResourceCreate() para saber
mais sobre os mtodos de processamento de cores.
Valor de retorno
verdade - se bem sucedido, caso contrrio - falso.
Observao
Se a primeira verso funo for usada, o objeto criado na janela principal do grfico corrente.
Tamanho do objeto coincide com o tamanho de um recurso grfico.

2000-2015, MetaQuotes Software Corp.

2479

Biblioteca Padro

Destroy
Finalidade de destruir o recurso grfico.
void Destroy();

Observao
Se um recurso grfica vinculado a um objeto grfico, o ltimo excludo.

2000-2015, MetaQuotes Software Corp.

2480

Biblioteca Padro

Erase
Finalidade de apagar ou preencher com as cores determinadas.
void Erase(
const uint clr=0

// color

);

Parmetros
clr=0
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2481

Biblioteca Padro

Fill
Preenche uma rea.
void Fill(
int

x,

// X coordinate

int

y,

// Y coordinate

const uint clr

// color

);

Parmetros
x
[in] coordenada X de preenchimento do ponto de partida.
y
[in] coordenada Y de preenchimento do ponto de partida.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2482

Biblioteca Padro

FillCircle
Desenha um crculo preenchido.
void FillCircle(
int

x,

// X coordinate

int

y,

// Y coordinate

int

r,

// radius

const uint clr

// color

);

Parmetros
x
[in] Coordenada X para preenchimento do crculo.
y
[in] coordenada Y para preenchimento do crculo.
r
[in] Raio do crculo preenchido.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2483

Biblioteca Padro

FillRectangle
Desenha um retngulo preenchido.
void FillRectangle(
int

x1,

// X coordinate

int

y1,

// Y coordinate

int

x2,

// X coordinate

int

y2,

// Y coordinate

const uint clr

// color

);

Parmetros
x1
[in] Coordenada X do primeiro ponto para formar um retngulo.
y1
[in] Coordenada Y do primeiro ponto para formar um retngulo.
x2
[in] Coordenada X do segundo ponto para formar um retngulo.
y2
[in] Coordenada Y do segundo ponto para formar um retngulo.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2484

Biblioteca Padro

FillTriangle
Desenha um tringulo preenchido.
void FillTriangle(
int

x1,

// X coordinate

int

y1,

// Y coordinate

int

x2,

// X coordinate

int

y2,

// Y coordinate

int

x3,

// X coordinate

int

y3,

// Y coordinate

const uint clr

// color

);

Parmetros
x1
[in] Coordenada X do primeiro canto do tringulo.
y1
[in] Coordenada Y do primeiro canto do tringulo.
x2
[in] Coordenada X do segundo canto do tringulo.
y2
[in] Coordenada Y do segundo canto do tringulo.
x3
[in] Coordenada X do segundo canto do tringulo.
y3
[in] Coordenada Y do terceiro canto do tringulo.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2485

Biblioteca Padro

FontAngleGet
Recebe o ngulo inclinado da fonte.
uint FontAngleGet();

Valor de retorno
ngulo de inclinao da fonte

2000-2015, MetaQuotes Software Corp.

2486

Biblioteca Padro

FontAngleSet
Define o ngulo de inclinao da fonte.
bool FontAngleSet(
uint angle

// angle

);

Parmetros
angle
[in] ngulo de inclinao da fonte em dcimos de um grau.
Valor de retorno
verdade - se bem sucedido, caso contrrio - falso.

2000-2015, MetaQuotes Software Corp.

2487

Biblioteca Padro

FontFlagsGet
Recebe a fonte das flags.
uint FontFlagsGet();

Valor de retorno
font flags

2000-2015, MetaQuotes Software Corp.

2488

Biblioteca Padro

FontFlagsSet
Configura as fontes flags
bool FontFlagsSet(
uint flags

// flags

);

Parmetros
flags
[in] Font creation flags. Veja a descrio da funo TextSetFont() para saber mais sobre as flags.
Valor de retorno
verdade - se bem sucedido, caso contrrio - falso.

2000-2015, MetaQuotes Software Corp.

2489

Biblioteca Padro

FontGet
Recebe os parmetros de fonte atuais.
void FontGet(
string& name,

// name

int&

size,

// size

uint&

flags,

// flags

uint&

angle

// slope angle

);

Parmetros
name
[out] Referncia da varivel para o retorno do nome da fonte.
size
[out] Referncia da varivel para o retorno do tamanho da fonte.
flags
[out] Referncia da varivel para o retorno da flag da fonte.
angle
[out] Referncia da varivel para retornar um ngulo de inclinao da fonte.

2000-2015, MetaQuotes Software Corp.

2490

Biblioteca Padro

FontNameGet
Recebe o nome da fonte.
string FontNameGet();

Valor de retorno
font name

2000-2015, MetaQuotes Software Corp.

2491

Biblioteca Padro

FontNameSet
Configura o nome da fonte.
bool FontNameSet(
string name

// nome

);

Parmetros
name
[in] Font name. Por exemplo, "Arial".
Valor de retorno
verdade - se bem sucedido, caso contrrio - falso.

2000-2015, MetaQuotes Software Corp.

2492

Biblioteca Padro

FontSet
Define a fonte atual.
bool FontSet(
const string name,

// name

const int

size,

// size

const uint

flags=0,

// flags

const uint

angle=0

// angle

);

Parmetros
name
[in] Font name. Por exemplo, "Arial".
size
[in] Font size. Veja a descrio da funo TextSetFont() para aprender mais sobre como
configurar o tamanho.
flags=0
[in] Font creation flags. Veja a descrio da funo TextSetFont() para saber mais sobre as flags.
angle=0
[in] ngulo de inclinao da fonte em dcimos de um grau.
Valor de retorno
verdade - se bem sucedido, caso contrrio - falso.

2000-2015, MetaQuotes Software Corp.

2493

Biblioteca Padro

FontSizeGet
Recebe o tamanho da fonte.
int FontSizeGet();

Valor de retorno
font size

2000-2015, MetaQuotes Software Corp.

2494

Biblioteca Padro

FontSizeSet
Configura o tamanho da fonte
bool FontSizeSet(
int size

// size

);

Parmetros
size
[in] Font size. Veja a descrio da funo TextSetFont() para aprender mais sobre como
configurar o tamanho.
Valor de retorno
verdade - se bem sucedido, caso contrrio - falso.

2000-2015, MetaQuotes Software Corp.

2495

Biblioteca Padro

Height
Recebe o comprimento de um recurso grfico.
int Height();

Valor de retorno
comprimento de um recurso grfico

2000-2015, MetaQuotes Software Corp.

2496

Biblioteca Padro

Line
Desenha um segmento de uma linha mo livre.
void Line(
int

x1,

// X coordinate

int

y1,

// Y coordinate

int

x2,

// X coordinate

int

y2,

// Y coordinate

const uint clr

// color

);

Parmetros
x1
[in] Coordenada X do primeiro ponto do segmento.
y1
[in] Coordenada Y do primeiro ponto do segmento.
x2
[in] Coordenada X do segundo ponto do segmento.
y2
[in] Coordenada Y do segundo ponto do segmento.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2497

Biblioteca Padro

LineAA
Desenha um segmento de uma linha mo livre usando o algoritmo de suavizao de borda.
void LineAA(
const int

x1,

// X coordinate

const int

y1,

// Y coordinate

const int

x2,

// X coordinate

const int

y2,

// Y coordinate

const uint clr,

// color

const uint style=UINT_MAX

// line style

);

Parmetros
x1
[in] Coordenada X do primeiro ponto do segmento.
y1
[in] Coordenada Y do primeiro ponto do segmento.
x2
[in] Coordenada X do segundo ponto do segmento.
y2
[in] Coordenada Y do segundo ponto do segmento.
clr
[in] Cores no formato ARGB.
style=UINT_MAX
[in]
O estilo de linha um dos valores de enumerao ou um valor personalizado
ENUM_LINE_STYLE.

2000-2015, MetaQuotes Software Corp.

2498

Biblioteca Padro

LineHorizontal
Desenha um segmento de linha horizontal.
void LineHorizontal(
int

x1,

// X coordinate

int

x2,

// X coordinate

int

y,

// Y coordinate

const uint clr

// color

);

Parmetros
x1
[in] coordenada X do segmento.
x2
[in] Coordenada X do primeiro ponto do segmento.
y
[in] Coordenada Y do segundo ponto do segmento.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2499

Biblioteca Padro

LineStyleSet
Configura o estilo de linha.
void LineStyleSet(
const uint style

// style

);

Parmetros
style
[in] Line style.
Observao
O parmetro de entrada pode ser qualquer um dos valores da enumerao ENUM_LINE_STYLE. Alm
disso, possvel criar um estilo de desenho de linha personalizada.

2000-2015, MetaQuotes Software Corp.

2500

Biblioteca Padro

LineVertical
Desenha um segmento de linha horizontal.
void LineVertical(
int

x,

// X coordinate

int

y1,

// Y coordinate

int

y2,

// Y coordinate

const uint clr

// color

);

Parmetros
x
[in] coordenada X do segmento.
y1
[in] Coordenada Y do primeiro ponto do segmento.
y2
[in] Coordenada Y do segundo ponto do segmento.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2501

Biblioteca Padro

LoadFromFile
L uma imagem de um arquivo BMP
bool LoadFromFile(
const string filename

// file name

);

Parmetros
filename
[in] Nome do arquivo (incluindo a extenso "BMP" ).
Valor de retorno
verdade - se bem sucedido, caso contrrio - falso.

2000-2015, MetaQuotes Software Corp.

2502

Biblioteca Padro

PixelGet
Recebe a cor do ponto com coordenadas especficas.
uint PixelGet(
const int x,

// X coordinate

const int y

// Y coordinate

);

Parmetros
x
[in] Coordenada do ponto X.
y
[in] Coordenada do ponto Y.
Valor de retorno
Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2503

Biblioteca Padro

PixelSet
Configura a cor do ponto com coordenadas especficas.
void PixelSet(
const int

x,

// X coordinate

const int

y,

// Y coordinate

const uint clr

// color

);

Parmetros
x
[in] Coordenada do ponto X.
y
[in] Coordenada do ponto Y.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2504

Biblioteca Padro

PixelSetAA
Desenha um crculo usando o algortmo de suavizao de borda
void PixelSetAA(
const double x,

// X coordinate

const double y,

// Y coordinate

const uint

// color

clr

);

Parmetros
x
[in] Coordenada do ponto X.
y
[in] Coordenada do ponto Y.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2505

Biblioteca Padro

Polygon
Desenha um polgono.
void Polygon(
int&

x[],

// array of X coordinates

int&

y[],

// array of Y coordinates

const uint clr

// color

);

Parmetros
x[]
[in] Array de coordenadas X dos pontos de um polgono.
y[]
[in] Array de coordenadas Y dos pontos de um polgono.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2506

Biblioteca Padro

PolygonAA
Desenha um polgno usando o algortmo de suavizao de borda.
void PolygonAA(
int&

x[],

// array of X coordinates

int&

y[],

// array of Y coordinates

const uint clr,

// color

const uint style=UINT_MAX

// line style

);

Parmetros
x[]
[in] Array de coordenadas X dos pontos de um polgono.
y[]
[in] Array de coordenadas Y dos pontos de um polgono.
clr
[in] Cores no formato ARGB.
style=UINT_MAX
[in]
O estilo de linha um dos valores de enumerao ou um valor personalizado
ENUM_LINE_STYLE.

2000-2015, MetaQuotes Software Corp.

2507

Biblioteca Padro

Polyline
Desenha vrias linhas.
void Polyline(
int&

x[],

// array of X coordinates

int&

y[],

// array of Y coordinates

const uint clr

// color

);

Parmetros
x[]
[in] Array de coordenadas X de vrias linhas.
y[]
[in] Array de coordenadas Y de vrias linhas.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2508

Biblioteca Padro

PolylineAA
Desenha vrias linhas usando o algortmo de suavizao de borda.
void PolylineAA(
int&

x[],

// array of X coordinates

int&

y[],

// array of Y coordinates

const uint clr,

// color

const uint style=UINT_MAX

// line style

);

Parmetros
x[]
[in] Array de coordenadas X de vrias linhas.
y[]
[in] Array de coordenadas Y de vrias linhas.
clr
[in] Cores no formato ARGB.
style=UINT_MAX
[in]
O estilo de linha um dos valores de enumerao ou um valor personalizado
ENUM_LINE_STYLE.

2000-2015, MetaQuotes Software Corp.

2509

Biblioteca Padro

Rectangle
Desenha um retngulo usando dois pontos.
void Rectangle(
int

x1,

// X coordinate

int

y1,

// Y coordinate

int

x2,

// X coordinate

int

y2,

// Y coordinate

const uint clr

// color

);

Parmetros
x1
[in] Coordenada X do primeiro ponto para formar um retngulo.
y1
[in] Coordenada Y do primeiro ponto para formar um retngulo.
x2
[in] Coordenada X do segundo ponto para formar um retngulo.
y2
[in] Coordenada Y do segundo ponto para formar um retngulo.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2510

Biblioteca Padro

Resize
Redimensiona um recurso grfico.
bool Resize(
const int width,

// width

const int height

// height

);

Parmetros
width
[in] nova largura de um recurso grfico.
height
[in] novo comprimento de um recurso grfico.
Valor de retorno
verdade - se bem sucedido, caso contrrio - falso.
Observao
Ao redimensionar, a imagem anterior no ser salva.

2000-2015, MetaQuotes Software Corp.

2511

Biblioteca Padro

ResourceName
Recebe o nome de um recurso grfico.
string ResourceName();

Valor de retorno
comprimento de um recurso grfico

2000-2015, MetaQuotes Software Corp.

2512

Biblioteca Padro

TextHeight
Recebe o comprimento do texto.
int TextHeight(
const string text

// text

);

Parmetros
text
[in] Texto para mensurar.
Valor de retorno
comprimento do texto em pixels
Observao
A fonte corrente utilizada para mensurar o texto.

2000-2015, MetaQuotes Software Corp.

2513

Biblioteca Padro

TextOut
Exibe texto.
void TextOut(
int

x,

// X coordinate

int

y,

// Y coordinate

string

text,

// text

const uint clr,

// color

uint

// alignment

alignment=0

);

Parmetros
x
[in] coordenada X da ncora do texto.
y
[in] coordenada Y da ncora do texto.
text
[in] Texto a ser exibido.
clr
[in] Cores no formato ARGB.
alignment=0
[in] Mtodo de ancoragem do texto. Veja a descrio da funo TextOut() para saber mais sobre
mtodos de ancoragem.
Observao
A fonte corrente usada para exibir o texto.

2000-2015, MetaQuotes Software Corp.

2514

Biblioteca Padro

TextSize
Recebe o tamanho do texto.
void TextSize(
const string text,

// text

int&

width,

// width

int&

height

// height

);

Parmetros
text
[in] Texto para mensurar.
width
[out] Referncia da varivel para o retorno da largura da fonte.
height
[out] Referncia da varivel para o retorno do comprimento do texto.
Observao
A fonte atual usada para exibir o texto.

2000-2015, MetaQuotes Software Corp.

2515

Biblioteca Padro

TextWidth
Recebe a largura do texto.
int TextWidth(
const string text

// text

);

Parmetros
text
[in] Texto para mensurar.
Valor de retorno
comprimento do texto em pixels
Observao
A fonte atual usada para exibir o texto.

2000-2015, MetaQuotes Software Corp.

2516

Biblioteca Padro

TransparentLevelSet
Configura o nvel de transparncia.
void TransparentLevelSet(
const uchar value

// value

);

Parmetros
value
[in] O novo valor do nvel de transparncia.
Observao
0 significa transparncia total, enquanto 255 - para obscuridade total.
A configurao de um nvel de transparncia afeta tudo o que foi desenhada anteriormente. O nvel
de transparncia especificado no afeta outras construes.

2000-2015, MetaQuotes Software Corp.

2517

Biblioteca Padro

Tringulo
Desenha um tringulo.
void Triangle(
int

x1,

// X coordinate

int

y1,

// Y coordinate

int

x2,

// X coordinate

int

y2,

// Y coordinate

int

x3,

// X coordinate

int

y3,

// Y coordinate

const uint clr

// color

);

Parmetros
x1
[in] Coordenada X do primeiro canto do tringulo.
y1
[in] Coordenada Y do primeiro canto do tringulo.
x2
[in] Coordenada X do segundo canto do tringulo.
y2
[in] Coordenada Y do segundo canto do tringulo.
x3
[in] Coordenada X do segundo canto do tringulo.
y3
[in] Coordenada Y do terceiro canto do tringulo.
clr
[in] Cores no formato ARGB.

2000-2015, MetaQuotes Software Corp.

2518

Biblioteca Padro

TriangleAA
Desenha um tringulo usando o algortmo de suavizao de borda.
void TriangleAA(
const int

x1,

// X coordinate

const int

y1,

// Y coordinate

const int

x2,

// X coordinate

const int

y2,

// Y coordinate

const int

x3,

// X coordinate

const int

y3,

// Y coordinate

const uint clr,

// color

const uint style=UINT_MAX

// line style

);

Parmetros
x1
[in] Coordenada X do primeiro canto do tringulo.
y1
[in] Coordenada Y do primeiro canto do tringulo.
x2
[in] Coordenada X do segundo canto do tringulo.
y2
[in] Coordenada Y do segundo canto do tringulo.
x3
[in] Coordenada X do segundo canto do tringulo.
y3
[in] Coordenada Y do terceiro canto do tringulo.
clr
[in] Cores no formato ARGB.
style=UINT_MAX
[in]
O estilo de linha um dos valores de enumerao ou um valor personalizado
ENUM_LINE_STYLE.

2000-2015, MetaQuotes Software Corp.

2519

Biblioteca Padro

Update
Exibe as mudanas na tela.
void Update(
const bool redraw=true

// flag

);

Parmetros
redraw=true
Necessidade do flag de um grfico redesenhado.

2000-2015, MetaQuotes Software Corp.

2520

Biblioteca Padro

Width
Recebe a largura de um recurso grfico.
int Width();

Valor de retorno
largura do recurso grfico

2000-2015, MetaQuotes Software Corp.

2521

Biblioteca Padro

CChart
A classe CChart utilizada para simplificar o acesso as propriedades do objeto grfico "Chart".

Descrio
A classe CChart fornece acesso para as propriedades do objeto "Chart".

Declarao
class CChart : public CObject

Ttulo
#include <Charts\Chart.mqh>

Mtodos de classe
Acesso para os dados protegidos
ChartID

Identificador do grfico

Propriedades Gerais
Mode

Obtm/Configura o valor da
"Mode" (barra, candle ou linha)

propriedade

Foreground

Obtm/Configura
"Foreground"

propriedade

Shift

Obtm/Configura o valor da da propriedade


"Shift"

ShiftSize

Obtm/Configura o valor da
"ShiftSize" (em porcentagem)

propriedade

AutoScroll

Obtm/Configura
"AutoScroll"

propriedade

Scale

Obtm/Configura o valor da propriedade "Scale"

ScaleFix

Obtm/Configura o valor da propriedade


"ScaleFix" (escala do grfico fixo ou no)

ScaleFix_11

Obtm/Configura o valor da propriedade


"ScaleFix_11"(escala da carta de 1:1, ou no)

FixedMax

Obtm/Configura o valor da
"FixedMax" (preo mximo fixo)

propriedade

FixedMin

Obtm/Configura o valor da
"FixedMin" (preo mnimo fixo)

propriedade

ScalePPB

Obtm/Configura o valor da propriedade


"ScalePPB" (escala ser "ponto por barra" ou
no)

2000-2015, MetaQuotes Software Corp.

valor

valor

da

da

2522

Biblioteca Padro

PointsPerBar

Obtm/Configura o valor da propriedade


"PointsPerBar" (em pontos por barra)

Mostrar Propriedades
ShowOHLC

Obtm/Configura
"ShowOHLC"

valor

da

propriedade

ShowLineBid

Obtm/Configura
"ShowLineBid"

valor

da

propriedade

ShowLineAsk

Obtm/Configura
"ShowLineAsk"

valor

da

propriedade

ShowLastLine

Obtm/Configura
"ShowLastLine"

valor

da

propriedade

ShowPeriodSep

Obtm/Configura o valor da propriedade


"ShowPeriodSep" (mostra perodos separados)

ShowGrid

Obtm/Configura
"ShowGrid"

ShowVolumes

Obtm/Configura o valor da propriedade


"ColorVolumes" (cor de volumes e nveis de
posies abertas)

ShowObjectDescr

Obtm/Configura o valor da propriedade


"ShowObjectDescr" (mostra a descrio para
objetos grficos)

ShowDateScale

Configura
o
valor
da
propriedade
"ShowDateScale" (data de escala do grfico)

ShowPriceScale

Configura
o
valor
da
propriedade
"ShowDateScale" (preo da escala do grfico)

valor

da

propriedade

Propriedade de cores
ColorBackground

Obtm/Configura o valor da propriedade


"ColorBackground" (cor de fundo do grfico)

ColorForeground

Obtm/Configura o valor da propriedade


"ColorForeground" (cor dos eixos, escala e
strings OHLC do grfico)

ColorGrid

Obtm/Configura o valor
"ColorGrid" (cor da grade)

ColorBarUp

Obtm/Configura o valor da propriedade


"ColorBarUp" (cor de barras de alta, sua sombra
e o contorno do corpo do candle)

ColorBarDown

Obtm/Configura o valor da propriedade


"ColorBarDown" (cor das barras de baixa, sua
sombra e o contorno do corpo do candle)

ColorCandleBull

Obtm/Configura

2000-2015, MetaQuotes Software Corp.

valor

da

da

propriedade

Propriedade

2523

Biblioteca Padro

"ColorCandleBull" (cor do corpo do candle de


alta)
ColorCandleBear

Obtm/Configura o valor da Propriedade


"ColorCandleBear" (cor do corpo do candle de
baixa)

ColorChartLine

Obtm/Configura o valor da propriedade


"ColorChartLine" (cor do grfico de linhas e
candles Doji)

ColorVolumes

Obtm/Configura o valor da propriedade


"ColorVolumes" (cor de volumes e nveis de
posies abertas)

ColorLineBid

Obtm/Configura o valor da
"ColorLineBid" (cor da linha Bid)

propriedade

ColorLineAsk

Obtm/Configura o valor da
"ColorLineAsk" (cor da linha Ask)

propriedade

ColorLineLast

Obtm/Configura o valor da propriedade


"ColorLineLast" (cor da linha do ltimo preo de
oferta)

ColorStopLevels

Obtm/Configura o valor da propriedade


"ColorStopLevels" (cor do SL e nveis TP)

Leia apenas as propriedades


VisibleBars

Obtm o nmero total de barras visveis do


grfico

WindowsTotal

Obtm o nmero total de janelas de grfico,


incluindo as sub-janelas de grfico dos
indicadores

WindowIsVisible

Obtm a visibilidade do flag da sub-janela de


grfico especfica

WindowHandle

Obtm o manipulador de janela do grfico


(HWND)

FirstVisibleBar

Obtm o nmero da primeira barra visvel do


grfico

WidthInBars

Obtm a largura da janela em barras.

WidthInPixels

Obtm a largura da sub-janela em pixels.

HeightInPixels

Obtm a altura da sub-janela em pixels.

PriceMin

Obtm preo mnimo da sub-janela especfica

PriceMax

Obtm preo mximo da sub-janela especfica

Propriedades
Attach

Atribui o quadro atual para a instncia de classe

2000-2015, MetaQuotes Software Corp.

2524

Biblioteca Padro

FirstChart

Atribui o primeiro grfico do terminal do cliente


para a instncia de classe

NextChart

Atribui o grfico seguinte do terminal do cliente


para a instncia de classe

Open

Abre o grfico com parmetros especficos e


atribu instncia de classe

Detach

Destaca o grfico da instncia de classe

Close

Fecha o grfico, atribudo instncia de classe

BringToTop

Exibe o grfico no topo de outros grficos

EventObjectCreate

Define um flag para enviar notificaes de um


evento de nova criao do objeto no grfico

EventObjectDelete

Define um flag para enviar notificaes de um


evento de excluso de objeto no grfico

Indicadores
IndicatorAdd

Adiciona um indicador com manipulador


especfico para uma janela de determinado
grfico

IndicatorDelete

Remove um indicador com nome especfico da


sub-janela de determinado grfico

IndicatorsTotal

Retorna o nmero de todos os indicadores


aplicados a sub-janela de determinado grfico

IndicatorName

Retorna o nome abreviado do indicador no


grfico de determinada sub-janela de grfico

Navegao
Navigate

Navega no grfico

Acesso para MQL5 API


Symbol

Obtm o smbolo do grfico

Period

Obtm o perodo do grfico

Redraw

Redesenha o grfico, atribudo instncia de


classe

GetInteger

A funo retorna o valor da propriedade do


objeto correspondente

SetInteger

Configura um novo valor para a propriedade do


tipo integer

GetDouble

A funo retorna o valor da propriedade do


objeto correspondente

SetDouble

Define um novo valor para a propriedade do


tipo double

2000-2015, MetaQuotes Software Corp.

2525

Biblioteca Padro

GetString

A funo retorna o valor da propriedade do


objeto correspondente

SetString

Define um novo valor para a propriedade do


tipo string

SetSymbolPeriod

Altera smbolo e perodo do grfico, atribudo


instncia de classe

ApplyTemplate

Aplica-se modelo especfico para o grfico

ScreenShot

Cria uma imagem do grfico especfico e salva


em arquivo .gif

WindowOnDropped

Obtm nmero de sub-janela do grfico


correspondente ao ponto de entrada do objeto
(expert ou script)

PriceOnDropped

Obtm as coordenadas de preo correspondente


ao ponto de entrada do objeto (expert ou
script)

TimeOnDropped

Obtm
as
coordenadas
de
tempo
correspondente ao ponto de entrada do objeto
(expert ou script)

XOnDropped

Obtm as coordenadas X correspondente ao


ponto de entrada do objeto (expert ou script)

YOnDropped

Obtm as coordenadas Y correspondente ao


ponto de entrada do objeto (expert ou script)

Entrada/sada
virtual Save

Salva parmetros do objeto em arquivo

virtual Load

Carrega parmetros do objeto em arquivo

virtual Type

Obtm objeto grfico do tipo identifier

2000-2015, MetaQuotes Software Corp.

2526

Biblioteca Padro

ChartID
Retorna o identificador do grfico.
long ChartID() const

Valor de retorno
Identificador de Grfico, atribudo instncia de classe. Se no houver nenhum objeto atribudo,
ele retorna -1.

2000-2015, MetaQuotes Software Corp.

2527

Biblioteca Padro

Mode (Mtodo Get)


Obtm o valor da propriedade "Mode" (barra, candle ou linha)
ENUM_CHART_MODE Mode() const

Valor de retorno
Valor da propriedade "Mode" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna WRONG_VALUE.

Mode (Mtodo Set)


Define um novo valor propriedade "Mode" (barra, candle ou linha).
bool Mode(
ENUM_CHART_MODE mode

// new chart mode

Parmetros
mode
[In] O modo grfico (candle, barra ou linha) de enumerao ENUM_CHART_MODE.
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2528

Biblioteca Padro

Foreground (Mtodo Get)


Obtm o valor da propriedade "Foreground"(Primeiro Plano).
bool Foreground() const

Valor de retorno
Valor da propriedade "Foreground" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

Foreground (Mtodo Set)


Define um novo valor para a propriedade "Foreground".
bool Foreground(
bool foreground

// new flag value

Parmetros
foreground
[in] O novo valor da propriedade "Primeiro plano".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2529

Biblioteca Padro

Shift (Mtodo Get)


Obtm o valor da propriedade "Shift"
bool Shift() const

Valor de retorno
Valor da propriedade "Shift" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

Shift (Mtodo Set)


Define um novo valor para a propriedade "Shift".
bool Shift(
bool shift

// new flag value

Parmetros
shift
[in] O novo valor da propriedade "Shift".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2530

Biblioteca Padro

ShiftSize (Mtodo Get)


Obtm o valor da propriedade "ShiftSize" (em porcentagem).
double ShiftSize() const

Valor de retorno
Valor da propriedade "ShiftSize" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna EMPTY_VALUE.

ShiftSize (Mtodo Set)


Define um novo valor para a propriedade "Shift" (em porcentagem).
bool ShiftSize(
double shift_size

// new property value

Parmetros
shift_size
[in] O novo valor da propriedade "ShiftSize" (em porcentagem).
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2531

Biblioteca Padro

AutoScroll (Mtodo Get)


Obtm o valor da propriedade "AutoScroll".
bool AutoScroll() const

Valor de retorno
Valor da propriedade "AutoScroll" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

AutoScroll (Mtodo Set)


Configura um novo valor para a propriedade "AutoScroll".
bool AutoScroll(
bool autoscroll

// new flag value

Parmetros
autoscroll
[in] O novo valor para a propriedade "Autoscroll".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2532

Biblioteca Padro

Scale (Mtodo Get)


Obtm o valor da propriedade "Scale".
int Scale() const

Valor de retorno
Valor da propriedade "Scale" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna 0.

Scale (Mtodo Set)


Define um novo valor para a propriedade "Scale".
bool Scale(
int scale

// new value

Parmetros
scale
[in] O novo valor para a propriedade "Scale".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2533

Biblioteca Padro

ScaleFix (Mtodo Get)


Obtm o valor da propriedade "ScaleFix" (escala fixa do grfico ou no).
bool ScaleFix() const

Valor de retorno
Valor da propriedade "ScaleFix" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

ScaleFix (Mtodo Set)


Define um novo valor para a propriedade "ScaleFix".
bool ScaleFix(
bool scale_fix

// new value

Parmetros
scale_fix
[in] O novo valor para a propriedade "ScaleFix".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2534

Biblioteca Padro

ScaleFix_11 (Mtodo Get)


Obtm o valor da propriedade "ScaleFix_11" (escala da carta de 1: 1, ou no).
bool ScaleFix_11() const

Valor de retorno
Valor da propriedade do objeto "ScaleFix_11", atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

ScaleFix_11 (Mtodo Set)


Define um novo valor para a propriedade "ScaleFix_11".
bool ScaleFix_11(
string scale_11

// new value

Parmetros
scale_11
[in] O novo valor para a propriedade "ScaleFix_11".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2535

Biblioteca Padro

FixedMax (Mtodo Get)


Obtm o valor da propriedade "FixedMax" (preo mximo fixo)
double FixedMax() const

Valor de retorno
Valor da propriedade "FixedMax" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna EMPTY_VALUE.

FixedMax (Mtodo Set)


Define um novo valor para a propriedade "FixedMax".
bool FixedMax(
double max

// new fixed maximum

Parmetros
max
[in] O novo valor para a propriedade "FixedMax".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2536

Biblioteca Padro

FixedMin (Mtodo Get)


Obtm o valor da propriedade "FixedMin" (preo mnimo fixo).
double FixedMin() const

Valor de retorno
Valor da propriedade "FixedMin" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna EMPTY_VALUE.

FixedMin (Mtodo Set)


Define um novo valor para a propriedade "FixedMin".
bool FixedMax(
double min

// new fixed minimum

Parmetros
max
[in] O novo valor para a propriedade "FixedMin".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2537

Biblioteca Padro

PointsPerBar (Mtodo Get)


Obtm o valor da propriedade "PointsPerBar" (em pontos por barra).
double PointsPerBar() const

Valor de retorno
Valor da propriedade do objeto "PointsPerBar", atribudo instncia de classe. Se no houver
nenhum objeto atribudo, ele retorna EMPTY_VALUE.

PointsPerBar (Mtodo Set)


Define um novo valor para a propriedade "PointsPerBar".
bool PointsPerBar(
double ppb

// new scale (in points per bar)

Parmetros
ppb
[in] O novo valor para a escala (em pontos por barra).
Valor de retorno
verdadeiro se obteve xito, falso se a escala no mudar.

2000-2015, MetaQuotes Software Corp.

2538

Biblioteca Padro

ScalePPB (Mtodo Get)


Obtm o valor da propriedade "ScalePPB" (escala "ponto por barra" ou no).
bool ScalePPB() const

Valor de retorno
Valor da propriedade do objeto "ScalePPB", atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

ScalePPB (Mtodo Set)


Define um novo valor para a propriedade "ScalePPB".
bool ScalePPB(
bool scale_ppb

// new flag value

Parmetros
scale_ppb
[in] O novo valor para a propriedade "ScalePPB".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2539

Biblioteca Padro

ShowOHLC (Mtodo Get)


Obtm o valor da propriedade "ShowOHLC".
bool ShowOHLC() const

Valor de retorno
Valor da propriedade "ShowOHLC" do objeto, atribudo instncia de classe. Se no houver nenhum
objeto atribudo, ele retorna falso.

ShowOHLC (Mtodo Set)


Define um novo valor para a propriedade "ShowOHLC".
bool ShowOHLC(
bool show

// new value

Parmetros
show
[in] O novo valor da propriedade "ShowOHLC".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2540

Biblioteca Padro

ShowLineBid (Mtodo Get)


Obtm o valor da propriedade "ShowLineBid".
bool ShowLineBid() const

Valor de retorno
Valor da propriedade "ShowLineBid" do grfico, atribudo instncia de classe. Se no houver
nenhum grfico atribudo, ele retorna falso.

ShowLineBid (Mtodo Set)


Define um novo valor para a propriedade "ShowLineBid".
bool ShowLineBid(
bool show

// new value

Parmetros
show
[in] O novo valor da propriedade "ShowLineBid".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2541

Biblioteca Padro

ShowLineAsk (Mtodo Get)


Obtm o valor da propriedade "ShowLineAsk".
bool ShowLineAsk() const

Valor de retorno
Valor da propriedade "ShowLineAsk" do grfico, atribudo instncia de classe. Se no houver
nenhum grfico atribudo, ele retorna falso.

ShowLineAsk (Mtodo Set)


Define um novo valor para a propriedade "ShowLineAsk".
bool ShowLineAsk(
bool show

// new value

Parmetros
show
[in] O novo valor da propriedade "ShowLineAsk".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2542

Biblioteca Padro

ShowLastLine (Mtodo Get)


Obtm o valor da propriedade "ShowLastLine".
bool ShowLastLine() const

Valor de retorno
Valor da propriedade "ShowLastLine" do grfico, atribudo instncia de classe. Se no houver
nenhum grfico atribudo, ele retorna falso.

ShowLastLine (Mtodo Set)


Define um novo valor para a propriedade "ShowLastLine".
bool ShowLastLine(
bool show

// new flag value

Parmetros
show
[in] Novo valor da propriedade"ShowLastLine".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2543

Biblioteca Padro

ShowPeriodSep (Mtodo Get)


Obtm o valor da propriedade "ShowPeriodSep" (mostra os separadores de perodo).
bool ShowPeriodSep() const

Valor de retorno
Valor da propriedade do grfico "ShowPeriodSep", atribudo instncia de classe. Se no houver
nenhum grfico atribudo, ele retorna falso.

ShowPeriodSep (Mtodo Set)


Define um novo valor propriedade "ShowPeriodSep".
bool ShowPeriodSep(
bool show

// new value

Parmetros
show
[in] O novo valor da propriedade "ShowPeriodSep".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2544

Biblioteca Padro

ShowGrid (Mtodo Get)


Obtm o valor da propriedade "ShowGrid".
bool ShowGrid() const

Valor de retorno
Valor da propriedade "ShowGrid" do grfico, atribudo instncia de classe. Se no houver nenhum
grfico atribudo, ele retorna falso.

ShowGrid (Mtodo Set)


Define um novo valor para a propriedade "ShowGrid".
bool ShowGrid(
bool show

// new value

Parmetros
show
[in] Novo valor da propriedade "ShowGrid".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2545

Biblioteca Padro

ShowVolumes (Mtodo Get)


Obtm o valor da propriedade "ShowVolumes".
bool ShowVolumes() const

Valor de retorno
Valor da propriedade "ShowVolumes" do grfico, atribudo instncia de classe. Se no houver
nenhum grfico atribudo, ele retorna falso.

ShowVolumes (Mtodo Set)


Define um novo valor propriedade "ShowVolumes".
bool ShowVolumes(
bool show

// new value

Parmetros
show
[in] O novo valor da propriedade "ShowVolumes".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2546

Biblioteca Padro

ShowObjectDescr (Mtodo Get)


Obtm o valor da propriedade"ShowObjectDescr" (mostra a descrio dos objetos grficos).
bool ShowObjectDescr() const

Valor de retorno
Valor da propriedade "ShowObjectDescr" do grfico, atribudo instncia de classe. Se no houver
nenhum grfico atribudo, ele retorna falso.

ShowObjectDescr (Mtodo Set)


Define um novo valor para a propriedade "ShowObjectDescr".
bool ShowObjectDescr(
bool show

// New value

Parmetros
show
[in] O novo valor da propriedade "ShowObjectDescr".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2547

Biblioteca Padro

ShowDateScale
Define um novo valor para a propriedade "ShowDateScale".
bool ShowDateScale(
bool show

// New value

Parmetros
show
[in] Novo valor da propriedade "ShowDateScale".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2548

Biblioteca Padro

ShowPriceScale
Define um novo valor para a propriedade "ShowPriceScale".
bool ShowPriceScale(
bool show

// New value

Parmetros
show
[in] O novo valor da propriedade "ShowPriceScale".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2549

Biblioteca Padro

ColorBackground (Mtodo Get)


Obtm o valor da propriedade "ColorBackground" (cor de fundo do grfico).
color ColorBackground() const

Valor de retorno
Valor da propriedade "ColorBackground" do grfico, atribudo instncia de classe. Se no houver
um grfico atribudo, ele retorna CLR_NONE.

ColorBackground (Mtodo Set)


Configura um novo valor para a propriedade "ColorBackground".
bool ColorBackground(
color new_color

// new background color

Parmetros
new_color
[in] Nova cor de segundo plano (fundo).
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2550

Biblioteca Padro

ColorForeground (Mtodo Get)


Obtm o valor da propriedade "ColorForeground" (cor dos eixos, escala e strings OHLC do grfico)
color ColorForeground() const

Valor de retorno
Valor da propriedade "ColorForeground" do grfico, atribudo instncia de classe. Se no houver
um grfico atribudo, ele retorna CLR_NONE.

ColorForeground (Mtodo Set)


Define um novo valor para a propriedade "ColorForeground" (para eixos, escala e a string OHLC).
bool ColorForeground(
color new_color

// New color

Parmetros
new_color
[in] Nova cor para os eixos, a escala e a string OHLC.
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2551

Biblioteca Padro

ColorGrid (Mtodo Get)


Obtm o valor da propriedade "ColorGrid" (cor da grade)
color ColorGrid() const

Valor de retorno
Valor da propriedade "ColorBarDown" do grfico, atribudo instncia de classe. Se no houver um
grfico atribudo, ele retorna CLR_NONE.

ColorGrid (Mtodo Set)


Define um novo valor para a propriedade "ColorGrid".
bool ColorGrid(
color new_color

// new grid color

Parmetros
new_color
[in] Nova cor da grade.
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2552

Biblioteca Padro

ColorBarUp (Mtodo Get)


Obtm o valor da propriedade "ColorBarUp" (cor para barras de alta, sua sombra e contorno do corpo
do candle)
color ColorBarUp() const

Valor de retorno
Valor da propriedade "ColorBarUp" do grfico, atribudo instncia de classe. Se no houver um
grfico atribudo, ele retorna CLR_NONE.

ColorBarUp (Mtodo Set)


Define um novo valor para a propriedade "ColorBarUp".
bool ColorBarUp(
color new_color

// new color for bull bars

Parmetros
new_color
[in] Nova cor para barras de alta.
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2553

Biblioteca Padro

ColorBarDown (Mtodo Get)


Obtm o valor da propriedade "ColorBarDown" (cor para barras de baixa, sua sombra e contorno do
corpo do candle).
color ColorBarDown() const

Valor de retorno
Valor da propriedade "ColorBarDown" do grfico, atribudo instncia de classe. Se no houver um
grfico atribudo, ele retorna CLR_NONE.

ColorBarDown (Mtodo Set)


Configura um novo valor para a propriedade "ColorBarDown".
bool ColorBarDown(
color new_color

// new color for bear bars

Parmetros
new_color
[in] Nova cor para barras de baixa.
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2554

Biblioteca Padro

ColorCandleBull (Mtodo Get)


Obtm o valor da Propriedade "ColorCandleBull" (cor corpo do candle de alta)
color ColorCandleBull() const

Valor de retorno
Valor da propriedade "ColorCandleBull" do grfico, atribudo instncia de classe. Se no houver um
grfico atribudo, ele retorna CLR_NONE.

ColorCandleBull (Mtodo Set)


Define um novo valor para a propriedade "ColorBarBull".
bool ColorCandleBull(
color new_color

// new color for bull candle body

Parmetros
new_color
[in] Nova cor do corpo do candle de alta.
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2555

Biblioteca Padro

ColorCandleBear (Get Method)


Obtm o valor da Propriedade "ColorCandleBear" (cor e corpo do candle de baixa)
color ColorCandleBear() const

Valor de retorno
Valor da propriedade "ColorCandleBear" do grfico, atribudo instncia de classe. Se no houver
um grfico atribudo, ele retorna CLR_NONE.

ColorCandleBear (Set Method)


Sets new value for "ColorCandleBear" property.
bool ColorCandleBear(
color new_color

// new color for bear candle body

Parmetros
new_color
[in] Nova cor do corpo do candle de baixa.
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2556

Biblioteca Padro

ColorChartLine (Mtodo Get)


Obtm o valor da propriedade "ColorChartLine" (cor de grfico de linhas e candles Doji)
color ColorChartLine() const

Valor de retorno
Valor da Propriedade do grfico "ColorChartLine", atribudo instncia de classe. Se no houver um
grfico atribudo, ele retorna CLR_NONE.

ColorChartLine (Mtodo Set)


Define um novo valor para a propriedade "ColorChartLine".
bool ColorChartLine(
color new_color

// new color of the chart lines

Parmetros
new_color
[in] Nova cor das linhas de grfico (candles Doji).
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2557

Biblioteca Padro

ColorVolumes (Mtodo Get)


Obtm o valor da propriedade "ColorVolumes" (cor de volumes e nveis das posies abertas).
color ColorVolumes() const

Valor de retorno
Valor da Propriedade do grfico "ColorVolumes", atribudo instncia de classe. Se no houver um
grfico atribudo, ele retorna CLR_NONE.

ColorVolumes (Mtodo Set)


Define um novo valor para a propriedade "ColorVolumes".
bool ColorVolumes(
color new_color

// new color of the volumes (open position levels)

Parmetros
new_color
[in] Nova cor dos volumes (nveis posio aberta).
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2558

Biblioteca Padro

ColorLineBid (Mtodo Get)


Obtm o valor da propriedade "ColorLineBid" (cor da linha Bid)
color ColorLineBid() const

Valor de retorno
Valor da propriedade do grfico "ColorChartLine", atribudo instncia de classe. Se no houver um
grfico atribudo, ele retorna CLR_NONE.

ColorLineBid (Mtodo Set)


Define um novo valor para a propriedade "ColorLineBid".
bool ColorLineBid(
color new_color

// new color for Bid line

Parmetros
new_color
[in] Nova cor para linha Bid.
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2559

Biblioteca Padro

ColorLineAsk (Mtodo Get)


Obtm o valor da propriedade "ColorLineAsk" (cor da linha Ask)
color ColorLineAsk() const

Valor de retorno
Valor da Propriedade do grfico "ColorChartLine", atribudo instncia de classe. Se no houver um
grfico atribudo, ele retorna CLR_NONE.

ColorLineAsk (Mtodo Set)


Define um novo valor para a propriedade "ColorBackground".
bool ColorLineAsk(
color new_color

// new color for Ask line

Parmetros
new_color
[in] Nova cor para linha Ask.
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2560

Biblioteca Padro

ColorLineLast (Mtodo Get)


Obtm o valor da propriedade "ColorLineLast" (cor da linha de preo da ltima oferta)
color ColorLineLast() const

Valor de retorno
Valor da propriedade do grfico "ColorLineLast", atribudo instncia de classe. Se no houver um
grfico atribudo, ele retorna CLR_NONE.

ColorLineLast (Mtodo Set)


Define um novo valor para a propriedade "ColorLineLast".
bool ColorLineLast(
color new_color

// new color of the last deal price line

Parmetros
new_color
[in] Nova cor da linha de preo da ltima oferta.
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2561

Biblioteca Padro

ColorStopLevels (Mtodo Get)


Obtm o valor da propriedade "ColorStopLevels" (cor do SL e nveis TP)
color ColorStopLevels() const

Valor de retorno
Valor da propriedade do grfico "ColorStopLevels", atribudo instncia de classe. Se no houver um
grfico atribudo, ele retorna CLR_NONE.

ColorStopLevels (Mtodo Set)


Define um novo valor para a propriedade "ColorStopLevels".
bool ColorStopLevels(
color new_color

// new color of the SL and TP price levels

Parmetros
new_color
[in] Nova cor dos nveis de preos do Stop Loss e do Take Profit.
Valor de retorno
verdadeiro se obteve xito, falso se a cor no mudar.

2000-2015, MetaQuotes Software Corp.

2562

Biblioteca Padro

VisibleBars
Obtm o nmero total das barras visveis do grfico.
int VisibleBars() const

Valor de retorno
Obtm o nmero total de barras visveis do grfico, atribudos instncia de classe. Se no houver
nenhum grfico atribudo, ele retorna 0.

2000-2015, MetaQuotes Software Corp.

2563

Biblioteca Padro

WindowsTotal
Obtm o nmero total de janelas do grfico, incluindo as sub-janelas de indicador do grfico.
int WindowsTotal() const

Valor de retorno
Nmero total de janelas, incluindo as sub-janelas de indicador do grfico, atribudos ocorrncia de
classe. Se no houver nenhum grfico atribudo, ele retorna 0.

2000-2015, MetaQuotes Software Corp.

2564

Biblioteca Padro

WindowIsVisible
Obtm a visibilidade do flag da sub-janela de determinado grfico.
bool WindowIsVisible(
int num

// subwindow number

) const

Parmetros
num
[in] Nmero de sub-janela (0 significa a janela base).
Valor de retorno
Retorna a visibilidade do flag na subjanela do grfico especificado, atribudo instncia de grfico.
Se no houver nenhum grfico atribudo, ele retorna falso.

2000-2015, MetaQuotes Software Corp.

2565

Biblioteca Padro

WindowHandle
Obtm o manipulador da janela do grfico (HWND).
int WindowHandle() const

Valor de retorno
Manipulador da janela do grfico, atribudo instncia de grfico. Se no houver um grfico
atribudo, ele retorna INVALID_HANDLE.

2000-2015, MetaQuotes Software Corp.

2566

Biblioteca Padro

FirstVisibleBar
Obtm o nmero da primeira barra visvel do grfico.
int FirstVisibleBar() const

Valor de retorno
Nmero da primeira barra visvel do grfico, atribudo instncia de grfico. Se no houver nenhum
grfico atribudo, ele retorna -1.

2000-2015, MetaQuotes Software Corp.

2567

Biblioteca Padro

WidthInBars
Obtm a largura da janela em barras.
int WidthInBars() const

Valor de retorno
Largura da janela em barras do grfico, atribudo instncia de grfico. Se no houver nenhum
grfico atribudo, ele retorna 0.

2000-2015, MetaQuotes Software Corp.

2568

Biblioteca Padro

WidthInPixels
Obtm a largura da sub-janela em pixels.
int WidthInPixels() const

Valor de retorno
Largura da sub-janela em pixels no grfico, atribudo instncia de grfico. Se no houver nenhum
grfico atribudo, ele retorna 0.

2000-2015, MetaQuotes Software Corp.

2569

Biblioteca Padro

HeightInPixels
Obtm a altura da sub-janela em pixels.
int HeightInPixels(
int num

// subwindow number

) const

Parmetros
num
[in] Nmero de sub-janela (0 significa a janela base).
Valor de retorno
Altura da subjanela em pixels no grfico, atribudo instncia de grfico. Se no houver nenhum
grfico atribudo, ele retorna 0.

2000-2015, MetaQuotes Software Corp.

2570

Biblioteca Padro

PriceMin
Obtm preo mnimo da sub-janela especificada.
double PriceMin(
int num

// subwindow number

) const

Parmetros
num
[in] Nmero de sub-janela (0 significa a janela base).
Valor de retorno
Valor do preo mnimo do grfico, atribudo instncia de classe. Se no o grfico atribudo, ele
retorna EMPTY_VALUE.

2000-2015, MetaQuotes Software Corp.

2571

Biblioteca Padro

PriceMax
Obtm preo mximo da sub-janela especificada.
double PriceMax(
int num

// subwindow number

) const

Parmetros
num
[in] Nmero de sub-janela (0 significa a janela base).
Valor de retorno
Valor do preo mximo do grfico, atribudo instncia de classe. Se no o grfico atribudo, ele
retorna EMPTY_VALUE.

2000-2015, MetaQuotes Software Corp.

2572

Biblioteca Padro

Attach
Atribui ao grfico instncia de classe.
void Attach()

Attach
Atribuiao grfico especfico instncia de classe.
void Attach(
long chart

// Chart identifier

Parmetros
chart
[in] Identificador do grfico para atribuir.

2000-2015, MetaQuotes Software Corp.

2573

Biblioteca Padro

FirstChart
Atribui o primeiro grfico do terminal do cliente para a instncia de classe.
void FirstChart()

2000-2015, MetaQuotes Software Corp.

2574

Biblioteca Padro

NextChart
Atribui o quadro seguinte do terminal do cliente instncia de classe.
void NextChart()

2000-2015, MetaQuotes Software Corp.

2575

Biblioteca Padro

Open
Abre um grfico com parmetros especificados e atribu instncia de classe.
long Open(
const string

symbol_name,

ENUM_TIMEFRAMES timeframe

// Symbol name
// Period

Parmetros
symbol_name
[in] Nome do smbolo. NULL significa o smbolo do grfico corrente (para o expert anexado).
timeframe
[in] Timeframe do grfico (enumeradorENUM_TIMEFRAMES). 0 significa o timeframe corrente.
Valor de retorno
Identificador de grfico.

2000-2015, MetaQuotes Software Corp.

2576

Biblioteca Padro

Detach
Destaca o grfico a partir da instncia de classe
void Detach()

2000-2015, MetaQuotes Software Corp.

2577

Biblioteca Padro

Close
Fecha o grfico, atribudo instncia de classe
void Close()

2000-2015, MetaQuotes Software Corp.

2578

Biblioteca Padro

BringToTop
Exibe o grfico no topo de outros grficos.
bool BringToTop() const

Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2579

Biblioteca Padro

EventObjectCreate
Define um flag para enviar notificaes de um evento da criao de novo objeto para todos os
programas MQL5 num grfico.
bool EventObjectCreate(
bool flag

// flag

Parmetros
flag
[in] O novo valor da flag.
Valor de retorno
verdadeiro - se bem sucedida, falsa - se o flag no for alterado.

2000-2015, MetaQuotes Software Corp.

2580

Biblioteca Padro

EventObjectDelete
Define um flag para enviar notificaes de um evento do objeto de excluso para todos os programas
MQL5 num grfico.
bool EventObjectDelete(
bool flag

// flag

Parmetros
flag
[in] O novo valor da flag.
Valor de retorno
verdadeiro - se bem sucedida, falsa - se o flag no for alterado.

2000-2015, MetaQuotes Software Corp.

2581

Biblioteca Padro

IndicatorAdd
Adiciona um indicador com o manipulador especificado a uma janela de determinado grfico.
bool IndicatorAdd(
int

sub_win

// number of the sub-window

int

handle

// handle of the indicator

);

Parmetros
sub_win
[in] O nmero de sub-janelas do grfico. 0 (zero) significa a principal janela do grfico. Se o
nmero de uma janela que no existe for especificado, uma nova janela ser criada.
handle
[in] O manipulador do indicador.
Valor do Retorno
A funo retorna verdadeira em caso de sucesso, caso contrrio ela retorna falso. A fim de obter
informaes sobre o erro , chamar a funo GetLastError().
Veja tambm
IndicatorDelete(), IndicatorsTotal(), IndicatorName().

2000-2015, MetaQuotes Software Corp.

2582

Biblioteca Padro

IndicatorDelete
Remove um indicador com um nome especificado a partir da janela de determinado grfico.
bool IndicatorDelete(
int

sub_win

// number of the subwindow

const string

name

// short name of the indicator

);

Parmetros
sub_win
[in] Nmero de sub-janela do grfico. 0 (zero) indica a sub-janela do grfico principal.
const name
[in] O nome abreviado do indicador que definido na propriedade INDICATOR_SHORTNAME com a
funo IndicatorSetString() . Para obter o nome abreviado de um indicador use a funo
IndicatorName() .
Valor do Retorno
Retorna verdadeiro em caso de sucesso deletando o indicador. Do contrrio ele retorna falso. Para
obter detalhes do erro use a funo GetLastError().
Observao
Se houver dois indicadores com nomes abreviados iguais na sub-janela do grfico, o primeiro da
linha ser deletado.
Se outros indicadores neste grfico so baseados nos valores do indicador que est sendo deletado,
estes indicadores tambm sero deletados.
No confundir o nome abreviado do indicador e o nome do arquivo que especificado ao criar um
indicador usando as funes iCustom() e IndicatorCreate(). Se o nome abreviado de um indicador
no definido de forma explcita, o nome do arquivo contendo o cdigo-fonte do indicador ser
especificado durante a compilao.
Deletando um indicador de um grfico no significa que seu clculo ser excludo da memria do
terminal. Para liberar o manuseio do indicador usar a funo IndicatorRelease() .
Nome abreviado do indicador deve ser formado
corretamente. A
propriedade
INDICATOR_SHORTNAME ser escrita usando a funo IndicatorSetString() . Recomenda-se que o
nome abreviado deve conter valores de todos os parmetros de entrada do indicador, porque o
indicador a ser excludo do quadro pela funo IndicatorDelete() identificado pelo nome abreviado.
Veja tambm
IndicatorAdd(), IndicatorsTotal(), IndicatorName(), iCustom(), IndicatorCreate(),
IndicatorSetString().

2000-2015, MetaQuotes Software Corp.

2583

Biblioteca Padro

IndicatorsTotal
Retorna o nmero de todos indicadores utilizados para a janela de determinado grfico.
int IndicatorsTotal(
int

sub_win

// number of the subwindow

);

Parmetros
sub_win
[in] Nmero de sub-janela do grfico. 0 (zero) indica a sub-janela do grfico principal.
Valor do Retorno
O nmero de indicadores na janela de determinado grfico. Para obter detalhes do erro use a
funo GetLastError().
Observao
A funo permite uma busca atravs de todos os indicadores anexados ao grfico. O nmero de
todas as janelas do grfico pode ser obtido a partir da propriedade CHART_WINDOWS_TOTAL
usando a funo GetInteger ().
Veja tambm
IndicatorAdd(), IndicatorDelete(), IndicatorsTotal(), iCustom(), IndicatorCreate(),
IndicatorSetString().

2000-2015, MetaQuotes Software Corp.

2584

Biblioteca Padro

IndicatorName
Retorna o nome abreviado do indicador pelo ndice na lista de indicadores sobre a janela de
determinado grfico.
string IndicatorName(
int

sub_win

// number of the subwindow

int

index

// index of the indicator in the list of indicators added to the chat subwindo

);

Parmetros
sub_win
[in] Nmero de sub-janela do grfico. 0 (zero) indica a sub-janela do grfico principal.
index
[in] ndice do indicador na lista de indicadores. A numerao de indicadores comea com zero, ou
seja, o primeiro indicador da lista tem o ndice 0. Para obter o nmero de indicadores na lista usar
a funo IndicatorsTotal().
Valor do Retorno
O nome abreviado do indicador que definido na propriedade INDICATOR_SHORTNAME com a
funo IndicatorSetString(). Para obter detalhes do erro use a funo GetLastError().
Observao
No confundir o nome abreviado do indicador e o nome do arquivo que especificado ao criar um
indicador usando as funes iCustom() e IndicatorCreate(). Se o nome abreviado de um indicador
no definido de forma explcita, o nome do arquivo contendo o cdigo-fonte do indicador ser
especificado durante a compilao.
Nome abreviado do indicador deve ser formado
corretamente. A
propriedade
INDICATOR_SHORTNAME ser escrita usando a funo IndicatorSetString() . Recomenda-se que o
nome abreviado deve conter valores de todos os parmetros de entrada do indicador, porque o
indicador a ser excludo do quadro pela funo IndicatorDelete() identificado pelo nome abreviado.
Veja tambm
IndicatorAdd(), IndicatorDelete, IndicatorsTotal, iCustom(), IndicatorCreate(), IndicatorSetString().

2000-2015, MetaQuotes Software Corp.

2585

Biblioteca Padro

Navigate
Navegando no grfico
bool Navigate(
ENUM_CHART_POSITION position,

// Position

int

// Shift

shift=0

Parmetros
position
[in] Valor do enumerador ENUM_CHART_POSITION.
shift=0
[in] Nmero de barras a deslocar.
Valor de retorno
verdadeiro se obteve xito, falso se no navegar no grfico .

2000-2015, MetaQuotes Software Corp.

2586

Biblioteca Padro

Symbol
Obtm smbolo do grfico.
string Symbol() const

Valor de retorno
Smbolo do grfico, atribudo instncia de classe. Se no houver nenhum grfico atribudo, ele
retorna 0.

2000-2015, MetaQuotes Software Corp.

2587

Biblioteca Padro

Period
Obtm o perodo do grfico.
ENUM_TIMEFRAMES Period() const

Valor de retorno
Perodo do grfico, atribudo instncia de classe. Se no houver nenhum grfico atribudo, ele
retorna 0.

2000-2015, MetaQuotes Software Corp.

2588

Biblioteca Padro

Redraw
Redesenha grfico, atribudo instncia de classe.
void Redraw()

2000-2015, MetaQuotes Software Corp.

2589

Biblioteca Padro

GetInteger
A funo retorna o valor da propriedade do objeto correspondente. A propriedade do objeto devem ser
do tipo integer. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
long GetInteger(
ENUM_CHART_PROPERTY_INTEGER prop_id,

// property identifier

int

// subwindow number

sub_window=0

) const

2. Se for bem sucedido, coloca o valor da propriedade para a varivel especfica dotipo integer,
passados como referncia no ltimo parmetro.
bool GetInteger(
ENUM_CHART_PROPERTY_INTEGER prop_id,

// property identifier

int

sub_window,

// subwindow number

long&

value

// here we get the property value

) const

Parmetros
prop_id
[in] Identificador de propriedade (enumerador ENUM_CHART_PROPERTY_INTEGER).
sub_window
[in] Nmero da sub-janela do grfico.
value
[In] Varivel do tipo integer que recebeu o valor da propriedade solicitada.
Valor do Retorno
Valor de propriedade do grfico, atribudo instncia de classe. Se no houver qualquer grfico
atribudo, ele retorna -1.
Para a segunda variante a funo retornar verdadeira, se essa propriedade mantida e o valor foi
colocado na varivel "value", caso contrrio, retorna falsa. Para ler mais sobre o erro, chamar
GetLastError().

2000-2015, MetaQuotes Software Corp.

2590

Biblioteca Padro

SetInteger
Define um novo valor para a propriedade do tipo integer.
bool SetInteger(
ENUM_CHART_PROPERTY_INTEGER prop_id,

// property identifier

long

// new value

value

Parmetros
prop_id
[in] Identificador de propriedade (enumerador ENUM_CHART_PROPERTY_INTEGER).
value
[in] O novo valor da propriedade.
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade do tipo integer no mudou.

2000-2015, MetaQuotes Software Corp.

2591

Biblioteca Padro

GetDouble
A funo retorna o valor da propriedade do objeto correspondente. A propriedade do objeto devem ser
do tipo double. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
double GetDouble(
ENUM_CHART_PROPERTY_DOUBLE prop_id,

// property identifier

int

// subwindow number

sub_window=0

) const

2. Se for bem sucedida, coloca o valor da propriedade para a varivel especfica dotipo double,
passada por referncia como ltimo parmetro.
bool GetDouble(
ENUM_CHART_PROPERTY_DOUBLE prop_id,

// property identifier

int

sub_window,

// subwindow number

double&

value

// here we get the property value

) const

Parmetros
prop_id
[in] Identificador de propriedade(enumerador ENUM_CHART_PROPERTY_DOUBLE).
sub_window
[in] Nmero da sub-janela do grfico.
value
[In] Varivel do tipo double que recebeu o valor da propriedade solicitada.
Valor do Retorno
Valor de propriedade do grfico, atribudo instncia de classe. Se no houver qualquer grfico
atribudo, ele retorna EMPTY_VALUE.
Para a segunda variante a funo retornar verdadeira, se essa propriedade mantida e o valor foi
colocado na varivel "value", caso contrrio, retorna falsa. Para ler mais sobre o erro, chamar
GetLastError().

2000-2015, MetaQuotes Software Corp.

2592

Biblioteca Padro

SetDouble
Define um novo valor para a propriedade do tipo double.
bool SetDouble(
ENUM_CHART_PROPERTY_DOUBLE prop_id,

// property identifier

double

// new value

value

Parmetros
prop_id
[in] Identificador da propriedade do enumerador (ENUM_CHART_PROPERTY_DOUBLE).
value
[in] O novo valor para a propriedade.
Valor de retorno
Verdadeiro se obteve xito, falso se a propriedade do tipo double no mudou.

2000-2015, MetaQuotes Software Corp.

2593

Biblioteca Padro

GetString
A funo retorna o valor da propriedade do objeto correspondente. A propriedade do objeto deve ser
do tipo string. Existem 2 variantes da funo.
1. Imediatamente retorna o valor da propriedade.
string GetString(
ENUM_CHART_PROPERTY_STRING prop_id

// property identifier

) const

2. Se for bem sucedido, coloca o valor da propriedade para a varivel especfica dotipo string,
passados como referncia no ltimo parmetro.
bool GetString(
ENUM_CHART_PROPERTY_STRING prop_id,

// property identifier

string&

// here we get the property value

value

) const

Parmetros
prop_id
[in] Identificador de Propriedade (enumerador ENUM_CHART_PROPERTY_STRING).
sub_window
[in] Nmero da sub-janela do grfico.
value
[In] Varivel do tipo string que recebeu o valor da propriedade solicitada.
Valor do Retorno
Valor de propriedade do grfico, atribudo instncia de classe. Se no houver qualquer grfico
atribudo, ele retorna "".
Para a segunda variante a funo retornar verdadeira, se essa propriedade mantida e o valor foi
colocado na varivel "value", caso contrrio, retorna falsa. Para ler mais sobre o erro, chamar
GetLastError().

2000-2015, MetaQuotes Software Corp.

2594

Biblioteca Padro

SetString
Define um novo valor para a propriedade do tipo string.
bool SetString(
ENUM_CHART_PROPERTY_STRING prop_id,

// property identifier

string

// new property value

value

Parmetros
prop_id
[in] Identificador de propriedade (enumerador ENUM_CHART_PROPERTY_STRING).
value
[in] O novo valor para a propriedade.
Valor de retorno
Verdadeiro se obteve xito, falso se propriedade do tipo string no mudou.

2000-2015, MetaQuotes Software Corp.

2595

Biblioteca Padro

SetSymbolPeriod
Altera smbolo e perodo do grfico, atribudo instncia de classe.
bool SetSymbolPeriod(
const string

symbol_name,

ENUM_TIMEFRAMES timeframe

// Symbol
// Period

Parmetros
symbol_name
[in] Novo nome do smbolo. NULL significa o smbolo do grfico corrente (para o expert anexado).
timeframe
[in] Novo timeframe de grfico (enumerador ENUM_TIMEFRAMES). 0 significa o timeframe
corrente.
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

2596

Biblioteca Padro

ApplyTemplate
Aplica um template especfico ao grfico.
bool ApplyTemplate(
const string filename

// template file name

Parmetros
filename
[in] nome de arquivo do template.
Valor de retorno
Verdadeiro se obteve xito, falso se o template no for aplicado.

2000-2015, MetaQuotes Software Corp.

2597

Biblioteca Padro

ScreenShot
Cria a captura de tela do grfico especificado e salva como arquivo ".gif".
bool ScreenShot(
string

filename,

// File name

int

width,

// Width

int

height,

// Height

ENUM_ALIGN_MODE align_mode=ALIGN_RIGHT

// Align type

) const

Parmetros
filename
[in] O nome do arquivo para captura de tela.
width
[in] Captura de tela com largura em pixels.
height
[in] Captura de tela com altura em pixels.
align_mode=ALIGN_RIGHT
[in] Modo alinhar, se a captura de tela estreita.
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2598

Biblioteca Padro

WindowOnDropped
Obtm nmero grfico da sub-janela correspondente ao ponto de entrada do objeto (expert ou script).
int WindowOnDropped() const

Valor de retorno
Nmero do grfico da sub-janela do ponto de entrada do objeto. 0 significa a janela principal do
grfico.

2000-2015, MetaQuotes Software Corp.

2599

Biblioteca Padro

PriceOnDropped
Obtm coordenada do preo correspondente ao ponto de entrada do objeto (expert ou script).
double PriceOnDropped() const

Valor de retorno
Coordenar preo do ponto de entrada do objeto.

2000-2015, MetaQuotes Software Corp.

2600

Biblioteca Padro

TimeOnDropped
Obtm as coordenadas de tempo correspondente ao ponto de entrada do objeto (expert ou script).
datetime TimeOnDropped() const

Valor de retorno
Coordenar o tempo do ponto de entrada do objeto.

2000-2015, MetaQuotes Software Corp.

2601

Biblioteca Padro

XOnDropped
Obtm as coordenadas X correspondente ao ponto de entrada do objeto (expert ou script).
int XOnDropped() const

Valor de retorno
Coordenada X do ponto de entrada do objeto.

2000-2015, MetaQuotes Software Corp.

2602

Biblioteca Padro

YOnDropped
Obtm as coordenadas Y correspondente ao (expert ou script)
int YOnDropped() const

Valor de retorno
Coordenada Y do ponto de entrada do objeto.

2000-2015, MetaQuotes Software Corp.

2603

Biblioteca Padro

Save
Salva parmetros do objeto para arquivo.
virtual bool Save(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen(...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2604

Biblioteca Padro

Load
Carrega parmetros do objeto a partir do arquivo.
virtual bool Load(
int file_handle

// File handle

Parmetros
file_handle
[in] Manipulador para o arquivo binrio j aberto pela funo FileOpen(...).
Valor de retorno
verdadeiro se obteve xito, falso se foi um erro.

2000-2015, MetaQuotes Software Corp.

2605

Biblioteca Padro

Type
Retorna o identificador do tipo de objeto grfico
virtual int Type() const

Valor de retorno
Identificador do tipo de objeto (0x1111 para CChart).

2000-2015, MetaQuotes Software Corp.

2606

Biblioteca Padro

Operaes de Arquivo
Esta seo contm os detalhes tcnicos das classes para operaes de arquivo e descries dos
componentes correspondentes na biblioteca padro MQL5.
As classes para operaes de arquivo pouparo tempo no desenvolvimento de aplicaes que utilizam
operaes de entrada/sada de arquivo.
A Biblioteca Padro MQL5 colocada no diretrio de trabalho do terminal na pasta Include\Files.
Classe

Descrio

CFile

Base de dados da classe para operaes de


arquivo

CFileBin

Classe para operaes de arquivo binrio

CFileTxt

Texto na classe para operaes de arquivo

2000-2015, MetaQuotes Software Corp.

2607

Biblioteca Padro

CFile
CFile uma classe base para CFileBin e CFileTxt.

Descrio
Classe CFile proporciona o acesso simplificado a todos os seus descendentes para funes de arquivo e
pasta API MQL5.

Declarao
class CFile: public CObject

Ttulo
#include <Files\File.mqh>

Mtodos de classe
Atributos
Handle

Obtm manipulador de arquivo

Filename

Obtm um nome de arquivo

Flags

Obtm os flags de arquivo

SetUnicode

Define/Limpa o flag FILE_UNICODE

SetCommon

Define/Limpa o flag FILE_COMMON

Os mtodos gerais para arquivos


Open

Abre arquivo

Close

Fecha arquivo

Delete

Exclui arquivo

IsExist

Verifica existncia de arquivo

Copy

Copia arquivos

Move

Renomeia/move arquivo

Size

Obtm o tamanho do arquivo

Tell

Obtm posio atual do arquivo

Seek

Define posio atual do arquivo

Flush

Liberao de dados no disco

IsEnding

Verifica arquivo para final

IsLineEnding

Os testes de linha para finalizar

Os mtodos gerais para pastas

2000-2015, MetaQuotes Software Corp.

2608

Biblioteca Padro

FolderCreate

Cria pasta

FolderDelete

Exclui pasta

FolderClean

Limpa pasta

Os mtodos de pesquisa
FileFindFirst

Inicia a pesquisa de arquivo

FileFindNext

Continua a pesquisa de arquivo

FileFindClose

Fecha a pesquisa manipulada

As classes derivadas:
CFileBin
CFileTxt

2000-2015, MetaQuotes Software Corp.

2609

Biblioteca Padro

Handle
Obtm manipulador do arquivo aberto.
int Handle()

Valor de retorno
Manipulador do arquivo aberto, atribudo instncia de classe. Se no houver nenhum arquivo
atribudo, ele retorna -1.

2000-2015, MetaQuotes Software Corp.

2610

Biblioteca Padro

FileName
Obtm o nome do arquivo arquivo aberto.
string FileName()

Valor de retorno
O nome do arquivo aberto, atribudo instncia de classe. Se no houver nenhum arquivo atribudo,
retorna "" (duas aspas).

2000-2015, MetaQuotes Software Corp.

2611

Biblioteca Padro

Flags
Obtm flags do arquivo aberto.
int Flags()

Valor de retorno
Flags do arquivo aberto, atribudos instncia de classe.

2000-2015, MetaQuotes Software Corp.

2612

Biblioteca Padro

SetUnicode
Define/limpa o flag FILE_UNICODE.
void SetUnicode(
bool unicode

// New flag value

Parmetros
unicode
[in] O novo valor para o flag FILE_UNICODE.
Observao
O resultado das operaes string depende do flag FILE_UNICODE. Se for falso, os cdigos ANSI so
utilizados (smbolos de um byte). Se for definido, os cdigos UNICODE so usados (smbolos de dois
bytes). Se o arquivo foi aberto, o flag no pode ser alterado.

2000-2015, MetaQuotes Software Corp.

2613

Biblioteca Padro

SetCommon
Define/Limpa o flag FILE_COMMON.
void SetCommon(
bool common

// New flag value

Parmetros
common
[in] O novo valor para o flag FILE_COMMON.
Observao
O flag FILE_UNICODE determina a pasta de trabalho atual. Se for falso, a pasta do terminal local
usada como a pasta atual de trabalho. Se for verdadeiro, a pasta geral usada como a pasta atual
de trabalho. Se o arquivo foi aberto, o flag no pode ser alterado.

2000-2015, MetaQuotes Software Corp.

2614

Biblioteca Padro

Open
Se com sucesso, abre o arquivo determinado e o atribui para a instncia da classe.
int Open(
const string file_name,

// File name

int

flags,

// Flags

short

delimiter=9

// Separator

Parmetros
file_name
[in] O nome do arquivo para abrir.
flags
[in] Flags de arquivo aberto
delimiter=9
[in] Separador do arquivo CSV.
Valor de retorno
Manipulador do arquivo aberto.
Observao
A pasta de trabalho depende do flag FILE_COMMON, definido pelo mtodo SetCommon().

2000-2015, MetaQuotes Software Corp.

2615

Biblioteca Padro

Close
Fecha arquivo, atribudo instncia de classe.
void Close()

2000-2015, MetaQuotes Software Corp.

2616

Biblioteca Padro

Delete
Exclui o arquivo, atribudo instncia de arquivo.
void Delete()

Delete
Exclui o arquivo especificado.
void Delete(
const string file_name

// File name

Parmetros
file_name
[in] O nome do arquivo do arquivo a ser excludo.
Observao
A pasta de trabalho dependente do flag FILE_COMMON, definido pelo mtodo SetCommon().

2000-2015, MetaQuotes Software Corp.

2617

Biblioteca Padro

IsExist
Verifica existncia de arquivo
bool IsExist(
const string file_name

// File name

Parmetros
file_name
[in] Nome do arquivo a verificar.
Valor de retorno
verdadeiro se o arquivo existe.

2000-2015, MetaQuotes Software Corp.

2618

Biblioteca Padro

Copy
Copia um arquivo.
bool Copy(
const string src_name,

// Source file name

int

// Flag

src_flag,

const string dst_name,

// Destination file name

int

// Flags

dst_flags

Parmetros
src_name
[in] O nome do arquivo para copiar.
src_flag
[in] Flags do arquivo para copiar (apenas FILE_COMMON usado).
dst_name
[in] Nome do arquivo de destino.
dst_flags
[in] Flags do arquivo de destino (apenas FILE_REWRITE e FILE_COMMON so utilizados).
Valor de retorno
verdadeiro se com sucesso, falso se no tiver sido copiado.

2000-2015, MetaQuotes Software Corp.

2619

Biblioteca Padro

Move
Renomeia/move arquivo.
bool Move(
const string src_name,

// Source file name

int

// Flag

src_flag,

const string dst_name,

// Destination file name

int

// Flags

dst_flags

Parmetros
src_name
[in] O nome do arquivo para mover.
src_flag
[in] Flags do arquivo para copiar (apenas FILE_COMMON usado).
dst_name
[in] Nome do arquivo de destino.
dst_flags
[in] Flags do arquivo de destino (apenas FILE_REWRITE e FILE_COMMON so utilizados).
Valor de retorno
verdadeiro se teve sucesso. Falso se no foi movido.

2000-2015, MetaQuotes Software Corp.

2620

Biblioteca Padro

Size
Obtm o tamanho do arquivo em bytes.
ulong Size()

Valor de retorno
Tamanho do arquivo em bytes. Se no houver qualquer arquivo atribudo, retorna ULONG_MAX.

2000-2015, MetaQuotes Software Corp.

2621

Biblioteca Padro

Tell
Obtm a posio atual do arquivo.
ulong Tell()

Valor de retorno
A posio atual do arquivo. Se no houver qualquer arquivo atribudo, retorna ULONG_MAX.

2000-2015, MetaQuotes Software Corp.

2622

Biblioteca Padro

Seek
Define posio atual do arquivo.
void Seek(
long

offset,

ENUM_FILE_POSITION origin

// Offset
// Origin

Parmetros
offset
[in] Deslocamento em bytes do arquivo (pode ser negativo).
origin
[in] Origem do deslocamento.
Valor de retorno
verdadeiro se teve sucesso. Falso se a posio do arquivo no foi alterada.

2000-2015, MetaQuotes Software Corp.

2623

Biblioteca Padro

Flush
Libera todos os dados do buffer de entrada/sada de arquivo no disco.
void Flush()

2000-2015, MetaQuotes Software Corp.

2624

Biblioteca Padro

IsEnding
Verifica arquivo para finalizar. usado durante as operaes de leitura do arquivo.
bool IsEnding()

Valor de retorno
verdadeiro se foi finalizado o arquivo depois de ler ou da operao de busca.

2000-2015, MetaQuotes Software Corp.

2625

Biblioteca Padro

IsLineEnding
Verifica o arquivo para o final da linha. usado durante as operaes de leitura do arquivo.
bool IsLineEnding()

Valor de retorno
verdadeiro se o final da linha foi alcanado aps a operao de leitura do arquivo txt ou csv
(caracteres CR-LF).

2000-2015, MetaQuotes Software Corp.

2626

Biblioteca Padro

FolderCreate
Cria nova pasta.
bool FolderCreate(
const string folder_name

// Folder name

Parmetros
folder_name
[in] Nome da pasta para criar. Contm caminho para a pasta em relao pasta definida pelo flag
FILE_COMMON.
Valor de retorno
verdadeiro se teve sucesso. Falso se a pasta no foi criada.
Observao
A pasta de trabalho dependente do flag FILE_COMMON, definido pelo mtodo SetCommon().

2000-2015, MetaQuotes Software Corp.

2627

Biblioteca Padro

FolderDelete
Exclui pasta determinada.
bool FolderDelete(
const string folder_name

// Folder name

Parmetros
folder_name
[in] Nome da pasta a ser excluda. Contm caminho para a pasta em relao pasta definida
pelo flag FILE_COMMON.
Valor de retorno
verdadeiro se teve sucesso. Falso se a pasta no foi excluda.
Observao
A pasta de trabalho dependente do flag FILE_COMMON, definido pelo mtodo SetCommon().

2000-2015, MetaQuotes Software Corp.

2628

Biblioteca Padro

FolderClean
Limpa pasta determinada.
bool FolderClean(
const string folder_name

// Folder name

Parmetros
folder_name
[in] Nome da pasta a ser excluda. Contm caminho para a pasta em relao pasta definida
pelo flag FILE_COMMON.
Valor de retorno
verdadeiro se teve sucesso. Falso se a pasta no foi limpa.
Observao
A pasta de trabalho dependente do flag FILE_COMMON, definido pelo mtodo SetCommon().

2000-2015, MetaQuotes Software Corp.

2629

Biblioteca Padro

FileFindFirst
Inicia a busca de arquivos usando o filtro determinado.
int FileFindFirst(
const string filter,

// Search Filter

string&

// Reference to string

file_name

Parmetros
filter
[in] Filtro de pesquisa.
file_name
[out] A referncia string para o primeiro arquivo encontrado.
Valor de retorno
Se for bem sucedido, ele retorna o manipulador, que poder ser usado em nova pesquisa de
arquivos usando o FileFindNext, ou INVALID_HANDLE se no houver qualquer arquivo correspondente
ao filtro determinado.
Observao
A pasta de trabalho dependente do flag FILE_COMMON, definido pelo mtodo SetCommon().

2000-2015, MetaQuotes Software Corp.

2630

Biblioteca Padro

FileFindNext
Continua a pesquisa, iniciada pela funo FileFindFirst().
bool FileFindNext(
int

search_handle,

string& file_name

// Search handle
// Reference to string for the next file found

Parmetros
search_handle
[in] Manipulador da pesquisa, retorno pelo mtodo FileFindFirst().
file_name
[in] A referncia string para o nome do arquivo encontrado em caso de xito.
Valor de retorno
Verdadeiro se teve sucesso. Falso se no houver qualquer arquivo correspondente ao filtro
determinado.

2000-2015, MetaQuotes Software Corp.

2631

Biblioteca Padro

FileFindClose
Fecha manipulador da pesquisa.
void FileFindClose(
int search_handle

// Search handle

Parmetros
search_handle
[in] Manipulador da pesquisa, retorno pelo mtodo FileFindFirst().

2000-2015, MetaQuotes Software Corp.

2632

Biblioteca Padro

CFileBin
CFileBin uma classe de acesso simplificado para os arquivos binrios

Descrio
Classe CFileBin fornece um acesso aos arquivos binrios.

Declarao
class CFileBin: public CFile

Ttulo
#include <Files\FileBin.mqh>

Mtodos de classe
Abrir mtodos
Open

Abre um arquivo binrio

Mtodos de gravao
WriteChar

Escreve varivel do tipo char ou uchar

WriteShort

Escreve varivel do tipo short ou ushort

WriteInteger

Escreve varivel do tipo int ou uint

WriteLong

Escreve varivel do tipo long ou ulong

WriteFloat

Escreve varivel do tipo float

WriteDouble

Escreve varivel do tipo double

WriteString

Escreve varivel do tipo string

WriteCharArray

Escreve um array das variveis do tipo char ou


uchar

WriteShortArray

Escreve um array das variveis do tipo short ou


ushort

WriteIntegerArray

Escreve um array das variveis do tipo int ou


uint

WriteLongArray

Escreve um array das variveis do tipo long ou


ulong

WriteFloatArray

Escreve um array das variveis do tipo float

WriteDoubleArray

Escreve um array das variveis do tipo double

WriteObject

Escreve dados da instncia de classe herdeira


CObject

Lendo mtodos

2000-2015, MetaQuotes Software Corp.

2633

Biblioteca Padro

ReadChar

L varivel do tipo char ou uchar

ReadShort

L varivel do tipo short ou ushort

ReadInteger

L varivel do tipo int ou uint

ReadLong

L varivel do tipo long ou ulong

ReadFloat

L varivel do tipo float

ReadDouble

L varivel do tipo double

ReadString

L varivel do tipo string

ReadCharArray

L um array das variveis do tipo char ou uchar

ReadShortArray

L um array das variveis do tipo short ou


ushort

ReadIntegerArray

L um array das variveis do tipo int ou uint

ReadLongArray

L um array das variveis do tipo long ou ulong

ReadFloatArray

L um array das variveis do tipo tipo float

ReadDoubleArray

L um array das variveis do tipo double

ReadObject

L dados da instncia de classe herdeira


CObject

2000-2015, MetaQuotes Software Corp.

2634

Biblioteca Padro

Open
Se com sucesso, abre o arquivo binrio determinado e o atribui para a instncia de classe.
int Open(
const string file_name,

// File name

int

// Flags

flags

Parmetros
file_name
[in] O nome do arquivo a ser aberto.
flags
[in] Flags de arquivo aberto (existe uma configurao forada do flag FILE_BIN)
Valor de retorno
Manipulador do arquivo aberto.

2000-2015, MetaQuotes Software Corp.

2635

Biblioteca Padro

WriteChar
Escreve uma varivel para arquivo do tipo char ou uchar
uint WriteChar(
char value

// Value

Parmetros
value
[in] Varivel para escrever.
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2636

Biblioteca Padro

WriteShort
Escreve uma varivel para arquivo do tipo short ou ushort.
uint WriteShort(
short value

// Value

Parmetros
value
[in] Varivel para escrever.
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2637

Biblioteca Padro

WriteInteger
Escreve uma varivel para arquivo do tipo int ou uint.
uint WriteInteger(
int value

// Value

Parmetros
value
[in] Varivel para escrever.
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2638

Biblioteca Padro

WriteLong
Escreve uma varivel para arquivo do tipo long ou ulong.
uint WriteLong(
long value

// Value

Parmetros
value
[in] Varivel para escrever.
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2639

Biblioteca Padro

WriteFloat
Escreve uma varivel para arquivo do tipo float.
uint WriteFloat(
float value

// Value

Parmetros
value
[in] Varivel para escrever.
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2640

Biblioteca Padro

WriteDouble
Escreve uma varivel para arquivo do tipo double .
uint WriteDouble(
double value

// Value

Parmetros
value
[in] Varivel para escrever.
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2641

Biblioteca Padro

WriteString
Escreve uma varivel para arquivo do tipo string.
uint WriteString(
const string value

// Value

Parmetros
value
[in] String para escrever.
Valor de retorno
Nmero de bytes escritos.

WriteString
Escreve uma varivel para arquivo do tipo string.
uint WriteString(
const string value,

// Value

int

// Size

size

Parmetros
value
[in] String para escrever.
size
[in] Nmero de bytes para escrever.
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2642

Biblioteca Padro

WriteCharArray
Escreve um array de varivel para arquivo do tipo char ou uchar.
uint WriteCharArray(
char& array[],

// Array reference

int

start_item=0,

// Start element

int

items_count=-1

// Number of elements

Parmetros
array[]
[in] Array para escrever.
start_item=0
[in] Inicia a escrever a partir do elemento.
items_count=-1
[in] Nmero de elementos para escrever (-1 - para o array completo).
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2643

Biblioteca Padro

WriteShortArray
Escreve um array de varivel para arquivo do tipo short ou ushort.
uint WriteShortArray(
short& array[],

// Array to write

int

start_item=0,

// Start element

int

items_count=-1

// Number of elements to write

Parmetros
array[]
[in] Array para escrever.
start_item=0
[in] Inicia a escrever a partir do elemento.
items_count=-1
[in] Nmero de elementos para escrever (-1 - para o array completo).
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2644

Biblioteca Padro

WriteIntegerArray
Escreve um array de varivel para arquivo do tipo int ou uint.
uint WriteIntegerArray(
int& array[],

// Array to write

int

start_item=0,

// Start element

int

items_count=-1

// Number of elements to write

Parmetros
array[]
[in] Array para escrever.
start_item=0
[in] Inicia a escrever a partir do elemento.
items_count=-1
[in] Nmero de elementos para escrever (-1 - para o array completo).
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2645

Biblioteca Padro

WriteLongArray
Escreve um array de varivel para arquivo do tipo long ou ulong.
uint WriteLongArray(
long& array[],

// Array to write

int

start_item=0,

// Start element

int

items_count=-1

// Number of elements to write

Parmetros
array[]
[in] Array para escrever.
start_item=0
[in] Inicia a escrever a partir do elemento.
items_count=-1
[in] Nmero de elementos para escrever (-1 - para array completo).
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2646

Biblioteca Padro

WriteFloatArray
Escreve um array de varivel para arquivo do tipo float.
uint WriteFloatArray(
float& array[],

// Array to write

int

start_item=0,

// Start element

int

items_count=-1

// Number of elements to write

Parmetros
array[]
[in] Array para escrever.
start_item=0
[in] Inicia a escrever a partir do elemento.
items_count=-1
[in] Nmero de elementos para escrever (-1 - para array completo).
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2647

Biblioteca Padro

WriteDoubleArray
Escreve um array de varivel para arquivo do tipo double.
uint WriteDoubleArray(
double& array[],

// Array to write

int

start_item=0,

// Start element

int

items_count=-1

// Number of elements to write

Parmetros
array[]
[in] Matriz para escrever.
start_item=0
[in] Inicia a escrever a partir do elemento.
items_count=-1
[in] Nmero de elementos para escrever (-1 - para array completo).
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2648

Biblioteca Padro

WriteObject
Escreve dados da instncia de classe herdeira CObject para arquivo.
bool WriteObject(
CObject* object

// Reference to the object

Parmetros
object
[in] Referente instncia de classe herdeira CObject para escrever.
Valor de retorno
Verdadeiro se teve sucesso, falso se os dados no foram escritos.

2000-2015, MetaQuotes Software Corp.

2649

Biblioteca Padro

ReadChar
A partir do arquivo vai ler varivel do tipo char ou uchar.
bool ReadChar(
char& value

// Target variable

Parmetros
value
[in] Varivel de destino do tipo char.
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2650

Biblioteca Padro

ReadShort
A partir do arquivo vai ler varivel do tipo short ou ushort .
bool ReadShort(
short& value
)

Parmetros
value
[in] Varivel de destino do tipo short ou ushort.
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2651

Biblioteca Padro

ReadInteger
A partir do arquivo vai ler uma varivel do tipo int ou uint .
bool ReadInteger(
int& value

// Target variable

Parmetros
value
[in] Varivel de destino do tipo int ou uint.
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2652

Biblioteca Padro

ReadLong
A partir do arquivo vai ler uma varivel do tipo long ou ulong .
bool ReadLong(
long& value
)

Parmetros
value
[in] Varivel de destino do tipo long ou ulong.
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2653

Biblioteca Padro

ReadFloat
A partir do arquivo vai ler a varivel do tipo float
bool ReadFloat(
float& value

// Target variable

Parmetros
value
[in] Varivel de destino do tipo float.
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2654

Biblioteca Padro

ReadDouble
A partir do arquivo vai ler uma varivel do tipo double .
bool ReadDouble(
double& value
)

Parmetros
value
[in] Varivel de destino do tipo double.
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2655

Biblioteca Padro

ReadString
A partir do arquivo vai ler uma varivel do tipo string.
bool ReadString(
string& value

// Target string

Parmetros
value
[in] Varivel de destino do tipo string.
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

ReadString
A partir do arquivo vai ler uma varivel do tipo string.
bool ReadString(
string& value
)

Parmetros
value
[in] Varivel de destino do tipo string.
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2656

Biblioteca Padro

ReadCharArray
A partir do arquivo vai ler um array da varivel do tipo char or uchar.
bool ReadCharArray(
char& array[],

// Target array

int

start_item=0,

// Start element

int

items_count=-1

// Number of elements to read

Parmetros
array[]
[in] Referente ao array de destino do tipo char ou uchar.
start_item=0
[in] Elemento inicia a leitura.
items_count=-1
[in] Nmero de elementos para ler (-1 - l at o final do arquivo).
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2657

Biblioteca Padro

ReadShortArray
A partir do arquivo vai ler um array da varivel do tipo short ou ushort .
bool ReadShortArray(
short& array[],

// Target array

int

start_item=0,

// Start element

int

items_count=-1

// Number of elements to read

Parmetros
array[]
[in] Referente ao array de destino de tipo short ou ushort.
start_item=0
[in] Elemento inicia a leitura.
items_count=-1
[in] Nmero de elementos para ler (-1 - l at o final do arquivo).
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2658

Biblioteca Padro

ReadIntegerArray
A partir do arquivo vai ler um array da varivel do tipo int ou uint.
bool ReadIntegerArray(
int& array[],

// Target array

int

start_item=0,

// Start element

int

items_count=-1

// Number of elements to read

Parmetros
array[]
[in] Referente ao array destino do tipo int ou uint.
start_item=0
[in] Elemento inicia a leitura.
items_count=-1
[in] Nmero de elementos para ler (-1 - l at o final do arquivo).
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2659

Biblioteca Padro

ReadLongArray
A partir do arquivo vai ler um array da varivel do tipo long ou ulong .
bool ReadLongArray(
long& array[],

// Target array

int

start_item=0,

// Start element

int

items_count=-1

// Number of elements to read

Parmetros
array[]
[in] Referente ao array de destino do tipo long ou ulong.
start_item=0
[in] Elemento inicia a leitura.
items_count=-1
[in] Nmero de elementos para ler (-1 - l at o final do arquivo).
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2660

Biblioteca Padro

ReadFloatArray
A partir do arquivo vai ler um array da varivel do tipo float.
bool ReadFloatArray(
float& array[],

// Target array

int

start_item=0,

// Start element

int

items_count=-1

// Number of elements to read

Parmetros
array[]
[in] Referente ao array de destino do tipo float.
start_item=0
[in] Elemento inicia a leitura.
items_count=-1
[in] Nmero de elementos para ler (-1 - l at o final do arquivo).
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2661

Biblioteca Padro

ReadDoubleArray
A partir do arquivo vai ler um array da varivel do tipo double.
bool ReadDoubleArray(
double& array[],

// Target array

int

start_item=0,

// Start element

int

items_count=-1

// Number of elements to read

Parmetros
array[]
[in] Referente ao array de destino do tipo double.
start_item=0
[in] Elemento inicia a leitura.
items_count=-1
[in] Nmero de elementos para ler (-1 - l at o final do arquivo).
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2662

Biblioteca Padro

ReadObject
A partir do arquivo vai ler dados da instncia de classe herdeira CObject.
bool ReadObject(
CObject* object

// Reference to the object

Parmetros
object
[in] Referente ao destino da instncia de classe herdeira CObject para leitura.
Valor de retorno
verdadeiro se teve sucesso, falso se os dados no foram lidos.

2000-2015, MetaQuotes Software Corp.

2663

Biblioteca Padro

CFileTxt
CFileTxt uma classe para o acesso simplificado aos arquivos de texto.

Descrio
Classe CFileTxt fornece um acesso aos arquivos de texto.

Declarao
class CFileTxt: public CFile

Ttulo
#include <Files\FileTxt.mqh>

Mtodos de classe
Abrir mtodos
Open

Abre um arquivo de texto

Mtodos de gravao
WriteString

Escreve varivel do tipo string para arquivo

Lendo mtodos
ReadString

A partir do arquivo vai ler varivel do tipo


string

2000-2015, MetaQuotes Software Corp.

2664

Biblioteca Padro

Open
Se com sucesso, abre o arquivo de texto determinado e o atribui instncia de classe.
int Open(
const string file_name,

// file name

int

// flags

flags

Parmetros
file_name
[in] O nome do arquivo para abrir.
flags
[in] Flags de arquivo aberto (existe uma configurao forada do flag FILE_TXT).
Valor de retorno
Identificador de arquivo aberto.

2000-2015, MetaQuotes Software Corp.

2665

Biblioteca Padro

WriteString
Escreve varivel do tipo string para arquivo.
uint WriteString(
const string value

// String to write

Parmetros
value
[in] String para escrever.
Valor de retorno
Nmero de bytes escritos.

2000-2015, MetaQuotes Software Corp.

2666

Biblioteca Padro

ReadString
A partir do arquivo vai ler uma varivel do tipo string.
string ReadString()

Valor de retorno
String que foram lidas.

2000-2015, MetaQuotes Software Corp.

2667

Biblioteca Padro

Operaes String
Esta seo contm os detalhes tcnicos das classes de operaes string e descries dos componentes
correspondentes da biblioteca padro MQL5.
O uso de classes de operaes string vai poupar tempo no desenvolvimento de aplicaes que utilizam
operaes de processamento de texto.
A Biblioteca Padro MQL5 alocada no diretrio de trabalho do terminal, na pasta Include\Strings.
Classe

Descrio

CString

Classe para operaes string

2000-2015, MetaQuotes Software Corp.

2668

Biblioteca Padro

CString
CString uma classe para o acesso simplificado s variveis do tipo string.

Descrio
A classe CFile proporciona o acesso simplificado a todos os seus descendentes para funes string do
API MQL5.

Declarao
class CString: public CObject

Ttulo
#include <Strings\String.mqh>

Mtodos de classe
Mtodos de acesso aos dados
Str

Obtm uma string

Len

Obtm comprimento de uma string

Copy

Copia uma string

Mtodos para preencher


Fill

Preenche uma string com uma char especfica

Assign

Atribui uma string

Append

Acrescenta uma string

Insert

Insere uma string

Mtodos para comparar


Compare

Compara uma string

CompareNoCase

Compara strings maiscula e minscula

Mtodos substring
Left

Obtm um nmero determinado de caracteres a


partir do lado esquerdo de uma string

Right

Obtm um nmero determinado de caracteres a


partir do lado direito de uma string

Mid

Obtm um nmero determinado de caracteres a


partir de uma string

Mtodos para podar/excluir


Trim

Remove todas as ocorrncias a esquerda e a


direita de uma configurao especfica de

2000-2015, MetaQuotes Software Corp.

2669

Biblioteca Padro

caracteres a partir de uma string


TrimLeft

Remove todas as ocorrncias a esquerda de


uma configurao especfica de caracteres a
partir de uma string

TrimRight

Remove todas as ocorrncias a direita de uma


configurao especfica de caracteres a partir
de uma string

Clear

Limpa uma string

Mtodos de converter
ToUpper

Converte uma string para maisculas.

ToLower

Converte uma string para minsculas.

Reverse

Reverte uma string

Os mtodos de pesquisa
Find

Procura a
substring

primeira

FindRev

Procura a ltima combinao de uma substring

Remover

Exclui uma substring de uma string

Replace

Substitui uma substring

2000-2015, MetaQuotes Software Corp.

combinao

de

uma

2670

Biblioteca Padro

Str
Obtm uma string.
string Str() const;

Valor de retorno
Cpia de um string.

2000-2015, MetaQuotes Software Corp.

2671

Biblioteca Padro

Len
Obtm comprimento de uma string.
uint Len() const;

Valor de retorno
Comprimento de uma string.

2000-2015, MetaQuotes Software Corp.

2672

Biblioteca Padro

Copy
Copia uma string pela referncia.
void Copy(
string& copy

// Reference

) const;

Parmetros
copy
[in] Referente a uma string para copiar.

Copy
Copia uma string instncia de classe CString.
void Copy(
CString* copy

// Object descriptor

) const;

Parmetros
copy
[in] Descritor de objeto da classe CString.

2000-2015, MetaQuotes Software Corp.

2673

Biblioteca Padro

Fill
Preenche uma string com um char especfico.
bool Fill(
short character

// Character

Parmetros
character
[in] Caracteres para preenchimento.
Valor de retorno
verdadeiro se teve sucesso, falso se uma string no foi preenchida.

2000-2015, MetaQuotes Software Corp.

2674

Biblioteca Padro

Assign
Atribui uma string.
void Assign(
const string str

// String to assign

Parmetros
str
[in] String para atribuir.

Assign
Atribui uma string instncia de classe CString.
void Assign(
CString* str

// Object descriptor

Parmetros
str
[in] Descritor de objeto da classe CString para atribuir.

2000-2015, MetaQuotes Software Corp.

2675

Biblioteca Padro

Append
Acrescenta uma seqncia de caracteres.
void Append(
const string str

// String to append

Parmetros
str
[in] String para anexar.

Append
Acrescenta uma seqncia de caracteres para a instncia de classe CString.
void Append(
CString* string

// Object descriptor

Parmetros
string
[in] Descritor de objeto da classe CString para anexar.

2000-2015, MetaQuotes Software Corp.

2676

Biblioteca Padro

Insert
Insere uma string de caracteres para uma posio especfica.
uint Insert(
uint

pos,

const string str

// Position
// String to insert

Parmetros
pos
[in] Inserir posio.
str
[in] Inserir String.
Valor de retorno
Resultado do comprimento da string.

Insert
Insere uma string de caracteres na posio determinada para a instncia de classe CString.
uint Insert(
uint

pos,

CString* str

// Position
// Object descriptor

Parmetros
pos
[in] Inserir posio.
str
[in] Descritor de objeto da classe CString para inserir.
Valor de retorno
Resultado do comprimento da string.

2000-2015, MetaQuotes Software Corp.

2677

Biblioteca Padro

Compare
Compara uma string.
int Compare(
const string str

// String to compare

) const;

Parmetros
str
[in] String para comparar.
Valor de retorno
Retorna 0 se as strings so iguais, -1 se uma string da classe menor do que uma string para
comparar, -1 se a string da classe maior do que uma string para comparar.

Compare
Compara uma string com uma string de instncia da classe CString.
int Compare(
CString* str

// Object descriptor

) const;

Parmetros
str
[in] descritor do objeto da classe CString para comparar.
Valor de retorno
Retorna 0 se as strings so iguais, -1 se uma string da classe menor do que uma string para
comparar, -1 se a string da classe maior do que uma string para comparar.

2000-2015, MetaQuotes Software Corp.

2678

Biblioteca Padro

CompareNoCase
Compara string maisculas e minscula.
int CompareNoCase(
const string str

// String to compare

) const;

Parmetros
str
[in] String para comparar.
Valor de retorno
Retorna 0 se as strings so iguais, -1 se uma string da classe menor do que uma string para
comparar, -1 se a string da classe maior do que uma string para comparar.

CompareNoCase
Compara string (maiscula e minscula)com uma string de instncia da classe CString.
int CompareNoCase(
CString* str

// Object descriptor

) const;

Parmetros
str
[in] descritor do objeto da classe CString para comparar.
Valor de retorno
Retorna 0 se as strings so iguais, -1 se uma string da classe menor do que uma string para
comparar, -1 se a string da classe maior do que uma string para comparar.

2000-2015, MetaQuotes Software Corp.

2679

Biblioteca Padro

Left
Obtm um nmero determinado de caracteres a partir do lado esquerdo de uma string.
string Left(
uint count

// Number of characters

Parmetros
count
[in] Nmero de caracteres.
Valor de retorno
Resultado da Substring.

2000-2015, MetaQuotes Software Corp.

2680

Biblioteca Padro

Right
Obtm um nmero determinado de caracteres a partir do lado direito de uma string.
string Right(
uint count

// Number of characters

Parmetros
count
[in] Nmero de caracteres.
Valor de retorno
Resultado da Substring.

2000-2015, MetaQuotes Software Corp.

2681

Biblioteca Padro

Mid
Obtm um nmero determinado de caracteres a partir de uma string.
string Mid(
uint pos,

// Position

uint count

// Number of characters

Parmetros
pos
[in] Posio de uma string.
count
[in] Nmero de caracteres.
Valor de retorno
Resultado da Substring.

2000-2015, MetaQuotes Software Corp.

2682

Biblioteca Padro

Trim
Remove todas as ocorrncias a esquerda e a direita de uma configurao especfica de caracteres (e '
','\t','\r','\n') a partir de uma string.
int Trim(
const string targets

// Set of characters to remove

Parmetros
targets
[in] Define os caracteres para remover.
Valor de retorno
Nmero de caracteres removidos.

Exemplo
//--- example for CString::Trim
#include <Strings\String.mqh>
//--void OnStart()
{
CString str;
//--str.Assign("

\t\tABCD\r\n");

printf("Source string '%s'",str.Str());


//--str.Trim("DA-DA-DA");
printf("Result string '%s'",str.Str());
}

2000-2015, MetaQuotes Software Corp.

2683

Biblioteca Padro

TrimLeft
Remove todas as ocorrncias a esquerda de uma configurao especfica de caracteres (e ' ','\t','\r','\n')
a partir de uma string.
int TrimLeft(
const string targets

// Set of characters to remove

Parmetros
targets
[in] Define os caracteres para remover.
Valor de retorno
Nmero de caracteres removidos.

2000-2015, MetaQuotes Software Corp.

2684

Biblioteca Padro

TrimRight
Remove todas as ocorrncias a direita de uma configurao especfica de caracteres (e ' ','\t','\r','\n') a
partir de uma string.
int TrimRight(
const string targets

// Set of characters to remove

Parmetros
targets
[in] Define os caracteres para remover.
Valor de retorno
Nmero de caracteres removidos.

2000-2015, MetaQuotes Software Corp.

2685

Biblioteca Padro

Clear
Limpa uma string.
bool Clear()

Valor de retorno
verdadeiro se teve sucesso, falso se uma string no foi limpa.

2000-2015, MetaQuotes Software Corp.

2686

Biblioteca Padro

ToUpper
Converte uma string para maisculas.
bool ToUpper()

Valor de retorno
verdadeiro se teve sucesso, falso se uma seqncia de caracteres no foi convertida.

2000-2015, MetaQuotes Software Corp.

2687

Biblioteca Padro

ToLower
Converte uma string para minsculas.
bool ToLower()

Valor de retorno
verdadeiro se teve sucesso, falso se uma seqncia de caracteres no foi convertida.

2000-2015, MetaQuotes Software Corp.

2688

Biblioteca Padro

Reverse
Reverso de uma string.
void Reverse()

2000-2015, MetaQuotes Software Corp.

2689

Biblioteca Padro

Find
Procura a primeira combinao de uma substring.
int Find(
uint

start,

const string substring

// Position
// Substring to search for

) const;

Parmetros
start
[in] O ndice do caractere na string para iniciar a pesquisa com, ou 0 para comear a partir do
incio.
substring
[in] Substring para procurar.
Valor de retorno
O ndice do primeiro caractere que corresponde a substring solicitado; -1 Se a substring no foi
encontrada.

2000-2015, MetaQuotes Software Corp.

2690

Biblioteca Padro

FindRev
Procura a ltima combinao de uma substring.
int FindRev(
const string substring

// Substring

) const;

Parmetros
substring
[in] A substring para procurar.
Valor de retorno
O ndice do ltimo caractere que corresponde a substring solicitada; -1 Se a substring no foi
encontrada.

2000-2015, MetaQuotes Software Corp.

2691

Biblioteca Padro

Remover
Exclui uma substring de uma string.
uint Remove(
const string substring

// Substring to remove

Parmetros
substring
[in] A substring para procurar.
Valor de retorno
Nmero de substrings excludas.

2000-2015, MetaQuotes Software Corp.

2692

Biblioteca Padro

Replace
Substitui uma substring a partir de uma string.
uint Replace(
const string substring,

// Substring to replace

const string newstring

// New substring

Parmetros
substring
[in] A substring para procurar.
newstring
[in] Uma nova substring para substituir.
Valor de retorno
Nmero de substrings substitudas.

2000-2015, MetaQuotes Software Corp.

2693

Biblioteca Padro

Indicadores Tcnicos e TimeSeries


Esta seo contm os detalhes tcnicos das clasee para indicador tcnico e timeSeries, e tambm, a
descrio dos componentes correspondentes na biblioteca padro MQL5.
A utilizao das classes de indicador tcnico e timeSeries ir poupar tempo no desenvolvimento de
aplicativos (scripts, Expert Advisors).
A Biblioteca Padro MQL5 alocada no diretrio de trabalho do terminal, na pasta Include\Indicators.
Classe/grupo

Descrio

Classes Base

Grupo de base e classes auxiliares

Classes de timesseries

Grupo de classes timeSeries

Indicadores de Tendncia

Grupo de classes de indicador de tendncia

Osciladores

Grupo de classes de indicador oscilador

Indicadores de Volume

Grupo de classes de indicador de volume

Indicadores Bill Williams

Classes do indicador Bill Williams

indicadores personalizados

Classe do indicador personalizado

2000-2015, MetaQuotes Software Corp.

2694

Biblioteca Padro

Base e Indicador Tcnico Auxiliar e Classes de TimeSeries


Esta seo contm os detalhes tcnicos de base, indicador tcnico auxiliar, classes de timeSeries e a
descrio dos componentes correspondentes na biblioteca padro MQL5.
Classe/grupo

Descrio

CSpreadBuffer

Histrico da classe de buffer do spread

CTimeBuffer

Histrico da classe de buffer dos tempos de


abertura das barras

CTickVolumeBuffer

Histrico da classe de buffer dos volumes de


ticks

CRealVolumeBuffer

Histrico da classe de buffer dos volumes reais

CDoubleBuffer

Classe base do tipo double de buffer de dados

COpenBuffer

Classe de buffer da abertura de preo na barra

CHighBuffer

Classe de buffer da mxima de preo na barra

CLowBuffer

Classe de buffer da mnima de preo na barra

CCloseBuffer

Classe de buffer do fechamento de preo na


barra

CIndicatorBuffer

Classe de buffer de indicador tcnico

CSeries

Classe de base para o acesso aos dados de


timeseries

CPriceSeries

Classe de base para o acesso a dados dos


preos

CIndicator

Classe de base do indicador tcnico

CIndicators

Indicador tcnico e coleo de sries

2000-2015, MetaQuotes Software Corp.

2695

Biblioteca Padro

CSpreadBuffer
CSpreadBuffer uma classe para o acesso simplificado aos spreads das barras no histrico.

Descrio
A classe CSpreadBuffer fornece um acesso aos spreads das barras no histrico.

Declarao
class CSpreadBuffer: public CArrayInt

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Atributos
Size

Define o tamanho do buffer

Configurao
SetSymbolPeriod

Define smbolo e perodo

Mtodos de Acesso aos Dados


At

Obtm o elemento de buffer pelo ndice

Mtodos de Atualizao dos Dados


virtual Refresh

Atualiza o buffer

virtual RefreshCurrent

Atualiza o valor atual

2000-2015, MetaQuotes Software Corp.

2696

Biblioteca Padro

Size
Define o tamanho do buffer.
void Size(
const int size

// new size

Parmetros
size
[in] Novo tamanho do buffer

2000-2015, MetaQuotes Software Corp.

2697

Biblioteca Padro

SetSymbolPeriod
Define smbolo e perodo.
void SetSymbolPeriod(
const string

symbol,

const ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Novo smbolo.
period
[in] Novo perodo (enumerador ENUM_TIMEFRAMES).

2000-2015, MetaQuotes Software Corp.

2698

Biblioteca Padro

At
Obtm o elemento de buffer pelo ndice.
int At(
const int index

// index

) const

Parmetros
index
[in] ndice do elemento de buffer.
Valor de retorno
Elemento de buffer com o ndice especificado.

2000-2015, MetaQuotes Software Corp.

2699

Biblioteca Padro

Refresh
Atualiza o buffer.
virtual bool Refresh()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2700

Biblioteca Padro

RefreshCurrent
Atualiza o elemento atual (zeroth) do buffer.
virtual bool RefreshCurrent()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2701

Biblioteca Padro

CTimeBuffer
CTimeBuffer uma classe de acesso simplificado aos tempos de abertura das barras no histrico.

Descrio
A classe CTimeBuffer providencia um acesso as aberturas dos tempos das barras no histrico.

Declarao
class CTimeBuffer: public CArrayLong

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Atributos
Size

Define o tamanho do buffer

Configurao
SetSymbolPeriod

Define smbolo e perodo

Mtodos de Acesso aos Dados


At

Obtm o elemento de buffer pelo ndice

Mtodos de Atualizao dos Dados


virtual Refresh

Atualiza o buffer

virtual RefreshCurrent

Atualiza o valor atual

2000-2015, MetaQuotes Software Corp.

2702

Biblioteca Padro

Size
Define o tamanho do buffer.
void Size(
const int size

// new size

Parmetros
size
[in] Novo tamanho do buffer

2000-2015, MetaQuotes Software Corp.

2703

Biblioteca Padro

SetSymbolPeriod
Define smbolo e perodo.
void SetSymbolPeriod(
const string

symbol,

const ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Novo smbolo.
period
[in] Novo perodo (enumerador ENUM_TIMEFRAMES).

2000-2015, MetaQuotes Software Corp.

2704

Biblioteca Padro

At
Obtm o elemento de buffer pelo ndice.
long At(
const int index

// index

) const

Parmetros
index
[in] ndice do elemento de buffer.
Valor de retorno
Elemento de buffer com o ndice especificado.

2000-2015, MetaQuotes Software Corp.

2705

Biblioteca Padro

Refresh
Atualiza o buffer.
virtual bool Refresh()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2706

Biblioteca Padro

RefreshCurrent
Atualiza o elemento atual (zeroth) do buffer.
virtual bool RefreshCurrent()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2707

Biblioteca Padro

CTickVolumeBuffer
CTickVolumeBuffer uma classe de acesso simplificado aos volumes de ticks das barras no histrico.

Descrio
A classe CTickVolumeBuffer fornece um acesso aos volumes de ticks das barras no histrico.

Declarao
class CTickVolumeBuffer: public CArrayLong

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Atributos
Size

Define o tamanho do buffer

Configurao
SetSymbolPeriod

Define smbolo e perodo

Mtodos de Acesso aos Dados


At

Obtm o elemento de buffer pelo ndice

Mtodos de Atualizao dos Dados


virtual Refresh

Atualiza o buffer

virtual RefreshCurrent

Atualiza o valor atual

2000-2015, MetaQuotes Software Corp.

2708

Biblioteca Padro

Size
Define o tamanho do buffer.
void Size(
const int size

// new size

Parmetros
size
[in] Novo tamanho do buffer

2000-2015, MetaQuotes Software Corp.

2709

Biblioteca Padro

SetSymbolPeriod
Define smbolo e perodo.
void SetSymbolPeriod(
const string

symbol,

const ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Novo smbolo.
period
[in] Novo perodo (enumerador ENUM_TIMEFRAMES).

2000-2015, MetaQuotes Software Corp.

2710

Biblioteca Padro

At
Obtm o elemento de buffer pelo ndice.
long At(
const int index

// index

) const

Parmetros
index
[in] ndice do elemento de buffer.
Valor de retorno
Elemento de buffer com o ndice especificado.

2000-2015, MetaQuotes Software Corp.

2711

Biblioteca Padro

Refresh
Atualiza o buffer.
virtual bool Refresh()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2712

Biblioteca Padro

RefreshCurrent
Atualiza o elemento atual (zeroth) do buffer.
virtual bool RefreshCurrent()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2713

Biblioteca Padro

CRealVolumeBuffer
CRealVolumeBuffer uma classe de acesso simplificado aos volumes reais das barras no histrico.

Descrio
A classe CTickVolumeBuffer providencia um acesso a volumes reais das barras no histrico.

Declarao
class CRealVolumeBuffer: public CArrayLong

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Atributos
Size

Define o tamanho do buffer

Configurao
SetSymbolPeriod

Define smbolo e perodo

Mtodos de Acesso aos Dados


At

Obtm o elemento de buffer pelo ndice

Mtodos de Atualizao dos Dados


virtual Refresh

Atualiza o buffer

virtual RefreshCurrent

Atualiza o valor atual

2000-2015, MetaQuotes Software Corp.

2714

Biblioteca Padro

Size
Define o tamanho do buffer.
void Size(
const int size

// new size

Parmetros
size
[in] Novo tamanho do buffer

2000-2015, MetaQuotes Software Corp.

2715

Biblioteca Padro

SetSymbolPeriod
Define smbolo e perodo.
void SetSymbolPeriod(
const string

symbol,

const ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Novo smbolo.
period
[in] Novo perodo (enumerador ENUM_TIMEFRAMES).

2000-2015, MetaQuotes Software Corp.

2716

Biblioteca Padro

At
Obtm o elemento de buffer pelo ndice.
long At(
const int index

// index

) const

Parmetros
index
[in] ndice do elemento de buffer.
Valor de retorno
Elemento de buffer com o ndice especificado.

2000-2015, MetaQuotes Software Corp.

2717

Biblioteca Padro

Refresh
Atualiza o buffer.
virtual bool Refresh()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2718

Biblioteca Padro

RefreshCurrent
Atualiza o elemento atual (zeroth) do buffer.
virtual bool RefreshCurrent()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2719

Biblioteca Padro

CDoubleBuffer
CDoubleBuffer uma classe base de acesso simplificado para buffers de dados do tipo double.

Descrio
A classe CDoubleBuffer proporciona um acesso para buffers de dados do tipo double

Declarao
class CDoubleBuffer: public CArrayDouble

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Atributos
Size

Define o tamanho do buffer

Configurao
SetSymbolPeriod

Define smbolo e perodo

Mtodos de Acesso aos Dados


At

Obtm o elemento de buffer

Mtodos de Atualizao dos Dados


virtual Refresh

Atualiza o buffer

virtual RefreshCurrent

Atualiza o valor atual

2000-2015, MetaQuotes Software Corp.

2720

Biblioteca Padro

Size
Define o tamanho do buffer.
void Size(
const int size

// new size

Parmetros
size
[in] Novo tamanho do buffer

2000-2015, MetaQuotes Software Corp.

2721

Biblioteca Padro

SetSymbolPeriod
Define smbolo e perodo.
void SetSymbolPeriod(
const string

symbol,

const ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Novo smbolo.
period
[in] Novo perodo (enumerador ENUM_TIMEFRAMES).

2000-2015, MetaQuotes Software Corp.

2722

Biblioteca Padro

At
Obtm o elemento de buffer pelo ndice.
double At(
const int index

// index

) const

Parmetros
index
[in] ndice do elemento de buffer.
Valor de retorno
Elemento de buffer com o ndice especificado.

2000-2015, MetaQuotes Software Corp.

2723

Biblioteca Padro

Refresh
Atualiza o buffer.
virtual bool Refresh()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2724

Biblioteca Padro

RefreshCurrent
Atualiza o elemento atual (zeroth) do buffer.
virtual bool RefreshCurrent()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2725

Biblioteca Padro

COpenBuffer
COpenBuffer uma classe para o acessar simplificadamente a abertura de preos das barras no
histrico.

Descrio
A classe COpenBuffer tem por objetivo acessar a abertura de preos das barras no histrico.

Declarao
class COpenBuffer: public CDoubleBuffer

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Atualizao dos Dados
virtual Refresh

Atualiza o buffer

virtual RefreshCurrent

Atualiza o valor atual

2000-2015, MetaQuotes Software Corp.

2726

Biblioteca Padro

Refresh
Atualiza o buffer.
virtual bool Refresh()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2727

Biblioteca Padro

RefreshCurrent
Atualiza o elemento atual (zeroth) do buffer.
virtual bool RefreshCurrent()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2728

Biblioteca Padro

CHighBuffer
CHighBuffer uma classe de acesso simplificado as mximas de preos das barras no histrico.

Descrio
A classe CHighBuffer fornece um acesso as mximas de preos das barras no histrico.

Declarao
class CHighBuffer: public CDoubleBuffer

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Atualizao dos Dados
virtual Refresh

Atualiza o buffer

virtual RefreshCurrent

Atualiza o valor atual

2000-2015, MetaQuotes Software Corp.

2729

Biblioteca Padro

Refresh
Atualiza o buffer.
virtual bool Refresh()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2730

Biblioteca Padro

RefreshCurrent
Atualiza o elemento atual (zeroth) do buffer.
virtual bool RefreshCurrent()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2731

Biblioteca Padro

CLowBuffer
CLowBuffer uma classe para acessar simplificadamente a mnima de preos das barras no histrico.

Descrio
A classe CLowBuffer tem por objetivo acessar a mnima de preos das barras no histrico.

Declarao
class CLowBuffer: public CDoubleBuffer

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Atualizao dos Dados
virtual Refresh

Atualiza o buffer

virtual RefreshCurrent

Atualiza o valor atual

2000-2015, MetaQuotes Software Corp.

2732

Biblioteca Padro

Refresh
Atualiza o buffer.
virtual bool Refresh()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2733

Biblioteca Padro

RefreshCurrent
Atualiza o elemento atual (zeroth) do buffer.
virtual bool RefreshCurrent()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2734

Biblioteca Padro

CCloseBuffer
CCloseBuffer uma classe de acesso simplificado para fechamento de preos das barras no histrico.

Descrio
A classe CCloseBuffer fornece o acesso para fechamento de preos das barras no histrico.

Declarao
class CCloseBuffer: public CDoubleBuffer

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Atualizao dos Dados
virtual Refresh

Atualiza o buffer

virtual RefreshCurrent

Atualiza o valor atual

2000-2015, MetaQuotes Software Corp.

2735

Biblioteca Padro

Refresh
Atualiza o buffer.
virtual bool Refresh()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2736

Biblioteca Padro

RefreshCurrent
Atualiza o elemento atual (zeroth) do buffer.
virtual bool RefreshCurrent()

Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2737

Biblioteca Padro

CIndicatorBuffer
CIndicatorBuffer uma classe para o acesso simplificado aos dados de buffer do indicador.

Descrio
A classe CIndicatorBuffer fornece o acesso simplificado aos dados de buffer do indicador tcnico.

Declarao
class CIndicatorBuffer: public CDoubleBuffer

Ttulo
#include <Indicators\Indicator.mqh>

Mtodos de classe
Atributos
Offset

Obtm/Define deslocamento do buffer

Name

Obtm/Define nome do buffer

Mtodos de Acesso aos Dados


At

Obtm elemento de buffer

Mtodos de Atualizao dos Dados


Refresh

Atualiza o buffer

RefreshCurrent

Atualizaes apenas de valor atual

2000-2015, MetaQuotes Software Corp.

2738

Biblioteca Padro

Offset
Obtm deslocamento do buffer.
int Offset() const

Valor de retorno
Deslocamento do buffer.

Offset
Define deslocamento do buffer.
void Offset(
const int offset

// offset

Parmetros
offset
[in] Deslocamento do novo buffer

2000-2015, MetaQuotes Software Corp.

2739

Biblioteca Padro

Name
Obtm o nome do buffer.
string Name() const

Valor de retorno
Nome do buffer.

Name
Define o nome do buffer.
void Name(
const string name

// name

Parmetros
name
[in] Novo nome do buffer.

2000-2015, MetaQuotes Software Corp.

2740

Biblioteca Padro

At
Obtm elemento de buffer pelo ndice.
double At(
int index

// index

) const

Parmetros
index
[in] ndice do elemento de buffer.
Valor de retorno
Elemento de buffer com o ndice especificado.

2000-2015, MetaQuotes Software Corp.

2741

Biblioteca Padro

Refresh
Atualiza o buffer por completo.
bool Refresh(
const int handle,

// handle

const int num

// buffer number

Parmetros
handle
[in] Manipulador do indicador.
num
[in] ndice de buffer do indicador.
Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2742

Biblioteca Padro

RefreshCurrent
Atualiza o atual elemento de buffer (zeroth).
bool RefreshCurrent(
const int handle,

// handle of the indicator

const int num

// buffer number

Parmetros
handle
[in] Manipulador do indicador.
num
[in] Nmero de Buffer.
Valor de retorno
verdadeiro - se bem sucedido; falso - se o buffer no foi atualizado.

2000-2015, MetaQuotes Software Corp.

2743

Biblioteca Padro

CSeries
CSeries uma classe base para o acesso a dados das timeseries da Biblioteca Padro.

Descrio
A classe CSeries fornece o acesso simplificado as funes TimeSeries MQL5 para todos os seus
descendentes.

Declarao
class CSeries: public CArrayObj

Ttulo
#include <Indicators\Series.mqh>

Mtodos de classe
Atributos
Name

Obtm o nome das timeseries ou indicador

BuffersTotal

Obtm o nmero dos buffers das timeseries ou


indicador

Timeframe

Obtm o flag do timeframe das timeseries ou


indicador

Symbol

Obtm o smbolo da timeseries ou indicador

Period

Obtm o perodo das timeseries ou indicador

RefreshCurrent

Obtm/Define o flag de atualizao dos dados


atuais

Mtodos de Acesso aos Dados


virtual BufferResize

Define o tamanho do buffer das timeseries ou


indicador

Mtodos de Atualizao dos Dados


virtual Refresh
PeriodDescription

Atualizar os dados das timeseries ou indicador


Obtm o perodo como uma string

2000-2015, MetaQuotes Software Corp.

2744

Biblioteca Padro

Name
Obtm o nome das timeseries ou indicador
string Name() const

Valor de retorno
O nome das timeseries ou indicador.

2000-2015, MetaQuotes Software Corp.

2745

Biblioteca Padro

BuffersTotal
Obtm o nmero dos buffers das timeseries ou indicador.
int BuffersTotal() const

Valor de retorno
O nmero dos buffers das timeseries ou indicador.
Observao
As timeseries tem um nico buffer.

2000-2015, MetaQuotes Software Corp.

2746

Biblioteca Padro

Timeframe
Obtm o flag do timeframe das timeseries ou indicador.
int Timeframe() const

Valor de retorno
O flag do timeframe das timeseries ou indicador.
Observao
o flag de visibilidade de alguns timeframes.

2000-2015, MetaQuotes Software Corp.

2747

Biblioteca Padro

Symbol
Obtm o smbolo (ativo) das timeseries ou indicador.
string Symbol() const

Valor de retorno
O smbolo das timeseries ou indicador.

2000-2015, MetaQuotes Software Corp.

2748

Biblioteca Padro

Period
Obtm o perodo das timeseries ou indicador.
ENUM_TIMEFRAMES Period() const

Valor de retorno
O perodo das timeseries ou indicador (valor do enumerador ENUM_TIMEFRAMES).

2000-2015, MetaQuotes Software Corp.

2749

Biblioteca Padro

RefreshCurrent
Define um flag para atualizar os valores atuais das timeseries ou indicador.
string RefreshCurrent(
const bool flag

// new flag

Parmetros
flag
[in] Novo flag
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

2750

Biblioteca Padro

BufferSize
Retorna a quantidade de dados disponveis no buffer das timeseries ou indicador.
int BufferSize() const

Valor de retorno
Quantidade de dados disponveis no buffer das timeseries ou indicador.

2000-2015, MetaQuotes Software Corp.

2751

Biblioteca Padro

BufferResize
Define o tamanho do buffer das timeseries ou indicador.
virtual bool BufferResize(
const int size

// new size

Parmetros
size
[in] Novo tamanho dos buffers.
Valor de retorno
verdadeiro - se bem sucedido, falso - do contrrio.
Observao
Todos os buffers das timeseries ou indicadores tm o mesmo tamanho.

2000-2015, MetaQuotes Software Corp.

2752

Biblioteca Padro

Refresh
Atualiza os dados das timeseries ou indicador.
virtual void Refresh(
const int flags

// flags

Parmetros
flags
[in] Timeframes para atualizar (flag).

2000-2015, MetaQuotes Software Corp.

2753

Biblioteca Padro

PeriodDescription
Obtm a representao da string do enumerador especificado ENUM_TIMEFRAMES.
string PeriodDescription(
const int val=0

// value

Parmetros
val=0
[in] Valor para converter.
Valor de retorno
A representao da string do enumerador ENUM_TIMEFRAMES.
Observao
Se o valor no for especificado ou for igual a zero, retorna o prazo das timeseries ou indicador.

2000-2015, MetaQuotes Software Corp.

2754

Biblioteca Padro

CPriceSeries
CPriceSeries uma classe base para acesso aos dados do preo.

Descrio
A classe CSeries fornece o acesso as funes MQL5 para trabalhar com dados de preos para todos os
seus descendentes.

Declarao
class CPriceSeries: public CSeries

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Criao
virtual BufferResize

Define o tamanho do buffer

Mtodos de Acesso aos Dados


virtual GetData

Obtm o elemento de buffer especificado pelo


ndice

Mtodos de Atualizao dos Dados


virtual Refresh

Atualiza dados das timeseries

Mtodos de Pesquisa de Dados


virtual MinIndex

Obtm o ndice do elemento mnimo no


intervalo especificado

virtual MinValue

Obtm o valor e ndice do elemento mnimo no


intervalo especificado

virtual MaxIndex

Obtm o ndice do elemento mximo no


intervalo especificado

virtual MaxValue

Obtm o valor e ndice do elemento mximo no


intervalo especificado

2000-2015, MetaQuotes Software Corp.

2755

Biblioteca Padro

BufferResize
Define novo tamanho do buffer.
virtual void BufferResize(
const int size

// new size

Parmetros
size
[in] Novo tamanho do buffer

2000-2015, MetaQuotes Software Corp.

2756

Biblioteca Padro

GetData
Obtm o elemento de buffer especificado pelo ndice.
double GetData(
const int index

// index

) const

Parmetros
index
[in] ndice do elemento de buffer.
Valor de retorno
O elemento de buffer com o ndice especificado ou EMPTY_VALUE.

2000-2015, MetaQuotes Software Corp.

2757

Biblioteca Padro

Refresh
Atualiza os dados das timeseries
virtual void Refresh(
const int flags=OBJ_ALL_PERIODS

// timeframe flags

Parmetros
flags=OBJ_ALL_PERIODS
[in] Timeframes para atualizar (flag).

2000-2015, MetaQuotes Software Corp.

2758

Biblioteca Padro

MinIndex
Obtm o ndice do elemento mnimo no intervalo especificado.
virtual int MinIndex(
const int start,

// starting index

const int count

// number of elements to scan

) const

Parmetros
start
[in] Iniciando o ndice.
count
[in] Nmero de elementos para proceder.
Valor de retorno
O ndice do elemento mnimo no intervalo especificado, ou -1 em caso de erro.

2000-2015, MetaQuotes Software Corp.

2759

Biblioteca Padro

MinValue
Obtm o valor e ndice do elemento mnimo no intervalo especificado.
virtual double MinValue(
const int

start,

// starting index

const int

count,

// number of elements to scan

int&

index

// reference to the variable for index

) const

Parmetros
start
[in] Iniciando o ndice.
count
[in] Nmero de elementos para proceder.
index
[out] Referente varivel do tipo inteiro.
Valor de retorno
O valor do elemento mnimo do buffer no intervalo especificado, ou EMPTY_VALUE em caso de erro.
Observao
O ndice do elemento mnimo armazenado na varivel index.

2000-2015, MetaQuotes Software Corp.

2760

Biblioteca Padro

MaxIndex
Obtm o ndice do elemento mximo em intervalo especificado.
virtual int MaxIndex(
const int start,

// starting index

const int count

// number of elements to scan

) const

Parmetros
start
[in] Iniciando o ndice.
count
[in] Nmero de elementos para proceder.
Valor de retorno
O ndice do elemento mximo em intervalo especificado, ou -1 em caso de erro.

2000-2015, MetaQuotes Software Corp.

2761

Biblioteca Padro

MaxValue
Obtm o valor e o ndice do elemento mximo no intervalo especificado.
virtual double MaxValue(
const int

start,

// starting index

const int

count,

// number of elements to scan

int&

index

// reference to the variable for index

) const

Parmetros
start
[in] Iniciando o ndice.
count
[in] Nmero de elementos para proceder.
index
[out] Referente varivel do tipo inteiro.
Valor de retorno
O valor do elemento mximo do buffer especificado no intervalo, ou EMPTY_VALUE em caso de erro.
Observao
O ndice do elemento mximo armazenado na varivel index.

2000-2015, MetaQuotes Software Corp.

2762

Biblioteca Padro

CIndicator
CIndicator uma classe base para indicadores tcnicos da biblioteca padro MQL .

Descrio
A classe CIndicator possibilita o acesso simplificado a todos os seus descendentes das funes dos
indicadores tcnicos API MQL5.

Declarao
class CIndicator: public CSeries

Ttulo
#include <Indicators\Indicator.mqh>

Mtodos de classe
Atributos
Handle

Obtm o manipulador do indicador.

Status

Obtm o estado do indicador.

FullRelease

Define um flag para liberar o manipulador do


indicador.

Criao
Create

Cria os indicadores

BufferResize

Define novo tamanho de buffer

Mtodos de Acesso aos Dados


GetData

Copiando os dados do buffer de indicador

Mtodos de Atualizao dos Dados


Refresh

Atualiza dados do indicador

Encontrando Valores Min/Mx


Minimum

Obtm o ndice do elemento mnimo de buffer


especificado em intervalo determinado.

MinValue

Obtm o valor e ndice do elemento mnimo de


buffer especificado num intervalo determinado.

Maximum

Obtm o ndice do elemento mximo de buffer


especificado em intervalo determinado.

MaxValue

Obtm o valor e ndice do elemento mximo de


buffer especificado em intervalo determinado

Converso de Enumeradores

2000-2015, MetaQuotes Software Corp.

2763

Biblioteca Padro

MethodDescription

Obtm
o
valor
do
ENUM_MA_METHOD como string

PriceDescription

Obtm
o
valor
do
enumerador
ENUM_APPLIED_PRICE como string

VolumeDescription

Obtm
o
valor
do
enumerador
ENUM_APPLIED_VOLUME como string

Trabalhando com grficos


AddToChart

Adiciona o indicador no grfico

DeleteFromChart

Exclui o indicador do grfico

As classes derivadas:
CiAC
CiAD
CiADX
CiADXWilder
CiAlligator
CiAMA
CiAO
CiATR
CiBands
CiBearsPower
CiBullsPower
CiBWMFI
CiCCI
CiChaikin
CiDEMA
CiDeMarker
CiEnvelopes
CiForce
CiFractals
CiFrAMA
CiGator
CiIchimoku
CiMA
CiMACD
CiMFI
CiMomentum
CiOBV

2000-2015, MetaQuotes Software Corp.

enumerador

2764

Biblioteca Padro
CiOsMA
CiRSI
CiRVI
CiSAR
CiStdDev
CiStochastic
CiTEMA
CiTriX
CiVIDyA
CiVolumes
CiWPR

2000-2015, MetaQuotes Software Corp.

2765

Biblioteca Padro

Handle
Obtm o manipulador do indicador.
int Handle() const

Valor de retorno
Manipulador do indicador.

2000-2015, MetaQuotes Software Corp.

2766

Biblioteca Padro

Status
Obtm o estado do indicador.
string Status() const

Valor de retorno
O estado de criao do indicador.

2000-2015, MetaQuotes Software Corp.

2767

Biblioteca Padro

FullRelease
Define um flag para liberar o manipulador do indicador.
void FullRelease(
const bool flag=true

// flag

Parmetros
flag
[in] O novo valor do flag para liberar o manipulador.

2000-2015, MetaQuotes Software Corp.

2768

Biblioteca Padro

Create
Cria o indicador com os parmetros determinados.
bool Create(
const string

symbol,

// symbol

const ENUM_TIMEFRAMES period,

// period

const ENUM_INDICATOR

type,

// type

const int

num_params,

// number of parameters

const MqlParam&

params[]

// reference to the parameters array

Parmetros
symbol
[in] Nome do ativo.
period
[in] Perodo (enumerador ENUM_TIMEFRAMES).
type
[in] tipo de indicador (enumerador ENUM_INDICATOR).
num_params
[in] Nmero de parmetros do indicador.
params
[in] Referente aos parmetros do array do indicador.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2769

Biblioteca Padro

BufferResize
Define o tamanho do buffer do indicador.
virtual bool BufferResize(
const int size

// size

Parmetros
size
[in] Novo tamanho do buffer
Valor de retorno
verdadeiro - se bem sucedido, falso - do contrrio.
Observao
Todos os buffers do indicador tem o mesmo tamanho.

2000-2015, MetaQuotes Software Corp.

2770

Biblioteca Padro

BarsCalculated
Retorna o nmero de dados calculados para o indicador.
int BarsCalculated() const;

Valor do Retorno
Retorna a quantidade de dados calculados no buffer de indicador ou -1 em caso de erro (dados ainda
no calculados).

2000-2015, MetaQuotes Software Corp.

2771

Biblioteca Padro

GetData
Obtm o elemento especfico do buffer determinado do indicador. Refresh() deve ser chamado para
trabalhar com dados recentes antes de usar o mtodo.
double GetData(
const int buffer_num,

// buffer number

const int index

// element index

) const

Parmetros
buffer_num
[in] Nmero de Buffer.
index
[in] ndice do elemento.
Valor de retorno
Se com sucesso, retorna o valor numrico do elemento, ou EMPTY_VALUE em caso de erro.

GetData
Obtm os dados de buffer do indicador pela posio inicial e o nmero de dados necessrios.
int GetData(
const int

start_pos,

// position

const int

count,

// number of elements needed

const int

buffer_num,

// buffer number

double&

buffer[]

// target array for data

) const

Parmetros
start_pos
[in] posio inicial do buffer do indicador.
count
[in] Nmero de elementos necessrios.
buffer_num
[in] Nmero do buffer do indicador.
buffer
[in] Referncia do array de destino aos dados.
Valor de retorno
Se com sucesso, retorna o nmero de elementos recebidos do buffer do indicador especificado, caso
contrrio, -1.

GetData
2000-2015, MetaQuotes Software Corp.

2772

Biblioteca Padro

Obtm os dados de buffer do indicador pela hora de incio e o nmero de dados necessrios.
int GetData(
const datetime start_time,

// starting time

const int

count,

// number of elements needed

const int

buffer_num,

// buffer number

double&

buffer[]

// target array for data

) const

Parmetros
start_time
[in] Incio do tempo.
count
[in] Nmero de elementos necessrios.
buffer_num
[in] Nmero do buffer do indicador.
buffer
[in] Referente ao array de destino.
Valor de retorno
Se com sucesso, retorna o nmero de elementos recebidos do buffer do indicador especificado, caso
contrrio, -1.

GetData
Obtm os dados do buffer do indicador no incio, no tempo final e o nmero de dados necessrios.
int GetData(
const datetime start_time,

// start time

const datetime stop_time,

// stop time

const int

buffer_num,

// number of buffer

double&

buffer[]

// target array for data

) const

Parmetros
start_time
[in] Incio do tempo.
stop_time
[in] Tempo final.
buffer_num
[in] Nmero do buffer do indicador.
buffer
[in] Referente ao array de destino.

2000-2015, MetaQuotes Software Corp.

2773

Biblioteca Padro

Valor de retorno
Se com sucesso, retorna o nmero de elementos recebidos do buffer do indicador especificado, caso
contrrio, -1.

2000-2015, MetaQuotes Software Corp.

2774

Biblioteca Padro

Refresh
Atualiza dados do indicador. recomendado chamar o mtodo antes de usar GetData().
virtual void Refresh(
int flags=OBJ_ALL_PERIODS

// flags

Parmetros
flags=OBJ_ALL_PERIODS
[in] Timeframe de atualizao dos flags.

2000-2015, MetaQuotes Software Corp.

2775

Biblioteca Padro

Minimum
Retorna o ndice do elemento mnimo do buffer especificado em intervalo determinado.
int Minimum(
const int buffer_num,

// buffer number

const int start,

// starting index

const int count

// number of elements to proceed

) const

Parmetros
buffer_num
[in] Nmero de Buffer para procurar o valor.
start
[in] Iniciando o ndice de pesquisa.
count
[in] Nmero de elementos a pesquisar.
Valor de retorno
ndice do elemento mnimo do buffer especificado em intervalo determinado.

2000-2015, MetaQuotes Software Corp.

2776

Biblioteca Padro

MinValue
Retorna o valor e ndice de elemento mnimo do buffer especificado em intervalo determinado.
double MinValue(
const int

buffer_num,

// buffer number

const int

start,

// starting index

const int

count,

// number of elements to proceed

int&

index

// reference

) const

Parmetros
buffer_num
[in] Nmero de Buffer para procurar o valor.
start
[in] Iniciando o ndice.
count
[in] Nmero de elementos para proceder.
index
[out] Referente a varivel do tipo int para o ndice de elemento mnimo.
Valor de retorno
O valor do elemento mnimo do buffer especificado em intervalo determinado.
Observao
O ndice do elemento mnimo do buffer armazenado dentro do ndice varivel, transmitido pela
referncia.

2000-2015, MetaQuotes Software Corp.

2777

Biblioteca Padro

Maximum
Retorna o ndice do elemento mximo do buffer especificado em intervalo determinado.
int Maximum(
const int buffer_num,

// buffer number

const int start,

// starting index

const int count

// number of elements to proceed

) const

Parmetros
buffer_num
[in] Nmero de Buffer para procurar o valor.
start
[in] Iniciando o ndice de pesquisa.
count
[in] Nmero de elementos a pesquisar.
Valor de retorno
ndice do elemento mxima do buffer especificado em intervalo determinado.

2000-2015, MetaQuotes Software Corp.

2778

Biblioteca Padro

MaxValue
Retorna o valor e o ndice de elemento mximo do buffer especificado em intervalo determinado.
double MaxValue(
const int

buffer_num,

// buffer number

const int

start,

// starting index

const int

count,

// number of elements to proceed

int&

index

// reference

) const

Parmetros
buffer_num
[in] Nmero de Buffer para procurar o valor.
start
[in] Iniciando o ndice.
count
[in] Nmero de elementos para proceder.
index
[out] Referente a varivel do tipo int para o ndice do elemento mximo.
Valor de retorno
O valor do elemento mximo do buffer especificado em intervalo determinado.
Observao
O ndice do elemento de buffer mximo armazenado dentro do ndice varivel, transmitido por
referncia.

2000-2015, MetaQuotes Software Corp.

2779

Biblioteca Padro

MethodDescription
A funo retorna o valor do enumerador ENUM_MA_METHOD como uma string.
string MethodDescription(
const int val

// value

) const

Parmetros
val
[in] Valor do enumerador ENUM_MA_METHOD.
Valor de retorno
O valor do enumerador ENUM_MA_METHOD como uma string.

2000-2015, MetaQuotes Software Corp.

2780

Biblioteca Padro

PriceDescription
O mtodo retorna o valor do enumerador ENUM_APPLIED_PRICE como uma string.
string PriceDescription(
const int val

// value

) const

Parmetros
val
[in] Valor do enumerador ENUM_APPLIED_PRICE.
Valor de retorno
O valor do enumerador ENUM_APPLIED_PRICE como uma string.

2000-2015, MetaQuotes Software Corp.

2781

Biblioteca Padro

VolumeDescription
O mtodo retorna o valor do enumerador ENUM_APPLIED_VOLUME como uma string.
string VolumeDescription(
const int val

// value

) const

Parmetros
val
[in] Valor do enumerador ENUM_APPLIED_VOLUME.
Valor de retorno
O valor do enumerador ENUM_APPLIED_VOLUME como uma string.

2000-2015, MetaQuotes Software Corp.

2782

Biblioteca Padro

AddToChart
Adiciona o indicador no grfico.
bool AddToChart(
const long chart,

// chart ID

const int subwin

// chart subwindow

Parmetros
chart
[in] ID do Grfico
subwin
[in] Sub-janela do grfico.
Valor de retorno
verdadeiro - se bem sucedido; falso - se com erro.

2000-2015, MetaQuotes Software Corp.

2783

Biblioteca Padro

DeleteFromChart
Exclui o indicador do grfico.
bool DeleteFromChart(
const long chart,

// chart ID

const int subwin

// chart subwindow

Parmetros
chart
[in] ID do Grfico
subwin
[in] Sub-janela do grfico.
Valor de retorno
verdadeiro - se bem sucedido; falso - se com erro.

2000-2015, MetaQuotes Software Corp.

2784

Biblioteca Padro

CIndicators
O CIndicators uma classe para recolher instncias de timeseries e classes de indicadores tcnicos.

Descrio
A classe CIndicators possibilita a criao das instncias de classe dos indicadores tcnicos, o seu
armazenamento e gesto (sincronizao de dados, manipulao e gerenciamento de memria).

Declarao
class CIndicators: public CArrayObj

Ttulo
#include <Indicators\Indicators.mqh>

Mtodos de classe
Mtodos de Criao
Create

Cria indicador tcnico

Mtodos de Atualizao dos Dados


Refresh

Atualiza dados para todos


tcnicos na coleo

2000-2015, MetaQuotes Software Corp.

os

indicadores

2785

Biblioteca Padro

Create
Ele cria o indicador com os parmetros especificados.
CIndicator* Create(
const string

symbol,

// Symbol name

const ENUM_TIMEFRAMES period,

// Period

const ENUM_INDICATOR

type,

// Indicator's type

const int

count,

// Number of parameters

const MqlParam&

params

// Parameters array reference

Parmetros
symbol
[in] Nome do ativo.
period
[in] Perodo (enumerador ENUM_TIMEFRAMES).
type
[in] Tipo de indicador (ENUM_INDICATOR).
count
[in] Nmero de parmetros para o indicador.
params
[in] Referente aos parmetros do array do indicador.
Valor de retorno
Se for bem sucedido, retorna a referncia do indicador criado, e NULL se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2786

Biblioteca Padro

Refresh
Atualiza dados para todos os indicadores tcnicos na coleo.
int Refresh()

Valor de retorno
Retorna a atualizao dos flags de timeframe (formado como um objeto flags de visibilidade).

2000-2015, MetaQuotes Software Corp.

2787

Biblioteca Padro

Classes de timesseries
Este grupo de captulos contm detalhes tcnicos das classes TimeSeries da biblioteca padro MQL5 e
descries de todos os seus componentes fundamentais.
Classe

Descrio

CiSpread

Fornece um acesso aos dados histricos do


spread

CiTime

Fornece um acesso aos tempos de abertura das


barras no histrico

CiTickVolume

Fornece um acesso aos volumes de ticks das


barras no histrico

CiRealVolume

Fornece um acesso aos volumes reais das


barras no histrico

CiOpen

Fornece um acesso para abertura dos preos


das barras no histrico

CiHigh

Fornece um acesso para mxima dos preos das


barras no histrico

CiLow

Fornece um acesso para mnima dos preos das


barras no histrico

CiClose

Fornece um acesso ao fechamento dos preos


das barras no histrico

2000-2015, MetaQuotes Software Corp.

2788

Biblioteca Padro

CiSpread
CiSpread uma classe projetada para acesso aos spreads das barras no histrico.

Descrio
A classe CiSpread fornece um acesso aos spreads de dados no histrico.

Declarao
class CiSpread: public CSeries

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Criao
Create

Cria timeseries

BufferResize

Define o tamanho do buffer

Mtodos de Acesso aos Dados


GetData

Obtm os dados

Mtodos de Atualizao dos Dados


Refresh

Atualiza os dados

2000-2015, MetaQuotes Software Corp.

2789

Biblioteca Padro

Create
Cria timeseries com os parmetros especificados para acesso ao histrico dos spreads.
bool Create(
string

symbol,

ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Valor de retorno
verdadeiro se teve sucesso, falso se as timeseries no foram criadas.

2000-2015, MetaQuotes Software Corp.

2790

Biblioteca Padro

BufferResize
Define novo tamanho das srie.
virtual void BufferResize(
int size

// new size

Parmetros
size
[in] Novo tamanho do buffer

2000-2015, MetaQuotes Software Corp.

2791

Biblioteca Padro

GetData
Obtm o elemento das timeseries pelo ndice.
int GetData(
int index

// index

) const

Parmetros
index
[in] O ndice do elemento necessrio.
Valor de retorno
Elemento de buffer das timeseries, ou 0.

GetData
Obtm o elemento das timeseries pela posio inicial e nmero de elementos.
int GetData(
int

start_pos,

// starting position

int

count,

// number of elements to get

int& buffer

// target array

) const

Parmetros
start_pos
[in] Posio inicial das timeseries.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referncia do array de destino aos dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio do tempo e pelo nmero de elementos.
int GetData(
datetime start_time,

// starting time

int

count,

// number of elements

int&

buffer

// target array

) const

Parmetros
start_time
2000-2015, MetaQuotes Software Corp.

2792

Biblioteca Padro
[in] Incio do tempo.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referente ao array de destino para os dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio e final dos tempos.
int GetData(
datetime start_time,

// starting time

datetime stop_time,

// stop time

int&

// target array

buffer

) const

Parmetros
start_time
[in] Incio do tempo.
stop_time
[in] Tempo final.
buffer
[in] Referente ao array de destino para os dados
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

2000-2015, MetaQuotes Software Corp.

2793

Biblioteca Padro

Refresh
Atualiza os dados das timeseries.
virtual void Refresh(
int flags

// flags

Parmetros
flags
[in] Flags de timeframe

2000-2015, MetaQuotes Software Corp.

2794

Biblioteca Padro

CiTime
CiTime uma classe projetada de acesso aos tempos de abertura das barras no histrico.

Descrio
A classe CiTime fornece um acesso aos tempos de abertura das barras no histrico.

Declarao
class CiTime: public CSeries

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Criao
Create

Cria timeseries

BufferResize

Define o tamanho do buffer

Mtodos de Acesso aos Dados


GetData

Obtm os dados

Mtodos de Atualizao dos Dados


Refresh

Atualiza os dados

2000-2015, MetaQuotes Software Corp.

2795

Biblioteca Padro

Create
Cria timeseries com os parmetros especificados de acesso aos tempos de abertura das barras no
histrico.
bool Create(
string

symbol,

ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Valor de retorno
verdadeiro se teve sucesso, falso se as timeseries no foram criadas.

2000-2015, MetaQuotes Software Corp.

2796

Biblioteca Padro

BufferResize
Define novo tamanho das srie.
virtual void BufferResize(
int size

// new size

Parmetros
size
[in] Novo tamanho do buffer

2000-2015, MetaQuotes Software Corp.

2797

Biblioteca Padro

GetData
Obtm o elemento das timeseries pelo ndice.
datetime GetData(
int index

// index

) const

Parmetros
index
[in] O ndice do elemento necessrio.
Valor de retorno
Elemento de buffer das timeseries, ou 0.

GetData
Obtm o elemento das timeseries pela posio inicial e nmero de elementos.
int GetData(
int

start_pos,

// starting position

int

count,

// number of elements to get

long& buffer

// target array

) const

Parmetros
start_pos
[in] Posio inicial das timeseries.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referncia do array de destino aos dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio do tempo e pelo nmero de elementos.
int GetData(
datetime start_time,

// starting time

int

count,

// number of elements

long&

buffer

// target array

) const

Parmetros
start_time
2000-2015, MetaQuotes Software Corp.

2798

Biblioteca Padro
[in] Incio do tempo.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referente ao array de destino para os dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio e final dos tempos.
int GetData(
datetime start_time,

// starting time

datetime stop_time,

// stop time

long&

// target array

buffer

) const

Parmetros
start_time
[in] Incio do tempo.
stop_time
[in] Tempo final.
buffer
[in] Referente ao array de destino para os dados
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

2000-2015, MetaQuotes Software Corp.

2799

Biblioteca Padro

Refresh
Atualiza os dados das timeseries.
virtual void Refresh(
int flags

// flags

Parmetros
flags
[in] Flags de timeframe

2000-2015, MetaQuotes Software Corp.

2800

Biblioteca Padro

CiTickVolume
CiTickVolume uma classe projetada para acesso aos volumes de ticks das barras no histrico.

Descrio
A classe CiTickVolume fornece um acesso aos volumes de ticks das barras no histrico.

Declarao
class CiTickVolume: public CSeries

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Criao
Create

Cria timeseries

BufferResize

Define o tamanho do buffer

Mtodos de Acesso aos Dados


GetData

Obtm os dados

Mtodos de Atualizao dos Dados


Refresh

Atualiza os dados

2000-2015, MetaQuotes Software Corp.

2801

Biblioteca Padro

Create
Cria timeseries com os parmetros especificados para acesso aos volumes de ticks das barras no
histrico.
bool Create(
string

symbol,

ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Valor de retorno
verdadeiro se teve sucesso, falso se as timeseries no foram criadas.

2000-2015, MetaQuotes Software Corp.

2802

Biblioteca Padro

BufferResize
Define novo tamanho das srie.
virtual void BufferResize(
int size

// new size

Parmetros
size
[in] Novo tamanho do buffer

2000-2015, MetaQuotes Software Corp.

2803

Biblioteca Padro

GetData
Obtm o elemento das timeseries pelo ndice.
datetime GetData(
int index

// index

) const

Parmetros
index
[in] O ndice do elemento necessrio.
Valor de retorno
Elemento de buffer das timeseries, ou 0.

GetData
Obtm o elemento das timeseries pela posio inicial e nmero de elementos.
int GetData(
int

start_pos,

// starting position

int

count,

// number of elements to get

long& buffer

// target array

) const

Parmetros
start_pos
[in] Posio inicial das timeseries.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referncia do array de destino aos dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio do tempo e pelo nmero de elementos.
int GetData(
datetime start_time,

// starting time

int

count,

// number of elements

long&

buffer

// target array

) const

Parmetros
start_time
2000-2015, MetaQuotes Software Corp.

2804

Biblioteca Padro
[in] Incio do tempo.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referente ao array de destino para os dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio e final dos tempos.
int GetData(
datetime start_time,

// starting time

datetime stop_time,

// stop time

long&

// target array

buffer

) const

Parmetros
start_time
[in] Incio do tempo.
stop_time
[in] Tempo final.
buffer
[in] Referente ao array de destino para os dados
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

2000-2015, MetaQuotes Software Corp.

2805

Biblioteca Padro

Refresh
Atualiza os dados das timeseries.
virtual void Refresh(
int flags

// flags

Parmetros
flags
[in] Flags de timeframe

2000-2015, MetaQuotes Software Corp.

2806

Biblioteca Padro

CiRealVolume
CiRealVolume uma classe projetada para acesso aos volumes reais das barras no histrico.

Descrio
A classe CiRealVolume fornece um acesso aos volumes reais das barras no histrico.

Declarao
class CiRealVolume: public CSeries

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Criao
Create

Cria timeseries

BufferResize

Define o tamanho do buffer

Mtodos de Acesso aos Dados


GetData

Obtm os dados

Mtodos de Atualizao dos Dados


Refresh

Atualiza os dados

2000-2015, MetaQuotes Software Corp.

2807

Biblioteca Padro

Create
Cria timeseries com os parmetros especificados para acesso aos volumes reais das barras no
histrico.
bool Create(
string

symbol,

ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Valor de retorno
verdadeiro se teve sucesso, falso se as timeseries no foram criadas.

2000-2015, MetaQuotes Software Corp.

2808

Biblioteca Padro

BufferResize
Define novo tamanho das srie.
virtual void BufferResize(
int size

// new size

Parmetros
size
[in] Novo tamanho do buffer

2000-2015, MetaQuotes Software Corp.

2809

Biblioteca Padro

GetData
Obtm o elemento das timeseries pelo ndice.
datetime GetData(
int index

// index

) const

Parmetros
index
[in] O ndice do elemento necessrio.
Valor de retorno
Elemento de buffer das timeseries, ou 0.

GetData
Obtm o elemento das timeseries pela posio inicial e nmero de elementos.
int GetData(
int

start_pos,

// starting position

int

count,

// number of elements to get

long& buffer

// target array

) const

Parmetros
start_pos
[in] Posio inicial das timeseries.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referncia do array de destino aos dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio do tempo e pelo nmero de elementos.
int GetData(
datetime start_time,

// starting time

int

count,

// number of elements

long&

buffer

// target array

) const

Parmetros
start_time
2000-2015, MetaQuotes Software Corp.

2810

Biblioteca Padro
[in] Incio do tempo.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referente ao array de destino para os dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio e final dos tempos.
int GetData(
datetime start_time,

// starting time

datetime stop_time,

// stop time

long&

// target array

buffer

) const

Parmetros
start_time
[in] Incio do tempo.
stop_time
[in] Tempo final.
buffer
[in] Referente ao array de destino para os dados
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

2000-2015, MetaQuotes Software Corp.

2811

Biblioteca Padro

Refresh
Atualiza os dados das timeseries.
virtual void Refresh(
int flags

// flags

Parmetros
flags
[in] Flags de timeframe

2000-2015, MetaQuotes Software Corp.

2812

Biblioteca Padro

CiOpen
CiOpen uma classe projetada para acessar a abertura dos preos das barras no histrico.

Descrio
A classe CiOpen fornece o acesso da abertura dos preos das barras no histrico.

Declarao
class CiOpen: public CPriceSeries

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Criao
Create

Cria timeseries

Mtodos de Acesso aos Dados


GetData

Obtm os dados

2000-2015, MetaQuotes Software Corp.

2813

Biblioteca Padro

Create
Cria timeseries com os parmetros especificados de acesso a abertura dos preos das barras no
histrico.
bool Create(
string

symbol,

ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Valor de retorno
verdadeiro se teve sucesso, falso se as timeseries no foram criadas.

2000-2015, MetaQuotes Software Corp.

2814

Biblioteca Padro

GetData
Obtm o elemento das timeseries pela posio inicial e nmero de elementos.
int GetData(
int

start_pos,

// starting position

int

count,

// number of elements to get

double& buffer

// target array

) const

Parmetros
start_pos
[in] Posio inicial das timeseries.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referncia do array de destino aos dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio do tempo e pelo nmero de elementos.
int GetData(
datetime start_time,

// starting time

int

// number of elements

count,

double&

buffer

// target array

) const

Parmetros
start_time
[in] Incio do tempo.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referente ao array de destino para os dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio e final dos tempos.

2000-2015, MetaQuotes Software Corp.

2815

Biblioteca Padro
int GetData(
datetime start_time,

// starting time

datetime stop_time,

// stop time

double&

// target array

buffer

) const

Parmetros
start_time
[in] Incio do tempo.
stop_time
[in] Tempo final.
buffer
[in] Referente ao array de destino para os dados
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

2000-2015, MetaQuotes Software Corp.

2816

Biblioteca Padro

CiHigh
CiHigh uma classe projetado para o acesso as mximas de preos das barras no histrico.

Descrio
A classe CiHigh fornece um acesso as mximas de preos das barras no histrico.

Declarao
class CiHigh: public CPriceSeries

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Criao
Create

Cria timeseries

Mtodos de Acesso aos Dados


GetData

Obtm os dados

2000-2015, MetaQuotes Software Corp.

2817

Biblioteca Padro

Create
Cria timeseries com os parmetros especificados para acesso as mximas de preos das barras no
histrico.
bool Create(
string

symbol,

ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Valor de retorno
verdadeiro se teve sucesso, falso se as timeseries no foram criadas.

2000-2015, MetaQuotes Software Corp.

2818

Biblioteca Padro

GetData
Obtm o elemento das timeseries pela posio inicial e nmero de elementos.
int GetData(
int

start_pos,

// starting position

int

count,

// number of elements to get

double& buffer

// target array

) const

Parmetros
start_pos
[in] Posio inicial das timeseries.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referncia do array de destino aos dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio do tempo e pelo nmero de elementos.
int GetData(
datetime start_time,

// starting time

int

// number of elements

count,

double&

buffer

// target array

) const

Parmetros
start_time
[in] Incio do tempo.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referente ao array de destino para os dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio e final dos tempos.

2000-2015, MetaQuotes Software Corp.

2819

Biblioteca Padro
int GetData(
datetime start_time,

// starting time

datetime stop_time,

// stop time

double&

// target array

buffer

) const

Parmetros
start_time
[in] Incio do tempo.
stop_time
[in] Tempo final.
buffer
[in] Referente ao array de destino para os dados
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

2000-2015, MetaQuotes Software Corp.

2820

Biblioteca Padro

CiLow
CiLow uma classe projetado para o acesso as mnimas dos preos das barras no histrico.

Descrio
A classe CiLow fornece um acesso as mnimas dos preos das barras no histrico.

Declarao
class CiLow: public CPriceSeries

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Criao
Create

Cria timeseries

Mtodos de Acesso aos Dados


GetData

Obtm os dados

2000-2015, MetaQuotes Software Corp.

2821

Biblioteca Padro

Create
Cria timeseries com os parmetros especificados para o acesso as mnimas dos preos das barras no
histrico.
bool Create(
string

symbol,

ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Valor de retorno
verdadeiro se teve sucesso, falso se as timeseries no foram criadas.

2000-2015, MetaQuotes Software Corp.

2822

Biblioteca Padro

GetData
Obtm o elemento das timeseries pela posio inicial e nmero de elementos.
int GetData(
int

start_pos,

// starting position

int

count,

// number of elements to get

double& buffer

// target array

) const

Parmetros
start_pos
[in] Posio inicial das timeseries.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referncia do array de destino aos dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio do tempo e pelo nmero de elementos.
int GetData(
datetime start_time,

// starting time

int

// number of elements

count,

double&

buffer

// target array

) const

Parmetros
start_time
[in] Incio do tempo.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referente ao array de destino para os dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio e final dos tempos.

2000-2015, MetaQuotes Software Corp.

2823

Biblioteca Padro
int GetData(
datetime start_time,

// starting time

datetime stop_time,

// stop time

double&

// target array

buffer

) const

Parmetros
start_time
[in] Incio do tempo.
stop_time
[in] Tempo final.
buffer
[in] Referente ao array de destino para os dados
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

2000-2015, MetaQuotes Software Corp.

2824

Biblioteca Padro

CiClose
CiClose uma classe projetada para acesso ao fechamento dos preos das barras no histrico.

Descrio
A classe CiClose fornece um acesso ao fechamento dos preos das barras no histrico.

Declarao
class CiClose: public CPriceSeries

Ttulo
#include <Indicators\TimeSeries.mqh>

Mtodos de classe
Mtodos de Criao
Create

Cria timeseries

Mtodos de Acesso aos Dados


GetData

Obtm os dados

2000-2015, MetaQuotes Software Corp.

2825

Biblioteca Padro

Create
Cria timeseries com os parmetros especificados para acessar o fechamento de preos das barras no
histrico.
bool Create(
string

symbol,

ENUM_TIMEFRAMES period

// symbol
// period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Valor de retorno
verdadeiro se teve sucesso, falso se as timeseries no foram criadas.

2000-2015, MetaQuotes Software Corp.

2826

Biblioteca Padro

GetData
Obtm o elemento das timeseries pela posio inicial e nmero de elementos.
int GetData(
int

start_pos,

// starting position

int

count,

// number of elements to get

double& buffer

// target array

) const

Parmetros
start_pos
[in] Posio inicial das timeseries.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referncia do array de destino aos dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio do tempo e pelo nmero de elementos.
int GetData(
datetime start_time,

// starting time

int

// number of elements

count,

double&

buffer

// target array

) const

Parmetros
start_time
[in] Incio do tempo.
count
[in] Nmero de elementos necessrios.
buffer
[in] Referente ao array de destino para os dados.
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

GetData
Obtm o elemento das timeseries pelo incio e final dos tempos.

2000-2015, MetaQuotes Software Corp.

2827

Biblioteca Padro
int GetData(
datetime start_time,

// starting time

datetime stop_time,

// stop time

double&

// target array

buffer

) const

Parmetros
start_time
[in] Incio do tempo.
stop_time
[in] Tempo final.
buffer
[in] Referente ao array de destino para os dados
Valor de retorno
>=0 se bem sucedida, -1 em caso de erro.

2000-2015, MetaQuotes Software Corp.

2828

Biblioteca Padro

Classes de Indicador de Tendncia


Este grupo de captulos contm detalhes tcnicos das classes de indicador de tendncia da Biblioteca
Padro MQL5 e descries de todos os seus componentes fundamentais.
Classe/grupo

Descrio

CiADX

Average Directional Index

CiADXWilder

Average Directional Index by Welles Wilder

CiBands

Bollinger Bands

CiEnvelopes

Envelopes

CiIchimoku

Ichimoku Kinko Hyo

CiMA

Moving Average

CiSAR

Parabolic Stop And Reverse System

CiStdDev

Standard Deviation

CiDEMA

Double Exponential Moving Average

CiTEMA

Triple Exponential Moving Average

CiFrAMA

Fractal Adaptive Moving Average

CiAMA

Adaptive Moving Average

CiVIDyA

Variable Index DYnamic Average

2000-2015, MetaQuotes Software Corp.

2829

Biblioteca Padro

CiADX
CiADX uma classe destinada ao uso do indicador tcnico Average Directional Index.

Descrio
A classe CiADX possibilita a criao e acesso aos dados do indicador Average Directional Index.

Declarao
class CiADX: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer da linha principal

Plus

Retorna o elemento de buffer da linha +DI

Minus

Retorna o elemento de buffer da linha -DI

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2830

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2831

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

// Averaging period

ma_period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2832

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2833

Biblioteca Padro

Plus
Retorna o elemento de buffer da linha +DI pelo ndice especificado.
double Plus(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha +DI do ndice especificado, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2834

Biblioteca Padro

Minus
Retorna o elemento de buffer da linha -DI pelo ndice especificado.
double Minus(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha -DI do ndice especificado, ou EMPTY_VALUE se no houver qualquer
dado correto.

2000-2015, MetaQuotes Software Corp.

2835

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_ADX para CiADX).

2000-2015, MetaQuotes Software Corp.

2836

Biblioteca Padro

CiADXWilder
CiADXWilder uma classe destinada ao uso do indicador tcnico Average Directional Index by Welles
Wilder.

Descrio
A classe CiADXWilder possibilita a criao e acesso aos dados do indicador Average Directional Index
by Welles Wilder.

Declarao
class CiADXWilder: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer da linha principal

Plus

Retorna o elemento de buffer da linha +DI

Minus

Retorna o elemento de buffer da linha -DI

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2837

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2838

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

// Averaging period

ma_period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2839

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2840

Biblioteca Padro

Plus
Retorna o elemento de buffer da linha +DI pelo ndice especificado.
double Plus(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha +DI do ndice especificado, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2841

Biblioteca Padro

Minus
Retorna o elemento de buffer da linha -DI pelo ndice especificado.
double Minus(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha -DI do ndice especificado, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2842

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_ADXW para CiADXWilder).

2000-2015, MetaQuotes Software Corp.

2843

Biblioteca Padro

CiBands
CiBands uma classe destinada ao uso do indicador tcnico Bollinger Bands.

Descrio
A classe CiBands possibilita a criao e o acesso aos dados do indicador Bollinger Bands.

Declarao
class CiBands: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

MaShift

Retorna o deslocamento horizontal

Deviation

Retorna o desvio

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer da linha base

Upper

Retorna o elemento de buffer da linha superior

Lower

Retorna o elemento de buffer da linha inferior

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2844

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2845

Biblioteca Padro

MaShift
Retorna o deslocamento horizontal do indicador.
int MaShift() const

Valor de retorno
Retorna o valor de deslocamento horizontal, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2846

Biblioteca Padro

Deviation
Retorna o desvio.
double Deviation() const

Valor de retorno
Retorna o desvio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2847

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2848

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

ma_period,

// Averaging period

int

ma_shift,

// Shift

double

deviation,

// Deviation

int

applied

// applied price, or handle

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
ma_shift
[in] Deslocamento horizontal do indicador.
deviation
[in] Desvio.
applied
[in] Tipo de volume para aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2849

Biblioteca Padro

Base
Retorna o elemento de buffer da linha base do ndice especificado.
double Base(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha base do ndice especificado, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2850

Biblioteca Padro

Upper
Retorna o elemento de buffer da linha superior pelo ndice especificado.
double Upper(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha superior do ndice especificado, ou EMPTY_VALUE se no houver
nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

2851

Biblioteca Padro

Lower
Retorna o elemento de buffer da linha inferior pelo ndice especificado.
double Lower(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha inferior do ndice especificado, ou EMPTY_VALUE se no houver
nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

2852

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_BANDS para CiBands).

2000-2015, MetaQuotes Software Corp.

2853

Biblioteca Padro

CiEnvelopes
CiEnvelopes uma classe destinada ao uso do indicador tcnico Envelopes.

Descrio
A classe CiEnvelopes possibilita a criao e o acesso aos dados do indicador Envelopes.

Declarao
class CiEnvelopes: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

MaShift

Retorna o deslocamento horizontal

MaMethod

Retorna o mtodo de mdia

Deviation

Retorna o desvio

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Upper

Retorna o elemento de buffer da linha superior

Lower

Retorna o elemento de buffer da linha inferior

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2854

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2855

Biblioteca Padro

MaShift
Retorna o deslocamento horizontal do indicador.
int MaShift() const

Valor de retorno
Retorna o valor de deslocamento horizontal, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2856

Biblioteca Padro

MaMethod
Retorna o mtodo da mdia.
ENUM_MA_METHOD MaMethod() const

Valor de retorno
Retorna o mtodo de mdia, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2857

Biblioteca Padro

Deviation
Retorna o valor do desvio.
double Deviation() const

Valor de retorno
Retorna o valor do desvio, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2858

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2859

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

ma_period,

// Averaging period

int

ma_shift,

// Horizontal shift

ENUM_MA_METHOD

ma_method,

// Averaging method

int

applied,

// Price type or handle to apply

double

deviation

// Deviation

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
ma_shift
[in] Deslocamento horizontal.
ma_method
[in] Mtodo de mdia (enumerador ENUM_MA_METHOD).
applied
[in] Tipo de Preo do manipulador para aplicar.
deviation
[in] Desvio.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2860

Biblioteca Padro

Upper
Retorna o elemento de buffer da linha superior pelo ndice especificado.
double Upper(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha superior do ndice especificado, ou EMPTY_VALUE se no houver
nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

2861

Biblioteca Padro

Lower
Retorna o elemento de buffer da linha inferior pelo ndice especificado.
double Lower(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha inferior do ndice especificado, ou EMPTY_VALUE se no houver
nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

2862

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_ENVELOPES para CiEnvelopes).

2000-2015, MetaQuotes Software Corp.

2863

Biblioteca Padro

CiIchimoku
CiIchimoku uma classe destinada ao do indicador tcnico Ichimoku Kinko Hyo.

Descrio
A classe CiIchimoku possibilita a criao, setup e acesso aos dados do indicador Ichimoku Kinko Hyo.

Declarao
class CiIchimoku: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
TenkanSenPeriod

Retorna o perodo TenkanSen

KijunSenPeriod

Retorna o perodo KijunSen

SenkouSpanBPeriod

Retorna o perodo SenkouSpanB

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


TenkanSen

Retorna o
TenkanSen

elemento

de

buffer da

KijunSen

Retorna o elemento de buffer da linha KijunSen

SenkouSpanA

Retorna o elemento
SenkouSpanA

de

buffer da

linha

SenkouSpanB

Retorna o elemento
SenkouSpanB

de

buffer da

linha

ChinkouSpan

Retorna o elemento
ChikouSpan

de

buffer da

linha

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

linha

2864

Biblioteca Padro

TenkanSenPeriod
Retorna o perodo TenkanSen.
int TenkanSenPeriod() const

Valor de retorno
Retorna o perodo TenkanSen, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2865

Biblioteca Padro

KijunSenPeriod
Retorna o perodo KijunSen.
int KijunSenPeriod() const

Valor de retorno
Retorna o perodo KijunSen, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2866

Biblioteca Padro

SenkouSpanBPeriod
Retorna o perodo SenkouSpanB.
int SenkouSpanBPeriod() const

Valor de retorno
Retorna o perodo SenkouSpanB, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2867

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

tenkan_sen,

// Period of TenkanSen

int

kijun_sen,

// Period of KijunSen

int

senkou_span_b

// Period of SenkouSpanB

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
tenkan_sen
[in] Perodo do TenkanSen.
kijun_sen
[in] Perodo do KijunSen.
senkou_span_b
[in] Perodo do SenkouSpanB.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2868

Biblioteca Padro

TenkanSen
Retorna o elemento de buffer da linha TenkanSen pelo ndice especificado.
double TenkanSen(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha TenkanSen do ndice especificado, ou EMPTY_VALUEse no houver
nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

2869

Biblioteca Padro

KijunSen
Retorna o elemento de buffer da linha KijunSen pelo ndice especificado.
double KijunSen(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha KijunSen de ndice especificado, ou EMPTY_VALUE se no houver
nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

2870

Biblioteca Padro

SenkouSpanA
Retorna o elemento de buffer da linha SenkouSpanA pelo ndice especificado.
double SenkouSpanA(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento buffer da linha SenkouSpanA do ndice especificado, ou EMPTY_VALUE se no houver
nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

2871

Biblioteca Padro

SenkouSpanB
Retorna o elemento de buffer da linha SenkouSpanB pelo ndice especificado.
double SenkouSpanB(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha SenkouSpanB do ndice especificado, ou EMPTY_VALUE se no houver
nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

2872

Biblioteca Padro

ChinkouSpan
Retorna o elemento de buffer da linha ChinkouSpan pelo ndice especificado.
double ChinkouSpan(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha ChinkouSpan do ndice especificado, ou EMPTY_VALUE se no houver
nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

2873

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_ICHIMOKU para CiIchimoku).

2000-2015, MetaQuotes Software Corp.

2874

Biblioteca Padro

CiMA
CiMA uma classe destinada ao uso do indicador tcnico Moving Average.

Descrio
A classe CiMA possibilita a criao, setup e acesso aos dados do indicador Moving Average.

Declarao
class CiMA: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

MaShift

Retorna o deslocamento horizontal

MaMethod

Retorna o mtodo de mdia

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2875

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2876

Biblioteca Padro

MaShift
Retorna o deslocamento horizontal do indicador.
int MaShift() const

Valor de retorno
Retorna o valor de deslocamento horizontal, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2877

Biblioteca Padro

MaMethod
Retorna o mtodo da mdia.
ENUM_MA_METHOD MaMethod() const

Valor de retorno
Retorna o mtodo da mdia (valor do enumerador ENUM_MA_METHOD), definido na criao
indicador.

2000-2015, MetaQuotes Software Corp.

2878

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2879

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

string,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

ma_period,

// Averaging period

int

ma_shift,

// Horizontal shift

ENUM_MA_METHOD

ma_method,

// Averaging method

int

applied

// Price type of handle to apply

Parmetros
string
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
ma_shift
[in] Deslocamento horizontal.
ma_method
[in] Mtodo de mdia (enumerador ENUM_MA_METHOD).
applied
[in] Tipo de preo ou manipulador a aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2880

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2881

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_MA para CiMA).

2000-2015, MetaQuotes Software Corp.

2882

Biblioteca Padro

CiSAR
CiSAR uma classe destinada ao uso do indicador tcnico Parabolic Stop And Reverse System.

Descrio
A classe CiSAR possibilita a criao, setup e acesso aos dados do indicador Parabolic Stop And Reverse
System.

Declarao
class CiSAR: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
SarStep

Retorna o passo para o aumento da velocidade

Maximum

Retorna o coeficiente de preo seguinte

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2883

Biblioteca Padro

SarStep
Retorna o passo para o aumento da velocidade (coeficiente de acelerao).
double SarStep() const

Valor de retorno
O passo para a velocidade crescente, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2884

Biblioteca Padro

Maximum
Retorna o coeficiente do preo seguinte.
double Maximum() const

Valor de retorno
O coeficiente do preo seguinte, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2885

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

double

step,

// Step

double

maximum

// Coefficient

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
step
[in] Passo para velocidade crescente.
maximum
[in] Preo seguindo o coeficiente.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2886

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2887

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_SAR para CiSAR).

2000-2015, MetaQuotes Software Corp.

2888

Biblioteca Padro

CiStdDev
CiStdDev uma classe destinada ao uso do indicador tcnico Standard Deviation.

Descrio
A classe CiStdDev possibilita a criao, setup e acesso aos dados do indicador Standard Deviation.

Declarao
class CiStdDev: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

MaShift

Retorna o deslocamento horizontal

MaMethod

Retorna o mtodo de mdia

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2889

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2890

Biblioteca Padro

MaShift
Retorna o deslocamento horizontal do indicador.
int MaShift() const

Valor de retorno
Retorna o valor de deslocamento horizontal, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2891

Biblioteca Padro

MaMethod
Retorna o mtodo da mdia.
ENUM_MA_METHOD MaMethod() const

Valor de retorno
Retorna o mtodo da mdia (valor do enumerador ENUM_MA_METHOD), definido na criao do
indicador.

2000-2015, MetaQuotes Software Corp.

2892

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2893

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

ma_period,

// Averaging period

int

ma_shift,

// Horizontal shift

ENUM_MA_METHOD

ma_method,

// Averaging method

int

applied

// Price type or handle to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
ma_shift
[in] Deslocamento horizontal.
ma_method
[in] Mtodo de mdia (enumerador ENUM_MA_METHOD).
applied
[in] Tipo de preo ou manipulador a aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2894

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2895

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_STDDEV para CiStdDev).

2000-2015, MetaQuotes Software Corp.

2896

Biblioteca Padro

CiDEMA
CiDEMA uma classe destinada ao uso do indicador tcnico Double Exponential Moving Average.

Descrio
A classe CiDEMA possibilita a criao, setup e acesso aos dados do indicador Double Exponential
Moving Average.

Declarao
class CiDEMA: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

IndShift

Retorna o deslocamento horizontal

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2897

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2898

Biblioteca Padro

IndShift
Retorna o deslocamento horizontal do indicador.
int IndShift() const

Valor de retorno
Retorna o valor de deslocamento horizontal, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2899

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2900

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

string,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

ma_period,

// Averaging period

int

ind_shift,

// Shift

int

applied

// Price type of handle to apply

Parmetros
string
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
ind_shift
[in] Deslocamento horizontal.
applied
[in] Tipo de preo ou manipulador a aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2901

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2902

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_DEMA para CiDEMA).

2000-2015, MetaQuotes Software Corp.

2903

Biblioteca Padro

CiTEMA
CiTEMA uma classe destinada ao uso do indicador tcnico Triple Exponential Moving Average.

Descrio
A classe CiTEMA possibilita a criao, setup e acesso aos dados do indicador Triple Exponential Moving
Average.

Declarao
class CiTEMA: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

IndShift

Retorna o deslocamento horizontal

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2904

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2905

Biblioteca Padro

IndShift
Retorna o deslocamento horizontal do indicador.
int IndShift() const

Valor de retorno
Retorna o valor de deslocamento horizontal, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2906

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2907

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

ma_period,

// Averaging period

int

ma_shift,

// Offset

int

applied

// Price type of handle to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
ma_shift
[in] Deslocamento horizontal.
applied
[in] Tipo de preo ou manipulador a aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2908

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2909

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_TEMA para CiTEMA).

2000-2015, MetaQuotes Software Corp.

2910

Biblioteca Padro

CiFrAMA
CiFrAMA uma classe destinada ao uso do indicador tcnico Fractal Adaptive Moving Average.

Descrio
A classe CiFrAMA possibilita a criao, setup e acesso aos dados do indicador Fractal Adaptive Moving
Average.

Declarao
class CiFrAMA: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

IndShift

Retorna o deslocamento horizontal

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2911

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2912

Biblioteca Padro

IndShift
Retorna o deslocamento horizontal do indicador.
int IndShift() const

Valor de retorno
Retorna o valor de deslocamento horizontal, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2913

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2914

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

ma_period,

// Averaging period

int

ma_shift,

// Offset

int

applied

// Price type of handle to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
ma_shift
[in] Deslocamento horizontal.
applied
[in] Tipo de preo ou manipulador a aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2915

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2916

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_FRAMA para CiFrAMA).

2000-2015, MetaQuotes Software Corp.

2917

Biblioteca Padro

CiAMA
CiAMA uma classe destinada ao uso do indicador tcnico Adaptive Moving Average.

Descrio
A classe CiAMA possibilita a criao, setup e acesso aos dados do indicador Adaptive Moving Average.

Declarao
class CiAMA: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

FastEmaPeriod

Retorna o perodo mdio da EMA rpida

SlowEmaPeriod

Retorna o perodo mdio da EMA lenta

IndShift

Retorna o deslocamento horizontal

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2918

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2919

Biblioteca Padro

FastEmaPeriod
Retorna o perodo mdio da EMA rpida.
int FastEmaPeriod() const

Valor de retorno
Retorna o perodo mdio da EMA rpida, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2920

Biblioteca Padro

SlowEmaPeriod
Retorna o perodo mdio da EMA lenta.
int SlowEmaPeriod() const

Valor de retorno
Retorna o perodo mdio da EMA lenta, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2921

Biblioteca Padro

IndShift
Retorna o deslocamento horizontal do indicador.
int IndShift() const

Valor de retorno
Retorna o valor de deslocamento horizontal, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2922

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2923

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

string,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

ma_period,

// Averaging period

int

fast_ema_period,

// Fast EMA period

int

slow_ema_period,

// Slow EMA period

int

ind_shift,

// Shift

int

applied

// Price type or handle to apply

Parmetros
string
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
fast_ema_period
[in] Perodo mdio da EMA rpida.
slow_ema_period
[in] Perodo mdio da EMA lenta.
ind_shift
[in] Deslocamento horizontal.
applied
[in] Tipo de preo ou manipulador a aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2924

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2925

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_AMA para CIAMA).

2000-2015, MetaQuotes Software Corp.

2926

Biblioteca Padro

CiVIDyA
CiVIDyA uma classe destinada ao suo do indicador tcnico Variable Index DYnamic Average.

Descrio
A classe CiVIDyA possibilita a criao, setup e acesso aos dados do indicador Variable Index DYnamic
Average.

Declarao
class CiVIDyA: public CIndicator

Ttulo
#include <Indicators\Trend.mqh>

Mtodos de classe
Atributos
CmoPeriod

Retorna o perodo para Momentum

EmaPeriod

Retorna o perodo mdio para EMA

IndShift

Retorna o deslocamento horizontal

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2927

Biblioteca Padro

CmoPeriod
Retorna o perodo para Momentum.
int CmoPeriod() const

Valor de retorno
Retorna o perodo para Momentum, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2928

Biblioteca Padro

EmaPeriod
Retorna o perodo mdio para EMA.
int EmaPeriod() const

Valor de retorno
Retorna o perodo mdio para EMA, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2929

Biblioteca Padro

IndShift
Retorna o deslocamento horizontal do indicador.
int IndShift() const

Valor de retorno
Retorna o valor de deslocamento horizontal, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2930

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2931

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

cmo_period,

// Momentum period

int

ema_period,

// Averaging period

int

ind_shift,

// Shift

int

applied

// Price type or handle to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
cmo_period
[in] Perodo do momentum.
ema_period
[in] Perodo mdio.
ind_shift
[in] Deslocamento horizontal.
applied
[in] Tipo de preo ou manipulador a aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2932

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2933

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_VIDYA para CiVIDyA).

2000-2015, MetaQuotes Software Corp.

2934

Biblioteca Padro

Osciladores
Este grupo de captulos contm os detalhes tcnicos das classes Oscillators da Biblioteca Padro MQL5
e descries de todos os seus componentes fundamentais.
Classe/grupo

Descrio

CiATR

Average True Range

CiBearsPower

Bears Power

CiBullsPower

Bulls Power

CiCCI

Commodity Channel Index

CiChaikin

Chaikin Oscillator

CiDeMarker

DeMarker

CiForce

Force Index

CiMACD

Moving Averages Convergence-Divergence

CiMomentum

Momentum

CiOsMA

Moving
Average
histogram)

CiRSI

Relative Strength Index

CiRVI

Relative Vigor Index

CiStochastic

Stochastic Oscillator

CiWPR

Williams' Percent Range

CiTriX

Triple Exponential Moving Averages Oscillator

2000-2015, MetaQuotes Software Corp.

of

Oscillator

(MACD

2935

Biblioteca Padro

CiATR
CiATR uma classe destinada ao uso do indicador tcnico Average True Range.

Descrio
A classe CiATR possibilita a criao, setup e acesso aos dados do indicador Average True Range.

Declarao
class CiATR: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2936

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2937

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

// Averaging period

ma_period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2938

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2939

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_ATR para CiATR).

2000-2015, MetaQuotes Software Corp.

2940

Biblioteca Padro

CiBearsPower
CiBearsPower uma classe destinada ao uso do indicador tcnico Bears Power.

Descrio
A classe CiBearsPower possibilita a criao, setup e acesso aos dados do indicador de Bears Power.

Declarao
class CiBearsPower: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2941

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2942

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

// Averaging period

ma_period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2943

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2944

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_BEARS para CiBearsPower).

2000-2015, MetaQuotes Software Corp.

2945

Biblioteca Padro

CiBullsPower
CiBullsPower uma classe destinada ao uso do indicador tcnico Bulls Power.

Descrio
A classe CiBullsPower possibilita a criao, setup e acesso aos dados do indicador Bulls Power.

Declarao
class CiBullsPower: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2946

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2947

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

// Averaging period

ma_period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2948

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2949

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_BULLS para CiBullsPower).

2000-2015, MetaQuotes Software Corp.

2950

Biblioteca Padro

CiCCI
CiCCI uma classe destinada ao uso do indicador tcnico Commodity Channel Index.

Descrio
A classe CiCCI possibilita a criao, setup e acesso aos dados do indicador Commodity Channel Index.

Declarao
class CiCCI: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2951

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2952

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2953

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

ma_period,

// Averaging period

int

applied

// Price type or handle to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
applied
[in] Tipo de preo ou manipulador a aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2954

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2955

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_CCI para CiCCi).

2000-2015, MetaQuotes Software Corp.

2956

Biblioteca Padro

CiChaikin
CiChaikin uma classe destinada ao uso do indicador tcnico Chaikin Oscillator.

Descrio
A classe CiChaikin fornece a criao, setup e acesso aos dados do indicador Chaikin Oscillator.

Declarao
class CiChaikin: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
FastMaPeriod

Retorna o perodo mdio para a MA rpida

SlowMaPeriod

Retorna o perodo mdio para a MA lenta

MaMethod

Retorna o mtodo de mdia

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2957

Biblioteca Padro

FastMaPeriod
Retorna o perodo mdio da EMA rpida.
int FastMaPeriod() const

Valor de retorno
Retorna o perodo mdio da EMA rpida, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2958

Biblioteca Padro

SlowMaPeriod
Retorna o perodo mdio da EMA lenta.
int SlowMaPeriod() const

Valor de retorno
Retorna o perodo mdio da EMA lenta, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2959

Biblioteca Padro

MaMethod
Retorna o mtodo da mdia.
ENUM_MA_METHOD MaMethod() const

Valor de retorno
Retorna o mtodo de mdia, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2960

Biblioteca Padro

Applied
Retorna o tipo de volume para aplicar.
ENUM_APPLIED_VOLUME Applied() const

Valor de retorno
Tipo de Volume para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2961

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES

period,

// Period

int

fast_ma_period,

// Fast EMA period

int

slow_ma_period,

// Slow EMA period

ENUM_MA_METHOD

ma_method,

// Averaging method

ENUM_APPLIED_VOLUME applied

// Volume type to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
fast_ma_period
[in] Perodo da EMA rpida.
slow_ma_period
[in] Perodo da EMA lenta.
ma_method
[in] Mtodo de mdia (enumerador ENUM_MA_METHOD).
applied
[in] Tipo de volume para aplicar (enumerao ENUM_APPLIED_VOLUME).
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2962

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2963

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_CHAIKIN para CiChaikin).

2000-2015, MetaQuotes Software Corp.

2964

Biblioteca Padro

CiDeMarker
CiDeMarker uma classe destinada ao uso do indicador tcnico DeMarker.

Descrio
A classe CiDeMarker fornece a criao, setup e acesso aos dados do indicador DeMarker.

Declarao
class CiDeMarker: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2965

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2966

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

// Averaging period

ma_period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2967

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2968

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_DEMARKER para CiDeMarker).

2000-2015, MetaQuotes Software Corp.

2969

Biblioteca Padro

CiForce
CiForce uma classe destinada ao uso do indicador tcnico Force Index.

Descrio
A classe CiForce fornece a criao, setup e acesso aos dados do indicador Force Index.

Declarao
class CiForce: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

MaMethod

Retorna o mtodo de mdia

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2970

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2971

Biblioteca Padro

MaMethod
Retorna o mtodo da mdia.
ENUM_MA_METHOD MaMethod() const

Valor de retorno
Retorna o mtodo de mdia, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2972

Biblioteca Padro

Applied
Retorna o tipo de volume para aplicar.
ENUM_APPLIED_VOLUME Applied() const

Valor de retorno
Tipo de Volume para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2973

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES

period,

// Period

int

ma_period,

// Averaging period

ENUM_MA_METHOD

ma_method,

// Averaging method

ENUM_APPLIED_VOLUME applied

// Volume type to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
ma_method
[in] Mtodo de mdia (enumerador ENUM_MA_METHOD).
applied
[in] Tipo de volume para aplicar (enumerao ENUM_APPLIED_VOLUME).
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2974

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2975

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_FORCE para CiForce).

2000-2015, MetaQuotes Software Corp.

2976

Biblioteca Padro

CiMACD
CiMACD uma classe destinada ao uso do indicador tcnico Moving Averages ConvergenceDivergence.

Descrio
A classe CiMACD fornece a criao, setup e acesso aos dados do indicador Moving Averages
Convergence-Divergence.

Declarao
class CiMACD: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
FastEmaPeriod

Retorna o perodo mdio da EMA rpida

SlowEmaPeriod

Retorna o perodo mdio da EMA lenta

SignalPeriod

Retorna o perodo mdio da linha de sinal

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer da linha principal

Signal

Retorna o elemento de buffer da linha de sinal

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2977

Biblioteca Padro

FastEmaPeriod
Retorna o perodo mdio da EMA rpida.
int FastEmaPeriod() const

Valor de retorno
Retorna o perodo mdio da EMA rpida, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2978

Biblioteca Padro

SlowEmaPeriod
Retorna o perodo mdio da EMA lenta.
int SlowEmaPeriod() const

Valor de retorno
Retorna o perodo mdio da EMA lenta, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2979

Biblioteca Padro

SignalPeriod
Retorna o perodo mdio da linha de sinal.
int SignalPeriod() const

Valor de retorno
Retorna o perodo mdio da linha de sinal, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2980

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2981

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

fast_ema_period,

// Fast EMA period

int

slow_ema_period,

// Slow EMA period

int

signal_period,

// Signal period

int

applied

// Price type or handle to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
fast_ema_period
[in] Perodo da EMA rpida.
slow_ema_period
[in] Perodo da EMA lenta.
signal_period
[in] Perodo da linha de sinal.
applied
[in] Tipo de preo ou manipulador a aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2982

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2983

Biblioteca Padro

Signal
Retorna o elemento de buffer da linha de sinal pelo ndice especificado.
double Signal(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha de sinal do ndice especificado, ou EMPTY_VALUE se no houver
nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

2984

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_MACD para CiMACD).

2000-2015, MetaQuotes Software Corp.

2985

Biblioteca Padro

CiMomentum
CiMomentum uma classe destinada ao uso do indicador tcnico Momentum.

Descrio
A classe CiMomentum fornece a criao, setup e acesso aos dados do indicador Momentum.

Declarao
class CiMomentum: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2986

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2987

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2988

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

ma_period,

// Averaging period

int

applied

// Price type or handle to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
applied
[in] Tipo de preo ou manipulador a aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2989

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2990

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_MOMENTUM para CiMomentum).

2000-2015, MetaQuotes Software Corp.

2991

Biblioteca Padro

CiOsMA
CiOsMA uma classe destinada ao uso do indicador tcnico Moving Average of Oscillator (histograma
MACD).

Descrio
A classe CiOsMA fornece a criao, setup e acesso aos dados do indicador Moving Average of
Oscillator (histograma MACD).

Declarao
class CiOsMA: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
FastEmaPeriod

Retorna o perodo mdio da EMA rpida

SlowEmaPeriod

Retorna o perodo mdio da EMA lenta

SignalPeriod

Retorna o perodo mdio da linha de sinal

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

2992

Biblioteca Padro

FastEmaPeriod
Retorna o perodo mdio da EMA rpida.
int FastEmaPeriod() const

Valor de retorno
Retorna o perodo mdio da EMA rpida, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2993

Biblioteca Padro

SlowEmaPeriod
Retorna o perodo mdio da EMA lenta.
int SlowEmaPeriod() const

Valor de retorno
Retorna o perodo mdio da EMA lenta, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

2994

Biblioteca Padro

SignalPeriod
Retorna o perodo mdio da linha de sinal.
int SignalPeriod() const

Valor de retorno
Retorna o perodo mdio da linha de sinal, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2995

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

2996

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

fast_ema_period,

// Fast EMA period

int

slow_ema_period,

// Slow EMA period

int

signal_period,

// Signal line period

int

applied

// Price type or handle to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
fast_ema_period
[in] Perodo da EMA rpida.
slow_ema_period
[in] Perodo da EMA lenta.
signal_period
[in] Perodo da linha de sinal.
applied
[in] Tipo de preo ou manipulador a aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

2997

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

2998

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_OSMA para CiOsMA).

2000-2015, MetaQuotes Software Corp.

2999

Biblioteca Padro

CiRSI
CiRSI uma classe destinada ao uso do indicador tcnico Relative Strength Index.

Descrio
A classe CiRSI fornece a criao, setup e acesso aos dados do indicador Relative Strength Index.

Declarao
class CiRSI: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3000

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3001

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3002

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

ma_period,

// Averaging period

int

applied

// Price type or handle to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
applied
[in] Tipo de preo ou manipulador a aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3003

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

3004

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_RSI para CiRSI).

2000-2015, MetaQuotes Software Corp.

3005

Biblioteca Padro

CiRVI
CiRVI uma classe destinada ao uso do indicador tcnico Relative Vigor Index.

Descrio
A classe CiRVI fornece a criao, setup e acesso aos dados do indicador Relative Vigor Index.

Declarao
class CiRVI: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer da linha base

Signal

Retorna o elemento de buffer da linha de sinal

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3006

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3007

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

// Averaging period

ma_period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3008

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

3009

Biblioteca Padro

Signal
Retorna o elemento de buffer da linha de sinal pelo ndice especificado.
double Signal(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha de sinal do ndice especificado, ou EMPTY_VALUE se no houver
nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

3010

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto do identificador (IND_RVIpara CiRVI).

2000-2015, MetaQuotes Software Corp.

3011

Biblioteca Padro

CiStochastic
CiStochastic uma classe destinada ao uso do indicador tcnico Stochastic Oscillator.

Descrio
A classe CiStochastic fornece a criao, setup e acesso aos dados do indicador Stochastic Oscillator.

Declarao
class CiStochastic: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
Kperiod

Retorna o perodo mdio para a linha %K

Dperiod

Retorna o perodo mdio para a linha %D

Slowing

Retorna o perodo de desacelerao

MaMethod

Retorna o mtodo de mdia

PriceField

Tipo de Preo (Low/High ou Close/Close) para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer da linha base

Signal

Retorna o elemento de buffer da linha de sinal

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3012

Biblioteca Padro

Kperiod
Retorna o perodo mdio da linha %K.
int Kperiod() const

Valor de retorno
Retorna o perodo mdio da linha %K, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

3013

Biblioteca Padro

Dperiod
Retorna o perodo mdio da linha %D.
int Dperiod() const

Valor de retorno
Retorna o perodo mdio da linha %D, definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

3014

Biblioteca Padro

Slowing
Retorna o perodo de desacelerao.
int Slowing() const

Valor de retorno
Retorna o perodo de desacelerao, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3015

Biblioteca Padro

MaMethod
Retorna o mtodo da mdia.
ENUM_MA_METHOD MaMethod() const

Valor de retorno
Retorna o mtodo de mdia, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3016

Biblioteca Padro

PriceField
Retorna o tipo de preo (Low/High ou Close/Close) para aplicar.
ENUM_STO_PRICE PriceField() const

Valor de retorno
O tipo de preo para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3017

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

Kperiod,

// Averaging period of %K

int

Dperiod,

// Averaging period of %D

int

slowing,

// Slowing period

ENUM_MA_METHOD

ma_method,

// Averaging method

ENUM_STO_PRICE

price_field

// Price type to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Kperiod
[in] Perodo mdio da linha %K.
Dperiod
[in] Perodo mdio da linha %D.
slowing
[in] Perodo de desacelerao.
ma_method
[in] Mtodo de mdia (enumerador ENUM_MA_METHOD).
price_field
[in] Tipo de Preo (Low/High ou Close/Close) para aplicar (enumerador ENUM_STO_PRICE).
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3018

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

3019

Biblioteca Padro

Signal
Retorna o elemento de buffer da linha de sinal pelo ndice especificado.
double Signal(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno

Signal
Retorna o elemento de buffer da linha de sinal pelo ndice especificado.
double Signal(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha de sinal do ndice especificado, ou EMPTY_VALUE se no houver
nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

3020

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto do identificador (IND_STOCHASTIC para CiStochastic).

2000-2015, MetaQuotes Software Corp.

3021

Biblioteca Padro

CiTriX
CiTriX uma classe destinada ao uso do indicador tcnico Triple Exponential Moving Averages
Oscillator.

Descrio
A classe CiTriX prev a criao, setup e acesso aos dados do indicador Triple Exponential Moving
Averages Oscillator.

Declarao
class CiTriX: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3022

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3023

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3024

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

ma_period,

// Averaging period

int

applied

// Price type or handle

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
applied
[in] Tipo de Preo do manipulador para aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3025

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

3026

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_TRIX para Citrix).

2000-2015, MetaQuotes Software Corp.

3027

Biblioteca Padro

CiWPR
CiWPR uma classe destinada ao uso do indicador tcnico Williams' Percent Range.

Descrio
A classe CiWPR fornece a criao, setup e acesso aos dados do indicador Williams' Percent Range.

Declarao
class CiWPR: public CIndicator

Ttulo
#include <Indicators\Oscilators.mqh>

Mtodos de classe
Atributos
CalcPeriod

Retorna o perodo calculado

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3028

Biblioteca Padro

CalcPeriod
Retorna o perodo calculado.
int CalcPeriod() const

Valor de retorno
Retorna o perodo calculado, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3029

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

// Calculation period

calc_period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
calc_period
[in] Perodo para clculo.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3030

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

3031

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_WPR para CiWPR).

2000-2015, MetaQuotes Software Corp.

3032

Biblioteca Padro

Indicadores de Volume
Este grupo de captulos contm detalhes tcnicos das classes dos Indicadores de Volume da Biblioteca
Padro MQL5 e descries de todos os seus componentes fundamentais.
Classe/grupo

Descrio

CiAD

Accumulation/Distribution

CiMFI

Money Flow Index

CiOBV

On Balance Volume

CiVolumes

Volumes

2000-2015, MetaQuotes Software Corp.

3033

Biblioteca Padro

CiAD
CiAD uma classe destinada ao uso do indicador tcnico Accumulation/Distribution.

Descrio
A classe CiAD possibilita a criao, setup e acesso aos dados do indicador Accumulation/Distribution.

Declarao
class CiAD: public CIndicator

Ttulo
#include <Indicators\Volumes.mqh>

Mtodos de classe
Atributos
Applied

Retorna o tipo de volume para aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3034

Biblioteca Padro

Applied
Retorna o tipo de volume para aplicar.
ENUM_APPLIED_VOLUME Applied() const

Valor de retorno
Tipo de Volume para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3035

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES

period,

// Period

ENUM_APPLIED_VOLUME applied

// Volume type to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
applied
[in] Tipo de volume para aplicar (enumerador ENUM_APPLIED_VOLUME).
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3036

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

3037

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_AD para CiAD).

2000-2015, MetaQuotes Software Corp.

3038

Biblioteca Padro

CiMFI
CiMFI uma classe destinada ao uso do indicador tcnico Money Flow Index.

Descrio
A classe CiMFI possibilita a criao, setup e acesso aos dados do indicador Money Flow Index.

Declarao
class CiMFI: public CIndicator

Ttulo
#include <Indicators\Volumes.mqh>

Mtodos de classe
Atributos
MaPeriod

Retorna o perodo mdio

Applied

Retorna o tipo de volume para aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3039

Biblioteca Padro

MaPeriod
Retorna o perodo mdio.
int MaPeriod() const

Valor de retorno
Retorna o perodo mdio, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3040

Biblioteca Padro

Applied
Retorna o tipo de volume para aplicar.
ENUM_APPLIED_VOLUME Applied() const

Valor de retorno
Tipo de Volume para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3041

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES

period,

// Period

int

ma_period,

// Averaging period

ENUM_APPLIED_VOLUME applied

// Volume type to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
ma_period
[in] Perodo mdio.
applied
[in] Tipo de volume para aplicar (enumerador ENUM_APPLIED_VOLUME).
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3042

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

3043

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_MFI para CiMFI).

2000-2015, MetaQuotes Software Corp.

3044

Biblioteca Padro

CiOBV
CiOBV uma classe destinada ao uso do indicador tcnico On Balance Volume.

Descrio
A classe CiOBV possibilita a criao, setupo e acesso aos dados do indicador On Balance Volume.

Declarao
class CiOBV: public CIndicator

Ttulo
#include <Indicators\Volumes.mqh>

Mtodos de classe
Atributos
Applied

Retorna o tipo de volume para aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3045

Biblioteca Padro

Applied
Retorna o tipo de volume para aplicar.
ENUM_APPLIED_VOLUME Applied() const

Valor de retorno
Tipo de Volume para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3046

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES

period,

// Period

ENUM_APPLIED_VOLUME applied

// Volume type to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
applied
[in] Tipo de volume para aplicar (enumerador ENUM_APPLIED_VOLUME).
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3047

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

3048

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_OBV para CiOBV).

2000-2015, MetaQuotes Software Corp.

3049

Biblioteca Padro

CiVolumes
CiVolumes uma classe destinada ao uso do indicador tcnico Volumes.

Descrio
A classe CiVolumes posibilita a criao, setup e acesso aos dados do indicador Volumes.

Declarao
class CiVolumes: public CIndicator

Ttulo
#include <Indicators\Volumes.mqh>

Mtodos de classe
Atributos
Applied

Retorna o tipo de volume para aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3050

Biblioteca Padro

Applied
Retorna o tipo de volume para aplicar.
ENUM_APPLIED_VOLUME Applied() const

Valor de retorno
Tipo de Volume para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3051

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES

period,

// Period

ENUM_APPLIED_VOLUME applied

// Volume type to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
applied
[in] Tipo de volume para aplicar (enumerador ENUM_APPLIED_VOLUME).
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3052

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

3053

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_VOLUMES para CiVolumes).

2000-2015, MetaQuotes Software Corp.

3054

Biblioteca Padro

Indicadores Bill Williams


Este grupo de captulos contm detalhes tcnicos das classes do indicador Bill Williams da Biblioteca
Padro MQL5 e descries de todos os seus componentes fundamentais.
Classe/grupo

Descrio

CiAC

Accelerator Oscillator

CiAlligator

Alligator

CiAO

Awesome Oscillator

CiFractals

Fractals

CiGator

Gator Oscillator

CiBWMFI

Market Facilitation Index

2000-2015, MetaQuotes Software Corp.

3055

Biblioteca Padro

CiAC
CIAC uma classe do indicador tcnico Oscillator Accelerator.

Descrio
A classe CIAC fornece a criao, setup e acesso aos dados do indicador Accelerator oscilador.

Declarao
class CiAC: public CIndicator

Ttulo
#include <Indicators\BillWilliams.mqh>

Mtodos de classe
Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3056

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

ENUM_TIMEFRAMES period

// Symbol
// Period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3057

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

3058

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Objeto tipo identificado (IND_AC para CiAC).

2000-2015, MetaQuotes Software Corp.

3059

Biblioteca Padro

CiAlligator
CiAlligator uma classe do indicador tcnico Alligator.

Descrio
A classe CiAlligator fornece a criao, setup e acesso aos dados do indicador Alligator.

Declarao
class CiAlligator: public CIndicator

Ttulo
#include <Indicators\BillWilliams.mqh>

Mtodos de classe
Atributos
JawPeriod

Retorna o perodo mdio para a linha das


mandbulas (Jaws)

JawShift

Retorna o deslocamento horizontal da linha das


mandbulas (Jaws)

TeethPeriod

Retorna o perodo mdio para a linha dos


dentes (Teeths)

TeethShift

Retorna o deslocamento horizontal da linha dos


dentes (Teeths)

LipsPeriod

Retorna o perodo mdio para a linha dos lbios


(Lips)

LipsShift

Retorna o deslocamento horizontal da linha dos


lbios (Lips)

MaMethod

Retorna o mtodo de mdia

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Jaw

Retorna o elemento de buffer da linha das


mandbulas (Jaws)

Teeth

Retorna o elemento de buffer da linha dos


dentes (Teeths)

Lips

Retorna o elemento de buffer da linha dos


lbios (Lips)

2000-2015, MetaQuotes Software Corp.

3060

Biblioteca Padro

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3061

Biblioteca Padro

JawPeriod
Retorna o perodo mdio para a linha da mandbula (Jaw)
int JawPeriod() const

Valor de retorno
Retorna o perodo mdio para a linha da mandbula (Jaw), definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

3062

Biblioteca Padro

JawShift
Retorna o deslocamento horizontal da linha das mandbulas (Jaws).
int JawShift() const

Valor de retorno
Deslocamento horizontal da linha das mandbilas (Jaws), definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3063

Biblioteca Padro

TeethPeriod
Retorna o perodo mdio para a linha dos dentes (Teeth).
int TeethPeriod() const

Valor de retorno
Retorna o perodo mdio para a linha dos dentes (Teeth), definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3064

Biblioteca Padro

TeethShift
Retorna o deslocamento horizontal da linha dos dentes (Teeths).
int TeethShift() const

Valor de retorno
Deslocamento horizontal da linha dos dentes (Teeths), definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3065

Biblioteca Padro

LipsPeriod
Retorna o perodo mdio para a linha dos lbios (Lips).
int LipsPeriod() const

Valor de retorno
Retorna o perodo mdio para a linha dos lbios (Lips), definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

3066

Biblioteca Padro

LipsShift
Retorna o deslocamento horizontal da linha dos lbios (Lips).
int LipsShift() const

Valor de retorno
Deslocamento horizontal da linha dos lbios (Lips), definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3067

Biblioteca Padro

MaMethod
Retorna o mtodo da mdia.
ENUM_MA_METHOD MaMethod() const

Valor de retorno
Retorna o mtodo de mdia, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3068

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3069

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

jaw_period,

// Jaws period

int

jaw_shift,

// Jaws shift

int

teeth_period,

// Teeths period

int

teeth_shift,

// Teeths shift

int

lips_period,

// Lips period

int

lips_shift,

// Lips shift

ENUM_MA_METHOD

ma_method,

// Averaging method

int

applied

// Volume type to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
jaw_period
[in] Perodo das mandbulas (Jaws).
jaw_shift
[in] Deslocamento das mandbulas (Jaws).
teeth_period
[in] Perodo dos dentes (Teeths).
teeth_shift
[in] Deslocamento dos dentes (Teeths).
lips_period
[in] Perodo dos lbios (Lips)
lips_shift
[in] Deslocamento dos lbios (Lips).
ma_method
[in] Mtodo da mdia mvel (enumerador ENUM_MA_METHOD).
applied
[in] Tipo de volume para aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.
2000-2015, MetaQuotes Software Corp.

3070

Biblioteca Padro

Jaw
Retorna o elemento de buffer da linha das mandbulas (Jaws) pelo ndice especificado.
double Jaw(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha das mandbulas (Jaws) do ndice especificado, ou EMPTY_VALUE se
no houver nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

3071

Biblioteca Padro

Teeth
Retorna o elemento de buffer da linha dos dentes (Teeths) pelo ndice especificado.
double Teeth(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha dos dentes (Teeths) do ndice especificado, ou EMPTY_VALUE se no
houver nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

3072

Biblioteca Padro

Lips
Retorna o elemento de buffer da linha dos lbios (Lips) pelo ndice especificado.
double Lips(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer da linha dos lbios (Lips) do ndice especificado, ou EMPTY_VALUE se no
houver nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

3073

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Objeto do tipo identificador (IND_ALLIGATOR para CiAlligator).

2000-2015, MetaQuotes Software Corp.

3074

Biblioteca Padro

CiAO
CiAO uma classe do indicador tcnico Awesome Oscillator.

Descrio
A classe CiAO fornece a criao, setup e acesso aos dados do indicador Awesome Oscillator.

Declarao
class CiAO: public CIndicator

Ttulo
#include <Indicators\BillWilliams.mqh>

Mtodos de classe
Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3075

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

ENUM_TIMEFRAMES period

// Symbol
// Period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3076

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

3077

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_AO para CiAO).

2000-2015, MetaQuotes Software Corp.

3078

Biblioteca Padro

CiFractals
CiFractals uma classe do indicador tcnico Fractals.

Descrio
A classe CiFractals fornece a criao, setup e acesso aos dados do indicador Fractals.

Declarao
class CiFractals: public CIndicator

Ttulo
#include <Indicators\BillWilliams.mqh>

Mtodos de classe
Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Upper

Retorna o elemento de buffer superior

Lower

Retorna o elemento de buffer inferior

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3079

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

ENUM_TIMEFRAMES period

// Symbol
// Period

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3080

Biblioteca Padro

Upper
Retorna o elemento de buffer referente ao buffer superior pelo ndice especificado.
double Upper(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer referente ao buffer superior do ndice especificado, ou EMPTY_VALUE se no
houver nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

3081

Biblioteca Padro

Lower
Retorna o elemento de buffer referente ao buffer inferior pelo ndice especificado.
double Lower(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer referente ao buffer inferior do ndice especificado, ou EMPTY_VALUE se no
houver nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

3082

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_FRACTALS para CiFractals).

2000-2015, MetaQuotes Software Corp.

3083

Biblioteca Padro

CiGator
CiGator uma classe do indicador tcnico Gator Oscilador.

Descrio
A classe CiGator fornece a criao, setup e acesso aos dados do indicador Gator Oscilador.

Declarao
class CiGator: public CIndicator

Ttulo
#include <Indicators\BillWilliams.mqh>

Mtodos de classe
Atributos
JawPeriod

Retorna o perodo mdio para a linha das


mandbulas (Jaws)

JawShift

Retorna o deslocamento horizontal da linha das


mandbulas (Jaws)

TeethPeriod

Retorna o perodo mdio para a linha dos


dentes (Teeths)

TeethShift

Retorna o deslocamento horizontal da linha dos


dentes (Teeths)

LipsPeriod

Retorna o perodo mdio para a linha dos lbios


(Lips)

LipsShift

Retorna o deslocamento horizontal da linha dos


lbios (Lips)

MaMethod

Retorna o mtodo de mdia

Applied

Retorna o tipo de preo ou manipulador para


aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Upper

Retorna o elemento de buffer superior

Lower

Retorna o elemento de buffer inferior

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3084

Biblioteca Padro

JawPeriod
Retorna o perodo mdio para a linha das Mandbulas (Jaws).
int JawPeriod() const

Valor de retorno
Retorna o perodo mdio para a linha das Mandbulas (Jaws), definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

3085

Biblioteca Padro

JawShift
Retorna o deslocamento horizontal da linha das mandbulas (Jaws).
int JawShift() const

Valor de retorno
Deslocamento horizontal da linha das mandbilas (Jaws), definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3086

Biblioteca Padro

TeethPeriod
Retorna o perodo mdio para a linha dos dentes (Teeth).
int TeethPeriod() const

Valor de retorno
Retorna o perodo mdio para a linha dos dentes (Teeth), definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3087

Biblioteca Padro

TeethShift
Retorna o deslocamento horizontal da linha dos dentes (Teeths).
int TeethShift() const

Valor de retorno
Deslocamento horizontal da linha dos dentes (Teeths), definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3088

Biblioteca Padro

LipsPeriod
Retorna o perodo mdio para a linha dos lbios (Lips).
int LipsPeriod() const

Valor de retorno
Retorna o perodo mdio para a linha dos lbios (Lips), definido na criao indicador.

2000-2015, MetaQuotes Software Corp.

3089

Biblioteca Padro

LipsShift
Retorna o deslocamento horizontal da linha dos lbios (Lips).
int LipsShift() const

Valor de retorno
Deslocamento horizontal da linha dos lbios (Lips), definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3090

Biblioteca Padro

MaMethod
Retorna o mtodo da mdia.
ENUM_MA_METHOD MaMethod() const

Valor de retorno
Retorna o mtodo de mdia, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3091

Biblioteca Padro

Applied
Retorna o tipo de preo ou manipulador para aplicar.
int Applied() const

Valor de retorno
Tipo de preo ou manipulador para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3092

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES period,

// Period

int

jaw_period,

// Jaws period

int

jaw_shift,

// Jaws shift

int

teeth_period,

// Teeths period

int

teeth_shift,

// Teeths shift

int

lips_period,

// Lips period

int

lips_shift,

// Lips shift

ENUM_MA_METHOD

ma_method,

// Averaging method

int

applied

// Volume type to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
jaw_period
[in] Perodo das mandbulas (Jaws).
jaw_shift
[in] Deslocamento das mandbulas (Jaws).
teeth_period
[in] Perodo dos dentes (Teeths).
teeth_shift
[in] Deslocamento dos dentes (Teeths).
lips_period
[in] Perodo dos lbios (Lips)
lips_shift
[in] Deslocamento dos lbios (Lips).
ma_method
[in] Mtodo de mdia (enumerador ENUM_MA_METHOD).
applied
[in] Tipo de volume para aplicar.
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.
2000-2015, MetaQuotes Software Corp.

3093

Biblioteca Padro

Upper
Retorna o elemento de buffer referente ao buffer superior pelo ndice especificado.
double Upper(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer referente ao buffer superior do ndice especificado, ou EMPTY_VALUE se no
houver nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

3094

Biblioteca Padro

Lower
Retorna o elemento de buffer referente ao buffer inferior pelo ndice especificado.
double Upper(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
O elemento de buffer referente ao buffer inferior do ndice especificado, ou EMPTY_VALUE se no
houver nenhum dado correto.

2000-2015, MetaQuotes Software Corp.

3095

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_GATOR para CiGator).

2000-2015, MetaQuotes Software Corp.

3096

Biblioteca Padro

CiBWMFI
CiBWMFI uma classe do ndice de Facilitao do Mercado pelo indicador tcnico Bill Williams.

Descrio
A classe CiBWMFI fornece a criao, setup e acesso aos dados do ndice de Facilitao do Mercado pelo
indicador tcnico Bill Williams.

Declarao
class CiBWMFI: public CIndicator

Ttulo
#include <Indicators\BillWilliams.mqh>

Mtodos de classe
Atributos
Applied

Retorna o tipo de volume para aplicar

Mtodos de Criao
Create

Cria o indicador

Mtodos de Acesso aos Dados


Main

Retorna o elemento de buffer

Entrada/sada
virtual Type

Retorna o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3097

Biblioteca Padro

Applied
Retorna o tipo de volume para aplicar.
ENUM_APPLIED_VOLUME Applied() const

Valor de retorno
Tipo de Volume para aplicar, definido na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3098

Biblioteca Padro

Create
Cria o indicador com parmetros especficos. Use Refresh() e GetData() para atualizar e obter os
valores do indicador.
bool Create(
string

symbol,

// Symbol

ENUM_TIMEFRAMES

period,

// Period

ENUM_APPLIED_VOLUME applied

// Volume type to apply

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
applied
[in] Tipo de volume para aplicar (enumerao ENUM_APPLIED_VOLUME).
Valor de retorno
verdadeiro se teve sucesso, falso se o indicador no foi criado.

2000-2015, MetaQuotes Software Corp.

3099

Biblioteca Padro

Main
Retorna o elemento de buffer pelo ndice especificado
double Main(
int index

// Index

Parmetros
index
[in] ndice do elemento.
Valor de retorno
Elemento de buffer do ndice especificado se tiver sucesso, ou EMPTY_VALUE se no houver nenhum
dado correto.

2000-2015, MetaQuotes Software Corp.

3100

Biblioteca Padro

Type
Retorna o objeto tipo "identifier".
virtual int Type() const

Valor de retorno
Tipo de objeto identificador(IND_BWMFI para CiBWMFI).

2000-2015, MetaQuotes Software Corp.

3101

Biblioteca Padro

CiCustom
CiCustom uma classe destinada ao uso dos indicadores tcnicos personalizados.

Descrio
A classe CiCustom fornece a criao, setup e acesso aos dados do indicador personalizado.

Declarao
class CiCustom: public CIndicator

Ttulo
#include <Indicators\Custom.mqh>

Mtodos de classe
Atributos
NumBuffers

Define o nmero de buffers

NumParams

Obtm o nmero de parmetros

ParamType

Obtm o tipo do parmetro especificado

ParamLong

Obtm o valor do parmetro especificado do


tipo integer

ParamDouble

Obtm o valor do parmetro especificado do


tipo double

ParamString

Obtm o valor do parmetro especificado do


tipo string

Entrada/sada
virtual Type

Obtm o identificador do tipo de objeto

2000-2015, MetaQuotes Software Corp.

3102

Biblioteca Padro

NumBuffers
Define o nmero de buffers.
bool NumBuffers(
int buffers

// number of buffers

Valor de retorno
verdadeiro se teve sucesso, falso se os buffers no foram definidas.

2000-2015, MetaQuotes Software Corp.

3103

Biblioteca Padro

NumParams
Obtm o nmero de parmetros.
int NumParams() const

Valor de retorno
Nmero de parmetros, utilizados na criao do indicador.

2000-2015, MetaQuotes Software Corp.

3104

Biblioteca Padro

ParamType
Obtm um tipo de parmetro com o ndice especificado.
ENUM_DATATYPE ParamType(
int index

// parameter index

) const

Parmetros
index
[in] ndice de parmetros.
Valor de retorno
Retorna o tipo de dados (valor do enumerador ENUM_DATATYPE) do parmetro com o ndice
especificado, utilizado na criao do indicador.
Observao
Se o ndice do parmetro invlido, retorna WRONG_VALUE.

2000-2015, MetaQuotes Software Corp.

3105

Biblioteca Padro

ParamLong
Obtm o valor do parmetro especificado do tipo long.
long ParamLong(
int index

// index

) const

Parmetros
index
[in] ndice de parmetros.
Valor de retorno
O valor do parmetro especificado do tipo long, utilizada na criao do indicador.
Observao
Se o nmero for invlido, ele retorna 0.

2000-2015, MetaQuotes Software Corp.

3106

Biblioteca Padro

ParamDouble
Obtm o valor do parmetro especificado do tipo double.
double ParamDouble(
int index

// index

) const

Parmetros
index
[in] ndice de parmetros.
Valor de retorno
O valor do parmetro especificado do tipo double, usado na criao do indicador
Observao
Se o nmero for invlido, ele retorna EMPTY_VALUE.

2000-2015, MetaQuotes Software Corp.

3107

Biblioteca Padro

ParamString
Obtm o valor do parmetro especificado do tipo string.
string ParamString(
int index

// index

) const

Parmetros
index
[in] ndice de parmetros.
Valor de retorno
O valor do parmetro especificado do tipo string, utilizado para a criao do indicador.
Observao
Se o nmero for invlido, retorna uma string vazia.

2000-2015, MetaQuotes Software Corp.

3108

Biblioteca Padro

Type
Retorna o objeto do tipo identifier.
virtual int Type() const

Valor de retorno
Tipo de objeto identificador (IND_CUSTOM para CiCustom).

2000-2015, MetaQuotes Software Corp.

3109

Biblioteca Padro

Classes de negociao
Esta seo contm detalhes tcnicos de como trabalhar com classes de negociao e descrio dos
componentes principais da biblioteca padro MQL5.
Usando as classes de negociao ser economizado tempo ao criar programas personalizados (Expert
Advisors).
A Biblioteca Padro MQL5 (em termos de conjuntos de dados) alocado no diretrio de trabalho do
terminal, na pasta Include\Arrays.
Class/Group

Descrio

CAccountInfo

Classe para trabalhar com propriedades da


conta de negociao

CSymbolInfo

Classe para trabalhar com propriedades de


instrumentos de negociao

COrderInfo

Classe para trabalhar com propriedades de


ordens pendentes

CHistoryOrderInfo

Classe para trabalhar com propriedades do


histrico das ordens

CPositionInfo

Classe para trabalhar com propriedades da


abertura de posio

CDealInfo

Classe para trabalhar com propriedades do


histrico de ofertas

CTrade

Classe para a execuo de operaes de


negociao

CTerminalInfo

Classe para obter as propriedades de ambiente


do programa MQL5

2000-2015, MetaQuotes Software Corp.

3110

Biblioteca Padro

CAccountInfo
CAccountInfo uma classe para facilitar o acesso s propriedades da conta de negociao atualmente
abertas.

Descrio
CAccountInfo classe fornece acesso fcil s propriedades da conta de negociao atualmente abertas.

Declarao
class CAccountInfo : public CObject

Ttulo
#include <Trade\AccountInfo.mqh>

Mtodos de classe pelos grupos


O acesso a propriedades do tipo integer
Login

Obtm o nmero de conta

TradeMode

Obtm o modo de negociao

TradeModeDescription

Obtm o modo de negociao como uma string

Leverage

Obtm a
disposio

MarginMode

Obtm o modo "stop out" da conta

MarginModeDescription

Obtm a descrio modo "stop out" da conta

TradeAllowed

Obtm o flag de retorno da negociao

TradeExpert

Obtm o flag de retorno da


automatizada

LimitOrders

Obtm o nmero mximo das ordens pendentes


permitidas

quantidade

de

alavancagem

negociao

O acesso a propriedades do tipo double


Balance

Obtm o saldo da conta

Credit

Obtm a quantidade de crdito recebido

Profit

Obtm a quantidade de lucro corrente na conta

Equity

Obtm a quantidade atual de capital lquido na


conta

Margin

Obtm o valor da margem reservada

FreeMargin

Obtm a quantidade de margem livre

MarginLevel

Obtm o nvel de margem

2000-2015, MetaQuotes Software Corp.

3111

Biblioteca Padro

MarginCall

Obtm o nvel de margem para depsito

MarginStopOut

Obtm o nvel de margem para Stop Out

O acesso a propriedades de texto


Name

Obtm o nome do cliente

Servidor

Obtm o nome do servidor de negociao

Currency

Obtm o nome da moeda de depsito

Company

Obtm o nome da empresa, que serve uma


conta

Acesso a funes API MQL5


InfoInteger

Obtm o valor especfico da propriedade tipo


integer

InfoDouble

Obtm valor especfico da propriedade tipo


double

InfoString

Obtm valor especfico da propriedade tipo


string

Mtodos adicionais
OrderProfitCheck

Obtm o lucro avaliado,


parmetros transmitidos

MarginCheck

Obtm a quantidade de margem que


necessria para executar operao
de
negociao

FreeMarginCheck

Obtm a quantidade de margem livre


remanescente aps a execuo da operao de
negociao

MaxLotCheck

Obtm o volume mximo possvel da operao


de negociao

2000-2015, MetaQuotes Software Corp.

com

base

nos

3112

Biblioteca Padro

Login
Obtm o nmero da conta.
long Login() const

Valor de retorno
Nmero da conta.

2000-2015, MetaQuotes Software Corp.

3113

Biblioteca Padro

TradeMode
Obtm o modo de negociao.
ENUM_ACCOUNT_TRADE_MODE TradeMode() const

Valor de retorno
Modo de negociao (valor do enumerador ENUM_ACCOUNT_TRADE_MODE).

2000-2015, MetaQuotes Software Corp.

3114

Biblioteca Padro

TradeModeDescription
Obtm o modo de negociao como uma string.
string TradeModeDescription() const

Valor de retorno
Modo de negociao como uma string.

2000-2015, MetaQuotes Software Corp.

3115

Biblioteca Padro

Leverage
Obtm a quantidade de alavancagem a disposio.
long Leverage() const

Valor de retorno
Quantidade de alavancagem a disposio.

2000-2015, MetaQuotes Software Corp.

3116

Biblioteca Padro

MarginMode
Obtm o modo Stop Out (sada forada) da conta .
ENUM_ACCOUNT_STOPOUT_MODE MarginMode() const

Valor de retorno
O modo Stop Out da Conta (Valor do enumerador ENUM_ACCOUNT_STOPOUT_MODE).

2000-2015, MetaQuotes Software Corp.

3117

Biblioteca Padro

MarginModeDescription
Obtm o modo de definir o nvel da margem mnima como uma string.
string MarginModeDescription() const

Valor de retorno
Modo de configurao do nvel da margem mnima como uma string.

2000-2015, MetaQuotes Software Corp.

3118

Biblioteca Padro

TradeAllowed
Obtm o flag de retorno da negociao.
bool TradeAllowed() const

Valor de retorno
Flag de retorno da negociao.

2000-2015, MetaQuotes Software Corp.

3119

Biblioteca Padro

TradeExpert
Obtm o flag de retorno da negociao automatizada.
bool TradeExpert() const

Valor de retorno
Flag de retorno da negociao automatizada.

2000-2015, MetaQuotes Software Corp.

3120

Biblioteca Padro

LimitOrders
Obtm o nmero mximo das ordens pendentes permitidas
int LimitOrders() const

Valor de retorno
O nmero mximo das ordens pendentes permitidas.
Observao
0 - sem limites.

2000-2015, MetaQuotes Software Corp.

3121

Biblioteca Padro

Balance
Obtm o saldo da conta.
double Balance() const

Valor de retorno
O saldo da conta (em moeda de depsito).

2000-2015, MetaQuotes Software Corp.

3122

Biblioteca Padro

Credit
Obtm a quantidade de crdito a disposio.
double Credit() const

Valor de retorno
Quantidade de crdito a disposio (em moeda de depsito).

2000-2015, MetaQuotes Software Corp.

3123

Biblioteca Padro

Profit
Obtm o montante do lucro atualizado na conta.
double Profit() const

Valor de retorno
Montante do lucro atualizado na conta (em moeda de depsito).

2000-2015, MetaQuotes Software Corp.

3124

Biblioteca Padro

Equity
Obtm a quantidade atual de capital lquido na conta.
double Equity() const

Valor de retorno
Quantidade atual de capital lquido na conta (em moeda de depsito).

2000-2015, MetaQuotes Software Corp.

3125

Biblioteca Padro

Margin
Obtm o valor da margem reservada.
double Margin() const

Valor de retorno
Valor da margem reservada (em moeda de depsito).

2000-2015, MetaQuotes Software Corp.

3126

Biblioteca Padro

FreeMargin
Obtm a quantidade de margem livre.
double FreeMargin() const

Valor de retorno
Quantidade de margem livre (em moeda de depsito).

2000-2015, MetaQuotes Software Corp.

3127

Biblioteca Padro

MarginLevel
Obtm o nvel de margem.
double MarginLevel() const

Valor de retorno
Nvel de margem.

2000-2015, MetaQuotes Software Corp.

3128

Biblioteca Padro

MarginCall
Obtm o nvel de margem para um depsito.
double MarginCall() const

Valor de retorno
Nvel de margem para um depsito.

2000-2015, MetaQuotes Software Corp.

3129

Biblioteca Padro

MarginStopOut
Obtm o nvel de margem para Stop Out (sada forada).
double MarginStopOut() const

Valor de retorno
Nvel de margem para Stop Out.

2000-2015, MetaQuotes Software Corp.

3130

Biblioteca Padro

Name
Obtm o nome do cliente.
string Name() const

Valor de retorno
Nome do cliente.

2000-2015, MetaQuotes Software Corp.

3131

Biblioteca Padro

Servidor
Obtm o nome do servidor de negociao.
string Server() const

Valor de retorno
Nome do servidor de negociao.

2000-2015, MetaQuotes Software Corp.

3132

Biblioteca Padro

Currency
Obtm o nome da moeda de depsito.
string Currency() const

Valor de retorno
Nome da moeda de depsito.

2000-2015, MetaQuotes Software Corp.

3133

Biblioteca Padro

Company
Obtm o nome da empresa, que serve uma conta.
string Company() const

Valor de retorno
Nome da empresa, que serve uma conta.

2000-2015, MetaQuotes Software Corp.

3134

Biblioteca Padro

InfoInteger
Obtm o valor especfico da propriedade tipo integer.
long InfoInteger(
ENUM_ACCOUNT_INFO_INTEGER prop_id

// property ID

) const

Parmetros
prop_id
[in]
Identificador da propriedade. O valor pode ser um dos valores do enumerador
ENUM_ACCOUNT_INFO_INTEGER.
Valor de retorno
Valor de tipo long.

2000-2015, MetaQuotes Software Corp.

3135

Biblioteca Padro

InfoDouble
Obtm o valor especfico da propriedade do tipo double.
double InfoDouble(
ENUM_ACCOUNT_INFO_DOUBLE prop_id

// property ID

) const

Parmetros
prop_id
[in]
Identificador da propriedade. O valor pode ser um dos valores do enumerador
ENUM_ACCOUNT_INFO_DOUBLE.
Valor de retorno
Valor de tipo double.

2000-2015, MetaQuotes Software Corp.

3136

Biblioteca Padro

InfoString
Obtm o valor especfico da propriedade tipo string.
string InfoString(
ENUM_ACCOUNT_INFO_STRING prop_id

// property ID

) const

Parmetros
prop_id
[in]
Identificador da propriedade. O valor pode ser um dos valores do enumerador
ENUM_ACCOUNT_INFO_STRING.
Valor de retorno
Valor de tipo string.

2000-2015, MetaQuotes Software Corp.

3137

Biblioteca Padro

OrderProfitCheck
A funo calcula o lucro para a conta corrente, com base nos parmetros transmitidos. A funo
usada para pr-avaliao do resultado de uma operao de negociao. O valor retornado na moeda
da conta.
double OrderProfitCheck(
const string

symbol,

// symbol

ENUM_ORDER_TYPE

trade_operation,

// operation type (ORDER_TYPE_BUY or ORDER_TYPE_SELL)

double

volume,

// volume

double

price_open,

// open price

double

price_close

// close price

) const

Parmetros
symbol
[in] Smbolo para a operao de negociao.
trade_operation
[in] Tipo de operao de negociao (enumerador ENUM_ORDER_TYPE ).
volume
[in] Volume de operao de negociao.
price_open
[in] Preo de abertura.
price_close
[in] Preo de Fechamento.
Valor de retorno
Se for bem sucedido, retorna o montante do lucro ou EMPTY_VALUE em caso de erro.

2000-2015, MetaQuotes Software Corp.

3138

Biblioteca Padro

MarginCheck
Obtm a quantidade de margem que necessria para o funcionamento da negociao.
double MarginCheck(
const string

symbol,

// symbol

ENUM_ORDER_TYPE

trade_operation,

// operation

double

volume,

// volume

double

price

// price

) const

Parmetros
symbol
[in] Smbolo para a operao de negociao.
trade_operation
[in] Tipo de operao de negociao (enumerador ENUM_ORDER_TYPE).
volume
[in] Volume de operao de negociao.
price
[in] Preo de operao de negociao.
Valor de retorno
Quantidade de margem que necessria para o funcionamento da negociao.

2000-2015, MetaQuotes Software Corp.

3139

Biblioteca Padro

FreeMarginCheck
Obtm a quantidade de margem livre remanescente aps a operao de negociao.
double FreeMarginCheck(
const string
ENUM_ORDER_TYPE

symbol,
trade_operation,

// symbol
// operation

double

volume,

// volume

double

price

// price

) const

Parmetros
symbol
[in] Smbolo para a operao de negociao.
trade_operation
[in] Tipo de operao de negociao (enumerador ENUM_ORDER_TYPE).
volume
[in] Volume de operao de negociao.
price
[in] Preo de operao de negociao.
Valor de retorno
Quantidade de margem livre remanescente aps a operao de negociao.

2000-2015, MetaQuotes Software Corp.

3140

Biblioteca Padro

MaxLotCheck
Obtm o volume mximo possvel da operao de negociao.
double MaxLotCheck(
const string

symbol,

// symbol

ENUM_ORDER_TYPE

trade_operation,

// operation

double

price,

// price

double

percent=100

// percent of available margin (0-100%), used for trade

) const

Parmetros
symbol
[in] Smbolo para a operao de negociao.
trade_operation
[in] Tipo de operao de negociao (enumeradorENUM_ORDER_TYPE).
price
[in] Preo de operao de negociao.
percent=100
[in] Porcentagem da margem disponvel (0-100%), usado para operao de negociao.
Valor de retorno
O volume mximo possvel da operao de negociao.

2000-2015, MetaQuotes Software Corp.

3141

Biblioteca Padro

CSymbolInfo
CSymbolInfo uma classe para facilitar o acesso s propriedades do smbolo (ativo).

Descrio
A classe CSymbolInfo fornece acesso s propriedades do smbolo.

Declarao
class CSymbolInfo : public CObject

Ttulo
#include <Trade\SymbolInfo.mqh>

Mtodos de classe pelos grupos


Controlador
Refresh

Atualiza os dados do smbolo

RefreshRates

Atualiza as cotaes do smbolo

Propriedades
Name

Obtm/define o nome do smbolo

Select

Obtm/define o flag do smbolo da "Observao


do Mercado" (Market Watch)

IsSynchronized

Verifica a sincronizao do smbolo com o


servidor

Volumes
Volume

Obtm o volume da ltima oferta

VolumeHigh

Obtm o volume mximo para um dia

VolumeLow

Obtm o volume mnimo para um dia

Miscelneas
Time

Obtm o tempo da ltima cotao

Spread

Obtm o valor do spread (em pontos)

SpreadFloat

Obtm o flag do spread flutuante

TicksBookDepth

Obtm a profundidade de ticks salvos (Livro de


Ofertas)

Nveis
StopsLevel

Obtm o nvel de stop mnimo para as ordens


(em pontos)

2000-2015, MetaQuotes Software Corp.

3142

Biblioteca Padro

FreezeLevel

Obtm a distncia das operaes de negociao


congeladas (em pontos)

Preos Bid
Bid

Obtm a atualizao do preo Bid (preo de


compra de quem entra vendido numa posio)

BidHigh

Obtm a mxima do preo Bid para um dia

BidLow

Obtm a mnima do preo Bid para um dia

Preos Ask
Ask

Obtm a atualizao do preo Ask (preo de


venda de quem entra comprado numa posio)

AskHigh

Obtm a mxima do preo Ask para um dia

AskLow

Obtm a mnima do preo Ask para um dia

Preos
Last

Obtm a atualizao do preo Last (o ltimo


preo)

LastHigh

Obtm a mxima do preo Last para um dia

LastLow

Obtm a mnima do preo Last para um dia

Modos de negociao
TradeCalcMode

Obtm o modo de clculo dos custos do contrato

TradeCalcModeDescription

Obtm o modo de clculo dos custos do contrato


como uma string

TradeMode

Obtm o tipo de execuo das ordens

TradeModeDescription

Obtm o tipo de execuo de ordens como uma


string

TradeExecution

Obtm o fechamento de modo de ofertas

TradeExecutionDescription

Obtm o fechamento de modo de ofertas como


uma string

Swaps
SwapMode

Obtm o modelo de clculo Swap

SwapModeDescription

Obtm o modelo de clculo Swap como uma


string

SwapRollover3days

Obtm o dia do custo swap triplo

SwapRollover3daysDescription

Obtm o dia do custo swap triplo como uma


string

Margens e flags
MarginInitial

Obtm o valor da margem inicial

2000-2015, MetaQuotes Software Corp.

3143

Biblioteca Padro

MarginMaintenance

Obtm o valor da margem de manuteno

MarginLong

Obtm a taxa de margem necessria para


posies compradas

MarginShort

Obtm a taxa de margem necessria para


posies vendidas

MarginLimit

Obtm a taxa de margem necessria para


ordens do tipo Limit

MarginStop

Obtm a taxa de margem necessria para


ordens do tipo Stop

MarginStopLimit

Obtm a taxa de margem necessria para


ordens do tipo StopLimit

TradeTimeFlags

Obtm os flags dos modos de validade das


ordens permitidas

TradeFillFlags

Obtm os flags dos modos de preenchimento


das ordens permitidas

Quantizao
Digits

Obtm o nmero de dgitos aps o perodo

Point

Obtm o valor de um ponto

TickValue

Obtm o custo do tick (alterao mnima de


preo)

TickValueProfit

Obtm o preo do tick calculado para uma


posio lucrativa

TickValueLoss

Obtm o preo do tick calculado para uma


posio perdedora

TickSize

Obtm a alterao mnima de preo

Tamanhos dos contratos


ContractSize

Obtm a quantidade de contrato da negociao

LotsMin

Obtm o volume mnimo para fechar uma


oferta

LotsMax

Obtm o volume mximo para fechar uma


oferta

LotsStep

Obtm o passo mnimo de variao de volume


para fechar uma oferta

LotsLimit

Obtm o volume mximo permitido de posies


abertas e ordens pendentes (direo insensvel)
para um smbolo

Tamanhos de Swaps
SwapLong

Obtm o valor swap da posio comprada

2000-2015, MetaQuotes Software Corp.

3144

Biblioteca Padro

SwapShort

Obtm o valor swap da posio vendida

Propriedades de texto
CurrencyBase

Obtm o nome da moeda do smbolo base

CurrencyProfit

Obtm o nome da moeda de lucro

CurrencyMargin

Obtm o nome da moeda de margem

Bank

Obtm o nome da fonte da cotao atual

Descrio

Obtm a descrio da string do smbolo

Path

Obtm o caminho do diretrio dos smbolos

Propriedades do smbolo
SessionDeals

Obtm o nmero de ofertas na sesso atual

SessionBuyOrders

Obtm o nmero de ordens de Compra no


momento

SessionSellOrders

Obtm o nmero de ordens de Venda no


momento

SessionTurnover

Obtm o resumo do volume de negcios da


sesso atual

SessionInterest

Obtm o resumo dos contratos em aberto da


sesso atual

SessionBuyOrdersVolume

Obtm o atual volume de ordens de compra

SessionSellOrdersVolume

Obtm o atual volume das ordens de Venda

SessionOpen

Obtm o preo de abertura da sesso atual

SessionClose

Obtm o preo de fechamento da sesso atual

SessionAW

Obtm a mdia ponderada do preo da sesso


atual

SessionPriceSettlement

Obtm o preo da liquidao da sesso atual

SessionPriceLimitMin

Obtm o preo mnimo da sesso atual

SessionPriceLimitMax

Obtm o preo mximo da sesso atual

Acesso a funes API MQL5


InfoInteger

Obtm o valor especfico da propriedade tipo


integer

InfoDouble

Obtm valor especfico da propriedade tipo


double

InfoString

Obtm o valor especfico da propriedade tipo


string

Funes de servio

2000-2015, MetaQuotes Software Corp.

3145

Biblioteca Padro

NormalizePrice

Retorna o valor do preo, normalizado e


utilizando as propriedades do smbolo

2000-2015, MetaQuotes Software Corp.

3146

Biblioteca Padro

Refresh
Atualiza os dados do smbolo.
void Refresh()

Valor de retorno
Nenhum.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3147

Biblioteca Padro

RefreshRates
Atualiza os dados das cotaes dos smbolos.
bool RefreshRates()

Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel atualizar cotaes.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3148

Biblioteca Padro

Name
Obtm nome do smbolo (ativo).
string Name() const

Valor de retorno
Nome do smbolo.

Name
Define o nome do smbolo.
bool Name(string name)

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3149

Biblioteca Padro

Select
Obtm o flag do smbolo da "Observao do Mercado" (Market Watch).
bool Select() const

Valor de retorno
Obtm o flag do smbolo da "Observao do Mercado" (Market Watch)

Select
Define o flag do smbolo da "Observao do Mercado" (Market Watch).
bool Select()

Valor de retorno
verdadeiro - em caso de sucesso, falso - se for incapaz de mudar o flag.

2000-2015, MetaQuotes Software Corp.

3150

Biblioteca Padro

IsSynchronized
Verifica a sincronizao do smbolo com o servidor .
bool IsSynchronized() const

Valor de retorno
verdadeiro - se o smbolo sincronizado com o servidor, falso - se no.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3151

Biblioteca Padro

Volume
Obtm o ltimo volume de negcio.
long Volume() const

Valor de retorno
Volume de ltimo negcio.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3152

Biblioteca Padro

VolumeHigh
Obtm o volume mximo do dia.
long VolumeHigh() const

Valor de retorno
O volume mximo do dia.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3153

Biblioteca Padro

VolumeLow
Obtm o volume mnimo do dia.
long VolumeLow() const

Valor de retorno
Volume mnimo do dia.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3154

Biblioteca Padro

Time
Obtm o tempo da ltima cotao.
datetime Time() const

Valor de retorno
Tempo da ltima cotao.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3155

Biblioteca Padro

Spread
Obtm o valor de spread (em pontos).
int Spread() const

Valor de retorno
Obtm o valor de spread (em pontos).
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3156

Biblioteca Padro

SpreadFloat
Obtm o flag do spread flutuante.
bool SpreadFloat() const

Valor de retorno
Flag do spread flutuante.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3157

Biblioteca Padro

TicksBookDepth
Obtm a profundidade dos ticks salvos (Livro de Ofertas).
int TicksBookDepth() const

Valor de retorno
Profundidade dos ticks salvos.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3158

Biblioteca Padro

StopsLevel
Obtm o nvel de stop mnimo para as ordens (em pontos).
int StopsLevel() const

Valor de retorno
O nvel de stop mnimo para as ordens (em pontos).
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3159

Biblioteca Padro

FreezeLevel
Obtm o nvel de congelamento (em pontos).
int FreezeLevel() const

Valor de retorno
Distncia do nvel de congelamento (em pontos).
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3160

Biblioteca Padro

Bid
Obtm a atualizao do preo Bid (preo de compra para quem entra vendido numa posio)
double Bid() const

Valor de retorno
Preo de compra Bid.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3161

Biblioteca Padro

BidHigh
Obtm a mxima do preo Bid para um dia.
double BidHigh() const

Valor de retorno
A mxima do preo Bid para um dia.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3162

Biblioteca Padro

BidLow
Obtm a mnima do preo Bid para um dia.
double BidLow() const

Valor de retorno
A mnima do preo Bid para um dia
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3163

Biblioteca Padro

Ask
Obtm a atualizao do preo Ask (preo de venda para quem entra comprado numa posio).
double Ask() const

Valor de retorno
Atualizao do preo Ask.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3164

Biblioteca Padro

AskHigh
Obtm a mxima do preo Ask para um dia.
double AskHigh() const

Valor de retorno
Obtm a mxima do preo Ask para um dia.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3165

Biblioteca Padro

AskLow
Obtm a mnima do preo Ask para um dia.
double AskLow() const

Valor de retorno
Mnima do preo Ask para um dia.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3166

Biblioteca Padro

Last
Obtm a atualizao do preo Last (o ltimo preo).
double Last() const

Valor de retorno
Atualizao do preo Last.

2000-2015, MetaQuotes Software Corp.

3167

Biblioteca Padro

LastHigh
Obtm a mxima do preo Last para um dia.
double LastHigh() const

Valor de retorno
A mxima do preo Last para um dia.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3168

Biblioteca Padro

LastLow
Obtm a mnima do preo Last para um dia
double LastLow() const

Valor de retorno
A mnima do preo Last para um dia.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3169

Biblioteca Padro

TradeCalcMode
Obtm o modo de clculo dos custos do contrato.
ENUM_SYMBOL_CALC_MODE TradeCalcMode() const

Valor de retorno
Modo de clculo do custo do contrato (valor do enumerador ENUM_SYMBOL_CALC_MODE).
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3170

Biblioteca Padro

TradeCalcModeDescription
Obtm o modo de clculo dos custos do contrato como uma string.
string TradeCalcModeDescription() const

Valor de retorno
Modo de clculo do custo do contrato como uma string.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3171

Biblioteca Padro

TradeMode
Obtm o tipo de execuo de ordens.
ENUM_SYMBOL_TRADE_MODE TradeMode() const

Valor de retorno
Tipo de execuo de ordens (valor do enumerador ENUM_SYMBOL_TRADE_MODE).
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3172

Biblioteca Padro

TradeModeDescription
Obtm o modo de negociao como uma string.
string TradeModeDescription() const

Valor de retorno
Modo de negociao como uma string.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3173

Biblioteca Padro

TradeExecution
Obtm o modo de execuo da negociao.
ENUM_SYMBOL_TRADE_EXECUTION TradeExecution() const

Valor de retorno
Modo de execuo da negociao (valor do enumerador ENUM_SYMBOL_TRADE_EXECUTION).
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3174

Biblioteca Padro

TradeExecutionDescription
Obtm a descrio do modo de execuo da negociao como uma string.
string TradeExecutionDescription() const

Valor de retorno
Modo de execuo da negociao como uma string.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3175

Biblioteca Padro

SwapMode
Obtm o modo de clculo Swap.
ENUM_SYMBOL_SWAP_MODE SwapMode() const

Valor de retorno
Modo de clculo swap (valor do enumerador ENUM_SYMBOL_SWAP_MODE).
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3176

Biblioteca Padro

SwapModeDescription
Obtm a descrio do modo swap como uma string.
string SwapModeDescription() const

Valor de retorno
Descrio do modo swap como uma string.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3177

Biblioteca Padro

SwapRollover3days
Obtm o dia do rolamento swap.
ENUM_DAY_OF_WEEK SwapRollover3days() const

Valor de retorno
Dia do rolamento swap (valor do enumerador ENUM_DAY_OF_WEEK).
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3178

Biblioteca Padro

SwapRollover3daysDescription
Obtm o dia do rolamente swap como uma string.
string SwapRollover3daysDescription() const

Valor de retorno
Dia do rolamento swap como uma string.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3179

Biblioteca Padro

MarginInitial
Obtm o valor da margem inicial.
double MarginInitial()

Valor de retorno
Valor da margem inicial.
Observao
Ele aponta a quantidade de margem (em moeda de margem do instrumento) que analisada de um
lote. Usado para verificar patrimnio do cliente, quando ele entra no mercado.
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3180

Biblioteca Padro

MarginMaintenance
Obtm o valor da margem de manuteno.
double MarginMaintenance()

Valor de retorno
Valor da margem de manuteno.
Observao
Ele aponta a quantidade de margem (em moeda de margem do instrumento) que analisada de um
lote. Usado para verificar o patrimnio lquido do cliente, quando o estado da conta for alterada. Se
a margem de manuteno igual a 0, ento a margem inicial usada.
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3181

Biblioteca Padro

MarginLong
Obtm a taxa de margem necessria para posies compradas.
double MarginLong() const

Valor de retorno
Taxa de margem necessria para posies compradas.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3182

Biblioteca Padro

MarginShort
Obtm a taxa de margem necessria para posies vendidas.
double MarginShort() const

Valor de retorno
Taxa de margem de necessria para posies vendidas.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3183

Biblioteca Padro

MarginLimit
Obtm a taxa de margem necessria para ordens do tipo Limit.
double MarginLimit() const

Valor de retorno
Taxa de margem necessria para ordens do tipo Limit.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3184

Biblioteca Padro

MarginStop
Obtm a taxa de margem necessria para ordens do tipo Stop.
double MarginStop() const

Valor de retorno
Taxa de margem necessria para ordens do tipo Stop.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3185

Biblioteca Padro

MarginStopLimit
Obtm a taxa de margem necessria para ordens do tipo StopLimit.
double MarginStopLimit() const

Valor de retorno
Taxa de margem necessria para ordens do tipo StopLimit.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3186

Biblioteca Padro

TradeTimeFlags
Obtm os flags dos modos de validade das ordens permitidas.
int TradeTimeFlags() const

Valor de retorno
Flags dos modos de validade das ordens permitidas.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3187

Biblioteca Padro

TradeFillFlags
Obtm os flags dos modos de preenchimento das ordens permitidas.
int TradeFillFlags() const

Valor de retorno
Flags dos modos de preenchimento das ordens permitidas.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3188

Biblioteca Padro

Digits
Obtm o nmero de dgitos aps perodo.
int Digits() const

Valor de retorno
Obtm o nmero de dgitos aps perodo.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3189

Biblioteca Padro

Point
Obtm o valor de um ponto.
double Point() const

Valor de retorno
Valor de um ponto.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3190

Biblioteca Padro

TickValue
Obtm o custo do tick (alterao mnima de preo).
double TickValue() const

Valor de retorno
Custo do tick (alterao mnima de preo).
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3191

Biblioteca Padro

TickValueProfit
Obtm o preo do tick calculado para uma posio lucrativa.
double TickValueProfit() const

Valor de retorno
O preo do tick calculado para uma posio lucrativa.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3192

Biblioteca Padro

TicksBookDepth
Obtm o preo do tick calculado para uma posio perdedora.
double TicksBookDepth() const

Valor de retorno
Preo do tick calculado para uma posio perdedora.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3193

Biblioteca Padro

TickSize
Obtm a alterao mnima de preo.
double TickSize() const

Valor de retorno
Alterao mnima de preo.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3194

Biblioteca Padro

ContractSize
Obtm a quantidade de contrato de negociao.
double ContractSize() const

Valor de retorno
Quantidade de contrato de negociao.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3195

Biblioteca Padro

LotsMin
Obtm o volume mnimo para fechar uma oferta.
double LotsMin() const

Valor de retorno
Volume mnimo para fechar uma oferta.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3196

Biblioteca Padro

LotsMax
Obtm o volume mximo para fechar uma oferta.
double LotsMax() const

Valor de retorno
Volume mximo para fechar uma oferta.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3197

Biblioteca Padro

LotsStep
Obtm o passo mnimo de variao de volume para fechar uma oferta.
double LotsStep() const

Valor de retorno
O passo mnimo de variao de volume para fechar uma oferta.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3198

Biblioteca Padro

LotsLimit
Obtm o volume mximo permitido de posies abertas e ordens pendentes (direo insensvel) para
um smbolo.
double LotsLimit() const

Valor de retorno
O volume mximo permitido de posies abertas e ordens pendentes (direo insensvel) para um
smbolo.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3199

Biblioteca Padro

SwapLong
Obtm o valor swap de uma posio comprada.
double SwapLong() const

Valor de retorno
Valor swap de uma posio comprada.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3200

Biblioteca Padro

SwapShort
Obtm o valor swap da posio vendida.
double SwapShort() const

Valor de retorno
O valor swap da posio vendida.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3201

Biblioteca Padro

CurrencyBase
Obtm o nome do smbolo da moeda base.
string CurrencyBase() const

Valor de retorno
Nome do smbolo da moeda base.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3202

Biblioteca Padro

CurrencyProfit
Obtm o nome da moeda de lucro.
string CurrencyProfit() const

Valor de retorno
Nome da moeda de lucro.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3203

Biblioteca Padro

CurrencyMargin
Obtm o nome da moeda de margem.
string CurrencyMargin() const

Valor de retorno
Nome da moeda de margem.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3204

Biblioteca Padro

Bank
Obtm o nome da fonte da cotao atual.
string Bank() const

Valor de retorno
Nome da fonte da cotao atual.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3205

Biblioteca Padro

Descrio
Obtm a descrio da string do smbolo.
string Description() const

Valor de retorno
Descrio da string do smbolo.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3206

Biblioteca Padro

Path
Obtm o caminho do diretrio dos smbolos.
string Path() const

Valor de retorno
Obtm o caminho do diretrio dos smbolos.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3207

Biblioteca Padro

SessionDeals
Obtm o nmero de ofertas na sesso atual.
long SessionDeals() const

Valor de retorno
Nmero de ofertas na sesso atual.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3208

Biblioteca Padro

SessionBuyOrders
Obtm o nmero de ordens de Compra no momento.
long SessionBuyOrders() const

Valor de retorno
Nmero de ordens de compra no momento.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3209

Biblioteca Padro

SessionSellOrders
Obtm o nmero de ordens de Venda no momento.
long SessionSellOrders() const

Valor de retorno
Nmero de ordens de Venda no momento.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3210

Biblioteca Padro

SessionTurnover
Obtm resumo do volume de negcios da sesso atual
double SessionTurnover() const

Valor de retorno
Resumo do volume de negcios da sesso atual.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3211

Biblioteca Padro

SessionInterest
Obtm o resumo dos contratos em aberto da sesso atual.
double SessionInterest() const

Valor de retorno
O resumo dos contratos em aberto da sesso atual.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3212

Biblioteca Padro

SessionBuyOrdersVolume
Obtm o atual volume de ordens de compra.
double SessionBuyOrdersVolume() const

Valor de retorno
Volume atual de ordens de compra.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3213

Biblioteca Padro

SessionSellOrdersVolume
Obtm o atual volume das ordens de venda.
double SessionSellOrdersVolume() const

Valor de retorno
Volume atual das ordens de venda.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3214

Biblioteca Padro

SessionOpen
Obtm o preo de abertura da sesso atual.
double SessionOpen() const

Valor de retorno
Preo de abertura da sesso atual.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3215

Biblioteca Padro

SessionClose
Obtm o preo de fechamento da sesso atual.
double SessionClose() const

Valor de retorno
Preo de fechamento da sesso atual.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3216

Biblioteca Padro

SessionAW
Obtm a mdia ponderada do preo da sesso atual
double SessionAW() const

Valor de retorno
A mdia ponderada do preo da sesso atual.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3217

Biblioteca Padro

SessionPriceSettlement
Obtm o preo de liquidao da sesso atual.
double SessionPriceSettlement() const

Valor de retorno
O preo de liquidao da sesso atual.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3218

Biblioteca Padro

SessionPriceLimitMin
Obtm o preo mnimo da sesso atual.
double SessionPriceLimitMin() const

Valor de retorno
Preo mnimo da sesso atual.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3219

Biblioteca Padro

SessionPriceLimitMax
Obtm o preo mximo da sesso atual.
double SessionPriceLimitMax() const

Valor de retorno
Preo mximo da sesso atual.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3220

Biblioteca Padro

InfoInteger
Obtm o valor especfico da propriedade tipo integer.
bool InfoInteger(
ENUM_SYMBOL_INFO_INTEGER prop_id,

// property ID

long&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID da propriedade tipo integer (valor do enumerador ENUM_SYMBOL_INFO_INTEGER).
var
[out] Referente a varivel do tipo integer para colocar o resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3221

Biblioteca Padro

InfoDouble
Obtm o valor especfico da propriedade do tipo double.
bool InfoDouble(
ENUM_SYMBOL_INFO_DOUBLE prop_id,

// property ID

double&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID da propriedade de tipo double (valor do enumerador ENUM_SYMBOL_INFO_DOUBLE).
var
[out] Referente a varivel do tipo double para colocar o resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3222

Biblioteca Padro

InfoString
Obtm o valor especfico da propriedade tipo string.
bool InfoString(
ENUM_SYMBOL_INFO_STRING prop_id,

// property ID

string&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID da propriedade do texto.
var
[out] Referente a varivel do tipo string para colocar resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3223

Biblioteca Padro

NormalizePrice
Retorna o valor do preo, normalizado e utilizando as propriedades do smbolo.
double NormalizePrice(
double

price

// price

) const

Parmetros
price
[in] Preo.
Valor de retorno
Preo normalizado.
Observao
O smbolo deve ser selecionado pelo mtodo Name.

2000-2015, MetaQuotes Software Corp.

3224

Biblioteca Padro

COrderInfo
COrderInfo uma classe para facilitar o acesso s propriedades das ordens pendentes.

Descrio
A classe COrderInfo fornece acesso s propriedades das ordens pendente.

Declarao
class COrderInfo : public CObject

Ttulo
#include <Trade\OrderInfo.mqh>

Mtodos de classe pelos grupos


O acesso a propriedades do tipo integer
Ticket

Obtm o ticket de uma ordem, previamente


selecionada para acessar

TimeSetup

Obtm o tempo de colocao das ordens

TimeSetupMsc

Recebe o tempo de colocao de uma ordem em


milissegundos desde 01.01.1970

OrderType

Obtm o tipo de ordem

OrderTypeDescription

Obtm o tipo de ordem como uma string

State

Obtm o estado da ordem

StateDescription

Obtm o estado da ordem como uma string

TimeExpiration

Obtm o tempo de expirao da ordem

TimeDone

Obtm o tempo de execuo ou cancelamento


da ordem

TimeDoneMsc

Recebe a execuo da ordem ou o tempo de


cancelamento
em
milissegundos
desde
01.01.1970

TypeFilling

Obtm o tipo de execuo da ordem pela


remanescente

TypeFillingDescription

Obtm o tipo de execuo da ordem pela


remanescente como uma string

TypeTime

Obtm o tipo de ordem pelo tempo de


expirao

TypeTimeDescription

Obtm o tipo de ordem pelo tempo de


expirao como uma string

2000-2015, MetaQuotes Software Corp.

3225

Biblioteca Padro

Magic

Obtm a identificao do expert que coloca a


ordem

PositionId

Obtm a identificao da posio

O acesso a propriedades do tipo double


VolumeInitial

Obtm o volume inicial da ordem

VolumeCurrent

Obtm o volume no preenchido da ordem

PriceOpen

Obtm o preo da ordem

StopLoss

Obtm o Stop Loss da ordem

TakeProfit

Obtm o Take Profit da ordem

PriceCurrent

Obtm o preo atual do smbolo (ativo) da


ordem

PriceStopLimit

Obtm o preo configurado da ordem tipo


"limit"

O acesso a propriedades de texto


Symbol

Obtm o nome do smbolo (ativo) da ordem

Comment

Obtm o comentrio da ordem

Acesso a funes API MQL5


InfoInteger

Obtm o valor especfico da propriedade tipo


integer

InfoDouble

Obtm valor especfico da propriedade tipo


double

InfoString

Obtm valor especfico da propriedade tipo


string

State
StoreState

Salva os parmetros da ordem

CheckState

Verifica os parmetros atuais comparando com


os parmetros salvos

Seleo
Select

Seleciona uma ordem pelo ticket para mais


acesso s propriedades

SelectByIndex

Seleciona uma ordem de ndice para acessar as


propriedades

2000-2015, MetaQuotes Software Corp.

3226

Biblioteca Padro

Ticket
Obtm o ticket de uma ordem, previamente selecionado para acesso usando o mtodo Select.
ulong Ticket() const

Valor de retorno
Se bem sucedido, retorna o ticket da ordem, de outra forma retorna ULONG_MAX.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3227

Biblioteca Padro

TimeSetup
Obtm o tempo de colocao da ordem.
datetime TimeSetup() const

Valor de retorno
Tempo de colocao da ordem.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3228

Biblioteca Padro

TimeSetupMsc
Recebe o tempo para execuo de uma ordem em milissegundos desde 01.01.1970.
ulong TimeSetupMsc() const

Valor de retorno
O tempo para execuo de uma ordem em milissegundos desde 01.01.1970.
Observao
A ordem deve ser preliminarmente selecionada para acesso usando o mtodo Select (pelo ticket) ou
SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3229

Biblioteca Padro

OrderType
Obtm o tipo de ordem.
ENUM_ORDER_TYPE OrderType()

Valor de retorno
Tipo de ordem (valor do enumerador ENUM_ORDER_TYPE).
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3230

Biblioteca Padro

TypeDescription
Obtm o tipo de ordem como uma string.
string TypeDescription() const

Valor de retorno
Tipo de ordem como uma string.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3231

Biblioteca Padro

State
Obtm o estado da ordem.
ENUM_ORDER_STATE State() const

Valor de retorno
Estado da ordem (valor do enumerador ENUM_ORDER_STATE).
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3232

Biblioteca Padro

StateDescription
Obtm o estado da ordem como uma string.
string StateDescription() const

Valor de retorno
Estado da ordem como uma string.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3233

Biblioteca Padro

TimeExpiration
Obtm o tempo de expirao da ordem.
datetime TimeExpiration() const

Valor de retorno
Tempo de expirao da ordem, configurado na colocao da mesma.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3234

Biblioteca Padro

TimeDone
Obtm o tempo de execuo ou cancelamento da ordem.
datetime TimeDone() const

Valor de retorno
Tempo de execuo ou cancelamento da ordem.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3235

Biblioteca Padro

TimeDoneMsc
Recebe tempo de execuo ou cancelamento da ordem em milissegundos desde 01.01.1970.
ulong TimeDoneMsc() const

Valor de retorno
Tempo de execuo ou cancelamento da ordem em milissegundos desde 01.01.1970.
Observao
A ordem deve ser preliminarmente selecionada para acesso usando o mtodo Select (pelo ticket) ou
SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3236

Biblioteca Padro

TypeFilling
Obtm o tipo de preenchimento da ordem.
ENUM_ORDER_TYPE_FILLING TypeFilling() const

Valor de retorno
Tipo de preenchimento da ordem (valor do enumerador ENUM_ORDER_TYPE_FILLING).
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3237

Biblioteca Padro

TypeFillingDescription
Obtm o tipo de preenchimento da ordem como uma string.
string TypeFillingDescription() const

Valor de retorno
Tipo de preenchimento da ordem como uma string.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3238

Biblioteca Padro

TypeTime
Obtm o tipo de ordem pelo tempo de expirao.
ENUM_ORDER_TYPE_TIME TypeTime() const

Valor de retorno
Tipo de ordem pelo tempo da expirao.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3239

Biblioteca Padro

TypeTimeDescription
Obtm o tipo de ordem pelo tempo de expirao como uma string.
string TypeTimeDescription() const

Valor de retorno
Tipo de ordem pelo tempo de expirao como uma string.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3240

Biblioteca Padro

Magic
Obtm a identificao do expert que coloca a ordem.
long Magic() const

Valor de retorno
ID do expert que coloca a ordem.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3241

Biblioteca Padro

PositionId
Obtm a identificao da posio.
long PositionId() const

Valor de retorno
ID da posio em que a ordem foi envolvida.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3242

Biblioteca Padro

VolumeInitial
Obtm o volume inicial da ordem.
double VolumeInitial() const

Valor de retorno
Volume inicial da ordem.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3243

Biblioteca Padro

VolumeCurrent
Obtm o volume no preenchido da ordem.
double VolumeCurrent() const

Valor de retorno
Volume no preenchido da ordem.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3244

Biblioteca Padro

PriceOpen
Obtm o preo da ordem.
double PriceOpen() const

Valor de retorno
Preo para colocar a ordem.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3245

Biblioteca Padro

StopLoss
Obtm Stop Loss da ordem.
double StopLoss() const

Valor de retorno
Stop Loss da ordem.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3246

Biblioteca Padro

TakeProfit
Obtm o Take Profit da ordem.
double TakeProfit() const

Valor de retorno
Take Profit da ordem.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3247

Biblioteca Padro

PriceCurrent
Obtm o preo atual pelo smbolo (ativo) da ordem.
double PriceCurrent() const

Valor de retorno
Preo atual pelo smbolo (ativo) da ordem.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3248

Biblioteca Padro

PriceStopLimit
Obtm o preo configurado da ordem tipo "limit".
double PriceStopLimit() const

Valor de retorno
Preo configurado da ordem tipo "limit".
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3249

Biblioteca Padro

Symbol
Obtm o nome do smbolo (ativo) da ordem.
string Symbol() const

Valor de retorno
Nome do smbolo (ativo) da ordem.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3250

Biblioteca Padro

Comment
Obtm o comentrio da ordem.
string Comment() const

Valor de retorno
Comentrio da ordem.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3251

Biblioteca Padro

InfoInteger
Obtm o valor especfico da propriedade tipo integer.
bool InfoInteger(
ENUM_ORDER_PROPERTY_INTEGER prop_id,

// property ID

long&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID da propriedade tipo integer (valor do enumerador ENUM_ORDER_PROPERTY_INTEGER).
var
[out] Referente a varivel do tipo integer para colocar o resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3252

Biblioteca Padro

InfoDouble
Obtm o valor especfico da propriedade do tipo double.
bool InfoDouble(
ENUM_ORDER_PROPERTY_DOUBLE prop_id,

// property ID

double&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID da propriedade de tipo double (valor do enumerador ENUM_ORDER_PROPERTY_DOUBLE).
var
[out] Referente a varivel do tipo double para colocar o resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3253

Biblioteca Padro

InfoString
Obtm o valor especfico da propriedade tipo string.
bool InfoString(
ENUM_ORDER_PROPERTY_STRING prop_id,

// property ID

string&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID da propriedade do texto.
var
[out] Referente a varivel do tipo string para colocar resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
A ordem deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3254

Biblioteca Padro

StoreState
Salva os parmetros da ordem.
void StoreState()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3255

Biblioteca Padro

CheckState
Verifica os parmetros atuais comparando com os parmetros salvos.
bool CheckState()

Valor de retorno
verdadeiro - se os parmetros de ordem mudaram desde a ltima chamada pelo mtodo
StoreState(), caso contrrio - falso.

2000-2015, MetaQuotes Software Corp.

3256

Biblioteca Padro

Select
Seleciona uma ordem pelo ticket para mais acessos s propriedades.
bool Select(
ulong

ticket

// order ticket

Valor de retorno
verdadeiro - em caso de sucesso, Falso - se no for possvel selecionar a ordem.

2000-2015, MetaQuotes Software Corp.

3257

Biblioteca Padro

SelectByIndex
Seleciona a ordem pelo ndice para mais acesso s propriedades.
bool SelectByIndex(
int

index

// order index

Valor de retorno
verdadeiro - em caso de sucesso, Falso - se no for possvel selecionar a ordem.

2000-2015, MetaQuotes Software Corp.

3258

Biblioteca Padro

CHistoryOrderInfo
CHistoryOrderInfo uma classe para facilitar o acesso s propriedades da ordem no histrico.

Descrio
A classe CHistoryOrderInfo possibilita o fcil acesso s propriedades da ordem no histrico.

Declarao
class CHistoryOrderInfo : public CObject

Ttulo
#include <Trade\HistoryOrderInfo.mqh>

Mtodos de classe pelos grupos


O acesso a propriedades do tipo integer
TimeSetup

Obtm o tempo de colocao das ordens

TimeSetupMsc

Recebe o tempo de colocar uma ordem em


milissegundos desde 01.01.1970

OrderType

Obtm o tipo de ordem

OrderTypeDescription

Obtm o tipo de ordem como uma string

State

Obtm o estado da ordem

StateDescription

Obtm o estado da ordem como uma string

TimeExpiration

Obtm o tempo de expirao da ordem

TimeDone

Obtm o tempo de execuo ou cancelamento


da ordem

TimeDoneMsc

Recebe a execuo da ordem ou o tempo de


cancelamento
em
milissegundos
desde
01.01.1970

TypeFilling

Obtm o tipo de execuo da ordem pela


remanescente

TypeFillingDescription

Obtm o tipo de execuo da ordem pela


remanescente como uma string

TypeTime

Obtm o tipo de ordem pelo tempo de


expirao

TypeTimeDescription

Obtm o tipo de ordem pelo tempo de


expirao como uma string

Magic

Obtm a identificao do expert que coloca a


ordem

2000-2015, MetaQuotes Software Corp.

3259

Biblioteca Padro

PositionId

Obtm a identificao da posio

O acesso a propriedades do tipo double


VolumeInitial

Obtm o volume inicial da ordem

VolumeCurrent

Obtm o volume no preenchido da ordem

PriceOpen

Obtm o preo da ordem

StopLoss

Obtm o Stop Loss da ordem

TakeProfit

Obtm o Take Profit da ordem

PriceCurrent

Obtm o preo atual do smbolo (ativo) da


ordem

PriceStopLimit

Obtm o preo configurado da ordem tipo


"limit"

O acesso a propriedades de texto


Symbol

Obtm o smbolo (ativo) da ordem

Comment

Obtm o comentrio da ordem

Acesso a funes API MQL5


InfoInteger

Obtm o valor especfico da propriedade tipo


integer

InfoDouble

Obtm valor especfico da propriedade tipo


double

InfoString

Obtm valor especfico da propriedade tipo


string

Seleo
Ticket

Obtm o ticket/seleciona a ordem

SelectByIndex

Seleciona a ordem pelo ndice

2000-2015, MetaQuotes Software Corp.

3260

Biblioteca Padro

TimeSetup
Obtm o tempo de colocao da ordem.
datetime TimeSetup() const

Valor de retorno
Tempo de colocao da ordem.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3261

Biblioteca Padro

TimeSetupMsc
Recebe o tempo de colocar uma ordem para execuo em milissegundos desde 01.01.1970.
ulong TimeSetupMsc() const

Valor de retorno
O tempo de colocar uma ordem para execuo em milissegundos desde 01.01.1970.
Observao
Ordem histrica deve ser preliminarmente selecionada para acesso usando os mtodos Ticket (pelo
ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3262

Biblioteca Padro

OrderType
Obtm o tipo de ordem.
ENUM_ORDER_TYPE OrderType() const

Valor de retorno
Tipo de ordem (valor do enumerador ENUM_ORDER_TYPE).
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3263

Biblioteca Padro

TypeDescription
Obtm o tipo de ordem como uma string.
string TypeDescription() const

Valor de retorno
Tipo de ordem como uma string.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3264

Biblioteca Padro

State
Obtm o estado da ordem.
ENUM_ORDER_STATE State() const

Valor de retorno
Estado da ordem (valor do enumerador ENUM_ORDER_STATE).
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3265

Biblioteca Padro

StateDescription
Obtm o estado da ordem como uma string.
string StateDescription() const

Valor de retorno
Estado da ordem como uma string.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3266

Biblioteca Padro

TimeExpiration
Obtm o tempo de expirao da ordem.
datetime TimeExpiration() const

Valor de retorno
Tempo de expirao da ordem, definido quando da sua colocao.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3267

Biblioteca Padro

TimeDone
Obtm o tempo de execuo ou cancelamento da ordem.
datetime TimeDone() const

Valor de retorno
Tempo de execuo ou cancelamento da ordem.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3268

Biblioteca Padro

TimeDoneMsc
Recebe de execuo da ordem ou o tempo de cancelamento em milissegundos desde 01.01.1970.
ulong TimeDoneMsc() const

Valor de retorno
Execuo da ordem ou o tempo de cancelamento em milissegundos desde 01.01.1970.
Observao
Ordem histrica deve ser preliminarmente selecionada para acesso usando os mtodos Ticket (pelo
ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3269

Biblioteca Padro

TypeFilling
Obtm o tipo de execuo da ordem pela remanescente.
ENUM_ORDER_TYPE_FILLING TypeFilling() const

Valor de retorno
Tipo de execuo da ordens pela remanescente (valor do enumerador ENUM_ORDER_TYPE_FILLING).
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3270

Biblioteca Padro

TypeFillingDescription
Obtm o tipo de execuo da ordem pela remanescente como uma string.
string TypeFillingDescription() const

Valor de retorno
Tipo de execuo da ordem pela remanescente como uma string.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3271

Biblioteca Padro

TypeTime
Obtm o tipo de ordem pelo tempo de expirao.
ENUM_ORDER_TYPE_TIME TypeTime() const

Valor de retorno
Tipo de ordem pelo tempo de expirao (valor do enumerador ENUM_ORDER_TYPE_TIME).
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3272

Biblioteca Padro

TypeTimeDescription
Obtm o tipo de ordem pelo tempo de expirao como uma string.
string TypeTimeDescription() const

Valor de retorno
Tipo de ordem pelo tempo de expirao como uma string.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3273

Biblioteca Padro

Magic
Obtm a identificao do expert que coloca a ordem.
long Magic() const

Valor de retorno
ID do Expert Advisor que coloca a ordem.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3274

Biblioteca Padro

PositionId
Obtm a identificao da posio.
long PositionId() const

Valor de retorno
ID da posio em que a ordem foi envolvida.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3275

Biblioteca Padro

VolumeInitial
Obtm o volume inicial da ordem.
double VolumeInitial() const

Valor de retorno
Volume inicial da ordem.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3276

Biblioteca Padro

VolumeCurrent
Obtm o volume no preenchido da ordem.
double VolumeCurrent() const

Valor de retorno
Volume no preenchido da ordem.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3277

Biblioteca Padro

PriceOpen
Obtm o preo da ordem.
double PriceOpen() const

Valor de retorno
Preo para colocar a ordem.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3278

Biblioteca Padro

StopLoss
Obtm o preo do Stop Loss da ordem.
double StopLoss() const

Valor de retorno
Preo do Stop Loss da ordem.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3279

Biblioteca Padro

TakeProfit
Obtm o preo do Take Profit da ordem.
double TakeProfit() const

Valor de retorno
O preo do Take Profit da ordem.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3280

Biblioteca Padro

PriceCurrent
Obtm o preo atual do smbolo (ativo) da ordem.
double PriceCurrent() const

Valor de retorno
O preo atual do smbolo (ativo) da ordem.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3281

Biblioteca Padro

PriceStopLimit
Obtm o preo da ordem tipo "limit".
double PriceStopLimit() const

Valor de retorno
Preo da ordem tipo "limit".
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3282

Biblioteca Padro

Symbol
Obtm o nome do smbolo (ativo) da ordem.
string Symbol() const

Valor de retorno
Nome do smbolo (ativo) da ordem.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3283

Biblioteca Padro

Comment
Obtm o comentrio da ordem.
string Comment() const

Valor de retorno
Comentrio da ordem.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3284

Biblioteca Padro

InfoInteger
Obtm o valor especfico da propriedade tipo integer.
bool InfoInteger(
ENUM_ORDER_PROPERTY_INTEGER prop_id,

// property ID

long&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID da propriedade tipo integer (valor do enumerador ENUM_ORDER_PROPERTY_INTEGER).
var
[out] Referente a varivel do tipo integer para colocar o resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3285

Biblioteca Padro

InfoDouble
Obtm o valor especfico da propriedade do tipo double.
bool InfoDouble(
ENUM_ORDER_PROPERTY_DOUBLE prop_id,

// property ID

double&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID da propriedade de tipo double (valor do enumerador ENUM_ORDER_PROPERTY_DOUBLE).
var
[out] Referente a varivel do tipo double para colocar o resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3286

Biblioteca Padro

InfoString
Obtm o valor especfico da propriedade tipo string.
bool InfoString(
ENUM_ORDER_PROPERTY_STRING prop_id,

// property ID

string&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID de propriedade de texto (valor do enumerador ENUM_ORDER_PROPERTY_STRING).
var
[out] Referente a varivel do tipo string para colocar resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
A ordem histrica deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo
ndice).

2000-2015, MetaQuotes Software Corp.

3287

Biblioteca Padro

Ticket (Mtodo Get)


Obtm o ticket da ordem.
ulong Ticket() const

Valor de retorno
Ticket da ordem.

Ticket (Mtodo Set)


Selecione a ordem para mais trabalhos.
void Ticket(
ulong ticket

// order ticket

Parmetros
ticket
[in] Ticket da Ordem

2000-2015, MetaQuotes Software Corp.

3288

Biblioteca Padro

SelectByIndex
Seleciona a ordem pelo ndice para mais acesso s propriedades.
bool SelectByIndex(
int

index

// order index

Valor de retorno
verdadeiro - em caso de sucesso, Falso - se no for possvel selecionar a ordem.

2000-2015, MetaQuotes Software Corp.

3289

Biblioteca Padro

CPositionInfo
CPositionInfo uma classe para facilitar o acesso s propriedades de abertura de posio.

Descrio
A clase CPositionInfo possibilita o fcil acesso s propriedades de abertura de posio.

Declarao
class CPositionInfo : public CObject

Ttulo
#include <Trade\PositionInfo.mqh>

Mtodos de classe pelos grupos


O acesso a propriedades do tipo integer
Time

Obtm o tempo de abertura da posio

TimeMsc

Recebe o tempo da abertura de posio em


milissegundos desde 01.01.1970

TimeUpdate

Recebe o tempo de mudana de posio em


segundos desde 01.01.1970

TimeUpdateMsc

Recebe o tempo de mudana de posio em


milissegundos desde 01.01.1970

PositionType

Obtm o tipo de posio

TypeDescription

Obtm o tipo de posio como uma string

Magic

Obtm a identificao do expert que abre a


posio

Identificador

Obtm a identificao da posio

O acesso a propriedades do tipo double


Volume

Obtm o volume da posio

PriceOpen

Obtm o preo de abertura da posio

StopLoss

Obtm o preo do Stop Loss da posio

TakeProfit

Obtm o preo do Take Profit da posio

PriceCurrent

Obtm o preo atual da posio pelo smbolo


(ativo)

Comisso

Obtm o valor da comisso pelo posio

Swap

Obtm o valor de swap pela posio

Profit

Obtm a quantidade do lucro atual pela posio

2000-2015, MetaQuotes Software Corp.

3290

Biblioteca Padro

O acesso a propriedades de texto


Symbol

Obtm o nome do smbolo (ativo) da posio

Comment

Obtm o comentrio da posio

Acesso a funes API MQL5


InfoInteger

Obtm o valor especfico da propriedade tipo


integer

InfoDouble

Obtm valor especfico da propriedade tipo


double

InfoString

Obtm o valor especfico da propriedade tipo


string

Seleo
Select

Seleciona a posio

SelectByIndex

Seleciona a posio pelo ndice

State
StoreState

Salva os parmetros da posio

CheckState

Verifica os parmetros atuais comparando com


os parmetros salvos

2000-2015, MetaQuotes Software Corp.

3291

Biblioteca Padro

Time
Obtm o tempo de abertura de posio.
datetime Time() const

Valor de retorno
Tempo de abertura da posio.
Observao
A posio deve ser seleccionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3292

Biblioteca Padro

TimeMsc
Recebe tempo de abertura posio em milissegundos desde 01.01.1970.
ulong TimeMsc() const

Valor de retorno
Tempo de abertura posio em milissegundos desde 01.01.1970.
Observao
Posio deve ser preliminarmente selecionada para acesso usando os mtodos Select (pelo smbolo)
ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3293

Biblioteca Padro

TimeUpdate
Recebe o tempo da mudana de posio em segundos, desde 01.01.1970.
datetime TimeUpdate() const

Valor de retorno
Tempo da mudana de posio em segundos, desde 01.01.1970.
Observao
Posio deve ser preliminarmente selecionada para acesso usando os mtodos Select (pelo smbolo)
ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3294

Biblioteca Padro

TimeUpdateMsc
Recebe o tempo da mudana de posio em milissegundos desde 01.01.1970.
ulong TimeUpdateMsc() const

Valor de retorno
O tempo da mudana de posio em milissegundos desde 01.01.1970.
Observao
Posio deve ser preliminarmente selecionada para acesso usando os mtodos Select (pelo smbolo)
ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3295

Biblioteca Padro

PositionType
Obtm o tipo de posio.
ENUM_POSITION_TYPE PositionType() const

Valor de retorno
Tipo de posio (valor do enumerador ENUM_POSITION_TYPE).
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3296

Biblioteca Padro

TypeDescription
Obtm o tipo de posio como uma string.
string TypeDescription() const

Valor de retorno
Tipo de posio como uma string.
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3297

Biblioteca Padro

Magic
Obtm a ID do Expert Advisor para abertura da posio.
long Magic() const

Valor de retorno
ID do Expert Advisor para abertura da posio.
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3298

Biblioteca Padro

Identificador
Obtm a identificao da posio.
long Identifier() const

Valor de retorno
ID da posio.
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3299

Biblioteca Padro

Volume
Obtm o volume da posio.
double Volume() const

Valor de retorno
Volume da posio.
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3300

Biblioteca Padro

PriceOpen
Obtm o preo de abertura da posio.
double PriceOpen() const

Valor de retorno
Preo de abertura da posio.
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3301

Biblioteca Padro

StopLoss
Obtm o preo do Stop Loss da posio.
double StopLoss() const

Valor de retorno
O preo do Stop Loss da posio.
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3302

Biblioteca Padro

TakeProfit
Obtm o preo do Take Profit da posio.
double TakeProfit() const

Valor de retorno
O preo do Take Profit da posio
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3303

Biblioteca Padro

PriceCurrent
Obtm o preo atual pela posio do smbolo (ativo).
double PriceCurrent() const

Valor de retorno
Preo atual pela posio do smbolo (ativo).

2000-2015, MetaQuotes Software Corp.

3304

Biblioteca Padro

Comisso
Obtm o valor de comisso da posio.
double Commission() const

Valor de retorno
Valor de comisso da posio (em moeda do depsito).
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3305

Biblioteca Padro

Swap
Obtm o valor swap da posio.
double Swap() const

Valor de retorno
Valor swap da posio (em moeda de depsito).
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3306

Biblioteca Padro

Profit
Obtm a quantidade de lucro atual da posio.
double Profit() const

Valor de retorno
Quantidade de lucro atual da posio (em moeda de depsito).
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3307

Biblioteca Padro

Symbol
Obtm o nome do smbolo (ativo) da posio.
string Symbol() const

Valor de retorno
Nome do smbolo (ativo) da posio.
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3308

Biblioteca Padro

Comment
Obtm o comentrio da posio.
string Comment() const

Valor de retorno
Comentrio da posio.
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3309

Biblioteca Padro

InfoInteger
Obtm o valor especfico da propriedade tipo integer.
bool InfoInteger(
ENUM_POSITION_PROPERTY_INTEGER prop_id,

// property ID

long&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID da propriedade tipo integer (valor do enumerador ENUM_POSITION_PROPERTY_INTEGER).
var
[out] Referente a varivel do tipo integer para colocar o resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3310

Biblioteca Padro

InfoDouble
Obtm o valor especfico da propriedade do tipo double.
bool InfoDouble(
ENUM_POSITION_PROPERTY_DOUBLE prop_id,

// property ID

double&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID da propriedade de tipo double (valor do enumerador ENUM_POSITION_PROPERTY_DOUBLE).
var
[in] Referente a varivel de tipo double para colocar o resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3311

Biblioteca Padro

InfoString
Obtm o valor especfico da propriedade tipo string.
bool InfoString(
ENUM_POSITION_PROPERTY_STRING prop_id,

// property ID

string&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID de propriedade de texto (valor do enumerador ENUM_POSITION_PROPERTY_STRING).
var
[out] Referente a varivel do tipo string para colocar resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
A posio deve ser selecionada usando os mtodos Select (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3312

Biblioteca Padro

Select
Selecione a posio para mais trabalho.
bool Select(
const string symbol

// symbol

Parmetros
symbol
[in] Smbolo (ativo) da posio selecionada.

2000-2015, MetaQuotes Software Corp.

3313

Biblioteca Padro

SelectByIndex
Seleciona a posio pelo ndice para mais acesso s propriedades.
bool SelectByIndex(
int

index

// position index

Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel selecionar a posio.

2000-2015, MetaQuotes Software Corp.

3314

Biblioteca Padro

StoreState
Salva os parmetros da posio.
void StoreState()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3315

Biblioteca Padro

CheckState
Verifica os parmetros atuais comparando com os parmetros salvos.
bool CheckState()

Valor de retorno
verdadeiro - se os parmetros de posio mudaram desde a ltima chamada do mtodo
StoreState(), caso contrrio - falso.

2000-2015, MetaQuotes Software Corp.

3316

Biblioteca Padro

CDealInfo
CDealInfo uma classe para facilitar o acesso s propriedades das ofertas.

Descrio
A classe CDealInfo possibilita o acesso s propriedades das ofertas.

Declarao
class CDealInfo : public CObject

Ttulo
#include <Trade\DealInfo.mqh>

Mtodos de classe pelos grupos


O acesso a propriedades do tipo integer
Order

Obtm a ordem pela qual a oferta executada

Time

Obtm o tempo de execuo da oferta

TimeMsc

Recebe o tempo de uma oferta executada em


milissegundos desde 01.01.1970

DealType

Obtm o tipo de oferta

TypeDescription

Obtm o tipo de oferta como uma string

Entry

Obtm a direo da oferta

EntryDescription

Obtm a direo da oferta como uma string

Magic

Obtm a ID do expert que executou a oferta

PositionId

Obtm a ID da posio em que a oferta foi


envolvida

O acesso a propriedades do tipo double


Volume

Obtm o volume da oferta

Price

Obtm o preo da oferta

Commision

Obtm o valor da comisso pela oferta

Swap

Obtm o montante swap quando posio


fechada

Profit

Obtm o resultado financeiro da oferta

O acesso a propriedades de texto


Symbol

Obtm o nome do smbolo da oferta

Comment

Obtm o comentrio da oferta

2000-2015, MetaQuotes Software Corp.

3317

Biblioteca Padro

Acesso a funes API MQL5


InfoInteger

Obtm o valor especfico da propriedade tipo


integer

InfoDouble

Obtm valor especfico da propriedade tipo


double

InfoString

Obtm valor especfico da propriedade tipo


string

Seleo
Ticket

Obtm o ticket/seleciona a oferta

SelectByIndex

Seleciona a oferta pelo ndice

2000-2015, MetaQuotes Software Corp.

3318

Biblioteca Padro

Order
Obtm a ordem pela qual a oferta executada.
long Order() const

Valor de retorno
Ordem pela qual a oferta executada.
Observao
A oferta deve ser selecionado usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3319

Biblioteca Padro

Time
Obtm o tempo de execuo da oferta.
datetime Time() const

Valor de retorno
Tempo de execuo da oferta.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3320

Biblioteca Padro

TimeMsc
Recebe o tempo de execuo da oferta em milissegundos desde 01.01.1970.
ulong TimeMsc() const

Valor de retorno
O tempo de execuo da oferta em milissegundos desde 01.01.1970.
Observao
A oferta deve ser preliminarmente selecionado para acesso usando o mtodo Ticket (pelo ticket) ou
SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3321

Biblioteca Padro

DealType
Obtm o tipo de oferta.
ENUM_DEAL_TYPE DealType() const

Valor de retorno
Tipo de oferta (valor do enumerador ENUM_DEAL_TYPE).
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3322

Biblioteca Padro

TypeDescription
Obtm o tipo de oferta como uma string.
string TypeDescription() const

Valor de retorno
Tipo de oferta como uma string.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3323

Biblioteca Padro

Entry
Obtm a direo da oferta.
ENUM_DEAL_ENTRY Entry() const

Valor de retorno
Direo da oferta (valor do enumerador ENUM_DEAL_ENTRY.).
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3324

Biblioteca Padro

EntryDescription
Obtm a direo da oferta como uma string.
string EntryDescription() const

Valor de retorno
Direo da oferta como uma string.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3325

Biblioteca Padro

Magic
Obtm a ID do Expert Advisor que executou a oferta.
long Magic() const

Valor de retorno
ID do Expert Advisor, que executou a oferta.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3326

Biblioteca Padro

PositionId
Obtm a identificao da posio em que a oferta foi envolvida.
long PositionId() const

Valor de retorno
ID da posio em que a oferta foi envolvida.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3327

Biblioteca Padro

Volume
Obtm o volume da oferta.
double Volume() const

Valor de retorno
Volume da oferta.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3328

Biblioteca Padro

Price
Obtm o preo da oferta.
double Price() const

Valor de retorno
Preo da oferta.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3329

Biblioteca Padro

Comisso
Obtm o valor de comisso da oferta.
double Commission() const

Valor de retorno
Valor de comisso da oferta.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3330

Biblioteca Padro

Swap
Obtm a quantidade swap quando posio fechada.
double Swap() const

Valor de retorno
Quantidade swap quando a posio fechada.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3331

Biblioteca Padro

Profit
Obtm o resultado financeiro da oferta.
double Profit() const

Valor de retorno
O resultado financeiro da oferta (em moeda de depsito).
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3332

Biblioteca Padro

Symbol
Obtm o nome do smbolo da oferta.
string Symbol() const

Valor de retorno
Nome do smbolo da oferta.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3333

Biblioteca Padro

Comment
Obtm o comentrio da oferta.
string Comment() const

Valor de retorno
Comentrio da oferta.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3334

Biblioteca Padro

InfoInteger
Obtm o valor especfico da propriedade tipo integer.
bool InfoInteger(
ENUM_DEAL_PROPERTY_INTEGER prop_id,

// property ID

long&

// reference to variable

var

) const

Parmetros
prop_id
[In] ID da propriedade tipo integer (valor do enumerador ENUM_DEAL_PROPERTY_INTEGER).
var
[out] Referente a varivel do tipo integer para colocar o resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3335

Biblioteca Padro

InfoDouble
Obtm o valor especfico da propriedade do tipo double.
bool InfoDouble(
ENUM_DEAL_PROPERTY_DOUBLE prop_id,

// property ID

double&

// reference to variable

var

) const

Parmetros
prop_id
[in] ID da propriedade do tipo double (valor do enumerador ENUM_DEAL_PROPERTY_DOUBLE).
var
[in] Referente a varivel de tipo double para colocar o resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3336

Biblioteca Padro

InfoString
Obtm o valor especfico da propriedade tipo string.
bool InfoString(
ENUM_DEAL_PROPERTY_STRING prop_id,

// property ID

string&

// reference to variable

var

) const

Parmetros
prop_id
[In] ID da propriedade de texto (valor do enumerador ENUM_DEAL_PROPERTY_STRING).
var
[out] Referente a varivel do tipo string para colocar resultado.
Valor de retorno
verdadeiro - em caso de sucesso, falso - se no for possvel obter o valor da propriedade.
Observao
A oferta deve ser selecionada usando os mtodos Ticket (pelo ticket) ou SelectByIndex (pelo ndice).

2000-2015, MetaQuotes Software Corp.

3337

Biblioteca Padro

Ticket (Mtodo Get)


Obtm o ticket da oferta.
ulong Ticket() const

Valor de retorno
Ticket da oferta.

Ticket (Mtodo Set)


Selecione a posio para mais trabalho.
void Ticket(
ulong ticket

// ticket

Parmetros
ticket
[in] Ticket da oferta.

2000-2015, MetaQuotes Software Corp.

3338

Biblioteca Padro

SelectByIndex
Seleciona a oferta pelo ndice para mais acessos s propriedades.
bool SelectByIndex(
int

index

// order index

Valor de retorno
verdadeiro - em caso de sucesso, falso - se no foi possvel selecionar a oferta.

2000-2015, MetaQuotes Software Corp.

3339

Biblioteca Padro

CTrade
CTrade uma classe para facilitar o acesso s funes de negociao.

Descrio
A classe CTrade oferece facilidade de acesso s funes de negociao.

Declarao
class CTrade : public CObject

Ttulo
#include <Trade\Trade.mqh>

Mtodos de classe pelos grupos


Definio dos parmetros
LogLevel

Define nvel de entrada

SetExpertMagicNumber

Define a ID do expert

SetDeviationInPoints

Define o desvio permitido

SetTypeFilling

Define o preenchimento do tipo de ordem

SetAsyncMode

Define o modo assncrono para operaes de


negociao

As operaes com ordens


OrderOpen

Coloca a ordem pendente com parmetros


definidos

OrderModify

Modifica os parmetros da ordem pendente

OrderDelete

Exclui a ordem pendente

As operaes com posies


PositionOpen

Abre a posio com parmetros definidos

PositionModify

Modifica os parmetros da posio

PositionClose

Fecha a posio

Mtodos adicionais
Buy

Abre uma posio comprada com parmetros


determinados

Sell

Abre uma posio vendida com parmetros


determinados

BuyLimit

Coloca a ordem pendente do tipo Buy Limit com


parmetros determinados

2000-2015, MetaQuotes Software Corp.

3340

Biblioteca Padro

BuyStop

Coloca a ordem pendente do tipo Buy Stop com


parmetros determinados

SellLimit

Coloca a ordem pendente do tipo Sell Limit com


parmetros determinados

SellStop

Coloca a ordem pendente do tipo Sell Stop com


parmetros determinados

Acesso aos ltimos parmetros dos pedidos


Request

Obtm a cpia da ltima estrutura de pedido

RequestAction

Obtm o tipo de operao de negociao

RequestActionDescription

Obtm o tipo de operao de negociao como


string

RequestMagic

Obtm o nmero mgico do Expert Advisor

RequestOrder

Obtm o ticket de ordem, utilizado no ltimo


pedido

RequestSymbol

Obtm o nome do smbolo, utilizado no ltimo


pedido

RequestVolume

Obtm o volume da negociao (em lotes),


utilizado no ltimo pedido

RequestPrice

Obtm o preo, utilizado no ltimo pedido

RequestStopLimit

Obtm o preo da ordem pendente do tipo Stop


Limit, utilizado no ltimo pedido

RequestSL

Obtm o preo do Stop Loss da ordem, utilizado


no ltimo pedido

RequestTP

Obtm o preo Lucro do Take Profit, utilizado


no ltimo pedido

RequestDeviation

Obtm o desvio de preo da ordem, utilizado no


ltimo pedido

RequestType

Obtm o tipo de ordem, utilizado no ltimo


pedido

RequestTypeDescription

Obtm o tipo de ordem (como string), utilizado


no ltimo pedido

RequestTypeFilling

Obtm o tipo de preenchimento da ordem,


utilizado no ltimo pedido

RequestTypeFillingDescription

Obtm o tipo de preenchimento da ordem


(como string), utilizado no ltimo pedido

RequestTypeTime

Obtm o perodo de validade da ordem,


utilizado no ltimo pedido

RequestTypeTimeDescription

Obtm o perodo de validade da ordem (como


string), utilizado no ltimo pedido

2000-2015, MetaQuotes Software Corp.

3341

Biblioteca Padro

RequestExpiration

Obtm o tempo de validade da ordem, utilizado


no ltimo pedido

RequestComment

Obtm o comentrio da ordem, utilizado no


ltimo pedido

Acesso aos resultados de verificao do


ltimo pedido
CheckResult

Obtm a cpia da estrutura do resultado da


verificao do ltimo pedido.

CheckResultRetcode

Obtm o valor do campo retcode do tipo


MqlTradeCheckResult, preenchido durante a
verificao da exatido do pedido

CheckResultRetcodeDescription

Obtm a string da descrio do campo retcode


do tipo MqlTradeCheckResult, preenchido
durante a verificao da exatido do pedido

CheckResultBalance

Obtm o valor do campo saldo do tipo


MqlTradeCheckResult, preenchido durante a
verificao da exatido do pedido

CheckResultEquity

Obtm o valor do campo capital lquido do tipo


MqlTradeCheckResult, preenchido durante a
verificao da exatido do pedido

CheckResultProfit

Obtm o valor do campo lucro do tipo


MqlTradeCheckResult, preenchido durante a
verificao da exatido do pedido

CheckResultMargin

Obtm o valor do campo margem do tipo


MqlTradeCheckResult, preenchido durante a
verificao da exatido do pedido

CheckResultMarginFree

Obtm o valor do campo margin_free do tipo


MqlTradeCheckResult, preenchido durante a
verificao da exatido do pedido

CheckResultMarginLevel

Obtm o valor do campo margin_level do tipo


MqlTradeCheckResult, preenchido durante a
verificao da exatido do pedido

CheckResultComment

Obtm o valor do campo comentrio do tipo


MqlTradeCheckResult, preenchido durante a
verificao da exatido do pedido

Acesso aos resultados da execuo do ltimo


pedido
Result

Obtm a cpia da estrutura do resultado do


ltimo pedido

ResultRetcode

Obtm o cdigo de resultado do pedido

ResultRetcodeDescription

Obtm o cdigo de resultado do pedido como

2000-2015, MetaQuotes Software Corp.

3342

Biblioteca Padro

texto
ResultDeal

Obtm o ticket da oferta

ResultOrder

Obtm o ticket da ordem

ResultVolume

Obtm o volume da oferta ou ordem

ResultPrice

Obtm o preo, confirmado pela corretora

ResultBid

Obtm o preo bid atual (requote)

ResultAsk

Obtm o preo ask atual (requote)

ResultComment

Obtm o comentrio da corretora

Mtodos auxiliares
PrintRequest

Imprime os ltimos parmetros do pedido no


dirio

PrintResult

Imprime os resultados do ltimo pedido no


dirio

FormatRequest

Prepara a string formatada com parmetros do


ltimo pedido

FormatRequestResult

Prepara a string formatada com os resultados


da ltima execuo do pedido

2000-2015, MetaQuotes Software Corp.

3343

Biblioteca Padro

LogLevel
Define nvel de entrada para mensagens.
void LogLevel(
ENUM_LOG_LEVELS log_level

// logging level

Parmetros
log_level
[in] Nvel de entrada.
Valor de retorno
Nenhum.
Observao
LOG_LEVEL_NO desabilita a exibio de todas as mensagens (configurado automaticamente no
modo otimizao). LOG_LEVEL_ERRORS permite exibir apenas mensagens de erro (valor por
padro). LOG_LEVEL_ALL permite exibir qualquer mensagem (configurado automaticamente no
modo de teste).
ENUM_LOG_LEVELS
Identificador

Descrio

Valor

LOG_LEVEL_NO

Exibindo
as
desativadas

mensagens

LOG_LEVEL_ERRORS

Somente as mensagens
erro so exibidas

LOG_LEVEL_ALL

Todas as
exibidas

mensagens

de

so

2000-2015, MetaQuotes Software Corp.

3344

Biblioteca Padro

SetExpertMagicNumber
Define a ID do expert.
void SetExpertMagicNumber(
ulong magic

// ID

Parmetros
magic
[in] Nova ID do expert.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3345

Biblioteca Padro

SetDeviationInPoints
Define o desvio permitido.
void SetDeviationInPoints(
ulong deviation

// deviation

Parmetros
deviation
[in] Desvio permitido.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3346

Biblioteca Padro

SetTypeFilling
Define o tipo de preenchimento da ordem.
void SetTypeFilling(
ENUM_ORDER_TYPE_FILLING filling

// order filling type

Parmetros
filling
[in] tipo de preenchimento da ordem (valor do enumerador ENUM_ORDER_TYPE_FILLING).
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3347

Biblioteca Padro

SetAsyncMode
Define o modo assncrono para operaes de negociao.
void SetAsyncMode(
bool mode

// asynchronous mode flag

Parmetros
mode
[in] Flag de modo assncrono.
Valor de retorno
Nenhum.
Observao
Este modo usado para operaes de negociao assncrona, sem esperar pela resposta do servidor
de negociao a um pedido enviado (ver OrderSendAsync).

2000-2015, MetaQuotes Software Corp.

3348

Biblioteca Padro

OrderOpen
Coloca a ordem pendente com parmetros definidos.
bool OrderOpen(
const string

symbol,

// symbol

ENUM_ORDER_TYPE

order_type,

// order type

double

volume,

// order volume

double

limit_price,

// StopLimit price

double

price,

// execution price

double

sl,

// Stop Loss price

double

tp,

// Take Profit price

ENUM_ORDER_TYPE_TIME type_time,

// type by expiration

datetime

expiration,

// expiration

const string

comment=""

// comment

Parmetros
symbol
[in] Nome do instrumento de negociao.
order_type
[in] Tipo de ordem da operao de negociao (valor do enumerador ENUM_ORDER_TYPE).
volume
[in] Solicita o volume da ordem.
limit_price
[in] Preo que a ordem StopLimit ser colocada.
price
[in] Preo que a ordem deve ser executada.
sl
[in] Preo que o Stop Loss ser alcanado.
tp
[in] Preo que o Take Profit ser alcanado.
type_time
[in] Tipo de ordem pela execuo (valor do enumerador ENUM_ORDER_TYPE_TIME).
expiration
[in] A data de expirao da ordem pendente.
comment=""
[in] Comentrio da ordem
Valor de retorno
verdadeiro - em caso de verificao bem sucedida das estruturas bsicas, caso contrrio - falso.

2000-2015, MetaQuotes Software Corp.

3349

Biblioteca Padro

Observao
A concluso bem sucedida do mtodo OrderSend(...) nem sempre significa a execuo bem sucedida
da operao de negociao. necessrio verificar o resultado da solicitao de negociao (cdigo
de retorno do servidor de negociao), utilizando ResultRetcode() e o valor, retorno por
ResultOrder().

2000-2015, MetaQuotes Software Corp.

3350

Biblioteca Padro

OrderModify
Modifica os parmetros de ordem pendentes.
bool OrderModify(
ulong

ticket,

// order ticket

double

price,

// execution price

double

sl,

// Stop Loss price

double

tp,

// Take Profit price

ENUM_ORDER_TYPE_TIME type_time,

// type by expiration

datetime

expiration,

// expiration

double

stoplimit

// Limit order price

Parmetros
ticket
[in] Ticket da Ordem
price
[in] O novo preo para executar a ordem (ou o valor anterior, se a mudana no for necessria).
sl
[in] O novo preo para executar o Stop Loss (ou o valor anterior, se a mudana no for
necessria).
tp
[in] O novo preo para executar o Take Profit (ou o valor anterior, se a mudana no for
necessria).
type_time
[in] O novo tipo de ordem de expirao (ou o valor anterior, se a mudana no for necessrio), o
valor do enumerador ENUM_ORDER_TYPE_TIME.
expiration
[in] A nova data de expirao de ordem pendente (ou o valor anterior, se a mudana no for
necessria).
stoplimit
[in] Novo preo usado para definir uma ordem Limit, quando o preo alcanar valor do parmetro
price. especificado somente para ordens do tipo StopLimit.
Valor de retorno
verdadeiro - em caso de verificao bem sucedida das estruturas bsicas, caso contrrio - falso.
Observao
A concluso bem sucedida do mtodo OrderModify(...) nem sempre significa a execuo bem
sucedida operao de negociao. necessrio verificar o resultado do pedido de negociao
(cdigo de retorno do servidor de negociao) utilizando ResultRetcode().

2000-2015, MetaQuotes Software Corp.

3351

Biblioteca Padro

OrderDelete
Exclui a ordem pendente.
bool OrderDelete(
ulong ticket

// order ticket

Parmetros
ticket
[in] Ticket da Ordem
Valor de retorno
verdadeiro - em caso de verificao bem sucedida das estruturas bsicas, caso contrrio - falso.
Observao
A concluso bem sucedida do mtodo OrderDelete(...) nem sempre significa execuo bem sucedida
da operao de negociao. necessrio verificar o resultado do pedido de negociao (cdigo de
retorno do servidor de negociao) utilizando ResultRetcode().

2000-2015, MetaQuotes Software Corp.

3352

Biblioteca Padro

PositionOpen
Abre a posio com parmetros definidos.
bool PositionOpen(
const string

symbol,

// symbol

ENUM_ORDER_TYPE order_type,

// order type to open position

double

volume,

// position volume

double

price,

// execution price

double

sl,

// Stop Loss price

double

tp,

// Take Profit price

const string

comment=""

// comment

Parmetros
symbol
[in] Nome do instrumento de negociao para a posio aberta.
order_type
[in] Tipo de ordem (operao de negociao) para a posio aberta (valor do enumerador
ENUM_ORDER_TYPE).
volume
[in] Volume da posio solicitada.
price
[in] Preo em que a posio deve ser aberta.
sl
[in] Preo que o Stop Loss ser alcanado.
tp
[in] Preo que o Take Profit ser alcanado.
comment=""
[in] Posio do comentrio.
Valor de retorno
verdadeiro - em caso de verificao bem sucedida das estruturas bsicas, caso contrrio - falso.
Observao
A concluso bem sucedida do mtodo PositionOpen(...) nem sempre significa a execuo bem
sucedida da operao de negociao. necessrio verificar o resultado da solicitao de negociao
(cdigo de retorno do servidor da negociao), utilizando ResultRetcode() e o valor, retornado por
ResultDeal().

2000-2015, MetaQuotes Software Corp.

3353

Biblioteca Padro

PositionModify
Modifica os parmetros de posio pelo smbolo determinado.
bool PositionModify(
const string symbol,

// symbol

double

sl,

// Stop Loss price

double

tp

// Take Profit price

Parmetros
symbol
[in] Nome do instrumento de negociao para modificar a posio.
sl
[in] O novo preo para executar o Stop Loss (ou o valor anterior, se a mudana no for
necessria).
tp
[in] O novo preo para executar o Take Profit (ou o valor anterior, se a mudana no for
necessria).
Valor de retorno
verdadeiro - em caso de verificao bem sucedida das estruturas bsicas, caso contrrio - falso.
Observao
A concluso bem sucedida do mtodo PositionModify(...) nem sempre significa a execuo bem
sucedida da operao de negociao. necessrio verificar o resultado do pedido de negociao
(cdigo de retorno do servidor de negociao) utilizando ResultRetcode().

2000-2015, MetaQuotes Software Corp.

3354

Biblioteca Padro

PositionClose
Fecha a posio pelo smbolo deteminado
bool PositionClose(
const string symbol,

// symbol

ulong

// deviation

deviation=ULONG_MAX

Parmetros
symbol
[in] Nome do instrumento de negociao para fechar posio.
deviation=ULONG_MAX
[in] Desvio mximo do preo atual (em pontos).
Valor de retorno
verdadeiro - em caso de verificao bem sucedida das estruturas bsicas, caso contrrio - falso.
Observao
Concludo com sucesso pelo mtodo PositionClose(...), mas nem sempre significa a execuo bem
sucedida da operao de negociao. necessrio verificar o resultado do pedido de negociao
(cdigo de retorno do servidor de negociao) utilizando ResultRetcode().

2000-2015, MetaQuotes Software Corp.

3355

Biblioteca Padro

Buy
Abre uma posio comprada com parmetros determinados.
bool Buy(
double

volume,

// position volume

const string symbol=NULL,

// symbol

double

price=0.0,

// price

double

sl=0.0,

// stop loss price

double

tp=0.0,

// take profit price

const string comment=""

// comment

Parmetros
volume
[in] Volume da posio.
symbol=NULL
[in] Posio do smbolo. Se o smbolo no for especificado, o smbolo atual ser usado.
price=0.0
[in] Preo. Se o preo no for especificado, o mercado usar o preo Ask.
sl=0.0
[in] preo para finalizar a perda do capital (Stop Loss).
tp=0.0
[in] Preo do Take Profit.
comment=""
[in] Comentrio.
Valor de retorno
verdadeiro - no caso do sucesso da verificao das estruturas, caso contrrio - falso.
Observao
A concluso bem sucedida do mtodo Buy(...) nem sempre significa a execuo bem sucedida da
operao de negociao. necessrio verificar o resultado da solicitao da negociao (cdigo de
retorno do servidor de negociao) usando o ResultRetcode() e o valor, retorno pelo ResultDeal().

2000-2015, MetaQuotes Software Corp.

3356

Biblioteca Padro

Sell
Abre uma posio vendida com os parmetros determinados.
bool Sell(
double

volume,

// position volume

const string symbol=NULL,

// symbol

double

price=0.0,

// price

double

sl=0.0,

// stop loss price

double

tp=0.0,

// take profit price

const string comment=""

// comment

Parmetros
volume
[in] Volume da posio.
symbol=NULL
[in] Posio do smbolo. Se o smbolo no for especificado, o smbolo atual ser usado.
price=0.0
[in] Preo. Se o preo no for determinado, o preo Bid atual de mercado ser usado.
sl=0.0
[in] preo para finalizar a perda do capital (Stop Loss).
tp=0.0
[in] Preo do Take Profit.
comment=""
[in] Comentrio.
Valor de retorno
verdadeiro - no caso do sucesso da verificao das estruturas, caso contrrio - falso.
Observao
A concluso bem sucedida do mtodo Sell(...) nem sempre significa execuo bem sucedida da
operao de negociao. necessrio verificar o resultado da solicitao da negociao (cdigo de
retorno do servidor de negociao) usando o ResultRetcode() e o valor, retorno pelo ResultDeal().

2000-2015, MetaQuotes Software Corp.

3357

Biblioteca Padro

BuyLimit
Coloca a ordem pendente do tipo Buy Limit (compra no preo menor do que o preo atual de mercado)
com parmetros determinados .
bool BuyLimit(
double

volume,

// order volume

double

price,

// order price

const string

symbol=NULL,

// symbol

double

sl=0.0,

// stop loss price

double

tp=0.0,

// take profit price

ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,

// order lifetime

datetime

expiration=0,

// order expiration time

const string

comment=""

// comment

Parmetros
volume
[in] Volume da ordem.
price
[in] Preo da ordem.
symbol=NULL
[in] Smbolo da ordem Se o smbolo no for especificado, o smbolo atual ser usado.
sl=0.0
[in] preo para finalizar a perda do capital (Stop Loss).
tp=0.0
[in] Preo do Take Profit.
type_time=ORDER_TIME_GTC
[in] Ordem infinita (valor do enumerador ENUM_ORDER_TYPE_TIME).
expiration=0
[In] Tempo de expirao da ordem (usado somente se type_time=ORDER_TIME_SPECIFIED).
comment=""
[in] Comentrio da ordem
Valor de retorno
verdadeiro - no caso do sucesso da verificao das estruturas, caso contrrio - falso.
Observao
A concluso bem sucedida do mtodo BuyLimit(...) nem sempre significa a execuo bem sucedida
da operao de negociao. necessrio verificar o resultado da solicitao da negociao (cdigo
de retorno do servidor de negociao) usando o ResultRetcode() e o valor, retorno pelo ResultDeal().

2000-2015, MetaQuotes Software Corp.

3358

Biblioteca Padro

BuyStop
Coloca a ordem pendente do tipo Buy Stop (compra no preo maior do que o preo atual de mercado)
com parmetros determinados.
bool BuyStop(
double

volume,

// order volume

double

price,

// order price

const string

symbol=NULL,

// symbol

double

sl=0.0,

// stop loss price

double

tp=0.0,

// take profit price

ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,

// order lifetime

datetime

expiration=0,

// order expiration time

const string

comment=""

// comment

Parmetros
volume
[in] Volume da ordem.
price
[in] Preo da ordem.
symbol=NULL
[in] Smbolo da ordem Se o smbolo no for especificado, o smbolo atual ser usado.
sl=0.0
[in] preo para finalizar a perda do capital (Stop Loss).
tp=0.0
[in] Preo do Take Profit.
type_time=ORDER_TIME_GTC
[in] Ordem infinita (valor do enumerador ENUM_ORDER_TYPE_TIME).
expiration=0
[in] Tempo de expirao da ordem (usado somente se type_time=ORDER_TIME_SPECIFIED).
comment=""
[in] Comentrio da ordem
Valor de retorno
verdadeiro - no caso do sucesso da verificao das estruturas, caso contrrio - falso.
Observao
A concluso bem sucedida do mtodo BuyStop(...) nem sempre significa execuo bem sucedida da
operao de negociao. necessrio verificar o resultado da solicitao da negociao (cdigo de
retorno do servidor de negociao) usando o ResultRetcode() e o valor, retorno pelo ResultDeal().

2000-2015, MetaQuotes Software Corp.

3359

Biblioteca Padro

SellLimit
Coloca a ordem pendente do tipo Sell Limit (vender pelo preo maior do que o preo atual de mercado)
com parmetros determinados.
bool SellLimit(
double

volume,

// order volume

double

price,

// order price

const string

symbol=NULL,

// symbol

double

sl=0.0,

// stop loss price

double

tp=0.0,

// take profit price

ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,

// order lifetime

datetime

expiration=0,

// order expiration time

const string

comment=""

// comment

Parmetros
volume
[in] Volume da ordem.
price
[in] Preo da ordem.
symbol=NULL
[in] Smbolo da ordem Se o smbolo no for especificado, o smbolo atual ser usado.
sl=0.0
[in] preo para finalizar a perda do capital (Stop Loss).
tp=0.0
[in] Preo do Take Profit.
type_time=ORDER_TIME_GTC
[in] Ordem infinita (valor do enumerador ENUM_ORDER_TYPE_TIME).
expiration=0
[in] Tempo de expirao da ordem (usado somente se type_time=ORDER_TIME_SPECIFIED).
comment=""
[in] Comentrio da ordem
Valor de retorno
verdadeiro - no caso do sucesso da verificao das estruturas, caso contrrio - falso.
Observao
A concluso bem sucedida do mtodo SellLimit(...) nem sempre significa execuo bem sucedida da
operao de negociao. necessrio verificar o resultado da solicitao da negociao (cdigo de
retorno do servidor de negociao) usando o ResultRetcode() e o valor, retorno pelo ResultDeal().

2000-2015, MetaQuotes Software Corp.

3360

Biblioteca Padro

SellStop
Coloca a ordem pendente do tipo Sell Stop (vender pelo preo mais baixo do que o preo atual de
mercado) com parmetros determinados.
bool SellStop(
double

volume,

// order volume

double

price,

// order price

const string

symbol=NULL,

// symbol

double

sl=0.0,

// stop loss price

double

tp=0.0,

// take profit price

ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,

// order lifetime

datetime

expiration=0,

// order expiration time

const string

comment=""

// comment

Parmetros
volume
[in] Volume da ordem.
price
[in] Preo da ordem.
symbol=NULL
[in] Smbolo da ordem Se o smbolo no for especificado, o smbolo atual ser usado.
sl=0.0
[in] preo para finalizar a perda do capital (Stop Loss).
tp=0.0
[in] Preo do Take Profit.
type_time=ORDER_TIME_GTC
[in] Ordem infinita (valor do enumerador ENUM_ORDER_TYPE_TIME).
expiration=0
[in] Tempo de expirao da ordem (usado somente se type_time=ORDER_TIME_SPECIFIED).
comment=""
[in] Comentrio da ordem
Valor de retorno
verdadeiro - no caso do sucesso da verificao das estruturas, caso contrrio - falso.
Observao
A concluso bem sucedida do mtodo SellStop(...) nem sempre significa execuo bem sucedida da
operao de negociao. necessrio verificar o resultado da solicitao da negociao (cdigo de
retorno do servidor de negociao) usando o ResultRetcode() e o valor, retorno pelo ResultDeal().

2000-2015, MetaQuotes Software Corp.

3361

Biblioteca Padro

Request
Obtm a cpia da ltima estrutura de pedido.
void Request(
MqlTradeRequest& request

// target structure

) const

Parmetros
request
[Out] Referente a estrutura do tipo MqlTradeRequest.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3362

Biblioteca Padro

RequestAction
Obtm o tipo de operao de negociao.
ENUM_TRADE_REQUEST_ACTIONS RequestAction() const

Valor de retorno
Tipo de operao de negociao, usando o ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3363

Biblioteca Padro

RequestActionDescription
Obtm o tipo de operao de negociao como string.
string RequestActionDescription() const

Valor de retorno
Tipo de operao de negociao (como string), utilizada no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3364

Biblioteca Padro

RequestMagic
Obtm o nmero mgico do Expert Advisor.
ulong RequestMagic() const

Valor de retorno
O nmero mgico (ID) do Expert Advisor, utilizado no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3365

Biblioteca Padro

RequestOrder
Obtm o ticket de ordem, utilizado no ltimo pedido.
ulong RequestOrder() const

Valor de retorno
Ticket de ordem do ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3366

Biblioteca Padro

RequestSymbol
Obtm o nome do smbolo, utilizado no ltimo pedido.
string RequestSymbol() const

Valor de retorno
O nome do smbolo, utilizado no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3367

Biblioteca Padro

RequestVolume
Obtm o volume de negociao (em lotes), utilizado no ltimo pedido.
double RequestVolume() const

Valor de retorno
O volume da negociao (em lotes), utilizado no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3368

Biblioteca Padro

RequestPrice
Obtm o preo, usado no ltimo pedido.
double RequestPrice() const

Valor de retorno
Preo da ordem, usado no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3369

Biblioteca Padro

RequestStopLimit
Obtm o preo da ordem pendente do tipo Stop Limit, utilizado no ltimo pedido.
double RequestStoplimit() const

Valor de retorno
O preo da ordem pendente do tipo Stop Limit, no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3370

Biblioteca Padro

RequestSL
Obtm o preo do Stop Loss da ordem, utilizado no ltimo pedido.
double RequestSL() const

Valor de retorno
O preo do Stop Loss, utilizado no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3371

Biblioteca Padro

RequestTP
Obtm o preo do Take Profit da ordem, utilizado no ltimo pedido.
double RequestTP() const

Valor de retorno
O preo do Take Profit , usado no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3372

Biblioteca Padro

RequestDeviation
Obtm o desvio de preo da ordem, utilizado no ltimo pedido.
ulong RequestDeviation() const

Valor de retorno
O desvio de preo da ordem, utilizado no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3373

Biblioteca Padro

RequestType
Obtm o tipo de ordem, utilizado no ltimo pedido.
ENUM_ORDER_TYPE RequestType() const

Valor de retorno
Tipo de ordem, utilizado no ltimo pedido (valor do enumerador ENUM_ORDER_TYPE).

2000-2015, MetaQuotes Software Corp.

3374

Biblioteca Padro

RequestTypeDescription
Obtm o tipo de ordem (como string), utilizado no ltimo pedido.
string RequestTypeDescription() const

Valor de retorno
O tipo de ordem (como string), utilizado no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3375

Biblioteca Padro

RequestTypeFilling
Obtm do tipo de preenchimento da ordem, utilizado no ltimo pedido.
ENUM_ORDER_TYPE_FILLING RequestTypeFilling() const

Valor de retorno
O tipo de preenchimento da ordem (valor do enumerador ENUM_ORDER_TYPE_FILLING), utilizado no
ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3376

Biblioteca Padro

RequestTypeFillingDescription
Obtm o tipo de preenchimento da ordem (como string), utilizado no ltimo pedido.
string RequestTypeFillingDescription() const

Valor de retorno
O tipo de preenchimento (como string) da ordem, utilizado no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3377

Biblioteca Padro

RequestTypeTime
Obtm o perodo de validade da ordem, utilizado no ltimo pedido.
ENUM_ORDER_TYPE_TIME RequestTypeTime() const

Valor de retorno
O perodo de validade da ordem (valor do enumerador ENUM_ORDER_TYPE_TIME), utilizado no
ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3378

Biblioteca Padro

RequestTypeTimeDescription
Obtm o perodo de validade da ordem (como string), utilizado no ltimo pedido.
string RequestTypeTimeDescription() const

Valor de retorno
O perodo de validade da ordem (como string), utilizado no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3379

Biblioteca Padro

RequestExpiration
Obtm o tempo de validade da ordem, utilizado no ltimo pedido.
datetime RequestExpiration() const

Valor de retorno
O tempo de validade da ordem, utilizado no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3380

Biblioteca Padro

RequestComment
Obtm o comentrio da ordem, utilizado no ltimo pedido.
string RequestComment() const

Valor de retorno
O comentrio da ordem, utilizado no ltimo pedido.

2000-2015, MetaQuotes Software Corp.

3381

Biblioteca Padro

Result
Obtm a cpia da estrutura do resultado do ltimo pedido.
void Result(
MqlTradeResult& result

// reference

) const

Parmetros
result
[Out] Referente a estrutura do tipo MqlTradeRequest.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3382

Biblioteca Padro

ResultRetcode
Obtm o cdigo de resultado do pedido.
uint ResultRetcode() const

Valor de retorno
O cdigo do resultado do pedido.

2000-2015, MetaQuotes Software Corp.

3383

Biblioteca Padro

ResultRetcodeDescription
Obtm o cdigo de resultado do pedido como texto.
string ResultRetcodeDescription() const

Valor de retorno
Cdigo de resultado do pedido como texto.

2000-2015, MetaQuotes Software Corp.

3384

Biblioteca Padro

ResultDeal
Obtm o ticket da oferta.
ulong ResultDeal() const

Valor de retorno
Ticket da oferta, se o negcio foi executado.

2000-2015, MetaQuotes Software Corp.

3385

Biblioteca Padro

ResultOrder
Obtm o ticket da ordem.
ulong ResultOrder() const

Valor de retorno
Ticket da ordem, se a ordem foi colocada.

2000-2015, MetaQuotes Software Corp.

3386

Biblioteca Padro

ResultVolume
Obtm o volume de oferta ou ordem.
double ResultVolume() const

Valor de retorno
Volume de oferta ou ordem.

2000-2015, MetaQuotes Software Corp.

3387

Biblioteca Padro

ResultPrice
Obtm o preo, confirmado pela corretora.
double ResultPrice() const

Valor de retorno
Preo, confirmado pela corretora.

2000-2015, MetaQuotes Software Corp.

3388

Biblioteca Padro

ResultBid
Obtm o preo bid atual (requote).
double ResultBid() const

Valor de retorno
Preo bid atual (requote).

2000-2015, MetaQuotes Software Corp.

3389

Biblioteca Padro

ResultAsk
Obtm o preo ask atual (requote).
double ResultAsk() const

Valor de retorno
Preo ask atual (requote).

2000-2015, MetaQuotes Software Corp.

3390

Biblioteca Padro

ResultComment
Obtm o comentrio da corretora.
string ResultComment() const

Valor de retorno
Comentrio da corretora sobre a operao.

2000-2015, MetaQuotes Software Corp.

3391

Biblioteca Padro

CheckResult
Obtm a cpia da estrutura do resultado da verificao do ltimo pedido.
void CheckResult(
MqlTradeCheckResult& check_result

// reference

) const

Parmetros
check_result
[out] Referente a estrutura de destino do tipo MqlTradeCheckResult.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3392

Biblioteca Padro

CheckResultRetcode
Obtm o valor do campo retcode do tipo MqlTradeCheckResult, preenchido durante a verificao da
exatido do pedido.
uint CheckResultRetcode() const

Valor de retorno
O valor do campo retcode (cdigo de erro) do tipo MqlTradeCheckResult, preenchido durante a
verificao da exatido do pedido.

2000-2015, MetaQuotes Software Corp.

3393

Biblioteca Padro

CheckResultRetcodeDescription
Obtm a string de descrio do campo retcode do tipo MqlTradeCheckResult, preenchido durante a
verificao da exatido do pedido.
string ResultRetcodeDescription() const

Valor de retorno
A descrio da string do campo retcode (cdigo de erro) do tipo MqlTradeCheckResult, preenchido
durante a verificao da exatido do pedido.

2000-2015, MetaQuotes Software Corp.

3394

Biblioteca Padro

CheckResultBalance
Obtm o valor do campo saldo do tipo MqlTradeCheckResult, preenchido durante a verificao da
exatido do pedido.
double CheckResultBalance() const

Valor de retorno
O valor do campo saldo (valor do saldo aps a execuo da operao de negociao) do tipo
MqlTradeCheckResult, preenchido durante a verificao da exatido do pedido.

2000-2015, MetaQuotes Software Corp.

3395

Biblioteca Padro

CheckResultEquity
Obtm o valor do campo capital lquido do tipo MqlTradeCheckResult, preenchido durante a verificao
da exatido do pedido.
double CheckResultEquity() const

Valor de retorno
O valor do campo capital lquido (valor do capital lquido ser aps a execuo da operao de
negociao) do tipo MqlTradeCheckResult, preenchido durante a verificao da exatido do pedido.

2000-2015, MetaQuotes Software Corp.

3396

Biblioteca Padro

CheckResultProfit
Obtm o valor do campo lucro do tipo MqlTradeCheckResult, preenchido durante a verificao da
exatido do pedido.
double CheckResultProfit() const

Valor de retorno
O valor do campo de lucro (o valor lucro ser aps a execuo da operao de negociao) do tipo
MqlTradeCheckResult, preenchido durante a verificao da exatido do pedido.

2000-2015, MetaQuotes Software Corp.

3397

Biblioteca Padro

CheckResultMargin
Obtm o valor do campo margem do tipo MqlTradeCheckResult, preenchido durante a verificao da
exatido do pedido.
double CheckResultMargin() const

Valor de retorno
O valor do campo margem (margem necessria para o funcionamento da negociao) do tipo
MqlTradeCheckResult, preenchido durante a verificao da exatido do pedido.

2000-2015, MetaQuotes Software Corp.

3398

Biblioteca Padro

CheckResultMarginFree
Obtm o valor do campo margin_free do tipo MqlTradeCheckResult, preenchido durante a verificao
da exatido do pedido.
double CheckResultMarginFree() const

Valor de retorno
O valor do campo margin_free (margem livre que ficar aps a execuo da operao de
negociao) do tipo MqlTradeCheckResult, preenchido durante a verificao da exatido do pedido.

2000-2015, MetaQuotes Software Corp.

3399

Biblioteca Padro

CheckResultMarginLevel
Obtm o valor do campo margin_level do tipo MqlTradeCheckResult, preenchido durante a verificao
da exatido do pedido.
double CheckResultMarginLevel() const

Valor de retorno
O valor do campo margin_level (nvel de margem ser ajustado aps a execuo da operao de
negociao) do tipo MqlTradeCheckResult, preenchido durante a verificao da exatido do pedido.

2000-2015, MetaQuotes Software Corp.

3400

Biblioteca Padro

CheckResultComment
O valor do campo de comentrio do tipo MqlTradeCheckResult, preenchido durante a verificao da
exatido do pedido.
string CheckResultComment() const

Valor de retorno
O valor do campo comentrio (comentrio ao cdigo de resposta, descrio de erro) do tipo
MqlTradeCheckResult, preenchido durante a verificao da exatido do pedido.

2000-2015, MetaQuotes Software Corp.

3401

Biblioteca Padro

PrintRequest
Imprime os ltimos parmetros do pedido no dirio.
void PrintRequest() const

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3402

Biblioteca Padro

PrintResult
Imprime os resultados do ltimo pedido no dirio.
void PrintResult() const

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3403

Biblioteca Padro

FormatRequest
Prepara a string formatada com parmetros do ltimo pedido.
string FormatRequest(
string&

str,

const MqlTradeRequest& request

// target string
// request

) const

Parmetros
str
[in] String de destino, transmitida por referncia.
request
[A] Uma estrutura do tipo MqlTradeRequest com parmetros do ltimo pedido.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3404

Biblioteca Padro

FormatRequestResult
Prepara a string formatada com os resultados da ltima execuo do pedido.
string FormatRequestResult(
string&

str,

// string

const MqlTradeRequest& request,

// request structure

const MqlTradeResult&

// result structure

result

) const

Parmetros
str
[in] String de destino, transmitida por referncia.
request
[in] Uma estrutura do tipo MqlTradeRequest com parmetros do ltimo pedido.
result
[in] Uma estrutura do tipo MqlTradeResult com os resultados da ltimo pedido.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3405

Biblioteca Padro

CTerminalInfo
CTerminalInfo uma classe de acesso simplificado s propriedades do ambiente do programa MQL5.

Descrio
A classe CTerminalInfo possibilita o acesso s propriedades do ambiente do programa MQL5.

Declarao
class CTerminalInfo : public CObject

Ttulo
#include <Trade\TerminalInfo.mqh>

Mtodos de classe pelos grupos


Mtodos de acesso s propriedades do tipo
integer
Build

Obtm o nmero de compilao do terminal do


cliente

IsConnected

Obtm as informaes sobre a conexo no


servidor de negociao

IsDLLsAllowed

Obtm as informaes sobre a permisso de


uso de arquivo DLL

IsTradeAllowed

Obtm as informaes sobre a permisso de


negociao

IsEmailEnabled

Obtm as informaes sobre a permisso para


enviar e-mails para servidor SMTP e login,
especificado nas configuraes do terminal

IsFtpEnabled

Obtm as informaes sobre a permisso para


enviar relatrios de negociao ao servidor FTP
e login, especificado nas configuraes do
terminal

MaxBars

Obtm as informaes sobre o nmero mximo


de barras no grfico

CodePage

Obtm as informaes sobre a pgina de cdigo


do idioma no terminal do cliente

CPUCores

Obtm as informaes sobre os ncleos da CPU

MemoryPhysical

Obtm as informaes sobre a memria fsica


(em Mb)

MemoryTotal

Obtm as informaes sobre o total de


memria, disponvel para processamento do

2000-2015, MetaQuotes Software Corp.

3406

Biblioteca Padro

terminal/agente (em Mb)


MemoryAvailable

Obtm as informaes sobre a memria livre,


disponvel para processamento do terminal/
agente (em Mb)

MemoryUsed

Obtm as informaes sobre a memria,


utilizada pelo processamento do terminal/
agente (em Mb)

IsX64

Obtm as informaes sobre o tipo de terminal


do cliente (32/64 bit)

OpenCLSupport

Obtm as informaes sobre a verso do


OpenCL, apoiada pela placa de vdeo

DiskSpace

Obtm as informaes sobre o espao livre em


disco (em Mb)

Mtodos para acesso s propriedades do tipo


string
Language

Obtm o idioma do terminal do cliente

Name

Obtm o nome do terminal do cliente

Company

Obtm a empresa do terminal do cliente

Path

Obtm a pasta do terminal de cliente

DataPath

Obtm a pasta de dados do terminal do cliente

CommonDataPath

Obtm a pasta de dados comum de todos os


terminais de cliente, instalados no computador

Acesso a funes API MQL5


InfoInteger

Obtm o valor da propriedade de tipo inteiro

InfoString

Obtm o valor da propriedade do tipo string

2000-2015, MetaQuotes Software Corp.

3407

Biblioteca Padro

Build
Obtm o nmero de compilao do terminal do cliente.
int CBuild() const

Valor de retorno
Nmero de compilao do terminal do cliente.
Observao
Para obter o nmero de compilao que usa a funo TerminalInfoInteger() (propriedade
TERMINAL_BUILD).

2000-2015, MetaQuotes Software Corp.

3408

Biblioteca Padro

IsConnected
Obtm as informaes sobre a conexo no servidor de negociao.
bool IsConnected() const

Valor de retorno
verdadeiro, se o terminal est conectado no servidor de negociao, caso contrrio falso.
Observao
Para obter o status da
TERMINAL_CONNECTED).

conexo,

utiliza

funo

TerminalInfoInteger()

2000-2015, MetaQuotes Software Corp.

(propriedade

3409

Biblioteca Padro

IsDLLsAllowed
Obtm as informaes sobre a permisso de uso de arquivo DLL.
bool IsDLLsAllowed() const

Valor de retorno
verdadeiro, se o uso DLL foi permitido, caso contrrio falso.
Observao
Para obter a permisso de uso de DLL, usa a funo TerminalInfoInteger() (propriedade do
TERMINAL_DLLS_ALLOWED).

2000-2015, MetaQuotes Software Corp.

3410

Biblioteca Padro

IsTradeAllowed
Obtm as informaes sobre a permisso de negociao.
bool IsTradeAllowed() const

Valor de retorno
verdadeiro, se a negociao foi permitida, caso contrrio falso.
Observao
Para obter permisso de negociao,
TERMINAL_TRADE_ALLOWED).

usa

funo

TerminalInfoInteger()

2000-2015, MetaQuotes Software Corp.

(propriedade

3411

Biblioteca Padro

IsEmailEnabled
Obtm as informaes sobre a permisso para enviar e-mails para o servidor SMTP e login,
especificado nas configuraes do terminal.
bool IsEmailEnabled() const

Valor de retorno
verdadeiro, se o envio de e-mails foi permitido, caso contrrio falso.
Observao
Para obter a permisso para enviar e-mails, usa a funo TerminalInfoInteger() (propriedade
TERMINAL_EMAIL_ENABLED).

2000-2015, MetaQuotes Software Corp.

3412

Biblioteca Padro

IsFtpEnabled
Obtm as informaes sobre a permisso para enviar relatrios de negociao ao servidor FTP e login,
especificado nas configuraes do terminal.
bool IsFtpEnabled() const

Valor de retorno
verdadeiro, se os envio de relatrios de negociao para o servidor FTP foi permitido, caso
contrrio falso.
Observao
Para obter as informaes sobre a permisso para enviar relatrios de negociao, utiliza a funo
TerminalInfoInteger() (propriedade TERMINAL_FTP_ENABLED).

2000-2015, MetaQuotes Software Corp.

3413

Biblioteca Padro

MaxBars
Obtm o nmero mximo de barras no grfico, especificado nas configuraes do terminal cliente.
int MaxBars() const

Valor de retorno
O nmero mximo de barras no grfico.
Observao
Para obter o nmero mximo de barras no grfico, usa a funo TerminalInfoInteger() (propriedade
TERMINAL_MAXBARS).

2000-2015, MetaQuotes Software Corp.

3414

Biblioteca Padro

CodePage
Obtm as informaes sobre a pgina de cdigo do idioma no terminal do cliente.
int CodePage() const

Valor de retorno
Pgina de cdigo do idioma no terminal do cliente.
Observao
Para obter a pgina de cdigo que utiliza a funo TerminalInfoInteger() (propriedade
TERMINAL_CODEPAGE).

2000-2015, MetaQuotes Software Corp.

3415

Biblioteca Padro

CPUCores
Obtm as informaes sobre a quantidade de ncleos da CPU no sistema.
int CPUCores() const

Valor de retorno
Quantidade de ncleos da CPU no sistema.
Observao
Para obter a quantidade de ncleos de CPU, usa a funo TerminalInfoInteger() (propriedade
TERMINAL_CPU_CORES).

2000-2015, MetaQuotes Software Corp.

3416

Biblioteca Padro

MemoryPhysical
Obtm as informaes sobre a memria fsica (em Mb).
int MemoryPhysical() const

Valor de retorno
Memria fsica (em Mb).
Observao
Para obter a memria fsica,
TERMINAL_MEMORY_PHYSICAL).

utiliza

funo

TerminalInfoInteger()

2000-2015, MetaQuotes Software Corp.

(propriedade

3417

Biblioteca Padro

MemoryTotal
Obtm as informaes sobre o total de memria, disponvel para processamento do terminal/agente
(em Mb).
int MemoryTotal() const

Valor de retorno
Total de memria (em Mb), disponvel ao terminal/agente.
Observao
Para obter o total de memria, utiliza
TERMINAL_MEMORY_TOTAL).

funo

TerminalInfoInteger()

2000-2015, MetaQuotes Software Corp.

(propriedade

3418

Biblioteca Padro

MemoryAvailable
Obtm as informaes sobre a memria livre, disponvel para processamento do terminal/agente (em
Mb).
int MemoryTotal() const

Valor de retorno
Memria livre (em Mb), disponvel para o terminal/agente.
Observao
Para obter a memria livre,
TERMINAL_MEMORY_TOTAL).

utiliza

funo

TerminalInfoInteger()

2000-2015, MetaQuotes Software Corp.

(propriedade

3419

Biblioteca Padro

MemoryUsed
Obtm as informaes sobre a memria, utilizada pelo terminal/agente (em Mb).
int MemoryUsed() const

Valor de retorno
A memria, utilizada pelo cliente de terminal/agente (em Mb).
Observao
Para obter a memria usada pelo terminal, utiliza a funo TerminalInfoInteger() (propriedade
TERMINAL_MEMORY_USED).

2000-2015, MetaQuotes Software Corp.

3420

Biblioteca Padro

IsX64
Obtm as informaes sobre o tipo de terminal do cliente.
bool IsX64() const

Valor de retorno
verdadeiro, se a verso de 64 bits est sendo usada, caso contrrio falso.
Observao
Para obter o tipo de terminal do cliente, utiliza a funo TerminalInfoInteger() (propriedade
TERMINAL_X64).

2000-2015, MetaQuotes Software Corp.

3421

Biblioteca Padro

OpenCLSupport
Obtm as informaes sobre a verso do OpenCL, apoiada pela placa de vdeo.
int OpenCLSupport() const

Valor de retorno
O valor retornado tem a seguinte forma: 0x00010002 = "1.2". O 0(zero) significa que no h suporte
para OpenCL.
Observao
Para obter a verso do OpenCL,
TERMINAL_OPENCL_SUPPORT).

usa

funo

TerminalInfoInteger()

2000-2015, MetaQuotes Software Corp.

(propriedade

3422

Biblioteca Padro

DiskSpace
Obtm as informaes sobre o espao livre em disco, disponvel ao terminal/agente (em Mb).
int MDiskSpace() const

Valor de retorno
Espao livre em disco (em Mb), disponvel ao cliente de terminal/agente (para arquivos, salvos na
pasta MQL5\Files).
Observao
Para obter o espao livre em disco, usa a funo TerminalInfoInteger() (propriedade
TERMINAL_DISK_SPACE).

2000-2015, MetaQuotes Software Corp.

3423

Biblioteca Padro

Language
Obtm as informaes sobre o idioma do terminal do cliente.
string Language() const

Valor de retorno
Idioma, utilizado no terminal do cliente.
Observao
Para obter o idioma, utiliza a funo TerminalInfoString() (propriedade TERMINAL_LANGUAGE).

2000-2015, MetaQuotes Software Corp.

3424

Biblioteca Padro

Name
Obtm a informao do nome do terminal de cliente.
string Name() const

Valor de retorno
Nome do terminal de cliente.
Observao
Para obter o nome do terminal do cliente, utiliza a funo TerminalInfoString() (propriedade
TERMINAL_NAME).

2000-2015, MetaQuotes Software Corp.

3425

Biblioteca Padro

Company
Obtm as informaes sobre o nome da corretora.
string Company() const

Valor de retorno
O nome do corretora.
Observao
Para obter o nome
TERMINAL_COMPANY).

da

corretora,

usa

funo

TerminalInfoString()

2000-2015, MetaQuotes Software Corp.

(propriedade

3426

Biblioteca Padro

Path
Obtm a pasta do terminal de cliente.
string Path() const

Valor de retorno
A pasta do terminal de cliente.
Observao
Para obter a pasta do terminal de cliente, utiliza a funo TerminalInfoString() (propriedade
TERMINAL_PATH).

2000-2015, MetaQuotes Software Corp.

3427

Biblioteca Padro

DataPath
Obtm as informaes sobre a pasta de dados do terminal.
string DataPath() const

Valor de retorno
Pasta de dados do terminal de cliente.
Observao
Para obter a pasta de dados do terminal do cliente, utiliza a funo TerminalInfoString()
(propriedade TERMINAL_DATA_PATH).

2000-2015, MetaQuotes Software Corp.

3428

Biblioteca Padro

CommonDataPath
Obtm a pasta de dados comum de todos os terminais de cliente, instalados no computador.
string CommonDataPath() const

Valor de retorno
Pasta de dados comum.
Observao
Para obter pasta de dados comum que usa a funo TerminalInfoString() (propriedade
COMMON_DATA_PATH).

2000-2015, MetaQuotes Software Corp.

3429

Biblioteca Padro

InfoInteger
Retorna o valor de uma propriedade correspondente do ambiente de um programa mql5.
int TerminalInfoInteger(
int property_id

// identificador de uma propriedade

);

Parmetros
property_id
[in] Identificador de uma propriedade.
ENUM_TERMINAL_INFO_INTEGER.

Pode

ser

um

dos

Valor de retorno
Valor do tipo int.
Observao
Para obter o valor da propriedade, usa a funo TerminalInfoInteger().

2000-2015, MetaQuotes Software Corp.

valores

do

enumerador

3430

Biblioteca Padro

InfoString
A funo retorna o valor de uma propriedade correspondente do ambiente do programa mql5. A
propriedade deve ser do tipo string.
string TerminalInfoString(
int property_id

// identificador de uma propriedade

);

Parmetros
property_id
[in] Identificador de uma propriedade.
ENUM_TERMINAL_INFO_STRING.

Pode

ser

um

dos

Valor de retorno
Valor do tipo string.
Observao
Para obter o valor da propriedade, usa a funo TerminalInfoString().

2000-2015, MetaQuotes Software Corp.

valores

do

enumerador

3431

Biblioteca Padro

Classes de Estratgias de Negociao


Esta seo contm detalhes tcnicos de como trabalhar com classes para criao, teste de estratgias
de negociao e descrio dos principais componentes da biblioteca padro MQL5.
O uso destas classes vai economizar tempo ao criar as estratgias de negociao.
A Biblioteca Padro MQL5 (em termos de estratgias de negociao) colocada no diretrio do
terminal, na pasta Include\Expert.
Classes Base

Descrio

CExpertBase

Classe base para todas as classes de estratgia


de negociao

CExpert

Classe base para Expert Advisor

CExpertSignal

Classe base para classes de Trading Signal

CExpertTrailing

Classe base para classes de Trailing Stop

CExpertMoney

Classe base para classes de Money Management

Classes de sinal de negociao

Descrio

CSignalAC

O mdulo de sinais baseado em modelos de


mercado do indicador Accelerator Oscillator.

CSignalAMA

O mdulo de sinais baseado em modelos de


mercado do indicador Adaptive Moving
Average.

CSignalAO

O mdulo de sinais baseado em modelos de


mercado do indicador Awesome Oscillator.

CSignalBearsPower

O mdulo de sinais baseado em modelos de


mercado do indicador oscilador Bears Power.

CSignalBullsPower

O mdulo de sinais baseado em modelos de


mercado do indicador oscilador Bulls Power.

CSignalCCI

O mdulo de sinais baseado em modelos de


mercado do indicador oscilador Commodity
Channel Index.

CSignalDeM

O mdulo de sinais baseado em modelos de


mercado do indicador oscilador DeMarker.

CSignalDEMA

O mdulo de sinais baseado em modelos de


mercado do indicador Double Exponential
Moving Average.

CSignalEnvelopes

O mdulo de sinais baseado em modelos de


mercado do indicador Envelopes.

CSignalFrAMA

O mdulo de sinais baseado em modelos de

2000-2015, MetaQuotes Software Corp.

3432

Biblioteca Padro

Classes de sinal de negociao

Descrio
mercado do indicador Fractal Adaptive Moving
Average.

CSignalITF

O mdulo para filtro de sinais pela hora.

CSignalMACD

O mdulo de sinais baseado em modelos de


mercado do indicador oscilador MACD.

CSignalMA

O mdulo de sinais baseado em modelos de


mercado do indicador Moving Average.

CSignalSAR

O mdulo de sinais baseado em modelos de


mercado do indicador Parabolic SAR.

CSignalRSI

O mdulo de sinais baseado em modelos de


mercado do indicador oscilador Relative
Strength Index.

CSignalRVI

O mdulo de sinais baseado em modelos de


mercado do indicador oscilador Relative Vigor
Index.

CSignalStoch

O mdulo de sinais baseado em modelos de


mercado do indicador oscilador Stochastic.

CSignalTRIX

O mdulo de sinais baseado em modelos de


mercado do
indicador oscilador Triple
Exponential Average.

CSignalTEMA

O mdulo de sinais baseado em modelos de


mercado do indicador Triple Exponential Moving
Average.

CSignalWPR

O mdulo de sinais baseado em modelos de


mercado do indicador oscilador Williams
Percent Range.

Classe Trailing Stop

Descrio

CTrailingFixedPips

Essa classe implementa algoritmo de Trailing


Stop baseado em pontos fixos

CTrailingMA

Essa classe implementa algoritmo de Trailing


Stop baseado nos valores do indicador Moving
Average

CTrailingNone

Uma classe stub, no usa qualquer algoritmo de


Trailing Stop

CTrailingPSAR

Essa classe implementa algoritmo de Trailing


Stop baseado nos valores do indicador Parabolic
SAR

Classes de Gerenciamento de Dinheiro

Descrio

2000-2015, MetaQuotes Software Corp.

3433

Biblioteca Padro

CMoneyFixedLot

Uma classe com um algoritmo, baseado em


negociao com tamanho predefinido de lote
fixo.

CMoneyFixedMargin

Uma classe com um algoritmo, baseado em


negociao com margem fixa predefinida.

CMoneyFixedRisk

Uma classe com um algoritmo, baseado em


negociao com risco predefinido.

CMoneyNone

Uma classe com um algoritmo, baseado em


negociao com o tamanho do lote mnimo
permitido.

CMoneySizeOptimized

Uma classe com um algoritmo, baseado em


negociao com o tamanho de lote varivel, em
funo de resultados das ofertas anteriores.

2000-2015, MetaQuotes Software Corp.

3434

Biblioteca Padro

Classes Base para Expert Advisors


Esta seo contm detalhes tcnicos de como trabalhar com classes para criao, teste de estratgias
de negociao e descrio dos principais componentes da biblioteca padro MQL5.
O uso destas classes vai economizar tempo ao criar as estratgias de negociao.
A Biblioteca Padro MQL5 (em termos de estratgias de negociao) colocada no diretrio do
terminal, na pasta Include\Expert.
Classe

Descrio

CExpertBase

Classe base para todas as classes de estratgia


de negociao

CExpert

Classe base para Expert Advisor

CExpertSignal

Classe base para classes de Trading Signal

CExpertTrailing

Classe base para classes de Trailing Stop

CExpertMoney

Classe base para classes de Money Management

2000-2015, MetaQuotes Software Corp.

3435

Biblioteca Padro

CExpertBase
CExpertBase uma classe base para a CExpert e todas as classes de estratgia de negociao.

Descrio
CExpertBase fornece os dados e mtodos que so comuns a todos os objetos do Expert Advisor.

Declarao
class CExpertBase : public CObject

Ttulo
#include <Expert\ExpertBase.mqh>

Mtodos de classe
Mtodos pblicos:
Inicializao
virtual Init

Instncia de classe do mtodo de inicializao.

virtual ValidationSettings

Verifica as configuraes

Parmetros
Symbol

Define o smbolo

Period

Define o timeframe

Magic

Define a ID do Expert Advisor

Indicadores e TimeSeries
virtual SetPriceSeries

Define ponteiros para timeseries


(sries de preos)

externas

virtual SetOtherSeries

Define ponteiros para timeseries


(sries sem preo)

externos

virtual InitIndicators

Inicializa os indicadores e timeseries

O acesso aos Dados Protegidos


InitPhase

Obtm a fase atual da inicializao de objeto

TrendType

Define o tipo de tendncia

UsedSeries

Obtm mscara de bits das timeseries usadas

EveryTick

Define o flag "Every tick"

Acesso as Timeseries
Open

Obtm o elemento das timeseries "Open" pelo


ndice

2000-2015, MetaQuotes Software Corp.

3436

Biblioteca Padro

High

Obtm o elemento das timeseries "High" pelo


ndice

Low

Obtm o elemento das timeseries "Low" pelo


ndice

Close

Obtm o elemento das timeseries "Close" pelo


ndice

Spread

Obtm o elemento das timeseries Spread pelo


ndice

Time

Obtm o elemento das timeseries Time pelo


ndice

TickVolume

Obtm o elemento das timeseries TickVolume


pelo ndice

RealVolume

Obtm o elemento das timeseries RealVolume


pelo ndice

Mtodos Protegidos:
A inicializao da TimeSeries
InitOpen

Mtodo de inicializao das Timeseries Open

InitHigh

Mtodo de inicializao das Timeseries High

InitLow

Mtodo de inicializao das Timeseries Low

InitClose

Mtodo de inicializao das Timeseries Close

InitSpread

Mtodo de inicializao das Timeseries Spread

InitTime

Mtodo de inicializao das Timeseries Time

InitTickVolume

Mtodo de
TickVolume

inicializao

das

Timeseries

InitRealVolume

Mtodo de
RealVolume

inicializao

das

Timeseries

Mtodos de Servios
virtual PriceLevelUnit

Obtm a unidade do nvel de preos

virtual StartIndex

Obtm o ndice da barra para anlise

virtual CompareMagic

Compara a ID do Expert Advisor com o valor


determinado

2000-2015, MetaQuotes Software Corp.

3437

Biblioteca Padro

InitPhase
Obtm a fase atual da inicializao de objeto.
ENUM_INIT_PHASE InitPhase()

Valor de retorno
Fase atual da inicializao do objeto.
Observao
A inicializao do objeto consiste em vrias fases:
1. Incio da inicializao.
- iniciar
- finalizar
- permitir
- no permitir

- aps finalizao do construtor


- aps mtodo Init(...) completado com sucesso.
- chamar o mtodo Init(...)
- chamar o mtodo ValidationSettings() e outros mtodos de incializao

2. A definio dos parmetros da fase. Nesta fase voc precisa configurar todos os parmetros de
objeto utilizados para criar indicadores.
- iniciar
- aps mtodo Init(...) completado com sucesso.
- finalizar
- aps mtodo ValidationSettings() completado com sucesso
- permitir
- chamar os mtodos Symbol(...) e Period(...)
- no permitir
- chamar os mtodosInit(...), SetPriceSeries(...), SetOtherSeries(...) e
InitIndicators(...)
3. Verificao de parmetros.
- iniciar
- finalizar
- permitir
- no permitir

- aps mtodo ValidationSettings() completado com sucesso


- aps mtodo InitIndicators(...) completado com sucesso
- chamar os mtodos Symbol(...), Period(...) e InitIndicators(...)
- chamar qualquer mtodo de inicializao

4. Finalizao da inicializao.
- iniciar
- no permitir

- aps mtodo InitIndicators(...) completado com sucesso


- chamar mtodos de inicializao

2000-2015, MetaQuotes Software Corp.

3438

Biblioteca Padro

TrendType
Define o tipo de tendncia.
void TrendType(
M_TYPE_TREND

value

// new value

Parmetros
value
[in] O novo valor do tipo tendncia.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3439

Biblioteca Padro

UsedSeries
Obtm mscara de bits (bitmask) das timeseries usadas.
int UsedSeries()

Valor de retorno
A lista das timeseries usadas como mscara de bits (bitmask).
Observao
Se o bit for definido, as timeseries correspondentes so usadas, se no for definido, as timeseries
no so usadas.
As timeseries bit correspondem:
bit 0 - timeseries
bit 1 - timeseries
bit 2 - timeseries
bit 3 - timeseries
bit 4 - timeseries
bit 5 - timeseries
bit 6 - timeseries
bit 7 - timeseries

Open,
High,
Low,
Close,
Open,
Time,
TickVolume,
RealVolume.

2000-2015, MetaQuotes Software Corp.

3440

Biblioteca Padro

EveryTick
Define o flag "Every tick".
void EveryTick(
bool

value

// flag

Parmetros
value
[in] O novo valor da flag.
Valor de retorno
Nenhum.
Observao
Se o flag no estiver definido, o mtodo de processamento chamado somente no timeframe e
smbolo que a nova barra est trabalhando.

2000-2015, MetaQuotes Software Corp.

3441

Biblioteca Padro

Open
Obtm o elemento das timeseries "Open" pelo ndice.
double Open(
int

ind

// index

Parmetros
ind
[in] ndice do elemento.
Valor de retorno
Se com sucesso, retorna o valor numrico do elemento das timeseries Open com ndice
especificado, caso contrrio retorna EMPTY_VALUE.
Observao
O EMPTY_VALUE devolvido em dois casos:
1. Timeseries no usada (o bit correspondente no est definido).
2. ndice do elemento est fora do intervalo.

2000-2015, MetaQuotes Software Corp.

3442

Biblioteca Padro

High
Obtm o elemento das timeseries "High" pelo ndice .
double High(
int

ind

// index

Parmetros
ind
[in] ndice do elemento.
Valor de retorno
Se com sucesso, ele retorna o valor numrico do elemento das timeseries High pelo ndice
determinado, caso contrrio ele retorna EMPTY_VALUE.
Observao
O EMPTY_VALUE devolvido em dois casos:
1. Timeseries no usada (o bit correspondente no est definido).
2. ndice do elemento est fora do intervalo.

2000-2015, MetaQuotes Software Corp.

3443

Biblioteca Padro

Low
Obtm o elemento das timeseries "Low" pelo ndice.
double Low(
int

ind

// index

Parmetros
ind
[in] ndice do elemento.
Valor de retorno
Se com sucesso, retorna o valor numrico do elemento das timeseries Low com ndice especificado,
caso contrrio retorna EMPTY_VALUE.
Observao
O EMPTY_VALUE devolvido em dois casos:
1. Timeseries no usada (o bit correspondente no est definido).
2. ndice do elemento est fora do intervalo.

2000-2015, MetaQuotes Software Corp.

3444

Biblioteca Padro

Close
Obtm o elemento das timeseries "Close" pelo ndice.
double Close(
int

ind

// index

Parmetros
ind
[in] ndice do elemento.
Valor de retorno
Se com sucesso, retorna o valor numrico do elemento das timeseries Close com ndice
especificado, caso contrrio retorna EMPTY_VALUE.
Observao
O EMPTY_VALUE devolvido em dois casos:
1. Timeseries no usada (o bit correspondente no est definido).
2. ndice do elemento est fora do intervalo.

2000-2015, MetaQuotes Software Corp.

3445

Biblioteca Padro

Spread
Obtm o elemento das timeseries Spread pelo ndice.
double Spread(
int

ind

// index

Parmetros
ind
[in] ndice do elemento.
Valor de retorno
Se com sucesso, retorna o valor numrico do elemento das timeseries Spread com ndice
especificado, caso contrrio retorna EMPTY_VALUE.
Observao
O EMPTY_VALUE devolvido em dois casos:
1. Timeseries no usada (o bit correspondente no est definido).
2. ndice do elemento est fora do intervalo.

2000-2015, MetaQuotes Software Corp.

3446

Biblioteca Padro

Time
Obtm o elemento das timeseries Time pelo ndice.
datetime Time(
int

ind

// index

Parmetros
ind
[in] ndice do elemento.
Valor de retorno
Se com sucesso, retorna o valor numrico do elemento das timeseries Time com ndice
especificado, caso contrrio retorna EMPTY_VALUE.
Observao
O EMPTY_VALUE devolvido em dois casos:
1. Timeseries no usada (o bit correspondente no est definido).
2. ndice do elemento est fora do intervalo.

2000-2015, MetaQuotes Software Corp.

3447

Biblioteca Padro

TickVolume
Obtm o elemento das timeseries TickVolume pelo ndice.
long TickVolume(
int

ind

// Index

Parmetros
ind
[in] ndice do elemento.
Valor de retorno
Se com sucesso, retorna o valor numrico do elemento das timeseries TickVolume com ndice
especificado, caso contrrio retorna EMPTY_VALUE.
Observao
O EMPTY_VALUE devolvido em dois casos:
1. Timeseries no usada (o bit correspondente no est definido).
2. ndice do elemento est fora do intervalo.

2000-2015, MetaQuotes Software Corp.

3448

Biblioteca Padro

RealVolume
Obtm o elemento das timeseries RealVolume pelo ndice.
long RealVolume(
int

ind

// index

Parmetros
ind
[in] ndice do elemento.
Valor de retorno
Se com sucesso, retorna o valor numrico do elemento das timeseries RealVolume com ndice
especificado, caso contrrio retorna EMPTY_VALUE.
Observao
O EMPTY_VALUE devolvido em dois casos:
1. Timeseries no usada (o bit correspondente no est definido).
2. ndice do elemento est fora do intervalo.

2000-2015, MetaQuotes Software Corp.

3449

Biblioteca Padro

Init
Inicializa o objeto.
bool Init(
CSymbolInfo

symbol,

// symbol

ENUM_TIMEFRAMES period,

// timeframe

double

// point

point

Parmetros
symbol
[in] Ponteiro ao objeto de tipo CSymbolInfo para o acesso a informaes de smbolo.
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
point
[in] O "peso" do ponto de 2/4-dgitos.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3450

Biblioteca Padro

Symbol
Define o smbolo.
bool Symbol(
string

name

// symbol

Parmetros
name
[in] Smbolo (ativo).
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
A definio de trabalho do smbolo necessrio se o objeto utiliza o smbolo diferente do smbolo
definido na inicializao.

2000-2015, MetaQuotes Software Corp.

3451

Biblioteca Padro

Period
Define o timeframe.
bool Period(
ENUM_TIMEFRAMES value

// timeframe

Parmetros
value
[in] timeframe.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
A definio de trabalho do timeframe necessrio se o objeto usa o timeframe diferente do que foi
definido na inicializao.

2000-2015, MetaQuotes Software Corp.

3452

Biblioteca Padro

Magic
Define o ID do Expert Advisor .
void Magic(
ulong value

// magic

Parmetros
value
[in] ID do Expert Advisor.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3453

Biblioteca Padro

ValidationSettings
Verifica as configuraes.
virtual bool ValidationSettings()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3454

Biblioteca Padro

SetPriceSeries
Define ponteiros para sries de preos externo.
virtual bool SetPriceSeries(
CiOpen*

open,

// pointer

CiHigh*

high,

// pointer

CiLow*

low,

// pointer

CiClose*

close

// pointer

Parmetros
open
[in] Ponteiro para timeseries Open.
high
[in] Ponteiro para timeseries High.
low
[in] Ponteiro para timeseries Low.
close
[in] Ponteiro para timeseries Close.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
A configurao de ponteiros para timeseries externas (da srie de preos) necessria se o objeto
usa timeseries do smbolo e timeframe diferente do smbolo e timeframe definido na inicializao.

2000-2015, MetaQuotes Software Corp.

3455

Biblioteca Padro

SetOtherSeries
Define ponteiros para timeseries externos sem preo.
virtual bool SetOtherSeries(
CiSpread*

spread,

// pointer

CiTime*

time,

// pointer

CiTickVolume*

tick_volume,

// pointer

CiRealVolume*

real_volume

// pointer

Parmetros
spread
[in] Ponteiro para timeseries Spread.
time
[in] Ponteiro para timeseries Time.
tick_volume
[in] Ponteiro para timeseries TickVolume.
real_volume
[in] Ponteiro para timeseries RealVolume.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
A configurao de ponteiros para timeseries externas (da srie sem preo) necessria se o objeto
usa timeseries do smbolo e prazo diferente do smbolo e prazo definido na inicializao.

2000-2015, MetaQuotes Software Corp.

3456

Biblioteca Padro

InitIndicators
Inicializa todos os indicadores e sries temporais.
virtual bool InitIndicators(
CIndicators* indicators=NULL

// pointer

Parmetros
indicators
[in] Ponteiro para coleo de indicadores e timeseries.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
As timeseries so inicializadas somente se o objeto usa o smbolo ou timeframe diferente do que foi
definido na inicializao.

2000-2015, MetaQuotes Software Corp.

3457

Biblioteca Padro

InitOpen
Inicializao das timeseries Open.
bool InitOpen(
CIndicators* indicators

// pointer

Parmetros
indicators
[in] Ponteiro para coleo de indicadores e timeseries.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
As timeseries Open so inicializadas apenas se o Expert Advisor usa o smbolo/timeframe, diferente
do que foi definido na inicializao (e se as timeseries esto sendo usadas ainda).

2000-2015, MetaQuotes Software Corp.

3458

Biblioteca Padro

InitHigh
Inicializao das timeseries High.
bool InitHigh(
CIndicators* indicators

// pointer

Parmetros
indicators
[in] Ponteiro para coleo de indicadores e timeseries.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
As timeseries High so inicializadas apenas se o Expert Advisor usa o smbolo/timeframe diferente
do que foi definido na inicializao (e se as timeseries esto sendo usadas ainda).

2000-2015, MetaQuotes Software Corp.

3459

Biblioteca Padro

InitLow
Inicializao das timeseries Low .
bool InitLow(
CIndicators* indicators

// pointer

Parmetros
indicators
[in] Ponteiro para coleo de indicadores e timeseries.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
As timeseries Low so inicializadas apenas se o Expert Advisor usa o smbolo/timeframe diferente
do que foi definido na inicializao (e se as timeseries esto sendo usadas ainda).

2000-2015, MetaQuotes Software Corp.

3460

Biblioteca Padro

InitClose
Inicializao das timeseries Close.
bool InitClose(
CIndicators* indicators

// pointer

Parmetros
indicators
[in] Ponteiro para coleo de indicadores e timeseries.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
As timeseries Close so inicializadas apenas se o Expert Advisor usa o smbolo/timeframe diferente
do que foi definido na inicializao (e se as timeseries esto sendo usadas ainda).

2000-2015, MetaQuotes Software Corp.

3461

Biblioteca Padro

InitSpread
Inicializao das timeseries Spread.
bool InitSpread(
CIndicators* indicators

// pointer

Parmetros
indicators
[in] Ponteiro para coleo de indicadores e timeseries.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
As timeseries Spread so inicializadas somente se o Expert Advisor usa o smbolo/timeframe
diferente do que foi definido na inicializao (e se as timeseries esto sendo usadas ainda).

2000-2015, MetaQuotes Software Corp.

3462

Biblioteca Padro

InitTime
Inicializao das timeseries Time.
bool InitTime(
CIndicators* indicators

// pointer

Parmetros
indicators
[in] Ponteiro para coleo de indicadores e timeseries.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
As timeseries Time so inicializadas somente se o Expert Advisor usa o smbolo/timeframe
diferente do do que foi definido na inicializao (e se as timeseries esto sendo usadas ainda).

2000-2015, MetaQuotes Software Corp.

3463

Biblioteca Padro

InitTickVolume
Inicializao das timeseries TickVolume.
bool InitTickVolume(
CIndicators* indicators

// pointer

Parmetros
indicators
[in] Ponteiro para coleo de indicadores e timeseries.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
As timeseries TickVolume so inicializadas somente se o Expert Advisor usa o smbolo/timeframe
diferente do que foi definido na inicializao (e se as timeseries esto sendo usadas ainda).

2000-2015, MetaQuotes Software Corp.

3464

Biblioteca Padro

InitRealVolume
Inicializao das timeseries RealVolume.
bool InitRealVolume(
CIndicators* indicators

// pointer

Parmetros
indicators
[in] Ponteiro para coleo de indicadores e timeseries.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
As timeseries RealVolume so inicializadas somente se o Expert Advisor usa o smbolo/timeframe
diferente do que foi definido na inicializao (e se as timeseries esto sendo usadas ainda).

2000-2015, MetaQuotes Software Corp.

3465

Biblioteca Padro

PriceLevelUnit
Obtm a unidade de nvel de preos.
virtual double PriceLevelUnit()

Valor de retorno
O valor da unidade de Nvel de Preos.
Observao
O mtodo de uma classe base retorna o "peso" de 2/4 de pontos dos dgitos.

2000-2015, MetaQuotes Software Corp.

3466

Biblioteca Padro

StartIndex
Obtm o ndice da barra para anlise.
virtual int StartIndex()

Valor de retorno
O ndice de inicio da barra para analisar.
Observao
O mtodo retorna 0 se o flag para analisar a barra atual definido como verdadeiro (anlise a partir
da barra atual). Se o flag no definido, retorna 1 (anlise da ltima barra completa).

2000-2015, MetaQuotes Software Corp.

3467

Biblioteca Padro

CompareMagic
Compara a ID do Expert Advisor (mgico) com o valor determinado
virtual bool CompareMagic(
ulong magic

// value to compare

Parmetros
magic
[in] Valor para comparar.
Valor de retorno
verdadeiro se eles forem iguais, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3468

Biblioteca Padro

CExpert
CExpert uma classe base para estratgias de negociao. Foi desenvolvida com algoritmos para
trabalhar com sries temporais e indicadores e um conjunto de mtodos virtuais para estratgia de
negociao.
Como usar:
1. Preparar um algoritmo da estratgia;
2. Criar a prpria classe, herdada da classe CExpert;
3. Substituir os mtodos virtuais em sua classe com os seus prprios algoritmos.

Descrio
A classe CExpert um conjunto de mtodos virtuais para a implementao de estratgias de
negociao.

Declarao
class CExpert : public CExpertBase

Ttulo
#include <Expert\Expert.mqh>

Mtodos de classe
Inicializao
Init

Instncia de classe do mtodo de inicializao.

virtual InitSignal

Inicializa o objeto Trading Signal

virtual InitTrailing

Inicializa o objeto Trailing Stop

virtual InitMoney

Inicializa o objeto Money Management

virtual InitTrade

Inicializa o objeto Trade

virtual ValidationSettings

Verifica as configuraes

virtual InitIndicators

Inicializa indicadores e timeseries

virtual InitParameters

Mtodo de inicializao dos parmetros

virtual Deinit

Classe
de
instncia
desinicializao

virtual DeinitSignal

Desinicializa o objeto Trading Signal

virtual DeinitTrailing

Desinicializa o objeto Trailing Stop

virtual DeinitMoney

Desinicializa o objeto Money Management

virtual DeinitTrade

Desinicializa o objeto Trade

virtual DeinitIndicators

Desinicializa indicadores e timeseries

2000-2015, MetaQuotes Software Corp.

do

mtodo

de

3469

Biblioteca Padro

Parmetros
Magic

Define a ID do Expert Advisor

MaxOrders

Obtm/Define a quantidade mxima de ordens


permitidas

OnTickProcess

Define um flag para prosseguir o evento


"OnTick"

OnTradeProcess

Define um flag para prosseguir o evento


"OnTrade"

OnTimerProcess

Define um flag para prosseguir o evento


"OnTimer"

OnChartEventProcess

Define um flag para prosseguir o evento


"OnChartEvent"

OnBookEventProcess

Define um flag para prosseguir o evento


"OnBookEvent"

Mtodos de Processamento do Evento


OnTick

Manipulador do evento OnTick

OnTrade

Manipulador do evento OnTrade

OnTimer

Manipulador do evento OnTimer

OnChartEvent

Manipulador do evento OnChartEvent

OnBookEvent

Manipulador do evento OnBookEvent

Mtodos de atualizao
Refresh

Atualiza todos os dados

Processamento
Processing

Algoritmo de processamento principal

Mtodos de Entrada no Mercado


CheckOpen

Verifica as condies de abertura da posio

CheckOpenLong

Verifica condies para abrir posio comprada

CheckOpenShort

Verifica condies para abrir posio vendida

OpenLong

Abre uma posio comprada

OpenShort

Abre uma posio vendida

Mtodos de Sada do Mercado


CheckClose

Verifica condies para fechar posio atual

CheckCloseLong

Verifica condies
comprada

CheckCloseShort

Verifica condies para fechar posio vendida

2000-2015, MetaQuotes Software Corp.

para

fechar

posio

3470

Biblioteca Padro

CloseAll

Fecha a posio aberta e exclui todas as ordens

Close

Fecha a posio aberta

CloseLong

Fecha a posio comprada

CloseShort

Fecha a posio vendida

Mtodos de Reverso de Posio


CheckReverse

Verifica condies para reverso posio aberta

CheckReverseLong

Verifica condies
comprada

para

reverso

posio

CheckReverseShort

Verifica
vendida

para

reverso

posio

ReverseLong

Executa a operao de reverso da posio


comprada

ReverseShort

Executa a operao de reverso da posio


vendida

condies

Posio/Ordem dos Mtodos de Trailing


CheckTrailingStop

Verifica as condies
parmetros da posio

para

modificar

os

CheckTrailingStopLong

Verifica condies do Trailing Stop da posio


comprada

CheckTrailingStopShort

Verifica condies do Trailing Stop da posio


vendida

TrailingStopLong

Executa trailing stop para posio comprada

TrailingStopShort

Executa trailing stop para posio vendida

CheckTrailingOrderLong

Verifica condies do Trailing Stop das ordens


pendentes Buy Limit/Stop

CheckTrailingOrderShort

Verifica condies do Trailing Stop das ordens


pendentes Sell Limit/Stop

TrailingOrderLong

Executa Trailing Stop das ordens pendentes Buy


Limit/Stop

TrailingOrderShort

Executa Trailing Stop das ordens pendentes Sell


Limit/Stop

Mtodo de Ordens Excludas


CheckDeleteOrderLong

Verifica condies para excluir uma ordem


pendente Buy

CheckDeleteOrderShort

Verifica condies para excluir uma ordem


pendente Sell

DeleteOrders

Exclui todas as ordens

2000-2015, MetaQuotes Software Corp.

3471

Biblioteca Padro

DeleteOrder

Exclui ordem pendente Stop/Limit

DeleteOrderLong

Exclui ordem pendente Buy Limit/Stop

DeleteOrderShort

Exclui ordem pendente Sell Limit/Stop

Mtodos de Volume de Negociao


LotOpenLong

Obtm o volume de negociao para operao


comprada

LotOpenShort

Obtm o volume de negociao para operao


vendida

LotReverse

Obtm o volume de negociao para operao


de reverso de posio

Mtodos do Histrico da Negociao


PrepareHistoryDate

Define data de incio para o rastreamento do


histrico de negociao

HistoryPoint

Cria um ponto de controle do histrico de


negociao (salva nmero de posies, ordens,
ofertas e ordens histricas)

CheckTradeState

Compara o estado atual com o que foi salvo e


chama
o
manipulador
de
eventos
correspondente

Flags de eventos
WaitEvent

Define o flag de espera do evento

NoWaitEvent

Reseta o flag de espera do evento

Mtodos de Processamento do Evento de


Negociao
TradeEventPositionStopTake

Manipulador do evento "Position Stop Loss/


Take Profit triggered" (posies de Stop Loss
ou Take Profit acionadas)

TradeEventOrderTriggered

Manipulador do evento "Pending


Triggered" (ordem pendente acionada)

TradeEventPositionOpened

Manipulador
do
evento
Opened" (abertura de posio)

TradeEventPositionVolumeChanged

Manipulador do evento "Position Volume


Changed" (volume da posio alterado)

TradeEventPositionModified

Manipulador
do
evento
Modified" (posio modificada)

"Position

TradeEventPositionClosed

Manipulador
do
evento
Closed" (posio fechada)

"Position

TradeEventOrderPlaced

Manipulador do evento "Pending


Placed" (ordem pendente colocada)

2000-2015, MetaQuotes Software Corp.

Order

"Position

Order

3472

Biblioteca Padro

TradeEventOrderModified

Manipulador do evento "Pending


Modified" (ordem pendente modificada)

Order

TradeEventOrderDeleted

Manipulador do evento "Pending


Deleted" (ordem pendente excluda)

Order

TradeEventNotIdentified

Manipulador do evento no identificado

Mtodos de Servio
TimeframeAdd

Adiciona um timeframe para rastrear

TimeframesFlags

Obtm o flag indicando os timeframes com uma


nova barra

2000-2015, MetaQuotes Software Corp.

3473

Biblioteca Padro

Init
Instncia de classe do mtodo de inicializao.
bool Init(
string

symbol,

// symbol

ENUM_TIMEFRAMES

period,

// timeframe

bool

every_tick,

// flag

ulong

magic

// magic

Parmetros
symbol
[in] Smbolo (ativo).
period
[in] Timeframe (ENUM_TIMEFRAMES enumeration).
every_tick
[in] Flag.
magic
[in] ID doExpert Advisor (nmero mgico).
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
Se every_tick definido como verdadeiro, o mtodo Processing() chamado em cada tick do
smbolo que est em atividade. Caso contrrio, o Processing() chamado apenas quando abre uma
nova barra do smbolo que est em atividade.

2000-2015, MetaQuotes Software Corp.

3474

Biblioteca Padro

Magic
Define ID do Expert Advisor (mgico).
void Magic(
ulong value

// new value

Parmetros
value
[in] O novo valor ID do Expert Advisor.
Valor de retorno
Nenhum.
Observao
Define o valor ID do Expert Advisor (mgico) para as seguintes classes: Trade, Signal, Money,
Trailing.
Implementao
//+------------------------------------------------------------------+
//| Sets magic number for object and its dependent objects
|
//| INPUT: value - new value of magic number.
|
//| OUTPUT: no.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
void CExpert::Magic(ulong value)
{
if(m_trade!=NULL)
m_trade.SetExpertMagicNumber(value);
if(m_signal!=NULL)
m_signal.Magic(value);
if(m_money!=NULL)
m_money.Magic(value);
if(m_trailing!=NULL) m_trailing.Magic(value);
//--CExpertBase::Magic(value);
}

2000-2015, MetaQuotes Software Corp.

3475

Biblioteca Padro

InitSignal
Inicializa objeto Trading Signal (sinal de negociao).
virtual bool InitSignal(
CExpertSignal*

signal=NULL,

// pointer

Parmetros
signal
[in] Ponteiro do objeto da classe CExpertSignal (ou seus herdeiros).
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
Se o sinal for NULL, a classe CExpertSignal ser usada e no faz nada.

2000-2015, MetaQuotes Software Corp.

3476

Biblioteca Padro

InitTrailing
Inicializa objeto Trailing Stop (arrastando o parar a perda) .
virtual bool InitTrailing(
CExpertTrailing*

trailing=NULL,

// pointer

Parmetros
trailing
[in] Ponteiro do objeto da classe CExpertTrailing (ou seu herdeiro).
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
Se o trailing for NULL, a classe ExpertTrailing ser usada e no faz nada.

2000-2015, MetaQuotes Software Corp.

3477

Biblioteca Padro

InitMoney
Inicializa o objeto Money Management (gerenciamento do dinheiro).
virtual bool InitMoney(
CExpertMoney*

money=NULL,

// pointer

Parmetros
money
[in] Ponteiro para o objeto da classe CExpertMoney (ou seu herdeiro).
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
Se o dinheiro NULL, a classe CExpertMoney vai ser usada e utiliza o lote mnimo.

2000-2015, MetaQuotes Software Corp.

3478

Biblioteca Padro

InitTrade
Inicializa o objeto Trade (negociao).
virtual bool InitTrade(
ulong

magic,

// magic

CExpertTrade*

trade=NULL

// pointer

Parmetros
magic
[in] ID do Expert Advisor (vai ser usado em pedidos de negociao).
trade
[in] Ponteiro do objeto CExpertTrade.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3479

Biblioteca Padro

Deinit
Classe de instncia do mtodo "deinitialization" (desinicializao).
virtual void Deinit()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3480

Biblioteca Padro

OnTickProcess
Define um flag para continuar o evento OnTick.
void OnTickOProcess(
bool

value

// flag

Parmetros
value
[in] Flag para continuar o evento OnTick.
Valor de retorno
Nenhum.
Observao
Se o flag verdadeiro, o evento OnTick continua. Por padro, o flag definido como falso.

2000-2015, MetaQuotes Software Corp.

3481

Biblioteca Padro

OnTradeProcess
Define um flag para continuar o evento OnTrade.
void OnTradeProcess(
bool

value

// flag

Parmetros
value
[in] Flag para continuar o evento OnTrade.
Valor de retorno
Nenhum.
Observao
Se o flag verdadeiro, o evento OnTrade continua. Por padro, o flag definido como falso.

2000-2015, MetaQuotes Software Corp.

3482

Biblioteca Padro

OnTimerProcess
Define um flag para continuar o evento OnTimer.
void OnTimerProcess(
bool

value

// flag

Parmetros
value
[in] Flag para continuar o evento OnTimer.
Valor de retorno
Nenhum.
Observao
Se o flag verdadeiro, o evento OnTimer continua. Por padro, o flag definido como falso.

2000-2015, MetaQuotes Software Corp.

3483

Biblioteca Padro

OnChartEventProcess
Define um flag para continuar o evento OnChartEvent.
void OnChartEventProcess(
bool

value

// flag

Parmetros
value
[in] Flag para continuar o evento OnChartEvent.
Valor de retorno
Nenhum.
Observao
Se o flag verdadeiro, o evento OnChartEvent continua. Por padro, o flag definido como falso.

2000-2015, MetaQuotes Software Corp.

3484

Biblioteca Padro

OnBookEventProcess
Define um flag para continuar o evento OnBookEvent.
void OnChartEventProcess(
bool

value

// flag

Parmetros
value
[in] Flag para continuar o evento OnBookEvent.
Valor de retorno
Nenhum.
Observao
Se o flag verdadeiro, o evento OnBookEvent continua. Por padro o flag definido como falso.

2000-2015, MetaQuotes Software Corp.

3485

Biblioteca Padro

MaxOrders (Mtodo Get)


Obtm a quantidade mxima de ordens permitidas.
int MaxOrders()

Valor de retorno
Quantidade mxima de ordens permitidas.

MaxOrders (Mtodo Set)


Define a quantidade mxima de ordens permitidas.
void MaxOrders(
int

max_orders

// new value

Parmetros
max_orders
[in] O novo valor da quantidade mxima de ordens permitidas.
Valor de retorno
Nenhum.
Observao
Por padro, a quantidade mxima de ordens permitidas = 1.

2000-2015, MetaQuotes Software Corp.

3486

Biblioteca Padro

Signal
Obtm o ponteiro do objeto Trade Signal (sinal de negociao).
CExpertSignal* Signal() const

Valor de retorno
Ponteiro do objeto Trade Signal.

2000-2015, MetaQuotes Software Corp.

3487

Biblioteca Padro

ValidationSettings
Verifica as configuraes.
virtual bool ValidationSettings()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
Tambm verifica as configuraes de todos os objetos do Expert Advisor.

2000-2015, MetaQuotes Software Corp.

3488

Biblioteca Padro

InitIndicators
Inicia todos os indicadores e timeseries.
virtual bool InitIndicators(
CIndicators* indicators=NULL

// pointer

Parmetros
indicators
[in] Ponteiro para coleo de indicadores e timeseries.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
Os timeseries so inicializados se o objeto usa o smbolo ou o timeframe, diferente se smbolo ou
timeframe definido na inicializao. Conseqentemente chama os mtodos virtuais
InitIndicators() dos objetos trading signal (sinal de negociao), trailing stop (arrastando a parada
das perdas) e o money management (gesto do dinheiro).

2000-2015, MetaQuotes Software Corp.

3489

Biblioteca Padro

OnTick
Manipulador do evento OnTick.
virtual void OnTick()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3490

Biblioteca Padro

OnTrade
Manipulador do evento OnTrade.
virtual void OnTrade()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3491

Biblioteca Padro

OnTimer
Manipulador do evento OnTimer.
virtual void OnTimer()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3492

Biblioteca Padro

OnChartEvent
Manipulador do evento OnChartEvent.
virtual void OnChartEvent(
const int

id,

// event id

const long&

lparam,

// long parameter

const double dparam,

// double parameter

const string

// string parameter

sparam

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long.
dparam
[in] parmetro do evento tipo double.
sparam
[in] parmetro do evento tipo string.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3493

Biblioteca Padro

OnBookEvent
Manipulador do evento OnBookEvent.
virtual void OnBookEvent(
const string&

symbol

// symbol

Parmetros
symbol
[In] Smbolo do evento OnBookEvent.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3494

Biblioteca Padro

InitParameters
Inicia os parmetros do Expert Advisor.
virtual bool InitParameters()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
A funo InitParameters() da classe base CExpert no faz nada e sempre retorna verdadeira.

2000-2015, MetaQuotes Software Corp.

3495

Biblioteca Padro

DeinitTrade
Desinicializa o objeto Trade (negociao).
virtual void DeinitTrade()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3496

Biblioteca Padro

DeinitSignal
Desicinializa o objeto Signal.
virtual void DeinitSignal()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3497

Biblioteca Padro

DeinitTrailing
Desinicializa o objeto Trailing (arrastando).
virtual void DeinitTrailing()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3498

Biblioteca Padro

DeinitMoney
Desicinializa o objeto Money Management (gerenciamento de dinheiro).
virtual void DeinitMoney()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3499

Biblioteca Padro

DeinitIndicators
Desinicializa todos os indicadores e sries temporais.
virtual void DeinitIndicators()

Valor de retorno
Nenhum.
Observao
Tambm desinicializa todos os indicadores e sries temporais de todos os objetos auxiliares.

2000-2015, MetaQuotes Software Corp.

3500

Biblioteca Padro

Refresh
Atualiza todos os dados.
virtual bool Refresh()

Valor de retorno
verdadeiro se o processamento de tick necessrio, caso contrrio ser falso.
Observao
Permite determinar a necessidade do processamento de tick. Se necessrio, atualiza todas as
cotaes, sries temporais, dados dos indicadores e retorna verdadeiro.
Implementao
//+------------------------------------------------------------------+
//| Refreshing data for processing
|
//| INPUT: no.
|
//| OUTPUT: true-if successful, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::Refresh()
{
MqlDateTime time;
//--- refresh rates
if(!m_symbol.RefreshRates()) return(false);
//--- check need processing
TimeToStruct(m_symbol.Time(),time);
if(m_period_flags!=WRONG_VALUE && m_period_flags!=0)
if((m_period_flags & TimeframesFlags(time))==0) return(false);
m_last_tick_time=time;
//--- refresh indicators
m_indicators.Refresh();
//--- ok
return(true);
}

2000-2015, MetaQuotes Software Corp.

3501

Biblioteca Padro

Processing
Algoritmo de processamento principal.
virtual bool Processing()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Ele faz as seguintes etapas:
1. Verificar a presena da posio aberta no smbolo. Se no abrir a posio, pule as etapas 2, 3
e 4.
2. Verificar condies para reverso da posio aberta (mtodo CheckReverse()). Se a posio foi
revertida, sair.
3. Condies para verificar o fechamento da posio (mtodo CheckClose()). Se a posio foi
fechada, pule a etapa 4.
4. Verificar as condies para modificar os parmetros da posio (mtodo CheckTrailingStop() ). Se
os parmetros da posio foi modificado, sair.
5. Verificar a presena de ordens pendentes no smbolo. Se no houver qualquer ordem pendente, v
para a etapa 9.
6. Verificar condio para excluir a ordem (CheckDeleteOrderLong() para ordens pendentes de
compra ou CheckDeleteOrderShort() para ordens pendentes de venda). Se a ordem foi excluda, v
para a etapa 9.
7. Verificar as condies para modificar parmetros de ordem pendente (CheckTrailingOrderLong()
para ordens de compra ou CheckTrailingOrderShort() para ordens de venda). Se os parmetros de
ordem foram modificados, sair.
8. Sair.
9. Verificar condies para abertura de posio (mtodo CheckOpen()).
Se voc quiser implementar seu prprio algoritmo, voc precisar substituir o mtodo da classe
herdeira Processing().
Implementao

2000-2015, MetaQuotes Software Corp.

3502

Biblioteca Padro
//+------------------------------------------------------------------+
//| Main function
|
//| INPUT: no.
|
//| OUTPUT: true-if any trade operation processed, false otherwise. |
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::Processing()
{
//--- check if open positions
if(m_position.Select(m_symbol.Name()))
{
//--- open position is available
//--- check the possibility of reverse the position
if(CheckReverse()) return(true);
//--- check the possibility of closing the position/delete pending orders
if(!CheckClose())
{
//--- check the possibility of modifying the position
if(CheckTrailingStop()) return(true);
//--- return without operations
return(false);
}
}
//--- check if placed pending orders
int total=OrdersTotal();
if(total!=0)
{
for(int i=total-1;i>=0;i--)
{
m_order.SelectByIndex(i);
if(m_order.Symbol()!=m_symbol.Name()) continue;
if(m_order.OrderType()==ORDER_TYPE_BUY_LIMIT || m_order.OrderType()==ORDER_TYPE_BUY_STOP)
{
//--- check the ability to delete a pending order to buy
if(CheckDeleteOrderLong()) return(true);
//--- check the possibility of modifying a pending order to buy
if(CheckTrailingOrderLong()) return(true);
}
else
{
//--- check the ability to delete a pending order to sell
if(CheckDeleteOrderShort()) return(true);
//--- check the possibility of modifying a pending order to sell
if(CheckTrailingOrderShort()) return(true);
}
//--- return without operations
return(false);
}
}
//--- check the possibility of opening a position/setting pending order
if(CheckOpen()) return(true);
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3503

Biblioteca Padro

CheckOpen
Verifica as condies para abertura da posio.
virtual bool CheckOpen()

Valor de retorno
verdadeiro se qualquer operao de negociao foi executada, caso contrrio falso.
Observao
Verifica as condies
(CheckOpenShort()).

para

abrir

posies

comprada

(CheckOpenLong())

Implementao
//+------------------------------------------------------------------+
//| Check for position open or limit/stop order set
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckOpen()
{
if(CheckOpenLong()) return(true);
if(CheckOpenShort()) return(true);
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

vendida

3504

Biblioteca Padro

CheckOpenLong
Verifica as condies para abrir posio comprada.
virtual bool CheckOpenLong()

Valor de retorno
verdadeiro se qualquer operao de negociao foi executada, caso contrrio falso.
Observao
Verifica as condies para abrir posio comprada (mtodo CheckOpenLong() do objeto Signal) e
satisfazendo a condio, abre a posio (mtodo OpenLong()).
Implementao
//+------------------------------------------------------------------+
//| Check for long position open or limit/stop order set
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckOpenLong()
{
double
price=EMPTY_VALUE;
double
sl=0.0;
double
tp=0.0;
datetime expiration=TimeCurrent();
//--- check signal for long enter operations
if(m_signal.CheckOpenLong(price,sl,tp,expiration))
{
if(!m_trade.SetOrderExpiration(expiration))
{
m_expiration=expiration;
}
return(OpenLong(price,sl,tp));
}
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3505

Biblioteca Padro

CheckOpenShort
Verifica condies para abertura de posio vendida.
virtual bool CheckOpenShort()

Valor de retorno
verdadeiro se qualquer operao de negociao foi executada, caso contrrio falso.
Observao
Verifica as condies para abrir posio comprada (mtodo CheckOpenShort() do objeto Signal) e
satisfazendo a condio, abre a posio (mtodo OpenShort()).
Implementao
//+------------------------------------------------------------------+
//| Check for short position open or limit/stop order set
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckOpenShort()
{
double
price=EMPTY_VALUE;
double
sl=0.0;
double
tp=0.0;
datetime expiration=TimeCurrent();
//--- check signal for short enter operations
if(m_signal.CheckOpenShort(price,sl,tp,expiration))
{
if(!m_trade.SetOrderExpiration(expiration))
{
m_expiration=expiration;
}
return(OpenShort(price,sl,tp));
}
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3506

Biblioteca Padro

OpenLong
Abre uma posio comprada.
virtual bool OpenLong(
double

price,

// price

double

sl,

// Stop Loss

double

tp

// Take Profit

Parmetros
price
[in] Price.
sl
[in] Preo onde finaliza a perda de uma posio (Stop Loss).
tp
[in] Preo onde finaliza a posio com lucro (Take Profit).
Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Recebe o volume da negociao (mtodo LotOpenLong(...) ) e abre uma posio comprada (mtodo
Buy() do objeto Trade) se o volume da negociao no igual a 0.
Implementao
//+------------------------------------------------------------------+
//| Long position open or limit/stop order set
|
//| INPUT: price - price,
|
//|
sl
- stop loss,
|
//|
tp
- take profit.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::OpenLong(double price,double sl,double tp)
{
if(price==EMPTY_VALUE) return(false);
//--- get lot for open
double lot=LotOpenLong(price,sl);
//--- check lot for open
if(lot==0.0) return(false);
//--return(m_trade.Buy(lot,price,sl,tp));
}

2000-2015, MetaQuotes Software Corp.

3507

Biblioteca Padro

OpenShort
Abre uma posio vendida.
virtual bool OpenShort(
double

price,

// price

double

sl,

// Stop Loss

double

tp

// Take Profit

Parmetros
price
[in] Price.
sl
[in] Preo onde finaliza a perda de uma posio (Stop Loss).
tp
[in] Preo onde finaliza a posio com lucro (Take Profit).
Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Recebe o volume da negociao (mtodo LotOpenShort() ) e abre uma posio vendida (chamando o
mtodo Sell do objeto Trade) se o volume da negociao no igual a 0.
Implementao
//+------------------------------------------------------------------+
//| Short position open or limit/stop order set
|
//| INPUT: price - price,
|
//|
sl
- stop loss,
|
//|
tp
- take profit.
|
//| OUTPUT: true-if trade operation successful, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::OpenShort(double price,double sl,double tp)
{
if(price==EMPTY_VALUE) return(false);
//--- get lot for open
double lot=LotOpenShort(price,sl);
//--- check lot for open
if(lot==0.0) return(false);
//--return(m_trade.Sell(lot,price,sl,tp));
}

2000-2015, MetaQuotes Software Corp.

3508

Biblioteca Padro

CheckReverse
Verifica condies para reverso da posio aberta.
virtual bool CheckReverse()

Valor de retorno
verdadeiro se qualquer operao de negociao foi executada, caso contrrio falso.
Observao
Verifica as condies para reverter posies compradas (CheckReverseLong()) e vendidas
(CheckReverseShort()).
Implementao
//+------------------------------------------------------------------+
//| Check for position reverse
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckReverse()
{
if(m_position.PositionType()==POSITION_TYPE_BUY)
{
//--- check the possibility of reverse the long position
if(CheckReverseLong()) return(true);
}
else
//--- check the possibility of reverse the short position
if(CheckReverseShort()) return(true);
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3509

Biblioteca Padro

CheckReverseLong
Verifica condies para reverso de posio comprada.
virtual bool CheckReverseLong()

Valor de retorno
verdadeiro se qualquer operao de negociao foi executada, caso contrrio falso.
Observao
Verifica as condies para reverso de posio comprada (mtodo CheckReverseLong()do objeto
Signal) e satisfeita a condio, executa a operao de reverso da posio comprada atual (mtodo
ReverseLong (...)).
Implementao
//+------------------------------------------------------------------+
//| Check for long position reverse
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckReverseLong()
{
double
price=EMPTY_VALUE;
double
sl=0.0;
double
tp=0.0;
datetime expiration=TimeCurrent();
//--- check signal for long reverse operations
if(m_signal.CheckReverseLong(price,sl,tp,expiration)) return(ReverseLong(price,sl,tp));
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3510

Biblioteca Padro

CheckReverseShort
Verifica condies para reverso da posio vendida.
virtual bool CheckReverseLong()

Valor de retorno
verdadeiro se qualquer operao de negociao foi executada, caso contrrio falso.
Observao
Verifica as condies para reverso de posio vendida (mtodo CheckReverseShort()do objeto
Signal) e satisfeita a condio, executa a operao de reverso da posio vendida atual (mtodo
ReverseShort()) se necessrio.
Implementao
//+------------------------------------------------------------------+
//| Check for short position reverse
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckReverseShort()
{
double
price=EMPTY_VALUE;
double
sl=0.0;
double
tp=0.0;
datetime expiration=TimeCurrent();
//--- check signal for short reverse operations
if(m_signal.CheckReverseShort(price,sl,tp,expiration)) return(ReverseShort(price,sl,tp));
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3511

Biblioteca Padro

ReverseLong
Executa operao de reverso de posio comprada.
virtual bool ReverseLong(
double

price,

// price

double

sl,

// Stop Loss

double

tp

// Take Profit

Parmetros
price
[in] Preo.
sl
[in] Preo onde finaliza a perda de uma posio (Stop Loss).
tp
[in] Preo onde finaliza a posio com lucro (Take Profit).
Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Obtm a reverso de posio do volume (mtodo LotReverse()) e executa a operao de negociao
de reverso da posio comprada (mtodo Sell() do objeto Trade) se o volume de negociao no for
igual a 0.
Implementao
//+------------------------------------------------------------------+
//| Long position reverse
|
//| INPUT: price - price,
|
//|
sl
- stop loss,
|
//|
tp
- take profit.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::ReverseLong(double price,double sl,double tp)
{
if(price==EMPTY_VALUE) return(false);
//--- get lot for reverse
double lot=LotReverse(sl);
//--- check lot
if(lot==0.0) return(false);
//--return(m_trade.Sell(lot,price,sl,tp));
}

2000-2015, MetaQuotes Software Corp.

3512

Biblioteca Padro

ReverseShort
Executa operao de reverso de posio vendida.
virtual bool ReverseShort(
double

price,

// price

double

sl,

// Stop Loss

double

tp

// Take Profit

Parmetros
price
[in] Price.
sl
[in] Preo onde finaliza a perda de uma posio (Stop Loss).
tp
[in] Preo onde finaliza a posio com lucro (Take Profit).
Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Obtm a reverso de posio do volume (mtodo LotReverse()) e executa a operao de negociao
de reverso da posio vendida (mtodo Buy() do objeto Trade) se o volume de negociao no for
igual a 0.
Implementao
//+------------------------------------------------------------------+
//| Short position reverse
|
//| INPUT: price - price,
|
//|
sl
- stop loss,
|
//|
tp
- take profit.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::ReverseShort(double price,double sl,double tp)
{
if(price==EMPTY_VALUE) return(false);
//--- get lot for reverse
double lot=LotReverse(sl);
//--- check lot
if(lot==0.0) return(false);
//--return(m_trade.Buy(lot,price,sl,tp));
}

2000-2015, MetaQuotes Software Corp.

3513

Biblioteca Padro

CheckClose
Verifica condies para fechar a posio atual.
virtual bool CheckClose()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
1. Verifica condies do Stop Out do Expert Advisor (mtodo CheckClose() do objeto de gesto de
dinheiro). Se a condio for satisfeita, ele fecha as posies e exclui todas as ordens
(CloseAll(...)).
2. Verifica as condies para fechar um posio comprada ou vendida (mtodos CheckCloseLong ()
ou CheckCloseShort ()) e se a posio for fechada, exclui todas as ordens (mtodo
DeleteOrders() ).
Implementao
//+------------------------------------------------------------------+
//| Check for position close or limit/stop order delete
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckClose()
{
double lot;
//--- position must be selected before call
if((lot=m_money.CheckClose(GetPointer(m_position)))!=0.0)
return(CloseAll(lot));
//--- check for position type
if(m_position.PositionType()==POSITION_TYPE_BUY)
{
//--- check the possibility of closing the long position / delete pending orders to buy
if(CheckCloseLong())
{
DeleteOrders();
return(true);
}
}
else
{
//--- check the possibility of closing the short position / delete pending orders to sell
if(CheckCloseShort())
{
DeleteOrders();
return(true);
}
}
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3514

Biblioteca Padro

CheckCloseLong
Verifica condies para fechar a posio comprada.
virtual bool CheckCloseLong()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Verifica as condies para fechamento da posio comprada (mtodo CheckCloseLong () do objeto
Signal), satisfeita a condio, fecha a posio aberta (mtodo CloseLong (...)).
Implementao
//+------------------------------------------------------------------+
//| Check for long position close or limit/stop order delete
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckCloseLong()
{
double price=EMPTY_VALUE;
//--- check for long close operations
if(m_signal.CheckCloseLong(price))
return(CloseLong(price));
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3515

Biblioteca Padro

CheckCloseShort
Verifica condies para fechar a posio vendida.
virtual bool CheckCloseShort()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Verifica as condies para fechamento da posio vendida (mtodo CheckCloseShort() do objeto
Sinal), se satisfeita acondio, fecha a posio (mtodo CloseShort()).
Implementao
//+------------------------------------------------------------------+
//| Check for short position close or limit/stop order delete
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckCloseShort()
{
double price=EMPTY_VALUE;
//--- check for short close operations
if(m_signal.CheckCloseShort(price))
return(CloseShort(price));
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3516

Biblioteca Padro

CloseAll
Executa parcialmente fechamento completo da posio.
virtual bool CloseAll(
double

lot

// lot

Parmetros
lot
[in] Nmero de lotes para reduzir a posio.
Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Executa parcialmente fechamento completo da posio (mtodos Sell() e Buy() do objeto da classe
CTrade para as posies comprada/vendida) e exclui todas as ordens (mtodo DeleteOrders ()).
Implementao
//+------------------------------------------------------------------+
//| Position close and orders delete
|
//| INPUT: lot - volume for close.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CloseAll(double lot)
{
bool result;
//--- check for close operations
if(m_position.PositionType()==POSITION_TYPE_BUY) result=m_trade.Sell(lot,0,0,0);
else
result=m_trade.Buy(lot,0,0,0);
result|=DeleteOrders();
//--return(result);
}

2000-2015, MetaQuotes Software Corp.

3517

Biblioteca Padro

Close
Fecha a posio aberta.
virtual bool Close()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Fecha a posio (mtodo PositionClose() do objeto da classe CTrade).
Implementao
//+------------------------------------------------------------------+
//| Position close
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::Close()
{
return(m_trade.PositionClose(m_symbol.Name()));
}

2000-2015, MetaQuotes Software Corp.

3518

Biblioteca Padro

CloseLong
Fecha a posio comprada.
virtual bool CloseLong(
double

price

// price

Parmetros
price
[in] Price.
Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Fecha a posio comprada (mtodo Sell(...) do objeto da classe CTrade).
Implementao
//+------------------------------------------------------------------+
//| Long position close
|
//| INPUT: price - price for close.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CloseLong(double price)
{
if(price==EMPTY_VALUE) return(false);
//--return(m_trade.Sell(m_position.Volume(),price,0,0));
}

2000-2015, MetaQuotes Software Corp.

3519

Biblioteca Padro

CloseShort
Fecha a posio vendida.
virtual bool CloseShort(
double

price

// price

Parmetros
price
[in] Price.
Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Fecha a posio vendida (mtodo Buy (...) do objeto da classe CTrade).
Implementao
//+------------------------------------------------------------------+
//| Short position close
|
//| INPUT: price - price for close.
|
//| OUTPUT: true-if trade operation successful, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CloseShort(double price)
{
if(price==EMPTY_VALUE) return(false);
//--return(m_trade.Buy(m_position.Volume(),price,0,0));
}

2000-2015, MetaQuotes Software Corp.

3520

Biblioteca Padro

CheckTrailingStop
Verifica as condies de Trailing Stop da posio aberta.
virtual bool CheckTrailingStop()

Valor de retorno
verdadeiro se qualquer operao de negociao foi executada, caso contrrio falso.
Observao
Verifica as condies de Trailing Stop da posio aberta
CheckTrailingStopShort() para as posies compradas e vendidas).

(CheckTrailingStopLong()

Implementao
//+------------------------------------------------------------------+
//| Check for trailing stop/profit position
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckTrailingStop()
{
//--- position must be selected before call
if(m_position.PositionType()==POSITION_TYPE_BUY)
{
//--- check the possibility of modifying the long position
if(CheckTrailingStopLong()) return(true);
}
else
{
//--- check the possibility of modifying the short position
if(CheckTrailingStopShort()) return(true);
}
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

ou

3521

Biblioteca Padro

CheckTrailingStopLong
Verifica as condies de Trailing Stop para abertura da posio comprada.
virtual bool CheckTrailingStopLong()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Verifica as condies de Trailing Stop para abertura da posio comprada (mtodo
CheckTrailingStopLong (...) do objeto Expert Trailing). Se as condies forem satisfeitas, e
modifica os parmetros da posio (mtodo TrailingStopLong (...)).
Implementao
//+------------------------------------------------------------------+
//| Check for trailing stop/profit long position
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckTrailingStopLong()
{
double sl=EMPTY_VALUE;
double tp=EMPTY_VALUE;
//--- check for long trailing stop operations
if(m_trailing.CheckTrailingStopLong(GetPointer(m_position),sl,tp))
{
if(sl==EMPTY_VALUE) sl=m_position.StopLoss();
if(tp==EMPTY_VALUE) tp=m_position.TakeProfit();
//--- long trailing stop operations
return(TrailingStopLong(sl,tp));
}
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3522

Biblioteca Padro

CheckTrailingStopShort
Verifica as condies de Trailing Stop para abertura da posio vendida.
virtual bool CheckTrailingStopShort()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Verifica as condies de Trailing Stop para abertura da posio vendida (mtodo
CheckTrailingStopShort (...) do objeto Expert Trailing). Se as condies forem satisfeitas, modifica
os parmetros da posio (mtodo TrailingStopShort (...)).
Implementao
//+------------------------------------------------------------------+
//| Check for trailing stop/profit short position
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckTrailingStopShort()
{
double sl=EMPTY_VALUE;
double tp=EMPTY_VALUE;
//--- check for short trailing stop operations
if(m_trailing.CheckTrailingStopShort(GetPointer(m_position),sl,tp))
{
if(sl==EMPTY_VALUE) sl=m_position.StopLoss();
if(tp==EMPTY_VALUE) tp=m_position.TakeProfit();
//--- short trailing stop operations
return(TrailingStopShort(sl,tp));
}
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3523

Biblioteca Padro

TrailingStopLong
Modifica parmetros de abertura da posio comprada.
virtual bool TrailingStopLong(
double

sl,

// Stop Loss

double

tp,

// Take Profit

Parmetros
sl
[in] Preo onde finaliza a perda de uma posio (Stop Loss).
tp
[in] Preo onde finaliza a posio com lucro (Take Profit).
Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
A funo modifica parmetros de abertura da posio comprada (mtodo PositionModify (...) do
objeto da classe CTrade).
Implementao
//+------------------------------------------------------------------+
//| Trailing stop/profit long position
|
//| INPUT: sl - new stop loss,
|
//|
tp - new take profit.
|
//| OUTPUT: true-if trade operation successful, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::TrailingStopLong(double sl,double tp)
{
return(m_trade.PositionModify(m_symbol.Name(),sl,tp));
}

2000-2015, MetaQuotes Software Corp.

3524

Biblioteca Padro

TrailingStopShort
Modifica parmetros abertura da posio vendida.
virtual bool TrailingStopLong(
double

sl,

// Stop Loss

double

tp,

// Take Profit

Parmetros
sl
[in] Preo onde finaliza a perda de uma posio (Stop Loss).
tp
[in] Preo onde finaliza a posio com lucro (Take Profit).
Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
A funo modifica parmetros de abertura da posio vendida (mtodo PositionModify(...) do objeto
da classe CTrade).
Implementao
//+------------------------------------------------------------------+
//| Trailing stop/profit short position
|
//| INPUT: sl - new stop loss,
|
//|
tp - new take profit.
|
//| OUTPUT: true-if trade operation successful, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::TrailingStopShort(double sl,double tp)
{
return(m_trade.PositionModify(m_symbol.Name(),sl,tp));
}

2000-2015, MetaQuotes Software Corp.

3525

Biblioteca Padro

CheckTrailingOrderLong
Verifica condies do Trailing Stop das ordens pendentes Buy Limit/Stop.
virtual bool CheckTrailingOrderLong()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Verifica condies do Trailing Stop das ordens pendentes Buy Limit/Stop (mtodo
CheckTrailingOrderLong() do objeto Trade Signals) e se necessrio modifica os parmetros de
ordem (mtodo TrailingOrderLong (...)).
Implementao
//+------------------------------------------------------------------+
//| Check for trailing long limit/stop order
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckTrailingOrderLong()
{
double price;
//--- check the possibility of modifying the long order
if(m_signal.CheckTrailingOrderLong(GetPointer(m_order),price))
return(TrailingOrderLong(m_order.PriceOpen()-price));
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3526

Biblioteca Padro

CheckTrailingOrderShort
Verifica condies do Trailing Stop das ordens pendentes Sell Limit/Stop.
virtual bool CheckTrailingOrderShort()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Verifica condies do Trailing Stop das ordens pendentes Sell Limit/Stop (mtodo
CheckTrailingOrderShort() do objeto Trade Signals) e se necessrio modifica os parmetros de
ordem (mtodo TrailingOrderShort()).
Implementao
//+------------------------------------------------------------------+
//| Check for trailing short limit/stop order
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckTrailingOrderShort()
{
double price;
//--- check the possibility of modifying the short order
if(m_signal.CheckTrailingOrderShort(GetPointer(m_order),price))
return(TrailingOrderShort(m_order.PriceOpen()-price));
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3527

Biblioteca Padro

TrailingOrderLong
Modifica parmetros de ordem pendente Buy Limit/Stop.
virtual bool TrailingOrderLong(
double

delta

// delta

Parmetros
delta
[in] Preo delta.
Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Modifica parmetros de ordem pendente Buy Limit/Stop (mtodo OrderModify(...) do objeto da
classe CTrade).
Implementao
//+------------------------------------------------------------------+
//| Trailing long limit/stop order
|
//| INPUT: delta - price change.
|
//| OUTPUT: true-if trade operation successful, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::TrailingOrderLong(double delta)
{
ulong ticket=m_order.Ticket();
double price =m_order.PriceOpen()-delta;
double sl
=m_order.StopLoss()-delta;
double tp
=m_order.TakeProfit()-delta;
//--- modifying the long order
return(m_trade.OrderModify(ticket,price,sl,tp,m_order.TypeTime(),m_order.TimeExpiration()));
}

2000-2015, MetaQuotes Software Corp.

3528

Biblioteca Padro

TrailingOrderShort
Modifica parmetros de ordem pendente bSell Limit/Stop.
virtual bool TrailingOrderShort(
double

delta

// delta

Parmetros
delta
[in] Preo delta.
Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Modifica parmetros de ordem pendente Sell Limit/Stop (mtodo OrderModify(...) do objeto da
classe CTrade).
Implementao
//+------------------------------------------------------------------+
//| Trailing short limit/stop order
|
//| INPUT: delta - price change.
|
//| OUTPUT: true-if trade operation successful, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::TrailingOrderShort(double delta)
{
ulong ticket=m_order.Ticket();
double price =m_order.PriceOpen()-delta;
double sl
=m_order.StopLoss()-delta;
double tp
=m_order.TakeProfit()-delta;
//--- modifying the short order
return(m_trade.OrderModify(ticket,price,sl,tp,m_order.TypeTime(),m_order.TimeExpiration()));
}

2000-2015, MetaQuotes Software Corp.

3529

Biblioteca Padro

CheckDeleteOrderLong
Verifica as condies para excluir a ordem pendente Buy Limit/Stop.
virtual bool CheckDeleteOrderLong()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Verifica o tempo de expirao da ordem. Verifica as condies para excluir a ordem pendente Buy
Limit/Stop (mtodo CheckCloseLong(...) da classe do objeto Signal). Exclui a ordem se a condio
for satisfeita (mtodo DeleteOrderLong()).
Implementao
//+------------------------------------------------------------------+
//| Check for delete long limit/stop order
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckDeleteOrderLong()
{
double price;
//--- check the possibility of deleting the long order
if(m_expiration!=0 && TimeCurrent()>m_expiration)
{
m_expiration=0;
return(DeleteOrderLong());
}
if(m_signal.CheckCloseLong(price))
return(DeleteOrderLong());
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3530

Biblioteca Padro

CheckDeleteOrderShort
Verifica as condies para excluir a ordem pendente Sell Limit/Stop.
virtual bool CheckDeleteOrderShort()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Verifica o tempo de expirao da ordem. Verifica as condies para excluir a ordem pendente Sell
Limit/Stop (mtodo CheckCloseShort(...) da classe do objeto Signal) e exclui a ordem se a condio
for satisfeita (mtodo DeleteOrderShort()).
Implementao
//+------------------------------------------------------------------+
//| Check for delete short limit/stop order
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation processed, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::CheckDeleteOrderShort()
{
double price;
//--- check the possibility of deleting the short order
if(m_expiration!=0 && TimeCurrent()>m_expiration)
{
m_expiration=0;
return(DeleteOrderShort());
}
if(m_signal.CheckCloseShort(price))
return(DeleteOrderShort());
//--- return without operations
return(false);
}

2000-2015, MetaQuotes Software Corp.

3531

Biblioteca Padro

DeleteOrders
Exclui todas as ordens.
virtual bool DeleteOrders()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Exclui todas as ordens (DeleteOrder() para todos as ordens).
Implementao
//+------------------------------------------------------------------+
//| Delete all limit/stop orders
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation successful, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::DeleteOrders()
{
bool result=false;
int total=OrdersTotal();
//--for(int i=total-1;i>=0;i--)
{
if(m_order.Select(OrderGetTicket(i)))
{
if(m_order.Symbol()!=m_symbol.Name()) continue;
result|=DeleteOrder();
}
}
//--return(result);
}

2000-2015, MetaQuotes Software Corp.

3532

Biblioteca Padro

DeleteOrder
Exclui a ordem pendente Limit/Stop.
virtual bool DeleteOrder()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Exclui a ordem pendente Limit/Stop (mtodo OrderDelete(...) do objeto da classe CTrade).
Implementao
//+------------------------------------------------------------------+
//| Delete limit/stop order
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation successful, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::DeleteOrder()
{
return(m_trade.OrderDelete(m_order.Ticket()));
}

2000-2015, MetaQuotes Software Corp.

3533

Biblioteca Padro

DeleteOrderLong
Exclui a ordem pendente Buy Limit/Stop.
virtual bool DeleteOrderLong()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Exclui a ordem pendente Buy Limit/Stop (mtodo OrderDelete(...) do objeto da classe CTrade).
Implementao
//+------------------------------------------------------------------+
//| Delete long limit/stop order
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation successful, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::DeleteOrderLong()
{
return(m_trade.OrderDelete(m_order.Ticket()));
}

2000-2015, MetaQuotes Software Corp.

3534

Biblioteca Padro

DeleteOrderShort
Exclui a ordem pendente Sell Limit/Stop.
virtual bool DeleteOrderShort()

Valor de retorno
Verdadeiro se a operao de negociao foi executada, caso contrrio falso.
Observao
Exclui a ordem pendente Sell Limit/Stop (mtodo OrderDelete(...) do objeto da classe CTrade).
Implementao
//+------------------------------------------------------------------+
//| Delete short limit/stop order
|
//| INPUT: no.
|
//| OUTPUT: true-if trade operation successful, false otherwise.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
bool CExpert::DeleteOrderShort()
{
return(m_trade.OrderDelete(m_order.Ticket()));
}

2000-2015, MetaQuotes Software Corp.

3535

Biblioteca Padro

LotOpenLong
Obtm o volume de negociao para a operao de compra.
double LotOpenLong(
double

price,

// price

double

sl

// Stop Loss

Parmetros
price
[in] Preo.
sl
[in] Preo onde finaliza a perda de uma posio (Stop Loss).
Valor de retorno
O volume da negociao (em lotes) para a operao comprada.
Observao
Recebe o volume da negociao para a operao de compra (mtodo CheckOpenLong (...) do objeto
de gesto de dinheiro).
Implementao
//+------------------------------------------------------------------+
//| Method of getting the lot for open long position.
|
//| INPUT: price - price,
|
//|
sl
- stop loss.
|
//| OUTPUT: lot for open.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
double CExpert::LotOpenLong(double price,double sl)
{
return(m_money.CheckOpenLong(price,sl));
}

2000-2015, MetaQuotes Software Corp.

3536

Biblioteca Padro

LotOpenShort
Obtm o volume de negociao para a operao de venda.
double LotOpenShort(
double

price,

// price

double

sl

// Stop Loss

Parmetros
price
[in] Preo.
sl
[in] Preo onde finaliza a perda (Stop Loss).
Valor de retorno
O volume da negociao (em lotes) para a operao de venda.
Observao
Recebe o volume da negociao para a operao de venda (mtodo CheckOpenShort (...) do objeto
da gesto do dinheiro).
Implementao
//+------------------------------------------------------------------+
//| Method of getting the lot for open short position.
|
//| INPUT: price - price,
|
//|
sl
- stop loss.
|
//| OUTPUT: lot for open.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
double CExpert::LotOpenShort(double price,double sl)
{
return(m_money.CheckOpenShort(price,sl));
}

2000-2015, MetaQuotes Software Corp.

3537

Biblioteca Padro

LotReverse
Obtm o volume de negociao para reverso de posio.
double LotReverse(
double

sl

// Stop Loss

Parmetros
sl
[in] Preo onde finaliza a perda de uma posio (Stop Loss).
Valor de retorno
O (em lotes) .
Observao
Obtm o volume de negociao para operao de reverso de posio (mtodo CheckReverse(...) do
objeto da gesto de dinheiro).
Implementao
//+------------------------------------------------------------------+
//| Method of getting the lot for reverse position.
|
//| INPUT: sl - stop loss.
|
//| OUTPUT: lot for open.
|
//| REMARK: no.
|
//+------------------------------------------------------------------+
double CExpert::LotReverse(double sl)
{
return(m_money.CheckReverse(GetPointer(m_position),sl));
}

2000-2015, MetaQuotes Software Corp.

3538

Biblioteca Padro

PrepareHistoryDate
Configura a data inicial para rastreamento do histrico da negociao.
void PrepareHistoryDate()

Observao
O perodo de acompanhamento do histrico da negociao definido a partir do incio do ms (mas
no menos do que um dia).

2000-2015, MetaQuotes Software Corp.

3539

Biblioteca Padro

HistoryPoint
Cria um ponto de controle do histrico de negociao (salva nmero de posies, ordens, ofertas e
ordens histricas).
void HistoryPoint(
bool

from_check_trade=false

// flag

Parmetros
from_check_trade=false
[in] Flag para evitar a recursividade.
Observao
Salva a quantidade de posies, ordens, ofertas e ordens histricas.

2000-2015, MetaQuotes Software Corp.

3540

Biblioteca Padro

CheckTradeState
Compara o estado atual com o que foi salvo e chama o manipulador de eventos correspondente.
bool CheckTradeState()

Valor de retorno
verdadeiro se o evento foi manipulado, caso contrrio ser falso.
Observao
Verifica o nmero de posies, ordens, ofertas e ordens histricas comparando com os valores, ser
salvo pelo mtodo HistoryPoint (). Se a histria de negociao foi alterada, chama o manipulador de
eventos virtual correspondente.

2000-2015, MetaQuotes Software Corp.

3541

Biblioteca Padro

WaitEvent
Define o flag de espera do evento.
void WaitEvent(
ENUM_TRADE_EVENTS

event

// flag

Parmetros
event
[in] Flag com eventos para definir (enumerador ENUM_TRADE_EVENTS).
Valor de retorno
Nenhum.
Flags de eventos
//--- flags of expected events
enum ENUM_TRADE_EVENTS
{
TRADE_EVENT_NO_EVENT
=0,
TRADE_EVENT_POSITION_OPEN
=0x1,
TRADE_EVENT_POSITION_VOLUME_CHANGE=0x2,
TRADE_EVENT_POSITION_MODIFY
=0x4,
TRADE_EVENT_POSITION_CLOSE
=0x8,
TRADE_EVENT_POSITION_STOP_TAKE
=0x10,
TRADE_EVENT_ORDER_PLACE
=0x20,
TRADE_EVENT_ORDER_MODIFY
=0x40,
TRADE_EVENT_ORDER_DELETE
=0x80,
TRADE_EVENT_ORDER_TRIGGER
=0x100
};

//
//
//
//
//
//
//
//
//
//

no expected events
flag of expecting the "opening of position" eve
flag of expecting of the "modification of posit
flag of expecting of the "modification of stop
flag of expecting of the "closing of position"
flag of expecting of the "triggering of stop or
flag of expecting of the "placing of pending or
flag of expecting of the "modification of pendi
flag of expecting of the "deletion of pending o
flag of expecting of the "triggering of pending

2000-2015, MetaQuotes Software Corp.

3542

Biblioteca Padro

NoWaitEvent
Reseta o flag da espera do evento.
void NoWaitEvent(
ENUM_TRADE_EVENTS

event

// flag

Parmetros
event
[in] Flag com eventos para resetar (enumerador ENUM_TRADE_EVENTS ).
Valor de retorno
Nenhum.
Flags de eventos
//--- flags of expected events
enum ENUM_TRADE_EVENTS
{
TRADE_EVENT_NO_EVENT
=0,
TRADE_EVENT_POSITION_OPEN
=0x1,
TRADE_EVENT_POSITION_VOLUME_CHANGE=0x2,
TRADE_EVENT_POSITION_MODIFY
=0x4,
TRADE_EVENT_POSITION_CLOSE
=0x8,
TRADE_EVENT_POSITION_STOP_TAKE
=0x10,
TRADE_EVENT_ORDER_PLACE
=0x20,
TRADE_EVENT_ORDER_MODIFY
=0x40,
TRADE_EVENT_ORDER_DELETE
=0x80,
TRADE_EVENT_ORDER_TRIGGER
=0x100
};

//
//
//
//
//
//
//
//
//
//

no expected events
flag of expecting the "opening of position" eve
flag of expecting of the "modification of posit
flag of expecting of the "modification of stop
flag of expecting of the "closing of position"
flag of expecting of the "triggering of stop or
flag of expecting of the "placing of pending or
flag of expecting of the "modification of pendi
flag of expecting of the "deletion of pending o
flag of expecting of the "triggering of pending

2000-2015, MetaQuotes Software Corp.

3543

Biblioteca Padro

TradeEventPositionStopTake
Manipulador do evento "Position Stop Loss/Take Profit triggered" (posio Stop Loss/Take Profit
alcanada) .
virtual bool TradeEventPositionStopTake()

Valor de retorno
O mtodo de classe CExpert no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3544

Biblioteca Padro

TradeEventOrderTriggered
Manipulador do evento "Pending Order triggered" (ordem pendente alcanada).
virtual bool TradeEventOrderTriggered()

Valor de retorno
O mtodo de classe CExpert no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3545

Biblioteca Padro

TradeEventPositionOpened
Manipulador do evento "Position opened" (posio aberta).
virtual bool TradeEventPositionOpened()

Valor de retorno
O mtodo de classe CExpert no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3546

Biblioteca Padro

TradeEventPositionVolumeChanged
Manipulador do evento "Position volume changed" (volume da posio alterada).
virtual bool TradeEventPositionVolumeChanged()

Valor de retorno
O mtodo de classe CExpert no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3547

Biblioteca Padro

TradeEventPositionModified
Manipulador do evento "Position modified" (posio modificada).
virtual bool TradeEventPositionModified()

Valor de retorno
O mtodo de classe CExpert no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3548

Biblioteca Padro

TradeEventPositionClosed
Manipulador do evento "Position closed (posio fechada).
virtual bool TradeEventPositionClosed()

Valor de retorno
O mtodo de classe CExpert no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3549

Biblioteca Padro

TradeEventOrderPlaced
Manipulador do evento "Pending order placed" (ordem pendente colocada).
virtual bool TradeEventOrderPlaced()

Valor de retorno
O mtodo de classe CExpert no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3550

Biblioteca Padro

TradeEventOrderModified
Manipulador do evento "Pending order modified" (ordem pendente modificada).
virtual bool TradeEventOrderModified()

Valor de retorno
O mtodo de classe CExpert no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3551

Biblioteca Padro

TradeEventOrderDeleted
Manipulador do evento "Pending order deleted" (excluso de ordem pendente).
virtual bool TradeEventOrderDeleted()

Valor de retorno
O mtodo de classe CExpert no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3552

Biblioteca Padro

TradeEventNotIdentified
Manipulador do evento no identificado.
virtual bool TradeEventNotIdentified()

Valor de retorno
O mtodo de classe CExpert no faz nada e sempre retorna verdadeiro.
Observao
Note que vrios eventos de negociao podem chegar, nesse casos ser difcil a identifico.

2000-2015, MetaQuotes Software Corp.

3553

Biblioteca Padro

TimeframeAdd
Adiciona um timeframe para rastreamento.
void TimeframeAdd(
ENUM_TIMEFRAMES

period

// timeframe

Parmetros
period
[in] Timeframe (enumerador ENUM_TIMEFRAMES).
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3554

Biblioteca Padro

TimeframesFlags
O mtodo retorna o flag indicando os timeframes com uma nova barra.
int TimeframesFlags(
MqlDateTime&

time

// variable for time

Parmetros
time
[in] Varivel do tipo MqlDateTime para novo tempo, transferido pela referncia.
Valor de retorno
Retorna o flag que indica os timeframes com uma nova barra.

2000-2015, MetaQuotes Software Corp.

3555

Biblioteca Padro

CExpertSignal
CExpertSignal uma classe base para sinais de negociao que no faz nada (exceto os mtodos
CheckReverseLong() e CheckReverseShort()), mas providencia as interfaces.
Como usar:
1. Preparar um algoritmo para sinais de negociao;
2. Criar a prpria classe de sinal de negociao, herdado da classe CExpertSignal;
3. Substituir os mtodos virtuais em sua classe com os seus prprios algoritmos.
Voc pode encontrar exemplos de classes de sinal de negociao na pasta Expert\Signal\.

Descrio
CExpertSignal uma classe base para implementao de algoritmos de sinal de negociao.

Declarao
class CExpertSignal : public CExpertBase

Ttulo
#include <Expert\ExpertSignal.mqh>

Mtodos de classe
Inicializao
virtual InitIndicators

Inicializa indicadores e sries temporais

virtual ValidationSettings

Verifica as configuraes

virtual AddFilter

Adiciona um filtro ao sinal combinado

O acesso aos Dados Protegidos


BasePrice

Define o nvel de preo base

UsedSeries

Obtm os flags das timeseries usadas

Configurao de parmetros
Weight

Define o valor do parmetro "Weight"

PatternsUsage

Define o valor do parmetro "PatternsUsage"

General

Define o valor do parmetro "General"

Ignore

Define o valor do parmetro "Ignore"

Invert

Define o valor do parmetro "Invert"

ThresholdOpen

Define o valor do parmetro "ThresholdOpen"

ThresholdClose

Define o valor do parmetro "ThresholdClose"

PriceLevel

Define o valor do parmetro "pricelevel"

2000-2015, MetaQuotes Software Corp.

3556

Biblioteca Padro

StopLevel

Define o valor do parmetro "StopLevel"

TakeLevel

Define o valor do parmetro "TakeLevel"

Expiration

Define o valor do parmetro "Expiration"

Magic

Define o valor do parmetro "Magic"

Verificando Condies de Negociao


virtual CheckOpenLong

Verifica condies para abrir posio comprada

virtual CheckCloseLong

Verifica condies
comprada

virtual CheckOpenShort

Verifica condies para abrir posio vendida

virtual CheckCloseShort

Verifica condies para fechar posio vendida

virtual CheckReverseLong

Verifica condies de reverso de posio


comprada

virtual CheckReverseShort

Verifica condies de reverso de posio


vendida

para

fechar

posio

Configurao dos Parmetros de Negociao


virtual OpenLongParams

Define os parmetros para abertura de posio


comprada

virtual OpenShortParams

Define os parmetros para abertura de posio


vendida

virtual CloseLongParams

Define os parmetros para o fechamento de


posio comprada

virtual CloseShortParams

Define os parmetros para o fechamento de


posio vendida

Verificando
Trailing

Condies

das

Ordens

Tipo

virtual CheckTrailingOrderLong

Verifica
condies
para
modificar
parmetros de ordem pendente Buy

virtual CheckTrailingOrderShort

Verifica condies para modificar


parmetros de ordem pendente Sell

os

os

Mtodos de Verificar Formao de Ordens de


Mercado
virtual LongCondition

Obtm o resultado da verificao das condies


de compra

virtual ShortCondition

Obtm o resultado da verificao das condies


de venda

virtual Direction

Obtm a direo "ponderada" de preo

2000-2015, MetaQuotes Software Corp.

3557

Biblioteca Padro

BasePrice
Define o nvel de preo base.
void BasePrice(
double

value

// new value

Parmetros
value
[in] O novo valor do nvel de preo Base.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3558

Biblioteca Padro

UsedSeries
Obtm os flags das timeseries usadas.
int BasePrice()

Valor de retorno
Flags das timeserie usadas (se o smbolo/timeframe corresponde ao smbolo/timeframe que est
trabalhando), caso contrrio retorna 0 (zero).

2000-2015, MetaQuotes Software Corp.

3559

Biblioteca Padro

Weight
Define novo valor do parmetro "Weight".
void Weight(
double

value

// new value

Parmetros
value
[in] O novo valor de peso.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3560

Biblioteca Padro

PatternUsage
Define o valor do parmetro "PatternsUsage".
void PatternUsage(
double

value

// new value

Parmetros
value
[in] O novo valor dos padres de uso.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3561

Biblioteca Padro

General
Define novo valor do parmetro "General" .
void General(
int

value

// new value

Parmetros
value
[in] O novo valor "Geral".
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3562

Biblioteca Padro

Ignore
Define um novo valor de parmetro "Ignore".
void Ignore(
long

value

// new value

Parmetros
value
[in] O novo valor "Ignorar".
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3563

Biblioteca Padro

Invert
Define novo valor do parmetro "Invert".
void Invert(
long

value

// new value

Parmetros
value
[in] O novo valor para "Inverter".
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3564

Biblioteca Padro

ThresholdOpen
Define novo valor do parmetro "ThresholdOpen".
void ThresholdOpen(
long

value

// new value

Parmetros
value
[in] O novo valor do limite para abertura.
Valor de retorno
Nenhum.
Observao
A variao do limite para abertura de 0 a 100. Usado para abertura de posio.

2000-2015, MetaQuotes Software Corp.

3565

Biblioteca Padro

ThresholdClose
Define novo valor do parmetro "ThresholdClose".
void ThresholdOpen(
long

value

// new value

Parmetros
value
[in] O novo valor do limite para fechamento.
Valor de retorno
Nenhum.
Observao
A variao do limite para fechamento de 0 a 100. Usado para fechar posio.

2000-2015, MetaQuotes Software Corp.

3566

Biblioteca Padro

PriceLevel
Define novo valor do parmetro "pricelevel".
void PriceLevel(
double

value

// new value

Parmetros
value
[in] O novo valor do nvel de preo.
Valor de retorno
Nenhum.
Observao
O valor de "pricelevel" definido em unidades de nvel de preo. Os valores numricos da unidade
de nvel de preos retorna pelo mtodo PriceLevelUnit(). O "pricelevel" usado para definir o preo
de abertura em relao ao preo base.

2000-2015, MetaQuotes Software Corp.

3567

Biblioteca Padro

StopLevel
Define novo valor do parmetro "StopLevel".
void StopLevel(
double

value

// new value

Parmetros
value
[in] O novo valor do nvel para finalizar a perda de uma negociao.
Valor de retorno
Nenhum.
Observao
O valor do "StopLevel" definido em unidades de nvel de preo. Os valores numricos de unidade
do nvel de preo retorna pelo mtodo PriceLevelUnit() . O "StopLevel" usado para definir o nvel
de preo para finalizar a perda de uma negociao (Stop Loss) em relao ao preo de abertura da
posio.

2000-2015, MetaQuotes Software Corp.

3568

Biblioteca Padro

TakeLevel
Define novo valor do parmetro "TakeLevel".
void TakeLevel(
double

value

// new value

Parmetros
value
[in] O novo valor do nvel para finalizar uma negociao com lucro.
Valor de retorno
Nenhum.
Observao
O valor de "TakeLevel" definido em unidades de nvel de preo. Os valores numricos de unidade
de nvel de preos retorna pelo mtodo PriceLevelUnit(). O "TakeLevel" utilizado para definir o
nvel de preo para finalizar a negociao com lucro (Take Profit) em relao ao preo de abertura
da posio.

2000-2015, MetaQuotes Software Corp.

3569

Biblioteca Padro

Expiration
Define o valor do parmetro "Expiration" .
void Expiration(
int

value

// new value

Parmetros
value
[in] O novo valor da "Expirao".
Valor de retorno
Nenhum.
Observao
O valor do parmetro "Expiration" definido em barras. usado como tempo de expirao para as
Ordens Pendentes (quando de negociao com ordens pendentes).

2000-2015, MetaQuotes Software Corp.

3570

Biblioteca Padro

Magic
Define o valor do parmetro "Magic".
void Magic(
int

value

// new value

Parmetros
value
[in] O novo valor de nmero mgico(ID do Expert Advisor).
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3571

Biblioteca Padro

ValidationSettings
Verifica as configuraes.
virtual bool ValidationSettings()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3572

Biblioteca Padro

InitIndicators
Inicializa todos os indicadores e sries temporais.
virtual bool InitIndicators(
CIndicators* indicators

// pointer

Parmetros
indicators
[in] Ponteiro para coleo de indicadores e timeseries.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
As timeseries so inicializadas somente se o objeto usa o smbolo ou timeframe diferente do que foi
definido na inicializao.

2000-2015, MetaQuotes Software Corp.

3573

Biblioteca Padro

AddFilter
Adiciona um filtro ao sinal composto.
virtual bool InitIndicators(
CExpertSignal* filter

// pointer

Parmetros
indicators
[in] Ponteiro para filtrar objeto.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3574

Biblioteca Padro

CheckOpenLong
Verifica as condies para abrir posio comprada.
virtual bool CheckOpenLong(
double&

price,

// price

double&

sl,

// Stop Loss

double&

tp,

// Take Profit

datetime& expiration

// expiration

Parmetros
price
[in][out] Varivel do preo, transmitida por referncia.
sl
[in][out] Varivel do preo de Stop Loss, transmitida por referncia.
tp
[in][out] Varivel do preo de Take Profit, transmitida por referncia.
expiration
[in][out] Varivel para expirao do tempo, transmitida por referncia.
Valor de retorno
verdadeiro se a condio for satisfeita, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3575

Biblioteca Padro

CheckOpenShort
Verifica condies para abertura de posio vendida.
virtual bool CheckOpenShort(
double&

price,

// price

double&

sl,

// Stop Loss

double&

tp,

// Take Profit

datetime& expiration

// expiration

Parmetros
price
[in][out] Varivel do preo, transmitida por referncia.
sl
[in][out] Varivel do preo de Stop Loss, transmitida por referncia.
tp
[in][out] Varivel do preo de Take Profit, transmitida por referncia.
expiration
[in][out] Varivel para expirao do tempo, transmitida por referncia.
Valor de retorno
verdadeiro se a condio for satisfeita, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3576

Biblioteca Padro

OpenLongParams
Define os parmetros para abertura de posio comprada.
virtual bool OpenLongParams(
double&

price,

// price

double&

sl,

// Stop Loss

double&

tp,

// Take Profit

datetime& expiration

// expiration

Parmetros
price
[in][out] Varivel do preo, transmitida por referncia.
sl
[in][out] Varivel do preo de Stop Loss, transmitida por referncia.
tp
[in][out] Varivel do preo de Take Profit, transmitida por referncia.
expiration
[in][out] Varivel para expirao do tempo, transmitida por referncia.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3577

Biblioteca Padro

OpenShortParams
Define os parmetros para abertura de posio vendida.
virtual bool OpenShortParams(
double&

price,

// price

double&

sl,

// Stop Loss

double&

tp,

// Take Profit

datetime& expiration

// expiration

Parmetros
price
[in][out] Varivel do preo, transmitida por referncia.
sl
[in][out] Varivel do preo de Stop Loss, transmitida por referncia.
tp
[in][out] Varivel do preo de Take Profit, transmitida por referncia.
expiration
[in][out] Varivel para expirao do tempo, transmitida por referncia.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3578

Biblioteca Padro

CheckCloseLong
Verifica condies para fechar a posio comprada.
virtual bool CheckCloseLong(
double& price

// price

Parmetros
price
[in][out] Varivel para fechamento de preo, transmitida por referncia.
Valor de retorno
verdadeiro se a condio for satisfeita, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3579

Biblioteca Padro

CheckCloseShort
Verifica condies para fechar a posio vendida.
virtual bool CheckCloseShort(
double& price

// price

Parmetros
price
[in][out] Varivel para fechamento de preo, transmitida por referncia.
Valor de retorno
verdadeiro se a condio for satisfeita, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3580

Biblioteca Padro

CloseLongParams
Define os parmetros para o fechamento de posio comprada.
virtual bool CloseLongParams(
double&

price

// price

Parmetros
price
[in][out] Varivel para fechamento de preo, transmitida por referncia.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3581

Biblioteca Padro

CloseShortParams
Define os parmetros para o fechamento de posio vendida.
virtual bool CloseShortParams(
double&

price

// price

Parmetros
price
[in][out] Varivel para fechamento de preo, transmitida por referncia.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3582

Biblioteca Padro

CheckReverseLong
Verifica condies de reverso de posio comprada.
virtual bool CheckReverseLong(
double&

price,

// price

double&

sl,

// Stop Loss

double&

tp,

// Take Profit

datetime& expiration

// expiration

Parmetros
price
[in][out] Varivel do preo, transmitida por referncia.
sl
[in][out] Varivel do preo de Stop Loss, transmitida por referncia.
tp
[in][out] Varivel do preo de Take Profit, transmitida por referncia.
expiration
[in][out] Varivel para expirao do tempo, transmitida por referncia.
Valor de retorno
verdadeiro se a condio for satisfeita, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3583

Biblioteca Padro

CheckReverseShort
Verifica condies de reverso de posio vendida.
virtual bool CheckReverseShort(
double&

price,

// price

double&

sl,

// Stop Loss

double&

tp,

// Take Profit

datetime& expiration

// expiration

Parmetros
price
[in][out] Varivel da reverso de preo, transmitida por referncia.
sl
[in][out] Varivel do preo de Stop Loss, transmitida por referncia.
tp
[in][out] Varivel do preo de Take Profit, transmitida por referncia.
expiration
[in][out] Varivel para expirao do tempo, transmitida por referncia.
Valor de retorno
verdadeiro se a condio for satisfeita, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3584

Biblioteca Padro

CheckTrailingOrderLong
Verifica condies para modificar os parmetros de ordem pendente Buy.
virtual bool CheckTrailingOrderLong(
COrderInfo*

order,

// order

double&

price

// price

Parmetros
order
[in] Ponteiro para objeto da classe COrderInfo.
price
[in][out] Varivel de preo para Stop Loss.
Valor de retorno
verdadeiro se a condio for satisfeita, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3585

Biblioteca Padro

CheckTrailingOrderShort
Verifica condies para modificar os parmetros de ordem pendente.
virtual bool CheckTrailingOrderShort(
COrderInfo*

order,

// order

double&

price

// price

Parmetros
order
[in] Ponteiro para objeto da classe COrderInfo.
price
[in][out] Varivel de preo para Stop Loss.
Valor de retorno
verdadeiro se a condio for satisfeita, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3586

Biblioteca Padro

LongCondition
Verifica as condies para abrir posio comprada.
virtual int LongCondition()

Valor de retorno
As condies so satisfeitas quando retorna o valor de 1 a 100 (dependendo da "fora" do sinal).
Retorna 0 (zero) quando no existe um sinal para abertura de posio comprada.
Observao
O mtodo LongCondition() de uma classe base no tem nenhuma implementao a fim de verificar
condies para abrir posio comprada e sempre retorna 0 (zero).

2000-2015, MetaQuotes Software Corp.

3587

Biblioteca Padro

ShortCondition
Verifica condies para abertura de posio vendida.
virtual int ShortCondition()

Valor de retorno
As condies so satisfeitas quando retorna o valor de 1 a 100 (dependendo da "fora" do sinal).
Retorna 0 (zero) quando no existe um sinal para abertura de posio vendida.
Observao
O mtodo ShortCondition() de uma classe base no tem nenhuma implementao a fim de verificar
condies para abrir posio vendida e sempre retorna 0 (zero).

2000-2015, MetaQuotes Software Corp.

3588

Biblioteca Padro

Direction
Retorna o valor da direo "ponderada".
virtual double Direction()

Valor de retorno
Ele retorna o valor>0 na direo ascendente (provavelmente) e retorna valor<0 na direo
descendente. O valor absoluto depende da "fora" de um sinal.
Observao
Se so usados os filtros, o resultado depender dos filtros.

2000-2015, MetaQuotes Software Corp.

3589

Biblioteca Padro

CExpertTrailing
CExpertTrailing uma classe base para os algoritmos cujo os objetivos so mover o nvel de preo que
finaliza as perdas de uma negociao (Trailing Stop), esta classe no faz nada, mas providencia as
interfaces.
Como usar:
1. Preparar um algoritmo para trailing;
2. Criar a sua prpria classe de trailing, herdado da classe CExpertTrailing;
3. Substituir os mtodos virtuais em sua classe com os seus prprios algoritmos.
Voc pode encontrar exemplos da classe de trailing na pasta Expert\Trailing\.

Descrio
CExpertTrailing uma classe base para implementao de algoritmos do Trailing Ttop.

Declarao
class CExpertTrailing : public CExpertBase

Ttulo
#include <Expert\ExpertTrailing.mqh>

Mtodos de classe
Verificao das Condies do Trailing Stop
virtual CheckTrailingStopLong

Verifica
condies
para
modificar
parmetros da posio comprada

os

virtual CheckTrailingStopShort

Verifica
condies
para
modificar
parmetros da posio vendida

os

2000-2015, MetaQuotes Software Corp.

3590

Biblioteca Padro

CheckTrailingStopLong
Verifica condies para modificar os parmetros da posio comprada.
virtual bool CheckTrailingStopLong(
CPositionInfo* position,

// pointer

double&

sl,

// Stop Loss

double&

tp

// Take Profit

Parmetros
position
[in] Ponteiro para objeto da classe CPositionInfo.
sl
[in][out] Varivel do preo de Stop Loss, transmitida por referncia.
tp
[in][out] Varivel do preo de Take Profit, transmitida por referncia.
Valor de retorno
verdadeiro se a condio for satisfeita, caso contrrio falso.
Observao
O mtodo CheckTrailingStopLong (...) da classe base sempre retorna falso.

2000-2015, MetaQuotes Software Corp.

3591

Biblioteca Padro

CheckTrailingStopShort
Verifica condies para modificar os parmetros da posio vendida.
virtual bool CheckTrailingStopShort(
CPositionInfo* position,

// pointer

double&

sl,

// Stop Loss

double&

tp

// Take Profit

Parmetros
position
[in] Ponteiro para objeto da classe CPositionInfo.
sl
[in][out] Varivel do preo de Stop Loss, transmitida por referncia.
tp
[in][out] Varivel do preo de Take Profit, transmitida por referncia.
Valor de retorno
verdadeiro se a condio for satisfeita, caso contrrio falso.
Observao
O mtodo CheckTrailingStopShort(...) da classe base sempre retorna falso.

2000-2015, MetaQuotes Software Corp.

3592

Biblioteca Padro

CExpertMoney
CExpertMoney uma classe base de algoritmos para dinheiro e gesto de risco.

Descrio
CExpertMoney uma classe base para implementao de classe de dinheiro e gesto de risco.

Declarao
class CExpertMoney : public CObject

Ttulo
#include <Expert\ExpertMoney.mqh>

Mtodos de classe
O acesso aos Dados Protegidos
Percent

Define o valor do parmetro "Risk percent"

Inicializao
virtual ValidationSettings

Verifica as configuraes

Verificao das Condies de Negociao


virtual CheckOpenLong

Obtm o volume para posio comprada

virtual CheckOpenShort

Obtm o volume para posio vendida

virtual CheckReverse

Obtm o volume para reverso de posio

virtual CheckClose

Verifica condies para fechar a posio aberta

2000-2015, MetaQuotes Software Corp.

3593

Biblioteca Padro

Percent
Define o valor do parmetro "Risk percent".
void Percent(
double percent

// risk percent

Parmetros
percent
[in] Porcentagem de risco.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3594

Biblioteca Padro

ValidationSettings
Verifica as configuraes.
virtual bool ValidationSettings()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
O mtodo ValidationSettings() da classe base sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3595

Biblioteca Padro

CheckOpenLong
Obtm o volume para posio comprada.
virtual double CheckOpenLong(
double price,

// price

double sl

// Stop Loss

Parmetros
price
[in] preo de abertura da posio comprada.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
O volume de negociao para posio comprada.

2000-2015, MetaQuotes Software Corp.

3596

Biblioteca Padro

CheckOpenShort
Obtm o volume para a posio vendida.
virtual double CheckOpenShort(
double price,

// price

double sl

// Stop Loss

Parmetros
price
[in] preo de abertura para a posio vendida.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
O volume de negociao para a posio vendida.

2000-2015, MetaQuotes Software Corp.

3597

Biblioteca Padro

CheckReverse
Obtm o volume para reverso de posio.
virtual double CheckReverse(
CPositionInfo* position,

// pointer

double

// Stop Loss

sl

Parmetros
position
[in] Ponteiro para objeto da classe CPositionInfo.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
Volume para reverso da posio.

2000-2015, MetaQuotes Software Corp.

3598

Biblioteca Padro

CheckClose
Verifica condies para fechar a posio aberta.
virtual double CheckClose()

Valor de retorno
verdadeiro se a condio for satisfeita, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3599

Biblioteca Padro

Mdulos de Sinais de Negociao


O terminal do cliente MT5 inclui um conjunto de mdulos j prontos de sinais de negociao para o
"Assistente MQL5". Ao criar um Expert Advisor no Assistente MQL5, voc pode usar qualquer
combinao de mdulos de sinais de negociao (at 64). A deciso final sobre uma operao feita
com base na anlise complexa dos sinais obtidos a partir de todos os mdulos includos. Temos a
descrio detalhada dos mecanismos das tomadas de decises abaixo:
O terminal inclui os seguintes mdulos de sinais:
Os sinais do indicador Accelerator Oscillator
Os sinais do indicador Adaptive Moving Average
Os sinais do indicador Awesome Oscillator
Os sinais do Oscillator Bears Power
Os sinais do Oscillator Bulls Power
Os sinais do Oscillator Commodity Channel Index
Os sinais do oscilador DeMarker
Os sinais do indicador Double Exponential Moving Average
Os sinais do indicador Envelopes
Os sinais do indicador Fractal Adaptive Moving Average
Sinais do Filtro de Tempo Intradirio
Os sinais do oscilador MACD
Os sinais do indicador Moving Average
Os sinais do indicador Parabolic SAR
Os sinais do oscilador Relative Strength Index
Os sinais do oscilador Relative Vigor Index
Os sinais do oscilador Stochastic
Os sinais do oscilador Triple Exponential Average
Os sinais do indicador Triple Exponential Moving Average
Os sinais do oscilador Williams Percent Range

Os Mecanismo das Tomadas de Decises de Negociao com Base


nos Mdulos de Sinal
Os mecanismos das tomadas de decises de negociao podem ser representados como a seguinte
lista de princpios bsicos:
Cada um dos mdulos de sinais tem o seu conjunto de mdulos de mercado (certa combinao de
preos e valores de um indicador).
Cada modelo de mercado tem uma fora determinada que pode variar de acordo com o intervalo de
1 a 100. Quanto maior a fora determinada, mais forte o modelo.
Cada um dos modelos gera uma previso da direo do movimento dos preos.
A previso de um mdulo o resultado da pesquisa para os modelos incorporados, transmitido
como um nmero no intervalo de -100 a 100. O sinal determina a direo do movimento previsto

2000-2015, MetaQuotes Software Corp.

3600

Biblioteca Padro
(sinal negativo significa que o preo vai cair, sinal positivo significa que o preo vai subir). O valor
absoluto corresponde fora do melhor modelo encontrado.
A previso de cada mdulo enviado para uma "deciso" final com um coeficiente de peso de 0-1
especificado em suas configuraes ("Weight").
O resultado da deciso um nmero no intervalo de -100 a 100, onde o sinal determina o sentido do
movimento previsto, o valor absoluto caracteriza a fora do sinal. calculado como uma mdia
aritmtica das previses ponderadas de todos os mdulos de sinais.
Cada Expert Advisor gerado tem duas configuraes ajustveis - nveis de limite de abertura e
fechamento de uma posio (ThresholdOpen e ThresholdClose), que pode ser igual a um valor na faixa
de 0 a 100. Se a intensidade de sinal final excede um nvel limiar, uma operao de negociao que
corresponde ao sinal ser realizada.

Exemplos
Considere um Expert Advisor com os seguintes limiares: ThresholdOpen=20 e ThresholdClose=90. Dois
mdulos de sinais participam na tomada de decises sobre as operaes de negociao: o mdulo MA
com o peso de 0,4 e o mdulo Stochastic com peso 0,8. Vamos analisar as duas variantes dos sinais
obtidos:
Variante 1.
O preo cruzou para cima a MA em asceno. Este caso corresponde a um dos modelos de mercado
implementados no Mdulo MA. Este modelo implica um aumento de preo. O seu significado igual a
100. Ao mesmo tempo, o oscilador Stochastic est voltado para baixo e forma uma divergncia com o
preo. Este caso corresponde a um dos modelos implementados no Mdulo Stochastic. Este modelo
implica uma queda de preo. O peso deste modelo 80.
Vamos calcular o resultado de "deciso" final. A taxa obtida a partir do mdulo de MA calculada como
0,4 * 100 = 40. O valor do mdulo Stochastic calculado como 0,8 * (-80) = -64. O valor final
calculado como a mdia aritmtica das duas taxas: (40-64) / 2 = -12. O resultado da deciso o sinal
para a venda com fora relativa igual a 12. O nvel do limiar "ThresholdOpen" que igual a 20 no
atingido. Deste modo a operao de negociao no ser executada.
Variante 2.
O preo cruzou para baixo a MA em asceno. Este caso corresponde a um dos modelos implementados
no Mdulo MA. Este Modelo implica um aumento de preo. O seu significado igual a 10. Ao mesmo
tempo, o oscilador Stochastic est voltado para baixo e forma uma divergncia com o preo. Este caso
corresponde a um dos modelos implementados no Mdulo Stochastic. Este modelo implica uma queda
de preo. O peso deste modelo 80.
Vamos calcular o resultado de "deciso" final. A taxa obtidas a partir do mdulo de MA calculada
como 0,4 * 10 = 4. O valor do mdulo Stochastic calculado como 0,8 * (-80) = -64. O valor final
calculado como uma mdia aritmtica das duas taxas: (4-64) / 2 = -30. O resultado da deciso o
sinal para venda com fora relativa igual a 30. O nvel do limiar "ThresholdOpen" que igual a 20 foi
atingido. Assim, o resultado um sinal para a abertura de uma posio vendida.

2000-2015, MetaQuotes Software Corp.

3601

Biblioteca Padro

a) Divergncia do preo e o oscilador Stochastic (variantes 1 e 2).


b) O preo cruzou para cima a MA em asceno (variante 1).
c) O preo cruzou para baixo a MA em asceno(variantes 2).

2000-2015, MetaQuotes Software Corp.

3602

Biblioteca Padro

Os sinais do indicador Accelerator Oscillator


Este mdulo baseado nos modelos de mercado do indicador Accelerator oscilador. O mecanismo de
tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos descritos em
seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

O valor do indicador est acima de 0, se elevando nas barras analisadas e


anteriores.

O valor do indicador est abaixo de 0, se elevando nas barras analisadas e


anteriores.

Para
Vender

O valor do indicador abaixo de 0, caindo nas barras analisadas e anteriores.

2000-2015, MetaQuotes Software Corp.

3603

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

O valor do indicador acima de 0, caindo nas barras analisadas e anteriores

Sem
objees
para
comprar

O valor do indicador cresce nas barras analisadas.

Sem
objees
para
vender

O valor do indicador decresce nas barras analisadas.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

Parmetros Ajustveis
2000-2015, MetaQuotes Software Corp.

3604

Biblioteca Padro
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

2000-2015, MetaQuotes Software Corp.

3605

Biblioteca Padro

Os sinais do indicador Adaptive Moving Average


Este mdulo baseado nos modelos de mercado do indicador Adaptive Moving Average. O mecanismo
de tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos descritos
em seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

O preo cruza a linha do indicador para baixo (o preo de abertura (Open) da barra
analisada est acima do indicador e o preo de fechamento (Close) est abaixo da
linha do indicador) e o indicador aumenta (sinal fraco).

Cruzamento Moving Average. O preo cruza a linha do indicador para cima (o


preo de abertura (Open) da barra analisada est abaixo do indicador e o preo de
fechamento (Close) est acima da linha do indicador) e o indicador aumenta (sinal
forte).

2000-2015, MetaQuotes Software Corp.

3606

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

A sombra inferior da barra cruzou a linha do indicador (os preos de abertura


(Open) e fechamento (Close) da barra analisada est acima do indicador, e a
mnima do preo (Low) est abaixo da linha do indicador) e o indicador aumenta
(sinal fraco).

Para
Vender

O preo cruza a linha do indicador para baixo (o preo de abertura (Open) da barra
analisada est abaixo do indicador e o preo de fechamento (Close) est acima da
linha do indicador) e o indicador diminui (sinal fraco).

Cruzamento Moving Average. O preo cruza a linha do indicador para baixo (o


preo de abertura (Open) da barra analisada est acima do indicador e o preo de
fechamento (Close) est abaixo da linha do indicador) e o indicador diminui (sinal
forte).

2000-2015, MetaQuotes Software Corp.

3607

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

A sombra superior da barra cruzou a linha do indicador (os preos de abertura


(Open) e fechamento (Close) da barra analisada est abaixo do indicador, e a
mxima do preo (High) est acima da linha do indicador) e o indicador diminui
(sinal fraco).

Sem
objees
para
comprar

Os preos esto acima do indicador.

Sem
objees
para
vender

O preo est abaixo do indicador.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra

2000-2015, MetaQuotes Software Corp.

3608

Biblioteca Padro
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodMA

Perodo de clculo da mdia do indicador.

Shift

Deslocamento do indicador ao longo do eixo do


tempo (em barras).

Method

Mtodo de mdia.

Applied

As sries de preos utilizadas para o clculo do


indicador.

2000-2015, MetaQuotes Software Corp.

3609

Biblioteca Padro

Os sinais do indicador Awesome Oscillator


Este mdulo de sinais baseia-se nos modelos de mercado do indicador Awesome Oscillator. O
mecanismo de tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos
descritos em seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

Saucer Valor do indicador nas barra analisada aumenta e diminui nas barras
anteriores; todos os valores esto acima de 0. (obs: Saucer seria a formao de
um fundo tipo pires (prato/disco) nas extremidades das barras do indicador)

Cruzando a linha zero Valor do indicador superior a 0 (zero) na barra


analisada e menor do que 0 (zero) na barra anterior.

Divergncia o valor do fundo da primeira barra (a) analisada do indicador

2000-2015, MetaQuotes Software Corp.

3610

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

menor do que o fundo da barra posterior (b) e o valor correspondente a mnima


(Low) do preo da barra (A) maior do que o valor correspondente a mnima (Low)
do preo da barra (B). Alm disso, as barras do indicador no devem estar acima
do nivel zero.

Para
Vender

Saucer Valor do indicador nas barra analisada diminui e aumenta nas barras
anteriores; todos os valores esto abaixo de 0. (obs: Saucer seria a formao de
um fundo tipo pires (prato/disco) nas extremidades das barras do indicador)

Cruzando a linha zero - Valor do indicador inferior a 0 (zero) na barra analisada


e maior do que 0 (zero) na barra anterior.

2000-2015, MetaQuotes Software Corp.

3611

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Divergncia - o valor do topo da primeira barra (a) analisada do indicador maior


do que o topo da barra posterior (b) e o valor correspondente a mxima (High) do
preo da barra (A) menor do que o valor correspondente a mxima (High) do
preo da barra (B). Alm disso, as barras do indicador no devem estar abaixo do
nvel zero.

Sem
objees
para
comprar

O valor do indicador cresce nas barras analisadas.

Sem
objees
para
vender

O valor do indicador decresce nas barras analisadas.

Observao

2000-2015, MetaQuotes Software Corp.

3612

Biblioteca Padro
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

2000-2015, MetaQuotes Software Corp.

3613

Biblioteca Padro

Os sinais do Oscillator Bears Power


Este mdulo de sinais baseia-se nos modelos de mercado do oscilador Bears Power. O mecanismo de
tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos descritos em
seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

Reverso - trs barras do oscilador tem uma formao fractal tipo cunha e a barra
analisada tem valor menor do que 0.

Divergncia - o valor do fundo da primeira barra (a) analisada do indicador


menor do que o fundo da barra posterior (b) e o valor correspondente a mnima
(Low) do preo da barra (A) maior do que o valor correspondente a mnima (Low)
do preo da barra (B). Alm disso, as barras do indicador no devem estar acima
do nivel zero.

2000-2015, MetaQuotes Software Corp.

3614

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Para
Vender

No h sinais para venda.

Sem
objees
para
comprar

Valor do oscilador menor do que 0.

Sem
objees
para
vender

Nenhum sinal.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodBears

Perodo de clculo do oscilador.

2000-2015, MetaQuotes Software Corp.

3615

Biblioteca Padro

Os sinais do Oscillator Bulls Power


Este mdulo de sinais baseia-se nos modelos de mercado do oscilador Bulls Power. O mecanismo de
tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos descritos em
seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar
Para
Vender

Descrio das Condies

No h sinais de compra.

Reverso - trs barras do oscilador tem uma formao fractal tipo cunha e a barra
analisada tem valor maior do que 0.

Divergncia - o valor do topo da primeira barra (a) analisada do indicador maior


do que o topo da barra posterior (b) e o valor correspondente a mxima (High) do
preo da barra (A) menor do que o valor correspondente a mxima (High) do
preo da barra (B). Alm disso, as barras do indicador no devem estar abaixo do
nvel zero. Alm disso, o oscilador no deve descer abaixo do nvel zero.

2000-2015, MetaQuotes Software Corp.

3616

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Sem
objees
para
comprar

Nenhum sinal.

Sem
objees
para
vender

Valor do oscilador maior do que 0.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodBulls

Perodo de clculo do oscilador.

2000-2015, MetaQuotes Software Corp.

3617

Biblioteca Padro

Os sinais do Oscillator Commodity Channel Index


Este mdulo de sinais baseia-se nos modelos de mercado do oscilador Commodity Channel Index. O
mecanismo de tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos
descritos em seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

Reverso no nvel sobrevendido - O oscilador retorna para cima e seu valor na


barra analisada est atrs do nvel sobrevendido (valor padro -100).

Divergncia - o valor da primeira parte da linha do indicador no fundo (a) menor


do que um ponto posterior (b) em relao ao valor correspondente da mnima
(Low) do preo da barra (A) que maior do que o valor correspondente da mnima
(Low) do preo da barra (B).

2000-2015, MetaQuotes Software Corp.

3618

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Divergncia Dupla - a linha do oscilador forma trs consequentes fundos (a/b/c),


onde o valor de a < b < c; correspondendo a trs mnimas (Low) de preo das
barras formadas (A/B/C), onde o valor da mnima do preo A > B > C.

Para
Vender

Reverso no nvel sobrecomprado - O oscilador retorna para baixo e seu valor na


barra analisada est atrs do nvel sobrecomprado (valor padro 100).

Divergncia - o valor da primeira parte da linha do indicador no topo (a) maior


do que um ponto posterior (b) em relao ao valor correspondente da mxima
(High) do preo da barra (A) que menor do que o valor correspondente da
mxima (High) do preo da barra (B).

2000-2015, MetaQuotes Software Corp.

3619

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Divergncia Dupla - a linha do oscilador forma trs consequentes topos (a/b/c),


onde o valor de a > b > c; correspondendo a trs mximas (High) de preo das
barras formadas (A/B/C), onde o valor da mxima do preo A < B < C.

Sem
objees
para
comprar

Valor do oscilador cresce na barra analisada.

Sem
objees
para
vender

Valor do oscilador decresce na barra analisada.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

2000-2015, MetaQuotes Software Corp.

3620

Biblioteca Padro

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodCCI

Perodo de clculo do oscilador.

Applied

As sries de preos utilizadas para o clculo do


oscilador.

2000-2015, MetaQuotes Software Corp.

3621

Biblioteca Padro

Os sinais do oscilador DeMarker


Este mdulo de sinais baseia-se nos modelos de mercado do oscilador DeMarker. O mecanismo de
tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos descritos em
seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

Reverso atrs do nvel sobrevendido - O oscilador se volta para cima e seu valor
na barra analisada est atrs do nvel de sobrevendido (valor padro 0,3).

Divergncia - o valor da primeira parte da linha do indicador no fundo (a) menor


do que um ponto posterior (b) em relao ao valor correspondente da mnima
(Low) do preo da barra (A) que maior do que o valor correspondente da mnima
(Low) do preo da barra (B).

Divergncia Dupla - a linha do oscilador forma trs consequentes fundos (a/b/c),

2000-2015, MetaQuotes Software Corp.

3622

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

onde o valor de a < b < c; correspondendo a trs mnimas (Low) de preo das
barras formadas (A/B/C), onde o valor da mnima do preo A > B > C.

Para
Vender

Reverso atrs do nvel sobrecomprado - O oscilador se volta para baixo e seu


valor na barra analisada est atrs do nvel sobrecomprado (valor padro 0,7).

Divergncia - o valor da primeira parte da linha do indicador no topo (a) maior


do que um ponto posterior (b) em relao ao valor correspondente da mxima
(High) do preo da barra (A) que menor do que o valor correspondente da
mxima (High) do preo da barra (B).

2000-2015, MetaQuotes Software Corp.

3623

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Divergncia Dupla - a linha do oscilador forma trs consequentes topos (a/b/c),


onde o valor de a > b > c; correspondendo a trs mximas (High) de preo das
barras formadas (A/B/C), onde o valor da mxima do preo A < B < C.

Sem
objees
para
comprar

Valor do oscilador cresce na barra analisada.

Sem
objees
para
vender

Valor do oscilador decresce na barra analisada.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

2000-2015, MetaQuotes Software Corp.

3624

Biblioteca Padro

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodDeM

Perodo de clculo do oscilador.

2000-2015, MetaQuotes Software Corp.

3625

Biblioteca Padro

Os sinais do indicador Double Exponential Moving Average


Este mdulo baseado nos modelos de mercado do indicador Double Exponential Moving Average. O
mecanismo de tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos
descritos em seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

O preo cruza a linha do indicador para baixo (o preo de abertura (Open) da barra
analisada est acima do indicador e o preo de fechamento (Close) est abaixo da
linha do indicador) e o indicador aumenta (sinal fraco).

Cruzamento Moving Average. O preo cruza a linha do indicador para cima (o


preo de abertura (Open) da barra analisada est abaixo do indicador e o preo de
fechamento (Close) est acima da linha do indicador) e o indicador aumenta (sinal
forte).

2000-2015, MetaQuotes Software Corp.

3626

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

A sombra inferior da barra cruzou a linha do indicador (os preos de abertura


(Open) e fechamento (Close) da barra analisada est acima do indicador, e a
mnima do preo (Low) est abaixo da linha do indicador) e o indicador aumenta
(sinal fraco).

Para
Vender

O preo cruza a linha do indicador para baixo (o preo de abertura (Open) da barra
analisada est abaixo do indicador e o preo de fechamento (Close) est acima da
linha do indicador) e o indicador diminui (sinal fraco).

Cruzamento Moving Average. O preo cruza a linha do indicador para baixo (o


preo de abertura (Open) da barra analisada est acima do indicador e o preo de
fechamento (Close) est abaixo da linha do indicador) e o indicador diminui (sinal
forte).

2000-2015, MetaQuotes Software Corp.

3627

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

A sombra superior da barra cruzou a linha do indicador (os preos de abertura


(Open) e fechamento (Close) da barra analisada est abaixo do indicador, e a
mxima do preo (High) est acima da linha do indicador) e o indicador diminui
(sinal fraco).

Sem
objees
para
comprar

O preo est acima do indicador.

Sem
objees
para
vender

O preo est abaixo do indicador.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra

2000-2015, MetaQuotes Software Corp.

3628

Biblioteca Padro
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodMA

Perodo de clculo da mdia do indicador.

Shift

Deslocamento do indicador ao longo do eixo do


tempo (em barras).

Method

Mtodo de mdia.

Applied

As sries de preos utilizadas para o clculo do


indicador.

2000-2015, MetaQuotes Software Corp.

3629

Biblioteca Padro

Os sinais do indicador Envelopes


Este mdulo de sinais baseia-se nos modelos de mercado do indicador Envelopes. O mecanismo de
tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos descritos em
seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo de
Sinal
Para
Comprar

Descrio das Condies

O preo est perto da linha inferior do indicador na barra analisada.

O preo cruzou a linha superior do indicador na barra analisada.

Para
Vender

O preo perto da linha superior do indicador na barra analisada.

2000-2015, MetaQuotes Software Corp.

3630

Biblioteca Padro

Tipo de
Sinal

Descrio das Condies

O preo cruzou a linha inferior do indicador na barra analisada.

Sem
objees
para
comprar

Nenhum sinal.

Sem
objees
para
vender

Nenhum sinal.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

2000-2015, MetaQuotes Software Corp.

3631

Biblioteca Padro

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodMA

Perodo de clculo do indicador.

Shift

Deslocamento do indicador ao longo do eixo do


tempo (em barras).

Method

Mtodo de mdia.

Applied

As sries de preos utilizadas para o clculo do


indicador.

Deviation

Desvio das bordas do envelope a partir da linha


central (MA), em termos percentuais.

2000-2015, MetaQuotes Software Corp.

3632

Biblioteca Padro

Os sinais do indicador Fractal Adaptive Moving Average


Este mdulo de sinais baseia-se nos modelos de mercado do indicador Adaptive Fractal Mdia Mvel. O
mecanismo de tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos
descritos em seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

O preo cruza a linha do indicador para baixo (o preo de abertura (Open) da barra
analisada est acima do indicador e o preo de fechamento (Close) est abaixo da
linha do indicador) e o indicador aumenta (sinal fraco).

Cruzamento Moving Average. O preo cruza a linha do indicador para cima (o


preo de abertura (Open) da barra analisada est abaixo do indicador e o preo de
fechamento (Close) est acima da linha do indicador) e o indicador aumenta (sinal
forte).

2000-2015, MetaQuotes Software Corp.

3633

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

A sombra inferior da barra cruzou a linha do indicador (os preos de abertura


(Open) e fechamento (Close) da barra analisada est acima do indicador, e a
mnima do preo (Low) est abaixo da linha do indicador) e o indicador aumenta
(sinal fraco).

Para
Vender

O preo cruza a linha do indicador para baixo (o preo de abertura (Open) da barra
analisada est abaixo do indicador e o preo de fechamento (Close) est acima da
linha do indicador) e o indicador diminui (sinal fraco).

Cruzamento Moving Average. O preo cruza a linha do indicador para baixo (o


preo de abertura (Open) da barra analisada est acima do indicador e o preo de
fechamento (Close) est abaixo da linha do indicador) e o indicador diminui (sinal
forte).

2000-2015, MetaQuotes Software Corp.

3634

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

A sombra superior da barra cruzou a linha do indicador (os preos de abertura


(Open) e fechamento (Close) da barra analisada est abaixo do indicador, e a
mxima do preo (High) est acima da linha do indicador) e o indicador diminui
(sinal fraco).

Sem
objees
para
comprar

Os preos esto acima do indicador.

Sem
objees
para
vender

O preo est abaixo do indicador.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra

2000-2015, MetaQuotes Software Corp.

3635

Biblioteca Padro
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodMA

Perodo de clculo da mdia do indicador.

Shift

Deslocamento do indicador ao longo do eixo do


tempo (em barras).

Method

Mtodo de mdia.

Applied

As sries de preos utilizadas para o clculo do


indicador.

2000-2015, MetaQuotes Software Corp.

3636

Biblioteca Padro

Sinais do Filtro de Tempo Intradirio


Este mdulo baseado no pressuposto de que a eficincia dos modelos de mercado muda no decorrer
do tempo. Usando este mdulo, voc pode filtrar sinais recebidos de outros mdulos por horas e dias
da semana. Isso permite aumentar a qualidade dos sinais gerados devido ao corte dos perodos de
tempo desfavorveis. O mecanismo das tomadas de decises com base nos sinais dos mdulos
descrito em seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo de Sinal

Descrio das Condies

Para Comprar

Nenhum sinal.

Para Vender

Nenhum sinal.

Sem objees para comprar

A data e a hora atual atendem os parmetros


especificados.

Sem objees para vender

A data e a hora atual atendem os parmetros


especificados.

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

GoodHourOfDay

Hora do dia (de 0 a 23), quando os sinais de


negociao sero habilitados. Se o valor -1,
os sinais sero habilitados por todo o dia.

BadHoursOfDay

O campo bit. Cada bit deste campo corresponde


a uma hora do dia (bit 0 - 0 hora, ..., 23 bit 23 horas). Se o valor de um bit igual a 0, os
sinais de negociao sero ativados durante a
hora correspondente. Se o valor de um bit
igual a 1, os sinais de negociao sero
desativados durante a hora correspondente. Um
nmero especfico representado como um
nmero binrio e usado como mscara de bit.
Horas desabilitadas tm maior prioridade do
que as habilitadas.

GoodDayOfWeek

Nmero de um nico dia na semana (de 0 a 6,


onde 0 domingo), quando os sinais de
negociao sero habilitados. Se o valor for -1,
os sinais sero habilitados em qualquer dia.

2000-2015, MetaQuotes Software Corp.

3637

Biblioteca Padro

Parmetro

Descrio

BadDaysOfWeek

O campo bit. Cada bit deste campo corresponde


a um dia da semana (bit 0 - Domingo, ..., 6 bit
- sbado). Se o valor de um bit igual a 0, os
sinais de negociao sero ativados durante o
dia correspondente. Se o valor de um bit igual
a 1, os sinais de negociao sero desativados
durante o dia correspondente. Um nmero
especfico representado como um nmero
binrio e usado como mscara de bit.
Dias desabilitados tm maior prioridade do que
os habilitados.

2000-2015, MetaQuotes Software Corp.

3638

Biblioteca Padro

Os sinais do oscilador MACD


Este mdulo de sinais baseia-se nos modelos de mercado do oscilador MACD. O mecanismo de tomada
de decises das negociaes baseado em sinais obtidos a partir dos mdulos descritos em seo
separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

Reverso - O oscilador se volta para cima (o oscilador cresce na barra analisada e


decresce na anterior).

Cruzamento da linha principal e de sinal - A linha principal est acima da linha


de sinal para a barra analisada e abaixo da linha do sinal na barra anterior.

Cruzando o nvel de zero - A linha principal est acima do nivel zero no barra
analisada e abaixo do nvel zero na anterior.

2000-2015, MetaQuotes Software Corp.

3639

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Divergncia - o valor da primeira parte da linha do indicador no fundo (a) menor


do que um ponto posterior (b) em relao ao valor correspondente da mnima
(Low) do preo da barra (A) que maior do que o valor correspondente da mnima
(Low) do preo da barra (B).

Divergncia Dupla - a linha do oscilador forma trs consequentes fundos (a/b/c),


onde o valor de a < b < c; correspondendo a trs mnimas (Low) de preo das
barras formadas (A/B/C), onde o valor da mnima do preo A > B > C.

2000-2015, MetaQuotes Software Corp.

3640

Biblioteca Padro

Tipo
Sinal

Para
Vender

de

Descrio das Condies

Reverso - O oscilador se volta para baixo (o oscilador decresce na barra analisada


e cresce na barra anterior).

Cruzamenot da linha principal e de sinal - A linha principal est abaixo da linha


de sinal na barra analisada e acima da linha de sinal na barra anterior.

2000-2015, MetaQuotes Software Corp.

3641

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Cruzando o nvel de zero - A linha principal est abaixo do nvel zero na barra
analisada e acima do nvel zero no anterior.

Divergncia - o valor da primeira parte da linha do indicador no topo (a) maior


do que um ponto posterior (b) em relao ao valor correspondente da mxima
(High) do preo da barra (A) que menor do que o valor correspondente da
mxima (High) do preo da barra (B).

2000-2015, MetaQuotes Software Corp.

3642

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Divergncia Dupla - a linha do oscilador forma trs consequentes topos (a/b/c),


onde o valor de a > b > c; correspondendo a trs mximas (High) de preo das
barras formadas (A/B/C), onde o valor da mxima do preo A < B < C.

Sem
objees
para
comprar

Valor do oscilador cresce na barra analisada.

Sem
objees
para
vender

Valor do oscilador decresce na barra analisada.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

2000-2015, MetaQuotes Software Corp.

3643

Biblioteca Padro

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodFast

Perodo de clculo da EMA rpida.

PeriodSlow

Perodo de clculo da EMA lenta.

PeriodSignal

Perodo de suavizao.

Applied

As sries de preos utilizadas para o clculo do


oscilador.

2000-2015, MetaQuotes Software Corp.

3644

Biblioteca Padro

Os sinais do indicador Moving Average


Este mdulo de sinais baseia-se nos modelos de mercado do indicador Mdia Mvel. O mecanismo de
tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos descritos em
seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

O preo cruza a linha do indicador para baixo (o preo de abertura (Open) da barra
analisada est acima do indicador e o preo de fechamento (Close) est abaixo da
linha do indicador) e o indicador aumenta (sinal fraco).

Cruzamento Moving Average. O preo cruza a linha do indicador para cima (o


preo de abertura (Open) da barra analisada est abaixo do indicador e o preo de
fechamento (Close) est acima da linha do indicador) e o indicador aumenta (sinal
forte).

2000-2015, MetaQuotes Software Corp.

3645

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

A sombra inferior da barra cruzou a linha do indicador (os preos de abertura


(Open) e fechamento (Close) da barra analisada est acima do indicador, e a
mnima do preo (Low) est abaixo da linha do indicador) e o indicador aumenta
(sinal fraco).

Para
Vender

O preo cruza a linha do indicador para baixo (o preo de abertura (Open) da barra
analisada est abaixo do indicador e o preo de fechamento (Close) est acima da
linha do indicador) e o indicador diminui (sinal fraco).

Cruzamento Moving Average. O preo cruza a linha do indicador para baixo (o


preo de abertura (Open) da barra analisada est acima do indicador e o preo de
fechamento (Close) est abaixo da linha do indicador) e o indicador diminui (sinal
forte).

2000-2015, MetaQuotes Software Corp.

3646

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

A sombra superior da barra cruzou a linha do indicador (os preos de abertura


(Open) e fechamento (Close) da barra analisada est abaixo do indicador, e a
mxima do preo (High) est acima da linha do indicador) e o indicador diminui
(sinal fraco).

Sem
objees
para
comprar

Os preos esto acima do indicador.

Sem
objees
para
vender

O preo est abaixo do indicador.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra

2000-2015, MetaQuotes Software Corp.

3647

Biblioteca Padro
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodMA

Perodo de clculo da mdia do indicador.

Shift

Deslocamento do indicador ao longo do eixo do


tempo (em barras).

Method

Mtodo de mdia.

Applied

As sries de preos utilizadas para o clculo do


indicador.

2000-2015, MetaQuotes Software Corp.

3648

Biblioteca Padro

Os sinais do indicador Parabolic SAR


Este mdulo de sinais baseia-se nos modelos de mercado do indicador Parablico SAR. O mecanismo
de tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos descritos
em seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Descrio das Condies

Para
Comprar

Reverso O indicador est abaixo do preo na barra analisada e acima do preo na


anterior.

Para
Vender

Reverso O indicador est acima do preo na barra analisada e abaixo do preo na


anterior.

Sem
objees

Os preos esto acima do indicador.

2000-2015, MetaQuotes Software Corp.

3649

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

para
comprar
Sem
objees
para
vender

O preo est abaixo do indicador.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

Step

O aumento da velocidade do indicador.

Maximum

Taxa mxima da velocidade de convergncia do


indicador com o preo.

2000-2015, MetaQuotes Software Corp.

3650

Biblioteca Padro

Os sinais do oscilador Relative Strength Index


Este mdulo de sinais baseia-se nos modelos de mercado do oscilador Relative Strength Index. O
mecanismo de tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos
descritos em seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

Reverso atrs do nvel sobrevendido - O oscilador se volta para cima e seu valor
na barra analisada est atrs do nvel sobrevendido (valor padro 30).

Falha do Swing - o oscilador cresce mais alto do que o pico anterior na barra
analisada.

Divergncia - o valor da primeira parte da linha do indicador no fundo (a) menor


do que um ponto posterior (b) em relao ao valor correspondente da mnima

2000-2015, MetaQuotes Software Corp.

3651

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

(Low) do preo da barra (A) que maior do que o valor correspondente da mnima
(Low) do preo da barra (B).

Divergncia Dupla - a linha do oscilador forma trs consequentes fundos (a/b/c),


onde o valor de a < b < c; correspondendo a trs mnimas (Low) de preo das
barras formadas (A/B/C), onde o valor da mnima do preo A > B > C.

Cabea/Ombros O oscilador forma trs consequentes fundos, onde o central


um valor menor do que os outros.

2000-2015, MetaQuotes Software Corp.

3652

Biblioteca Padro

Tipo
Sinal

Para
Vender

de

Descrio das Condies

>Reverso atrs do nvel sobrevendido - O oscilador se volta para baixo e seu


valor na barra analisada est por trs do nvel de sobrecomprado (valor padro
70).

Falha do swing - o oscilador decresce mais baixo do que o fundo anterior na barra
analisada.

2000-2015, MetaQuotes Software Corp.

3653

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Divergncia - o valor da primeira parte da linha do indicador no topo (a) maior


do que um ponto posterior (b) em relao ao valor correspondente da mxima
(High) do preo da barra (A) que menor do que o valor correspondente da
mxima (High) do preo da barra (B).

Divergncia Dupla - a linha do oscilador forma trs consequentes topos (a/b/c),


onde o valor de a > b > c; correspondendo a trs mximas (High) de preo das
barras formadas (A/B/C), onde o valor da mxima do preo A < B < C.

2000-2015, MetaQuotes Software Corp.

3654

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Cabea/Ombros O oscilador forma trs consequentes topos, onde o central um


valor maior do que os outros.

Sem
objees
para
comprar

Valor do oscilador cresce na barra analisada.

Sem
objees
para
vender

Valor do oscilador decresce na barra analisada.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

2000-2015, MetaQuotes Software Corp.

3655

Biblioteca Padro

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodRSI

Perodo de clculo do oscilador.

Applied

As sries de preos utilizadas para o clculo do


oscilador.

2000-2015, MetaQuotes Software Corp.

3656

Biblioteca Padro

Os sinais do oscilador Relative Vigor Index


Este mdulo de sinais baseia-se nos modelos de mercado do oscilador Relativa ndice Vigor. O
mecanismo de tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos
descritos em seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Descrio das Condies

Para
Comprar

Cruzamento da linha principal e de sinal - A linha principal est acima da linha de


sinal em relao a barra analisada e abaixo da linha do sinal na anterior.

Para
Vender

Cruzamento da linha principal e de sinal - A linha principal est abaixo da linha de


sinal em relao a barra analisada e acima da linha do sinal na anterior.

Sem
objees

Valor do oscilador cresce na barra analisada.

2000-2015, MetaQuotes Software Corp.

3657

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

para
comprar
Sem
objees
para
vender

Valor do oscilador decresce na barra analisada.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodRVI

Perodo de clculo do oscilador.

2000-2015, MetaQuotes Software Corp.

3658

Biblioteca Padro

Os sinais do oscilador Stochastic


Este mdulo de sinais com base nos modelos de mercado do oscilador Stochastic. O mecanismo de
tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos descritos em
seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

Reverso - O oscilador se volta para cima (o oscilador cresce na barra analisada e


decresce na anterior).

Cruzamento da linha principal e de sinal - A linha principal est acima da linha


de sinal em relao a barra analisada e abaixo da linha do sinal na anterior.

Divergncia - o valor da primeira parte da linha do indicador no fundo (a) menor

2000-2015, MetaQuotes Software Corp.

3659

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

do que um ponto posterior (b) em relao ao valor correspondente da mnima


(Low) do preo da barra (A) que maior do que o valor correspondente da mnima
(Low) do preo da barra (B).

Divergncia Dupla - a linha do oscilador forma trs consequentes fundos (a/b/c),


onde o valor de a < b < c; correspondendo a trs mnimas (Low) de preo das
barras formadas (A/B/C), onde o valor da mnima do preo A > B > C.

Para
Vender

Reverso - O oscilador se volta para baixo (o oscilador decresce na barra analisada


e cresce na barra anterior).

2000-2015, MetaQuotes Software Corp.

3660

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Cruzamento da linha principal e de sinal - A linha principal est abaixo da linha


de sinal em relao a barra analisada e acima da linha do sinal na anterior.

Divergncia - o valor da primeira parte da linha do indicador no topo (a) maior


do que um ponto posterior (b) em relao ao valor correspondente da mxima
(High) do preo da barra (A) que menor do que o valor correspondente da
mxima (High) do preo da barra (B).

2000-2015, MetaQuotes Software Corp.

3661

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Divergncia Dupla - a linha do oscilador forma trs consequentes topos (a/b/c),


onde o valor de a > b > c; correspondendo a trs mximas (High) de preo das
barras formadas (A/B/C), onde o valor da mxima do preo A < B < C.

Sem
objees
para
comprar

Valor do oscilador cresce na barra analisada.

Sem
objees
para
vender

Valor do oscilador decresce na barra analisada.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

2000-2015, MetaQuotes Software Corp.

3662

Biblioteca Padro

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodK

Perodo de clculo da linha


oscilador.

principal do

PeriodD

Perodo de clculo da linha


oscilador.

principal do

PeriodSlow

Perodo de desacelerao.

Applied

As sries de preos utilizadas para o clculo do


oscilador.

2000-2015, MetaQuotes Software Corp.

3663

Biblioteca Padro

Os sinais do oscilador Triple Exponential Average


Este mdulo de sinais baseia-se nos modelos do mercado do oscilador Triple Exponential Average. O
mecanismo de tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos
descritos em seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

Reverso - O oscilador se volta para cima (o oscilador cresce na barra analisada e


decresce na anterior).

Cruzando o nvel de zero - A linha principal est acima do nivel zero no barra
analisada e abaixo do nvel zero na anterior.

Divergncia - o valor da primeira parte da linha do indicador no fundo (a) menor

2000-2015, MetaQuotes Software Corp.

3664

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

do que um ponto posterior (b) em relao ao valor correspondente da mnima


(Low) do preo da barra (A) que maior do que o valor correspondente da mnima
(Low) do preo da barra (B).

Para
Vender

Reverso - O oscilador se volta para baixo (o oscilador decresce na barra analisada


e cresce na barra anterior).

Cruzando o nvel de zero - A linha principal est abaixo do nvel zero na barra
analisada e acima do nvel zero no anterior.

2000-2015, MetaQuotes Software Corp.

3665

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

Divergncia - o valor da primeira parte da linha do indicador no topo (a) maior


do que um ponto posterior (b) em relao ao valor correspondente da mxima
(High) do preo da barra (A) que menor do que o valor correspondente da
mxima (High) do preo da barra (B).

Sem
objees
para
comprar

Valor do oscilador cresce na barra analisada.

Sem
objees
para
vender

Valor do oscilador decresce na barra analisada.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra

2000-2015, MetaQuotes Software Corp.

3666

Biblioteca Padro
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodTriX

Perodo de clculo do oscilador.

Applied

As sries de preos utilizadas para o clculo do


oscilador.

2000-2015, MetaQuotes Software Corp.

3667

Biblioteca Padro

Os sinais do indicador Triple Exponential Moving Average


Este mdulo de sinais baseia-se nos modelos de mercado do indicador Triplo Exponencial da Mdia
mvel. O mecanismo de tomada de decises das negociaes baseado em sinais obtidos a partir dos
mdulos descritos em seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

O preo cruza a linha do indicador para baixo (o preo de abertura (Open) da barra
analisada est acima do indicador e o preo de fechamento (Close) est abaixo da
linha do indicador) e o indicador aumenta (sinal fraco).

Cruzamento Moving Average. O preo cruza a linha do indicador para cima (o


preo de abertura (Open) da barra analisada est abaixo do indicador e o preo de
fechamento (Close) est acima da linha do indicador) e o indicador aumenta (sinal
forte).

2000-2015, MetaQuotes Software Corp.

3668

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

A sombra inferior da barra cruzou a linha do indicador (os preos de abertura


(Open) e fechamento (Close) da barra analisada est acima do indicador, e a
mnima do preo (Low) est abaixo da linha do indicador) e o indicador aumenta
(sinal fraco).

Para
Vender

O preo cruza a linha do indicador para baixo (o preo de abertura (Open) da barra
analisada est abaixo do indicador e o preo de fechamento (Close) est acima da
linha do indicador) e o indicador diminui (sinal fraco).

Cruzamento Moving Average. O preo cruza a linha do indicador para baixo (o


preo de abertura (Open) da barra analisada est acima do indicador e o preo de
fechamento (Close) est abaixo da linha do indicador) e o indicador diminui (sinal
forte).

2000-2015, MetaQuotes Software Corp.

3669

Biblioteca Padro

Tipo
Sinal

de

Descrio das Condies

A sombra superior da barra cruzou a linha do indicador (os preos de abertura


(Open) e fechamento (Close) da barra analisada est abaixo do indicador, e a
mxima do preo (High) est acima da linha do indicador) e o indicador diminui
(sinal fraco).

Sem
objees
para
comprar

Os preos esto acima do indicador.

Sem
objees
para
vender

O preo est abaixo do indicador.

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra

2000-2015, MetaQuotes Software Corp.

3670

Biblioteca Padro
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodMA

Perodo de clculo da mdia do indicador.

Shift

Deslocamento do indicador ao longo do eixo de


tempo (em barras).

Method

Mtodo de mdia.

Applied

As sries de preos utilizadas para o clculo do


indicador.

2000-2015, MetaQuotes Software Corp.

3671

Biblioteca Padro

Os sinais do oscilador Williams Percent Range


Este mdulo de sinais baseia-se nos modelos de mercado do oscilador Williams Percent Range. O
mecanismo de tomada de decises das negociaes baseado em sinais obtidos a partir dos mdulos
descritos em seo separada.

Condies da Gerao dos Sinais


Abaixo temos a descrio das condies do mdulo para o sinal a um Expert Advisor.
Tipo
Sinal

de

Para
Comprar

Descrio das Condies

Reverso atrs do nvel sobrevendido - O oscilador se volta cima e seu valor na


barra analisada est por atrs do nvel sobrevendido (valor padro de -20).

Divergncia - o valor da primeira parte da linha do indicador no fundo (a) menor


do que um ponto posterior (b) em relao ao valor correspondente da mnima
(Low) do preo da barra (A) que maior do que o valor correspondente da mnima
(Low) do preo da barra (B).

2000-2015, MetaQuotes Software Corp.

3672

Biblioteca Padro

Tipo
Sinal

de

Para
Vender

Descrio das Condies

Reverso atrs do nvel sobrecomprado - O oscilador se volta para baixo e seu


valor na barra analisada est atrs do nvel de sobrecomprado (valor padro 80).

Divergncia - o valor da primeira parte da linha do indicador no topo (a) maior


do que um ponto posterior (b) em relao ao valor correspondente da mxima
(High) do preo da barra (A) que menor do que o valor correspondente da
mxima (High) do preo da barra (B).

Sem
objees
para
comprar

Valor do oscilador cresce na barra analisada.

Sem
objees
para
vender

Valor do oscilador decresce na barra analisada.

2000-2015, MetaQuotes Software Corp.

3673

Biblioteca Padro

Observao
Dependendo do modo de operao de um Expert Advisor ("Every tick" ou "Open prices only"), a barra
analisada a barra atual (com ndice 0), ou a ltima barra formada (com ndice 1).
Lembre-se que o oscilador Williams Percent Range tem uma escala reversa. O seu valor mximo 100, o mnimo 0.

Parmetros Ajustveis
Este mdulo tem os seguintes parmetros ajustveis:
Parmetro

Descrio

Weight

Peso de sinal do mdulo no intervalo de 0 a 1.

PeriodWPR

Perodo de clculo do oscilador.

2000-2015, MetaQuotes Software Corp.

3674

Biblioteca Padro

Classe Trailing Stop


Esta seo contm detalhes tcnicos do trabalho com as classes de Trailing Stop (deslocamento do
nivel de parada para proteger o capital) e descrio dos componentes importantes da biblioteca padro
MQL5.
O uso destas classes vai economizar tempo ao criar (e testar) estratgias de negociao.
A Biblioteca Padro MQL5 (em termos de estratgias de negociao) alocada no diretrio do
terminal, na pasta Include\Expert\Trailing.
Classe

Descrio

CTrailingFixedPips

Essa classe implementa o algoritmo do Trailing


Stop com base em pontos fixos

CTrailingMA

Essa classe implementa o algoritmo do Trailing


Stop com base nos valores do indicador Moving
Average

CTrailingNone

Uma classe stub, no usa qualquer algoritmo de


Trailing Stop

CTrailingPSAR

Essa classe implementa o algoritmo do Trailing


Stop com base nos valores do indicador
Parabolic SAR

2000-2015, MetaQuotes Software Corp.

3675

Biblioteca Padro

CTrailingFixedPips
CTrailingFixedPips uma classe que implementao o algoritmo Trailing Stop baseado em pontos fixos
para mover a parada das perdas do capital.
Se a posio tem preo Stop Loss, ela verifica a distncia Stop Loss mnimo permitido para o preo
atual. Se o seu valor for inferior, esse nvel Stop Loss sugere definir novo preo Stop Loss. No caso se
a posio tem Take Profit, a classe sugere a definio de novo preo Take Profit.
Se o Expert Advisor tiver inicializado com a flag every_tick=false, ele ir realizar todas as operaes
(de negociao, mover paradas de perdas, etc) apenas na nova barra. Neste caso o nvel Take Profit
pode ser utilizado. Ele permitir o fechamento da posio aberta no preo Trailing Stop antes da nova
barra ser concluda.

Descrio
CTrailingFixedPips implementa o algoritmo Trailing Stop baseado em pontos fixos para mover a
parada da perdas de capital.

Declarao
class CTrailingFixedPips: public CExpertTrailing

Ttulo
#include <Expert\Trailing\CTrailingFixedPips.mqh>

Mtodos de classe
Inicializao
StopLevel

Define o valor do nvel de Stop Loss

ProfitLevel

Define o valor do nvel de Take Profit

virtual ValidationSettings

Verifica as configuraes

Verifica Mtodos de Trailing


virtual CheckTrailingStopLong

Verifica as condies de Trailing Stop da


posio comprada

virtual CheckTrailingStopShort

Verifica as condies de Trailing Stop da


posio vendida

2000-2015, MetaQuotes Software Corp.

3676

Biblioteca Padro

StopLevel
Define o nvel de valor Stop Loss (em pontos).
void StopLevel(
int stop_level

// Stop Loss level

Parmetros
stop_loss
[in] O valor do nvel Stop Loss (em pontos convencionais 2/4-dgitos).
Observao
Se o nvel Stop Loss igual a 0, o Trailing Stop no usado.

2000-2015, MetaQuotes Software Corp.

3677

Biblioteca Padro

ProfitLevel
Define o valor do nvel Take Profit (em pontos).
void ProfitLevel(
int profit_level

// Take profit level

Parmetros
profit_level
[in] O valor do nvel Take Profit (em pontos convencionais 2/4-dgitos).
Observao
Se o nvel de lucro igual a 0, o trailing stop no usado.

2000-2015, MetaQuotes Software Corp.

3678

Biblioteca Padro

ValidationSettings
Verifica as configuraes.
virtual bool ValidationSettings()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
A funo verifica os nveis de Take Profit e Stop Loss. Os valores corretos so 0 e valores maiores
do que o stop mnimo para ordens stop ao smbolo (ativo).

2000-2015, MetaQuotes Software Corp.

3679

Biblioteca Padro

CheckTrailingStopLong
Verifica condies do Trailing Stop da posio comprada.
virtual bool CheckTrailingStopLong(
CPositionInfo* position,

// CPositionInfo object pointer

double&

sl,

// Stop Loss price

double&

tp

// Take Profit price

Parmetros
position
[in] Ponteiro do objeto CPositionInfo.
sl
[in][out] Varivel de preo para Stop Loss.
tp
[in][out] Varivel do preo Take Profit.
Valor de retorno
verdadeiro se as condies so satisfeitas, o contrrio falso.
Observao
Se o nvel Stop Loss igual a 0, o Trailing Stop no usado. Se a posio j tem preo Stop Loss, o
seu valor assumido como um preo base, caso contrrio o preo de abertura da posio
assumido como um preo base.
Se o preo Bid atual superior ao preo do nvel preo base+stop loss, sugere-se definir novo preo
Stop Loss. Neste caso, se a posio j tem nvel Take Profit, sugere-se definir novo preo Take
Profit igual a preo Bid+nvel take profit.

2000-2015, MetaQuotes Software Corp.

3680

Biblioteca Padro

CheckTrailingStopShort
Verifica Trailing condies de parada de posio vendida.
virtual bool CheckTrailingStopShort(
CPositionInfo* position,

// CPositionInfo object pointer

double&

sl,

// Stop Loss price

double&

tp

// Take Profit price

Parmetros
position
[in] Ponteiro do objeto CPositionInfo.
sl
[in][out] Varivel de preo para Stop Loss.
tp
[in][out] Varivel do preo Take Profit.
Valor de retorno
verdadeiro se as condies so satisfeitas, o contrrio falso.
Observao
Se o nvel Stop Loss igual a 0, o Trailing Stop no usado. Se a posio j tem preo Stop Loss, o
seu valor assumido como um preo base, caso contrrio o preo de abertura da posio
assumido como um preo base.
Se o preo Ask atual menor do que o nvel do preo base-stop loss, sugere-se definir novo preo
Stop Loss. Neste caso, se a posio j tem preo Take Profit, sugere-se definir novo preo Take
Profit igual a preo Ask-nvel take profit.

2000-2015, MetaQuotes Software Corp.

3681

Biblioteca Padro

CTrailingMA
CTrailingMA uma classe que implementa um algoritmo trailing stop, com base nos valores do
indicador da mdia mvel.

Descrio
CTrailingMA classe implementa um algoritmo trailing stop, com base nos valores do indicador da
mdia mvel da barra anterior (barra completa).

Declarao
class CTrailingMA: public CExpertTrailing

Ttulo
#include <Expert\Trailing\TrailingMA.mqh>

Mtodos de classe
Inicializao
Period

Define perodo da mdia mvel

Shift

Define o deslocamento da mdia mvel

Method

Define mtodo de suavizao da mdia mvel

Applied

Define o preo para aplicar na mdia mvel

virtual InitIndicators

Inicializa indicadores e sries temporais

virtual ValidationSettings

Verifica as configuraes

Verifica Mtodos de Trailing


virtual CheckTrailingStopLong

Verifica as condies de Trailing Stop da


posio comprada

virtual CheckTrailingStopShort

Verifica as condies de Trailing Stop da


posio vendida

2000-2015, MetaQuotes Software Corp.

3682

Biblioteca Padro

Period
Define perodo da mdia mvel.
void Period(
int period

// Smoothing period

Parmetros
period
[in] Perodo da mdia mvel.

2000-2015, MetaQuotes Software Corp.

3683

Biblioteca Padro

Shift
Define o deslocamento da mdia mvel.
void Shift(
int shift

// Shift

Parmetros
shift
[in] Deslocamento da mdia mvel.

2000-2015, MetaQuotes Software Corp.

3684

Biblioteca Padro

Method
Define o mtodo de suavizao da mdia mvel.
void Method(
ENUM_MA_METHOD method

// Smoothing method

Parmetros
method
[in] Mtodo de suavizao do indicador mdia mvel.

2000-2015, MetaQuotes Software Corp.

3685

Biblioteca Padro

Applied
Define preo para aplicar da mdia mvel.
void Applied(
ENUM_APPLIED_PRICE applied

// Applied price

Parmetros
applied
[in] Preo para aplicar da mdia mvel.

2000-2015, MetaQuotes Software Corp.

3686

Biblioteca Padro

InitIndicators
Inicializa indicadores e sries temporais.
virtual bool InitIndicators(
CIndicators* indicators

// CIndicators collection pointer

Parmetros
indicators
[in] Ponteiro para os indicadores e coleo de sries temporais (membro da classe CExpert).
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3687

Biblioteca Padro

ValidationSettings
Verifica as configuraes.
virtual bool ValidationSettings()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
A funo verifica o perodo da mdia mvel, os valores corretos so positivos.

2000-2015, MetaQuotes Software Corp.

3688

Biblioteca Padro

CheckTrailingStopLong
Verifica condies do Trailing Stop da posio comprada.
virtual bool CheckTrailingStopLong(
CPositionInfo* position,

// CPositionInfo object pointer

double&

sl,

// Stop Loss price

double&

tp

// Take Profit price

Parmetros
position
[in] Ponteiro do objeto CPositionInfo.
sl
[in][out] Varivel de preo para Stop Loss.
tp
[in][out] Varivel do preo Take Profit.
Valor de retorno
verdadeiro se as condies so satisfeitas, o contrrio falso.
Observao
Primeiro se calcula a mxima permitida do preo Stop Loss, mais prximo do preo atual e calcula o
preo Stop Loss usando os valores do indicador mdia mvel da barra anterior (barra completa).
Se a posio j tem preo Stop Loss, o seu valor assumido como um preo base, caso contrrio o
preo base o preo de abertura da posio.
Se o preo do Stop Loss calculado for maior do que o preo base e menor do que o mximo
permitido do preo Stop Loss Stop Loss, sugere-se definir novo preo Stop Loss.

2000-2015, MetaQuotes Software Corp.

3689

Biblioteca Padro

CheckTrailingStopShort
Verifica Trailing condies de parada de posio vendida.
virtual bool CheckTrailingStopShort(
CPositionInfo* position,

// CPositionInfo object pointer

double&

sl,

// Stop Loss price

double&

tp

// Take Profit price

Parmetros
position
[in] Ponteiro do objeto CPositionInfo.
sl
[in][out] Varivel de preo para Stop Loss.
tp
[in][out] Varivel do preo Take Profit.
Valor de retorno
verdadeiro se as condies so satisfeitas, o contrrio falso.
Observao
Primeiro se calcula a mnima permitida do preo Stop Loss, mais prximo do preo atual e calcula o
preo Stop Loss usando os valores do indicador mdia mvel da barra anterior (barra completa).
Se a posio j tem preo Stop Loss, o seu valor assumido como um preo base, caso contrrio o
preo base o preo de abertura da posio.
Se o preo do Stop Loss calculado for maior do que o preo base e menor do que o mnimo permitido
do preo Stop Loss, sugere-se definir novo preo Stop Loss.

2000-2015, MetaQuotes Software Corp.

3690

Biblioteca Padro

CTrailingNone
CTrailingNone uma classe que se deve ter cuidado. Essa classe deve ser usada na inicializao do
objeto Trailing se sua estratgia no usa Trailing Stop.

Descrio
A classe CTrailingNone no implementa qualquer algoritmo de Trailing Stop. Os mtodos de
verificao das condies de Trailing Stop sempre retornam falso.

Declarao
class CTrailingNone: public CExpertTrailing

Ttulo
#include <Expert\Trailing\TrailingNone.mqh>

Mtodos de classe
Verifica Mtodos de Trailing
virtual CheckTrailingStopLong

Um mtodo tipo mordaa para verificar as


condies do Trailing Stop da posio comprada

virtual CheckTrailingStopShort

Um mtodo tipo mordaa para verificar as


condies do Trailing Stop da posio vendida

2000-2015, MetaQuotes Software Corp.

3691

Biblioteca Padro

CheckTrailingStopLong
Verifica condies do Trailing Stop da posio comprada.
virtual bool CheckTrailingStopLong(
CPositionInfo* position,

// CPositionInfo object pointer

double&

sl,

// Stop Loss price

double&

tp

// Take Profit price

Parmetros
position
[in] Ponteiro do objeto CPositionInfo.
sl
[in][out] Varivel de preo para Stop Loss.
tp
[in][out] Varivel do preo Take Profit.
Valor de retorno
verdadeiro se as condies so satisfeitas, o contrrio falso.
Observao
A funo sempre retorna falsa.

2000-2015, MetaQuotes Software Corp.

3692

Biblioteca Padro

CheckTrailingStopShort
Verifica Trailing condies de parada de posio vendida.
virtual bool CheckTrailingStopShort(
CPositionInfo* position,

// CPositionInfo object pointer

double&

sl,

// Stop Loss price

double&

tp

// Take Profit price

Parmetros
position
[in] Ponteiro do objeto CPositionInfo.
sl
[in][out] Varivel de preo para Stop Loss.
tp
[in][out] Varivel do preo Take Profit.
Valor de retorno
verdadeiro se as condies so satisfeitas, o contrrio falso.
Observao
A funo sempre retorna falsa.

2000-2015, MetaQuotes Software Corp.

3693

Biblioteca Padro

CTrailingPSAR
CTrailingPSAR uma classe que implementa de algoritmo Trailing Stop baseado nos valores do
indicador Parabolic SAR.

Descrio
CTrailingPSAR classe implementa de algoritmo Trailing Stop baseado nos valores do indicador
Parabolic SAR da barra anterior (barra completa).

Declarao
class CTrailingPSAR: public CExpertTrailing

Ttulo
#include <Expert\Trailing\TrailingParabolicSAR.mqh>

Mtodos de classe
Inicializao
Step

Define o valor "step" do indicador Parabolic SAR

Maximum

Define o valor
Parabolic SAR

virtual InitIndicators

Inicializa indicadores e sries temporais

"maximum"

do

indicador

Verifica Mtodos de Trailing


virtual CheckTrailingStopLong

Verifica as condies de Trailing Stop da


posio comprada

virtual CheckTrailingStopShort

Verifica as condies de Trailing Stop da


posio vendida

2000-2015, MetaQuotes Software Corp.

3694

Biblioteca Padro

Step
Define o valor "Step" do indicador Parabolic SAR.
void Step(
double step

// Step

Parmetros
step
[in] O valor "Step" do indicador Parabolic SAR.

2000-2015, MetaQuotes Software Corp.

3695

Biblioteca Padro

Maximum
Define o valor "Maximum" do indicador Parabolic SAR.
void Maximum(
double maximum

// Maximum

Parmetros
maximum
[in] O valor "Maximum" do indicador Parabolic SAR.

2000-2015, MetaQuotes Software Corp.

3696

Biblioteca Padro

InitIndicators
Inicializa indicadores e sries temporais.
virtual bool InitIndicators(
CIndicators* indicators

// CIndicators collection pointer

Parmetros
indicators
[in] Ponteiro para os indicadores e coleo de sries temporais (membro da classe CExpert).
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3697

Biblioteca Padro

CheckTrailingStopLong
Verifica condies do Trailing Stop da posio comprada.
virtual bool CheckTrailingStopLong(
CPositionInfo* position,

// Pointer

double&

sl,

// Link

double&

tp

// Link

Parmetros
position
[in] Ponteiro do objeto CPositionInfo.
sl
[in][out] Varivel de preo para Stop Loss.
tp
[in][out] Varivel do preo Take Profit.
Valor de retorno
verdadeiro se as condies so satisfeitas, o contrrio falso.
Observao
Primeiro se calcula a mxima permitida do preo Stop Loss, mais prximo do preo atual e calcula o
preo Stop Loss usando os valores do indicador mdia mvel da barra anterior (barra completa).
Se a posio j tem preo Stop Loss, o seu valor assumido como um preo base, caso contrrio o
preo de abertura da posio assumido como um preo base.
Se o preo do Stop Loss calculado for maior do que o preo base e menor do que o mximo
permitido do preo Stop Loss Stop Loss, sugere-se definir novo preo Stop Loss.

2000-2015, MetaQuotes Software Corp.

3698

Biblioteca Padro

CheckTrailingStopShort
Verifica Trailing condies de parada de posio vendida.
virtual bool CheckTrailingStopShort(
CPositionInfo* position,

// Pointer

double&

sl,

// Link

double&

tp

// Link

Parmetros
position
[in] Ponteiro do objeto CPositionInfo.
sl
[in][out] Varivel de preo para Stop Loss.
tp
[in][out] Varivel do preo Take Profit.
Valor de retorno
verdadeiro se as condies so satisfeitas, o contrrio falso.
Observao
Primeiro se calcula a mnima permitida do preo Stop Loss, mais prximo do preo atual e calcula o
preo Stop Loss usando os valores do indicador mdia mvel da barra anterior (barra completa).
Se a posio j tem preo Stop Loss, o seu valor assumido como um preo base, caso contrrio o
preo de abertura da posio assumido como um preo base.
Se o preo do Stop Loss calculado for maior do que o preo base e menor do que o mnimo permitido
do preo Stop Loss, sugere-se definir novo preo Stop Loss.

2000-2015, MetaQuotes Software Corp.

3699

Biblioteca Padro

Classes de Gerenciamento de Dinheiro


Esta seo contm detalhes tcnicos para trabalhar com classes de dinheiro, gerenciamento de risco e
descrio dos componentes importantes da biblioteca padro MQL5.
O uso destas classes vai economizar tempo ao criar (e testar) estratgias de negociao.
A Biblioteca Padro MQL5 (em termos de classes de dinheiro e de gesto de riscos) alocada no
diretrio do terminal, na pasta Include\Expert\Money\.
Classe

Descrio

CMoneyFixedLot

Esta classe implementa o algoritmo de


gerenciamento de dinheiro, baseado em
negociao com tamanho predefinido de lote
fixo.

CMoneyFixedMargin

Esta classe implementa o algoritmo de


gerenciamento de dinheiro, baseado em
negociao com margem fixa predefinida.

CMoneyFixedRisk

Esta classe implementa o algoritmo de


gerenciamento de dinheiro, baseado em
negociao com risco predefinido.

CMoneyNone

Esta classe implementa o algoritmo de


gerenciamento de dinheiro, baseado em
negociao com o tamanho do lote mnimo
permitido.

CMoneySizeOptimized

Esta classe implementa o algoritmo de


gerenciamento de dinheiro, baseado em
negociao com o tamanho do lote varivel,
dependendo dos resultados das ofertas
anteriores.

2000-2015, MetaQuotes Software Corp.

3700

Biblioteca Padro

CMoneyFixedLot
CMoneyFixedLot a classe do algoritmo de gerenciamento de dinheiro, baseado em negociao com
tamanho predefinido do lote fixo.

Descrio
CMoneyFixedLot implementa o algoritmo de gerenciamento de dinheiro, com base em negociao com
tamanho predefinido do lote fixo.

Declarao
class CMoneyFixedLot: public CExpertMoney

Ttulo
#include <Expert\Money\MoneyFixedLot.mqh>

Mtodos de classe
Inicializao
Lots

Define o volume de negociao

virtual ValidationSettings

Verifica as configuraes

Mtodos de Dinheiro e Gerenciamento de


Riscos
virtual CheckOpenLong

Obtm o volume de negociao para posio


comprada

virtual CheckOpenShort

Obtm o volume de negociao para posio


vendida

2000-2015, MetaQuotes Software Corp.

3701

Biblioteca Padro

Lots
Define o volume de negcios (em lotes).
void Lots(
double lots

// Lots

Parmetros
lots
[in] O volume de negcios (em lotes).

2000-2015, MetaQuotes Software Corp.

3702

Biblioteca Padro

ValidationSettings
Verifica as configuraes.
virtual bool ValidationSettings()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
Verifica o volume de negociao especfico para correo.

2000-2015, MetaQuotes Software Corp.

3703

Biblioteca Padro

CheckOpenLong
Obtm o volume de negociao para posio comprada.
virtual double CheckOpenLong(
double price,

// Price

double sl

// Stop Loss price

Parmetros
price
[in] Preo.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
O volume de negociao para posio comprada.
Observao
A funo sempre retorna o volume fixo de negociao, definido pelo mtodo Lots.

2000-2015, MetaQuotes Software Corp.

3704

Biblioteca Padro

CheckOpenShort
Obtm o volume de negociao para a posio vendida.
virtual double CheckOpenShort(
double price,

// Price

double sl

// Stop Loss price

Parmetros
price
[in] Preo.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
O volume de negociao para a posio vendida.
Observao
A funo sempre retorna o volume fixo de negociao, definido pelo mtodo Lots.

2000-2015, MetaQuotes Software Corp.

3705

Biblioteca Padro

CMoneyFixedMargin
CMoneyFixedMargin o algoritmo da classe de gesto do dinheiro, com base em negociao com
margem fixa predefinida.

Descrio
CMoneyFixedMargin implementa o algoritmo do gerenciamento de dinheiro, com base em negociao
com margem fixa predefinida.

Declarao
class CMoneyFixedMargin: public CExpertMoney

Ttulo
#include <Expert\Money\MoneyFixedMargin.mqh>

Mtodos de classe
Mtodos de Dinheiro e Gerenciamento de
Riscos
virtual CheckOpenLong

Obtm o volume de negociao para posio


comprada

virtual CheckOpenShort

Obtm o volume de negociao para posio


vendida

2000-2015, MetaQuotes Software Corp.

3706

Biblioteca Padro

CheckOpenLong
Obtm o volume de negociao para posio comprada.
virtual double CheckOpenLong(
double price,

// Price

double sl

// Stop Loss price

Parmetros
price
[in] Preo.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
O volume de negociao para posio comprada.
Observao
A funo retorna o volume de negociao da posio comprada, usa a margem fixa. A margem
definida pelo parmetro "Percent" da classe base CExpertMoney.

2000-2015, MetaQuotes Software Corp.

3707

Biblioteca Padro

CheckOpenShort
Obtm o volume de negociao para posio vendida.
virtual double CheckOpenShort(
double price,

// Price

double sl

// Stop Loss price

Parmetros
price
[in] Preo.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
O volume de negociao para a posio vendida.
Observao
A funo retorna o volume de negociao para a posio vendida, usa a margem fixa. A margem
definida pelo parmetro "Percent" da classe base CExpertMoney.

2000-2015, MetaQuotes Software Corp.

3708

Biblioteca Padro

CMoneyFixedRisk
CMoneyFixedRisk uma classe com a implementao do algoritmo de gerenciamento de dinheiro com
risco fixo predefinido.

Descrio
A classe CMoneyFixedRisk implementa o algoritmo de gerenciamento de dinheiro com risco fixo
predefinido.

Declarao
class CMoneyFixedRisk: public CExpertMoney

Ttulo
#include <Expert\Money\MoneyFixedRisk.mqh>

Mtodos de classe
Mtodos de Dinheiro e Gerenciamento de
Riscos
virtual CheckOpenLong

Obtm o volume de negociao para posio


comprada

virtual CheckOpenShort

Obtm o volume de negociao para posio


vendida

2000-2015, MetaQuotes Software Corp.

3709

Biblioteca Padro

CheckOpenLong
Obtm o volume de negociao para posio comprada.
virtual double CheckOpenLong(
double price,

// Price

double sl

// Stop Loss price

Parmetros
price
[in] Preo.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
O volume de negociao para posio comprada.
Observao
A funo do volume de negociao retorna para a posio comprada, usa o risco fixo. O risco
definido pelo parmetro "Percent" da classe base CExpertMoney.

2000-2015, MetaQuotes Software Corp.

3710

Biblioteca Padro

CheckOpenShort
Obtm o volume de negociao para posio vendida.
virtual double CheckOpenShort(
double price,

// Price

double sl

// Stop Loss price

Parmetros
price
[in] Preo.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
O volume de negociao para a posio vendida.
Observao
A funo retorna o volume de negociao para posio vendida, usa o risco fixo. O risco definido
pelo parmetro "Percent" da classe base CExpertMoney.

2000-2015, MetaQuotes Software Corp.

3711

Biblioteca Padro

CMoneyNone
CMoneyNone uma classe que implementa um algoritmo de negociao com o lote mnimo permitido.

Descrio
A classe CMoneyNone implementa a negociao com o lote mnimo permitido.

Declarao
class CMoneyNone: public CExpertMoney

Ttulo
#include <Expert\Money\MoneyNone.mqh>

Mtodos de classe
Inicializao
virtual ValidationSettings

Verifica as configuraes

Mtodos de Dinheiro e Gerenciamento de


Riscos
virtual CheckOpenLong

Obtm o volume de negociao para posio


comprada

virtual CheckOpenShort

Obtm o volume de negociao para posio


vendida

2000-2015, MetaQuotes Software Corp.

3712

Biblioteca Padro

ValidationSettings
Verifica as configuraes.
virtual bool ValidationSettings()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
A funo sempre retorna verdadeira.

2000-2015, MetaQuotes Software Corp.

3713

Biblioteca Padro

CheckOpenLong
Obtm o volume de negociao para posio comprada.
virtual double CheckOpenLong(
double price,

// Price

double sl

// Stop Loss price

Parmetros
price
[in] Preo.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
O volume de negociao para posio comprada.
Observao
A funo sempre retorna o tamanho do lote mnimo.

2000-2015, MetaQuotes Software Corp.

3714

Biblioteca Padro

CheckOpenShort
Obtm o volume de negociao para posio comprada.
virtual double CheckOpenShort(
double price,

// Price

double sl

// Stop Loss price

Parmetros
price
[in] Preo.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
O volume de negociao para a posio vendida.
Observao
A funo sempre retorna o tamanho do lote mnimo.

2000-2015, MetaQuotes Software Corp.

3715

Biblioteca Padro

CMoneySizeOptimized
CMoneySizeOptimized uma classe com a implementao do algoritmo de gerenciamento de dinheiro,
baseado em negociao com tamanho de lote varivel, em funo dos resultados das ofertas
anteriores.

Descrio
CMoneySizeOptimized implementa o algoritmo de gerenciamento de dinheiro, baseado em negociao
com tamanho de lote varivel, em funo dos resultados das ofertas anteriores

Declarao
class CMoneySizeOptimized: public CExpertMoney

Ttulo
#include <Expert\Money\MoneySizeOptimized.mqh>

Mtodos de classe
Inicializao
DecreaseFactor

Define o valor do fator de decrscimo

virtual ValidationSettings

Verifica as configuraes

Mtodos de Dinheiro e Gerenciamento de


Riscos
virtual CheckOpenLong

Obtm o volume de negociao para posio


comprada

virtual CheckOpenShort

Obtm o volume de negociao para posio


vendida

2000-2015, MetaQuotes Software Corp.

3716

Biblioteca Padro

DecreaseFactor
Define o valor do fator de decrscimo.
void DecreaseFactor(
double decrease_factor

// Decrease factor

Parmetros
decrease_factor
[in] Fator de decrscimo.
Observao
O DecreaseFactor define o coeficiente do volume decrescente (em comparao com o volume da
posio anterior) para o caso de operaes com perdas consecutivas.

2000-2015, MetaQuotes Software Corp.

3717

Biblioteca Padro

ValidationSettings
Verifica as configuraes.
virtual bool ValidationSettings()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
Se o valor do fator de decrscimo negativo, ele retorna falso. Caso contrrio ele retorna
verdadeiro.

2000-2015, MetaQuotes Software Corp.

3718

Biblioteca Padro

CheckOpenLong
Obtm o volume de negociao para posio comprada.
virtual double CheckOpenLong(
double price,

// Price

double sl

// Stop Loss price

Parmetros
price
[in] Preo.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
O volume de negociao para posio comprada.
Observao
A funo retorna o volume da negociao por uma posio comprada, o volume dependente dos
resultados das ofertas anteriores.

2000-2015, MetaQuotes Software Corp.

3719

Biblioteca Padro

CheckOpenShort
Obtm o volume de negociao para a posio vendida.
virtual double CheckOpenShort(
double price,

// Price

double sl

// Stop Loss price

Parmetros
price
[in] Preo.
sl
[in] preo para finalizar a perda do capital (Stop Loss).
Valor de retorno
O volume de negociao para posio comprada.
Observao
A funo retorna o volume da negociao por uma posio vendida, o volume dependente dos
resultados das ofertas anteriores.

2000-2015, MetaQuotes Software Corp.

3720

Biblioteca Padro

Classes para Criao Painis de Controle e Dilogos


Esta seo contm detalhes tcnicos de como trabalhar com classes para criao de painis de
controles e descrio dos componentes relevantes da biblioteca padro MQL5.
O uso destas classes vai economizar tempo ao criar os painis de controle para programas MQL5
(Expert Advisors e indicadores).
A Biblioteca Padro MQL5 (em termos de controles) colocada na pasta de dados do terminal do
cliente, no caminho MQL5\Include\Controls.
O exemplo de Expert Advisor, que ilustra o funcionamento dessas classes podem ser encontrado em
MQL5\Expert\Examples\Controls.
Estruturas auxiliares

Descrio

CRect

Estrutura da rea retangular

CDateTime

Estrutura para trabalhar com data e tempo

Classes Base

Descrio

CWnd

Classe base para todos os controles

CWndObj

Classe base para controles e caixas de dilogo

CWndContainer

Classe base para controles complexos (contendo


controles dependentes)

Controles simples

Descrio

CLabel

Controle, com base no objeto grfico "Text


label"

CBmpButton

Controle, com base no objeto grfico "label


Bitmap"

CButton

Controle, com base no objeto grfico "Button"

CEdit

Controle, com base no objeto grfico "Edit


field"

CPanel

Controle, com
"Rectangle label"

CPicture

Controle, com base no objeto grfico "Bitmap


label"

Controles complexos

Descrio

CScroll

Classe base da barra de rolagem

CScrollV

Barra de rolagem vertical

2000-2015, MetaQuotes Software Corp.

base

no

objeto

grfico

3721

Biblioteca Padro

CScrollH

Barra de rolagem horizontal

CWndClient

Classe base da rea do cliente com barras de


rolagem

CListView

Visualizar lista

CComboBox

Caixa de controle combinado

CCheckBox

Verificar caixa

CCheckGroup

Verificar grupo

CRadioButton

Boto de Radio

CRadioGroup

Grupo de Rdio

CSpinEdit

Editor de rotao

CDialog

Dilogo

CAppDialog

Dilogo de aplicativo

2000-2015, MetaQuotes Software Corp.

3722

Biblioteca Padro

CRect
CRect uma classe da rea retangular do grfico.

Descrio
CRect uma classe de rea, definida por coordenadas dos cantos superior esquerdo e inferior direito
de um retngulo em coordenadas Cartesianas.

Declarao
class CRect

Ttulo
#include <Controls\Rect.mqh>

Mtodos de classe
Propriedades
Left

Obtm/define a coordenada X do canto superior


esquerdo

Top

Obtm/define a coordenada Y do canto superior


esquerdo

Right

Obtm/define a coordenada X do canto inferior


direito

Bottom

Obtm/define a coordenada Y do canto inferior


direito

Width

Obtm/Define a largura

Height

Obtm/Define a altura

SetBound

Define novas coordenadas do uso da classe


CRect

Move

Define novas coordenadas da classe CRect

Shift

Executa
o
deslocamento
coordenadas CRect

Contains

Verifica se o ponto est dentro da rea da


classe CRect

relativo

Mtodos adicionais
Format

Obtm a rea coordenada como string

2000-2015, MetaQuotes Software Corp.

das

3723

Biblioteca Padro

Left (Mtodo Get)


Obtm a coordenada X do canto superior esquerdo.
int Left()

Valor de retorno
A coordenada X do canto superior esquerdo.

Left (Mtodo Set)


Define a coordenada X do canto superior esquerdo.
void Left(
const int x

// new x coordinate

Parmetros
x
[in] Nova coordenada X do canto superior esquerdo.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3724

Biblioteca Padro

Top (Mtodo Get)


Obtm a coordenada Y do canto superior esquerdo.
int Top()

Valor de retorno
Coordenada Y do canto superior esquerdo.

Top (Mtodo Set)


Define a coordenada Y do canto superior esquerdo.
void Top(
const int y

// y coordinate

Parmetros
y
[in] Nova coordenada Y do canto superior esquerdo.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3725

Biblioteca Padro

Right (Mtodo Get)


Obtm a coordenada X do canto inferior direito.
int Right()

Valor de retorno
Coordenada X do canto inferior direito.

Right (Mtodo Set)


Define a coordenada Y do canto inferior direito.
void Right(
const int x

// x coordinate

Parmetros
x
[in] Nova coordenada X do canto inferior direito.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3726

Biblioteca Padro

Bottom (Mtodo Get)


Obtm a coordenada Y do canto inferior direito.
int Bottom()

Valor de retorno
Coordenada Y do canto inferior direito.

Bottom (Mtodo Set)


Define a coordenada Y do canto inferior direito.
void Bottom(
const int y

// y coordinate

Parmetros
y
[in] Nova coordenada Y do canto inferior direito.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3727

Biblioteca Padro

Width (Mtodo Get)


Obtm a largura da rea.
int Width()

Valor de retorno
Largura da rea.

Width (Mtodo Set)


Define nova largura da rea.
virtual bool Width(
const int w

// width

Parmetros
w
[in] Nova largura.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3728

Biblioteca Padro

Height (Mtodo Get)


Obtm a altura da rea.
int Height()

Valor de retorno
Altura da rea.

Height (Mtodo Set)


Define nova altura da rea.
virtual bool Height(
const int h

// height

Parmetros
h
[in] Nova altura.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3729

Biblioteca Padro

SetBound
Define novas coordenadas da rea, utilizando as coordenadas da classe CRect.
void SetBound(
const & CRect rect

// CRect class

Valor de retorno
Nenhum.

SetBound
Define novas coordenadas da rea.
void SetBound(
const int l

// left

const int t

// topt

const int r

// right

const int b

// bottom

Parmetros
l
[in] Coordenada X do canto superior esquerdo.
t
[in] Coordenada Y do canto superior esquerdo.
r
[in] Coordenada X do canto inferior direito.
b
[in] Coordenada Y do canto inferior direito.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3730

Biblioteca Padro

Move
Define novas coordenadas da classe CRect.
void Move(
const int x,

// X coordinate

const int y

// Y coordinate

Parmetros
x
[in] Nova coordenada X.
y
[in] Nova coordenada Y.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3731

Biblioteca Padro

Shift
Executa o deslocamento relativo das coordenadas da classe CRect.
void Shift(
const int dx,

// delta X

const int dy

// delta Y

Parmetros
dx
[in] Delta X.
dy
[in] Delta Y.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3732

Biblioteca Padro

Contains
Verifica se o ponto est dentro da rea da classe CRect.
bool Contains(
const int x,

// X coordinate

const int y

// Y coordinate

Parmetros
x
[in] Coordenada X.
y
[in] Coordenada Y.
Valor de retorno
verdadeiro, se o ponto est dentro da rea (incluindo as bordas), caso contrrio - falso.

2000-2015, MetaQuotes Software Corp.

3733

Biblioteca Padro

Format
Obtm as coordenadas de rea como string.
string Format(
string & fmt,

// format

) const

Parmetros
fmt
[in] String com formato.
Valor de retorno
String com as coordenadas de rea.

2000-2015, MetaQuotes Software Corp.

3734

Biblioteca Padro

CDateTime
CDateTime uma estrutura para trabalhar com data e tempo.

Descrio
CDateTime uma estrutura derivada do MqlDateTime, usado para operao com controles de data e
tempo.

Declarao
struct CDateTime

Ttulo
#include <Tools\DateTime.mqh>

Mtodos de classe
Propriedades
MonthName

Obtm nome do ms

ShortMonthName

Obtm nome abreviado do ms

DayName

Obtm o nome do dia da semana

ShortDayName

Obtm nome abreviado do dia da semana

DaysInMonth

Obtm o nmero de dias no ms

Obtm/Define mtodos
DateTime

Obtm/Define a data e o tempo

Date

Define data

Time

Define tempo

Sec

Define segundos

Min

Define minutos

Hour

Define hora

Day

Define dia do ms

Mon

Define ms

Year

Define ano

Mtodos adicionais
SecDec

Subtrai nmero determinado de segundos

SecInc

Adiciona o nmero determinado de segundos

MinDec

Subtrai nmero determinado de minutos

2000-2015, MetaQuotes Software Corp.

3735

Biblioteca Padro

MinInc

Adiciona o nmero determinado de minutos

HourDec

Subtrai determinado nmero de horas

HourInc

Adiciona determinado nmero de horas

DayDec

Subtrai determinado nmero de dias

DayInc

Adiciona determinado nmero de dias

MonDec

Subtrai determinado nmero de meses

MonInc

Adiciona determinado nmero de meses

YearDec

Subtrai determinado nmero de anos

YearInc

Adiciona determinado nmero de anos

2000-2015, MetaQuotes Software Corp.

3736

Biblioteca Padro

MonthName
Obtm nome do ms.
string MonthName() const

Obtm nome do ms pelo ndice.


string MonthName(
const int

num

// month index

) const

Parmetros
num
[in] ndice do ms (1-12).
Valor de retorno
Nome do ms.

2000-2015, MetaQuotes Software Corp.

3737

Biblioteca Padro

ShortMonthName
Obtm nome abreviado do ms
string ShortMonthName() const

Obtm nome abreviado do ms pelo ndice.


string ShortMonthName(
const int

num

// month index

) const

Parmetros
num
[in] ndice do ms (1-12).
Valor de retorno
Nome abreviado do ms.

2000-2015, MetaQuotes Software Corp.

3738

Biblioteca Padro

DayName
Obtm o nome do dia da semana.
string DayName() const

Obtm o nome do dia da semana pelo ndice.


string DayName(
const int

num

// day index

) const

Parmetros
num
[in] ndice do dia (0-6).
Valor de retorno
Nome do dia.

2000-2015, MetaQuotes Software Corp.

3739

Biblioteca Padro

ShortDayName
Obtm nome abreviado do dia da semana.
string ShortDayName() const

Obtm nome abreviado do dia da semana pelo ndice.


string ShortDayName(
const int

num

// day index

) const

Parmetros
num
[in] ndice do dia (0-6).
Valor de retorno
Nome abreviado do dia.

2000-2015, MetaQuotes Software Corp.

3740

Biblioteca Padro

DaysInMonth
Obtm o nmero de dias no ms.
int DaysInMonth() const

Valor de retorno
Nmero de dias no ms.

2000-2015, MetaQuotes Software Corp.

3741

Biblioteca Padro

DateTime (Mtodo Get)


Obtm data e tempo.
datetime DateTime()

Valor de retorno
Valor do tipo datetime.

DateTime (Mtodo Set)


Define a data e o tempo com o tipo datetime.
void DateTime(
const datetime

value

// date and time

Parmetros
value
[in] Valor do tipo datetime.
Valor de retorno
Nenhum.

DateTime (Mtodo Set MqlDateTime)


Define a data e o tempo com o tipo MqlDateTime.
void DateTime(
const MqlDateTime

&value

// date and time

Parmetros
value
[in] Valor do tipo MqlDateTime.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3742

Biblioteca Padro

Data (Mtodo Set de data e tempo)


Define a data com o tipo datetime.
void Date(
const datetime

value

// date

Parmetros
value
[in] Valor do tipo datetime.
Valor de retorno
Nenhum.

Data (Mtodo Set MqlDateTime)


Define a data com o tipo MqlDateTime.
void Date(
const MqlDateTime

&value

// date

Parmetros
value
[in] Valor do tipo MqlDateTime.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3743

Biblioteca Padro

Time (Mtodo Set datetime)


Define tempo com o tipo datetime.
void Time(
const datetime

value

// time

Parmetros
value
[in] Valor do tipo datetime.
Valor de retorno
Nenhum.

Tempo (Mtodo Set MqlDateTime)


Define tempo com o tipo MqlDateTime.
void Time(
const MqlDateTime

&value

// time

Parmetros
value
[in] Valor do tipo MqlDateTime.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3744

Biblioteca Padro

Sec
Define segundos.
void Sec(
const int

value

// seconds

Parmetros
value
[in] Segundos.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3745

Biblioteca Padro

Min
Define minutos.
void Min(
const int

value

// minutes

Parmetros
value
[in] Minutos.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3746

Biblioteca Padro

Hour
Define hora.
void Hour(
const int

value

// hour

Parmetros
value
[in] Hora.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3747

Biblioteca Padro

Day
Define o dia do ms.
void Day(
const int

value

// day

Parmetros
value
[In] Dia do ms.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3748

Biblioteca Padro

Mon
Define ms.
void Day(
const int

value

// month

Parmetros
value
[in] Ms.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3749

Biblioteca Padro

Year
Define ano.
void Day(
const int

value

// year

Parmetros
value
[in] ano.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3750

Biblioteca Padro

SecDec
Subtrai nmero determinado de segundos.
void SecDec(
int

delta=1

// seconds

Parmetros
delta
[in] Segundos para subtrair.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3751

Biblioteca Padro

SecInc
Adiciona o nmero determinado de segundos.
void SecInc(
int

delta=1

// seconds

Parmetros
delta
[in] Segundos para adicionar.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3752

Biblioteca Padro

MinDec
Subtrai nmero determinado de minutos.
void MinDec(
int

delta=1

// minutes

Parmetros
delta
[in] Para subtrair Minutos.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3753

Biblioteca Padro

MinInc
Adiciona o nmero determinado de minutos.
void MinInc(
int

delta=1

// minutes

Parmetros
delta
[in] Minutos para adicionar.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3754

Biblioteca Padro

HourDec
Subtrai o nmero de horas determinado.
void HourDec(
int

delta=1

// hours

Parmetros
delta
[in] Horas para subtrair.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3755

Biblioteca Padro

HourInc
Adiciona nmero de horas determinado.
void HourInc(
int

delta=1

// hours

Parmetros
delta
[in] Horas para adicionar.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3756

Biblioteca Padro

DayDec
Subtrai determinado nmero de dias.
void DayDec(
int

delta=1

// days

Parmetros
delta
[in] Dias para subtrair.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3757

Biblioteca Padro

DayInc
Adiciona determinado nmero de dias.
void DayInc(
int

delta=1

// days

Parmetros
delta
[in] Dias para adicionar.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3758

Biblioteca Padro

MonDec
Subtrai determinado nmero de meses.
void MonDec(
int

delta=1

// months

Parmetros
delta
[in] Meses para subtrair.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3759

Biblioteca Padro

MonInc
Adiciona determinado nmero de meses.
void MonInc(
int

delta=1

// months

Parmetros
delta
[in] Meses para adicionar.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3760

Biblioteca Padro

YearDec
Subtrai determinado nmero de anos.
void YearDec(
int

delta=1

// years

Parmetros
delta
[in] Anos para subtrair.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3761

Biblioteca Padro

YearInc
Adiciona determinado nmero de anos.
void YearInc(
int

delta=1

// years

Parmetros
delta
[in] Anos para adicionar.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3762

Biblioteca Padro

CWnd
CWnd uma classe base para todos os controles, includo na biblioteca padro MQL5.

Descrio
CWnd classe a implementao da classe de controle base.

Declarao
class CWnd : public CObject

Ttulo
#include <Controls\Wnd.mqh>

Mtodos de classe
Criar e destruir
Create

Criar controle

Destroy

Destruir controle

Manipuladores de eventos do grfico


OnEvent

Manipulador de eventos de todos os eventos de


grfico

OnMouseEvent

Manipulador de eventos para


CHARTEVENT_MOUSE_MOVE

evento

Name
Name

Obtm nome do controle

O acesso ao recipiente
ControlsTotal

Obtm o nmero de controles no recipiente

Control

Obtm o controle pelo ndice

ControlFind

Obtm o controle pelo ID

Geometria
Rect

Obtm o ponteiro para o objeto da classe CRect

Left

Obtm/Define a coordenada X do canto superior


esquerdo

Top

Obtm/Define a coordenada Y do canto superior


esquerdo

Right

Obtm/Define a coordenada X do canto inferior


direito

Bottom

Obtm/Define a coordenada Y do canto inferior

2000-2015, MetaQuotes Software Corp.

3763

Biblioteca Padro

direito
Width

Obtm/Define a largura

Height

Obtm/Define a altura

Move

Define novas coordenadas do controle

Shift

Executa
o
deslocamento
coordenadas de controle

Resize

Define nova largura/altura do controle

Contains

Verifica se o ponto/controle est dentro da


zona de controle

relativo

das

Align
Alignment

Define as propriedades de alinhamento do


controle

Align

Executa o controle de alinhamento

Identificao
Id

Obtm/Define a ID de controle

State
IsEnabled

Obtm um valor indicando se o controle est


habilitado

Enable

Define um valor indicando se o controle est


habilitado

Desabilitar

Desabilita o controle

IsVisible

Verifica flag de visibilidade

Visible

Define flag de visibilidade

Show

Mostra o controle

Hide

Oculta o controle

IsActive

Verifica a atividade de controle

Activate

Ativa o controle

Deactivate

Desativa o controle

Flags de Estado
StateFlags

Obtm/Define flags de estado de controle

StateFlagsSet

Define flags do estado de controle

StateFlagsReset

Redefine flags do estado de controle

Flags das propriedades


PropFlags

Obtm/Define os flags das propriedades de


controle

2000-2015, MetaQuotes Software Corp.

3764

Biblioteca Padro

PropFlagsSet

Define os flags das propriedades de controle

PropFlagsReset

Redefine os flags das propriedades de controle

Operaes de mouse
MouseX

Obtm/Salva coordenada X do mouse

MouseY

Obtm/Salva a coordenada Y do mouse

MouseFlags

Obtm/Salva o estado dos botes do mouse

MouseFocusKill

Limpa o foco do mouse

Manipuladores de eventos internos


OnCreate

Manipulador de evento "Create"

OnDestroy

Manipulador de evento "Destroy"

OnMove

Manipulador de evento "Move"

OnResize

Manipulador de evento "Resize"

OnEnable

Manipulador de evento "Enable"

OnDisable

Manipulador de evento "Disable"

OnShow

Manipulador de evento "Show"

OnHide

Manipulador de evento "Hide"

OnActivate

Manipulador de evento "Activate"

OnDeactivate

Manipulador de evento "Deactivate"

OnClick

Manipulador de eventos "Clique"

OnChange

Manipulador de eventos "Change"

Manipuladores de eventos do mouse


OnMouseDown

Manipulador de eventos "MouseDown"

OnMouseUp

Manipulador de eventos "MouseUp"

Manipulador de eventos para arrastar


OnDragStart

Manipulador de eventos "DragStart"

OnDragProcess

Manipulador de eventos "DragProcess"

OnDragEnd

Manipulador de eventos "Dragend"

Arrastar o objeto
DragObjectCreate

Cria objeto de arrastar

DragObjectDestroy

Destri objeto de arrastar

2000-2015, MetaQuotes Software Corp.

3765

Biblioteca Padro

Create
Cria um controle.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
Mtodo de classe base somente salva os parmetros e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3766

Biblioteca Padro

Destroy
Destri um controle.
virtual bool Destroy()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3767

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro de evento do tipo long, passado por referncia.
dparam
[in] Parmetro de evento do tipo double, passado por referncia.
sparam
[in] Parmetro de evento do tipostring, passado por referncia.
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3768

Biblioteca Padro

OnMouseEvent
Manipulador de eventos do mouse (o evento grfico CHARTEVENT_MOUSE_MOVE).
virtual bool OnMouseEvent(
const int x,

// x coordinate

const int y,

// y coordinate

const int flags

// flags

Parmetros
x
[in] Coordenada X do cursor do mouse em relao ao canto superior esquerdo do grfico.
y
[in] Coordenada Y do cursor do mouse em relao ao canto superior esquerdo do grfico.
flags
[in] Flag de estado dos botes do mouse.
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3769

Biblioteca Padro

Name
Obtm o controle do nome.
string Name() const

Valor de retorno
Nome do controle.

2000-2015, MetaQuotes Software Corp.

3770

Biblioteca Padro

ControlsTotal
Obtm o nmero de controles no recipiente.
int ControlsTotal() const

Valor de retorno
Nmero de controles no recipiente.
Observao
O mtodo da classe base no tem o recipiente, ele fornece o acesso ao recipiente a seus herdeiros e
sempre retorna 0.

2000-2015, MetaQuotes Software Corp.

3771

Biblioteca Padro

Control
Obtm o controle pelo ndice.
CWnd* Control(
const int ind

// index

) const

Parmetros
ind
[in] ndice de controle.
Valor de retorno
Um ponteiro para o controle.
Observao
O mtodo da classe base no tem o recipiente, ele fornece o acesso ao recipiente a seus herdeiros e
sempre retorna NULL.

2000-2015, MetaQuotes Software Corp.

3772

Biblioteca Padro

ControlFind
Obtm o controle de recipiente pela ID determinada.
virtual CWnd* ControlFind(
const long id

// ID

Parmetros
id
[in] Identificador do controle para encontrar.
Valor de retorno
Ponteiro do controle.
Observao
O mtodo da classe base no tem o recipiente, ele fornece o acesso ao recipiente a seus herdeiros.
Se a ID determinada corresponde com a ID de recipiente, retorna um ponteiro para si.

2000-2015, MetaQuotes Software Corp.

3773

Biblioteca Padro

Rect
Obtm o ponteiro ao objeto da classe CRect.
const CRect* Rect() const

Valor de retorno
Ponteiro ao objeto da classe CRect.

2000-2015, MetaQuotes Software Corp.

3774

Biblioteca Padro

Left (Mtodo Get)


Obtm a coordenada X do canto superior esquerdo do controle.
int Left()

Valor de retorno
Coordenada X do canto superior esquerdo do controle.

Left (Mtodo Set)


Define a coordenada X do canto superior esquerdo do controle.
void Left(
const int x

// new x coordinate

Parmetros
x
[in] Nova coordenada X do canto superior esquerdo.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3775

Biblioteca Padro

Top (Mtodo Get)


Obtm a coordenada Y do canto superior esquerdo do controle.
int Top()

Valor de retorno
Coordenada Y do canto superior esquerdo do controle.

Top (Mtodo Set)


Define a coordenada Y do canto superior esquerdo do controle.
void Top(
const int y

// y coordinate

Parmetros
y
[in] Nova coordenada Y do canto superior esquerdo.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3776

Biblioteca Padro

Right (Mtodo Get)


Obtm a coordenada X do canto inferior direito do controle.
int Right()

Valor de retorno
Coordenada X do canto inferior direito.

Right (Mtodo Set)


Define a coordenada X do canto inferior direito do controle.
void Right(
const int x

// x coordinate

Parmetros
x
[in] Nova coordenada X do canto inferior direito.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3777

Biblioteca Padro

Bottom (Mtodo Get)


Obtm a coordenada Y do canto inferior direito do controle.
int Bottom()

Valor de retorno
Coordenada Y do canto inferior direito do controle.

Bottom (Mtodo Set)


Define a coordenada X do canto inferior direito do controle.
void Bottom(
const int y

// y coordinate

Parmetros
y
[in] Nova coordenada Y do canto inferior direito.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3778

Biblioteca Padro

Width (Mtodo Get)


Obtm a largura do controle.
int Width()

Valor de retorno
Width of the control.

Width (Mtodo Set)


Define nova largura do controle.
virtual bool Width(
const int w

// width

Parmetros
w
[in] Nova largura.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3779

Biblioteca Padro

Height (Mtodo Get)


Obtm a altura do controle.
int Height()

Valor de retorno
Altura do controle.

Height (Mtodo Set)


Define nova altura do controle.
virtual bool Height(
const int h

// height

Parmetros
h
[in] Nova altura.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3780

Biblioteca Padro

Move
Define novas coordenadas do controle.
void Move(
const int x,

// X coordinate

const int y

// Y coordinate

Parmetros
x
[in] Nova coordenada X.
y
[in] Nova coordenada Y.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3781

Biblioteca Padro

Shift
Executa a deslocamento relativo das coordenadas de controle.
void Shift(
const int dx,

// delta X

const int dy

// delta Y

Parmetros
dx
[in] Delta X.
dy
[in] Delta Y.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3782

Biblioteca Padro

Resize
Define nova largura/altura do controle.
virtual bool Resize(
const int w,

// width

const int h

// height

Parmetros
w
[in] Nova largura.
h
[in] Nova altura.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3783

Biblioteca Padro

Contains
Verifica se o ponto est dentro da rea de controle do grfico.
bool Contains(
const int x,

// X coordinate

const int y

// Y coordinate

Parmetros
x
[in] Coordenada X.
y
[in] Coordenada Y.
Valor de retorno
verdadeiro, se o ponto est dentro da rea (incluindo as bordas), caso contrrio - falso.

Contains
Verifica se o controle determinado est dentro da rea de controle do grfico.
bool Contains(
const CWnd* control

// pointer

) const

Parmetros
control
[in] Ponteiro de objeto.
Valor de retorno
verdadeiro, se o controle determinado est dentro da rea (incluindo as bordas), caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3784

Biblioteca Padro

Alignment
Define os parmetros de alinhamento do controle.
void Alignment(
const int flags,

// alignment flags

const int left,

// offset from the left border

const int top,

// offset from the top border

const int right,

// offset from the right border

const int bottom

// offset from the bottom border

Parmetros
flags
[in] Flags de alinhamento.
left
[in] Deslocamento fixo a partir da borda esquerda.
top
[in] Deslocamento fixo a partir da borda superior.
right
[in] Deslocamento fixo a partir da borda direita.
bottom
[in] Deslocamento fixo a partir da borda inferior.
Valor de retorno
Nenhum.
Observao
Flags de alinhamento:
enum WND_ALIGN_FLAGS
{
WND_ALIGN_NONE=0,

// no align

WND_ALIGN_LEFT=1,

// align left

WND_ALIGN_TOP=2,

// align top

WND_ALIGN_RIGHT=4,

// align right

WND_ALIGN_BOTTOM=8,

// align bottom

WND_ALIGN_WIDTH = WND_ALIGN_LEFT|WND_ALIGN_RIGHT, // align width


WND_ALIGN_HEIGHT=WND_ALIGN_TOP|WND_ALIGN_BOTTOM,

// align height

WND_ALIGN_CLIENT=WND_ALIGN_WIDTH|WND_ALIGN_HEIGHT, // align height and width


}

2000-2015, MetaQuotes Software Corp.

3785

Biblioteca Padro

Align
Executa o alinhamento do controle na rea do grfico determinado.
virtual bool Align(
const CRect* rect

// pointer

Parmetros
rect
[in] Ponteiro ao objeto com coordenadas da rea do grfico.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
Os parmetros de alinhamento deve ser especificados (sem alinhamento por padro).

2000-2015, MetaQuotes Software Corp.

3786

Biblioteca Padro

Id (Mtodo Get)
Obtm a ID de controle.
long Id() const

Valor de retorno
O identificador de controle.

Id (Mtodo Set)
Define novo valor do ID de controle.
virtual long Id(
const long id

// identifier

Parmetros
id
[in] O novo valor do identificador de controle.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3787

Biblioteca Padro

IsEnabled
Obtm um valor indicando se o controle est habilitado.
bool IsEnabled() const

Valor de retorno
verdadeiro - se o controle est habilitado, caso contrrio - falso.

2000-2015, MetaQuotes Software Corp.

3788

Biblioteca Padro

Enable
Permite o controle.
virtual bool Enable()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
Se o controle est habilitado, poder processar os eventos externos.

2000-2015, MetaQuotes Software Corp.

3789

Biblioteca Padro

Desabilitar
Desabilita o controle.
virtual bool Disable()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
O controle desabilitado no poder processar os eventos externos.

2000-2015, MetaQuotes Software Corp.

3790

Biblioteca Padro

IsVisible
Obtm um valor indicando se o controle est visvel.
bool IsVisible() const

Valor de retorno
verdadeiro se o controle mostrado no grfico, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3791

Biblioteca Padro

Visible
Define flag de visibilidade.
virtual bool Visible(
const bool flag

// flag

Parmetros
flag
[in] Novo flag
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3792

Biblioteca Padro

Show
Exibe o controle.
virtual bool Show()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3793

Biblioteca Padro

Hide
Oculta o controle.
virtual bool Hide()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3794

Biblioteca Padro

IsActive
Obtm um valor indicando se o controle est ativo.
bool IsActive() const

Valor de retorno
verdadeiro se o controle est ativo, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3795

Biblioteca Padro

Activate
Ativa o controle.
virtual bool Activate()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
O controle se torna ativo quando o cursor do mouse est pairando sobre ele.

2000-2015, MetaQuotes Software Corp.

3796

Biblioteca Padro

Deactivate
Desativa o controle.
virtual bool Deactivate()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
O controle torna-se inativo quando o cursor do mouse est fora de controle.

2000-2015, MetaQuotes Software Corp.

3797

Biblioteca Padro

StateFlags (Mtodo Get)


Obtm flags de estado do controle.
int StateFlags()

Valor de retorno
Flags de estado do controle.

StateFlags (Mtodo Set)


Define flags de estado do controle.
virtual void StateFlags(
const int flags

// flags

Parmetros
flags
[in] Novos flags de estado do controle.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3798

Biblioteca Padro

StateFlagsSet
Define flags de estado do controle.
virtual void StateFlagsSet(
const int flags

// flags

Parmetros
flags
[in] Flags para definir (mscara de bits).
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3799

Biblioteca Padro

StateFlagsReset
Redefine flags de estado do controle.
virtual void StateFlagsReset(
const int flags

// flags

Parmetros
flags
[in] Flags para redefinir (mscara de bits).
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3800

Biblioteca Padro

PropFlags (Mtodo Get)


Obtm flags de propriedades do controle.
void PropFlags(
const int flags

// flags

Valor de retorno
Flags de propriedades do controle.

PropFlags (Mtodo Set)


Define flags de propriedades do controle.
virtual void PropFlags(
const int flags

// flags

Parmetros
flags
[in] Novos flags.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3801

Biblioteca Padro

PropFlagsSet
Define flags de propriedades do controle.
virtual void PropFlagsSet(
const int flags

// flags

Parmetros
flags
[in] Flags para definir (mscara de bits).
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3802

Biblioteca Padro

PropFlagsReset
Redefine flags das propriedade do controle.
virtual void PropFlagsReset(
const int flags

// flags

Parmetros
flags
[in] Flags para redefinir (mscara de bits).
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3803

Biblioteca Padro

MouseX (Mtodo Set)


Salva a coordenada X do mouse.
void MouseX(
const int value

// coordinate

Parmetros
value
[in] A coordenada X do mouse.
Valor de retorno
Nenhum.

MouseX (Mtodo Get)


Obtm a coordenada X do mouse que foi salva.
int MouseX()

Valor de retorno
A coordenada X do mouse que foi salva.

2000-2015, MetaQuotes Software Corp.

3804

Biblioteca Padro

MouseY (Mtodo Set)


Salva a coordenada Y do mouse.
void MouseY(
const int value

// coordinate

Parmetros
value
[in] A coordenada Y do mouse.
Valor de retorno
Nenhum.

MouseY (Mtodo Get)


Obtm a coordenada Y do mouse que foi salva.
int MouseY()

Valor de retorno
A coordenada Y do mouse que foi salva.

2000-2015, MetaQuotes Software Corp.

3805

Biblioteca Padro

MouseFlags (Mtodo Set)


Salva o estado dos botes do mouse.
virtual void MouseFlags(
const int value

// state

Parmetros
value
[in] Estado dos botes do mouse.
Valor de retorno
Nenhum.

MouseFlags (Mtodo Get)


Obtm o estado salvo dos botes do mouse.
int MouseFlags()

Valor de retorno
Estado dos botes do mouse.

2000-2015, MetaQuotes Software Corp.

3806

Biblioteca Padro

MouseFocusKill
Limpa o estado salvo dos botes do mouse e desativa o controle.
bool MouseFocusKill(
const long id=CONTROLS_INVALID_ID

// id

Parmetros
id=CONTROLS_INVALID_ID
[in] Identificador do controle, que recebeu o foco do mouse.
Valor de retorno
O resultado da desativao do controle.

2000-2015, MetaQuotes Software Corp.

3807

Biblioteca Padro

OnCreate
O manipulador de eventos do controle "Create".
virtual bool OnCreate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3808

Biblioteca Padro

OnDestroy
O manipulador de eventos do controle "Destroy".
virtual bool OnDestroy()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3809

Biblioteca Padro

OnMove
O manipulador de eventos do controle "Move".
virtual bool OnMove()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3810

Biblioteca Padro

OnResize
O manipulador de eventos do controle "Resize" .
virtual bool OnResize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3811

Biblioteca Padro

OnEnable
O manipulador de eventos do controle "Enable" (se habilitado, ele pode responder a interao do
usurio).
virtual bool OnEnable()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3812

Biblioteca Padro

OnDisable
O manipulador de eventos do controle "Disable" (se desativado no pode responder a interao do
usurio).
virtual bool OnDisable()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3813

Biblioteca Padro

OnShow
O manipulador de eventos do controle "Show".
virtual bool OnShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3814

Biblioteca Padro

OnHide
O manipulador de eventos do controle "Hide".
virtual bool OnHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3815

Biblioteca Padro

OnActivate
O manipulador de eventos do controle "Activate".
virtual bool OnActivate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3816

Biblioteca Padro

OnDeactivate
O manipulador de eventos do controle "Deactivate" .
virtual bool OnDeactivate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3817

Biblioteca Padro

OnClick
O manipulador de eventos do controle "Click" (clique do boto esquerdo do mouse) .
virtual bool OnClick()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3818

Biblioteca Padro

OnChange
O manipulador de eventos do controle "Change".
virtual bool OnChange()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3819

Biblioteca Padro

OnMouseDown
O manipulador de eventos do controle "MouseDown".
virtual bool OnMouseDown()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "MouseDown" ocorre quando o boto esquerdo do mouse pressionado no controle.

2000-2015, MetaQuotes Software Corp.

3820

Biblioteca Padro

OnMouseUp
O manipulador de eventos do controle "MouseUp" (boto esquerdo do mouse liberando o boto).
virtual bool OnMouseUp()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "MouseUp" ocorre quando o boto esquerdo do mouse liberado no controle.

2000-2015, MetaQuotes Software Corp.

3821

Biblioteca Padro

OnDragStart
O manipulador de eventos do controle "DragStart".
virtual bool OnDragStart()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "DragStart" ocorre no incio da operao de arrastar.

2000-2015, MetaQuotes Software Corp.

3822

Biblioteca Padro

OnDragProcess
O manipulador de eventos do controle "DragProcess" .
virtual bool OnDragProcess(
const int x,

// x coordinate

const int y

// y coordinate

Parmetros
x
[in] Coordenada X atual do cursor do mouse.
y
[in] Coordenada Y atual do cursor do mouse.
Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "DragProcess" ocorre quando o controle movido.

2000-2015, MetaQuotes Software Corp.

3823

Biblioteca Padro

OnDragEnd
O manipulador de eventos do controle "dragend" .
virtual bool OnDragEnd()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "dragend" ocorre quando o processo de arrastar o controle finalizado.

2000-2015, MetaQuotes Software Corp.

3824

Biblioteca Padro

DragObjectCreate
Cria objeto de arrastar .
virtual bool DragObjectCreate()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3825

Biblioteca Padro

DragObjectDestroy
Destri objeto de arrastar.
virtual bool DragObjectDestroy()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3826

Biblioteca Padro

CWndObj
CWndObj uma classe base para controles simples (baseado nos objetos de grfico) da Biblioteca
Padro.

Descrio
A classe CWndObj implementa mtodos de base para controle simples.

Declarao
class CWndObj : public CWnd

Ttulo
#include <Controls\WndObj.mqh>

Mtodos de classe
Processamento de eventos de grfico
OnEvent

Manipulador de eventos de todos os eventos de


grfico

Propriedades
Text

Obtm/Define propriedade
grfico OBJPROP_TEXT

do

objeto

de

Color

Obtm/Define propriedade
grfico OBJPROP_COLOR

do

objeto

de

ColorBackground

Obtm/Define propriedade
grfico OBJPROP_BGCOLOR

do

objeto

de

ColorBorder

Obtm/Define propriedade do
grfico OBJPROP_BORDER_COLOR

objeto

de

Font

Obtm/Define propriedade
grfico OBJPROP_FONT

do

objeto

de

FontSize

Obtm/Define propriedade
grfico OBJPROP_FONTSIZE

do

objeto

de

ZOrder

Obtm/Define propriedade
grfico OBJPROP_ZORDER

do

objeto

de

Manipuladores de eventos dos objetos de


grfico
OnObjectCreate

Manipulador
de
CHARTEVENT_OBJECT_CREATE

Evento

OnObjectChange

Manipulador
de
CHARTEVENT_OBJECT_CHANGE

evento

2000-2015, MetaQuotes Software Corp.

3827

Biblioteca Padro

OnObjectDelete

Manipulador
de
CHARTEVENT_OBJECT_DELETE

evento

OnObjectDrag

Manipulador
de
CHARTEVENT_OBJECT_DRAG

evento

Propriedades que alteram manipuladores de


eventos
OnSetText

Manipulador de eventos "SetText"

OnSetColor

Manipulador de eventos "SetColor"

OnSetColorBackground

Manipulador de eventos "SetColorBackground"

OnSetFont

Manipulador de eventos "SetFont"

OnSetFontSize

Manipulador de eventos "SetFontSize"

OnSetZOrder

Manipulador de evento "SetZOrder"

Manipuladores de eventos internos


OnDestroy

Manipulador de evento "Destroy"

OnChange

Manipulador de eventos "Change"

2000-2015, MetaQuotes Software Corp.

3828

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3829

Biblioteca Padro

Text (Mtodo Get)


Obtm a propriedade do objeto de grfico OBJPROP_TEXT(texto).
string Text()

Valor de retorno
O valor da propriedade OBJPROP_TEXT.

Text (Mtodo Set)


Define a propriedade do objeto de grfico OBJPROP_TEXT(texto).
bool Text(
const string value

// new value

Parmetros
value
[in] O novo valor da propriedade OBJPROP_TEXT.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3830

Biblioteca Padro

Color (Mtodo Get)


Obtm a propriedade OBJPROP_COLOR (cor) do objeto de grfico.
color Color()

Valor de retorno
O valor da propriedade OBJPROP_COLOR.

Color (Mtodo Set)


Define a propriedade OBJPROP_COLOR (cor) do objeto de grfico.
bool Color(
const color value

// value

Parmetros
value
[in] Novo valor da propriedade OBJPROP_COLOR
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3831

Biblioteca Padro

ColorBackground (Mtodo Get)


Obtm a propriedade OBJPROP_BGCOLOR (cor de fundo) do objeto grfico.
color ColorBackground()

Valor de retorno
O valor da propriedade OBJPROP_BGCOLOR.

ColorBackground (Mtodo Set)


Define a propriedade OBJPROP_BGCOLOR (cor de fundo) do objeto grfico.
bool ColorBackground(
const color value

// value

Parmetros
value
[in] Novo valor da propriedade OBJPROP_BGCOLOR.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3832

Biblioteca Padro

ColorBorder (Mtodo Get)


Obtm a propriedade OBJPROP_BORDER_COLOR (cor da borda) do objeto de grfico.
color ColorBorder()

Valor de retorno
O valor da propriedade OBJPROP_BORDER_COLOR.

ColorBorder (Mtodo Set)


Define a propriedade OBJPROP_BORDER_COLOR (cor da borda) do objeto de grfico.
bool ColorBorder(
const color value

// value

Parmetros
value
[in] Novo valor da propriedade OBJPROP_BORDER_COLOR.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3833

Biblioteca Padro

Font (Mtodo Get)


Obtm a propriedade OBJPROP_FONT (fonte) do objeto de grfico.
string Font()

Valor de retorno
O valor da propriedade OBJPROP_FONT.

Font (Mtodo Set)


Define a propriedade OBJPROP_FONT (fonte) do objeto de grfico.
bool Font(
const string value

// new value

Parmetros
value
[in] Novo valor da propriedade OBJPROP_FONT.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3834

Biblioteca Padro

FontSize (Mtodo Get)


Obtm a propriedade< OBJPROP_FONTSIZE (tamanho da fonte) do objeto de grfico.
int FontSize()

Valor de retorno
O valor da propriedade< OBJPROP_FONTSIZE.

FontSize (Mtodo Set)


Define a propriedade< OBJPROP_FONTSIZE (tamanho da fonte) do objeto de grfico.
bool FontSize(
const int value

// new value

Parmetros
value
[in] Novo valor da propriedade< OBJPROP_FONTSIZE.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3835

Biblioteca Padro

ZOrder (Mtodo Get)


Obtm a propriedade do objeto de grfico OBJPROP_ZORDER.
long ZOrder()

Valor de retorno
O valor da propriedade OBJPROP_ZORDER.

ZOrder (Mtodo Set)


Define a propriedade do objeto de grfico OBJPROP_ZORDER.
bool ZOrder(
const long value

// new value

Parmetros
value
[in] Novo valor da propriedade OBJPROP_ZORDER.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3836

Biblioteca Padro

OnObjectCreate
O manipulador de eventos do objeto de grfico CHARTEVENT_OBJECT_CREATE.
virtual bool OnObjectCreate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3837

Biblioteca Padro

OnObjectChange
O manipulador de eventos do objeto de grfico CHARTEVENT_OBJECT_CHANGE.
virtual bool OnObjectChange()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3838

Biblioteca Padro

OnObjectDelete
O manipulador de eventos do objeto de grfico CHARTEVENT_OBJECT_DELETE.
virtual bool OnObjectDelete()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3839

Biblioteca Padro

OnObjectDrag
O manipulador de eventos do objeto de grfico CHARTEVENT_OBJECT_DRAG.
virtual bool OnObjectDrag()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3840

Biblioteca Padro

OnSetText
O manipulador de eventos do controle "SetText" (altera propriedade OBJPROP_TEXT).
virtual bool OnSetText()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3841

Biblioteca Padro

OnSetColor
O manipulador de eventos do controle "SetColor" (altera propriedade OBJPROP_COLOR).
virtual bool OnSetColor()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3842

Biblioteca Padro

OnSetColorBackground
O manipulador de eventos do controle "SetColorBackground" (altera propriedade OBJPROP_BGCOLOR).
virtual bool OnSetColorBackground()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3843

Biblioteca Padro

OnSetFont
O manipulador de eventos do controle "SetFont" (altera propriedade OBJPROP_FONT).
virtual bool OnSetFont()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3844

Biblioteca Padro

OnSetFontSize
O manipulador de eventos controle "SetFontSize" (altera propriedade OBJPROP_FONTSIZE).
virtual bool OnSetFontSize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3845

Biblioteca Padro

OnSetZOrder
O manipulador de eventos do controle "SetZOrder" (altera propriedade OBJPROP_ZORDER).
virtual bool OnSetZOrder()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3846

Biblioteca Padro

OnDestroy
O manipulador de eventos do controle "Destroy".
virtual bool OnDestroy()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3847

Biblioteca Padro

OnChange
O manipulador de eventos do controle "Change".
virtual bool OnChange()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3848

Biblioteca Padro

CWndContainer
CWndContainer uma classe base para um controle complexo (contendo controles dependentes) da
biblioteca padro.

Descrio
A classe CWndContainer implementa mtodos de base do controle complexo.

Declarao
class CWndContainer : public CWnd

Ttulo
#include <Controls\WndContainer.mqh>

Mtodos de classe
Destroy
Destroy

Destri todos os controles de recepiente

Manipuladores de eventos do grfico


OnEvent

Manipulador de eventos de todos os eventos de


grfico

OnMouseEvent

O
manipulador
de
CHARTEVENT_MOUSE_MOVE

evento

O acesso ao recipiente
ControlsTotal

Obtm o Nmero dos controles no recipiente

Control

Obtm o controle pelo ndice

ControlFind

Obtm o controle pela ID

Adicionar/Deletar
Add

Adiciona controle para recipiente

Delete

Exclui controle de recipiente

Geometria
Move

Define novas coordenadas


controles do recipiente

para

todos

os

Shift

Executa
o
deslocamento
relativo
das
coordenadas para todos os controles do
recipiente

Identificao
Id

Define a ID para todos


recipiente

2000-2015, MetaQuotes Software Corp.

os

controles

do

3849

Biblioteca Padro

State
Enable

Permite todos os controles do recipiente

Desabilitar

Desativa todos os controles do recipiente

Show

Mostra todos os controles do recipiente

Hide

Oculta todos os controles do recipiente

Operaes de mouse
MouseFocusKill

Limpa o foco do mouse

Operaes de arquivo
Save

Salva as informaes do recipiente para o


arquivo

Load

Carrega as informaes do recipiente a partir


do arquivo

Manipuladores de eventos internos


OnResize

Manipulador de evento "Resize"

OnActivate

Manipulador de evento "Activate"

OnDeactivate

Manipulador de evento "Deactivate"

2000-2015, MetaQuotes Software Corp.

3850

Biblioteca Padro

Destroy
Destri todos os controles do recipiente.
virtual bool Destroy()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3851

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3852

Biblioteca Padro

OnMouseEvent
Manipulador do evento Mouse.
virtual bool OnMouseEvent(
const int x,

// x coordinate

const int y,

// y coordinate

const int flags

// flags

Parmetros
x
[in] Coordenada X do cursor do mouse em relao ao canto superior esquerdo do grfico.
y
[in] Coordenada Y do cursor do mouse em relao ao canto superior esquerdo do grfico.
flags
[in] Flag de estado dos botes do mouse.
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3853

Biblioteca Padro

ControlsTotal
Obtm o nmero de controles no recipiente.
int ControlsTotal() const

Valor de retorno
Nmero de controles no recipiente.

2000-2015, MetaQuotes Software Corp.

3854

Biblioteca Padro

Control
Obtm o controle do recipiente pelo ndice.
CWnd* Control(
const int ind

// index

) const

Parmetros
ind
[in] O ndice necessrio do controle.
Valor de retorno
Ponteiro para o controle, caso contrrio NULL se o controle no for encontrado.

2000-2015, MetaQuotes Software Corp.

3855

Biblioteca Padro

ControlFind
Obtm o controle do recipiente pelo identificador.
virtual CWnd* ControlFind(
const long id

// id

Parmetros
id
[in] ID de Controle .
Valor de retorno
Ponteiro para o controle, caso contrrio NULL se o controle no for encontrado.

2000-2015, MetaQuotes Software Corp.

3856

Biblioteca Padro

Add
Adiciona um controle ao recipiente.
bool Add(
CWnd& control

// reference

Parmetros
control
[in] Controle para adicionar, passado por referncia.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3857

Biblioteca Padro

Delete
Exclui controle a partir do recipiente.
bool Delete(
CWnd& control

// reference

Parmetros
control
[in] Controle para excluir, passado por referncia.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3858

Biblioteca Padro

Move
Define novas coordenadas para todos os controles do recipiente.
virtual bool Move(
const int x,

// x coordinate

const int y

// y coordinate

Parmetros
x
[in] Nova coordenada X do canto superior esquerdo.
y
[in] Nova coordenada Y do canto superior esquerdo.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3859

Biblioteca Padro

Shift
Executa o deslocamento relativo das coordenadas a todos os controles do recipiente.
virtual bool Shift(
const int dx,

// delta x

const int dy

// delta y

Parmetros
dx
[in] Delta X.
dy
[in] Delta Y.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3860

Biblioteca Padro

Id
Define a ID para todos os controles do recipiente.
virtual long Id(
const long id

// identifier

Parmetros
id
[in] Identificador do grupo Base.
Valor de retorno
Nmero de identificadores, usado pelos controles de recipiente.

2000-2015, MetaQuotes Software Corp.

3861

Biblioteca Padro

Enable
Permite todos os controles do recipiente.
virtual bool Enable()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3862

Biblioteca Padro

Desabilitar
Desativa todos os controles do recipiente.
virtual bool Disable()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3863

Biblioteca Padro

Show
Mostra todos os controles do recipiente.
virtual bool Show()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3864

Biblioteca Padro

Hide
Oculta todos os controles do recipiente.
virtual bool Hide()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3865

Biblioteca Padro

MouseFocusKill
Limpa o estado de salvo dos botes do mouse e desativa todos os controles no recipiente.
bool MouseFocusKill(
const long id=CONTROLS_INVALID_ID

// id

Parmetros
id=CONTROLS_INVALID_ID
[in] Identificador do controle, que recebeu o foco do mouse.
Valor de retorno
O resultado de desativao dos controles.

2000-2015, MetaQuotes Software Corp.

3866

Biblioteca Padro

Save
Salva informaes do recepiente no arquivo.
virtual bool Save(
const int file_handle

// handle

Parmetros
file_handle
[in] Manipulador do arquivo binrio (deve ser aberto para gravao).
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3867

Biblioteca Padro

Load
Carrega as informaes do recepiente no arquivo
virtual bool Load(
const int file_handle

// handle

Parmetros
file_handle
[in] Manipulador do arquivo binrio (deve ser aberto para leitura).
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3868

Biblioteca Padro

OnResize
O manipulador de eventos do controle "Resize" .
virtual bool OnResize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3869

Biblioteca Padro

OnActivate
O manipulador de eventos do controle "Activate".
virtual bool OnActivate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3870

Biblioteca Padro

OnDeactivate
O manipulador de eventos do controle "Deactivate" .
virtual bool OnDeactivate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3871

Biblioteca Padro

CLabel
CLabel uma classe de controle simples, baseado no objeto de grfico "Text label".

Descrio
CLabel destina-se a criao de etiquetas simples de texto.

Declarao
class CLabel : public CWndObj

Ttulo
#include <Controls\Label.mqh>

Mtodos de classe
Create
Create

Criar controle

Propriedades que alteram manipuladores de


eventos
OnSetText

Manipulador de eventos "SetText"

OnSetColor

Manipulador de eventos "SetColor"

OnSetFont

Manipulador de eventos "SetFont"

OnSetFontSize

Manipulador de eventos "SetFontSize"

Manipuladores de eventos internos


OnCreate

Manipulador de evento "Create"

OnShow

Manipulador de evento "Show"

OnHide

Manipulador de evento "Hide"

OnMove

Manipulador de evento "Move"

2000-2015, MetaQuotes Software Corp.

3872

Biblioteca Padro

Create
Cria novo controle CLabel.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3873

Biblioteca Padro

OnSetText
O manipulador de eventos do controle "SetText" (altera a propriedade OBJPROP_TEXT).
virtual bool OnSetText()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3874

Biblioteca Padro

OnSetColor
O manipulador de eventos do controle "SetColor" (altera a propriedade OBJPROP_COLOR).
virtual bool OnSetColor()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3875

Biblioteca Padro

OnSetFont
O manipulador de eventos do controle "SetFont" (altera propriedade OBJPROP_FONT.
virtual bool OnSetFont()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3876

Biblioteca Padro

OnSetFontSize
O manipulador de eventos do controle "SetFontSize" (altera a propriedade OBJPROP_FONTSIZE).
virtual bool OnSetFontSize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3877

Biblioteca Padro

OnCreate
O manipulador de eventos do controle "Create".
virtual bool OnCreate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3878

Biblioteca Padro

OnShow
O manipulador de eventos do controle "Show".
virtual bool OnShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3879

Biblioteca Padro

OnHide
O manipulador de eventos do controle "Hide".
virtual bool OnHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3880

Biblioteca Padro

OnMove
O manipulador de eventos do controle "Move".
virtual bool OnMove()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3881

Biblioteca Padro

CBmpButton
CBmpButton uma classe de controle simples, baseado no objeto grfico "Bitmap label".

Descrio
CBmpButton destina-se a criao de botes com imagem grfica.

Declarao
class CBmpButton : public CWndObj

Ttulo
#include <Controls\BmpButton.mqh>

Mtodos de classe
Create
Create

Criar controle

Propriedades
Border

Obtm/Define
"border"

propriedade

de

controle

BmpNames

Define o nome do arquivo bmp de controle

BmpOffName

Obtm/Define o nome do arquivo bmp para o


estado OFF

BmpOnName

Obtm/Define o nome do arquivo bmp para o


estado ON

BmpPassiveName

Obtm/Define o nome do arquivo bmp para o


estado passivo

BmpActiveName

Obtm/Define o nome do arquivo bmp para o


estado ativo

State
Pressed

Obtm/Define o estado do controle

Locking

Obtm/Define
"Locking"

propriedade

Manipuladores de eventos internos


OnSetZOrder

Manipulador de evento "SetZOrder"

OnCreate

Manipulador de evento "Create"

OnShow

Manipulador de evento "Show"

OnHide

Manipulador de evento "Hide"

2000-2015, MetaQuotes Software Corp.

de

controle

3882

Biblioteca Padro

OnMove

Manipulador de evento "Move"

OnChange

Manipulador de eventos "Change"

OnActivate

Manipulador de evento "Activate"

OnDeactivate

Manipulador de evento "Deactivate"

OnMouseDown

Manipulador de eventos "MouseDown"

OnMouseUp

Manipulador de eventos "MouseUp"

2000-2015, MetaQuotes Software Corp.

3883

Biblioteca Padro

Create
Cria o novo controle CBmpButton.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3884

Biblioteca Padro

Border (Mtodo Get)


Obtm a propriedade do controle "Border" (largura da borda).
int Border() const

Valor de retorno
A propriedade "Border" .

Border (Mtodo Set)


Define a propriedade do controle "Border" (largura da borda).
bool Border(
const int value

// new value

Parmetros
value
[in] O novo valor da propriedade "Border".
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3885

Biblioteca Padro

BmpNames
Define o nome do arquivo bmp de controle
bool BmpNames(
const string off="",

// file name

const string on=""

// file name

Parmetros
off=""
[in] Nome do arquivo bmp para o estado OFF.
on=""
[in] Nome do arquivo bmp para o estado ON.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3886

Biblioteca Padro

BmpOffName (Mtodo Get)


Obtm o nome do arquivo bmp para o estado OFF.
string BmpOffName() const

Valor de retorno
Nome do arquivo de bmp para o estado OFF.

BmpOffName (Mtodo Set)


Define o nome do arquivo bmp para o estado OFF.
bool BmpOffName(
const string name

// file name

Parmetros
name
[in] Nome do arquivo bmp para o estado OFF.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3887

Biblioteca Padro

BmpOnName (Mtodo Get)


Obtm o nome do arquivo bmp para o estado ON.
string BmpOnName() const

Valor de retorno
Nome do arquivo de bmp para o estado ON.

BmpOnName (Mtodo Set)


Define o nome do arquivo bmp para o estado ON.
bool BmpOnName(
const string name

// file name

Parmetros
name
[in] Nome do arquivo bmp para o estado ON.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3888

Biblioteca Padro

BmpPassiveName (Mtodo Get)


Obtm o nome do arquivo bmp para o estado passivo de controle.
string BmpPassiveName() const

Valor de retorno
Nome de arquivo bmp para o estado passivo de controle.

BmpPassiveName (Mtodo Set)


Define o nome do arquivo bmp para o estado passivo.
bool BmpPassiveName(
const string name

// file name

Parmetros
name
[in] Nome do arquivo bmp para o estado passivo de controle.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3889

Biblioteca Padro

BmpActiveName (Mtodo Get)


Obtm o nome do arquivo bmp para o estado ativo.
string BmpActiveName() const

Valor de retorno
Nome de arquivo bmp para o estado ativo.
Observao
O controle se torna ativo quando o cursor do mouse est pairando sobre ele.

BmpActiveName (Mtodo Set)


Define o nome do arquivo bmp para o estado ativo.
bool BmpActiveName(
const string name

// file name

Parmetros
name
[in] Nome do arquivo bmp para o estado ativo.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3890

Biblioteca Padro

Pressed (Mtodo Get)


Obtm o estado do controle (propriedade "Pressed") .
bool Pressed() const

Valor de retorno
Estado de controle.

Pressed (Mtodo Set)


Define o estado do controle (propriedade "Pressed).
bool Pressed(
const bool pressed

// new state

Parmetros
pressed
[in] Novo estado de controle.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3891

Biblioteca Padro

Locking (Mtodo Get)


Obtm a propriedade do controle "Locking".
bool Locking() const

Valor de retorno
O valor da propriedade "Locking".

Locking (Mtodo Set)


Define novo valor da propriedade do controle "Locking"
void Locking(
const bool locking

// new value

Parmetros
locking
[in] O novo valor da propriedade "Locking".
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3892

Biblioteca Padro

OnSetZOrder
O manipulador de eventos do controle "SetZOrder" (alterao da propriedade OBJPROP_ZORDER).
virtual bool OnSetZOrder()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3893

Biblioteca Padro

OnCreate
O manipulador de eventos do controle "Create".
virtual bool OnCreate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3894

Biblioteca Padro

OnShow
O manipulador de eventos do controle "Show".
virtual bool OnShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3895

Biblioteca Padro

OnHide
O manipulador de eventos do controle "Hide".
virtual bool OnHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3896

Biblioteca Padro

OnMove
O manipulador de eventos do controle "Move".
virtual bool OnMove()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3897

Biblioteca Padro

OnChange
O manipulador de eventos do controle "Change".
virtual bool OnChange()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3898

Biblioteca Padro

OnActivate
O manipulador de eventos do controle "Activate".
virtual bool OnActivate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3899

Biblioteca Padro

OnDeactivate
O manipulador de eventos do controle "Deactivate" .
virtual bool OnDeactivate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3900

Biblioteca Padro

OnMouseDown
O manipulador de eventos do controle "MouseDown".
virtual bool OnMouseDown()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "MouseDown" ocorre quando o boto esquerdo do mouse pressionado no controle.

2000-2015, MetaQuotes Software Corp.

3901

Biblioteca Padro

OnMouseUp
O manipulador de eventos do controle "MouseUp" (boto esquerdo do mouse liberando o boto).
virtual bool OnMouseUp()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "MouseUp" ocorre quando o boto esquerdo do mouse liberado no controle.

2000-2015, MetaQuotes Software Corp.

3902

Biblioteca Padro

CButton
CButton uma classe do controle simples, baseado no objeto de grfico "Button".

Descrio
Classe CButton destina-se a criao de botes simples.

Declarao
class CButton : public CWndObj

Ttulo
#include <Controls\Button.mqh>

Mtodos de classe
Create
Create

Criar controle

State
Pressed

Obtm/Define a propriedade "Pressed"

Locking

Obtm/Define a propriedade "Locking"

Propriedades que alteram manipuladores de


eventos
OnSetText

Manipulador de eventos "SetText"

OnSetColor

Manipulador de eventos "SetColor"

OnSetColorBackground

Manipulador de eventos "SetColorBackground"

OnSetColorBorder

Manipulador de eventos "SetColorBorder"

OnSetFont

Manipulador de eventos "SetFont"

OnSetFontSize

Manipulador de eventos "SetFontSize"

Manipuladores de eventos internos


OnCreate

Manipulador de evento "Create"

OnShow

Manipulador de evento "Show"

OnHide

Manipulador de evento "Hide"

OnMove

Manipulador de evento "Move"

OnResize

Manipulador de evento "Resize"

OnMouseDown

Manipulador de eventos "MouseDown"

OnOnMouseUp

Manipulador de eventos "MouseUp"

2000-2015, MetaQuotes Software Corp.

3903

Biblioteca Padro

2000-2015, MetaQuotes Software Corp.

3904

Biblioteca Padro

Create
Cria novo controle CButton.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3905

Biblioteca Padro

Pressed (Mtodo Get)


Obtm o estado do controle (propriedade "Pressed") .
bool Pressed() const

Valor de retorno
Estado de controle.

Pressed (Mtodo Set)


Define o estado do controle (propriedade "Pressed).
bool Pressed(
const bool pressed

// new state

Parmetros
pressed
[in] Novo estado de controle.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3906

Biblioteca Padro

Locking (Mtodo Get)


Obtm a propriedade do controle "Locking".
bool Locking() const

Valor de retorno
O valor da propriedade "Locking".

Locking (Mtodo Set)


Define novo valor da propriedade de controle "Locking".
void Locking(
const bool locking

// new value

Parmetros
locking
[in] O novo valor da propriedade "Locking".
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3907

Biblioteca Padro

OnSetText
O manipulador de eventos do controle "SetText" (altera a propriedade OBJPROP_TEXT).
virtual bool OnSetText()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3908

Biblioteca Padro

OnSetColor
O manipulador de eventos do controle "SetColor" (altera a propriedade OBJPROP_COLOR).
virtual bool OnSetColor()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3909

Biblioteca Padro

OnSetColorBackground
O manipulador de eventos
OBJPROP_BGCOLOR).

do

controle

"SetColorBackground"

virtual bool OnSetColorBackground()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

(alterao

da

propriedade

3910

Biblioteca Padro

OnSetColorBorder
O manipulador de eventos do controle "SetColorBorder" (altera propriedadeOBJPROP_BORDER_COLOR).
virtual bool OnSetColorBackground()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3911

Biblioteca Padro

OnSetFont
O manipulador de eventos do controle "SetFont" (altera propriedade OBJPROP_FONT.
virtual bool OnSetFont()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3912

Biblioteca Padro

OnSetFontSize
O manipulador de eventos do controle "SetFontSize" (altera a propriedade OBJPROP_FONTSIZE).
virtual bool OnSetFontSize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3913

Biblioteca Padro

OnCreate
O manipulador de eventos do controle "Create".
virtual bool OnCreate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3914

Biblioteca Padro

OnShow
O manipulador de eventos do controle "Show".
virtual bool OnShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3915

Biblioteca Padro

OnHide
O manipulador de eventos do controle "Hide".
virtual bool OnHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3916

Biblioteca Padro

OnMove
O manipulador de eventos do controle "Move".
virtual bool OnMove()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3917

Biblioteca Padro

OnResize
O manipulador de eventos do controle "Resize" .
virtual bool OnResize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3918

Biblioteca Padro

OnMouseDown
O manipulador de eventos do controle "MouseDown".
virtual bool OnMouseDown()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "MouseDown" ocorre quando o boto esquerdo do mouse pressionado no controle.

2000-2015, MetaQuotes Software Corp.

3919

Biblioteca Padro

OnMouseUp
O manipulador de eventos do controle "MouseUp" (boto esquerdo do mouse liberando o boto).
virtual bool OnMouseUp()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "MouseUp" ocorre quando o boto esquerdo do mouse liberado no controle.

2000-2015, MetaQuotes Software Corp.

3920

Biblioteca Padro

CEdit
CEdit uma classe do controle simples, baseado no objeto de grfico "Edit" .

Descrio
Classe CEdit destinada a criao de controles, onde o usurio pode inserir texto.

Declarao
class CEdit : public CWndObj

Ttulo
#include <Controls\Edit.mqh>

Mtodos de classe
Create
Create

Criar controle

Propriedades
ReadOnly

Obtm/Define a propriedade "ReadOnly"

TextAlign

Obtm/Define a propriedade "TextAlign"

Manipuladores de eventos de objetos Grfico


OnObjectEndEdit

The CHARTEVENT_OBJECT_ENDEDIT
handler (virtual)

event

Propriedades que alteram manipuladores de


eventos
OnSetText

Manipulador de eventos "SetText"

OnSetColor

Manipulador de eventos "SetColor"

OnSetColorBackground

Manipulador de eventos "SetColorBackground"

OnSetColorBorder

Manipulador de eventos "SetColorBorder"

OnSetFont

Manipulador de eventos "SetFont"

OnSetFontSize

Manipulador de eventos "SetFontSize"

OnSetZOrder

Manipulador de evento "SetZOrder"

Manipuladores de eventos internos


OnCreate

Manipulador de evento "Create"

OnShow

Manipulador de evento "Show"

OnHide

Manipulador de evento "Hide"

OnMove

Manipulador de evento "Move"

2000-2015, MetaQuotes Software Corp.

3921

Biblioteca Padro

OnResize

Manipulador de evento "Resize"

OnChange

Manipulador de eventos "Change"

OnClick

Manipulador de eventos "Clique"

2000-2015, MetaQuotes Software Corp.

3922

Biblioteca Padro

Create
Cria novo controle CEdit.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3923

Biblioteca Padro

ReadOnly (Mtodo Get)


Obtm a propriedade do controle "ReadOnly".
bool ReadOnly()

Valor de retorno
O valor da propriedade "ReadOnly".

ReadOnly (Mtodo Set)


Define o valor da propriedade do controle "ReadOnly".
bool ReadOnly(
const bool flag

// new values

Parmetros
flag
[in] O novo valor da propriedade "ReadOnly".
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3924

Biblioteca Padro

TextAlign (Mtodo Get)


Obtm o valor da propriedade do controle "TextAlign" (Alinhamento do modo texto).
ENUM_ALIGN_MODE TextAlign() const

Valor de retorno
Valor da propriedade do controle "TextAlign".

TextAlign (Mtodo Set)


Define novo valor da propriedade do controle "TextAlign" (Alinhamento do modo texto).
bool TextAlign(
ENUM_ALIGN_MODE align

// new value

Parmetros
align
[in] O novo valor da propriedade "TextAlign".
Valor de retorno
verdadeiro se obteve xito, falso se a propriedade no foi alterada.

2000-2015, MetaQuotes Software Corp.

3925

Biblioteca Padro

OnObjectEndEdit
O manipulador de evento CHARTEVENT_OBJECT_ENDEDIT.
virtual bool OnObjectEndEdit()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3926

Biblioteca Padro

OnSetText
O manipulador de eventos do controle "SetText" (altera a propriedade OBJPROP_TEXT).
virtual bool OnSetText()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3927

Biblioteca Padro

OnSetColor
O manipulador de eventos do controle "SetColor" (altera a propriedade OBJPROP_COLOR).
virtual bool OnSetColor()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3928

Biblioteca Padro

OnSetColorBackground
O manipulador de eventos
OBJPROP_BGCOLOR).

do

controle

"SetColorBackground"

virtual bool OnSetColorBackground()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

(alterao

da

propriedade

3929

Biblioteca Padro

OnSetColorBorder
O
manipulador
de
eventos
OBJPROP_BORDER_COLOR).

do

controle

"SetColorBorder"

virtual bool OnSetColorBackground()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

(altera

propriedade

3930

Biblioteca Padro

OnSetFont
O manipulador de eventos do controle "SetFont" (altera propriedade OBJPROP_FONT.
virtual bool OnSetFont()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3931

Biblioteca Padro

OnSetFontSize
O manipulador de eventos do controle "SetFontSize" (altera a propriedade OBJPROP_FONTSIZE).
virtual bool OnSetFontSize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3932

Biblioteca Padro

OnSetZOrder
O manipulador de eventos do controle "SetZOrder" (alterao da propriedade OBJPROP_ZORDER).
virtual bool OnSetZOrder()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3933

Biblioteca Padro

OnCreate
O manipulador de eventos do controle "Create".
virtual bool OnCreate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3934

Biblioteca Padro

OnShow
O manipulador de eventos do controle "Show".
virtual bool OnShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3935

Biblioteca Padro

OnHide
O manipulador de eventos do controle "Hide".
virtual bool OnHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3936

Biblioteca Padro

OnMove
O manipulador de eventos do controle "Move".
virtual bool OnMove()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3937

Biblioteca Padro

OnResize
O manipulador de eventos do controle "Resize" .
virtual bool OnResize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3938

Biblioteca Padro

OnChange
O manipulador de eventos do controle "Change".
virtual bool OnChange()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3939

Biblioteca Padro

OnClick
O manipulador de eventos do controle "Click" (clique do boto esquerdo do mouse) .
virtual bool OnClick()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3940

Biblioteca Padro

CPanel
CPanel uma classe de controle simples, baseado no objeto grfico "Rectangle label".

Descrio
A classe CPanel destina-se a combinar os controles com funes semelhantes no grupo.

Declarao
class CPanel : public CWndObj

Ttulo
#include <Controls\Panel.mqh>

Mtodos de classe
Create
Create

Criar controle

Propriedades do objeto de grfico


BorderType

Obtm a propriedade
"BorderType"

do

objeto

grfico

Manipuladores de eventos de objetos Grfico


OnSetText

Manipulador de eventos "SetText"

OnSetColorBackground

Manipulador de eventos "SetColorBackground"

OnSetColorBorder

Manipulador de eventos "SetColorBorder"

Manipuladores de eventos internos


OnCreate

Manipulador de evento "Create"

OnShow

Manipulador de evento "Show"

OnHide

Manipulador de evento "Hide"

OnMove

Manipulador de evento "Move"

OnResize

Manipulador de evento "Resize"

OnChange

Manipulador de eventos "Change"

2000-2015, MetaQuotes Software Corp.

3941

Biblioteca Padro

Create
Cria novo controle CPanel.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3942

Biblioteca Padro

BorderType (Mtodo Get)


Obtm a propriedade "BorderType" do objeto grfico.
ENUM_BORDER_TYPE BorderType()

Valor de retorno
O valor da propriedade "BorderType".

BorderType (Mtodo Set)


Define novo valor da propriedade "BorderType" do objeto grfico.
bool BorderType(
const ENUM_BORDER_TYPE type

// value

Parmetros
type
[in] O novo valor da propriedade "BorderType".
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3943

Biblioteca Padro

OnSetText
O manipulador de eventos do controle "SetText" (altera a propriedade OBJPROP_TEXT).
virtual bool OnSetText()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3944

Biblioteca Padro

OnSetColorBackground
O manipulador de eventos
OBJPROP_BGCOLOR).

do

controle

"SetColorBackground"

virtual bool OnSetColorBackground()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

(alterao

da

propriedade

3945

Biblioteca Padro

OnSetColorBorder
O
manipulador
de
eventos
OBJPROP_BORDER_COLOR).

do

controle

"SetColorBorder"

virtual bool OnSetColorBackground()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

(altera

propriedade

3946

Biblioteca Padro

OnCreate
O manipulador de eventos do controle "Create".
virtual bool OnCreate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3947

Biblioteca Padro

OnShow
O manipulador de eventos do controle "Show".
virtual bool OnShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3948

Biblioteca Padro

OnHide
O manipulador de eventos do controle "Hide".
virtual bool OnHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3949

Biblioteca Padro

OnMove
O manipulador de eventos do controle "Move".
virtual bool OnMove()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3950

Biblioteca Padro

OnResize
O manipulador de eventos do controle "Resize" .
virtual bool OnResize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3951

Biblioteca Padro

OnChange
O manipulador de eventos do controle "Change".
virtual bool OnChange()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3952

Biblioteca Padro

CPicture
CPicture uma classe do controle simples, baseado no objeto grfico "Bitmap Label".

Descrio
A classe CPicture destina-se a criao de imagens grficas simples.

Declarao
class CPicture : public CWndObj

Ttulo
#include <Controls\Picture.mqh>

Mtodos de classe
Create
Create

Criar controle

Propriedades do objeto de grfico


Border

Obtm/Define a largura da borda do objeto


grfico

BmpName

Obtm/Define o nome de arquivo bmp do


controle

Eventos internos
OnCreate

Manipulador de evento "Create"

OnShow

Manipulador de evento "Show"

OnHide

Manipulador de evento "Hide"

OnMove

Manipulador de evento "Move"

OnChange

Manipulador de eventos "Change"

2000-2015, MetaQuotes Software Corp.

3953

Biblioteca Padro

Create
Cria novo controle CPicture.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3954

Biblioteca Padro

Border (Mtodo Get)


Obtm a propriedade do controle "Border" (largura da borda).
int Border() const

Valor de retorno
A propriedade "Border" .

Border (Mtodo Set)


Define a propriedade do controle "Border" (largura da borda).
bool Border(
const int value

// new value

Parmetros
value
[in] O novo valor da propriedade "Border".
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3955

Biblioteca Padro

BmpName (Mtodo Get)


Obtm o nome de arquivo bmp do controle.
string BmpName() const

Valor de retorno
Nome de arquivo bmp do controle.

BmpName (Mtodo Set)


Define o nome de arquivo bmp do controle.
bool BmpName(
const string name

// file name

Parmetros
name
[in] Nome de arquivo bmp do controle.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3956

Biblioteca Padro

OnCreate
O manipulador de eventos do controle "Create".
virtual bool OnCreate()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3957

Biblioteca Padro

OnShow
O manipulador de eventos do controle "Show".
virtual bool OnShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3958

Biblioteca Padro

OnHide
O manipulador de eventos do controle "Hide".
virtual bool OnHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3959

Biblioteca Padro

OnMove
O manipulador de eventos do controle "Move".
virtual bool OnMove()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3960

Biblioteca Padro

OnChange
O manipulador de eventos do controle "Change".
virtual bool OnChange()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3961

Biblioteca Padro

CScroll
CScroll uma classe base para a criao de barras de rolagem.

Descrio
A classe CScroll um controle complexo (com controles dependentes), contm a funcionalidade bsica
para criao de barras de rolagem. A prpria classe de base no utilizada como um controle
separado, dois dos seus herdeiros (as classes CScrollV e CScrollH) so utilizados como controles.

Declarao
class CScroll : public CWndContainer

Ttulo
#include <Controls\Scrolls.mqh>

Mtodos de classe
Create
Create

Criar controle

Manipuladores de eventos de objetos Grfico


OnEvent

Manipulador de eventos de todos os eventos de


grfico

Propriedades
MinPos

Obtm/Define a posio mnima

MaxPos

Obtm/Define a posio mxima

CurrPos

Obtm/Define a posio atual

Criao de controles dependentes


CreateBack

Cria boto de segundo plano (fundo)

CreateInc

Cria boto de aumentar a barra de rolagem

CreateDec

Cria boto de diminuir a barra de rolagem

CreateThumb

Cria boto polegar (pode ser arrastado) da


barra de rolagem

Manipuladores
dependentes

de

controle

de

eventos

OnClickInc

Manipulador de eventos, utilizados para a


manipulao de eventos de boto de aumentar

OnClickDec

Manipulador de eventos, utilizados para a


manipulao de eventos de boto de diminuir

Manipuladores de eventos internos

2000-2015, MetaQuotes Software Corp.

3962

Biblioteca Padro

OnShow

Manipulador de evento "Create"

OnHide

Manipulador de evento "Hide"

OnChangePos

Manipulador de evento "ChangePosition"

Manipuladores para arrastar objetos


OnThumbDragStart

Manipulador de evento "ThumbDragStart"

OnThumbDragProcess

Manipulador de evento "ThumbDragProcess"

OnThumbDragEnd

Manipulador de evento "ThumbDragEnd"

Posio
CalcPos

Obtm posio da barra de rolagem pela


coordenada

2000-2015, MetaQuotes Software Corp.

3963

Biblioteca Padro

Create
Cria novo controle CScroll.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3964

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3965

Biblioteca Padro

MinPos (Mtodo Get)


Obtm o valor da "MinPos" (posio mnima) do controle CScroll.
int MinPos() const

Valor de retorno
Novo valor da propriedade "MinPos".

MinPos (Mtodo Set)


Define o valor de "MinPos" (posio mnima) do controle CScroll.
void MinPos(
const int value

// new value

Parmetros
value
[in] Novo valor da propriedade "MinPos".
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3966

Biblioteca Padro

MaxPos (Get method)


Obtm o valor da "MaxPos" (posio mxima) do controle CScroll.
int MaxPos() const

Valor de retorno
Novo valor da propriedade "MaxPos".

MaxPos (Set method)


Define o valor da "MaxPos" (posio mxima) do controle CScroll.
void MaxPos(
const int value

// new value

Parmetros
value
[in] O novo valor da propriedade "MaxPos".
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3967

Biblioteca Padro

CurrPos (Get method)


Obtm o valor da "CurrPos" (posio atual) do controle CScroll.
int CurrPos() const

Valor de retorno
Novo valor da propriedade "CurrPos".

CurrPos (Set method)


Define o valor de "CurrPos" (posio atual) do controle CScroll.
void CurrPos(
const int value

// new value

Parmetros
value
[in] O novo valor da propriedade "CurrPos".
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

3968

Biblioteca Padro

CreateBack
Cria boto de segundo plano (fundo) do controle CScroll.
virtual bool CreateBack()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3969

Biblioteca Padro

CreateInc
Cria boto de aumentar do controle CScroll.
virtual bool CreateInc()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3970

Biblioteca Padro

CreateDec
Cria boto de diminuir do controle CScroll.
virtual bool CreateDec()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3971

Biblioteca Padro

CreateThumb
Cria boto polegar (pode ser arrastado) do controle CScroll.
virtual bool CreateThumb()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3972

Biblioteca Padro

OnClickInc
O manipulador de eventos do controle "ClickInc" (clique no boto esquerdo do mouse sobre o boto de
aumentar).
virtual bool OnClickInc()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3973

Biblioteca Padro

OnClickDec
O manipulador de eventos do controle "ClickDec" (clique no boto esquerdo do mouse sobre o boto de
diminuir).
virtual bool OnClickDec()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3974

Biblioteca Padro

OnShow
O manipulador de eventos do controle "Show".
virtual bool OnShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3975

Biblioteca Padro

OnHide
O manipulador de eventos do controle "Hide".
virtual bool OnHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3976

Biblioteca Padro

OnChangePos
O manipulador de eventos do controle "ChangePos" (mudana de posio).
virtual bool OnChangePos()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

3977

Biblioteca Padro

OnThumbDragStart
O manipulador de eventos do controle "ThumbDragStart" (incio para arrastar).
virtual bool OnThumbDragStart()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "ThumbDragStart" ocorre no incio da operao de arrastar.

2000-2015, MetaQuotes Software Corp.

3978

Biblioteca Padro

OnThumbDragProcess
O manipulador de eventos do controle "ThumbDragProcess".
virtual bool OnThumbDragProcess(
const int x,

// x coordinate

const int y

// y coordinate

Parmetros
x
[in] Coordenada X atual do cursor de mouse.
y
[in] Coordenada Y atual do cursor do mouse.
Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O "ThumbDragProcess" ocorre quando o controle da barra de rolagem (boto polegar) movido.

2000-2015, MetaQuotes Software Corp.

3979

Biblioteca Padro

OnThumbDragEnd
O manipulador de eventos do controle "ThumbDragEnd" (finalizado o processo de arrastar).
virtual bool OnThumbDragEnd()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O "ThumbDragEnd" ocorre quando a operao de arrastar do controle da barra de rolagem (boto
polegar) estiver concluda.

2000-2015, MetaQuotes Software Corp.

3980

Biblioteca Padro

CalcPos
Obtm posio da barra de rolagem pela coordenada.
virtual int CalcPos(
const int

coord

// coordinate

Parmetros
coord
[in] Barra de rolagem de coordenadas.
Valor de retorno
Posio da barra de rolagem.

2000-2015, MetaQuotes Software Corp.

3981

Biblioteca Padro

CScrollV
CScrollV uma classe de controle complexa da "barra de rolagem vertical".

Descrio
Classe CScrollV destina-se a criao de barras de rolagem vertical.

Declarao
class CScrollV : public CScroll

Ttulo
#include <Controls\Scrolls.mqh>

Mtodos de classe
Controles dependentes
CreateInc

Cria boto de aumentar a barra de rolagem

CreateDec

Cria boto de diminuir a barra de rolagem

CreateThumb

Cria o boto polegar da barra de rolagem (pode


ser arrastado)

Manipuladores de eventos internos


OnResize

Manipulador de evento "Resize"

OnChangePos

Manipulador de evento "ChangePosition"

Manipulador de eventos para arrastar


OnThumbDragStart

Manipulador de evento "ThumbDragStart"

OnThumbDragProcess

Manipulador de evento "ThumbDragProcess"

OnThumbDragEnd

Manipulador de evento "ThumbDragEnd"

Posio
CalcPos

Obtm posio da barra de rolagem pela


coordenada

2000-2015, MetaQuotes Software Corp.

3982

Biblioteca Padro

CreateInc
Cria boto de aumentar do controle.
virtual bool CreateInc()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3983

Biblioteca Padro

CreateDec
Cria boto de diminuir do controle.
virtual bool CreateDec()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3984

Biblioteca Padro

CreateThumb
Cria boto polegar (pode ser arrastado) do controle.
virtual bool CreateThumb()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3985

Biblioteca Padro

OnResize
O manipulador de eventos do controle "Resize" .
virtual bool OnResize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3986

Biblioteca Padro

OnChangePos
O manipulador de eventos do controle "ChangePos" (mudana de posio).
virtual bool OnChangePos()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3987

Biblioteca Padro

OnThumbDragStart
O manipulador de eventos do controle "ThumbDragStart" (incio para arrastar).
virtual bool OnThumbDragStart()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "ThumbDragStart" ocorre no incio da operao de arrastar.

2000-2015, MetaQuotes Software Corp.

3988

Biblioteca Padro

OnThumbDragProcess
O manipulador de eventos do controle "ThumbDragProcess".
virtual bool OnThumbDragProcess(
const int x,

// x coordinate

const int y

// y coordinate

Parmetros
x
[in] Coordenada X atual do cursor de mouse.
y
[in] Coordenada Y atual do cursor do mouse.
Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O "ThumbDragProcess" ocorre quando o controle da barra de rolagem (boto polegar) movido.

2000-2015, MetaQuotes Software Corp.

3989

Biblioteca Padro

OnThumbDragEnd
O manipulador de eventos do controle "ThumbDragEnd" (finalizado o processo de arrastar).
virtual bool OnThumbDragEnd()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O "ThumbDragEnd" ocorre quando a operao de arrastar do controle da barra de rolagem (boto
polegar) estiver concluda.

2000-2015, MetaQuotes Software Corp.

3990

Biblioteca Padro

CalcPos
Obtm posio da barra de rolagem pela coordenada.
virtual int CalcPos(
const int

coord

// coordinate

Parmetros
coord
[in] Barra de rolagem de coordenadas.
Valor de retorno
Posio da barra de rolagem.

2000-2015, MetaQuotes Software Corp.

3991

Biblioteca Padro

CScrollH
CScrollH uma classe de controle complexa da "barra de rolagem horizontal" .

Descrio
CScrollH destina-se a criao de barras de rolagem horizontal.

Declarao
class CScrollH : public CScroll

Ttulo
#include <Controls\Scrolls.mqh>

Mtodos de classe
Controles dependentes
CreateInc

Cria boto de aumentar a barra de rolagem

CreateDec

Cria boto de diminuir a barra de rolagem

CreateThumb

Cria o boto polegar da barra de rolagem (pode


ser arrastado)

Manipuladores de eventos internos


OnResize

Manipulador de evento "Resize"

OnChangePos

Manipulador de evento "ChangePosition"

Manipulador de eventos para arrastar


OnThumbDragStart

Manipulador de evento "ThumbDragStart"

OnThumbDragProcess

Manipulador de evento "ThumbDragProcess"

OnThumbDragEnd

Manipulador de evento "ThumbDragEnd"

Posio
CalcPos

Obtm posio da barra de rolagem pela


coordenada

2000-2015, MetaQuotes Software Corp.

3992

Biblioteca Padro

CreateInc
Cria boto de aumentar do controle.
virtual bool CreateInc()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3993

Biblioteca Padro

CreateDec
Cria boto de diminuir do controle.
virtual bool CreateDec()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3994

Biblioteca Padro

CreateThumb
Cria boto polegar (pode ser arrastado) do controle.
virtual bool CreateThumb()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

3995

Biblioteca Padro

OnResize
O manipulador de eventos do controle "Resize" .
virtual bool OnResize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3996

Biblioteca Padro

OnChangePos
O manipulador de eventos do controle "ChangePos" (mudana de posio).
virtual bool OnChangePos()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

3997

Biblioteca Padro

OnThumbDragStart
O manipulador de eventos do controle "ThumbDragStart" (incio para arrastar).
virtual bool OnThumbDragStart()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "ThumbDragStart" ocorre no incio da operao de arrastar.

2000-2015, MetaQuotes Software Corp.

3998

Biblioteca Padro

OnThumbDragProcess
O manipulador de eventos do controle "ThumbDragProcess".
virtual bool OnThumbDragProcess(
const int x,

// x coordinate

const int y

// y coordinate

Parmetros
x
[in] Coordenada X atual do cursor de mouse.
y
[in] Coordenada Y atual do cursor do mouse.
Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O "ThumbDragProcess" ocorre quando o controle da barra de rolagem (boto polegar) movido.

2000-2015, MetaQuotes Software Corp.

3999

Biblioteca Padro

OnThumbDragEnd
O manipulador de eventos do controle "ThumbDragEnd" (finalizado o processo de arrastar).
virtual bool OnThumbDragEnd()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O "ThumbDragEnd" ocorre quando a operao de arrastar do controle da barra de rolagem (boto
polegar) estiver concluda.

2000-2015, MetaQuotes Software Corp.

4000

Biblioteca Padro

CalcPos
Obtm posio da barra de rolagem pela coordenada.
virtual int CalcPos(
const int

coord

// coordinate

Parmetros
coord
[in] Barra de rolagem de coordenadas.
Valor de retorno
Posio da barra de rolagem.

2000-2015, MetaQuotes Software Corp.

4001

Biblioteca Padro

CWndClient
CWndClient uma classe de controle complexo da "rea de cliente" (com controles dependentes).
uma classe base para criao de rea de barras de rolagem.

Descrio
CWndClient implementa a funcionalidade para criao de rea de barras de rolagem.

Declarao
class CWndClient : public CWndContainer

Ttulo
#include <Controls\WndClient.mqh>

Mtodos de classe
Create
Create

Criar controle

Manipulador de eventos de grfico


OnEvent

Manipulador de eventos de todos os eventos de


grfico

Propriedades
ColorBackground

Define a cor do segundo plano (fundo)

ColorBorder

Define a cor da borda

BorderType

Define o tipo da borda

Configurao
VScrolled

Obtm/define um flag, indicando que a barra


de rolagem vertical est sendo usada

HScrolled

Obtm/Define o flag, indicando que a barra de


rolagem horizontal est sendo usada

Controles dependentes
CreateBack

Cria segundo plano (fundo) para a barra de


rolagem

CreateScrollV

Cria a barra de rolagem vertical

CreateScrollH

Cria a barra de rolagem horizontal

Manipuladores de eventos internos


OnResize
Manipuladores

Manipulador de evento "Resize"


de

controle

de

eventos

2000-2015, MetaQuotes Software Corp.

4002

Biblioteca Padro

dependentes
OnVScrollShow

Manipulador de eventos "Show"


dependente do controle VScroll

(virtual),

OnVScrollHide

Manipulador de eventos "Hide"


dependente do controle VScroll

(virtual),

OnHScrollShow

Manipulador de eventos "Show"


dependente do controle HScroll

(virtual),

OnHScrollHide

Manipulador de eventos "Hide"


dependente do controle HScroll

(virtual),

OnScrollLineDown

Manipulador
"ScrollLineDown"
controle VScroll

OnScrollLineUp

Manipulador de eventos "ScrollLineUp" (virtual),


dependente do controle VScroll

OnScrollLineLeft

Manipulador
de
"ScrollLineLeft" (virtual),
controle de HScroll

eventos
dependente do

OnScrollLineRight

Manipulador
de
"ScrollLineRight" (virtual),
controle de HScroll

eventos
dependente do

de
(virtual),

eventos
dependente do

Resize
Rebound

Define novas coordenadas do controle usando


coordenadas de classe CRect

2000-2015, MetaQuotes Software Corp.

4003

Biblioteca Padro

Create
Cria novo controle CWndClient.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4004

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4005

Biblioteca Padro

ColorBackground
Define a cor do segundo plano (fundo) do controle.
bool ColorBackground(
const color value

// new color

Parmetros
value
[in] Nova cor do segundo plano (fundo) do controle.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4006

Biblioteca Padro

ColorBorder
Definir a cor da borda do controle.
bool ColorBorder(
const color value

// color

Parmetros
value
[in] Nova cor da borda do controle.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4007

Biblioteca Padro

BorderType
Define o tipo da borda do controle.
bool BorderType(
const ENUM_BORDER_TYPE type

// border type

Parmetros
type
[in] Tipo da borda do controle.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4008

Biblioteca Padro

VScrolled (Mtodo Get)


Obtm um flag, indicando que barra de rolagem vertical est sendo usada.
bool VScrolled()

Valor de retorno
verdadeiro, se barra de rolagem vertical est sendo usada, caso contrrio falso.

VScrolled (Mtodo Set)


Define um flag, indicando que barra de rolagem vertical est sendo usada
bool VScrolled(
const bool flag

// flag

Parmetros
flag
[in] Flag.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4009

Biblioteca Padro

HScrolled (Mtodo Get)


Obtm um flag, indicando que barra de rolagem horizontal est sendo usada.
bool HScrolled()

Valor de retorno
verdadeiro, se barra de rolagem horizontal est sendo usada, caso contrrio falso.

HScrolled (Mtodo Set)


Define um flag, indicando que barra de rolagem horizontal est sendo usada
bool HScrolled(
const bool flag

// flag

Parmetros
flag
[in] Flag.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4010

Biblioteca Padro

CreateBack
Cria boto de segundo plano (fundo) do controle.
virtual bool CreateBack()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4011

Biblioteca Padro

CreateScrollV
Cria barra de rolagem vertical.
virtual bool CreateScrollV()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4012

Biblioteca Padro

CreateScrollH
Cria barra de rolagem horizontal.
virtual bool CreateScrollH()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4013

Biblioteca Padro

OnResize
O manipulador de eventos do controle "Resize" .
virtual bool OnResize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4014

Biblioteca Padro

OnVScrollShow
O manipulador de eventos do controle "VScrollShow" (barra de rolagem vertical exibida).
virtual bool OnVScrollShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

4015

Biblioteca Padro

OnVScrollHide
O manipulador de eventos do controle "VScrollHide" (barra de rolagem vertical oculta).
virtual bool OnVScrollHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

4016

Biblioteca Padro

OnHScrollShow
O manipulador de eventos do controle "HScrollShow" (barra de rolagem horizontal show).
virtual bool OnHScrollShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

4017

Biblioteca Padro

OnHScrollHide
O manipulador de eventos do controle "HScrollHide" (barra de rolagem vertical esconder).
virtual bool OnHScrollHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

4018

Biblioteca Padro

OnScrollLineDown
O manipulador de eventos do controle "ScrollLineDown" (linha de rolagem vertical para baixo).
virtual bool OnScrollLineDown()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

4019

Biblioteca Padro

OnScrollLineUp
O manipulador de eventos do controle "ScrollLineUp" (rolagem vertical linha para cima) .
virtual bool OnScrollLineUp()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

4020

Biblioteca Padro

OnScrollLineLeft
O manipulador de eventos do controle "ScrollLineLeft" (rolagem horizontal da linha a esquerda).
virtual bool OnScrollLineLeft()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

4021

Biblioteca Padro

OnScrollLineRight
O manipulador de evento do controle "ScrollLineRight" (rolagem horizontal da linha a direita).
virtual bool OnScrollLineRight()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O mtodo da classe base no faz nada e sempre retorna verdadeiro.

2000-2015, MetaQuotes Software Corp.

4022

Biblioteca Padro

ReBound
Define novas coordenadas do controle usando as coordenadas da classe CRect.
void ReBound(
const & CRect rect

// CRect class

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

4023

Biblioteca Padro

CListView
CListView uma classe de controle complexa (com controles dependentes).

Descrio
A classe CListView encapsula a funcionalidade do controle de lista.

Declarao
class CListView : public CWndClient

Ttulo
#include <Controls\ListView.mqh>

Mtodos de classe
Create
Create

Criar controle

Manipuladores de eventos do grfico


OnEvent

Manipulador de eventos de todos os eventos de


grfico

Configurao
TotalView

Define o nmero de itens, exibido no controle

Adicionar/Deletar
AddItem

Adiciona um item

Dados
Select

Seleciona atual item da lista pelo ndice

SelectByText

Seleciona item da lista atual pelo texto

SelectByValue

Seleciona atual item da lista pelo valor

Somente leitura de dados


Value

Obtm o valor do item atual da lista

Controles dependentes
CreateRow

Cria uma linha da ListView

Manipuladores de eventos internos


OnResize
Manipuladores
dependentes
OnVScrollShow

Manipulador de eventos "Resize" (virtual)


de

controle

de

eventos

Manipulador de

2000-2015, MetaQuotes Software Corp.

eventos

"Show"

(virtual),

4024

Biblioteca Padro

dependente do controle VScroll


OnVScrollHide

Manipulador de eventos "Hide"


dependente do controle VScroll

OnScrollLineDown

Manipulador
"ScrollLineDown"
controle VScroll

OnScrollLineUp

Manipulador de eventos "ScrollLineUp" (virtual),


dependente do controle VScroll

OnItemClick

Manipulador de eventos "ItemClick" (virtual)

de
(virtual),

(virtual),

eventos
dependente do

Redraw
Redraw

edesenha o controle

RowState

Define o estado da linha determinada

CheckView

Verifica a visibilidade da linha determinada

2000-2015, MetaQuotes Software Corp.

4025

Biblioteca Padro

Create
Cria novo controle CListView.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4026

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4027

Biblioteca Padro

TotalView
Define o nmero de itens, exibido no controle.
bool TotalView(
const int value

// items shown

Parmetros
value
[in] O nmero de itens, exibido no controle.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.
Observao
O nmero de itens exibidos pode ser determinado apenas uma vez.

2000-2015, MetaQuotes Software Corp.

4028

Biblioteca Padro

AddItem
Adiciona um item ao controle.
bool AddItem(
const string item,

// text

const long

// value

value

Parmetros
item
[in] Texto.
value
[in] Valor do tipo long.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4029

Biblioteca Padro

Select
Seleciona atual item da lista pelo ndice.
bool Select(
const int index

// index

Parmetros
index
[in] ndice do item.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4030

Biblioteca Padro

SelectByText
Seleciona atual item da lista pelo texto.
bool SelectByText(
const string text

// text

Parmetros
text
[in] Texto.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4031

Biblioteca Padro

SelectByValue
Seleciona atual item da lista pelo valor.
bool SelectByValue(
const long value

// value

Parmetros
value
[in] Valor do tipo long.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4032

Biblioteca Padro

Value
Obtm o valor do item atual da lista.
long Value()

Valor de retorno
O valor do item atual da lista.

2000-2015, MetaQuotes Software Corp.

4033

Biblioteca Padro

CreateRow
Cria uma linha de controle "CListView".
bool CreateRow(
const int index

// index

Parmetros
index
[in] ndice do item.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4034

Biblioteca Padro

OnResize
O manipulador de eventos do controle "Resize" .
virtual bool OnResize()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4035

Biblioteca Padro

OnVScrollShow
O manipulador de eventos do controle "VScrollShow" (barra de rolagem vertical exibida).
virtual bool OnVScrollShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4036

Biblioteca Padro

OnVScrollHide
O manipulador de eventos do controle "VScrollHide" (barra de rolagem vertical oculta).
virtual bool OnVScrollHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4037

Biblioteca Padro

OnScrollLineDown
O manipulador de eventos do controle "ScrollLineDown" (linha de rolagem vertical para baixo).
virtual bool OnScrollLineDown()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4038

Biblioteca Padro

OnScrollLineUp
O manipulador de eventos do controle "ScrollLineUp" (rolagem vertical linha para cima) .
virtual bool OnScrollLineUp()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4039

Biblioteca Padro

OnItemClick
O manipulador de eventos do controle "ItemClick" (boto do mouse clica numa linha).
virtual bool OnItemClick()
const int

index

// row index

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4040

Biblioteca Padro

Redraw
Redesenha o controle.
bool Redraw()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4041

Biblioteca Padro

RowState
Define o estado da linha determinada.
bool RowState(
const int

index

const bool select

// index
// state

Parmetros
index
[in] ndice da linha.
select
[in] Estado da linha.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4042

Biblioteca Padro

CheckView
Verifica a visibilidade da linha determinada.
bool CheckView()

Valor de retorno
verdadeiro, se a linha selecionada visvel, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4043

Biblioteca Padro

CComboBox
CComboBox uma classe do controle complexa (com controles dependentes).

Descrio
ComboBox constituda por uma caixa de listagem, combinado com um controle esttico destinada a
seleo. A poro da caixa de listagem do controle pode ser suspensa quando o usurio seleciona o
comando ao lado do controle.

Declarao
class CComboBox : public CWndContainer

Ttulo
#include <Controls\ComboBox.mqh>

Mtodos de classe
Create
Create

Criar controle

Manipuladores de eventos do grfico


OnEvent

Manipulador de eventos de todos os eventos de


grfico

Add
AddItem

Adiciona um item

Configurao
ListViewItems

Define o nmero de itens, exibido no controle

Dados
Select

Seleciona atual item da lista pelo ndice

SelectByText

Seleciona item da lista atual pelo texto

SelectByValue

Seleciona atual item da lista pelo valor

Somente leitura de dados


Value

Obtm o valor do atual item da lista

Controles dependentes
CreateEdit

Cria um controle dependente (editar)

CreateButton

Cria controle dependente (boto)

CreateList

Cria controle dependente (visualizar lista)

Manipuladores
dependentes

de

controle

de

eventos

2000-2015, MetaQuotes Software Corp.

4044

Biblioteca Padro

OnClickEdit

Manipulador de eventos "ClickEdit" (virtual)

OnClickButton

Manipulador de eventos "ClickButton" (virtual)

OnChangeList

Manipulador de eventos "Changelist" (virtual)

Exibir/Ocultar
ListShow

Exibe a lista de itens

ListHide

Oculta a lista de itens

2000-2015, MetaQuotes Software Corp.

4045

Biblioteca Padro

Create
Cria novo controle CComboBox.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4046

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4047

Biblioteca Padro

AddItem
Adiciona um item ao controle.
bool AddItem(
const string item,

// text

const long

// value

value

Parmetros
item
[in] Texto.
value=0
[in] Valor do tipo long.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4048

Biblioteca Padro

ListViewItems
Define o nmero de itens da lista do controle CComboBox.
void ListViewItems(
const int

value

// number of list items

Parmetros
value
[in] Nmero de itens da lista.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4049

Biblioteca Padro

Select
Seleciona atual item da lista pelo ndice.
bool Select(
const int index

// index

Parmetros
index
[in] ndice do item.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4050

Biblioteca Padro

SelectByText
Seleciona atual item da lista pelo texto.
bool SelectByText(
const string text

// text

Parmetros
text
[in] Texto do item.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4051

Biblioteca Padro

SelectByValue
Seleciona atual item da lista pelo valor.
bool SelectByValue(
const long value

// value

Parmetros
value
[in] Valor do tipo long.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4052

Biblioteca Padro

Value
Obtm o valor do item da lista atual.
long Value()

Valor de retorno
O valor do item da lista atual.

2000-2015, MetaQuotes Software Corp.

4053

Biblioteca Padro

CreateEdit
Cria controle dependente (editar) do controle.
virtual bool CreateEdit()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4054

Biblioteca Padro

CreateButton
Cria controle dependente (boto).
virtual bool CreateButton()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4055

Biblioteca Padro

CreateList
Cria controle dependente (ver lista).
virtual bool CreateList()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4056

Biblioteca Padro

OnClickEdit
O manipulador de enventos do controle "ClickEdit" (clique do mouse sobre o editar).
virtual bool OnClickEdit()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4057

Biblioteca Padro

OnClickButton
O manipulador de eventos do controle "ClickButton" (clique do mouse sobre o boto)
virtual bool OnClickButton()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4058

Biblioteca Padro

OnChangeList
O manipulador de eventos "ChangeList" (alterao da lista) .
virtual bool OnChangeList()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4059

Biblioteca Padro

ListShow
Exibe a lista de itens.
virtual bool ListShow()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4060

Biblioteca Padro

ListHide
Oculta a lista de itens.
virtual bool ListHide()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4061

Biblioteca Padro

CCheckBox
CCheckBox uma classe de controle complexa.

Descrio
A classe de controle CCheckBox exibe uma caixa de seleo que permite ao usurio selecionar uma
condio verdadeira ou falsa.

Declarao
class CCheckBox : public CWndContainer

Ttulo
#include <Controls\CheckBox.mqh>

Mtodos de classe
Create
Create

Criar controle

Manipuladores de eventos do grfico


OnEvent

Manipulador de eventos de todos os eventos de


grfico

Propriedades
Text

Obtm/Define a etiqueta de texto associado


com o controle

Color

Obtm/Define a cor da etiqueta de texto


associado com o controle

State
Checked

Obtm/Define um valor indicando se o controle


est verificado

Dados
Value

Obtm/Define o valor associado com o controle

Controles dependentes
CreateButton

Cria controle dependente (boto)

CreateLabel

Cria controle dependente (etiqueta)

Manipuladores
dependentes

de

controle

de

eventos

ClickButton

Manipulador de eventos "ClickButton" (virtual)

ClickLabel

Manipulador de eventos "ClickLabel" (virtual)

2000-2015, MetaQuotes Software Corp.

4062

Biblioteca Padro

2000-2015, MetaQuotes Software Corp.

4063

Biblioteca Padro

Create
Cria novo controle CCheckBox.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4064

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4065

Biblioteca Padro

Text (Mtodo Get)


Obtm o texto da etiqueta associado com o controle.
string Text()

Valor de retorno
Texto da etiqueta.

Text (Mtodo Set)


Define o texto da etiqueta associado com o controle.
bool Text(
const string value

// text

Parmetros
value
[in] O novo texto da etiqueta.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4066

Biblioteca Padro

Color (Mtodo Get)


Obtm a cor da etiqueta associada com o controle.
color Color() const

Valor de retorno
Cor da etiqueta.

Color (Mtodo Set)


Define a cor da etiqueta associada com o controle.
bool Color(
const color value

// color

Parmetros
value
[in] Nova cor da etiqueta.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4067

Biblioteca Padro

Checked (Mtodo Get)


Obtm o estado do controle.
bool Checked() const

Valor de retorno
Estado do controle.

Checked (Mtodo Set)


Define o estado do controle.
bool Checked(
const bool flag

// state

Parmetros
flag
[in] Novo estado.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4068

Biblioteca Padro

Value (Mtodo Get)


Obtm o valor associado com o controle.
int Value() const

Valor de retorno
O valor associado com o controle.

Value (Mtodo Set)


Define o valor associado com o controle.
void Value(
const int value

// new value

Parmetros
value
[in] Novo Valor.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

4069

Biblioteca Padro

CreateButton
Cria controle dependente (boto).
virtual bool CreateButton()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4070

Biblioteca Padro

CreateLabel
Cria controle dependente (etiqueta).
virtual bool CreateLabel()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4071

Biblioteca Padro

OnClickButton
O manipulador de eventos do controle "ClickButton" (clique do mouse sobre o boto)
virtual bool OnClickButton()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4072

Biblioteca Padro

OnClickLabel
O manipulador de eventos do controle "ClickLabel" (clique do mouse sobre a etiqueta).
virtual bool OnClickLabel()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4073

Biblioteca Padro

CCheckGroup
CCheckGroup uma classe de controle complexa (com controles dependentes).

Descrio
CCheckGroup prev a possibilidade da criao de controles que permitem exibir e editar flags.

Declarao
class CCheckGroup : public CWndClient

Ttulo
#include <Controls\CheckGroup.mqh>

Mtodos de classe
Create
Create

Criar controle

Manipuladores de eventos do grfico


OnEvent

Manipulador de eventos para todos os eventos


de grfico

Add
AddItem

Adiciona novo item

Somente leitura de dados


Value

Obtm o valor, associado com o controle

Controles dependentes
CreateButton
Manipuladores
dependentes

Cria novo item CCheckBox


de

controle

de

eventos

OnVScrollShow

Manipulador de eventos "Show"


dependente do controle VScroll

(virtual),

OnVScrollHide

Manipulador de eventos "Hide"


dependente do controle VScroll

(virtual),

OnScrollLineDown

Manipulador de eventos "ScrollLineUp" (virtual),


dependente do controle VScroll

OnScrollLineUp

Manipulador
"ScrollLineDown"
controle VScroll

OnChangeItem

Manipulador de eventos "ChangeItem" (virtual)


dependente do controle VScroll

2000-2015, MetaQuotes Software Corp.

de
(virtual),

eventos
dependente do

4074

Biblioteca Padro

Redraw
Redraw

Redesenha o grupo

RowState

Define o estado do item especificado

2000-2015, MetaQuotes Software Corp.

4075

Biblioteca Padro

Create
Cria novo controle CCheckGroup.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4076

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4077

Biblioteca Padro

AddItem
Adiciona um item ao controle.
bool AddItem(
const string item,

// text

const long

// value

value

Parmetros
item
[in] Texto.
value=0
[in] Valor do tipo long.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4078

Biblioteca Padro

Value
Obtm o valor associado com o controle.
long Value()

Valor de retorno
O valor, associado com o controle.
Observao
O valor depende do estado de todos os itens do CCheckGroup.

2000-2015, MetaQuotes Software Corp.

4079

Biblioteca Padro

CreateButton
Cria uma nova instncia de classe CCheckBox no ndice especificado.
bool CreateButton(
int index

// index

Parmetros
index
[in] ndice do novo item no CCheckGroup.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4080

Biblioteca Padro

OnVScrollShow
O manipulador de eventos do controle "VScrollShow" (barra de rolagem vertical exibida).
virtual bool OnVScrollShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4081

Biblioteca Padro

OnVScrollHide
O manipulador de eventos do controle "VScrollHide" (barra de rolagem vertical oculta).
virtual bool OnVScrollHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4082

Biblioteca Padro

OnScrollLineDown
O manipulador de eventos do controle "ScrollLineDown" (linha de rolagem vertical para baixo).
virtual bool OnScrollLineDown()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4083

Biblioteca Padro

OnScrollLineUp
O manipulador de eventos do controle "ScrollLineUp" (rolagem vertical linha para cima) .
virtual bool OnScrollLineUp()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4084

Biblioteca Padro

OnChangeItem
O manipulador de eventos do controle "ChangeItem" (altera item).
virtual bool OnChangeItem(
const int index

// index

Parmetros
index
[in] O ndice do item alterado.
Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4085

Biblioteca Padro

Redraw
Redesenha o controle.
bool Redraw()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4086

Biblioteca Padro

RowState
Define o estado do item especificado.
bool RowState(
const int

index,

const bool select

// item index
// state

Parmetros
index
[in] ndice do item para alterar.
select
[in] Novo estado.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4087

Biblioteca Padro

CRadioButton
CRadioButton uma classe controle complexa.

Descrio
A classe CRadioButton em si no usada, utilizada para a criao de itens CRadioGroup.

Declarao
class CRadioButton : public CWndContainer

Ttulo
#include <Controls\RadioButton.mqh>

Mtodos de classe
Create
Create

Criar controle

Manipuladores de eventos do grfico


OnEvent

Manipulador de eventos para todos os eventos


de grfico

Propriedades
Text

Obtm/Define a etiqueta de texto, associada


com o controle

Color

Obtm/Define a cor da etiqueta de texto,


associada com o controle

State
State

Obtm/Define o estado

Controles dependentes
CreateButton

Cria boto

CreateLabel

Cria etiquetas

Manipuladores
dependentes

de

controle

de

eventos

OnClickButton

Manipulador de eventos "ClickButton" (virtual)

OnClickLabel

Manipulador de eventos "ClickLabel" (virtual)

2000-2015, MetaQuotes Software Corp.

4088

Biblioteca Padro

Create
Cria novo controle CRadioButton.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4089

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4090

Biblioteca Padro

Text (Mtodo Get)


Obtm o texto da etiqueta associado com o controle.
string Text()

Valor de retorno
Texto da etiqueta.

Text (Mtodo Set)


Define o texto da etiqueta associado com o controle.
bool Text(
const string value

// text

Parmetros
value
[in] O novo texto da etiqueta.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4091

Biblioteca Padro

Color (Mtodo Get)


Obtm a cor da etiqueta associada com o controle.
color Color() const

Valor de retorno
Cor da etiqueta.

Color (Mtodo Set)


Define a cor da etiqueta associada com o controle.
bool Color(
const color value

// color

Parmetros
value
[in] Nova cor da etiqueta.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4092

Biblioteca Padro

State (Mtodo Get)


Obtm o estado do boto.
bool State() const

Valor de retorno
Estado do boto.

State (Mtodo Set)


Define o estado do boto.
bool State(
const bool flag

// flag

Parmetros
flag
[in] Novo estado do boto.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4093

Biblioteca Padro

CreateButton
Cria boto.
virtual bool CreateButton()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4094

Biblioteca Padro

CreateLabel
Cria etiqueta.
virtual bool CreateLabel()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4095

Biblioteca Padro

OnClickButton
O manipulador de eventos do controle "ClickButton" (clique de mouse).
virtual bool OnClickButton()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4096

Biblioteca Padro

OnClickLabel
O manipulador de eventos do controle "ClickLabel" (clique do mouse sobrea etiqueta).
virtual bool OnClickLabel()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4097

Biblioteca Padro

CRadioGroup
CRadioGroup uma classe do controle complexa (com controles dependentes).

Descrio
CRadioGroup permite ao usurio selecionar uma nica opo a partir de um grupo de opes quando
emparelhado com outros controles CRadioButton.

Declarao
class CRadioGroup : public CWndClient

Ttulo
#include <Controls\RadioGroup.mqh>

Mtodos de classe
Create
Create

Criar controle

Manipuladores de eventos do grfico


OnEvent

Manipulador de eventos de todos os eventos de


grfico

Add
AddItem

Adiciona novo item

Somente leitura de dados


Value

Obtm o valor, associado com o controle

Controles dependentes
CreateButton
Manipuladores
dependentes

Cria novo item CRadioButton


de

controle

de

eventos

OnVScrollShow

Manipulador de eventos "Show"


dependente do controle VScroll

(virtual),

OnVScrollHide

Manipulador de eventos "Hide"


dependente do controle VScroll

(virtual),

OnScrollLineDown

Manipulador
"ScrollLineDown"
controle VScroll

OnScrollLineUp

Manipulador de eventos "ScrollLineUp" (virtual),


dependente do controle VScroll

OnChangeItem

Manipulador de eventos "ChangeItem" (virtual)

2000-2015, MetaQuotes Software Corp.

de
(virtual),

eventos
dependente do

4098

Biblioteca Padro

Redraw
Redraw

Redesenha os itens do grupo

RowState

Define o estado do item especificado

Select

Seleciona o item atual

2000-2015, MetaQuotes Software Corp.

4099

Biblioteca Padro

Create
Cria novo controle CRadioGroup.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4100

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4101

Biblioteca Padro

AddItem
Adiciona um item ao controle.
bool AddItem(
const string item,

// text

const long

// value

value=0

Parmetros
item
[in] Texto.
value=0
[in] Valor do tipo long.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4102

Biblioteca Padro

Value
Obtm o valor associado com o controle.
long Value()

Valor de retorno
O valor, associado com o controle.
Observao
O valor depende do estado de todos os itens do controle CRadioGroup.

2000-2015, MetaQuotes Software Corp.

4103

Biblioteca Padro

CreateButton
Cria uma nova instncia de classe CRadioButton no ndice determinado.
bool CreateButton(
const int index

// index

Parmetros
index
[in] ndice do novo item na CRadioGroup.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4104

Biblioteca Padro

OnVScrollShow
O manipulador de eventos do controle "VScrollShow" (barra de rolagem vertical exibida).
virtual bool OnVScrollShow()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4105

Biblioteca Padro

OnVScrollHide
O manipulador de eventos do controle "VScrollHide" (barra de rolagem vertical oculta).
virtual bool OnVScrollHide()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4106

Biblioteca Padro

OnScrollLineDown
O manipulador de eventos do controle "ScrollLineDown" (linha de rolagem vertical para baixo).
virtual bool OnScrollLineDown()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4107

Biblioteca Padro

OnScrollLineUp
O manipulador de eventos do controle "ScrollLineUp" (rolagem vertical linha para cima) .
virtual bool OnScrollLineUp()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4108

Biblioteca Padro

OnChangeItem
O manipulador de eventos do controle "ChangeItem" (altera item).
virtual bool OnChangeItem(
const int index

// index

Parmetros
index
[in] O ndice do item alterado.
Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4109

Biblioteca Padro

Redraw
Redesenha o controle.
bool Redraw()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4110

Biblioteca Padro

RowState
Define o estado do item especificado.
bool RowState(
const int

index,

const bool select

// item index
// state

Parmetros
index
[in] ndice do item para alterar.
select
[in] Novo estado.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4111

Biblioteca Padro

Select
Seleciona item atual.
void Select(
const int index

// index

Parmetros
index
[in] ndice do item para selecionar.
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

4112

Biblioteca Padro

CSpinEdit
CSpinEdit uma classe de controle complexa (com controles dependentes).

Descrio
A classe CSpinEdit destina-se a criao de controles que permite editar os valores de tipo inteiro.
Aumenta automaticamente os dados quando se pressiona o boto superior, mas diminui pressionando
o boto inferior.

Declarao
class CSpinEdit : public CWndContainer

Ttulo
#include <Controls\SpinEdit.mqh>

Mtodos de classe
Create
Create

Criar controle

Manipuladores de eventos do grfico


OnEvent

Manipulador de eventos de todos os eventos de


grfico

Propriedades
MinValue

Obtm/Define o valor mnimo permitido

MaxValue

Obtm/Define o valor mximo permitido

State
Value

Obtm/Define o valor atual

Controles dependentes
CreateEdit

Cria um controle dependente (editar)

CreateInc

Cria controle dependente (boto de aumentar)

CreateDec

Cria controle dependente (boto de diminuir)

Manipuladores
dependentes

de

controle

de

eventos

OnClickInc

Manipulador de eventos "ClickInc"(virtual)

OnClickDec

Manipulador de eventos "ClickDec" (virtual)

Manipuladores de eventos internos


OnChangeValue

Manipulador de eventos "ChangeValue" (virtual)

2000-2015, MetaQuotes Software Corp.

4113

Biblioteca Padro

2000-2015, MetaQuotes Software Corp.

4114

Biblioteca Padro

Create
Cria novo controle CSpinEdit.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4115

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4116

Biblioteca Padro

MinValue (Mtodo Get)


Obtm o valor da propriedade "MinValue" (valor mnimo permitido) do controle.
int MinValue() const

Valor de retorno
O valor da propriedade "MinValue".

MinValue (Mtodo Set)


Define o valor da propriedade "MinValue" (valor mnimo permitido) do controle.
void MinValue(
const int value

// new value

Parmetros
value
[in] O novo valor da propriedade "MinValue".
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

4117

Biblioteca Padro

MaxValue (Mtodo Get)


Obtm o valor da propriedade "MaxValue" (valor mximo permitido) do controle.
int MaxValue() const

Valor de retorno
O valor da propriedade "MaxValue".

MaxValue (Mtodo Set)


Define o o valor da propriedade "MaxValue" (valor mximo permitido) do controle.
void MaxValue(
const int value

// new value

Parmetros
value
[in] Novo valor da propriedade "MaxValue".
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

4118

Biblioteca Padro

Value (Mtodo Get)


Obtm a propriedade "Value" (valor atual) do controle.
int Value() const

Valor de retorno
The "Value" property.

Value (Mtodo Set)


Define a propriedade "Value" (valor atual) do controle.
void Value(
const int value

// value

Parmetros
value
[in] Nova propriedade "Value"".
Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

4119

Biblioteca Padro

CreateEdit
Cria controle dependente (CEdit).
virtual bool CreateEdit()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4120

Biblioteca Padro

CreateInc
Cria controle dependente (boto de aumentar).
virtual bool CreateInc()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4121

Biblioteca Padro

CreateDec
Cria controle dependente (boto de diminuir).
virtual bool CreateDec()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4122

Biblioteca Padro

OnClickInc
O manipulador de eventos do controle "ClickInc" (clique do mouse sobre o boto de aumentar).
virtual bool OnClickInc()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4123

Biblioteca Padro

OnClickDec
O manipulador de eventos do controle "ClickDec" (clique do mouse sobre o boto de diminuir).
virtual bool OnClickDec()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4124

Biblioteca Padro

OnChangeValue
O manipulador de eventos do controle "ChangeValue" .
virtual bool OnChangeValue()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4125

Biblioteca Padro

CDialog
CDialog de classe de controle complexa.

Descrio
CDialog destina-se a combinar os controles com funes diferentes no grupo.

Declarao
class CDialog : public CWndContainer

Ttulo
#include <Controls\Dialog.mqh>

Mtodos de classe
Create
Create

Criar controle

Manipuladores de eventos do grfico


OnEvent

Manipulador de eventos de todos os eventos de


grfico

Propriedades
Caption

Obtm/Define o valor da propriedade "Caption"

Add
Add

Adiciona controle para a rea de cliente

Controles dependentes
CreateWhiteBorder

Cria controle dependente (borda branca)

CreateBackground

Cria controle dependente (segundo plano-fundo)

CreateCaption

Cria controle dependente (subttulo)

CreateButtonClose

Cria controle dependente (boto fechar)

CreateClientArea

Cria controle dependente (rea de cliente)

Manipuladores
dependentes

de

controle

de

eventos

OnClickCaption

Manipulador de evento "ClickCaption"

OnClickButtonClose

Manipulador de evento"ClickButtonClose"

Acesso rea de cliente


ClientAreaVisible

Define um valor indicando se a rea do cliente


est visvel

2000-2015, MetaQuotes Software Corp.

4126

Biblioteca Padro

ClientAreaLeft

Obtm coordenada X do canto superior


esquerdo do controle da rea de cliente

ClientAreaTop

Obtm a coordenada Y do canto superior


esquerdo do controle da rea de cliente

ClientAreaRight

Obtm coordenadas X do canto inferior direito


do controle da rea de cliente

ClientAreaBottom

Obtm a coordenada Y do canto inferior direito


do controle da rea de cliente

ClientAreaWidth

Obtm a largura da rea de cliente

ClientAreaHeight

Obtm a altura rea de cliente

Manipulador de eventos para arrastar


OnDialogDragStart

Manipulador
de
"DialogDragStart" (virtual)

eventos

OnDialogDragProcess

Manipulador
de
"DialogDragProcess" (virtual)

eventos

OnDialogDragEnd

Manipulador
de
"DialogDragEnd" (virtual)

eventos

2000-2015, MetaQuotes Software Corp.

4127

Biblioteca Padro

Create
Cria novo controle CDialog.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4128

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4129

Biblioteca Padro

Caption (Mtodo Get)


Obtm a propriedade "Caption" do controle CDialog.
string MinValue() const

Valor de retorno
A propriedade"Caption".

Caption (Mtodo Set)


Define a propriedade "Caption" do controle CDialog.
bool Caption(
const string text

// text

Parmetros
text
[in] O novo valor da propriedade "Caption".
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4130

Biblioteca Padro

Add
Adiciona controle para a rea do cliente pelo ponteiro.
bool Add(
CWnd *control,

// pointer

Parmetros
control
[in] Ponteiro para controle.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

Add
Adiciona controle para a rea do cliente por referncia.
bool Add(
CWnd &control,

// reference

Parmetros
control
[in] Referncia para controle.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4131

Biblioteca Padro

CreateWhiteBorder
Cria controle dependente (borda branca).
virtual bool CreateWhiteBorder()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4132

Biblioteca Padro

CreateBackground
Cria controle dependente (segundo plano - fundo).
virtual bool CreateBackground()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4133

Biblioteca Padro

CreateCaption
Cria controle dependente (subttulo).
virtual bool CreateCaption()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4134

Biblioteca Padro

CreateButtonClose
Cria controle dependente (boto fechar)
virtual bool CreateButtonClose()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4135

Biblioteca Padro

CreateClientArea
Cria controle dependente (rea de cliente).
virtual bool CreateClientArea()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4136

Biblioteca Padro

OnClickCaption
O manipulador de eventos do controle "ClickCaption".
virtual bool OnClickCaption()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4137

Biblioteca Padro

OnClickButtonClose
O manipulador de eventos do controle "ClickButtonClose".
virtual bool OnClickButtonClose()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4138

Biblioteca Padro

ClientAreaVisible
Define um flag que indica se a rea do cliente visvel.
bool ClientAreaVisible(
const bool visible

// visibility flag

Parmetros
visible
[in] Flag visvel.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4139

Biblioteca Padro

ClientAreaLeft
Obtm Coordenada X do canto superior esquerdo do controle da rea de cliente.
int ClientAreaLeft()

Valor de retorno
A coordenada X do canto superior esquerdo do controle da rea de cliente.

2000-2015, MetaQuotes Software Corp.

4140

Biblioteca Padro

ClientAreaTop
Obtm Coordenada Y do canto superior esquerdo do controle da rea de cliente.
int ClientAreaTop()

Valor de retorno
As coordenadas Y do canto superior esquerdo do controle da rea de cliente.

2000-2015, MetaQuotes Software Corp.

4141

Biblioteca Padro

ClientAreaRight
Obtm Coordenada X do canto inferior direito do controle da rea de cliente.
int ClientAreaTop()

Valor de retorno
A coordenada X do canto inferior direito do controle da rea de cliente.

2000-2015, MetaQuotes Software Corp.

4142

Biblioteca Padro

ClientAreaBottom
Obtm Coordenada Y do canto inferior direito do controle da rea de cliente.
int ClientAreaBottom()

Valor de retorno
A coordenada Y do canto inferior direito do controle da rea de cliente.

2000-2015, MetaQuotes Software Corp.

4143

Biblioteca Padro

ClientAreaWidth
Obtm a largura do controle da rea de cliente.
int ClientAreaWidth()

Valor de retorno
A largura da rea de cliente.

2000-2015, MetaQuotes Software Corp.

4144

Biblioteca Padro

ClientAreaHeight
Obtm a altura do controle da rea de cliente .
int ClientAreaHeight()

Valor de retorno
A altura do controle da rea de cliente .

2000-2015, MetaQuotes Software Corp.

4145

Biblioteca Padro

OnDialogDragStart
O manipulador de eventos do controle "DialogDragStart".
virtual bool OnDialogDragStart()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "DialogDragStart" ocorre no incio, quando o controle arrastado.

2000-2015, MetaQuotes Software Corp.

4146

Biblioteca Padro

OnDialogDragProcess
O manipulador de eventos do controle "DialogDragProcess"
virtual bool OnDialogDragProcess()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "DialogDragProcess" ocorre quando o controle arrastado.

2000-2015, MetaQuotes Software Corp.

4147

Biblioteca Padro

OnDialogDragEnd
O manipulador de eventos do controle "DialogDragEnd".
virtual bool OnDialogDragEnd()

Valor de retorno
verdadeiro se o evento foi processado, caso contrrio ser falso.
Observao
O evento "DialogDragEnd" ocorre no final e o controle arrastado.

2000-2015, MetaQuotes Software Corp.

4148

Biblioteca Padro

CAppDialog
CAppDialog uma classe de Dilogo de Aplicativo de controle complexo (com controles dependentes).

Descrio
Classe CAppDialog destina-se a combinar os controles com diferentes funes no grupo dentro do
programa MQL5.

Declarao
class CAppDialog : public CDialog

Ttulo
#include <Controls\Dialog.mqh>

Mtodos de classe
Criar e destruir
Create

Criar controle

Destroy

Destruir controle

Processamento de eventos
OnEvent

Manipulador de eventos de todos os eventos de


grfico

Run
Run

Executa controle

Processamento de eventos de grfico


ChartEvent

Manipulador de eventos de todos os eventos de


grfico

Configurao
Minimized

Define um valor indicando se o controle


minimizado

Save/Load
IniFileSave

Salva o estado de controle para o arquivo

IniFileLoad

Carrega o estado de controle a partir do arquivo

IniFileName

Define o nome do arquivo para carregar/salvar


o estado de controle

IniFileExt

Define a extenso do arquivo para carregar/


salvar o estado de controle

Inicializao

2000-2015, MetaQuotes Software Corp.

4149

Biblioteca Padro

CreateCommon

Mtodo de inicializao comum

CreateExpert

Mtodo de inicializao para trabalhar em


Expert Advisors

CreateIndicator

Mtodo de inicializao para trabalhar em


indicadores

Controles dependentes
CreateButtonMinMax

Manipuladores
dependentes

de

Cria
controles
dependentes
maximizar botes)
controle

de

(minimizar/

eventos

OnClickButtonClose

Manipulador
eventos"ClickButtonClose" (virtual)

OnClickButtonMinMax

Manipulador
de
"ClickButtonMinMax" (virtual)

de

eventos

Eventos externos
OnAnotherApplicationClose

Manipulador de eventos externos (virtual)

Mtodos
Rebound

Define novas coordenadas do controle usando


coordenadas de classe CRect

Minimizar

Mostra o controle no estado minimizado

Maximizar

Mostra o controle no estado maximizado


(restaurado)

CreateInstanceId

Cria um ID nico para os nomes dos objetos de


controle

ProgramName

Obtm o nome do programa MQL5

SubwinOff

Obtm o deslocamento Y da sub-janela de


controle

2000-2015, MetaQuotes Software Corp.

4150

Biblioteca Padro

Create
Cria novo controle CAppDialog.
virtual bool Create(
const long

chart,

// chart ID

const string name,

// name

const int

subwin,

// chart subwindow

const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4151

Biblioteca Padro

Destroy
Controle para destruir.
virtual bool Destroy()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4152

Biblioteca Padro

OnEvent
Manipulador de eventos do grfico.
virtual bool OnEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4153

Biblioteca Padro

Run
Executa o controle.
bool Run()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4154

Biblioteca Padro

ChartEvent
Manipulador de eventos do grfico.
virtual bool ChartEvent(
const int

id,

// ID

const long&

lparam,

// event parameter of long type

const double& dparam,

// event parameter of double type

const string& sparam

// event parameter of string type

Parmetros
id
[in] ID do evento.
lparam
[in] Parmetro do evento tipo long, passado por referncia.
dparam
[in] Parmetro do evento tipo double, passado por referncia
sparam
[in] Parmetro do evento tipo string, passado por referncia
Valor de retorno
verdadeiro - se o evento foi processado, caso contrrio ser falso.

2000-2015, MetaQuotes Software Corp.

4155

Biblioteca Padro

Minimized
Define o valor da propriedade do controle "Minimized" .
bool Minimized(
const bool flag

// state

Parmetros
flag
[in] Novo estado.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4156

Biblioteca Padro

IniFileSave
Salva o estado de controle para o arquivo.
void IniFileSave()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4157

Biblioteca Padro

IniFileLoad
Carrega o estado de controle a partir do arquivo.
void IniFileLoad()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4158

Biblioteca Padro

IniFileName
Define o nome do arquivo para carregar/salvar o estado de controle.
virtual string IniFileName()

const

Valor de retorno
O nome do arquivo para carregar/salvar o estado de controle.
Observao
O nome do arquivo incluem o nome do Indicador/Expert Advisor e o smbolo de trabalho, onde qual o
programa lanado no MQL5.

2000-2015, MetaQuotes Software Corp.

4159

Biblioteca Padro

IniFileExt
Define a extenso do arquivo para carregar/salvar o estado do controle.
virtual string IniFileExt()

const

Valor de retorno
Extenso do arquivo, usado para carregar/salvar o estado de controle.

2000-2015, MetaQuotes Software Corp.

4160

Biblioteca Padro

CreateCommon
Mtodo de inicializao comum.
bool CreateCommon(
const long

chart,

// chart ID

const string name,

// name

const int

// chart subwindow

subwin,

Parmetros
chart
[in] ID de grfico.
name
[in] Nome exclusivo do controle.
subwin
[in] Sub-janela do grfico.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4161

Biblioteca Padro

CreateExpert
Mtodo de inicializao para trabalhar em Expert Advisors.
bool CreateExpert(
const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4162

Biblioteca Padro

CreateIndicator
Mtodo de inicializao para trabalhar em indicadores.
bool CreateIndicator(
const int

x1,

// x1 coordinate

const int

y1,

// y1 coordinate

const int

x2,

// x2 coordinate

const int

y2

// y2 coordinate

Parmetros
x1
[in] Coordenada X do canto superior esquerdo.
y1
[in] Coordenada Y do canto superior esquerdo.
x2
[in] Coordenada X do canto inferior direito.
y2
[in] Coordenada Y do canto inferior direito.
Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4163

Biblioteca Padro

CreateButtonMinMax
Cria controles dependentes (botes minimizar/maximizar).
virtual void CreateButtonMinMax()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

4164

Biblioteca Padro

OnClickButtonClose
O controle do manipulador de eventos "ClickButtonClose" (clique do mouse sobre o boto para fechar).
virtual void OnClickButtonClose()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

4165

Biblioteca Padro

OnClickButtonMinMax
O controle do manipulador de eventos "ClickButtonMinMax" (clique do mouse sobre boto para
minimizar/maximizar).
virtual void OnClickButtonClose()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

4166

Biblioteca Padro

OnAnotherApplicationClose
Manipulador de eventos para eventos externos.
virtual void OnAnotherApplicationClose()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

4167

Biblioteca Padro

Rebound
Define novas coordenadas do controle usando as coordenadas da classe CRect.
bool Rebound(
const & CRect rect

// CRect class

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4168

Biblioteca Padro

Minimizar
Mostra o controle no estado minimizado.
virtual void Minimize()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4169

Biblioteca Padro

Maximizar
Mostra o controle no estado maximizado (restaurado).
virtual void Maximize()

Valor de retorno
verdadeiro se obteve xito, caso contrrio falso.

2000-2015, MetaQuotes Software Corp.

4170

Biblioteca Padro

CreateInstanceId
Cria uma ID nico para os nomes dos objetos de controle.
string CreateInstanceId()

Valor de retorno
Prefixo para os nomes de objeto.

2000-2015, MetaQuotes Software Corp.

4171

Biblioteca Padro

ProgramName
Obtm o nome do programa MQL5.
string ProgramName()

Valor de retorno
Nome do programa MQL5.

2000-2015, MetaQuotes Software Corp.

4172

Biblioteca Padro

SubwinOff
Obtm a deslocamento Y da sub-janela de controle.
void SubwinOff()

Valor de retorno
Nenhum.

2000-2015, MetaQuotes Software Corp.

4173

Migrando do MQL4

Migrando da linguagem de programao MQL4 para MQL5


MQL5 a evoluo do seu antecessor - a linguagem de programao MQL4, onde inmeros
indicadores, scripts e Expert Advisors foram escritos. Apesar do fato de que a nova linguagem de
programao grandemente compatvel com a linguagem da gerao anterior, ainda existem algumas
diferenas entre as linguagens. E quando migrar de programas, essas diferenas devem ser
observadas.
Esta seo contm informaes destinadas a facilitar a adaptao dos cdigos para a nova linguagem
MQL5 ao programadores que conhecem MQL4.
Em primeiro lugar, deve-se observar:
A nova linguagem no contm funes start(), init() e deinit().
No h limite para o nmero de buffers de indicador.
DLLs so carregadas imediatamente aps o carregamento de um Expert Advisor (ou qualquer outro
programa MQL5).
Verificao das condies lgicas reduzida.
Quando os limites de um matriz forem ultrapassados, o desempenho em curso finalizado
(criticamente - com a sada de um erro).
Originrios de operadores em C++.
A linguagem oferece o tipo de converso implcita (mesmo de string para um nmero).
As variveis locais no so inicializados automaticamente (exceto para strings).
Matrizes de local comum so excludas automaticamente.

Funes Especiais init, start e deinit


A linguagem MQL4 contm apenas estas trs funes pr-definidas que so usadas no indicador, script
ou Expert Advisor (no contando a incluso dos arquivos *.mqh e dos arquivos de biblioteca). Em
MQL5 no existem estas funes, mas foram criadas funes anlogas. A tabela mostra a
correspondncia aproximada das funes.
MQL4

MQL5

init

OnInit

start

OnStart

deinit

OnDeinit

Funes OnInit e OnDeinit desempenham o mesmo papel que as funes init e deinit em MQL4 - elas
so projetadas para encontrar o cdigo, que ser realizado durante a inicializao e finalizao dos
programas MQL5. Voc pode simplesmente renomear estas funes em conformidade, ou deix-las
como esto, mas deve adicionar chamadas dessas funes em lugares correspondentes.
Exemplo:
void OnInit()
{
//--- Funo nomeada durante a inicializao

2000-2015, MetaQuotes Software Corp.

4174

Migrando do MQL4
init();
}
void OnDeinit(const int reason)
{
//--- Funo nomeada durante a desinicializao
deinit();
//--}

A funo start substituda por OnStart apenas em scripts. Em Expert Advisors e indicadores ser
renomeado para OnTick e OnCalculate, respectivamente. O cdigo que est para ser executado
durante a operao do programa MQL5 ser centrado nestas trs funes:
programa mql5

principal funo

script

OnStart

indicador

OnCalculate

Expert Advisor

OnTick

Se o cdigo do indicador ou script no contm a funo principal, ou o nome da funo diferente,


esta funo no ser executada. Isso significa que se o cdigo fonte de um script no contm OnStart,
esse cdigo ser compilado como um Expert Advisor.
Se um cdigo de indicador no contm a funo OnCalculate, a compilao deste indicador ser
impossvel.

Variveis Predefinidas
Em MQL5 no existem as variveis pr-definidas como Ask, Bid, Bars. As variveis de Point e Digits
tm uma grafia ligeiramente diferente:
MQL4

MQL5

Digits

_Digits

Point

_Point
_LastError
_Period
_Symbol
_StopFlag
_UninitReason

Acesso as Timeseries
Em MQL5 no existem as timeseries predefinidas como Open[], High[], Low[], Close[], Volume[] e
Time[]. A profundidade necessria de uma timeseries agora pode ser definida atravs das funes

2000-2015, MetaQuotes Software Corp.

4175

Migrando do MQL4
correspondentes para acessar as timeseries.

Expert Advisors
Expert Advisors em MQL5 no requerem a presena obrigatria de funes que manipulam os eventos
de recebimento de um novo tick - OnTick, com realizado em MQL4 (a funo de arranque em MQL4
executado quando um novo tick recebido). Em MQL5, os Expert Advisors podem conter funes prdefinidas do manipulador de vrios tipos de eventos:
OnTick recebimento de um novo tick;
OnTimer evento de timer;
OnTrade - evento de trade;
OnChartEvent eventos de entrada do teclado e mouse, eventos de um objeto grfico em
movimento, evento de edio de texto completo na entrada da etiqueta do objeto LabelEdit;
OnBookEvent evento do status de mudana da Profundidade do Mercado.

Indicadores Customizados
Em MQL4, o nmero de buffers de indicador limitado e no pode ultrapassar a 8. Em MQL5 no
existem estas limitaes, mas deve ser lembrado que cada buffer de indicador requer a alocao de
uma certa parte da memria para a sua localizao no terminal, por isto esta nova possibilidade no
deve ser utilizada abusivamente.
MQL4 oferece apenas 6 tipos de plotagem de indicadores personalizados, enquanto MQL5 agora
oferece 18 estilos de desenho. Os nomes dos tipos de desenho no mudaram, mas a ideologia da
representao grfica dos indicadores mudou significativamente.
A direo da indexao nos buffers de indicador tambm diferente. Por padro, em MQL5 todos os
buffers de indicador tem o comportamento de matrizes comuns, ou seja, o elemento 0 (zero) indexado
o mais antigo no histrico e, como os ndices aumentam, passamos dos dados mais antigos para os
mais recentes.
A nica funo para trabalhar com indicadores personalizados que foi preservado da linguagem MQL4
a funo SetIndexBuffer, mas para ser utilizada; agora deve ser especificado o tipo de dado a ser
armazenado em um matriz, ligada ao buffer do indicador.
As propriedades de indicadores personalizados tambm foram modificadas e ampliadas. Novas funes
para acesso a timeseries foram adicionadas, de modo que o algoritmo de clculo total deve ser
reexaminado.

Graphical Objects
O nmero de objetos grficos em MQL5 foi aumentado significativamente. Alm disso, objetos
grficos agora so posicionados no grfico com a preciso de um segundo em qualquer perodo de
tempo - agora objetos de pontos de ancoragem no so arredondados para o tempo de abertura da
barra de preo no grfico em curso.
Agora para Setas, Textos e Objetos de Etiqueta voc pode especificar mtodos de vinculao, e para a
Etiqueta, Boto, Grfico, Etiqueta Bitmap e Editar, os objetos podem ser configurados no canto do
grfico onde um objeto est ligado.

2000-2015, MetaQuotes Software Corp.

4176

List of MQL5 Functions

List of MQL5 Functions


All MQL5 functions in alphabetical order.
Funo

Ao

Section

AccountInfoDouble

Retorna um valor de tipo


double da
correspondente
propriedade da conta

Informaes de Conta

AccountInfoInteger

Retorna um valor de tipo


inteiro (bool, int ou long) da
correspondente propriedade da
conta

Informaes de Conta

AccountInfoString

Retorna um valor de tipo


string
da
correspondente
propriedade da conta

Informaes de Conta

acos

Retorna o arco-cosseno de x
em radianos

Funes Matemticas

Alert

Exibe uma mensagem em uma


janela separada

Funes Comuns

ArrayBsearch

Searches for a specified value


in a multidimensional numeric
array sorted ascending

Funes para Array

ArrayCompare

Retorna
o
resultado
da
comparao entre dois arrays
de tipos simples ou estruturas
personalizados sem objetos
complexos

Funes para Array

ArrayCopy

Copia um array em outro array

Funes para Array

ArrayFill

Preenche um array com o valor


especificado

Funes para Array

ArrayFree

Libera buffer de qualquer


array dinmico e define o
tamanho da dimenso zero em
0.

Funes para Array

ArrayGetAsSeries

Verifica
a
direo
indexao de um array

da

Funes para Array

ArrayInitialize

Define todos os elementos de


um array numrico para um
nico valor

Funes para Array

ArrayIsDynamic

Verifica se
dinmico

Funes para Array

ArrayIsSeries

Verifica se um array uma

Funes para Array

um

array

2000-2015, MetaQuotes Software Corp.

4177

List of MQL5 Functions

srie de tempo
ArrayMaximum

Searches for the largest


element in the first dimension
of a multidimensional numeric
array

Funes para Array

ArrayMinimum

Searches for the lowest


element in the first dimension
of a multidimensional numeric
array

Funes para Array

ArrayRange

Retorna
o
nmero
de
elementos
na
dimenso
especifica do array

Funes para Array

ArrayResize

Define o novo tamanho da


primeira dimenso do array

Funes para Array

ArraySetAsSeries

Define a direo de indexao


de um array

Funes para Array

ArraySize

Retorna o nmero de elemento


no array

Funes para Array

ArraySort

Ordena arrays nmeros pela


primeira dimenso

Funes para Array

asin

Retorna o arco-seno de x em
radianos

Funes Matemticas

atan

Retorna o arco-tangente de x
em radianos

Funes Matemticas

Bars

Retorna o nmero de barras do


histrico para um ativo e
perodo especificados

Sries Temporais e Acesso a


Indicadores

BarsCalculated

Retorna o nmero de dados


calculados em um buffer de
indicador ou -1 em caso de
erro (os dados no foram
calculados ainda)

Sries Temporais e Acesso a


Indicadores

ceil

Retorna o valor numrico


inteiro mais prximo do acima

Funes Matemticas

CharArrayToString

Converte cdigo de smbolo


(ansi) em um array de um
smbolo

Funes de Converso

ChartApplyTemplate

Aplica-se
um
modelo
especfico de um arquivo
especificado para o grfico

Operaes de Grficos

ChartClose

Fecha um grfico especificado

Operaes de Grficos

2000-2015, MetaQuotes Software Corp.

4178

List of MQL5 Functions

ChartFirst

Retorna o ID do primeiro
grfico do terminal do cliente

Operaes de Grficos

ChartGetDouble

Retorna a propriedade de valor


duplo do grfico especificado

Operaes de Grficos

ChartGetInteger

Retorna a propriedade de valor


inteiro do grfico especificado

Operaes de Grficos

ChartGetString

Retorna a propriedade de valor


da seqncia do grfico
especificado

Operaes de Grficos

ChartID

Retorna o ID do grfico atual

Operaes de Grficos

ChartIndicatorAdd

Adiciona um indicador com


identificador especificado para
uma
janela
do
grfico
especificado

Operaes de Grficos

ChartIndicatorDelete

Remove um indicador com um


nome especificado a partir de
janela do grfico especificado

Operaes de Grficos

ChartIndicatorGet

Retorna o
manuseio
do
indicador com nome abreviado
especificado na janela do
grfico especificado

Operaes de Grficos

ChartIndicatorName

Retorna o nome abreviado do


indicador pelo nmero na lista
de indicadores sobre a janela
do grfico especificado

Operaes de Grficos

ChartIndicatorsTotal

Retorna o nmero de todos


indicadores utilizados para a
janela do grfico especificado

Operaes de Grficos

ChartNavigate

Executa
deslocamento
do
grfico
especificado
pelo
nmero especificado de barras
em
relao
a
posio
especificada no grfico

Operaes de Grficos

ChartNext

Retorna o ID do grfico do
prximo grfico para um
especificado

Operaes de Grficos

ChartOpen

Abre um novo grfico com o


smbolo e perodo especificado

Operaes de Grficos

CharToString

Converte um cdigo
de
smbolo em um string de um
caractere.

Funes de Converso

ChartPeriod

Retorna o valor do perodo do

Operaes de Grficos

2000-2015, MetaQuotes Software Corp.

4179

List of MQL5 Functions

grfico especificado
ChartPriceOnDropped

Retorna a coordenada de preo


do ponto do grfico, o
Assessor Especialista (Expert
Advisor)
ou
Script
foi
derrubado

Operaes de Grficos

ChartRedraw

Chama um redesenho forado


de um grfico especificado

Operaes de Grficos

ChartSaveTemplate

Salva as configuraes atuais


do grfico em um modelo com
um nome especificado

Operaes de Grficos

ChartScreenShot

Providencia uma imagem do


grfico de seu estado atual
para um formato GIF, PNG ou
BMP dependendo da extenso
especificada

Operaes de Grficos

ChartSetDouble

Define o valor duplo para uma


propriedade correspondente do
grfico especificado

Operaes de Grficos

ChartSetInteger

Define um valor inteiro


(datetime, int, color, bool ou
char) para uma propriedade
correspondente do grfico
especificado

Operaes de Grficos

ChartSetString

Define o valor da seqncia


para uma propriedade do
grfico especificado

Operaes de Grficos

ChartSetSymbolPeriod

Modifica o valor do smbolo e


um
perodo
do
grfico
especificado

Operaes de Grficos

ChartSymbol

Retorna o nome do smbolo do


grfico especificado

Operaes de Grficos

ChartTimeOnDropped

Retorna a coordenada de
tempo do ponto do grfico, o
Assessor Especialista (Expert
Advisor)
ou
Script
foi
derrubado

Operaes de Grficos

ChartTimePriceToXY

Converte as coordenadas do
grfico
a
partir
da
representao
tempo/preo
para as coordenadas X e Y

Operaes de Grficos

ChartWindowFind

Retorna o nmero de uma subjanela onde um indicador


elaborado

Operaes de Grficos

2000-2015, MetaQuotes Software Corp.

4180

List of MQL5 Functions

ChartWindowOnDropped

Retorna o nmero (ndice) da


sub-janela do grfico, o
Assessor Especialista (Expert
Advisor)
ou
Script
foi
derrubado

Operaes de Grficos

ChartXOnDropped

Retorna a coordenada X do
ponto do grfico, o Assessor
Especialista (Expert Advisor)
ou Script foi derrubado

Operaes de Grficos

ChartXYToTimePrice

Converte as coordenadas X e Y
no grfico para os valores de
tempo e preo

Operaes de Grficos

ChartYOnDropped

Retorna a coordenada Y do
ponto do grfico, o Assessor
Especialista (Expert Advisor)
ou Script foi derrubado

Operaes de Grficos

CheckPointer

Retorna o tipo do ponteiro de


objeto

Funes Comuns

CLBufferCreate

Cria um buffer OpenCL

Trabalhando com OpenCL

CLBufferFree

Exclui um buffer OpenCL

Trabalhando com OpenCL

CLBufferRead

L um buffer de OpenCL num


array

Trabalhando com OpenCL

CLBufferWrite

Grava um array num buffer


OpenCL

Trabalhando com OpenCL

CLContextCreate

Cria um contexto OpenCL

Trabalhando com OpenCL

CLContextFree

Remove um contexto OpenCL

Trabalhando com OpenCL

CLExecute

Executa um programa OpenCL

Trabalhando com OpenCL

CLGetDeviceInfo

Receives device property from


OpenCL driver

Trabalhando com OpenCL

CLGetInfoInteger

Retorna o valor da propriedade


de uma integer para um
objeto ou dispositivo OpenCL

Trabalhando com OpenCL

CLHandleType

Retorna o tipo do manipulador


de OpenCL como valor da
enumerao
ENUM_OPENCL_HANDLE_TYPE

Trabalhando com OpenCL

CLKernelCreate

Cria uma funo de partida


OpenCL

Trabalhando com OpenCL

CLKernelFree

Remove uma
partida OpenCL

de

Trabalhando com OpenCL

CLProgramCreate

Cria um programa OpenCL a

Trabalhando com OpenCL

funo

2000-2015, MetaQuotes Software Corp.

4181

List of MQL5 Functions

partir de um cdigo fonte


CLProgramFree

Remove um programa OpenCL

Trabalhando com OpenCL

CLSetKernelArg

Define um parmetro para a


funo OpenCL

Trabalhando com OpenCL

CLSetKernelArgMem

Define um buffer OpenCL


como um parmetro da funo
OpenCL

Trabalhando com OpenCL

ColorToARGB

Converte tipo color para tipo


uint
para
receber
representao ARGB da cor.

Funes de Converso

ColorToString

Converte um valor de color em


uma string como "R,G,B"

Funes de Converso

Comment

Gera um comentrio no canto


superior esquerdo do grfico

Funes Comuns

CopyBuffer

Copia dados de um buffer


especificado de um indicador
especificado em um array

Sries Temporais e Acesso a


Indicadores

CopyClose

Obtm histrico de dados


sobre preo de fechamento de
barra para um ativo e perodo
especificados em um array

Sries Temporais e Acesso a


Indicadores

CopyHigh

Obtm histrico de dados


sobre preo de barra mximo
para um ativo e perodo
especificados em um array

Sries Temporais e Acesso a


Indicadores

CopyLow

Obtm histrico de dados


sobre preo de barra minimo
para um ativo e perodo
especificados em um array

Sries Temporais e Acesso a


Indicadores

CopyOpen

Obtm dados histricos sobre


preo de abertura de barras
para um ativo e perodo
especificados em um array

Sries Temporais e Acesso a


Indicadores

CopyRates

Obtm dados histricos da


estrutura Rates para um ativo
e perodo especificados em um
array

Sries Temporais e Acesso a


Indicadores

CopyRealVolume

Obtm dados histricos sobre


volumes de negociao para
um
ativo
e
perodo
especificados em um array

Sries Temporais e Acesso a


Indicadores

CopySpread

Obtm

Sries Temporais e Acesso a

histrico

de

dados

2000-2015, MetaQuotes Software Corp.

4182

List of MQL5 Functions

sobre spreads para um ativo e


perodo especificados em um
array

Indicadores

CopyTicks

Gets ticks accumulated by the


terminal for the current
working session into an array

Sries Temporais e Acesso a


Indicadores

CopyTickVolume

Obtm histrico de dados


sobre volumes de tick para um
ativo e perodo especificados
em um array

Sries Temporais e Acesso a


Indicadores

CopyTime

Obtm dados histricos sobre


hora de abertura de barras
para um ativo e perodo
especificados em um array

Sries Temporais e Acesso a


Indicadores

cos

Retorna o cosseno de um
nmero

Funes Matemticas

CryptDecode

Performs
the
inverse
transformation of the data
from array

Funes Comuns

CryptEncode

Transforms the data from


array with the specified
method

Funes Comuns

DebugBreak

Ponto de parada de programa


em depurao

Funes Comuns

Digits

Retorna o nmero de dgitos


decimais
determinando
a
preciso do valor do preo do
ativo do grfico corrente

Verificando Estado

DoubleToString

Converte um valor numrico


para um linha de texto com a
preciso especificada

Funes de Converso

EnumToString

Converte
um
valor
de
enumerao de qualquer tipo
para string

Funes de Converso

EventChartCustom

Gera um evento personalizado


para o grfico especificado

Trabalhando com Eventos

EventKillTimer

Interrompe a gerao de
eventos pelo timer no quadro
atual

Trabalhando com Eventos

EventSetMillisecondTimer

Inicia gerador de eventos de


timer de alta resoluo com
um perodo de menos de 1
segundo para o grfico em

Trabalhando com Eventos

2000-2015, MetaQuotes Software Corp.

4183

List of MQL5 Functions

curso
EventSetTimer

Inicia o gerador de eventos do


time com a periodicidade
especificada para o grfico
atual

Trabalhando com Eventos

exp

Retorna o exponencial de um
nmero

Funes Matemticas

ExpertRemove

Interrompe um Expert Advisor


e o descarrega do grfico

Funes Comuns

fabs

Retorna o valor absoluto


(modulo) do valor numrico
especificado

Funes Matemticas

FileClose

Fecha um arquivo
previamente

aberto

Funes de Arquivo

FileCopy

Copia o arquivo original a


partir de um local ou de uma
pasta compartilhada em outro
arquivo

Funes de Arquivo

FileDelete

Deleta
um
especificado

Funes de Arquivo

FileFindClose

Fecha o manipulador de busca

Funes de Arquivo

FileFindFirst

Comea a busca de arquivos


em um diretrio de acordo
com o filtro especificado

Funes de Arquivo

FileFindNext

Continua a busca iniciada pela


funo FileFindFirst()

Funes de Arquivo

FileFlush

Escreve para um disco todos


os
dados
remanescentes
dentro da entrada/sada do
arquivo buffer

Funes de Arquivo

FileGetInteger

Obtm
uma
propriedade
inteira de um arquivo

Funes de Arquivo

FileIsEnding

Define o final do arquivo em


processo de leitura

Funes de Arquivo

FileIsExist

Verifica a e existncia de um
arquivo

Funes de Arquivo

FileIsLineEnding

Define o final da linha do


arquivo de texto em processo
de leitura

Funes de Arquivo

FileMove

Move ou renomeia um arquivo

Funes de Arquivo

FileOpen

Abre um arquivo com o nome

Funes de Arquivo

arquivo

2000-2015, MetaQuotes Software Corp.

4184

List of MQL5 Functions

e bandeira especificada
FileReadArray

L arrays de qualquer tipo,


exceto para a seqncia a
partir do arquivo do tipo BIN

Funes de Arquivo

FileReadBool

L a partir de arquivo do tipo


CSV uma seqncia a partir da
posio
atual
at
um
delimitador (ou at o fim de
uma linha de texto) e converte
a seqncia de leitura para um
valor do tipo bool

Funes de Arquivo

FileReadDatetime

L a partir do arquivo do tipo


CSV uma seqncia de um dos
formatos:
"YYYY.MM.DD
HH:MM:SS", "YYYY.MM.DD" or
"HH:MM:SS" - e converte-os
dentro de valor de datetime

Funes de Arquivo

FileReadDouble

L um valor double a partir da


posio atual do ponteiro de
arquivo

Funes de Arquivo

FileReadFloat

L um valor float a partir da


posio atual do ponteiro de
arquivo

Funes de Arquivo

FileReadInteger

L um valor int, short ou char


a partir da posio atual do
ponteiro de arquivo

Funes de Arquivo

FileReadLong

L um valor do tipo long a


partir da posio atual do
ponteiro de arquivo

Funes de Arquivo

FileReadNumber

L a partir de arquivo do tipo


CSV uma seqncia a partir da
posio
atual
at
um
delimitador (ou at o fim de
uma linha de texto) e converte
a seqncia de leitura em um
valor double

Funes de Arquivo

FileReadString

L uma seqncia a partir da


posio atual do ponteiro a
partir de um arquivo

Funes de Arquivo

FileReadStruct

L o contedo de um arquivo
binrio em uma estrutura
passada como um parmetro,
a partir da posio atual do
ponteiro do arquivo

Funes de Arquivo

2000-2015, MetaQuotes Software Corp.

4185

List of MQL5 Functions

FileSeek

Move a posio do ponteiro de


arquivo por um determinado
nmero de bytes em relao
posio especificada

Funes de Arquivo

FileSize

Retorna
o
tamanho
da
abertura de um arquivo
correspondente

Funes de Arquivo

FileTell

Retorna a posio atual do


ponteiro de um arquivo da
abertura
de
arquivo
correspondente

Funes de Arquivo

FileWrite

Escreve dados
para
um
arquivo de CSV ou tipo TXT

Funes de Arquivo

FileWriteArray

Escreve arrays de qualquer


tipo exceto para seqncia em
um arquivo do tipo BIN

Funes de Arquivo

FileWriteDouble

Escreve valor do tipo double a


partir da posio atual de um
ponteiro de arquivo em um
arquivo binrio

Funes de Arquivo

FileWriteFloat

Escreve o valor do tipo float a


partir da posio atual de um
ponteiro de arquivo em um
arquivo binrio

Funes de Arquivo

FileWriteInteger

Escreve o valor do tipo int a


partir da posio atual de um
ponteiro de arquivo em um
arquivo binrio

Funes de Arquivo

FileWriteLong

Escreve o valor do tipo long a


partir da posio atual de um
ponteiro de arquivo em um
arquivo binrio

Funes de Arquivo

FileWriteString

Escreve o valor de um
parmetro da string em um
arquivo BIN ou TXT iniciando a
partir da posio atual do
ponteiro de arquivo

Funes de Arquivo

FileWriteStruct

Escreve o contedo de uma


estrutura passada como um
parmetro em um arquivo
binrio, comeando a partir da
posio atual do ponteiro de
arquivo

Funes de Arquivo

floor

Retorna

Funes Matemticas

valor

numrico

2000-2015, MetaQuotes Software Corp.

4186

List of MQL5 Functions

inteiro
abaixo

mais

prximo

do

fmax

Retorna o valor mximo entre


dois valores numricos

Funes Matemticas

fmin

Retorna de valor mnimo entre


dois valores numricos

Funes Matemticas

fmod

Retorna o resto real da diviso


de dois nmeros

Funes Matemticas

FolderClean

Deleta todos os arquivos


dentro da pasta especificada

Funes de Arquivo

FolderCreate

Cria uma pasta dentro do


diretrio de arquivo

Funes de Arquivo

FolderDelete

Remove
um
diretrio
selecionado. Se a pasta no
estiver vazia, ento ele no
pode ser removido

Funes de Arquivo

FrameAdd

Adiciona um quadro com dados

Trabalhando com Resultados


de Otimizao

FrameFilter

Define a estrutura do filtro de


leitura e move o ponteiro para
o incio

Trabalhando com Resultados


de Otimizao

FrameFirst

Move um ponteiro de leitura


de quadro para o incio e
redefine previamente
um
conjunto de filtros

Trabalhando com Resultados


de Otimizao

FrameInputs

Recebe
parmetros
de
entrada, no qual o quadro
formado

Trabalhando com Resultados


de Otimizao

FrameNext

L um quadro e move o
ponteiro para o prximo

Trabalhando com Resultados


de Otimizao

GetLastError

Retorna o ltimo erro

Verificando Estado

GetPointer

Retorna o ponteiro de objeto

Funes Comuns

GetTickCount

Retorno
o
nmero
de
milissegundos
decorridos
desde que o sistema foi
iniciado

Funes Comuns

GlobalVariableCheck

Verifica a existncia de uma


varivel global com o nome
especificado

Variveis Globais do Terminal

GlobalVariableDel

Exclui uma varivel global

Variveis Globais do Terminal

GlobalVariableGet

Retorna o valor da varivel

Variveis Globais do Terminal

2000-2015, MetaQuotes Software Corp.

4187

List of MQL5 Functions

global
GlobalVariableName

Retorna o nome de uma


varivel global, que o
nmero ordinal dentro da lista
de variveis globais

Variveis Globais do Terminal

GlobalVariablesDeleteAll

Exclui as variveis globais com


especificao prefixada em
seus nomes

Variveis Globais do Terminal

GlobalVariableSet

Define o novo valor para uma


varivel global

Variveis Globais do Terminal

GlobalVariableSetOnCondition

Define um novo valor de


existncia de varivel global
pela condio estabelecida

Variveis Globais do Terminal

GlobalVariablesFlush

Salva
foradamente
o
contedo de todas as varveis
globais num disco

Variveis Globais do Terminal

GlobalVariablesTotal

Retorna o nmero total de


Variveis Globais

Variveis Globais do Terminal

GlobalVariableTemp

Define o novo valor para uma


varivel global, que existe
somente na sesso geral do
terminal

Variveis Globais do Terminal

GlobalVariableTime

Retorna o tempo do ltimo


acesso para a varivel global

Variveis Globais do Terminal

HistoryDealGetDouble

Retorna
a
propriedade
solicitada de um acordo no
histrico (double)

Funes de Negociao
(Trade)

HistoryDealGetInteger

Retorna
a
propriedade
solicitada de um acordo no
histrico (datetime ou int)

Funes de Negociao
(Trade)

HistoryDealGetString

Retorna
a
propriedade
solicitada de uma operao no
histrico (string)

Funes de Negociao
(Trade)

HistoryDealGetTicket

Devolve um bilhete de uma


quantidade correspondente no
histrico

Funes de Negociao
(Trade)

HistoryDealSelect

Seleciona um negcio no
histrico
para
posterior
chamada atravs de funes
apropriadas

Funes de Negociao
(Trade)

HistoryDealsTotal

Retorna o nmero de ofertas


no histrico

Funes de Negociao
(Trade)

2000-2015, MetaQuotes Software Corp.

4188

List of MQL5 Functions

HistoryOrderGetDouble

Retorna
a
propriedade
solicitada de uma ordem no
histrico (double)

Funes de Negociao
(Trade)

HistoryOrderGetInteger

Retorna
a
propriedade
solicitada de uma ordem no
histrico (datetime ou int)

Funes de Negociao
(Trade)

HistoryOrderGetString

Retorna
a
propriedade
solicitada de uma ordem no
histrico (string)

Funes de Negociao
(Trade)

HistoryOrderGetTicket

Retornar bilhete ordem de


uma ordem correspondente no
histrico

Funes de Negociao
(Trade)

HistoryOrderSelect

Seleciona uma ordem no


histrico para posteriormente
trabalhar com ele

Funes de Negociao
(Trade)

HistoryOrdersTotal

Retorna o nmero de pedidos


no histrico

Funes de Negociao
(Trade)

HistorySelect

Recupera o histrico de
transaes e ordens para o
perodo do tempo de servidor
especificado

Funes de Negociao
(Trade)

HistorySelectByPosition

Pedido de histrico de acordo


com um identificador de
posio especificada.

Funes de Negociao
(Trade)

iAC

Accelerator Oscillator

Indicadores Tcnicos

iAD

Accumulation/Distribution

Indicadores Tcnicos

iADX

Average Directional Index

Indicadores Tcnicos

iADXWilder

Average Directional Index by


Welles Wilder

Indicadores Tcnicos

iAlligator

Alligator

Indicadores Tcnicos

iAMA

Adaptive Moving Average

Indicadores Tcnicos

iAO

Awesome Oscillator

Indicadores Tcnicos

iATR

Average True Range

Indicadores Tcnicos

iBands

Bollinger Bands

Indicadores Tcnicos

iBearsPower

Bears Power

Indicadores Tcnicos

iBullsPower

Bulls Power

Indicadores Tcnicos

iBWMFI

Market Facilitation Index by


Bill Williams

Indicadores Tcnicos

iCCI

Commodity Channel Index

Indicadores Tcnicos

2000-2015, MetaQuotes Software Corp.

4189

List of MQL5 Functions

iChaikin

Chaikin Oscillator

Indicadores Tcnicos

iCustom

Custom indicator

Indicadores Tcnicos

iDEMA

Double Exponential
Average

iDeMarker

DeMarker

Indicadores Tcnicos

iEnvelopes

Envelopes

Indicadores Tcnicos

iForce

Force Index

Indicadores Tcnicos

iFractals

Fractals

Indicadores Tcnicos

iFrAMA

Fractal
Average

iGator

Gator Oscillator

Indicadores Tcnicos

iIchimoku

Ichimoku Kinko Hyo

Indicadores Tcnicos

iMA

Moving Average

Indicadores Tcnicos

iMACD

Moving
Averages
Convergence-Divergence

Indicadores Tcnicos

iMFI

Money Flow Index

Indicadores Tcnicos

iMomentum

Momentum

Indicadores Tcnicos

IndicatorCreate

Retorna o handle para o


indicador tcnico especificado
criado por um array de
parmetros de tipo MqlParam

Sries Temporais e Acesso a


Indicadores

IndicatorParameters

Baseado
no
handle
especificado,
retorna
o
nmero de parmetros de
entrada do indicador, bem
como os valores e tipos dos
parmetros

Sries Temporais e Acesso a


Indicadores

IndicatorRelease

Remove
um
handle
de
indicador e libera o bloco de
clculo do indicador, se ele
no for usado por ningum
mais

Sries Temporais e Acesso a


Indicadores

IndicatorSetDouble

Define o valor da propriedade


de um indicador do tipo double

Indicadores Customizados

IndicatorSetInteger

Define o valor da propriedade


de um indicador do tipo int

Indicadores Customizados

IndicatorSetString

Define o valor da propriedade


de um indicador do tipo string

Indicadores Customizados

IntegerToString

Converte int em uma string de

Funes de Converso

Adaptive

Moving

Moving

2000-2015, MetaQuotes Software Corp.

Indicadores Tcnicos

Indicadores Tcnicos

4190

List of MQL5 Functions

comprimento predefinido
iOBV

On Balance Volume

Indicadores Tcnicos

iOsMA

Moving Average of Oscillator


(MACD histogram)

Indicadores Tcnicos

iRSI

Relative Strength Index

Indicadores Tcnicos

iRVI

Relative Vigor Index

Indicadores Tcnicos

iSAR

Parabolic Stop And Reverse


System

Indicadores Tcnicos

IsStopped

Retorna true, se um programa


mql5
foi
ordenado
a
interromper sua operao

Verificando Estado

iStdDev

Standard Deviation

Indicadores Tcnicos

iStochastic

Stochastic Oscillator

Indicadores Tcnicos

iTEMA

Triple Exponential
Average

Moving

Indicadores Tcnicos

iTriX

Triple Exponential
Averages Oscillator

Moving

Indicadores Tcnicos

iVIDyA

Variable
Average

DYnamic

Indicadores Tcnicos

iVolumes

Volumes

Indicadores Tcnicos

iWPR

Williams' Percent Range

Indicadores Tcnicos

log

Retorna o logaritmo natural

Funes Matemticas

log10

Retorna o logaritmo decimal


(de um nmero na base 10)

Funes Matemticas

MarketBookAdd

Fornece
abertura
da
Profundidade de Mercado para
um ativo selecionado, e
subscrever
para
receber
notificaes de alteraes do
DOM (Depth of Market)

Informaes de Mercado

MarketBookGet

Retorna um array de estrutura


MqlBookInfo
contendo
registros da Profundidade de
Mercado
de
uma
ativo
especificado

Informaes de Mercado

MarketBookRelease

Fornece
fechamento
da
Profundidade de Mercado para
um ativo selecionado, e
cancelar a subscrio para
receber
notificaes
de

Informaes de Mercado

Index

2000-2015, MetaQuotes Software Corp.

4191

List of MQL5 Functions

alteraes do DOM
MathAbs

Retorna o valor absoluto


(modulo) do valor numrico
especificado

Funes Matemticas

MathArccos

Retorna o arco-cosseno de x
em radianos

Funes Matemticas

MathArcsin

Retorna o arco-seno de x em
radianos

Funes Matemticas

MathArctan

Retorna o arco-tangente de x
em radianos

Funes Matemticas

MathCeil

Retorna o valor numrico


inteiro mais prximo do acima

Funes Matemticas

MathCos

Retorna o cosseno de um
nmero

Funes Matemticas

MathExp

Retorna o exponencial de um
nmero

Funes Matemticas

MathFloor

Retorna o valor numrico


inteiro mais prximo do
abaixo

Funes Matemticas

MathIsValidNumber

Verifica a validade de um
nmero real

Funes Matemticas

MathLog

Retorna o logaritmo natural

Funes Matemticas

MathLog10

Retorna o logaritmo decimal


(de um nmero na base 10)

Funes Matemticas

MathMax

Retorna o valor mximo entre


dois valores numricos

Funes Matemticas

MathMin

Retorna de valor mnimo entre


dois valores numricos

Funes Matemticas

MathMod

Retorna o resto real da diviso


de dois nmeros

Funes Matemticas

MathPow

Eleva uma base a um expoente


especificado

Funes Matemticas

MathRand

Retorna um valor pseudoaleatrio entre 0 e 32767

Funes Matemticas

MathRound

Arredonda um valor para o


inteiro mais prximo

Funes Matemticas

MathSin

Retorna o seno de um nmero

Funes Matemticas

MathSqrt

Retorna a raiz quadrada

Funes Matemticas

MathSrand

Define o ponto inicial para

Funes Matemticas

2000-2015, MetaQuotes Software Corp.

4192

List of MQL5 Functions

gerao de uma srie


inteiros pseudo-aleatrios

de

MathTan

Retorna a tangente de um
nmero

Funes Matemticas

MessageBox

Cria, exibe uma caixa de


mensagem e o gerencia

Funes Comuns

MQLInfoInteger

Retorna um valor inteiro de


uma
propriedade
correspondente
de
um
programa mql5 em execuo

Verificando Estado

MQLInfoString

Retorna um valor de string de


uma
propriedade
correspondente
de
um
programa mql5 em execuo

Verificando Estado

NormalizeDouble

Arredonda um nmero de
ponto flutuando para uma
preciso especificada

Funes de Converso

ObjectCreate

Cria um objecto de tipo


especfico para um grfico
especfico

Funes de Objeto

ObjectDelete

Remove o objeto com o nome


especfico a partir de um
grfico especfico (a partir de
grfico
de
sub-janela
especfica)

Funes de Objeto

ObjectFind

Pesquisa um objeto com o ID


especificado pelo nome

Funes de Objeto

ObjectGetDouble

Retorna o valor double da


propriedade
do
objeto
correspondente

Funes de Objeto

ObjectGetInteger

Retorna o valor integer da


propriedade
do
objeto
correspondente

Funes de Objeto

ObjectGetString

Retorna o valor string da


propriedade
do
objeto
correspondente

Funes de Objeto

ObjectGetTimeByValue

Retorna o valor de tempo ao


valor do preo do objeto
especifico

Funes de Objeto

ObjectGetValueByTime

Retorna o valor do preo de


um
objeto
ao
perodo
especificado

Funes de Objeto

2000-2015, MetaQuotes Software Corp.

4193

List of MQL5 Functions

ObjectMove

Muda as coordenadas do ponto


de ancoragem do objeto
especificado

Funes de Objeto

ObjectName

Retorna o nome de um objeto


do tipo correspondente para
um grfico especfico (grfico
de sub-janela especfica)

Funes de Objeto

ObjectsDeleteAll

Remove todos os objetos com


o tipo especfico a partir de
um grfico especfico (a partir
de grfico de sub-janela
especfica)

Funes de Objeto

ObjectSetDouble

Define o valor da propriedade


do objeto correspondente

Funes de Objeto

ObjectSetInteger

Define o valor da propriedade


do objeto correspondente

Funes de Objeto

ObjectSetString

Define o valor da propriedade


do objeto correspondente

Funes de Objeto

ObjectsTotal

Retorna o nmero de objetos


do tipo especifico no grfico
especificado (grfico de subjanela especfica)

Funes de Objeto

OrderCalcMargin

Calcula a margem necessria


para o tipo de ordem
especificado, na moeda de
depsito

Funes de Negociao
(Trade)

OrderCalcProfit

Calcula o lucro com base nos


parmetros
passados,
na
moeda de depsito

Funes de Negociao
(Trade)

OrderCheck

Verifica
se
h
fundos
suficientes para executar a
operao
de
negcio
necessria.

Funes de Negociao
(Trade)

OrderGetDouble

Retorna
a
propriedade
solicitada da ordem (double)

Funes de Negociao
(Trade)

OrderGetInteger

Retorna
a
propriedade
solicitada da ordem (datetime
ou int)

Funes de Negociao
(Trade)

OrderGetString

Retorna
a
propriedade
solicitada da ordem (string)

Funes de Negociao
(Trade)

OrderGetTicket

Devolver o bilhete de uma


ordem correspondente

Funes de Negociao
(Trade)

2000-2015, MetaQuotes Software Corp.

4194

List of MQL5 Functions

OrderSelect

Seleciona uma ordem para


posteriormente trabalhar com
ele

Funes de Negociao
(Trade)

OrderSend

Envia pedidos de
para um servidor

negcios

Funes de Negociao
(Trade)

OrderSendAsync

De forma assncrona envia


pedidos de comrcio sem
esperar
a
resposta
da
negociao do servidor de
negcio

Funes de Negociao
(Trade)

OrdersTotal

Retorna o nmero de ordens

Funes de Negociao
(Trade)

ParameterGetRange

Recebe os dados na faixa de


valores e o passo de alterao
para uma varivel de entrada
ao otimizar um Expert Advisor
no Testador de Estratgia

Trabalhando com Resultados


de Otimizao

ParameterSetRange

Especifica o uso de varivel de


entrada ao otimizar um Expert
Advisor no Testador de
Estratgia: valor, mudana de
passo, os valores iniciais e
finais

Trabalhando com Resultados


de Otimizao

Period

Retorna a janela de tempo do


grfico corrente

Verificando Estado

PeriodSeconds

Retorna o nmero de segundos


no perodo

Funes Comuns

PlaySound

Toca um arquivo de som

Funes Comuns

PlotIndexGetInteger

Retorna o valor da propriedade


de linha de um indicador do
tipo inteiro

Indicadores Customizados

PlotIndexSetDouble

Define o valor da propriedade


de linha de um indicador do
tipo double

Indicadores Customizados

PlotIndexSetInteger

Define o valor da propriedade


de linha de um indicador do
tipo int

Indicadores Customizados

PlotIndexSetString

Define o valor da propriedade


de linha de um indicador do
tipo string

Indicadores Customizados

Point

Retorna o tamanho do ponto


do smbolo atual na moeda de
cotao.

Verificando Estado

2000-2015, MetaQuotes Software Corp.

4195

List of MQL5 Functions

PositionGetDouble

Retorna
a
propriedade
solicitado de uma posio
aberta (double)

Funes de Negociao
(Trade)

PositionGetInteger

Retorna
a
propriedade
solicitada uma posio aberta
(datetime ou int)

Funes de Negociao
(Trade)

PositionGetString

Retorna
a
propriedade
solicitada uma posio aberta
(string)

Funes de Negociao
(Trade)

PositionGetSymbol

Retorna
o
correspondente
aberta

smbolo
posio

Funes de Negociao
(Trade)

PositionSelect

Escolhe uma posio aberta


para posteriormente trabalhar
com ele

Funes de Negociao
(Trade)

PositionsTotal

Retorna o nmero de posies


em aberto

Funes de Negociao
(Trade)

pow

Eleva uma base a um expoente


especificado

Funes Matemticas

Print

Exibe uma mensagem no log

Funes Comuns

PrintFormat

Formata e imprime um
conjunto de smbolos e valores
em um arquivo de log de
acordo com um formato
predefinido

Funes Comuns

rand

Retorna um valor pseudoaleatrio entre 0 e 32767

Funes Matemticas

ResetLastError

Define o valor da varivel


predeterminada
_LastError
para zero

Funes Comuns

ResourceCreate

Cria um recurso de imagem


baseado em um conjunto de
dados

Funes Comuns

ResourceFree

Exclui
recursos
criados
dinamicamente (liberando a
memria alocada para ele)

Funes Comuns

ResourceReadImage

L os dados do recurso
grfico criado pela funo
ResourceCreate() ou salvo em
arquivo
EX5
durante
a
compilao

Funes Comuns

ResourceSave

Salva um recurso

Funes Comuns

em

um

2000-2015, MetaQuotes Software Corp.

4196

List of MQL5 Functions

arquivo especificado
round

Arredonda um valor para o


inteiro mais prximo

Funes Matemticas

SendFTP

Envia um arquivo no endereo


especificado na janela de
configuraes da guia "FTP"

Funes Comuns

SendMail

Envia um email no endereo


especificado na janela de
configuraes da guia "Email"

Funes Comuns

SendNotification

Envia notificaes push para


terminais
mveis,
cujos
MetaQuotes
ID's
esto
especificados
na
guia
"Notificaes"

Funes Comuns

SeriesInfoInteger

Retorna informao sobre o


estado dos dados histricos

Sries Temporais e Acesso a


Indicadores

SetIndexBuffer

Vincula-se
o
buffer
de
indicador especificado com
dinmica unidimensional array
do tipo double

Indicadores Customizados

ShortArrayToString

Copia parte de um array em


uma string

Funes de Converso

ShortToString

Converte cdigo de smbolo


(unicode) em string de um
smbolo

Funes de Converso

SignalBaseGetDouble

Returns the value of double


type property for selected
signal

Trade Signals

SignalBaseGetInteger

Returns the value of integer


type property for selected
signal

Trade Signals

SignalBaseGetString

Returns the value of string


type property for selected
signal

Trade Signals

SignalBaseSelect

Selects a signal from signals,


available in terminal for
further working with it

Trade Signals

SignalBaseTotal

Returns the total amount of


signals, available in terminal

Trade Signals

SignalInfoGetDouble

Returns the value of double


type property of signal copy
settings

Trade Signals

2000-2015, MetaQuotes Software Corp.

4197

List of MQL5 Functions

SignalInfoGetInteger

Returns the value of integer


type property of signal copy
settings

Trade Signals

SignalInfoGetString

Returns the value of string


type property of signal copy
settings

Trade Signals

SignalInfoSetDouble

Sets the value of double type


property
of
signal copy
settings

Trade Signals

SignalInfoSetInteger

Sets the value of integer type


property
of
signal copy
settings

Trade Signals

SignalSubscribe

Subscribes
signal

Trade Signals

SignalUnsubscribe

Cancels subscription

Trade Signals

sin

Retorna o seno de um nmero

Funes Matemticas

Sleep

Suspende por um intervalo


especificado a execuo do
Expert Advisor corrente ou
script

Funes Comuns

sqrt

Retorna a raiz quadrada

Funes Matemticas

srand

Define o ponto inicial para


gerao de uma srie de
inteiros pseudo-aleatrios

Funes Matemticas

StringAdd

Adiciona uma string no final


de uma outra string

Funes de String

StringBufferLen

Retorna o tamanho de buffer


alocado para uma string

Funes de String

StringCompare

Compara duas string e retorna


1 se a primeira string for
maior que a segunda; 0 - se as
string so iguais; -1 (menos 1)
- se a primeira string for
menor que a segunda.

Funes de String

StringConcatenate

Forma
uma
string
parmetros passados

dos

Funes de String

StringFill

Preenche
especificada
selecionados

string
smbolos

Funes de String

StringFind

Busca por uma substring em


uma string

Funes de String

to

the

uma
com

trading

2000-2015, MetaQuotes Software Corp.

4198

List of MQL5 Functions

StringFormat

Converte um nmero
string de acordo com
formato predefinido

em
um

StringGetCharacter

Retorna o valor de um nmero


localizado na posio de string
especificada

Funes de String

StringInit

Inicializa uma string com


smbolos
especificados
e
fornece o comprimento da
string especificada

Funes de String

StringLen

Retorna o nmero de smbolos


em uma string

Funes de String

StringReplace

Substitui todas as substrings


encontradas em uma string
por
uma
seqncia
de
smbolos

Funes de String

StringSetCharacter

Retorna uma cpia de uma


string com o valor alterado de
um smbolo
na
posio
especificada

Funes de String

StringSplit

Obtm substrings a partir de


um separador especificado da
string especificada, retorna o
nmero de substrings obtidas

Funes de String

StringSubstr

Extrai uma substring a partir


de uma string de texto
comeando a partir de uma
posio especificada

Funes de String

StringToCharArray

Copia smbolo a smbolo uma


string convertida de Unicode
para ANSI, para um lugar
selecionado de um array de
tipo uchar

Funes de Converso

StringToColor

Converte uma string "R,G,B"


ou uma string com nome de
cor em valor de tipo color

Funes de Converso

StringToDouble

Converte uma string contendo


um representao de smbolo
de nmero em um nmero de
tipo double

Funes de Converso

StringToInteger

Converte uma string contendo


uma representao de smbolo
de nmero em um nmero de
tipo int

Funes de Converso

2000-2015, MetaQuotes Software Corp.

Funes de Converso

4199

List of MQL5 Functions

StringToLower

Transforma todos os smbolos


de uma string selecionada
para
minscula
pela
localizao

Funes de String

StringToShortArray

Copia smbolo a smbolo uma


string
para
uma
parte
selecionada de array de tipo
ushort

Funes de Converso

StringToTime

Converte uma string contendo


hora ou data no formato
"yyyy.mm.dd [hh:mi]" em um
tipo datetime

Funes de Converso

StringToUpper

Transforma todos os smbolos


de uma string selecionada
para
maiscula
pela
localizao

Funes de String

StringTrimLeft

Remove caracteres de quebra


de linha, espaos e tabs na
parte esquerda da string

Funes de String

StringTrimRight

Remove caracteres de quebra


de linha, espaos e tabs na
parte direita da string

Funes de String

StructToTime

Converte uma varivel do tipo


estrutura MqlDateTime em um
valor datetime

Data e Hora

Symbol

Retorna o nome do ativo do


grfico corrente

Verificando Estado

SymbolInfoDouble

Retorna um valor double de


um ativo para a propriedade
correspondente

Informaes de Mercado

SymbolInfoInteger

Retorna um valor de tipo


inteiro (long, datetime, int ou
bool) de um ativo especificado
para
a
propriedade
correspondente

Informaes de Mercado

SymbolInfoMarginRate

Returns the margin rates


depending on the order type
and direction

Informaes de Mercado

SymbolInfoSessionQuote

Permite obter a hora de incio


e fim das sesses de cotao
especificadas para um ativo
especificado e dia da semana.

Informaes de Mercado

SymbolInfoSessionTrade

Permite obter a hora de incio


e fim das sesses de

Informaes de Mercado

2000-2015, MetaQuotes Software Corp.

4200

List of MQL5 Functions

negociao especificadas para


um ativo especificado e dia da
semana.
SymbolInfoString

Retorna um valor do tipo


string
de
um
ativo
especificado
para
a
propriedade correspondente

Informaes de Mercado

SymbolInfoTick

Retorna os preos correntes


para um ativo especificado em
uma varivel do tipo MqlTick

Informaes de Mercado

SymbolIsSynchronized

Verifica se dados de um ativo


selecionado no terminal esto
sincronizados com dados no
servidor de negociaes

Informaes de Mercado

SymbolName

Retorna o nome de um ativo


especificado

Informaes de Mercado

SymbolSelect

Seleciona um ativo na janela


Observao de Mercado ou
remove um ativo desta janela

Informaes de Mercado

SymbolsTotal

Retorna o nmero de ativos


disponveis (selecionados na
janela Observao de Mercado
ou todos)

Informaes de Mercado

tan

Retorna a tangente de um
nmero

Funes Matemticas

TerminalClose

Ordena o terminal a finalizar a


operao

Funes Comuns

TerminalInfoDouble

Retorna um valor de double de


uma
propriedade
correspondente do ambiente
de um programa mql5

Verificando Estado

TerminalInfoInteger

Retorna um valor inteiro de


uma
propriedade
correspondente do ambiente
de um programa mql5

Verificando Estado

TerminalInfoString

Retorna um valor de string de


uma
propriedade
correspondente do ambiente
de um programa mql5

Verificando Estado

TesterStatistics

Retorna o valor de uma


estatstica especfica calculada
com base em resultados de
teste

Funes Comuns

2000-2015, MetaQuotes Software Corp.

4201

List of MQL5 Functions

TextGetSize

Retorna a largura e a altura da


string nas configuraes das
fontes usadas no momento

Funes de Objeto

TextOut

Transfere o texto para um


array personalizado (buffer)
projetado para a criao de
recursos grficos

Funes de Objeto

TextSetFont

Define a fonte para exibir o


texto usando mtodos de
desenho (Arial 20, usado por
padro)

Funes de Objeto

TimeCurrent

Retorna
a
ltima
hora
conhecida do servidor (hora da
ltima cotao recebida) no
formato de datetime(

Data e Hora

TimeDaylightSavings

Retorna o sinal do ajuste do


horrio de vero

Data e Hora

TimeGMT

Retorna a hora GMT em


formato datetime com o
horrio de vero por hora local
do computador, de onde o
terminal
cliente
est
executando

Data e Hora

TimeGMTOffset

Retorna a diferena corrente


entre a hora GMT e a hora do
computador
local
em
segundos,
levando
em
considerao o ajuste do
horrio de vero

Data e Hora

TimeLocal

Retorna a hora do computador


local em formato datetime

Data e Hora

TimeToString

Converte um valor contendo


hora em segundos decorridos
deste 01.01.1970 em uma
string de formato "yyyy.mm.dd
hh:mi"

Funes de Converso

TimeToStruct

Converte um valor datetime


em uma varivel do tipo
estrutura MqlDateTime

Data e Hora

TimeTradeServer

Retorna a hora calculada


corrente do servidor de
negociao

Data e Hora

UninitializeReason

Retorna o cdigo do motivo da


desinicializao

Verificando Estado

2000-2015, MetaQuotes Software Corp.

4202

List of MQL5 Functions

WebRequest

Sends HTTP request to the


specified server

Funes Comuns

ZeroMemory

Redefine
uma
varivel
passada
para
ela
por
referncia. A varivel pode ser
de qualquer tipo, exceto
classes e estruturas que
tenham construtores.

Funes Comuns

2000-2015, MetaQuotes Software Corp.

4203

List of MQL5 Constants

List of MQL5 Constants


All MQL5 constants in alphabetical order.
Constant

Description

Usage

__DATE__

Data de compilao do arquivo


sem a hora (horas, minutos e
segundos so iguais a 0)

Print

__DATETIME__

Data e hora de compilao do


arquivo

Print

__FILE__

Nome do arquivo compilado


corrente

Print

__FUNCSIG__

Assinatura da funo em cujo


corpo a macro est localizada.
O registro da
descrio
completa de funes pode ser
til na
identificao
de
funes sobrecarregadas

Print

__FUNCTION__

Nome da funo, em cujo


corpo a macro est localizada

Print

__LINE__

Assinatura da funo em cujo


corpo a macro est localizada.

Print

__MQLBUILD__,
__MQL5BUILD__

Nmero do compilao

Print

__PATH__

O caminho absoluto para o


arquivo que est
sendo
compilado correntemente

Print

ACCOUNT_ASSETS

The current
account

an

AccountInfoDouble

ACCOUNT_BALANCE

Saldo da conta na moeda de


depsito

AccountInfoDouble

ACCOUNT_COMMISSION_BLOC
KED

The
current
blocked
commission amount on an
account

AccountInfoDouble

ACCOUNT_COMPANY

Nome de uma empresa que


serve a conta

AccountInfoString

ACCOUNT_CREDIT

Crdito da conta na moeda de


depsito

AccountInfoDouble

ACCOUNT_CURRENCY

Moeda da conta

AccountInfoString

ACCOUNT_EQUITY

Saldo a mercado da conta na


moeda de depsito

AccountInfoDouble

assets

of

2000-2015, MetaQuotes Software Corp.

4204

List of MQL5 Constants

ACCOUNT_LEVERAGE

Alavancagem da conta

AccountInfoInteger

ACCOUNT_LIABILITIES

The current liabilities on an


account

AccountInfoDouble

ACCOUNT_LIMIT_ORDERS

Nmero permitido mximo de


ordens pendentes ativas

AccountInfoInteger

ACCOUNT_LOGIN

Nmero da conta

AccountInfoInteger

ACCOUNT_MARGIN

Margem da conta usada na


moeda de depsito

AccountInfoDouble

ACCOUNT_MARGIN_FREE

Margem livre de uma conta na


moeda de depsito

AccountInfoDouble

ACCOUNT_MARGIN_INITIAL

Initial margin. The amount


reserved on an account to
cover the margin of all pending
orders

AccountInfoDouble

ACCOUNT_MARGIN_LEVEL

Nvel de margem de conta em


percentagem

AccountInfoDouble

ACCOUNT_MARGIN_MAINTENA
NCE

Maintenance
margin.
The
minimum equity reserved on an
account to cover the minimum
amount of all open positions

AccountInfoDouble

ACCOUNT_MARGIN_SO_CALL

Nvel de chamada de margem.


Dependendo da definio,
ACCOUNT_MARGIN_SO_MODE
expresso em percentagem
ou em moeda de depsito

AccountInfoDouble

ACCOUNT_MARGIN_SO_MODE

Modo para definir a margem


permitida mnima

AccountInfoInteger

ACCOUNT_MARGIN_SO_SO

Nvel de margem de Stop Out


(encerramento
forado).
Dependendo da definio,
ACCOUNT_MARGIN_SO_MODE
expresso em percentagem
ou em moeda de depsito

AccountInfoDouble

ACCOUNT_NAME

Nome do cliente

AccountInfoString

ACCOUNT_PROFIT

Lucro atual de uma conta na


moeda de depsito

AccountInfoDouble

ACCOUNT_SERVER

Nome
do
negociao

AccountInfoString

ACCOUNT_STOPOUT_MODE_M
ONEY

Modo stop out da conta em


dinheiro

AccountInfoInteger

ACCOUNT_STOPOUT_MODE_PE

Modo stop out da conta em

AccountInfoInteger

servidor

de

2000-2015, MetaQuotes Software Corp.

4205

List of MQL5 Constants

RCENT

percentagem

ACCOUNT_TRADE_ALLOWED

Negociao permitida para a


conta atual

AccountInfoInteger

ACCOUNT_TRADE_EXPERT

Negociao permitida para um


Expert Advisor

AccountInfoInteger

ACCOUNT_TRADE_MODE

Modo de negociao da conta

AccountInfoInteger

ACCOUNT_TRADE_MODE_CON
TEST

Conta de torneio

AccountInfoInteger

ACCOUNT_TRADE_MODE_DEM
O

Conta de Demonstrao

AccountInfoInteger

ACCOUNT_TRADE_MODE_REAL

Conta real

AccountInfoInteger

ALIGN_CENTER

Centrado (somente
objeto Edit)

ALIGN_LEFT

Alinhamento a esquerda

ObjectSetInteger,
ObjectGetInteger,
ChartScreenShot

ALIGN_RIGHT

Alinhamento a direita

ObjectSetInteger,
ObjectGetInteger,
ChartScreenShot

ANCHOR_CENTER

Ponto
de
ancoragem
rigorosamente no centro do
objeto

ObjectSetInteger,
ObjectGetInteger

ANCHOR_LEFT

Ponto de ancoragem para a


esquerda no centro

ObjectSetInteger,
ObjectGetInteger

ANCHOR_LEFT_LOWER

Ponto de ancoragem no canto


inferior esquerdo

ObjectSetInteger,
ObjectGetInteger

ANCHOR_LEFT_UPPER

Ponto de ancoragem no canto


superior esquerdo

ObjectSetInteger,
ObjectGetInteger

ANCHOR_LOWER

Ponto de ancoragem abaixo no


centro

ObjectSetInteger,
ObjectGetInteger

ANCHOR_RIGHT

Ponto de ancoragem para a


direita no centro

ObjectSetInteger,
ObjectGetInteger

ANCHOR_RIGHT_LOWER

Ponto de ancoragem no canto


inferior direito

ObjectSetInteger,
ObjectGetInteger

ANCHOR_RIGHT_UPPER

Ponto de ancoragem no canto


superior direito

ObjectSetInteger,
ObjectGetInteger

ANCHOR_UPPER

Ponto de ancoragem acima no


centro

ObjectSetInteger,
ObjectGetInteger

BASE_LINE

Linha principal

Linhas de Indicadores

para

2000-2015, MetaQuotes Software Corp.

ObjectSetInteger,
ObjectGetInteger,
ChartScreenShot

4206

List of MQL5 Constants

BOOK_TYPE_BUY

Ordem de compra (Bid)

MqlBookInfo

BOOK_TYPE_BUY_MARKET

Ordem de venda (Offer)

MqlBookInfo

BOOK_TYPE_SELL

Ordem de venda (Offer)

MqlBookInfo

BOOK_TYPE_SELL_MARKET

Ordem de venda (Offer)

MqlBookInfo

BORDER_FLAT

Forma lisa

ObjectSetInteger,
ObjectGetInteger

BORDER_RAISED

Forma em relevo

ObjectSetInteger,
ObjectGetInteger

BORDER_SUNKEN

Forma cavada

ObjectSetInteger,
ObjectGetInteger

CHAR_MAX

Valor mximo, que pode ser


representado pelo tipo char

Constantes de Tipo Numrico

CHAR_MIN

Valor mnimo, que pode ser


representado pelo tipo char

Constantes de Tipo Numrico

CHART_AUTOSCROLL

Modo
de
movimentao
automtica para a borda
direita do grfico

ChartSetInteger,
ChartGetInteger

CHART_BARS

Exibe como uma seqncia de


barras

ChartSetInteger

CHART_BEGIN

Comeo do grfico (o preo


mais antigo)

ChartNavigate

CHART_BRING_TO_TOP

Exibe o grfico no topo de


outros grficos

ChartSetInteger,
ChartGetInteger

CHART_CANDLES

Exibe como candles japoneses

ChartSetInteger

CHART_COLOR_ASK

Cor de nvel de preo de


compra

ChartSetInteger,
ChartGetInteger

CHART_COLOR_BACKGROUND

Cor de fundo do grfico

ChartSetInteger,
ChartGetInteger

CHART_COLOR_BID

Cor de nvel de preo de venda

ChartSetInteger,
ChartGetInteger

CHART_COLOR_CANDLE_BEAR

Cor de corpo de um candle de


baixa

ChartSetInteger,
ChartGetInteger

CHART_COLOR_CANDLE_BULL

Cor de corpo de um candle de


alta

ChartSetInteger,
ChartGetInteger

CHART_COLOR_CHART_DOWN

Cor para a barra de baixa,


sombras e bordas de candles
de baixa

ChartSetInteger,
ChartGetInteger

CHART_COLOR_CHART_LINE

Cor de grfico de linha e cor


de candles "Doji" japoneses

ChartSetInteger,
ChartGetInteger

2000-2015, MetaQuotes Software Corp.

4207

List of MQL5 Constants

CHART_COLOR_CHART_UP

Cor para a barra de alta,


sombras e bordas de candles
de alta

ChartSetInteger,
ChartGetInteger

CHART_COLOR_FOREGROUND

Cor dos eixos, escalas e linha


OHLC

ChartSetInteger,
ChartGetInteger

CHART_COLOR_GRID

Cor da grade

ChartSetInteger,
ChartGetInteger

CHART_COLOR_LAST

Cor de linha do ltimo preo


de operao executada

ChartSetInteger,
ChartGetInteger

CHART_COLOR_STOP_LEVEL

Cor de nveis de ordem de


stop (Stop Loss e Take Profit)

ChartSetInteger,
ChartGetInteger

CHART_COLOR_VOLUME

Cor dos volumes e nveis de


abertura de posio

ChartSetInteger,
ChartGetInteger

CHART_COMMENT

Texto de um comentrio em
um grfico

ChartSetString,
ChartGetString

CHART_CURRENT_POS

Posio corrente

ChartNavigate

CHART_DRAG_TRADE_LEVELS

Permisso para arrastar os


nveis de negociao num
grfico com um mouse. O
modo de arrastar ativado
pelo padro (valor verdadeiro)

ChartSetInteger,
ChartGetInteger

CHART_EVENT_MOUSE_MOVE

Eventos
CHARTEVENT_MOUSE_MOVE)
envia
notificaes
de
movimento de mouse e clique
de mouse a
todos
os
programas MQL5 num grfico

ChartSetInteger,
ChartGetInteger

CHART_EVENT_OBJECT_CREA
TE

Envia uma notificao de um


evento de criao de novo
objeto
(CHARTEVENT_OBJECT_CREAT
E) para todos os programas
MQL5 em um grfico

ChartSetInteger,
ChartGetInteger

CHART_EVENT_OBJECT_DELET
E

Envia uma notificao de um


evento de excluso de objeto
(CHARTEVENT_OBJECT_DELET
E) para todos os programas
MQL5 em um grfico

ChartSetInteger,
ChartGetInteger

CHART_FIRST_VISIBLE_BAR

Nmero das primeiras barras


visveis
no
grfico.
A
indexao de barras a
mesma para sries de tempo.

ChartSetInteger,
ChartGetInteger

CHART_FIXED_MAX

Mximo fixo do grfico

ChartSetDouble,

2000-2015, MetaQuotes Software Corp.

4208

List of MQL5 Constants

ChartGetDouble
CHART_FIXED_MIN

Mnimo fixo do grfico

ChartSetDouble,
ChartGetDouble

CHART_FIXED_POSITION

Posio fixa do grfico a partir


da borda esquerda em valor
percentual. A posio fixa do
grfico marcada por um
pequeno tringulo cinza no
eixo do tempo horizontal. Ele
exibido somente se a
rolagem automtica do grfico
para a direita na chegada de
um tick (preo novo) estiver
desabilitada
(veja
a
propriedade
CHART_AUTOSCROLL).
A
barra em uma posio fixa
permanece no mesmo lugar ao
se ampliar e reduzir o grfico.

ChartSetDouble,
ChartGetDouble

CHART_FOREGROUND

Grfico de preos no primeiro


plano

ChartSetInteger,
ChartGetInteger

CHART_HEIGHT_IN_PIXELS

Altura de grfico em pixels

ChartSetInteger,
ChartGetInteger

CHART_IS_OBJECT

Identificado
objeto
de
"Grfico"
(OBJ_CHART)
retorna verdadeiro para um
objeto grfico. Retorna falso
para um grfico real

ChartSetInteger,
ChartGetInteger

CHART_LINE

Exibe como uma linha desenha


por preos de fechamento

ChartSetInteger

CHART_MODE

Tipo de grfico
barras ou linha)

(candles,

ChartSetInteger,
ChartGetInteger

CHART_MOUSE_SCROLL

Rolagem
do
grfico
horizontalmente usando
o
boto esquerdo do mouse.
Rolagem vertical tambm est
disponvel se for definido
como verdadeiro o valor de
todas
as
seguintes
propriedades:
CHART_SCALEFIX,
CHART_SCALEFIX_11
ou
CHART_SCALE_PT_PER_BAR

ChartSetInteger,
ChartGetInteger

CHART_POINTS_PER_BAR

Escala em pontos por barra

ChartSetDouble,
ChartGetDouble

2000-2015, MetaQuotes Software Corp.

4209

List of MQL5 Constants

CHART_PRICE_MAX

Mximo do grfico

ChartSetDouble,
ChartGetDouble

CHART_PRICE_MIN

Mnimo do grfico

ChartSetDouble,
ChartGetDouble

CHART_SCALE

Escala

ChartSetInteger,
ChartGetInteger

CHART_SCALE_PT_PER_BAR

Escala para ser especificada


em pontos por barra

ChartSetInteger,
ChartGetInteger

CHART_SCALEFIX

Modo de escala fixo

ChartSetInteger,
ChartGetInteger

CHART_SCALEFIX_11

Modo de escala 1:1

ChartSetInteger,
ChartGetInteger

CHART_SHIFT

Modo de encaixe do grfico de


preo a partir da borda direita

ChartSetInteger,
ChartGetInteger

CHART_SHIFT_SIZE

O tamanho da barra zero


encaixada a partir da borda
direita em porcentagens

ChartSetDouble,
ChartGetDouble

CHART_SHOW_ASK_LINE

Exibe valores de preo de


compra como uma linha
horizontal em um grfico

ChartSetInteger,
ChartGetInteger

CHART_SHOW_BID_LINE

Exibe valores de preo de


venda
como
uma
linha
horizontal em um grfico

ChartSetInteger,
ChartGetInteger

CHART_SHOW_DATE_SCALE

Exibio da escala de tempo


em um grfico

ChartSetInteger,
ChartGetInteger

CHART_SHOW_GRID

Exibe grade no grfico

ChartSetInteger,
ChartGetInteger

CHART_SHOW_LAST_LINE

Exibe valores de ltimo preo


como uma linha horizontal em
um grfico

ChartSetInteger,
ChartGetInteger

CHART_SHOW_OBJECT_DESCR

Descries pop-up de objetos


grficos

ChartSetInteger,
ChartGetInteger

CHART_SHOW_OHLC

Exibe valores OHLC no canto


superior esquerdo

ChartSetInteger,
ChartGetInteger

CHART_SHOW_ONE_CLICK

Showing
the "One
click
trading" panel on a chart

ChartSetInteger,
ChartGetInteger

CHART_SHOW_PERIOD_SEP

Exibe separadores verticais


entre perodos adjacentes

ChartSetInteger,
ChartGetInteger

CHART_SHOW_PRICE_SCALE

Exibio da escala de preo


em um grfico

ChartSetInteger,
ChartGetInteger

2000-2015, MetaQuotes Software Corp.

4210

List of MQL5 Constants

CHART_SHOW_TRADE_LEVELS

Exibio
de
nveis
de
negociao no grfico (nveis
de abertura de posio, Stop
Loss, Take Profit e ordens
pendentes

ChartSetInteger,
ChartGetInteger

CHART_SHOW_VOLUMES

Exibe volume no grfico

ChartSetInteger,
ChartGetInteger

CHART_VISIBLE_BARS

O nmero de barras no grfico


que podem ser exibidas

ChartSetInteger,
ChartGetInteger

CHART_VOLUME_HIDE

Volumes no so exibidos

ChartSetInteger

CHART_VOLUME_REAL

Volume de negociao

ChartSetInteger

CHART_VOLUME_TICK

Volumes de tick (mudana de


preo)

ChartSetInteger

CHART_WIDTH_IN_BARS

Largura de grfico em barras

ChartSetInteger,
ChartGetInteger

CHART_WIDTH_IN_PIXELS

Largura de grfico em pixels

ChartSetInteger,
ChartGetInteger

CHART_WINDOW_HANDLE

Manuseio da janela do grfico


(HWND)

ChartSetInteger,
ChartGetInteger

CHART_WINDOW_IS_VISIBLE

Visibilidade de sub-janelas

ChartSetInteger,
ChartGetInteger

CHART_WINDOW_YDISTANCE

A distncia entre a moldura


superior da sub-janela do
indicador e a moldura superior
da janela do grfico principal,
ao longo do eixo Y vertical, in
pixels. No caso de um evento
de mouse, as coordenadas do
cursor so passadas em
termos das coordenadas da
janela do grfico principal,
enquanto que as coordenadas
de objetos grficos em uma
sub-janela do indicador so
definidas em relao ao canto
superior esquerdo da subjanela.
O valor requerido para
converter as
coordenadas
absolutas do grfico principal
em coordenadas locais da subjanela para correto trabalho
com os objetos grficos, cujas
coordenadas so definidas em
relao ao canto superior

ChartSetInteger,
ChartGetInteger

2000-2015, MetaQuotes Software Corp.

4211

List of MQL5 Constants

esquerdo da moldura da subjanela.


CHART_WINDOWS_TOTAL

O nmero total de janelas de


grficos, incluindo sub-janelas
de indicadores

ChartSetInteger,
ChartGetInteger

CHARTEVENT_CHART_CHANGE

Alterao do tamanho do
grfico ou modificao das
propriedades
do
grfico
atravs
da
janela
de
Propriedades

OnChartEvent

CHARTEVENT_CLICK

Dar um clique em um grfico

OnChartEvent

CHARTEVENT_CUSTOM

O nmero inicial de um evento


de uma faixa de eventos
customizados

OnChartEvent

CHARTEVENT_CUSTOM_LAST

O nmero final de um evento


de uma faixa de eventos
customizados

OnChartEvent

CHARTEVENT_KEYDOWN

Teclada

OnChartEvent

CHARTEVENT_MOUSE_MOVE

Movimento de mouse, cliques


de
mouse
(se
CHART_EVENT_MOUSE_MOVE=
true definido para o grfico)

OnChartEvent

CHARTEVENT_OBJECT_CHANG
E

Propriedade do objeto grfico


alterada via janela de dilogo
de propriedades

OnChartEvent

CHARTEVENT_OBJECT_CLICK

Dar um clique em um objeto


grfico

OnChartEvent

CHARTEVENT_OBJECT_CREAT
E

Objeto grfico criado (se


CHART_EVENT_OBJECT_CREA
TE=true definido para o
grfico)

OnChartEvent

CHARTEVENT_OBJECT_DELETE

Objeto grficoexcludo (se


CHART_EVENT_OBJECT_DELET
E=true definido para o
grfico)

OnChartEvent

CHARTEVENT_OBJECT_DRAG

Arrastar e soltar um objeto


grfico

OnChartEvent

CHARTEVENT_OBJECT_ENDEDI
T

Fim de edio de texto no


objeto grfico Edit

OnChartEvent

CHARTS_MAX

O nmero possvel mximo de


grficos
abertos
simultaneamente
em
um

Outras Constantes

2000-2015, MetaQuotes Software Corp.

4212

List of MQL5 Constants

terminal
CHIKOUSPAN_LINE

Linha Chikou Span

Linhas de Indicadores

clrAliceBlue

Alice Blue

Cores Web

clrAntiqueWhite

Antique White

Cores Web

clrAqua

Aqua

Cores Web

clrAquamarine

Aquamarine

Cores Web

clrBeige

Beige

Cores Web

clrBisque

Bisque

Cores Web

clrBlack

Black

Cores Web

clrBlanchedAlmond

Blanched Almond

Cores Web

clrBlue

Blue

Cores Web

clrBlueViolet

Blue Violet

Cores Web

clrBrown

Brown

Cores Web

clrBurlyWood

Burly Wood

Cores Web

clrCadetBlue

Cadet Blue

Cores Web

clrChartreuse

Chartreuse

Cores Web

clrChocolate

Chocolate

Cores Web

clrCoral

Coral

Cores Web

clrCornflowerBlue

Cornflower Blue

Cores Web

clrCornsilk

Cornsilk

Cores Web

clrCrimson

Crimson

Cores Web

clrDarkBlue

Dark Blue

Cores Web

clrDarkGoldenrod

Dark Goldenrod

Cores Web

clrDarkGray

Dark Gray

Cores Web

clrDarkGreen

Dark Green

Cores Web

clrDarkKhaki

Dark Khaki

Cores Web

clrDarkOliveGreen

Dark Olive Green

Cores Web

clrDarkOrange

Dark Orange

Cores Web

clrDarkOrchid

Dark Orchid

Cores Web

clrDarkSalmon

Dark Salmon

Cores Web

clrDarkSeaGreen

Dark Sea Green

Cores Web

clrDarkSlateBlue

Dark Slate Blue

Cores Web

2000-2015, MetaQuotes Software Corp.

4213

List of MQL5 Constants

clrDarkSlateGray

Dark Slate Gray

Cores Web

clrDarkTurquoise

Dark Turquoise

Cores Web

clrDarkViolet

Dark Violet

Cores Web

clrDeepPink

Deep Pink

Cores Web

clrDeepSkyBlue

Deep Sky Blue

Cores Web

clrDimGray

Dim Gray

Cores Web

clrDodgerBlue

Dodger Blue

Cores Web

clrFireBrick

Fire Brick

Cores Web

clrForestGreen

Forest Green

Cores Web

clrGainsboro

Gainsboro

Cores Web

clrGold

Gold

Cores Web

clrGoldenrod

Goldenrod

Cores Web

clrGray

Gray

Cores Web

clrGreen

Green

Cores Web

clrGreenYellow

Green Yellow

Cores Web

clrHoneydew

Honeydew

Cores Web

clrHotPink

Hot Pink

Cores Web

clrIndianRed

Indian Red

Cores Web

clrIndigo

Indigo

Cores Web

clrIvory

Ivory

Cores Web

clrKhaki

Khaki

Cores Web

clrLavender

Lavender

Cores Web

clrLavenderBlush

Lavender Blush

Cores Web

clrLawnGreen

Lawn Green

Cores Web

clrLemonChiffon

Lemon Chiffon

Cores Web

clrLightBlue

Light Blue

Cores Web

clrLightCoral

Light Coral

Cores Web

clrLightCyan

Light Cyan

Cores Web

clrLightGoldenrod

Light Goldenrod

Cores Web

clrLightGray

Light Gray

Cores Web

clrLightGreen

Light Green

Cores Web

clrLightPink

Light Pink

Cores Web

2000-2015, MetaQuotes Software Corp.

4214

List of MQL5 Constants

clrLightSalmon

Light Salmon

Cores Web

clrLightSeaGreen

Light Sea Green

Cores Web

clrLightSkyBlue

Light Sky Blue

Cores Web

clrLightSlateGray

Light Slate Gray

Cores Web

clrLightSteelBlue

Light Steel Blue

Cores Web

clrLightYellow

Light Yellow

Cores Web

clrLime

Lime

Cores Web

clrLimeGreen

Lime Green

Cores Web

clrLinen

Linen

Cores Web

clrMagenta

Magenta

Cores Web

clrMaroon

Maroon

Cores Web

clrMediumAquamarine

Medium Aquamarine

Cores Web

clrMediumBlue

Medium Blue

Cores Web

clrMediumOrchid

Medium Orchid

Cores Web

clrMediumPurple

Medium Purple

Cores Web

clrMediumSeaGreen

Medium Sea Green

Cores Web

clrMediumSlateBlue

Medium Slate Blue

Cores Web

clrMediumSpringGreen

Medium Spring Green

Cores Web

clrMediumTurquoise

Medium Turquoise

Cores Web

clrMediumVioletRed

Medium Violet Red

Cores Web

clrMidnightBlue

Midnight Blue

Cores Web

clrMintCream

Mint Cream

Cores Web

clrMistyRose

Misty Rose

Cores Web

clrMoccasin

Moccasin

Cores Web

clrNavajoWhite

Navajo White

Cores Web

clrNavy

Navy

Cores Web

clrNONE

Ausncia de cor

Outras Constantes

clrOldLace

Old Lace

Cores Web

clrOlive

Olive

Cores Web

clrOliveDrab

Olive Drab

Cores Web

clrOrange

Orange

Cores Web

clrOrangeRed

Orange Red

Cores Web

2000-2015, MetaQuotes Software Corp.

4215

List of MQL5 Constants

clrOrchid

Orchid

Cores Web

clrPaleGoldenrod

Pale Goldenrod

Cores Web

clrPaleGreen

Pale Green

Cores Web

clrPaleTurquoise

Pale Turquoise

Cores Web

clrPaleVioletRed

Pale Violet Red

Cores Web

clrPapayaWhip

Papaya Whip

Cores Web

clrPeachPuff

Peach Puff

Cores Web

clrPeru

Peru

Cores Web

clrPink

Pink

Cores Web

clrPlum

Plum

Cores Web

clrPowderBlue

Powder Blue

Cores Web

clrPurple

Purple

Cores Web

clrRed

Red

Cores Web

clrRosyBrown

Rosy Brown

Cores Web

clrRoyalBlue

Royal Blue

Cores Web

clrSaddleBrown

Saddle Brown

Cores Web

clrSalmon

Salmon

Cores Web

clrSandyBrown

Sandy Brown

Cores Web

clrSeaGreen

Sea Green

Cores Web

clrSeashell

Seashell

Cores Web

clrSienna

Sienna

Cores Web

clrSilver

Silver

Cores Web

clrSkyBlue

Sky Blue

Cores Web

clrSlateBlue

Slate Blue

Cores Web

clrSlateGray

Slate Gray

Cores Web

clrSnow

Snow

Cores Web

clrSpringGreen

Spring Green

Cores Web

clrSteelBlue

Steel Blue

Cores Web

clrTan

Tan

Cores Web

clrTeal

Teal

Cores Web

clrThistle

Thistle

Cores Web

clrTomato

Tomato

Cores Web

2000-2015, MetaQuotes Software Corp.

4216

List of MQL5 Constants

clrTurquoise

Turquoise

Cores Web

clrViolet

Violet

Cores Web

clrWheat

Wheat

Cores Web

clrWhite

White

Cores Web

clrWhiteSmoke

White Smoke

Cores Web

clrYellow

Yellow

Cores Web

clrYellowGreen

Yellow Green

Cores Web

CORNER_LEFT_LOWER

Centro de coordenadas est no


canto inferior esquerdo do
grfico

ObjectSetInteger,
ObjectGetInteger

CORNER_LEFT_UPPER

Centro de coordenadas est no


canto superior esquerdo do
grfico

ObjectSetInteger,
ObjectGetInteger

CORNER_RIGHT_LOWER

Centro de coordenadas est no


canto inferior direito do
grfico

ObjectSetInteger,
ObjectGetInteger

CORNER_RIGHT_UPPER

Centro de coordenadas est no


canto superior direito do
grfico

ObjectSetInteger,
ObjectGetInteger

CP_ACP

O cdigo de pgina ANSI do


Windows corrente.

CharArrayToString,
StringToCharArray, FileOpen

CP_MACCP

O cdigo de pgina do sistema


Macintosh corrente.
Note: Este valor usado
principalmente em cdigos de
programa criados antigamente
e est sem uso atualmente, j
que computadores Macintosh
modernos usando Unicode para
codificao.

CharArrayToString,
StringToCharArray, FileOpen

CP_OEMCP

O cdigo de pgina do sistema


OEM corrente.

CharArrayToString,
StringToCharArray, FileOpen

CP_SYMBOL

Cdigo de pgina de smbolo

CharArrayToString,
StringToCharArray, FileOpen

CP_THREAD_ACP

O cdigo de pgina ANSI do


Windows para
o
thread
corrente.

CharArrayToString,
StringToCharArray, FileOpen

CP_UTF7

Cdigo de pgina UTF-7.

CharArrayToString,
StringToCharArray, FileOpen

CP_UTF8

Cdigo de pgina UTF-8.

CharArrayToString,
StringToCharArray, FileOpen

2000-2015, MetaQuotes Software Corp.

4217

List of MQL5 Constants

CRYPT_AES128

AES encryption with 128 bit


key (16 bytes)

CryptEncode, CryptDecode

CRYPT_AES256

AES encryption with 256 bit


key (32 bytes)

CryptEncode, CryptDecode

CRYPT_ARCH_ZIP

ZIP archives

CryptEncode, CryptDecode

CRYPT_BASE64

BASE64

CryptEncode, CryptDecode

CRYPT_DES

DES encryption with 56 bit key


(7 bytes)

CryptEncode, CryptDecode

CRYPT_HASH_MD5

MD5 HASH caculation

CryptEncode, CryptDecode

CRYPT_HASH_SHA1

SHA1 HASH caculation

CryptEncode, CryptDecode

CRYPT_HASH_SHA256

SHA256 HASH caculation

CryptEncode, CryptDecode

DBL_DIG

Nmero
de
algarismos
decimais significativos para o
tipo double

Constantes de Tipo Numrico

DBL_EPSILON

Valor mnimo, que satisfaz a


condio:
1.0+DBL_EPSILON != 1.0 (para
o tipo double)

Constantes de Tipo Numrico

DBL_MANT_DIG

Quantidade de bits em uma


mantissa para o tipo double

Constantes de Tipo Numrico

DBL_MAX

Valor mximo, que pode ser


representado pelo tipo double

Constantes de Tipo Numrico

DBL_MAX_10_EXP

Valor decimal mximo de grau


de expoente para o tipo double

Constantes de Tipo Numrico

DBL_MAX_EXP

Valor binrio mximo de grau


de expoente para o tipo double

Constantes de Tipo Numrico

DBL_MIN

Valor positivo mnimo, que


pode ser representado pelo
tipo double

Constantes de Tipo Numrico

DBL_MIN_10_EXP

Valor decimal mnimo de grau


de expoente para o tipo double

Constantes de Tipo Numrico

DBL_MIN_EXP

Valor binrio mnimo de grau


de expoente para o tipo double

Constantes de Tipo Numrico

DEAL_COMMENT

Comentrio de uma operao

HistoryDealGetString

DEAL_COMMISSION

Comisso de uma operao

HistoryDealGetDouble

DEAL_ENTRY

Entrada de uma operao entrada, sada, reverso

HistoryDealGetInteger

DEAL_ENTRY_IN

Entrada

HistoryDealGetInteger

2000-2015, MetaQuotes Software Corp.

4218

List of MQL5 Constants

DEAL_ENTRY_INOUT

Reverso

HistoryDealGetInteger

DEAL_ENTRY_OUT

Sada

HistoryDealGetInteger

DEAL_MAGIC

Nmero mgico
operao
ORDER_MAGIC)

uma
(veja

HistoryDealGetInteger

DEAL_ORDER

Nmero da ordem de uma


operao (deal).

HistoryDealGetInteger

DEAL_POSITION_ID

Identificador de uma posio,


na abertura, modificao ou
alterao
da
qual
esta
operao (deal) tomou parte.
Cada
posio
tem
um
identificador nico que
atribudo a todas as operaes
(deals) executadas para o
ativo durante todo o tempo de
vida da posio.

HistoryDealGetInteger

DEAL_PRICE

Preo de uma operao

HistoryDealGetDouble

DEAL_PROFIT

Lucro de uma operao (deal)

HistoryDealGetDouble

DEAL_SWAP

Swap
acumulativo
fechamento

HistoryDealGetDouble

DEAL_SYMBOL

Ativo
(symbol)
operao

DEAL_TIME

Propriedades de uma Operao


(Deal)

HistoryDealGetInteger

DEAL_TIME_MSC

O tempo de execuo de
negociaes em milissegundos
desde 01.01.1970

HistoryDealGetInteger

DEAL_TYPE

Tipo de operao

HistoryDealGetInteger

DEAL_TYPE_BALANCE

Saldo

HistoryDealGetInteger

DEAL_TYPE_BONUS

Bonus

HistoryDealGetInteger

DEAL_TYPE_BUY

Compra

HistoryDealGetInteger

DEAL_TYPE_BUY_CANCELED

Operao
de
compra
cancelada. Pode haver uma
situao quando uma operao
(deal) de compra executada
anteriormente cancelada.
Neste caso, o tipo da operao
executada
anteriormente
(DEAL_TYPE_BUY) alterada
para
DEAL_TYPE_BUY_CANCELED, e

HistoryDealGetInteger

de

de

no

uma

2000-2015, MetaQuotes Software Corp.

HistoryDealGetString

4219

List of MQL5 Constants

seu lucro/prejuzo zerado


Lucro/prejuzo
obtido
anteriormente cobrado/
sacado usando uma operao
de saldo separada
DEAL_TYPE_CHARGE

Cobrana adicional

HistoryDealGetInteger

DEAL_TYPE_COMMISSION

Comisso adicional

HistoryDealGetInteger

DEAL_TYPE_COMMISSION_AGE
NT_DAILY

Comisso de agente dirio

HistoryDealGetInteger

DEAL_TYPE_COMMISSION_AGE
NT_MONTHLY

Comisso de agente mensal

HistoryDealGetInteger

DEAL_TYPE_COMMISSION_DAI
LY

Comisso diria

HistoryDealGetInteger

DEAL_TYPE_COMMISSION_MO
NTHLY

Comisso mensal

HistoryDealGetInteger

DEAL_TYPE_CORRECTION

Correo

HistoryDealGetInteger

DEAL_TYPE_CREDIT

Crdito

HistoryDealGetInteger

DEAL_TYPE_INTEREST

Taxa de juros

HistoryDealGetInteger

DEAL_TYPE_SELL

Venda

HistoryDealGetInteger

DEAL_TYPE_SELL_CANCELED

Operao de venda cancelada.


Pode haver uma situao
quando uma operao (deal)
de
venda
executada
anteriormente cancelada.
Neste caso, o tipo da operao
executada
anteriormente
(DEAL_TYPE_SELL) alterada
para
DEAL_TYPE_SELL_CANCELED,
e seu lucro/prejuzo zerado.
Lucro/prejuzo
obtido
anteriormente cobrado/
sacado usando uma operao
de saldo separada

HistoryDealGetInteger

DEAL_VOLUME

Volume de uma operao

HistoryDealGetDouble

DRAW_ARROW

Desenha setas

Estilos de Desenho

DRAW_BARS

Exibe como uma seqncia de


barras

Estilos de Desenho

DRAW_CANDLES

Exibe como um seqncia de


candles

Estilos de Desenho

DRAW_COLOR_ARROW

Desenho

Estilos de Desenho

de

setas

2000-2015, MetaQuotes Software Corp.

4220

List of MQL5 Constants

multicoloridas
DRAW_COLOR_BARS

Barras multicoloridas

Estilos de Desenho

DRAW_COLOR_CANDLES

Candles multicoloridos

Estilos de Desenho

DRAW_COLOR_HISTOGRAM

Histograma multicolorida
partir da linha zero

Estilos de Desenho

DRAW_COLOR_HISTOGRAM2

Histograma multicolorido dos


dois buffers do indicador

Estilos de Desenho

DRAW_COLOR_LINE

Linha Multicolorida

Estilos de Desenho

DRAW_COLOR_SECTION

Diviso Multicolorida

Estilos de Desenho

DRAW_COLOR_ZIGZAG

ZigZag Multicolorido

Estilos de Desenho

DRAW_FILLING

Preenchimento de cor entre


dos dois nveis

Estilos de Desenho

DRAW_HISTOGRAM

Histograma a partir da linha


zero

Estilos de Desenho

DRAW_HISTOGRAM2

Histograma de dois buffers do


indicador

Estilos de Desenho

DRAW_LINE

Linha

Estilos de Desenho

DRAW_NONE

No desenhado

Estilos de Desenho

DRAW_SECTION

Seo

Estilos de Desenho

DRAW_ZIGZAG

Estilo Zigzag permite diviso


vertical na barra

Estilos de Desenho

ELLIOTT_CYCLE

Ciclo

ObjectSetInteger,
ObjectGetInteger

ELLIOTT_GRAND_SUPERCYCLE

Grande Super-ciclo

ObjectSetInteger,
ObjectGetInteger

ELLIOTT_INTERMEDIATE

Intermedirio

ObjectSetInteger,
ObjectGetInteger

ELLIOTT_MINOR

Menor

ObjectSetInteger,
ObjectGetInteger

ELLIOTT_MINUETTE

Minuette

ObjectSetInteger,
ObjectGetInteger

ELLIOTT_MINUTE

Minuto

ObjectSetInteger,
ObjectGetInteger

ELLIOTT_PRIMARY

Primrio

ObjectSetInteger,
ObjectGetInteger

ELLIOTT_SUBMINUETTE

Subminuette

ObjectSetInteger,
ObjectGetInteger

2000-2015, MetaQuotes Software Corp.

4221

List of MQL5 Constants

ELLIOTT_SUPERCYCLE

Super-ciclo

ObjectSetInteger,
ObjectGetInteger

EMPTY_VALUE

Valor vazio em um buffer de


indicador

Outras Constantes

ERR_ACCOUNT_WRONG_PROP
ERTY

Identificador
(ID)
de
propriedade da conta errado

GetLastError

ERR_ARRAY_BAD_SIZE

Tamanho de array solicitado


excede 2 GB

GetLastError

ERR_ARRAY_RESIZE_ERROR

Sem memria suficiente para


a realocao de um array, ou
uma tentativa de alterar o
tamanho de um array esttico

GetLastError

ERR_BOOKS_CANNOT_ADD

Profundidade de Mercado no
pode ser adicionado

GetLastError

ERR_BOOKS_CANNOT_DELETE

Profundidade de Mercado no
pode ser removido

GetLastError

ERR_BOOKS_CANNOT_GET

Os dados da Profundidade de
Mercado no podem ser
obtidos

GetLastError

ERR_BOOKS_CANNOT_SUBSCRI
BE

Erro em subscrever para


receber novos dados da
Profundidade de Mercado

GetLastError

ERR_BUFFERS_NO_MEMORY

Sem memria suficiente para


a distribuio de buffers de
indicador

GetLastError

ERR_BUFFERS_WRONG_INDEX

ndice de buffer de indicador


errado

GetLastError

ERR_CANNOT_CLEAN_DIRECT
ORY

Falha ao limpar o diretrio


(provavelmente um ou mais
arquivos esto bloqueados e a
operao de remoo falhou)

GetLastError

ERR_CANNOT_DELETE_DIRECT
ORY

O diretrio
removido

GetLastError

ERR_CANNOT_DELETE_FILE

Erro excluindo arquivo

GetLastError

ERR_CANNOT_OPEN_FILE

Erro de abertura de arquivo

GetLastError

ERR_CHAR_ARRAY_ONLY

Deve ser um array de tipo char

GetLastError

ERR_CHART_CANNOT_CHANG
E

Falha ao alterar ativo


perodo de um grfico

GetLastError

ERR_CHART_CANNOT_CREATE
_TIMER

Falha ao criar timer

no

pode

ser

2000-2015, MetaQuotes Software Corp.

GetLastError

4222

List of MQL5 Constants

ERR_CHART_CANNOT_OPEN

Erro de abertura de grfico

GetLastError

ERR_CHART_INDICATOR_CANN
OT_ADD

Erro adicionando um indicador


no grfico

GetLastError

ERR_CHART_INDICATOR_CANN
OT_DEL

Erro excluindo um indicador do


grfico

GetLastError

ERR_CHART_INDICATOR_NOT_
FOUND

Indicador no encontrado no
grfico especificado

GetLastError

ERR_CHART_NAVIGATE_FAILE
D

Erro navegando atravs


grfico

de

GetLastError

ERR_CHART_NO_EXPERT

Nenhum Expert Advisor no


grfico que pudesse manipular
o evento

GetLastError

ERR_CHART_NO_REPLY

Grfico no responde

GetLastError

ERR_CHART_NOT_FOUND

Grfico no encontrado

GetLastError

ERR_CHART_SCREENSHOT_FAI
LED

Erro
criando
(screenshots)

ERR_CHART_TEMPLATE_FAILE
D

Erro aplicando template

GetLastError

ERR_CHART_WINDOW_NOT_F
OUND

Sub-janela
contendo
o
indicador no foi encontrada

GetLastError

ERR_CHART_WRONG_ID

Identificador de grfico (chart


ID) errado

GetLastError

ERR_CHART_WRONG_PARAME
TER

Valor de erro do parmetro


para a funo que trabalha
com grficos

GetLastError

ERR_CHART_WRONG_PROPER
TY

Identificador de propriedade
(property ID) do grfico errado

GetLastError

ERR_CUSTOM_WRONG_PROPE
RTY

Identificador
(ID)
de
propriedade
do
indicador
customizado errado

GetLastError

ERR_DIRECTORY_NOT_EXIST

Diretrio inexistente

GetLastError

ERR_DOUBLE_ARRAY_ONLY

Deve ser um array de tipo


double

GetLastError

ERR_FILE_BINSTRINGSIZE

Tamanho da string deve estar


especificado, porque o arquivo
est aberto como binrio

GetLastError

ERR_FILE_CACHEBUFFER_ERR
OR

Sem memria suficiente de


cache para leitura

GetLastError

ERR_FILE_CANNOT_REWRITE

Arquivo no pode ser reescrito

GetLastError

telas

2000-2015, MetaQuotes Software Corp.

GetLastError

4223

List of MQL5 Constants

ERR_FILE_IS_DIRECTORY

Isto no um arquivo, isto


um diretrio

GetLastError

ERR_FILE_ISNOT_DIRECTORY

Isto um arquivo, no um
diretrio

GetLastError

ERR_FILE_NOT_EXIST

Arquivo inexistente

GetLastError

ERR_FILE_NOTBIN

O arquivo deve estar aberto


como um arquivo binrio

GetLastError

ERR_FILE_NOTCSV

O arquivo deve estar aberto


como CSV

GetLastError

ERR_FILE_NOTTOREAD

O arquivo deve estar aberto


para leitura

GetLastError

ERR_FILE_NOTTOWRITE

O arquivo deve estar abertura


para escrita

GetLastError

ERR_FILE_NOTTXT

O arquivo deve estar aberto


como um texto

GetLastError

ERR_FILE_NOTTXTORCSV

O arquivo deve estar aberto


como um texto ou CSV

GetLastError

ERR_FILE_READERROR

Erro de leitura de arquivo

GetLastError

ERR_FILE_WRITEERROR

Falha ao escrever um recurso


para um arquivo

GetLastError

ERR_FLOAT_ARRAY_ONLY

Deve ser um array de tipo


float

GetLastError

ERR_FTP_SEND_FAILED

Envio de arquivo via ftp falhou

GetLastError

ERR_FUNCTION_NOT_ALLOWE
D

Funo de sistema no
permitida para chamar

GetLastError

ERR_GLOBALVARIABLE_EXISTS

Varivel global do terminal


cliente com o mesmo nome j
existe

GetLastError

ERR_GLOBALVARIABLE_NOT_F
OUND

Varivel global do terminal


cliente no foi encontrada

GetLastError

ERR_HISTORY_NOT_FOUND

Histrico
encontrado

no

GetLastError

ERR_HISTORY_WRONG_PROPE
RTY

Identificador
propriedade
errado

(ID)
da
histrico

GetLastError

ERR_INCOMPATIBLE_ARRAYS

Copiando
arrays
incompatveis. Array de string
pode ser copiado somente
para um array de string, e um
array numrico - somente em

GetLastError

solicitado

de

2000-2015, MetaQuotes Software Corp.

4224

List of MQL5 Constants

um array numrico
ERR_INCOMPATIBLE_FILE

Um arquivo de texto deve ser


usado para arrays de strings,
para outros arrays - binrios

GetLastError

ERR_INDICATOR_CANNOT_ADD

Erro ao aplicar um indicador


ao grfico

GetLastError

ERR_INDICATOR_CANNOT_APP
LY

O indicador no pode ser


aplicado a um outro indicador

GetLastError

ERR_INDICATOR_CANNOT_CRE
ATE

Indicador no pode ser criado

GetLastError

ERR_INDICATOR_CUSTOM_NA
ME

O primeiro parmetro no array


deve ser o nome do indicador
customizado

GetLastError

ERR_INDICATOR_DATA_NOT_F
OUND

Dado
solicitado
encontrado

no

GetLastError

ERR_INDICATOR_NO_MEMORY

Sem memria suficiente para


adicionar o indicador

GetLastError

ERR_INDICATOR_PARAMETER_
TYPE

Tipo de parmetro invlido no


array ao criar um indicador

GetLastError

ERR_INDICATOR_PARAMETERS
_MISSING

Sem parmetros ao criar um


indicador

GetLastError

ERR_INDICATOR_UNKNOWN_S
YMBOL

Ativo desconhecido

GetLastError

ERR_INDICATOR_WRONG_HAN
DLE

Manuseio de indicador errado

GetLastError

ERR_INDICATOR_WRONG_INDE
X

ndice errado de buffer do


indicador solicitado

GetLastError

ERR_INDICATOR_WRONG_PAR
AMETERS

Numero errado de parmetros


ao criar um indicador

GetLastError

ERR_INT_ARRAY_ONLY

Deve ser um array de tipo int

GetLastError

ERR_INTERNAL_ERROR

Erro interno inesperado

GetLastError

ERR_INVALID_ARRAY

Array de um tipo errado,


tamanho errado, ou um objeto
defeituoso de um array
dinmico

GetLastError

ERR_INVALID_DATETIME

Data e/ou hora invlida

GetLastError

ERR_INVALID_FILEHANDLE

Um arquivo com este handle


foi fechado, ou simplesmente
no estava aberto

GetLastError

ERR_INVALID_PARAMETER

Parmetro errado ao chamar a

GetLastError

2000-2015, MetaQuotes Software Corp.

4225

List of MQL5 Constants

funo de sistema
ERR_INVALID_POINTER

Ponteiro errado

GetLastError

ERR_INVALID_POINTER_TYPE

Tipo errado de ponteiro

GetLastError

ERR_LONG_ARRAY_ONLY

Deve ser um array de tipo long

GetLastError

ERR_MAIL_SEND_FAILED

Envio de email falhou

GetLastError

ERR_MARKET_LASTTIME_UNKN
OWN

Hora do ltimo tick no


conhecida (sem ticks)

GetLastError

ERR_MARKET_NOT_SELECTED

Ativo no est selecionado na


janela Observao de Mercado

GetLastError

ERR_MARKET_SELECT_ERROR

Erro adicionando ou excluindo


um ativo na janela Observao
de Marcado

GetLastError

ERR_MARKET_UNKNOWN_SYM
BOL

Ativo desconhecido

GetLastError

ERR_MARKET_WRONG_PROPE
RTY

Identificador
de
uma
propriedade de ativo errado

GetLastError

ERR_MQL5_WRONG_PROPERT
Y

Identificador de propriedade
do programa errado

GetLastError

ERR_NO_STRING_DATE

Sem data na string

GetLastError

ERR_NOT_ENOUGH_MEMORY

Sem memria suficiente para


executar a funo de sistema

GetLastError

ERR_NOTIFICATION_SEND_FAI
LED

Falha
ao
notificao

uma

GetLastError

ERR_NOTIFICATION_TOO_FRE
QUENT

Freqncia de envio
notificaes em excesso

de

GetLastError

ERR_NOTIFICATION_WRONG_P
ARAMETER

Parmetro invlido para enviar


uma notificao uma string
vazia ou NULL foi passada
para
a
funo
SendNotification()

GetLastError

ERR_NOTIFICATION_WRONG_S
ETTINGS

Configuraes de notificaes
erradas no terminal (ID no
est
especificado
ou
permisso no est definida)

GetLastError

ERR_NOTINITIALIZED_STRING

String no inicializada

GetLastError

ERR_NUMBER_ARRAYS_ONLY

Deve ser um array numrico

GetLastError

ERR_OBJECT_ERROR

Erro trabalhando
objeto grfico

um

GetLastError

ERR_OBJECT_GETDATE_FAILE

No foi possvel obter data

GetLastError

enviar

com

2000-2015, MetaQuotes Software Corp.

4226

List of MQL5 Constants

correspondente ao valor

ERR_OBJECT_GETVALUE_FAIL
ED

No foi possvel obter valor


correspondente data

GetLastError

ERR_OBJECT_NOT_FOUND

Objeto
grfico
encontrado

foi

GetLastError

ERR_OBJECT_WRONG_PROPER
TY

Identificador (ID) de uma


propriedade de objeto grfico
errado

GetLastError

ERR_ONEDIM_ARRAYS_ONLY

Deve
ser
unidimensional

array

GetLastError

ERR_OPENCL_BUFFER_CREATE

Falha ao criar umbuffer de


OpenCL

GetLastError

ERR_OPENCL_CONTEXT_CREA
TE

Erro criando
OpenCL

de

GetLastError

ERR_OPENCL_EXECUTE

Erro em tempo de execuo


de programa de OpenCL

GetLastError

ERR_OPENCL_INTERNAL

Erro
interno
aoexecutar OpenCL

GetLastError

ERR_OPENCL_INVALID_HANDL
E

Handle de OpenCL invlido

ERR_OPENCL_KERNEL_CREATE

Erro criando
OpenCL

de

GetLastError

ERR_OPENCL_NOT_SUPPORTE
D

Funes
OpenCLno
so
suportados neste computador

GetLastError

ERR_OPENCL_PROGRAM_CREA
TE

Erro ocorreu aocompilar um


programa OpenCL

GetLastError

ERR_OPENCL_QUEUE_CREATE

Falha ao criar um fila de


execuo em OpenCL

GetLastError

ERR_OPENCL_SET_KERNEL_PA
RAMETER

Erro
ocorreu aoconfigurar
parmetrospara o kernel de
OpenCL

GetLastError

ERR_OPENCL_TOO_LONG_KER
NEL_NAME

Nome
de
kernel
longo
demais(kernel de OpenCL)

GetLastError

ERR_OPENCL_WRONG_BUFFER
_OFFSET

Deslocamento (offset) invlido


do buffer de OpenCL

GetLastError

ERR_OPENCL_WRONG_BUFFER
_SIZE

Tamanho invlido do buffer de


OpenCL

GetLastError

ERR_PLAY_SOUND_FAILED

Reproduo de som falhou

GetLastError

ERR_RESOURCE_NAME_DUPLIC
ATED

Os nomes do recurso dinmico


e do esttico equivalem

GetLastError

no

um

ocontexto

ocorreu

umkernel

GetLastError

2000-2015, MetaQuotes Software Corp.

4227

List of MQL5 Constants

ERR_RESOURCE_NAME_IS_TO
O_LONG

O nome do recurso excede 63


caracteres

GetLastError

ERR_RESOURCE_NOT_FOUND

Recurso com este nome no


foi encontrado em EX5

GetLastError

ERR_RESOURCE_UNSUPPOTED
_TYPE

Tipo de recurso no suportado


ou seu tamanho excede 16 Mb

GetLastError

ERR_SERIES_ARRAY

Srie de tempo (timeseries)


no pode ser usada

GetLastError

ERR_SHORT_ARRAY_ONLY

Deve ser um array de tipo


short

GetLastError

ERR_SMALL_ARRAY

Array pequeno demais, a


posio inicial est fora do
array

GetLastError

ERR_SMALL_ASSERIES_ARRAY

O array de recepo est


declarado como AS_SERIES, e
de tamanho insuficiente.

GetLastError

ERR_STRING_OUT_OF_MEMOR
Y

Sem memria suficiente para


a string

GetLastError

ERR_STRING_RESIZE_ERROR

Sem memria suficiente para


a realocao de string

GetLastError

ERR_STRING_SMALL_LEN

O comprimento da string
menor que o esperado

GetLastError

ERR_STRING_TIME_ERROR

Erro convertendo string em


data

GetLastError

ERR_STRING_TOO_BIGNUMBER

Nmero grande demais, maior


que ULONG_MAX

GetLastError

ERR_STRING_UNKNOWNTYPE

Tipo de dado desconhecido ao


converter para uma string

GetLastError

ERR_STRING_ZEROADDED

0 adicionado ao final da
string, uma operao intil

GetLastError

ERR_STRINGPOS_OUTOFRANG
E

Posio fora da string

GetLastError

ERR_STRUCT_WITHOBJECTS_
ORCLASS

A estrutura contm objetos de


strings e/ou arrays dinmicos
e/ou estrutura de tais objetos
e/ou classes

GetLastError

ERR_SUCCESS

A operao
sucesso

com

GetLastError

ERR_TERMINAL_WRONG_PROP
ERTY

Identificador de propriedade
do terminal errado

GetLastError

concluda

2000-2015, MetaQuotes Software Corp.

4228

List of MQL5 Constants

ERR_TOO_LONG_FILENAME

Nome de arquivo longo demais

GetLastError

ERR_TOO_MANY_FILES

Mais que 64 arquivos no


podem ser abertos ao mesmo
tempo

GetLastError

ERR_TOO_MANY_FORMATTER
S

Quantidade de especificadores
de formato maior que de
parmetros

GetLastError

ERR_TOO_MANY_PARAMETERS

Quantidade de parmetros
maior que de especificadores
de formato

GetLastError

ERR_TRADE_DEAL_NOT_FOUN
D

Operao
encontrada

no

GetLastError

ERR_TRADE_DISABLED

Negociao
via
Advisors proibida

Expert

GetLastError

ERR_TRADE_ORDER_NOT_FOU
ND

Ordem no encontrada

GetLastError

ERR_TRADE_POSITION_NOT_F
OUND

Posio no encontrada

GetLastError

ERR_TRADE_SEND_FAILED

Envio
de solicitao
negociao falhou

de

GetLastError

ERR_TRADE_WRONG_PROPER
TY

Identificador
(ID)
de
propriedade da negociao
(trade) errado

GetLastError

ERR_USER_ERROR_FIRST

Erros
definidos
usuriocomeam com
cdigo

pelo
este

GetLastError

ERR_WEBREQUEST_CONNECT_
FAILED

Failed to connect to specified


URL

GetLastError

ERR_WEBREQUEST_INVALID_A
DDRESS

Invalid URL

GetLastError

ERR_WEBREQUEST_REQUEST_
FAILED

HTTP request failed

GetLastError

ERR_WEBREQUEST_TIMEOUT

Timeout exceeded

GetLastError

ERR_WRONG_DIRECTORYNAM
E

Nome de diretrio errado

GetLastError

ERR_WRONG_FILEHANDLE

Handle de arquivo errado

GetLastError

ERR_WRONG_FILENAME

Nome de arquivo invlido

GetLastError

ERR_WRONG_FORMATSTRING

string de formato invlido

GetLastError

ERR_WRONG_INTERNAL_PARA
METER

Parmetro errado na chamada


interna da funo do terminal

GetLastError

(deal)

2000-2015, MetaQuotes Software Corp.

4229

List of MQL5 Constants

cliente
ERR_WRONG_STRING_DATE

Data errada na string

GetLastError

ERR_WRONG_STRING_OBJECT

Objeto de string defeituoso

GetLastError

ERR_WRONG_STRING_PARAME
TER

Parmetro
defeituoso

GetLastError

ERR_WRONG_STRING_TIME

Hora errada na string

GetLastError

ERR_ZEROSIZE_ARRAY

Um array de comprimento zero

GetLastError

FILE_ACCESS_DATE

Data do ltimo acesso ao


arquivo

FileGetInteger

FILE_ANSI

Strings de tipo ANSI (smbolos


de um byte). Flag usado em
FileOpen()

FileOpen

FILE_BIN

Modo
de
leitura/escrita
binria (sem converso string
para string). Flag usado em
FileOpen()

FileOpen

FILE_COMMON

O caminho do arquivo na pasta


comum de todos os terminais
cliente
\Terminal\Common
\Files. Flag usado em
funes
FileOpen(),
FileCopy(), FileMove() e em
FileIsExist().

FileOpen, FileCopy, FileMove,


FileIsExist

FILE_CREATE_DATE

Data de criao

FileGetInteger

FILE_CSV

Arquivo CSV (todos seus


elementos so convertidos
para
strings
do
tipo
apropriado, unicode ou ansi, e
separados por separador). Flag
usado em FileOpen()

FileOpen

FILE_END

Obtm o sinal de trmino de


arquivo

FileGetInteger

FILE_EXISTS

Verifica a existncia

FileGetInteger

FILE_IS_ANSI

O arquivo est aberto como


ANSI (veja FILE_ANSI)

FileGetInteger

FILE_IS_BINARY

O arquivo est aberto como


um arquivo binrio (veja
FILE_BIN)

FileGetInteger

FILE_IS_COMMON

O arquivo est aberto em uma


pasta compartilhada por todos
os
terminais
(veja

FileGetInteger

de

tipo

string

2000-2015, MetaQuotes Software Corp.

4230

List of MQL5 Constants

FILE_COMMON)
FILE_IS_CSV

O arquivo est aberto como


CSV (veja FILE_CSV)

FileGetInteger

FILE_IS_READABLE

O arquivo aberto pode ser lido


(veja FILE_READ)

FileGetInteger

FILE_IS_TEXT

O arquivo est aberto como


um arquivo de texto (veja
FILE_TXT)

FileGetInteger

FILE_IS_WRITABLE

O arquivo aberto pode ser


escrito (veja FILE_WRITE)

FileGetInteger

FILE_LINE_END

Obtm o sinal de termino de


linha

FileGetInteger

FILE_MODIFY_DATE

Data da ltima modificao

FileGetInteger

FILE_POSITION

Posio de um ponteiro no
arquivo

FileGetInteger

FILE_READ

Arquivo aberto para leitura.


Flag usado em FileOpen().
Ao abrir um arquivo, a
especificao de FILE_WRITE
e/ou FILE_READ requerida.

FileOpen

FILE_REWRITE

Possibilidade de reescrever o
arquivo usando as funes
FileCopy() e FileMove(). O
arquivo deve existir ou deve
estar aberto para escrita, de
outra forma o arquivo no
ser aberto.

FileCopy, FileMove

FILE_SHARE_READ

Acesso compartilhado para


leitura a partir de vrios
programas. Flag usado em
FileOpen(), mas ele no
substitui a necessidade de
indicar o flag FILE_WRITE e/
ou FILE_READ ao abrir um
arquivo.

FileOpen

FILE_SHARE_WRITE

Acesso compartilhado para


escrita a partir de vrios
programas. Flag usado em
FileOpen(), mas ele no
substitui a necessidade de
indicar o flag FILE_WRITE e/
ou FILE_READ ao abrir um
arquivo.

FileOpen

2000-2015, MetaQuotes Software Corp.

4231

List of MQL5 Constants

FILE_SIZE

Tamanho de arquivo em bytes

FileGetInteger

FILE_TXT

Arquivo de texto simples


(semelhando ao arquivo csv,
mas sem levar em conta os
separadores). Flag usado
em FileOpen()

FileOpen

FILE_UNICODE

Strings de tipo UNICODE


(smbolos de dois bytes). Flag
usado em FileOpen()

FileOpen

FILE_WRITE

Arquivo aberto para escrita.


Flag usado em FileOpen().
Ao abrir um arquivo, a
especificao de FILE_WRITE
e/ou FILE_READ requerida.

FileOpen

FLT_DIG

Nmero
de
algarismos
decimais significativos para o
tipo float

Constantes de Tipo Numrico

FLT_EPSILON

Valor mnimo, que satisfaz a


condio:
1.0+DBL_EPSILON != 1.0 (para
o tipo float)

Constantes de Tipo Numrico

FLT_MANT_DIG

Quantidade de bits em uma


mantissa para o tipo float

Constantes de Tipo Numrico

FLT_MAX

Valor mximo, que pode ser


representado pelo tipo float

Constantes de Tipo Numrico

FLT_MAX_10_EXP

Valor decimal mximo de grau


de expoente para o tipo float

Constantes de Tipo Numrico

FLT_MAX_EXP

Valor binrio mximo de grau


de expoente para o tipo float

Constantes de Tipo Numrico

FLT_MIN

Valor positivo mnimo, que


pode ser representado pelo
tipo float

Constantes de Tipo Numrico

FLT_MIN_10_EXP

Valor decimal mnimo de grau


de expoente para o tipo float

Constantes de Tipo Numrico

FLT_MIN_EXP

Valor binrio mnimo de grau


de expoente para o tipo float

Constantes de Tipo Numrico

FRIDAY

Sexta-feira

SymbolInfoInteger,
SymbolInfoSessionQuote,
SymbolInfoSessionTrade

GANN_DOWN_TREND

Linha
correspondente
tendncia de baixa

ObjectSetInteger,
ObjectGetInteger

GANN_UP_TREND

Linha

ObjectSetInteger,

correspondente

2000-2015, MetaQuotes Software Corp.

4232

List of MQL5 Constants

tendncia de alta

ObjectGetInteger

GATORJAW_LINE

Linha Jaw

Linhas de Indicadores

GATORLIPS_LINE

Linha Lips

Linhas de Indicadores

GATORTEETH_LINE

Linha Teeth

Linhas de Indicadores

IDABORT

Boto "Abort" foi pressionado

MessageBox

IDCANCEL

Boto "Cancel" foi pressionado

MessageBox

IDCONTINUE

Boto
"Continue"
pressionado

foi

MessageBox

IDIGNORE

Boto "Ignore" foi pressionado

MessageBox

IDNO

Boto "No" foi pressionado

MessageBox

IDOK

Boto "OK" foi pressionado

MessageBox

IDRETRY

Boto "Retry" foi pressionado

MessageBox

IDTRYAGAIN

Boto
"Try
pressionado

MessageBox

IDYES

Boto "Yes" foi pressionado

MessageBox

IND_AC

Accelerator Oscillator

IndicatorCreate,
IndicatorParameters

IND_AD

Accumulation/Distribution

IndicatorCreate,
IndicatorParameters

IND_ADX

Average Directional Index

IndicatorCreate,
IndicatorParameters

IND_ADXW

ADX by Welles Wilder

IndicatorCreate,
IndicatorParameters

IND_ALLIGATOR

Alligator

IndicatorCreate,
IndicatorParameters

IND_AMA

Adaptive Moving Average

IndicatorCreate,
IndicatorParameters

IND_AO

Awesome Oscillator

IndicatorCreate,
IndicatorParameters

IND_ATR

Average True Range

IndicatorCreate,
IndicatorParameters

IND_BANDS

Bollinger Bands

IndicatorCreate,
IndicatorParameters

IND_BEARS

Bears Power

IndicatorCreate,
IndicatorParameters

IND_BULLS

Bulls Power

IndicatorCreate,
IndicatorParameters

Again"

foi

2000-2015, MetaQuotes Software Corp.

4233

List of MQL5 Constants

IND_BWMFI

Market Facilitation Index

IndicatorCreate,
IndicatorParameters

IND_CCI

Commodity Channel Index

IndicatorCreate,
IndicatorParameters

IND_CHAIKIN

Chaikin Oscillator

IndicatorCreate,
IndicatorParameters

IND_CUSTOM

Custom indicator

IndicatorCreate,
IndicatorParameters

IND_DEMA

Double Exponential
Average

IND_DEMARKER

DeMarker

IndicatorCreate,
IndicatorParameters

IND_ENVELOPES

Envelopes

IndicatorCreate,
IndicatorParameters

IND_FORCE

Force Index

IndicatorCreate,
IndicatorParameters

IND_FRACTALS

Fractals

IndicatorCreate,
IndicatorParameters

IND_FRAMA

Fractal
Average

IND_GATOR

Gator Oscillator

IndicatorCreate,
IndicatorParameters

IND_ICHIMOKU

Ichimoku Kinko Hyo

IndicatorCreate,
IndicatorParameters

IND_MA

Moving Average

IndicatorCreate,
IndicatorParameters

IND_MACD

MACD

IndicatorCreate,
IndicatorParameters

IND_MFI

Money Flow Index

IndicatorCreate,
IndicatorParameters

IND_MOMENTUM

Momentum

IndicatorCreate,
IndicatorParameters

IND_OBV

On Balance Volume

IndicatorCreate,
IndicatorParameters

IND_OSMA

OsMA

IndicatorCreate,
IndicatorParameters

IND_RSI

Relative Strength Index

IndicatorCreate,
IndicatorParameters

IND_RVI

Relative Vigor Index

IndicatorCreate,
IndicatorParameters

Adaptive

Moving

Moving

2000-2015, MetaQuotes Software Corp.

IndicatorCreate,
IndicatorParameters

IndicatorCreate,
IndicatorParameters

4234

List of MQL5 Constants

IND_SAR

Parabolic SAR

IndicatorCreate,
IndicatorParameters

IND_STDDEV

Standard Deviation

IndicatorCreate,
IndicatorParameters

IND_STOCHASTIC

Stochastic Oscillator

IndicatorCreate,
IndicatorParameters

IND_TEMA

Triple Exponential
Average

Moving

IndicatorCreate,
IndicatorParameters

IND_TRIX

Triple Exponential
Averages Oscillator

Moving

IndicatorCreate,
IndicatorParameters

IND_VIDYA

Variable
Average

Dynamic

IndicatorCreate,
IndicatorParameters

IND_VOLUMES

Volumes

IndicatorCreate,
IndicatorParameters

IND_WPR

Williams' Percent Range

IndicatorCreate,
IndicatorParameters

INDICATOR_CALCULATIONS

Buffers auxiliares para clculos


intermedirios

SetIndexBuffer

INDICATOR_COLOR_INDEX

Cor

SetIndexBuffer

INDICATOR_DATA

Dados para desenho

SetIndexBuffer

INDICATOR_DIGITS

Acuracidade de desenho de
valores de indicador

IndicatorSetInteger

INDICATOR_HEIGHT

Altura fixa da janela do


indicador (o comando de prprocessador
#property
indicator_height)

IndicatorSetInteger

INDICATOR_LEVELCOLOR

Cor da linha de nvel

IndicatorSetInteger

INDICATOR_LEVELS

Nmero de nveis na janela do


indicador

IndicatorSetInteger

INDICATOR_LEVELSTYLE

Estilo da linha de nvel

IndicatorSetInteger

INDICATOR_LEVELTEXT

Nvel de descrio

IndicatorSetString

INDICATOR_LEVELVALUE

Valor de nvel

IndicatorSetDouble

INDICATOR_LEVELWIDTH

Espessura da linha de nvel

IndicatorSetInteger

INDICATOR_MAXIMUM

Mximo da janela do indicador

IndicatorSetDouble

INDICATOR_MINIMUM

Mnimo da janela do indicador

IndicatorSetDouble

INDICATOR_SHORTNAME

Nome do indicador abreviado

IndicatorSetString

INT_MAX

Valor mximo, que pode ser


representado pelo tipo int

Constantes de Tipo Numrico

Index

2000-2015, MetaQuotes Software Corp.

4235

List of MQL5 Constants

INT_MIN

Valor mnimo, que pode ser


representado pelo tipo int

Constantes de Tipo Numrico

INVALID_HANDLE

Manipulador incorreto

Outras Constantes

IS_DEBUG_MODE

Flag que indica que


programa MQL5 opera
modo de depurao

um
em

Outras Constantes

IS_PROFILE_MODE

Flag que indica que


programa MQL5 opera
modo de profiling

um
em

Outras Constantes

KIJUNSEN_LINE

Linha Kijun-sen

Linhas de Indicadores

LICENSE_DEMO

Um verso trial de um produto


pago do Market. Funciona
somente no Provador de
Estratgia

MQLInfoInteger

LICENSE_FREE

Um verso gratuita ilimitada

MQLInfoInteger

LICENSE_FULL

Uma
verso
licenciada
adquirida permite pelo menos
5 ativaes. O vendedor pode
aumentar o nmero permitido
de ativaes.

MQLInfoInteger

LICENSE_TIME

Uma verso com termo de


licena limitada

MQLInfoInteger

LONG_MAX

Valor mximo, que pode ser


representado pelo tipo long

Constantes de Tipo Numrico

LONG_MIN

Valor mnimo, que pode ser


representado pelo tipo long

Constantes de Tipo Numrico

LOWER_BAND

Limite inferior

Linhas de Indicadores

LOWER_HISTOGRAM

Histograma inferior

Linhas de Indicadores

LOWER_LINE

Linha de baixo

Linhas de Indicadores

M_1_PI

1/pi

Constantes Matemticas

M_2_PI

2/pi

Constantes Matemticas

M_2_SQRTPI

2/sqrt(pi)

Constantes Matemticas

M_E

Constantes Matemticas

M_LN10

ln(10)

Constantes Matemticas

M_LN2

ln(2)

Constantes Matemticas

M_LOG10E

log10(e)

Constantes Matemticas

M_LOG2E

log2(e)

Constantes Matemticas

M_PI

pi

Constantes Matemticas

2000-2015, MetaQuotes Software Corp.

4236

List of MQL5 Constants

M_PI_2

pi/2

Constantes Matemticas

M_PI_4

pi/4

Constantes Matemticas

M_SQRT1_2

1/sqrt(2)

Constantes Matemticas

M_SQRT2

sqrt(2)

Constantes Matemticas

MAIN_LINE

Linha principal

Linhas de Indicadores

MB_ABORTRETRYIGNORE

Janela de mensagem contm


trs botes: Abort, Retry e
Ignore

MessageBox

MB_CANCELTRYCONTINUE

Janela de mensagem contm


trs botes: Cancel, Try
Again, Continue

MessageBox

MB_DEFBUTTON1

O
primeiro
boto
MB_DEFBUTTON1 - o default,
se
os
outros
botes
MB_DEFBUTTON2,
MB_DEFBUTTON3,
ou
MB_DEFBUTTON4 no forem
especificados

MessageBox

MB_DEFBUTTON2

O segundo boto o default

MessageBox

MB_DEFBUTTON3

O terceiro boto o default

MessageBox

MB_DEFBUTTON4

O quarto boto o default

MessageBox

MB_ICONEXCLAMATION,
MB_ICONWARNING

O
cone
de
sinal
exclamao/aviso

MB_ICONINFORMATION,
MB_ICONASTERISK

O sinal icercado

MB_ICONQUESTION

O
cone
de
interrogao

MB_ICONSTOP,
MB_ICONERROR,
MB_ICONHAND

O cone de sinal STOP

MessageBox

MB_OK

Janela de mensagem contm


somente um boto: OK.
Default

MessageBox

MB_OKCANCEL

Janela de mensagem contm


dois botes: OK e Cancel

MessageBox

MB_RETRYCANCEL

Janela de mensagem contm


dois botes: Retry e Cancel

MessageBox

MB_YESNO

Janela de mensagem contm


dois botes: Yes e No

MessageBox

MB_YESNOCANCEL

Janela de mensagem contm

MessageBox

de

MessageBox

MessageBox

sinal

de

2000-2015, MetaQuotes Software Corp.

MessageBox

4237

List of MQL5 Constants

trs botes: Yes, No e Cancel


MINUSDI_LINE

Linha DI

Linhas de Indicadores

MODE_EMA

Mdia exponencial

Mtodos de Suavizao

MODE_LWMA

Mdia linear-ponderada

Mtodos de Suavizao

MODE_SMA

Mdia simples

Mtodos de Suavizao

MODE_SMMA

Mdia suavizada

Mtodos de Suavizao

MONDAY

Segunda-feira

SymbolInfoInteger,
SymbolInfoSessionQuote,
SymbolInfoSessionTrade

MQL_DEBUG

O flag, que indica o modo de


depurao

MQLInfoInteger

MQL_DLLS_ALLOWED

A permisso para usar DLL


para
o
dado
programa
executado

MQLInfoInteger

MQL_FRAME_MODE

O sinalizador, indicando que o


Expert Advisor est operando
na coleta de resultado no
modo de otimizao dos
quadros

MQLInfoInteger

MQL_LICENSE_TYPE

Tipo de licena do mdulo EX5.


A licena refere-se ao mdulo
EX5, a partir do qual feita
uma
solicitao
usando
MQLInfoInteger(MQL_LICENSE
_TYPE).

MQLInfoInteger

MQL_MEMORY_LIMIT

Maximum possible amount of


dynamic memory for MQL5
program in MB

MQLInfoInteger

MQL_MEMORY_USED

The memory size used by


MQL5 program in MB

MQLInfoInteger

MQL_OPTIMIZATION

O flag, que indica o processo


de otimizao

MQLInfoInteger

MQL_PROFILER

O flag, que indica que o


programa est operando em
modo de profiling de cdigo

MQLInfoInteger

MQL_PROGRAM_NAME

Nome do
executado

programa

MQL5

MQLInfoString

MQL_PROGRAM_PATH

Caminho
para
o
programa executado

dado

MQLInfoString

MQL_PROGRAM_TYPE

Tipo do programa MQL5

2000-2015, MetaQuotes Software Corp.

MQLInfoInteger

4238

List of MQL5 Constants

MQL_SIGNALS_ALLOWED

The permission to modify the


Signals for the given executed
program

MQLInfoInteger

MQL_TESTER

O flag, que indica o processo


do testador

MQLInfoInteger

MQL_TRADE_ALLOWED

A permisso para negociar


para
o
dado
programa
executado

MQLInfoInteger

MQL_VISUAL_MODE

O flag, que indica o processo


de testador visual

MQLInfoInteger

NULL

Zero para quaisquer tipos

Outras Constantes

OBJ_ALL_PERIODS

O objeto desenhado em
todas das janelas de tempo

ObjectSetInteger,
ObjectGetInteger

OBJ_ARROW

Seta

Tipos de Objeto

OBJ_ARROW_BUY

Comprar

Tipos de Objeto

OBJ_ARROW_CHECK

Conferido

Tipos de Objeto

OBJ_ARROW_DOWN

Seta para baixo

Tipos de Objeto

OBJ_ARROW_LEFT_PRICE

Etiqueta de Preo Esquerda

Tipos de Objeto

OBJ_ARROW_RIGHT_PRICE

Rtulo de Preo Direito

Tipos de Objeto

OBJ_ARROW_SELL

Vender

Tipos de Objeto

OBJ_ARROW_STOP

Sinal Stop

Tipos de Objeto

OBJ_ARROW_THUMB_DOWN

Polegar para Baixo

Tipos de Objeto

OBJ_ARROW_THUMB_UP

Polegares para cima

Tipos de Objeto

OBJ_ARROW_UP

Seta para cima

Tipos de Objeto

OBJ_ARROWED_LINE

Linha de Seta

Tipos de Objeto

OBJ_BITMAP

Bitmap

Tipos de Objeto

OBJ_BITMAP_LABEL

Rtulo Bitmap

Tipos de Objeto

OBJ_BUTTON

Boto

Tipos de Objeto

OBJ_CHANNEL

Canal Eqidistante

Tipos de Objeto

OBJ_CHART

Grfico

Tipos de Objeto

OBJ_CYCLES

Linhas de Ciclo

Tipos de Objeto

OBJ_EDIT

Edio

Tipos de Objeto

OBJ_ELLIOTWAVE3

Onde de Correo de Elliott

Tipos de Objeto

OBJ_ELLIOTWAVE5

Onda Motriz de Elliott

Tipos de Objeto

OBJ_ELLIPSE

Elipse

Tipos de Objeto

2000-2015, MetaQuotes Software Corp.

4239

List of MQL5 Constants

OBJ_EVENT

O
objeto
"Evento"
correspondendo a um evento
no calendrio econmico

Tipos de Objeto

OBJ_EXPANSION

Expanso de Fibonacci

Tipos de Objeto

OBJ_FIBO

Retrao de Fibonacci

Tipos de Objeto

OBJ_FIBOARC

Arcos de Fibonacci

Tipos de Objeto

OBJ_FIBOCHANNEL

Canal de Fibonacci

Tipos de Objeto

OBJ_FIBOFAN

Fibonacci Fan

Tipos de Objeto

OBJ_FIBOTIMES

Fusos Horrios de Fibonacci

Tipos de Objeto

OBJ_GANNFAN

Ventilador Gann

Tipos de Objeto

OBJ_GANNGRID

Grade Gann

Tipos de Objeto

OBJ_GANNLINE

Linha Gann

Tipos de Objeto

OBJ_HLINE

Linha Horizontal

Tipos de Objeto

OBJ_LABEL

Rtulo

Tipos de Objeto

OBJ_NO_PERIODS

O objeto no desenhado em
nenhuma janela de tempo

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_D1

O objeto desenhado em
grficos dirios

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_H1

O objeto desenhado em
grficos de 1 hora

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_H12

O objeto desenhado em
grficos de 12 horas

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_H2

O objeto desenhado em
grficos de 2 horas

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_H3

O objeto desenhado em
grficos de 3 horas

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_H4

O objeto desenhado em
grficos de 4 horas

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_H6

O objeto desenhado em
grficos de 6 horas

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_H8

O objeto desenhado em
grficos de 8 horas

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_M1

O objeto desenhado em
grficos de 1 minuto

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_M10

O objeto desenhado em
grficos de 10 minutos

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_M12

O objeto desenhado em

ObjectSetInteger,

2000-2015, MetaQuotes Software Corp.

4240

List of MQL5 Constants

grficos de 12 minutos

ObjectGetInteger

OBJ_PERIOD_M15

O objeto desenhado em
grficos de 15 minutos

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_M2

O objeto desenhado em
grficos de 2 minutos

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_M20

O objeto desenhado em
grficos de 20 minutos

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_M3

O objeto desenhado em
grficos de 3 minutos

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_M30

O objeto desenhado em
grficos de 30 minutos

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_M4

O objeto desenhado em
grficos de 4 minutos

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_M5

O objeto desenhado em
grficos de 5 minutos

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_M6

O objeto desenhado em
grficos de 6 minutos

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_MN1

O objeto desenhado em
grficos mensais

ObjectSetInteger,
ObjectGetInteger

OBJ_PERIOD_W1

O objeto desenhado em
grficos semanais

ObjectSetInteger,
ObjectGetInteger

OBJ_PITCHFORK

Forquilha de Andrews

Tipos de Objeto

OBJ_RECTANGLE

Retngulo

Tipos de Objeto

OBJ_RECTANGLE_LABEL

O objeto "Rtulo de Retngulo"


para criao e design de
interface grfico customizada.

Tipos de Objeto

OBJ_REGRESSION

Canal de Regresso Linear

Tipos de Objeto

OBJ_STDDEVCHANNEL

Canal de Desvio Padro

Tipos de Objeto

OBJ_TEXT

Texto

Tipos de Objeto

OBJ_TREND

Linha de Tendncia

Tipos de Objeto

OBJ_TRENDBYANGLE

Linha de Tendncia por ngulo

Tipos de Objeto

OBJ_TRIANGLE

Tringulo

Tipos de Objeto

OBJ_VLINE

Linha Vertical

Tipos de Objeto

OBJPROP_ALIGN

Alinhamento
de
horizontal
no
"Edit" (OBJ_EDIT)

texto
objeto

ObjectSetInteger,
ObjectGetInteger

OBJPROP_ANCHOR

Localizao do ponto de
ancoragem de um objeto

ObjectSetInteger,
ObjectGetInteger

2000-2015, MetaQuotes Software Corp.

4241

List of MQL5 Constants

grfico
OBJPROP_ANGLE

ngulo. Para os objetos sem


ngulo especificado, criado a
partir de um programa, o valor
igual a EMPTY_VALUE

ObjectSetDouble,
ObjectGetDouble

OBJPROP_ARROWCODE

Cdigo de seta para o objeto


Seta

ObjectSetInteger,
ObjectGetInteger

OBJPROP_BACK

Objeto no pano de fundo

ObjectSetInteger,
ObjectGetInteger

OBJPROP_BGCOLOR

A cor de fundo para OBJ_EDIT,


OBJ_BUTTON,
OBJ_RECTANGLE_LABEL

ObjectSetInteger,
ObjectGetInteger

OBJPROP_BMPFILE

O nome do arquivo BMP para


rtulo Bitmap. Veja tambm
Recursos

ObjectSetString,
ObjectGetString

OBJPROP_BORDER_COLOR

Cor de borda para os objetos


OBJ_EDIT e OBJ_BUTTON

ObjectSetInteger,
ObjectGetInteger

OBJPROP_BORDER_TYPE

Tipo de borda para o objeto


"Rectangle label"

ObjectSetInteger,
ObjectGetInteger

OBJPROP_CHART_ID

ID
do
objeto
"Chart" (OBJ_CHART). Permite
trabalhar com as propriedades
deste objeto como um grfico
normal usando as funes
descritas em Operaes de
Grfico,
mas
existem
algumas excees.

ObjectSetInteger,
ObjectGetInteger

OBJPROP_CHART_SCALE

A escala para o objeto Chart

ObjectSetInteger,
ObjectGetInteger

OBJPROP_COLOR

Cor

ObjectSetInteger,
ObjectGetInteger

OBJPROP_CORNER

O canto do grfico para linkar


um objeto grfico

ObjectSetInteger,
ObjectGetInteger

OBJPROP_CREATETIME

Hora de criao do objeto

ObjectSetInteger,
ObjectGetInteger

OBJPROP_DATE_SCALE

Exibio da escala de tempo


para o objeto Chart

ObjectSetInteger,
ObjectGetInteger

OBJPROP_DEGREE

Nvel de marcao da Onda de


Elliott

ObjectSetInteger,
ObjectGetInteger

OBJPROP_DEVIATION

Desvio para o Canal de Desvio


Padro

ObjectSetDouble,
ObjectGetDouble

2000-2015, MetaQuotes Software Corp.

4242

List of MQL5 Constants

OBJPROP_DIRECTION

Tendncia do objeto Gann

ObjectSetInteger,
ObjectGetInteger

OBJPROP_DRAWLINES

Exibio de linhas
para
marcao da Onda de Elliott

ObjectSetInteger,
ObjectGetInteger

OBJPROP_ELLIPSE

Exibio da elipse completa do


objeto Arco de Fibonacci
(OBJ_FIBOARC)

ObjectSetInteger,
ObjectGetInteger

OBJPROP_FILL

Preenche um objeto com cor


(para
OBJ_RECTANGLE,
OBJ_TRIANGLE, OBJ_ELLIPSE,
OBJ_CHANNEL,
OBJ_STDDEVCHANNEL,
OBJ_REGRESSION)

ObjectSetInteger,
ObjectGetInteger

OBJPROP_FONT

Font

ObjectSetString,
ObjectGetString

OBJPROP_FONTSIZE

Tamanho de fonte

ObjectSetInteger,
ObjectGetInteger

OBJPROP_HIDDEN

Probe exibir o nome de um


objeto grfico na lista de
objetos do menu do terminal
"Grficos" - "Objetos" - "Lista
de objetos". O valor true
permite ocultar um objeto da
lista. Por default, true
definido para os objetos que
exibem eventos de calendrio,
histrico de negociao e para
objetos criados a partir de
programas MQL5. Para ver
tais objetos grficos e acessar
suas propriedades, clique no
boto "TODOS" na janela
"Lista de objetos".

ObjectSetInteger,
ObjectGetInteger

OBJPROP_LEVELCOLOR

Cor das linhas de nvel

ObjectSetInteger,
ObjectGetInteger

OBJPROP_LEVELS

Nmero de nveis

ObjectSetInteger,
ObjectGetInteger

OBJPROP_LEVELSTYLE

Estilo da linha de nvel

ObjectSetInteger,
ObjectGetInteger

OBJPROP_LEVELTEXT

Nvel de descrio

ObjectSetString,
ObjectGetString

OBJPROP_LEVELVALUE

Valor de nvel

ObjectSetDouble,
ObjectGetDouble

2000-2015, MetaQuotes Software Corp.

4243

List of MQL5 Constants

OBJPROP_LEVELWIDTH

Espessura do nvel de linha

ObjectSetInteger,
ObjectGetInteger

OBJPROP_NAME

Nome de objeto

ObjectSetString,
ObjectGetString

OBJPROP_PERIOD

Janela de tempo para o objeto


Chart

ObjectSetInteger,
ObjectGetInteger

OBJPROP_PRICE

Coordenada de Preo

ObjectSetDouble,
ObjectGetDouble

OBJPROP_PRICE_SCALE

Exibio da escala de preo


para o objeto Chart

ObjectSetInteger,
ObjectGetInteger

OBJPROP_RAY

Uma linha
vertical indo
atravs de todas as janelas de
um grfico

ObjectSetInteger,
ObjectGetInteger

OBJPROP_RAY_LEFT

Raios indo para esquerda

ObjectSetInteger,
ObjectGetInteger

OBJPROP_RAY_RIGHT

Raios indo para direita

ObjectSetInteger,
ObjectGetInteger

OBJPROP_READONLY

Capacidade de editar texto no


objeto Edit

ObjectSetInteger,
ObjectGetInteger

OBJPROP_SCALE

Escala
(propriedades
objetos Gann e Arcos
Fibonnacci)

ObjectSetDouble,
ObjectGetDouble

OBJPROP_SELECTABLE

Disponibilidade de objeto

ObjectSetInteger,
ObjectGetInteger

OBJPROP_SELECTED

Objeto selecionado

ObjectSetInteger,
ObjectGetInteger

OBJPROP_STATE

Estado
de
(pressionado
/
pressionado)

OBJPROP_STYLE

Estilo

ObjectSetInteger,
ObjectGetInteger

OBJPROP_SYMBOL

Ativo para o objeto Chart

ObjectSetString,
ObjectGetString

OBJPROP_TEXT

Descrio do objeto (o texto


contido no objeto)

ObjectSetString,
ObjectGetString

OBJPROP_TIME

Coordenada de tempo

ObjectSetInteger,
ObjectGetInteger

OBJPROP_TIMEFRAMES

Visibilidade de um objeto nas


janelas de tempo

ObjectSetInteger,
ObjectGetInteger

OBJPROP_TOOLTIP

O texto de um "tooltip" (dica).

ObjectSetString,

de
de

boto
no

2000-2015, MetaQuotes Software Corp.

ObjectSetInteger,
ObjectGetInteger

4244

List of MQL5 Constants

Se a propriedade no
definida, ento o "tooltip"
gerado automaticamente pelo
terminal exibido. Um
"tooltip" pode ser desabilitado
atravs da atribuio do valor
"\n" (quebra de linha) a ele

ObjectGetString

OBJPROP_TYPE

Tipo de objeto

ObjectSetInteger,
ObjectGetInteger

OBJPROP_WIDTH

Espessura de linha

ObjectSetInteger,
ObjectGetInteger

OBJPROP_XDISTANCE

A distncia em pixels ao longo


do eixo X a partir do canto de
vinculao (see note)

ObjectSetInteger,
ObjectGetInteger

OBJPROP_XOFFSET

A coordenada X do canto
superior esquerdo da rea
visvel retangular nos objetos
grficos "Bitmap Label" e
"Bitmap" (OBJ_BITMAP_LABEL
e OBJ_BITMAP). O valor
definido em pixels em relao
ao canto superior esquerdo da
imagem original.

ObjectSetInteger,
ObjectGetInteger

OBJPROP_XSIZE

O tamanho do objeto Chart ao


longo do eixo X (largura em
pixels)
Especificado
para
objetos
OBJ_LABEL
(read
only),
OBJ_BUTTON,
OBJ_CHART,
OBJ_BITMAP,
OBJ_BITMAP_LABEL,
OBJ_EDIT,
OBJ_RECTANGLE_LABEL.

ObjectSetInteger,
ObjectGetInteger

OBJPROP_YDISTANCE

A distncia em pixels ao longo


do eixo Y a partir do canto de
vinculao (see note)

ObjectSetInteger,
ObjectGetInteger

OBJPROP_YOFFSET

A coordenada X do canto
superior esquerdo da rea
visvel retangular nos objetos
grficos "Bitmap Label" e
"Bitmap" (OBJ_BITMAP_LABEL
e OBJ_BITMAP). O valor
definido em pixels em relao
ao canto superior esquerdo da
imagem original.

ObjectSetInteger,
ObjectGetInteger

OBJPROP_YSIZE

O tamanho do objeto Chart ao


longo do eixo X (largura em

ObjectSetInteger,
ObjectGetInteger

2000-2015, MetaQuotes Software Corp.

4245

List of MQL5 Constants

pixels)
Especificado
para
objetos
OBJ_LABEL
(read
only),
OBJ_BUTTON,
OBJ_CHART,
OBJ_BITMAP,
OBJ_BITMAP_LABEL,
OBJ_EDIT,
OBJ_RECTANGLE_LABEL.
OBJPROP_ZORDER

Prioridade de um objeto
grfico para receber eventos
de clickagem em um grfico
(CHARTEVENT_CLICK). O valor
zero default definido ao se
criar um objeto; a prioridade
pode ser aumentada
se
necessrio. Ao colocar objetos
um sobre o outro, somente
aquele com a maior prioridade
receber
o
evento
CHARTEVENT_CLICK.

ObjectSetInteger,
ObjectGetInteger

ORDER_COMMENT

Comentrio sobre a ordem

OrderGetString,
HistoryOrderGetString

ORDER_FILLING_FOK

Esta poltica de preenchimento


significa que uma ordem pode
ser preenchida somente na
quantidade especificada. Se a
quantidade desejada do ativo
no
est
disponvel no
mercado, a ordem no ser
executada.
O
volume
requerido pode ser preenchido
usando
vrias
ofertas
disponveis no mercado no
momento.

OrderGetInteger,
HistoryOrderGetInteger

ORDER_FILLING_IOC

Este modo significa que um


negociador
concorda
em
executar uma operao com o
volume mximo disponvel no
mercado conforme indicado na
ordem. No caso do volume
integral de uma ordem no
puder ser preenchido, o
volume disponvel dele ser
preenchido, e o volume
restante ser cancelado.

OrderGetInteger,
HistoryOrderGetInteger

ORDER_FILLING_RETURN

Esta poltica usada somente


para
ordens
a
mercado
(ORDER_TYPE_BUY
e

OrderGetInteger,
HistoryOrderGetInteger

2000-2015, MetaQuotes Software Corp.

4246

List of MQL5 Constants

ORDER_TYPE_SELL),
ordens
limit
e
stop
limit
(ORDER_TYPE_BUY_LIMIT,
ORDER_TYPE_SELL_LIMIT,
ORDER_TYPE_BUY_STOP_LIMI
T
e
ORDER_TYPE_SELL_STOP_LIMI
T ) e somente para os ativos
com execuo a Mercado ou
execuo em um sistema de
negociao
externo
(Exchange)***. No caso de um
preenchimento parcial, uma
ordem a mercado ou do tipo
limit
com
volume
remanescente
no

cancelada, mas processada


posteriormente.
Para a ativao das ordens
ORDER_TYPE_BUY_STOP_LIMI
T
e
ORDER_TYPE_SELL_STOP_LIMI
T,
uma
ordem
limit
correspondente,
ORDER_TYPE_BUY_LIMIT/
ORDER_TYPE_SELL_LIMIT com
o
tipo
de
execuo
ORDER_FILLING_RETURN,

criada.
ORDER_MAGIC

ID de um Expert Advisor que


colocou a ordem (projetado
para garantir que cada Expert
Advisor coloque seu prprio
nmero nico)

OrderGetInteger,
HistoryOrderGetInteger

ORDER_POSITION_ID

Identificador de posio que


definido para uma ordem to
logo ela executada. Cada
ordem executada resulta em
uma operao que abre ou
modifica uma posio j
existente. O identificador
desta
exata
posio

atribuda ordem executada


neste momento.

OrderGetInteger,
HistoryOrderGetInteger

ORDER_PRICE_CURRENT

O preo corrente do ativo de


uma ordem

OrderGetDouble,
HistoryOrderGetDouble

ORDER_PRICE_OPEN

Preo especificado na ordem

OrderGetDouble,
HistoryOrderGetDouble

2000-2015, MetaQuotes Software Corp.

4247

List of MQL5 Constants

ORDER_PRICE_STOPLIMIT

O preo de ordem Limit para


uma ordem StopLimit

OrderGetDouble,
HistoryOrderGetDouble

ORDER_SL

Valor de Stop Loss

OrderGetDouble,
HistoryOrderGetDouble

ORDER_STATE

Estado de uma ordem

OrderGetInteger,
HistoryOrderGetInteger

ORDER_STATE_CANCELED

Ordem cancelada pelo cliente

OrderGetInteger,
HistoryOrderGetInteger

ORDER_STATE_EXPIRED

Ordem expirada

OrderGetInteger,
HistoryOrderGetInteger

ORDER_STATE_FILLED

Ordem
completamente

executada

OrderGetInteger,
HistoryOrderGetInteger

ORDER_STATE_PARTIAL

Ordem
parcialmente

executada

OrderGetInteger,
HistoryOrderGetInteger

ORDER_STATE_PLACED

Ordem aceita

OrderGetInteger,
HistoryOrderGetInteger

ORDER_STATE_REJECTED

Ordem rejeitada

OrderGetInteger,
HistoryOrderGetInteger

ORDER_STATE_REQUEST_ADD

Ordem est sendo registrada


(aplicao para o sistema de
negociao)

OrderGetInteger,
HistoryOrderGetInteger

ORDER_STATE_REQUEST_CAN
CEL

Ordem est sendo excluda


(excluindo a partir do sistema
de negociao)

OrderGetInteger,
HistoryOrderGetInteger

ORDER_STATE_REQUEST_MOD
IFY

Ordem est sendo modificada


(alterando seus parmetros)

OrderGetInteger,
HistoryOrderGetInteger

ORDER_STATE_STARTED

Ordem verificada, mas ainda


no aceita pela corretora
(broker)

OrderGetInteger,
HistoryOrderGetInteger

ORDER_SYMBOL

Ativo (symbol) de uma ordem

OrderGetString,
HistoryOrderGetString

ORDER_TIME_DAY

Ordem vlida at o final do dia


corrente de negociao

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TIME_DONE

Hora
de
execuo
ou
cancelamento de uma ordem

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TIME_DONE_MSC

Tempo
de
execuo
e
cancelamento de ordens em
milissegundos
desde
01.01.1970

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TIME_EXPIRATION

Hora de expirao de uma


ordem

OrderGetInteger,
HistoryOrderGetInteger

2000-2015, MetaQuotes Software Corp.

4248

List of MQL5 Constants

ORDER_TIME_GTC

Ordem
vlida
cancelamento

at

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TIME_SETUP

Hora de configurao de uma


ordem

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TIME_SETUP_MSC

O tempo para colocar uma


ordem de execuo
em
milissegundos
desde
01.01.1970

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TIME_SPECIFIED

Ordem vlida at expirao

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TIME_SPECIFIED_DAY

A ordem permanecer efetiva


at 00:00 do dia especificado.
Se esta hora est fora de uma
sesso de negociao, a
ordem expira na hora de
negociao mais prxima.

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TP

Valor de Take Profit

OrderGetDouble,
HistoryOrderGetDouble

ORDER_TYPE

Tipo de ordem

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TYPE_BUY

Ordem de Comprar a Mercado

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TYPE_BUY_LIMIT

Ordem pendente Buy Limit

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TYPE_BUY_STOP

Ordem pendente Buy Stop

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TYPE_BUY_STOP_LIMI
T

Ao alcanar o preo da ordem,


uma ordem pendente Buy
Limit colocada no preo
StopLimit

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TYPE_FILLING

Type de preenchimento de
uma ordem

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TYPE_SELL

Ordem de Vender a Mercado

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TYPE_SELL_LIMIT

Ordem pendente Sell Limit

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TYPE_SELL_STOP

Ordem pendente Sell Stop

OrderGetInteger,
HistoryOrderGetInteger

ORDER_TYPE_SELL_STOP_LIMI
T

Ao alcanar o preo da ordem,


uma ordem pendente Sell
Limit colocada no preo
StopLimit

OrderGetInteger,
HistoryOrderGetInteger

2000-2015, MetaQuotes Software Corp.

4249

List of MQL5 Constants

ORDER_TYPE_TIME

tempo de durao de uma


ordem

OrderGetInteger,
HistoryOrderGetInteger

ORDER_VOLUME_CURRENT

Volume
ordem

OrderGetDouble,
HistoryOrderGetDouble

ORDER_VOLUME_INITIAL

Volume inicial de uma ordem

OrderGetDouble,
HistoryOrderGetDouble

PERIOD_CURRENT

Janela de tempo corrente

Janela temporal de Grfico

PERIOD_D1

1 dia

Janela temporal de Grfico

PERIOD_H1

1 hora

Janela temporal de Grfico

PERIOD_H12

12 horas

Janela temporal de Grfico

PERIOD_H2

2 horas

Janela temporal de Grfico

PERIOD_H3

3 horas

Janela temporal de Grfico

PERIOD_H4

4 horas

Janela temporal de Grfico

PERIOD_H6

6 horas

Janela temporal de Grfico

PERIOD_H8

8 horas

Janela temporal de Grfico

PERIOD_M1

1 minuto

Janela temporal de Grfico

PERIOD_M10

10 minutos

Janela temporal de Grfico

PERIOD_M12

12 minutos

Janela temporal de Grfico

PERIOD_M15

15 minutos

Janela temporal de Grfico

PERIOD_M2

2 minutos

Janela temporal de Grfico

PERIOD_M20

20 minutos

Janela temporal de Grfico

PERIOD_M3

3 minutos

Janela temporal de Grfico

PERIOD_M30

30 minutos

Janela temporal de Grfico

PERIOD_M4

4 minutos

Janela temporal de Grfico

PERIOD_M5

5 minutos

Janela temporal de Grfico

PERIOD_M6

6 minutos

Janela temporal de Grfico

PERIOD_MN1

1 ms

Janela temporal de Grfico

PERIOD_W1

1 semana

Janela temporal de Grfico

PLOT_ARROW

Cdigo de seta para estilo


DRAW_ARROW

PlotIndexSetInteger,
PlotIndexGetInteger

PLOT_ARROW_SHIFT

Deslocamento vertical de setas


para estilo DRAW_ARROW

PlotIndexSetInteger,
PlotIndexGetInteger

PLOT_COLOR_INDEXES

O nmero de cores

PlotIndexSetInteger,
PlotIndexGetInteger

PLOT_DRAW_BEGIN

Nmero de barras iniciais sem

PlotIndexSetInteger,

corrente

de

uma

2000-2015, MetaQuotes Software Corp.

4250

List of MQL5 Constants

desenho e valores na Janela de


Dados

PlotIndexGetInteger

PLOT_DRAW_TYPE

Tipo de construo grfica

PlotIndexSetInteger,
PlotIndexGetInteger

PLOT_EMPTY_VALUE

Um valor vazio para plotagem,


para a qual no h desenho

PlotIndexSetDouble

PLOT_LABEL

O nome da srie grfica do


indicador para exibir na Janela
de Dados Ao trabalhar com
estilos grficos complexos
exigindo vrios buffers de
indicador para a exposio, os
nomes para cada buffer pode
ser especificado utilizando ";"
como separador. O cdigo de
exemplo mostrado na
DRAW_CANDLES

PlotIndexSetString

PLOT_LINE_COLOR

O ndice de um buffer
contendo a cor de desenho

PlotIndexSetInteger,
PlotIndexGetInteger

PLOT_LINE_STYLE

Estilo de linha de desenho

PlotIndexSetInteger,
PlotIndexGetInteger

PLOT_LINE_WIDTH

A espessura
desenho

de

PlotIndexSetInteger,
PlotIndexGetInteger

PLOT_SHIFT

Deslocamento da plotagem do
indicador ao longo do eixo
tempo em barras

PlotIndexSetInteger,
PlotIndexGetInteger

PLOT_SHOW_DATA

Sinal de exibio de valores de


construo na Janela de Dados

PlotIndexSetInteger,
PlotIndexGetInteger

PLUSDI_LINE

Linha +DI

Linhas de Indicadores

POINTER_AUTOMATIC

Ponteiro de qualquer objeto


criado automaticamente (sem
usar new())

CheckPointer

POINTER_DYNAMIC

Ponteiro do objeto criado por


meio do operador new()

CheckPointer

POINTER_INVALID

Ponteiro incorreto

CheckPointer

POSITION_COMMENT

Comentrio de uma posio

PositionGetString

POSITION_COMMISSION

Comisso

PositionGetDouble

POSITION_IDENTIFIER

Identificador de posio um
nmero nico que atribudo
para toda nova posio aberta
e no se altera durante todo o
tempo de vida da posio.

PositionGetInteger

da

linha

2000-2015, MetaQuotes Software Corp.

4251

List of MQL5 Constants

Movimentaes
de
uma
posio no alteram seu
identificador.
POSITION_MAGIC

Nmero mgico de uma


posio (veja ORDER_MAGIC)

PositionGetInteger

POSITION_PRICE_CURRENT

Preo corrente do ativo de


uma posio

PositionGetDouble

POSITION_PRICE_OPEN

Preo de abertura de uma


posio

PositionGetDouble

POSITION_PROFIT

Lucro corrente

PositionGetDouble

POSITION_SL

Nvel de Stop Loss de uma


posio aberta

PositionGetDouble

POSITION_SWAP

Swap acumulativo

PositionGetDouble

POSITION_SYMBOL

Ativo (symbol) da posio

PositionGetString

POSITION_TIME

Hora de abertura de uma


posio

PositionGetInteger

POSITION_TIME_MSC

Posio de tempo de abertura


em
milissegundos
desde
01.01.1970

PositionGetInteger

POSITION_TIME_UPDATE

Posio de tempo de alterao


em
segundos
desde
01.01.1970

PositionGetInteger

POSITION_TIME_UPDATE_MSC

Posio de tempo de alterao


em
milissegundo
desde
01.01.1970

PositionGetInteger

POSITION_TP

Nvel de Take Profit de uma


posio aberta

PositionGetDouble

POSITION_TYPE

Tipo de posio

PositionGetInteger

POSITION_TYPE_BUY

Compra

PositionGetInteger

POSITION_TYPE_SELL

Venda

PositionGetInteger

POSITION_VOLUME

Volume de uma posio

PositionGetDouble

PRICE_CLOSE

Preo de Fechamento

Constantes de Preo

PRICE_HIGH

O preo
perodo

Constantes de Preo

PRICE_LOW

O preo mnimo para o perodo

Constantes de Preo

PRICE_MEDIAN

O preo mediano, (mximo +


mnimo)/2

Constantes de Preo

PRICE_OPEN

Preo de Abertura

Constantes de Preo

mximo

para

2000-2015, MetaQuotes Software Corp.

4252

List of MQL5 Constants

PRICE_TYPICAL

Preo tpico, (mximo


mnimo + fechamento)/3

Constantes de Preo

PRICE_WEIGHTED

Preo mdio, (mximo


mnimo + fechamento
fechamento)/4

+
+

Constantes de Preo

PROGRAM_EXPERT

Expert

MQLInfoInteger

PROGRAM_INDICATOR

Indicador

MQLInfoInteger

PROGRAM_SCRIPT

Script

MQLInfoInteger

REASON_ACCOUNT

Another account has been


activated or reconnection to
the trade server has occurred
due to changes in the account
settings

UninitializeReason, OnDeinit

REASON_CHARTCHANGE

Symbol or chart period has


been changed

UninitializeReason, OnDeinit

REASON_CHARTCLOSE

Chart has been closed

UninitializeReason, OnDeinit

REASON_CLOSE

Terminal has been closed

UninitializeReason, OnDeinit

REASON_INITFAILED

This value means that OnInit()


handler has returned a nonzero
value

UninitializeReason, OnDeinit

REASON_PARAMETERS

Input parameters have been


changed by a user

UninitializeReason, OnDeinit

REASON_PROGRAM

Expert Advisor terminated its


operation by calling the
ExpertRemove() function

UninitializeReason, OnDeinit

REASON_RECOMPILE

Program has been recompiled

UninitializeReason, OnDeinit

REASON_REMOVE

Program has been


from the chart

UninitializeReason, OnDeinit

REASON_TEMPLATE

A new template has


applied

SATURDAY

Sbado

SEEK_CUR

Posio corrente
ponteiro de arquivo

SEEK_END

Fim de arquivo

FileSeek

SEEK_SET

Incio de arquivo

FileSeek

SENKOUSPANA_LINE

Linha Senkou Span A

Linhas de Indicadores

SENKOUSPANB_LINE

Linha Senkou Span B

Linhas de Indicadores

deleted

been

UninitializeReason, OnDeinit

SymbolInfoInteger,
SymbolInfoSessionQuote,
SymbolInfoSessionTrade
de

um

2000-2015, MetaQuotes Software Corp.

FileSeek

4253

List of MQL5 Constants

SERIES_BARS_COUNT

Quantidade de barras para o


ativo-perodo para o momento
corrente

SeriesInfoInteger

SERIES_FIRSTDATE

A primeira data para o ativoperodo para o momento


corrente

SeriesInfoInteger

SERIES_LASTBAR_DATE

Hora de abertura da ltima


barra do ativo-perodo

SeriesInfoInteger

SERIES_SERVER_FIRSTDATE

A primeira data no histrico


do
ativo
no
servidor
independentemente da janela
de tempo

SeriesInfoInteger

SERIES_SYNCHRONIZED

Flag de sincronizao de dados


de um ativo/perodo para o
momento corrente

SeriesInfoInteger

SERIES_TERMINAL_FIRSTDATE

A primeira data no histrico


do ativo no terminal cliente,
independentemente da janela
de tempo

SeriesInfoInteger

SHORT_MAX

Valor mximo, que pode ser


representado pelo tipo short

Constantes de Tipo Numrico

SHORT_MIN

Valor mnimo, que pode ser


representado pelo tipo short

Constantes de Tipo Numrico

SIGNAL_BASE_AUTHOR_LOGIN

Author login

SignalBaseGetString

SIGNAL_BASE_BALANCE

Account balance

SignalBaseGetDouble

SIGNAL_BASE_BROKER

Broker name (company)

SignalBaseGetString

SIGNAL_BASE_BROKER_SERVE
R

Broker server

SignalBaseGetString

SIGNAL_BASE_CURRENCY

Signal base currency

SignalBaseGetString

SIGNAL_BASE_DATE_PUBLISHE
D

Publication date (date when it


become
available
for
subscription)

SignalBaseGetInteger

SIGNAL_BASE_DATE_STARTED

Monitoring starting date

SignalBaseGetInteger

SIGNAL_BASE_EQUITY

Account equity

SignalBaseGetDouble

SIGNAL_BASE_GAIN

Account gain

SignalBaseGetDouble

SIGNAL_BASE_ID

Signal ID

SignalBaseGetInteger

SIGNAL_BASE_LEVERAGE

Account leverage

SignalBaseGetInteger

SIGNAL_BASE_MAX_DRAWDO
WN

Account maximum drawdown

SignalBaseGetDouble

2000-2015, MetaQuotes Software Corp.

4254

List of MQL5 Constants

SIGNAL_BASE_NAME

Signal name

SignalBaseGetString

SIGNAL_BASE_PIPS

Profit in pips

SignalBaseGetInteger

SIGNAL_BASE_PRICE

Signal subscription price

SignalBaseGetDouble

SIGNAL_BASE_RATING

Position in rating

SignalBaseGetInteger

SIGNAL_BASE_ROI

Return on Investment (%)

SignalBaseGetDouble

SIGNAL_BASE_SUBSCRIBERS

Number of subscribers

SignalBaseGetInteger

SIGNAL_BASE_TRADE_MODE

Account type (0-real, 1-demo,


2-contest)

SignalBaseGetInteger

SIGNAL_BASE_TRADES

Number of trades

SignalBaseGetInteger

SIGNAL_INFO_CONFIRMATION
S_DISABLED

The
flag
synchronization
confirmation dialog

SIGNAL_INFO_COPY_SLTP

Copy Stop Loss


Profit flag

SIGNAL_INFO_DEPOSIT_PERCE
NT

Deposit percent (%)

SignalInfoGetInteger,
SignalInfoSetInteger

SIGNAL_INFO_EQUITY_LIMIT

Equity limit

SignalInfoGetDouble,
SignalInfoSetDouble

SIGNAL_INFO_ID

Signal id, r/o

SignalInfoGetInteger,
SignalInfoSetInteger

SIGNAL_INFO_NAME

Signal name, r/o

SignalInfoGetString

SIGNAL_INFO_SLIPPAGE

Slippage (used when placing


market
orders
in
synchronization of positions
and copying of trades)

SignalInfoGetDouble,
SignalInfoSetDouble

SIGNAL_INFO_SUBSCRIPTION_
ENABLED

"Copy trades by subscription"


permission flag

SignalInfoGetInteger,
SignalInfoSetInteger

SIGNAL_INFO_TERMS_AGREE

"Agree to terms of use of


Signals service" flag, r/o

SignalInfoGetInteger,
SignalInfoSetInteger

SIGNAL_INFO_VOLUME_PERCE
NT

Maximum percent of deposit


used (%), r/o

SignalInfoGetDouble,
SignalInfoSetDouble

SIGNAL_LINE

Linha de sinal

Linhas de Indicadores

STAT_BALANCE_DD

Mxima queda de saldo em


termos monetrios Em um
processo de negociao, um
saldo pode sofrer numerosas
quedas; aqui o maior valor
tomado

TesterStatistics

STAT_BALANCE_DD_RELATIVE

Queda de saldo em termos

TesterStatistics

enables
without

SignalInfoGetInteger,
SignalInfoSetInteger

and Take

SignalInfoGetInteger,
SignalInfoSetInteger

2000-2015, MetaQuotes Software Corp.

4255

List of MQL5 Constants

monetrios que foi registrada


no momento da mxima queda
do
saldo
como
uma
percentagem
(STAT_BALANCE_DDREL_PERC
ENT).
STAT_BALANCE_DDREL_PERCE
NT

Mxima queda de saldo com


uma percentagem. Em um
processo de negociao, um
saldo pode sofrer numerosas
quedas, para cada qual a valor
da
queda
relativa
em
percentagem calculada. O
maior valor retornado

TesterStatistics

STAT_BALANCEDD_PERCENT

Queda de saldo como uma


percentagem
que
foi
registrada no momento da
mxima queda do saldo em
termos
monetrios
(STAT_BALANCE_DD).

TesterStatistics

STAT_BALANCEMIN

Valor do saldo mnimo

TesterStatistics

STAT_CONLOSSMAX

Prejuzo mximo em uma


srie
de
negociaes
perdedoras. O valor menor
ou igual a zero

TesterStatistics

STAT_CONLOSSMAX_TRADES

O nmero de negociaes
(trades)
que
formaram
oSTAT_CONLOSSMAX(mximo
prejuzo em uma srie de
negociaes perdedoras)

TesterStatistics

STAT_CONPROFITMAX

Lucro mximo em uma srie


de negociaes lucrativas. O
valor maior ou igual a zero

TesterStatistics

STAT_CONPROFITMAX_TRADE
S

O nmero de negociaes que


formaram
oSTAT_CONPROFITMAX(lucro
mximo em uma srie de
negociaes lucrativas)

TesterStatistics

STAT_CUSTOM_ONTESTER

O valor do critrio de
otimizao
customizado
calculado retornado atravs da
funo OnTester()

TesterStatistics

STAT_DEALS

Nmero de operaes (deals)

TesterStatistics

STAT_EQUITY_DD

Mxima queda do saldo a


mercado
em
termos

TesterStatistics

2000-2015, MetaQuotes Software Corp.

4256

List of MQL5 Constants

monetrios. Em um processo
de negociao, numerosas
quedas podem ocorrer no saldo
a mercado; aqui o maior valor
tomado
STAT_EQUITY_DD_RELATIVE

Queda do saldo a mercado em


termos monetrios que foi
registrada no momento da
mxima queda do saldo a
mercado em percentagem
(STAT_EQUITY_DDREL_PERCE
NT).

TesterStatistics

STAT_EQUITY_DDREL_PERCEN
T

Mxima queda do saldo a


mercado
como
uma
percentagem. Em um processo
de negociao, um saldo a
mercado
pode
sofrer
numerosas quedas, para cada
qual o valor da queda relativa
em percentagem calculado.
O maior valor retornado

TesterStatistics

STAT_EQUITYDD_PERCENT

Queda em percentagem que


foi registrada no momento da
mxima queda do saldo a
mercado
em
termos
monetrios
(STAT_EQUITY_DD).

TesterStatistics

STAT_EQUITYMIN

Mnimo valor
mercado

TesterStatistics

STAT_EXPECTED_PAYOFF

Recompensa esperada

TesterStatistics

STAT_GROSS_LOSS

Prejuzo total, a soma de


todas
as
negociaes
negativas. O valor menor ou
igual a zero

TesterStatistics

STAT_GROSS_PROFIT

Lucro total, a soma de todas


as
negociaes
lucrativas
(positivas). O valor maior ou
igual a zero

TesterStatistics

STAT_INITIAL_DEPOSIT

O valor do depsito inicial

TesterStatistics

STAT_LONG_TRADES

Negociaes Compradas

TesterStatistics

STAT_LOSS_TRADES

Negociaes perdedoras

TesterStatistics

STAT_LOSSTRADES_AVGCON

Comprimento mdio de uma


srie
de
negociaes
perdedores

TesterStatistics

do

saldo

2000-2015, MetaQuotes Software Corp.

4257

List of MQL5 Constants

STAT_MAX_CONLOSS_TRADES

O nmero de negociaes na
mais
longa
srie
de
negociaes
perdedoras
STAT_MAX_CONLOSSES

TesterStatistics

STAT_MAX_CONLOSSES

O total de prejuzo da mais


longa srie de negociaes
perdedoras

TesterStatistics

STAT_MAX_CONPROFIT_TRAD
ES

O nmero de negociaes na
mais
longa
srie
de
negociaes
lucrativasSTAT_MAX_CONWIN
S

TesterStatistics

STAT_MAX_CONWINS

O lucro total da mais longa


srie
de
negociaes
lucrativas

TesterStatistics

STAT_MAX_LOSSTRADE

Prejuzo Mximo - o menor


valor
dentre
todos
as
negociaes
(trades)
perdedoras O valor menor ou
igual a zero

TesterStatistics

STAT_MAX_PROFITTRADE

Lucro mximo - o maior valor


dentre todas as negociaes
lucrativas O valor maior ou
igual a zero

TesterStatistics

STAT_MIN_MARGINLEVEL

Valor mnimo do nvel de


margem

TesterStatistics

STAT_PROFIT

Lucro lquido aps o teste, a


soma de STAT_GROSS_PROFIT
e
STAT_GROSS_LOSS
(STAT_GROSS_LOSS sempre
menor ou igual a zero)

TesterStatistics

STAT_PROFIT_FACTOR

Fator de lucro, igual a razo


de
STAT_GROSS_PROFIT/
STAT_GROSS_LOSS.
Se
STAT_GROSS_LOSS=0, o fator
de lucro igual aDBL_MAX

TesterStatistics

STAT_PROFIT_LONGTRADES

Negociaes
lucrativas

compradas

TesterStatistics

STAT_PROFIT_SHORTTRADES

Negociaes
lucrativas

vendidas

TesterStatistics

STAT_PROFIT_TRADES

Negociaes
lucrativas

compradas

TesterStatistics

STAT_PROFITTRADES_AVGCO
N

Comprimento mdio de uma


srie
de
negociaes

TesterStatistics

2000-2015, MetaQuotes Software Corp.

4258

List of MQL5 Constants

lucrativas
STAT_RECOVERY_FACTOR

Fator de recuperao, igual a


razo
de
STAT_PROFIT/
STAT_BALANCE_DD

TesterStatistics

STAT_SHARPE_RATIO

Razo Sharpe

TesterStatistics

STAT_SHORT_TRADES

Negociaes Vendidas

TesterStatistics

STAT_TRADES

Nmero
(trades)

TesterStatistics

STAT_WITHDRAWAL

Dinheiro sacado da conta

TesterStatistics

STO_CLOSECLOSE

Clculo baseado em preos


Fechamento/Fechamento

Constantes de Preo

STO_LOWHIGH

Clculo baseado em preos


Mnimo/Mximo

Constantes de Preo

STYLE_DASH

Linha tracejada

Estilos de Desenho

STYLE_DASHDOT

Linha trao-ponto

Estilos de Desenho

STYLE_DASHDOTDOT

Trao - dois pontos

Estilos de Desenho

STYLE_DOT

Linha pontilhada

Estilos de Desenho

STYLE_SOLID

Linha slida

Estilos de Desenho

SUNDAY

Domingo

SymbolInfoInteger,
SymbolInfoSessionQuote,
SymbolInfoSessionTrade

SYMBOL_ASK

Preo de Compra (Ask)


melhor oferta de compra

SymbolInfoDouble

SYMBOL_ASKHIGH

Mximo Preo de Compra do


dia

SymbolInfoDouble

SYMBOL_ASKLOW

Mnimo Preo de Compra do


dia

SymbolInfoDouble

SYMBOL_BANK

Fornecedor
corrente

cotao

SymbolInfoString

SYMBOL_BASIS

The underlying asset of a


derivative

SymbolInfoString

SYMBOL_BID

Preo de Venda (Bid) - melhor


oferta de venda

SymbolInfoDouble

SYMBOL_BIDHIGH

Mximo Preo de Venda do dia

SymbolInfoDouble

SYMBOL_BIDLOW

Mnimo Preo de Venda do dia

SymbolInfoDouble

SYMBOL_CALC_MODE_CFD

Modo CFD - clculo de margem


e lucro para CFD

SymbolInfoInteger

de

negociaes

da

2000-2015, MetaQuotes Software Corp.

4259

List of MQL5 Constants

SYMBOL_CALC_MODE_CFDIND
EX

Modo ndice CFD - clculo de


margem e lucro para CFD por
ndices

SymbolInfoInteger

SYMBOL_CALC_MODE_CFDLEV
ERAGE

Modo Alavancado CFD - clculo


de margem e lucro para CFD
em negociao alavancada

SymbolInfoInteger

SYMBOL_CALC_MODE_EXCH_F
UTURES

Modo Futures - clculo da


margem e lucro para os
contratos
futuros
de
negociao na bolsa de valores

SymbolInfoInteger

SYMBOL_CALC_MODE_EXCH_F
UTURES_FORTS

Modo FORTS Futures - clculo


de margem e lucro para
futuros
contratos
de
comercializao nos FORTS.

SymbolInfoInteger

SYMBOL_CALC_MODE_EXCH_S
TOCKS

Modo Exchange - clculo de


margem
e
lucro
para
negociao de ttulos na bolsa
de valores

SymbolInfoInteger

SYMBOL_CALC_MODE_FOREX

Modo Forex - clculo de lucro e


margem para Forex

SymbolInfoInteger

SYMBOL_CALC_MODE_FUTURE
S

Modo Futuros - clculo de


margem e lucro para futuros

SymbolInfoInteger

SYMBOL_CALC_MODE_SERV_C
OLLATERAL

Collateral mode - a symbol is


used as a non-tradable asset
on a trading account.

SymbolInfoInteger

SYMBOL_CURRENCY_BASE

Moeda base de um ativo

SymbolInfoString

SYMBOL_CURRENCY_MARGIN

Moeda de margem

SymbolInfoString

SYMBOL_CURRENCY_PROFIT

Moeda de lucro

SymbolInfoString

SYMBOL_DESCRIPTION

Descrio do ativo

SymbolInfoString

SYMBOL_DIGITS

Dgitos aps um ponto decimal

SymbolInfoInteger

SYMBOL_EXPIRATION_DAY

A ordem vlida at o fim do


dia

SymbolInfoInteger

SYMBOL_EXPIRATION_GTC

A ordem vlida durante um


perodo de tempo ilimitado,
at
que
ela
seja
explicitamente cancelada

SymbolInfoInteger

SYMBOL_EXPIRATION_MODE

Flags de modos de expirao


de ordens permitidas

SymbolInfoInteger

SYMBOL_EXPIRATION_SPECIFIE
D

A hora de expirao
especificada na ordem

SymbolInfoInteger

SYMBOL_EXPIRATION_SPECIFIE

SymbolInfoInteger

data

de

expirao

2000-2015, MetaQuotes Software Corp.

4260

List of MQL5 Constants

D_DAY

especificada na ordem

SYMBOL_EXPIRATION_TIME

Data do fim de negociao do


ativo (geralmente usado para
futuros)

SymbolInfoInteger

SYMBOL_FILLING_FOK

Esta poltica significa que uma


transao somente pode ser
executada com o volume
especificado. Se a quantidade
desejada do ativo no est
disponvel no mercado, a
ordem no ser executada. O
volume requerido pode ser
preenchido
usando
vrias
ofertas
disponveis
no
mercado no momento.

SymbolInfoInteger

SYMBOL_FILLING_IOC

Neste caso, o investidor


concorda em executar uma
transao com o volume
mximo
disponvel
no
mercado, em que foi indicado
na ordem. No caso da ordem
no poder ser completamente
preenchida,
o
volume
disponvel da ordem ser
executado, e o
volume
remanescente ser cancelado.
A possibilidade de utilizao
de ordens "IOC" determinado
no servidor.

SymbolInfoInteger

SYMBOL_FILLING_MODE

Flags
de
preenchimento
permitidas

SymbolInfoInteger

SYMBOL_ISIN

O nome de um ativo no
sistema ISIN (International
Securities
Identification
Number).
O
International
Securities
Identification
Number um cdigo de 12
dgitos
alfanumrico
que
identifica de forma nica um
ativo financeiro. A presena
desta propriedade de ativo
determinada no lado do
servidor de negociao.

SymbolInfoString

SYMBOL_LAST

Preo da
(deal)

SymbolInfoDouble

modos
de
de
ordens

ltimo

operao

2000-2015, MetaQuotes Software Corp.

4261

List of MQL5 Constants

SYMBOL_LASTHIGH

Mximo dos preos negociados


do dia

SymbolInfoDouble

SYMBOL_LASTLOW

Mnimo dos preos negociados


do dia

SymbolInfoDouble

SYMBOL_MARGIN_INITIAL

Margem inicial significa a


quantia de moeda de margem
requerida para abrir uma
posio com o volume de um
lote. usada para verificar os
ativos de um cliente quando
ele ou ele entra no mercado.

SymbolInfoDouble

SYMBOL_MARGIN_MAINTENAN
CE

A margem de manuteno. Se
for definida, ele representa a
quantia de margem na moeda
de margem do ativo cobrada
de um lote. usada parar
verificar os ativos de um
cliente quando o estado da
conta dele/dela muda. Se a
margem de manuteno
igual a 0, a margem inicial
usada.

SymbolInfoDouble

SYMBOL_OPTION_MODE

Option type

SymbolInfoInteger

SYMBOL_OPTION_MODE_AMER
ICAN

American option may be


exercised on any trading day
on or before expiry. The
period within which a buyer
can exercise the option is
specified for it

SymbolInfoInteger

SYMBOL_OPTION_MODE_EURO
PEAN

European option may only be


exercised on a specified date
(expiration, execution date,
delivery date)

SymbolInfoInteger

SYMBOL_OPTION_RIGHT

Option right (Call/Put)

SymbolInfoInteger

SYMBOL_OPTION_RIGHT_CALL

A call option gives you the


right to buy an asset at a
specified price

SymbolInfoInteger

SYMBOL_OPTION_RIGHT_PUT

A put option gives you the


right to sell an asset at a
specified price

SymbolInfoInteger

SYMBOL_OPTION_STRIKE

The strike price of an option.


The price at which an option
buyer can buy (in a Call option)
or sell (in a Put option) the
underlying asset, and the

SymbolInfoDouble

2000-2015, MetaQuotes Software Corp.

4262

List of MQL5 Constants

option seller is obliged to sell


or buy the appropriate amount
of the underlying asset.
SYMBOL_ORDER_LIMIT

Ordens
de
limite
so
permitidas (Buy Limit e Sell
Limit)

SymbolInfoInteger

SYMBOL_ORDER_MARKET

Ordens de mercado
permitidas (Buy e Sell)

so

SymbolInfoInteger

SYMBOL_ORDER_MODE

Flags
de
preenchimento
permitidas

modos
de
de
ordens

SymbolInfoInteger

SYMBOL_ORDER_SL

Stop Loss permitido

SymbolInfoInteger

SYMBOL_ORDER_STOP

Ordens
de
parada
so
permitidas (Buy Stop e Sell
Stop)

SymbolInfoInteger

SYMBOL_ORDER_STOP_LIMIT

Ordens de limite de parada


so permitidas (Buy Stop Limit
e Sell Stop Limit)

SymbolInfoInteger

SYMBOL_ORDER_TP

Take Profit permitido

SymbolInfoInteger

SYMBOL_PATH

Caminho da rvore de ativos

SymbolInfoString

SYMBOL_POINT

Valor de um ponto do ativo

SymbolInfoDouble

SYMBOL_SELECT

O
ativo
(smbolo)

selecionado
na
janela
Observao de Mercador

SymbolInfoInteger

SYMBOL_SESSION_AW

Preo mdio ponderado da


sesso atual

SymbolInfoDouble

SYMBOL_SESSION_BUY_ORDER
S

Nmero de ordens de Compra


no momento

SymbolInfoInteger

SYMBOL_SESSION_BUY_ORDER
S_VOLUME

Volume atual de ordens de


Compra

SymbolInfoDouble

SYMBOL_SESSION_CLOSE

Preo de fechamento
sesso atual

da

SymbolInfoDouble

SYMBOL_SESSION_DEALS

Nmero de operaes (deals)


na sesso corrente

SymbolInfoInteger

SYMBOL_SESSION_INTEREST

Juros de abertura resumo

SymbolInfoDouble

SYMBOL_SESSION_OPEN

Preo de abertura da sesso


atual

SymbolInfoDouble

SYMBOL_SESSION_PRICE_LIMI
T_MAX

Mximo preo da sesso atual

SymbolInfoDouble

SYMBOL_SESSION_PRICE_LIMI

Mnimo preo da sesso atual

SymbolInfoDouble

2000-2015, MetaQuotes Software Corp.

4263

List of MQL5 Constants

T_MIN
SYMBOL_SESSION_PRICE_SETT
LEMENT

Preo de liquidao da sesso


atual

SymbolInfoDouble

SYMBOL_SESSION_SELL_ORDE
RS

Nmero de ordens de Venda no


momento

SymbolInfoInteger

SYMBOL_SESSION_SELL_ORDE
RS_VOLUME

Volume atual de ordens de


Venda

SymbolInfoDouble

SYMBOL_SESSION_TURNOVER

Rotatividade
resumo
sesso corrente

da

SymbolInfoDouble

SYMBOL_SESSION_VOLUME

Volume resumo de operaes


da sesso corrente

SymbolInfoDouble

SYMBOL_SPREAD

Valor do spread em pontos

SymbolInfoInteger

SYMBOL_SPREAD_FLOAT

Indicao
flutuante

spread

SymbolInfoInteger

SYMBOL_START_TIME

Data do incio de negociao


do ativo (geralmente usado
para futuros)

SymbolInfoInteger

SYMBOL_SWAP_LONG

Valor de swap comprado

SymbolInfoDouble

SYMBOL_SWAP_MODE

Modelo de clculo de Swap

SymbolInfoInteger

SYMBOL_SWAP_MODE_CURRE
NCY_DEPOSIT

Swaps so cobrados em
dinheiro na moeda de depsito
do cliente

SymbolInfoInteger

SYMBOL_SWAP_MODE_CURRE
NCY_MARGIN

Swaps so cobrados em
dinheiro na moeda de margem
do ativo

SymbolInfoInteger

SYMBOL_SWAP_MODE_CURRE
NCY_SYMBOL

Swaps so cobrados em
dinheiro na moeda base do
ativo

SymbolInfoInteger

SYMBOL_SWAP_MODE_DISABL
ED

Desabilita swaps (sem swaps)

SymbolInfoInteger

SYMBOL_SWAP_MODE_INTERE
ST_CURRENT

Swaps so cobrados como juro


anual especificado a partir do
preo de instrumento no
clculo do swap (ano bancrio
padro 360 dias)

SymbolInfoInteger

SYMBOL_SWAP_MODE_INTERE
ST_OPEN

Swaps so cobradas como juro


anual especificado a partir do
preo de abertura da posio
(ano bancrio padro 360
dias)

SymbolInfoInteger

SYMBOL_SWAP_MODE_POINTS

Swaps so cobrados em pontos

SymbolInfoInteger

de

um

2000-2015, MetaQuotes Software Corp.

4264

List of MQL5 Constants

SYMBOL_SWAP_MODE_REOPEN
_BID

Swaps so cobradas atravs de


posies reabertas Ao final de
um dia de negociao a
posio encerrada. No dia
seguinte ela reaberta
atravs do preo de Venda
(Bid) corrente +/- um nmero
especfico
de
pontos
(parmetros
SYMBOL_SWAP_LONG
e
SYMBOL_SWAP_SHORT)

SymbolInfoInteger

SYMBOL_SWAP_MODE_REOPEN
_CURRENT

Swaps so cobradas atravs de


posies reabertas Ao final de
um dia de negociao a
posio encerrada. No dia
seguinte ela reaberta
atravs
do
preo
de
fechamento +/- um nmero
especfico
de
pontos
(parmetros
SYMBOL_SWAP_LONG
e
SYMBOL_SWAP_SHORT)

SymbolInfoInteger

SYMBOL_SWAP_ROLLOVER3DA
YS

Dia da semana para cobrar


rolagem de swap de 3 dias

SymbolInfoInteger

SYMBOL_SWAP_SHORT

Valor de swap vendido

SymbolInfoDouble

SYMBOL_TICKS_BOOKDEPTH

Nmero
mximo
de
solicitaes
exibidas
na
Profundidade do Mercado.
Para ativos que no tem fila
de solicitaes, o valor igual
a zero.

SymbolInfoInteger

SYMBOL_TIME

Hora da ltima cotao

SymbolInfoInteger

SYMBOL_TRADE_CALC_MODE

Modo de clculo de preo de


contrato

SymbolInfoInteger

SYMBOL_TRADE_CONTRACT_S
IZE

Tamanho do
negociao

de

SymbolInfoDouble

SYMBOL_TRADE_EXECUTION_E
XCHANGE

Execuo em um sistema de
negociao
externo
(Exchange)

SymbolInfoInteger

SYMBOL_TRADE_EXECUTION_I
NSTANT

Execuo instantnea

SymbolInfoInteger

SYMBOL_TRADE_EXECUTION_
MARKET

Execuo a Mercado

SymbolInfoInteger

SYMBOL_TRADE_EXECUTION_R

Execuo por solicitao

SymbolInfoInteger

contrato

2000-2015, MetaQuotes Software Corp.

4265

List of MQL5 Constants

EQUEST
SYMBOL_TRADE_EXEMODE

Modo de execuo de operao


(deal)

SymbolInfoInteger

SYMBOL_TRADE_FREEZE_LEVE
L

Distncia
para
congelar
operaes de negociao em
pontos

SymbolInfoInteger

SYMBOL_TRADE_MODE

Tipo de execuo de ordem

SymbolInfoInteger

SYMBOL_TRADE_MODE_CLOSE
ONLY

Permitido somente operaes


de fechamento de posio

SymbolInfoInteger

SYMBOL_TRADE_MODE_DISABL
ED

Negociao est desabilitada


para o ativo

SymbolInfoInteger

SYMBOL_TRADE_MODE_FULL

Sem restries de negociao

SymbolInfoInteger

SYMBOL_TRADE_MODE_LONG
ONLY

Permitido somente posies


compradas

SymbolInfoInteger

SYMBOL_TRADE_MODE_SHORT
ONLY

Permitido somente posies


vendidas

SymbolInfoInteger

SYMBOL_TRADE_STOPS_LEVEL

Mnima distncia em pontos a


partir do preo de fechamento
corrente para colocar ordens
de Stop

SymbolInfoInteger

SYMBOL_TRADE_TICK_SIZE

Mnima mudana de preo

SymbolInfoDouble

SYMBOL_TRADE_TICK_VALUE

Valor
do
SYMBOL_TRADE_TICK_VALUE_
PROFIT

SymbolInfoDouble

SYMBOL_TRADE_TICK_VALUE_
LOSS

Preo de tick calculado para


um posio perdedora

SymbolInfoDouble

SYMBOL_TRADE_TICK_VALUE_
PROFIT

Preo de tick calculado para


uma posio lucrativa

SymbolInfoDouble

SYMBOL_VOLUME

Volume da ltima operao


(deal)

SymbolInfoInteger

SYMBOL_VOLUME_LIMIT

Mximo
volume agregado
permitido de uma posio
aberta e ordens pendentes em
uma direo (compra ou
venda) para um ativo. Por
exemplo, com a limitao de 5
lotes, voc pode ter uma
posio comprada aberta com
o volume de 5 lotes e colocar
uma ordem pendente de Sell
Limit com o volume de 5 lotes.
Mas neste caso voc no pode

SymbolInfoDouble

2000-2015, MetaQuotes Software Corp.

4266

List of MQL5 Constants

colocar um ordem pendente de


Buy Limite (j que o total de
volume em uma direo
excederia o limite) ou colocar
Sell Limit com o volume maior
que 5 lotes.
SYMBOL_VOLUME_MAX

Mximo volume
operao (deal)

para

uma

SymbolInfoDouble

SYMBOL_VOLUME_MIN

Mnimo volume
operao (deal)

para

uma

SymbolInfoDouble

SYMBOL_VOLUME_STEP

Mnimo passo de mudana de


volume para execuo de uma
operao (deal)

SymbolInfoDouble

SYMBOL_VOLUMEHIGH

Volume dirio mximo

SymbolInfoInteger

SYMBOL_VOLUMELOW

Volume dirio mnimo

SymbolInfoInteger

TENKANSEN_LINE

Linha Tenkan-sen

Linhas de Indicadores

TERMINAL_BUILD

O nmero de compilao
(build) do terminal cliente

TerminalInfoInteger

TERMINAL_CODEPAGE

Nmero do cdigo de pgina


da linguagem instalado no
terminal cliente

TerminalInfoInteger

TERMINAL_COMMONDATA_PA
TH

Caminho comum para todos os


terminais instalados em um
computador

TerminalInfoString

TERMINAL_COMMUNITY_ACCO
UNT

The
flag
indicates
the
presence of MQL5.community
authorization data in the
terminal

TerminalInfoInteger

TERMINAL_COMMUNITY_BALA
NCE

Balance in MQL5.community

TerminalInfoDouble

TERMINAL_COMMUNITY_CONN
ECTION

Connection
MQL5.community

TERMINAL_COMPANY

Nome da empresa

TerminalInfoString

TERMINAL_CONNECTED

Conexo com um servidor de


negociao

TerminalInfoInteger

TERMINAL_CPU_CORES

O nmero de ncleos de CPU


no sistema

TerminalInfoInteger

TERMINAL_DATA_PATH

Pasta na qual dados


terminal so armazenados

TerminalInfoString

TERMINAL_DISK_SPACE

Espao livre de disco para a


pasta MQL5\Files do terminal

to

do

2000-2015, MetaQuotes Software Corp.

TerminalInfoInteger

TerminalInfoInteger

4267

List of MQL5 Constants

(agente), MB
TERMINAL_DLLS_ALLOWED

Permisso para usar DLL

TerminalInfoInteger

TERMINAL_EMAIL_ENABLED

Permisso para enviar e-mails


usando servidor-SMTP e login,
especificado nas configuraes
do terminal

TerminalInfoInteger

TERMINAL_FTP_ENABLED

Permisso
para
enviar
relatrios usando servidor-FTP
e login, especificado nas
configuraes do terminal

TerminalInfoInteger

TERMINAL_LANGUAGE

Linguagem do terminal

TerminalInfoString

TERMINAL_MAXBARS

A quantidade mxima
barras no grfico

de

TerminalInfoInteger

TERMINAL_MEMORY_AVAILABL
E

Memria livre do processo do


terminal (agente), MB

TerminalInfoInteger

TERMINAL_MEMORY_PHYSICAL

Memria fsica no sistema, MB

TerminalInfoInteger

TERMINAL_MEMORY_TOTAL

Memria disponvel para o


processo do terminal (agente),
MB

TerminalInfoInteger

TERMINAL_MEMORY_USED

Memria usada pelo terminal


(agente), MB

TerminalInfoInteger

TERMINAL_MQID

The
flag
indicates
the
presence of MetaQuotes ID
data to send Push notifications

TerminalInfoInteger

TERMINAL_NAME

Nome do terminal

TerminalInfoString

TERMINAL_NOTIFICATIONS_EN
ABLED

Permission
to
send
notifications to smartphone

TerminalInfoInteger

TERMINAL_OPENCL_SUPPORT

A verso do OpenCL suportado


no formato 0x00010002 = 1.2.
"0" significa que OpenCL no
suportado

TerminalInfoInteger

TERMINAL_PATH

Pasta a partir da qual o


terminal foi iniciado

TerminalInfoString

TERMINAL_TRADE_ALLOWED

Permisso para negociar

TerminalInfoInteger

TERMINAL_X64

Indicao do "terminal 64-bit"

TerminalInfoInteger

THURSDAY

Quinta-feira

SymbolInfoInteger,
SymbolInfoSessionQuote,
SymbolInfoSessionTrade

TRADE_ACTION_DEAL

Coloca
um
ordem
de
negociao para execuo

MqlTradeRequest

2000-2015, MetaQuotes Software Corp.

4268

List of MQL5 Constants

imediata com os parmetros


especficos (ordem a mercado)
TRADE_ACTION_MODIFY

Modifca os parmetros de uma


ordem coloca anteriormente

MqlTradeRequest

TRADE_ACTION_PENDING

Coloca
um
ordem
de
negociao para execuo sob
condies especficas (ordem
pendente)

MqlTradeRequest

TRADE_ACTION_REMOVE

Exclui uma ordem pendente


colocada anteriormente

MqlTradeRequest

TRADE_ACTION_SLTP

Modifica valores de Stop Loss


e Take Profit de uma posio
em aberto

MqlTradeRequest

TRADE_RETCODE_CANCEL

Solicitao
negociador

pelo

MqlTradeResult

TRADE_RETCODE_CLIENT_DIS
ABLES_AT

Autotrading desabilitado pelo


terminal cliente

MqlTradeResult

TRADE_RETCODE_CONNECTIO
N

Sem conexo com o servidor


de negociao

MqlTradeResult

TRADE_RETCODE_DONE

Solicitao concluda

MqlTradeResult

TRADE_RETCODE_DONE_PARTI
AL

Somente parte da solicitao


foi concluda

MqlTradeResult

TRADE_RETCODE_ERROR

Erro de processamento
solicitao

MqlTradeResult

TRADE_RETCODE_FROZEN

Ordem ou posio congeladas

MqlTradeResult

TRADE_RETCODE_INVALID

Solicitao invlida

MqlTradeResult

TRADE_RETCODE_INVALID_EXP
IRATION

Data de expirao da ordem


invlida na solicitao

MqlTradeResult

TRADE_RETCODE_INVALID_FIL
L

Tipo de preenchimento
ordem invlido

de

MqlTradeResult

TRADE_RETCODE_INVALID_OR
DER

Incorreto ou proibida tipo de


ordem

MqlTradeResult

TRADE_RETCODE_INVALID_PRI
CE

Preo invlido na solicitao

MqlTradeResult

TRADE_RETCODE_INVALID_ST
OPS

Stops invlidos na solicitao

MqlTradeResult

TRADE_RETCODE_INVALID_VO
LUME

Volume invlido na solicitao

MqlTradeResult

TRADE_RETCODE_LIMIT_ORDE
RS

O nmero de ordens pendentes


atingiu o limite

MqlTradeResult

cancelada

de

2000-2015, MetaQuotes Software Corp.

4269

List of MQL5 Constants

TRADE_RETCODE_LIMIT_VOLU
ME

O volume de ordens e posies


para o ativo atingiu o limite

MqlTradeResult

TRADE_RETCODE_LOCKED

Solicitao bloqueada
processamento

MqlTradeResult

TRADE_RETCODE_MARKET_CL
OSED

Mercado est fechado

MqlTradeResult

TRADE_RETCODE_NO_CHANGE
S

Sem alteraes na solicitao

MqlTradeResult

TRADE_RETCODE_NO_MONEY

No existe dinheiro suficiente


para completar a solicitao

MqlTradeResult

TRADE_RETCODE_ONLY_REAL

Operao permitida somente


para contas reais

MqlTradeResult

TRADE_RETCODE_ORDER_CHA
NGED

Estado da ordem alterada

MqlTradeResult

TRADE_RETCODE_PLACED

Ordem colocada

MqlTradeResult

TRADE_RETCODE_POSITION_C
LOSED

Posio com a especificao


POSITION_IDENTIFIER j foi
fechado

MqlTradeResult

TRADE_RETCODE_PRICE_CHAN
GED

Os preos se alteraram

MqlTradeResult

TRADE_RETCODE_PRICE_OFF

No existem cotaes para


processar a solicitao

MqlTradeResult

TRADE_RETCODE_REJECT

Solicitao rejeitada

MqlTradeResult

TRADE_RETCODE_REQUOTE

Nova Cotao

MqlTradeResult

TRADE_RETCODE_SERVER_DIS
ABLES_AT

Autotrading desabilitado pelo


servidor

MqlTradeResult

TRADE_RETCODE_TIMEOUT

Solicitao
cancelada
por
expirao de tempo (timeout)

MqlTradeResult

TRADE_RETCODE_TOO_MANY_
REQUESTS

Solicitaes
em excesso

MqlTradeResult

TRADE_RETCODE_TRADE_DISA
BLED

Negociao est desabilitada

MqlTradeResult

TRADE_TRANSACTION_DEAL_A
DD

Adio de uma operao (deal)


para o histrico. A ao
realizada como resultado de
uma execuo de uma ordem
ou realizao de operaes
com o saldo da conta.

MqlTradeTransaction

TRADE_TRANSACTION_DEAL_D
ELETE

Excluso de uma operao


(deal) do histrico. Pode haver

MqlTradeTransaction

com

para

freqncia

2000-2015, MetaQuotes Software Corp.

4270

List of MQL5 Constants

casos quando uma operao


(deal)
executada
anteriormente excluda de
um servidor. Por exemplo,
uma operao (deal) foi
excluda de um sistema de
negociao
externo
(exchange) onde ela foi
transferida anteriormente por
uma corretora (broker).
TRADE_TRANSACTION_DEAL_U
PDATE

Atualizao de uma operao


(deal) no histrico. Pode haver
caso quando uma operao
(deal) executada previamente
alterada em um servidor.
Por exemplo, uma operao
(deal) foi alterada em um
sistema de negociao externo
(exchange) onde ela foi
transferida anteriormente por
uma corretora (broker).

MqlTradeTransaction

TRADE_TRANSACTION_HISTOR
Y_ADD

Adio de uma ordem no


histrico como resultado de
uma
execuo
ou
cancelamento.

MqlTradeTransaction

TRADE_TRANSACTION_HISTOR
Y_DELETE

Excluso de uma ordem do


histrico de ordens. Este tipo
fornecido para aumentar a
funcionalidade no lado de um
servidor de negociao.

MqlTradeTransaction

TRADE_TRANSACTION_HISTOR
Y_UPDATE

Alterao de uma ordem


localizada no histrico de
ordens. Este tipo fornecido
para
aumentar
a
funcionalidade no lado de um
servidor de negociao.

MqlTradeTransaction

TRADE_TRANSACTION_ORDER
_ADD

Adio de uma nova ordem de


abertura.

MqlTradeTransaction

TRADE_TRANSACTION_ORDER
_DELETE

Remoo de uma ordem da


lista de ordens em aberto.
Uma ordem pode ser excluda
da lista de ordens em aberto
como
resultado
da
configurao de um solicitao
apropriada
ou
execuo
(preenchimento)
ou
movimentao
para
o

MqlTradeTransaction

2000-2015, MetaQuotes Software Corp.

4271

List of MQL5 Constants

histrico.
TRADE_TRANSACTION_ORDER
_UPDATE

Atualizao de uma ordem de


aberturar. As atualizaes
incluem
no
somente
mudanas
evidentes
provenientes
do
terminal
cliente ou do lado de um
servidor de negociao, mas
tambm alteraes de estado
de uma ordem ao configur-lo
(por exemplo, transio de
ORDER_STATE_STARTED para
ORDER_STATE_PLACED ou de
ORDER_STATE_PLACED para
ORDER_STATE_PARTIAL,
etc.).

MqlTradeTransaction

TRADE_TRANSACTION_POSITI
ON

Alterao de uma posio no


relacionada com a execuo de
uma operao (deal). Este tipo
de transao mostra que uma
posio foi alterada pelo lado
de um servidor de negociao.
O volume de uma posio, o
preo de abertura, os nveis
de Stop Loss e Take Profit
podem ter sido alterados.
Dados sobre alterao so
submetidos
na
estrutura
MqlTradeTransaction via o
handler OnTradeTransaction.
Alteraes de posio (adio,
alterao ou encerramento),
como resultado de uma
execuo de operao (deal),
no levam a ocorrncia de
uma
transao
TRADE_TRANSACTION_POSITI
ON.

MqlTradeTransaction

TRADE_TRANSACTION_REQUE
ST

Notificao do fato de que


uma solicitao de negociao
foi processada por um servidor
e o resultado processado foi
recebido. Apenas o campo
type (tipo de transao de
negociao)
deve
ser
analisado em tais transaes
na
estrutura
MqlTradeTransaction.
O
segundo e terceiro parmetros

MqlTradeTransaction

2000-2015, MetaQuotes Software Corp.

4272

List of MQL5 Constants

de
OnTradeTransaction
(request e result) devem ser
analisados
para
dados
adicionais.
TUESDAY

Tera-feira

SymbolInfoInteger,
SymbolInfoSessionQuote,
SymbolInfoSessionTrade

TYPE_BOOL

bool

MqlParam

TYPE_CHAR

char

MqlParam

TYPE_COLOR

color

MqlParam

TYPE_DATETIME

datetime

MqlParam

TYPE_DOUBLE

double

MqlParam

TYPE_FLOAT

float

MqlParam

TYPE_INT

int

MqlParam

TYPE_LONG

long

MqlParam

TYPE_SHORT

short

MqlParam

TYPE_STRING

string

MqlParam

TYPE_UCHAR

uchar

MqlParam

TYPE_UINT

uint

MqlParam

TYPE_ULONG

ulong

MqlParam

TYPE_USHORT

ushort

MqlParam

UCHAR_MAX

Valor mximo, que pode ser


representado pelo tipo uchar

Constantes de Tipo Numrico

UINT_MAX

Valor mximo, que pode ser


representado pelo tipo uint

Constantes de Tipo Numrico

ULONG_MAX

Valor mximo, que pode ser


representado pelo tipo ulong

Constantes de Tipo Numrico

UPPER_BAND

Limite superior

Linhas de Indicadores

UPPER_HISTOGRAM

Histograma superior

Linhas de Indicadores

UPPER_LINE

Linha de cima

Linhas de Indicadores

USHORT_MAX

Valor mximo, que pode ser


representado pelo tipo ushort

Constantes de Tipo Numrico

VOLUME_REAL

Volume de negociao

Constantes de Preo

VOLUME_TICK

Volume de Tick

Constantes de Preo

WEDNESDAY

Quarta-feira

SymbolInfoInteger,
SymbolInfoSessionQuote,

2000-2015, MetaQuotes Software Corp.

4273

List of MQL5 Constants

SymbolInfoSessionTrade
WHOLE_ARRAY

Significa o nmero de itens


restantes at o final do array,
isto , o array inteiro ser
processado

Outras Constantes

WRONG_VALUE

A
constante
pode
ser
implicitamente
convertido
para
qualquer
tipo
de
enumerao

Outras Constantes

2000-2015, MetaQuotes Software Corp.

S-ar putea să vă placă și