....
e o que acontece ?
Boa noite pessoal,
Estou com um problema que acredito ser por causa de concorrência entre um indicador customizado e o meu EA.
Alguém tem alguma idéia ou sugestão de como resolver?
Cenário:
Sempre que é aberto um novo Candle, o INDICADORrealiza uma validação referente ao Candle que foi FECHADO e preenche o buffer com o valor do fechamento, indicando que deve realizar a compra.
Por sua vez, no EA, apenas na abertura de um novo Candle, ele verifica o buffer referente ao candle anterior para saber se deve executar a compra ou não.
Exemplo do código:
Código EA:
Código indicador:
O OnCalculate() do seu indicador já recebe o close[]... por quê usar iClose() ??
E, se realmente for necessário o uso de iClose(), leia ATENTAMENTE a documentação:
The function always returns actual data. For this purpose it performs a request to the timeseries for the specified symbol/period during each call. This means that if there is no ready data during the first function call, some time may be taken to prepare the result.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Boa noite pessoal,
Estou com um problema que acredito ser por causa de concorrência entre um indicador customizado e o meu EA.
Alguém tem alguma idéia ou sugestão de como resolver?
Cenário:
Sempre que é aberto um novo Candle, o INDICADORrealiza uma validação referente ao Candle que foi FECHADO e preenche o buffer com o valor do fechamento, indicando que deve realizar a compra.
Por sua vez, no EA, apenas na abertura de um novo Candle, ele verifica o buffer referente ao candle anterior para saber se deve executar a compra ou não.
Exemplo do código:
Código EA:
CisNewBar m_newbar; int m_indicator_handle = iCustom(_Symbol, _Period, caminho_indicador); .... if(m_newbar.isNewBar()) { double buffer_buy[]; int start = 1; //Buffer do candle anterior CopyBuffer(m_indicator_handle, 0, start, 1, buffer_buy); //Neste momento, acontece o problema de concorrência. O buffer deveria ter o valor de compra, porém retorna 0. if(buffer_buy[0] > 0) executar_compra(); } ...Código indicador:
... if(rates_total != prev_calculated) { int index = rates_total-1; buffer_buy[index] = 0; //Define o valor do índice do buffer atual igual 0 bool compra = ValidaCompra(); if(compra) buffer_buy[index-1] = iClose(Symbol(), Period(), 1); //Define o valor do índice do buffer anterior igual 1 } ...