erro 4756 - página 3

 
BHC:

Minha EA está trazendo erros estranhos com o build 778. O volume de 0,1 está normalizado e claramente não é inválido.

Você pode verificar as propriedades do símbolo Silver e nos informar o que oSYMBOL_VOLUME_MIN e SYMBOL_VOLUME_STEP são por favor. Nem sempre é suficiente apenas normalizar, por exemplo, se seu Passo de Volume fosse 0,5 então Normalize não o ajudaria.
 
RaptorUK:
Você pode verificar as propriedades do símbolo Silver e nos informar o que oSYMBOL_VOLUME_MIN e SYMBOL_VOLUME_STEP são por favor. Nem sempre é suficiente apenas para Normalizar, por exemplo, se seu Passo de volume fosse 0,5 então Normalize não o ajudaria.

Esta fonte

Print(" volume step: ",SymbolInfoDouble(_trade_symbol,SYMBOL_VOLUME_STEP),", volume minimum: ",", ",SymbolInfoDouble(_trade_symbol,SYMBOL_VOLUME_MIN)); return;
         

Dá isto nos registros de teste...

2013.03.12 12:46:01 Core 1 2013.01.23 13:32:59 etapa de volume: 0.1, volume mínimo: , 0.1

 
BHC:

Esta fonte

Dá isto nos registros de teste...

2013.03.12 12:46:01 Core 1 2013.01.23 13:32:59 etapa de volume: 0.1, volume mínimo: , 0.1

O problema pode estar em seu relatório de erro, não verifiquei com mql5, mas isto não funcionará com mql4 . .

if(_result.retcode != ( 0 || TRADE_RETCODE_PLACED || TRADE_RETCODE_DONE))

em vez disso, tente isto . .

if( _result.retcode != 0 && _result.retcode != TRADE_RETCODE_PLACED && _result.retcode != TRADE_RETCODE_DONE )
 
Isso se livrou dos erros! Thx
 
BHC:
Isso se livrou dos erros! Thx
if(_result.retcode != ( 0 || TRADE_RETCODE_PLACED || TRADE_RETCODE_DONE))

Existe alguma linguagem em que esta sintaxe seja válida?

 
Eu nunca tinha me deparado tão bem... Acho que consegui isso com a implementação do ordercheck por alguém. Estava neste site...
 
angevoyageur:

Existe alguma linguagem em que esta sintaxe seja válida?

Talvez, se as variáveis fossem do tipo bool, isso pudesse fazer algum sentido. Já vi algumas pessoas fazerem coisas semelhantes no fórum mql4, é um simples erro a ser cometido.
 
RaptorUK:
Foi este o tópico que você encontrou?https://www.mql5.com/en/forum/10850 ele relata o mesmo problema que eu estou tendo

Eu não vi esta linha.

A solução é como eu disse, com a OnTradeTransaction() manipulador de eventos (NÃO USE ESTE CÓDIGO COMO ESTÁ, É PARA TESTE & TESTE):

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
                        {

    if (trans.type == TRADE_TRANSACTION_DEAL_ADD) {

        if (execution == SYMBOL_TRADE_EXECUTION_MARKET) {
            if (!trade.PositionModify(_Symbol, _sl, _tp))
                if (debugMode) {
                    Print("Modify SL & TP failed. Return code=", trade.ResultRetcode(), ". Code description: ", trade.ResultRetcodeDescription());
                    Print("Deal ticket : ", trans.deal);
                }
            else
                if (debugMode) Print("Modify SL & TP executed successfully. Return code=", trade.ResultRetcode(), " (", trade.ResultRetcodeDescription(),")");
        }

    }
}   

Isso está funcionando. O comércio local é do tipo CTrade Class. Suponho que você possa fazer o mesmo com OrderSend().

 
angevoyageur:

Eu não vi esta linha.

A solução é como eu disse, com a OnTradeTransaction() manipulador de eventos (NÃO USE ESTE CÓDIGO COMO ESTÁ, É PARA TESTE & TESTE):

Isso está funcionando. O comércio é do tipo de classe CTrade. Suponho que você possa fazer o mesmo com OrderSend().

Estou me afastando da aula de CTrade numa tentativa de aprender o básico, eu nunca usei o OOP então aulas, estruturas, etc. fazem parte da minha curva de aprendizado com mql5.

Tenho certeza de que a OnTradeTransaction() ofereceria uma alternativa, mas me parece bastante horrível de usar, mesmo para a simples EA em que estou trabalhando, também não há menção da necessidade de usá-la na documentação para OrderSend() e acho, vou confirmar, que vi o mesmo problema no Testador de Estratégia, não sei exatamente como isso poderia acontecer, vou tentar novamente com mais alguns relatórios de erros adicionados para ter certeza.

 
RaptorUK:

Estou me afastando da aula de CTrade em uma tentativa de aprender o básico, nunca usei o OOP, então aulas, estruturas, etc. fazem tudo parte da minha curva de aprendizado com mql5.

Tenho certeza de que a OnTradeTransaction() ofereceria uma alternativa, mas me parece bastante horrível de usar, mesmo para a simples EA em que estou trabalhando, também não há menção da necessidade de usá-la na documentação para OrderSend() e acho, vou confirmar, que vi o mesmo problema no Testador de Estratégia, não sei exatamente como isso poderia acontecer, vou tentar novamente com mais alguns relatórios de erros adicionados para ter certeza.

Eu entendo sua posição sobre o OOP.Sempre leva mais tempo do que a abordagem "tradional" e é muito útil para projetos grandes (ou médios).

Estou muito interessado em saber se existe uma solução "clássica" para nosso problema.