Erros, bugs, perguntas - página 409

 
T-G:

Por favor, informe como funcionará o seguinte código no mql5 que não compreendo

em frequência como obter a hora actual?
Aqui tem
//+------------------------------------------------------------------+
//|                                                       пример.mq5 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   "1.00"

input int HourOpen=4;

MqlDateTime str;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   TimeToStruct(TimeCurrent(),str);

   if(str.hour==HourOpen)
     {
      // действие
     }
  }
//+------------------------------------------------------------------+
 
sergey1294:
Ver
TimeCurrent() tem uma sobrecarga, pelo que pode levar o tempo directamente (contornando TimeToStruct()), embora a sua versão também esteja correcta.
 

stringo:

Então os graves problemas são causados pela implementação desta opção?

void OnTrade(
             const string symbol,//символ, от которого (по которому) пришло торговое событие
             const uchar type,   //тип торгового события (изменения в ордерах, позициях или сделках)
             const ulong ticket  //тикет ордера или сделки, либо идентификатор позиции (в зависимости от второго параметра)
             );

Exactamente. O problema é que o comércio e a fila de mensagens não estão sincronizados de forma alguma. Um e o mesmo bilhete pode receber um monte de mensagens.

Além disso, quando recebe a primeira mensagem desta pilha, não sabe nada sobre a disponibilidade de mais mensagens no mesmo bilhete. Apressou-se a processar uma modificação do bilhete, mas o bilhete já existe, já está na história das posições fechadas. O que fazer? Desconhecido.

Agora, quando ocorre um evento de negociação impessoal, pode conhecer imediatamente o estado actual das posições abertas e o histórico de negociação. Não tem um número de bilhete e não tem nada a referir a não ser o estatuto actual.

Esteve fora de contacto durante alguns dias.

Talvez existam diferentes variantes de utilização de possíveis parâmetros da funçãoOnTrade(), mas o meu objectivo é esta variante:

1. encomendas. Ao receber a mensagem seguinte "da pilha", descubro a partir do bilhete de encomenda se a encomenda está na lista de encomendas abertas(OrderSelect) ou na lista de encomendas históricas(HistoryOrderSelect). Isto é, obtenho as informações mais actualizadas sobre a localização actual de uma determinada encomenda, em relação às listas de encomendas.

2. Posições. Ao receber a mensagem seguinte "da pilha", descubro o estado de posição deste símbolo pelo seu nome(PositionSelect). Isto é, também recebo a informação mais precisa sobre o estado actual da posição.

Depois trabalho com as propriedades de um símbolo específico, conforme necessário.

Assim, tento evitar o uso excessivo de controlos cíclicos.

 
Urain e Sergey1294 obrigado pela resposta rápida, agora compreendo
 
AlexSTAL:
O que é que diz? Quais são os sintomas?

Nada! estou a tentar abrir uma conta de demonstração (tentei CDs diferentes)

volta

e depois não pode criar uma conta

 
papaklass:
Se for um comerciante de demonstração, só precisa de saber se uma paragem de perdas ou lucros é desencadeada e em que instrumento. O resto dos eventos comerciais são exóticos e têm pouco a ver com o comércio. IMHO. Portanto, se houvesse um símbolo na função OnTrade(), seria possível determinar (por exemplo, comparando o saldo actual com o anterior) o que desencadeou o sl ou tp.
Concordo. No mínimo é preciso um símbolo, e depois descobriremos o que era.
raposas:

Tentar abrir uma conta de demonstração (tentei diferentes empresas de corretagem)

surge

Tentei diferentes empresas de corretagem e depois disso não posso abrir uma conta.

Quando é que descarregou o terminal e onde? Uma imagem da janela seguinte é desejável, uma vez que esta não é informativa.
 

Aos criadores de

Win 2003 SP2 (em modo terminal) está constantemente a perder informação sobre a minha conta de negociação é um bug ou foi concebido para melhorar a segurança?

Mais precisamente, se eu usar alternadamente a mesma cópia de programa em modo normal e terminal com contas diferentes, os dados da conta desaparecem de tempos a tempos. Aparentemente, se trabalhar apenas em modo terminal com contas diferentes, a situação será semelhante (ainda não verifiquei isso).

 
papaklass:
A maioria dos comerciantes precisa de saber se um stop loss ou take profit foi desencadeado e em que instrumento. O resto dos eventos comerciais são exóticos e têm pouco a ver com o comércio. IMHO. Portanto, se houvesse um símbolo na função OnTrade(), então comparando, por exemplo, o valor do saldo actual com o anterior, poderia determinar se foi o sl ou tp que desencadeou.
Em "protecção do bilhete" :) Prefiro trabalhar com ordens pendentes e traçar o seu destino desde o nascimento até à reforma. O que é este "exótico com pouca relação com o comércio"? Pelo contrário, é um requisito de tempo para acompanhar o destino das encomendas através da sua emissão de bilhetes. - É necessário evitar colocar uma segunda ordem pendente ou ultrapassar o desencadeamento de uma ordem que já tenha sido colocada. Se tivermos os parâmetros descritos acima, podemos mover o bloco de rastreio do ponto de encomenda para a função OnTrade().
 
papaklass:
A maioria dos comerciantes precisa de saber se um stop loss ou take profit foi desencadeado e em que instrumento. O resto dos eventos comerciais são exóticos e têm pouco a ver com o comércio. IMHO. Portanto, se houvesse um símbolo na função OnTrade(), poderia determinar (por exemplo, comparando o saldo actual com o anterior) o que desencadeou o sl ou tp.
Vou repeti-lo mais uma vez. A questão não está encerrada. Foi adiado até encontrarmos uma solução aceitável. Bem, as tarefas mais importantes ainda não foram resolvidas.
 
Yedelkin:
Em defesa do Bilhete :) Prefiro trabalhar com ordens pendentes e acompanhar o seu destino desde o nascimento até à reforma. Que tipo de "exotismo de pouca relevância para o comércio" é esse? Pelo contrário, é um requisito de tempo para acompanhar o destino das encomendas através da sua emissão de bilhetes. - É necessário evitar colocar uma segunda ordem pendente ou ultrapassar o desencadeamento de uma ordem que já tenha sido colocada. Se tivermos os parâmetros descritos acima, podemos mover o bloco de rastreio do ponto de encomenda para a função OnTrade().
Talvez, dar informações sobre quantos eventos comerciais ainda estão na fila de espera simplifique as coisas.