forked from erlonfs/elephant-walk.bad-robot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
elephant-walk.mq5
217 lines (175 loc) · 16.7 KB
/
elephant-walk.mq5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
// ------------------------------------------------------------------
//| Copyright 2017, Erlon F. Souza |
//| https://github.com/erlonfs |
// ------------------------------------------------------------------
#define robot_name "ELEPHANT WALK"
#define robot_version "1.4.0-beta"
#property copyright "Copyright 2017, Bad Robot"
#property link "https://github.com/erlonfs"
#property version robot_version
#property description "Setup utilizado pelo trader americano Oliver Velez.\n\n\nBons trades!\n\nEquipe Bad Robot.\[email protected]"
#property icon "elephant-walk.ico"
#include <..\Experts\elephant-walk.bad-robot\src\ElephantWalk.mqh>
#include <BadRobot.Framework\Enum.mqh>
input string Secao1 = "###############";//### Definições Básicas ###
input string HoraInicio="00:00";//Hora de início de execução da estratégia
input string HoraFim="00:00";//Hora de término de execução da estratégia
input string HoraInicioIntervalo="00:00";//Hora de início intervalo de execução da estratégia
input string HoraFimIntervalo="00:00";//Hora de término intervalo de execução da estratégia
input ENUM_LOGIC FecharPosition=0;//Fechar posições ao término de horario de execução?
input double Volume=0; //Volume
input ENUM_LAST_PRICE_TYPE TipoUltimoPreco=0;//Tipo de referência do ultimo preço
input int Spread = 0;//Spread para entrada na operação em ticks
input string Secao2 = "###############";//### Alvos ###
input int StopGainEmTicks=0; //Stop Gain em ticks
input int StopLossEmTicks=0; //Stop Loss em ticks
input string Secao3 = "###############";//### Gerenciamento de Stop ###
input ENUM_LOGIC IsStopNoCandleAnterior=0;//Stop na máxima/ mínima do candle anterior?
input int SpreadStopNoCandleAnterior=0;//Spread utilizado no ajuste em ticks
input ENUM_LOGIC WaitBreakEvenExecuted=0;//Aguardar execução do break even?
input ENUM_LOGIC IsPeridoPersonalizadoStopNoCandleAnterior=0;//Utilizar período personalizado?
input ENUM_TIMEFRAMES PeridoStopNoCandleAnterior=0;//Período personalizado
input string Secao4 = "###############";//### Trailing Stop ###
input ENUM_LOGIC IsTrailingStop=0;//Ativar Trailing Stop?
input int TrailingStopInicio=0; //Valor de inicio em ticks
input int TrailingStop=0; //Valor de Ajuste do Trailing Stop em ticks
input string Secao5 = "###############";//### Break-Even ###
input ENUM_LOGIC IsBreakEven=0;//Ativar Break-Even?
input int BreakEven=0;//Valor do break-even, zero é o ponto inicial em ticks
input int BreakEvenInicio=0;//Valor de inicio em ticks
input string Secao6 = "###############";//### Financeiro ###
input ENUM_LOGIC IsGerenciamentoFinanceiro=0;//Ativar Gerenciamento Financeiro?
input double MaximoLucroDiario=0; //Lucro máximo no dia
input double MaximoPrejuizoDiario=0; //Prejuízo máximo no dia
input string Secao7 = "###############";//### Realização de Parcial ###
input ENUM_LOGIC IsParcial=0;//Ativar saída parcial?
input double PrimeiraParcialVolume=0;//Volume da 1ª saída parcial
input int PrimeiraParcialInicio=0;//Valor de inicio da 1ª saída parcial em ticks
input double SegundaParcialVolume=0;//Volume da 2ª saída parcial
input int SegundaParcialInicio=0;//Valor de inicio da 2ª saída parcial em ticks
input double TerceiraParcialVolume=0;//Volume da 3ª saída parcial
input int TerceiraParcialInicio=0;//Valor de inicio da 3ª saída parcial em ticks
input string Secao8 = "###############";//### Indicadores ###
input string SubSecao1 = "###############";//>> Cruzamento de Medias Moveis >>
input ENUM_LOGIC AtivarCruzamentoDeMedias=0;//Ativar cruzamento de médias?
input int Media1=0;//Média Rapida
input int Media2=0;//Média Intermediaria
input int Media3=0;//Média Lenta
input string SubSecao2 = "###############";//>> MACD >>
input ENUM_LOGIC AtivarMACD=0;//Ativar MACD?
input int MACDMediaRapida=0;//Média Rapida
input int MACDMediaLenta=0;//Média Lenta
input int Sinal=0;//Sinal
input string Secao9 = "###############";//### Expert Control ###
input int NumeroMagico=0; //O número mágico é utilizado para diferenciar ordens de outros robôs
input string Secao10 = "###############";//### Notificações ###
input ENUM_LOGIC IsNotificacoesApp=0;//Ativar notificações no app do metatrader 5?
input string Secao11 = "###############";//### Config de Estratégia ###
input ENUM_TIMEFRAMES Periodo = PERIOD_CURRENT; //Tempo gráfico
input int TamanhoBarraElefante=0;//Tamanho da barra elefante em ticks
//variaveis
ElephantWalk _ea;
int OnInit()
{
//Definições Básicas
_ea.SetSymbol(_Symbol);
_ea.SetHoraInicio(HoraInicio);
_ea.SetHoraFim(HoraFim);
_ea.SetHoraInicioIntervalo(HoraInicioIntervalo);
_ea.SetHoraFimIntervalo(HoraFimIntervalo);
_ea.SetIsClosePosition(FecharPosition);
_ea.SetVolume(Volume);
_ea.SetSpread(Spread);
_ea.SetLastPriceType(TipoUltimoPreco);
//Alvos
_ea.SetStopGain(StopGainEmTicks);
_ea.SetStopLoss(StopLossEmTicks);
//Gerenciamento de Stop
_ea.SetIsStopOnLastCandle(IsStopNoCandleAnterior);
_ea.SetSpreadStopOnLastCandle(SpreadStopNoCandleAnterior);
//Trailing Stop
_ea.SetIsTrailingStop(IsTrailingStop);
_ea.SetTrailingStopInicio(TrailingStopInicio);
_ea.SetTrailingStop(TrailingStop);
//Break-Even
_ea.SetIsBreakEven(IsBreakEven);
_ea.SetBreakEvenInicio(BreakEvenInicio);
_ea.SetBreakEven(BreakEven);
//Financeiro
_ea.SetIsGerenciamentoFinanceiro(IsGerenciamentoFinanceiro);
_ea.SetMaximoLucroDiario(MaximoLucroDiario);
_ea.SetMaximoPrejuizoDiario(MaximoPrejuizoDiario);
//Realização de Parcial
_ea.SetIsParcial(IsParcial);
_ea.SetPrimeiraParcialVolume(PrimeiraParcialVolume);
_ea.SetPrimeiraParcialInicio(PrimeiraParcialInicio);
_ea.SetSegundaParcialVolume(SegundaParcialVolume);
_ea.SetSegundaParcialInicio(SegundaParcialInicio);
_ea.SetTerceiraParcialVolume(TerceiraParcialVolume);
_ea.SetTerceiraParcialInicio(TerceiraParcialInicio);
//Indicadores > Cruzamento de Medias Moveis
_ea.SetHasIndicatorCrossAveragess(AtivarCruzamentoDeMedias);
_ea.SetEMA1Period(Media1);
_ea.SetEMA2Period(Media2);
_ea.SetEMA3Period(Media3);
//Indicadores > MACD
_ea.SetHasIndicatorMACD(AtivarMACD);
_ea.SetMACDFastPeriod(MACDMediaRapida);
_ea.SetMACDSlowPeriod(MACDMediaLenta);
_ea.SetMACDSinalPeriod(Sinal);
//Expert Control
_ea.SetNumberMagic(NumeroMagico);
_ea.SetRobotName(robot_name);
_ea.SetRobotVersion(robot_version);
//Notificacoes
_ea.SetIsNotificacoesApp(IsNotificacoesApp);
//Estrategia
_ea.SetPeriod(Periodo);
_ea.SetSizeOfBar(TamanhoBarraElefante);
//Load Expert
_ea.OnInit();
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
_ea.OnDeinit(reason);
}
void OnTick()
{
_ea.OnTick();
}
void OnTimer()
{
_ea.OnTimer();
}
void OnTrade(){
_ea.OnTrade();
}
void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result)
{
_ea.OnTradeTransaction(trans, request, result);
}
double OnTester()
{
return _ea.OnTester();
}
void OnTesterInit()
{
_ea.OnTesterInit();
}
void OnTesterPass()
{
_ea.OnTesterPass();
}
void OnTesterDeinit()
{
_ea.OnTesterDeinit();
}
void OnBookEvent(const string& symbol)
{
_ea.OnBookEvent(symbol);
}
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
{
_ea.OnChartEvent(id, lparam, dparam, sparam);
}