Erros, bugs, perguntas - página 733

 
agora verificado - os outros eventos sonoros também não funcionam.
 

Vejo uma estranha imagem em funcionamento de métodos de abertura de posição na classe CTrade (PositionOpen,Buy,Sell) - o Expert Advisor abre efectivamente uma posição (posso vê-la no terminal), mas estes métodos retornam falsos, _LastError=4756 (não enviou um pedido comercial). Enquanto CTrade.ResultRetcode()=10008 (Encomenda efectuada).

Falta-me alguma coisa no funcionamento dos servidores Alpari nos dias de hoje ou é um bug?

 
blef:

agora verificado - outros eventos sonoros também não estão a funcionar.

Os sons no terminal estão activados?

 
Sim - activado, a mesma coisa acontece no servidor ROBOFOREX.
 
agora todos os eventos sonoros estão a funcionar ==> em ambos os terminais MQ e ROBOFOREX.
 

Crio uma EA, faço-a correr sobre um gráfico e abro manualmente uma posição:

void OnTrade()
  {
//---
   if(OrdersTotal()!=0)
     {
      OrderSelect(OrderGetTicket(0));
      Print("Есть ордера OrdersTotal()=",OrdersTotal()," ",
            EnumToString((ENUM_ORDER_STATE)OrderGetInteger(ORDER_STATE))
            );
     }
   else
     {
      OrderSelect(OrderGetTicket(0));
      Print("Нет ордеров OrdersTotal()=",OrdersTotal()," ",
            EnumToString((ENUM_ORDER_STATE)OrderGetInteger(ORDER_STATE))
            );
     }
  }

Executo a EA num gráfico, abro manualmente uma posição e entro nas impressões:

2012.05.02 16:27:10     Template Trades (EURUSD,M15)    Нет ордеров OrdersTotal()=0 ORDER_STATE_STARTED
2012.05.02 16:27:10     Template Trades (EURUSD,M15)    Нет ордеров OrdersTotal()=0 ORDER_STATE_STARTED
2012.05.02 16:27:10     Template Trades (EURUSD,M15)    Нет ордеров OrdersTotal()=0 ORDER_STATE_STARTED

Como é possível que eu receba um evento "comerciante" mas sem ordens, mas recebo ordens do tipo "sem ordens" e sempre.

Acho que esta merda simplesmente não funciona.

 
E verifica o resultado da execução
OrderSelect(OrderGetTicket(0));

De que serve pedir o estatuto de uma ordem inexistente? E qual será o segundo formulário de retorno nesse caso?

bool  OrderGetInteger(
   ENUM_ORDER_PROPERTY_INTEGER  property_id, // идентификатор свойства
   long&                long_var          // сюда примем значение свойства
   );
 
Rosh:

E verifica o resultado da execução

De que serve pedir o estatuto de uma ordem inexistente? E qual será o segundo formulário de retorno neste caso?

Eu sabia que seguiria por este caminho de análise de códigos.

E porque não se importa se existe uma ordem, uma vez que o evento do comerciante desencadeou (pelo menos um deles deve ser para estabelecer uma ordem), e OrderTotal() diz que não existe nenhuma ordem?

 
Urain:

Eu sabia que seguiria por este caminho de análise de códigos.

E porque não se preocupa se existe uma ordem, uma vez que o evento comercial foi desencadeado (pelo menos um deles deve ser por definição de ordem), mas OrderTotal() diz que não existem ordens?

Talvez PositionTotal() seja necessário?
 

Este é o erro que foi exibido quando as classes foram ligadas

Prata fechada fina, mas o ouro não.

Если проблема в проскальзывании, то не подскажите как его задавать?
if (myposition.Select(_Symbol))
{
 // закрыть открытую позицию по этому символу
 // величина проскальзывания была установлена ранее 
 mytrade.PositionClose(_Symbol);
}