Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 351

 

Bom dia!

O problema surgiu do nada, o Expert Advisor estava trabalhando, sem problemas, mas assim que eu inseri uma nova função (trailing stop), OrderSelect não funcionou em toda minha EA e erro 4051 ERR_INVALID_FUNCTION_PARAMVALUE - Valor inválido dos parâmetros da função. No início eu não entendi, pensei que poderia ter mudado algo em algum lugar, removi o trailing stop e devolvi tudo como estava, mas OrderSelect ainda gera erro.

Aqui está o código só por precaução:

         for(int i = OrdersTotal(); i > 0; i--)
           {
            if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
              {
               if(OrderType() == OP_SELL)
                 {
                  if(!OrderClose(OrderTicket(), Lots, Ask, slippage, clrRed))
                    {Print("Error Order Close SELL = ", GetLastError());}
                 }
              }
            else
              {Print("Error order select, try order close SELL = ", GetLastError());}
           }


 
Vitaliy Sendyaev:

Bom dia!

O problema surgiu do nada, o Expert Advisor estava trabalhando, sem problemas, mas assim que eu inseri uma nova função (trailing stop), OrderSelect não funcionou em toda minha EA e erro 4051 ERR_INVALID_FUNCTION_PARAMVALUE - Valor inválido dos parâmetros da função. No início eu não entendi, pensei que poderia ter mudado algo em algum lugar, removi o trailing stop e devolvi tudo como estava, mas OrderSelect ainda gera erro.

Aqui está o código só por precaução:



Este não é o código completo. Muito provavelmente um parênteses foi removido em algum lugar.
 
Vitaliy Sendyaev: OrderSelect gera erro 4051 ERR_INVALID_FUNCTION_PARAMVALUE - Valor inválido de um parâmetro de função

Aqui está o código apenas no caso de: for(int i = OrderTotal(); i > 0; i--)

precisamos para (int i = OrdensTotal() -1; i>=0; i--) as ordens são numeradas começando de zero, então o maior número é 1 a menos do que o número

 
STARIJ:

precisamos para (int i = OrderTotal() -1; i>=0; i--) as ordens são numeradas a partir de zero e, portanto, o número mais alto é 1 a menos do que o número

Exatamente! Eu não notei que... Eu preciso dormir mais


 
STARIJ:

Precisamos (int i = OrdensTotal() -1; i>=0; i--) as ordens são numeradas a partir de zero e, portanto, o número mais alto é 1 a menos do que o número


Obrigado!

 
Valerius:

Isto não é sério... O que são eles (entrada e externa) para então....

O que não é sério? Você fez uma pergunta no ramo do código e obteve uma resposta apropriada.
Bem, se você ainda não pensou em reiniciar o terminal, você já foi atendido - servicedesk.

 
Valerius: O que eu faço se, por exemplo, eu definir as configurações no EA hoje, então no dia seguinte algumas das configurações estão em branco?

É difícil adivinhar como você fez isso. Não quero lhe mostrar o código do Expert Advisor, e sou preguiçoso demais para ver tudo isso. Fazer uma cópia com um nome diferente, apagar tudo, exceto parâmetros e função vazia OnTick (ou Start ????). O efeito ainda está lá? Mostrar o código resultante

 
Vitaliy Sendyaev: Obrigado!

Ajudou? Como funcionava antes?

 

Sinto muito, mas não entendo por que o oncalculate deve passar os valores das variáveis pré-definidas se elas são globais e também disponíveis

 
ijonhson:

Olá, eu quero fazer um EA baseado em um indicador, eu copiei o código indicador no ontick, estou perdendo as variáveis da função onCalculate, eu preciso fazer tudo através do copytime copyhigh copylow, etc. ou existe uma maneira mais fácil e rápida?

iCustom para o resgate

iCustom - Технические индикаторы - Справочник MQL4
iCustom - Технические индикаторы - Справочник MQL4
  • docs.mql4.com
[in] input-параметры пользовательского индикатора, разделенные запятыми. Тип и порядок следования параметров должен соответствовать. Если параметры не указаны, то будут использованы значения по умолчанию.