-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathfirst_candle.mq5
201 lines (162 loc) · 15.8 KB
/
first_candle.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
//+------------------------------------------------------------------+
//| Copyright 2016, Erlon F. Souza |
//| https://github.com/erlonfs |
//+------------------------------------------------------------------+
#define robot_name "FIRST CANDLE"
#define robot_version "1.5.0"
#property copyright "Copyright 2016, Erlon F. Souza"
#property link "https://github.com/erlonfs"
#property version robot_version
#property description "Utiliza o setup rompimento do primeiro candle do periodo da estratégia.O programa exibi marcações em tela durante as analises. Em marcações de cor vermelha (padrão), o mesmo espera uma entrada em venda descoberta, em marcações de cor azul (cor pre-definida) o programa espera uma entrada em compra.\n\n\nBons trades!\n\nEquipe BAD ROBOT.\[email protected]"
#property icon "first_candle.ico";
#include <..\Experts\first-candle.bad-robot\src\FirstCandle.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 = "###############";//### Expert Control ###
input int NumeroMagico=0; //O número mágico é utilizado para diferenciar ordens de outros robôs
input string Secao9 = "###############";//### Notificações ###
input ENUM_LOGIC IsNotificacoesApp=0;//Ativar notificações no app do metatrader 5?
input string Secao10 = "###############";//### Config de UI ###
input ENUM_LOGIC IsDesenhar=0;//Desenhar marcações?
input color CorCompra=C'3,95,172';//Cor utilizada em marcações de Compra
input color CorVenda=C'225,68,29';//Cor utilizada em marcações de Venda
input string Secao11 = "###############";//### Config de Estratégia ###
input ENUM_TIMEFRAMES Periodo = PERIOD_CURRENT;
//variaveis
FirstCandle _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);
_ea.SetWaitBreakEvenExecuted(WaitBreakEvenExecuted);
_ea.SetIsPeriodCustomStopOnLastCandle(IsPeridoPersonalizadoStopNoCandleAnterior);
_ea.SetPeriodStopOnLastCandle(PeridoStopNoCandleAnterior);
//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);
//Expert Control
_ea.SetNumberMagic(NumeroMagico);
_ea.SetRobotName(robot_name);
_ea.SetRobotVersion(robot_version);
//Notificacoes
_ea.SetIsNotificacoesApp(IsNotificacoesApp);
//UI
_ea.SetColorBuy(CorCompra);
_ea.SetColorSell(CorVenda);
_ea.SetIsDesenhar(IsDesenhar);
//Estrategia
_ea.SetPeriod(Periodo);
//Load Expert
return _ea.OnInit();
}
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);
}