Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 803

 

Uma pergunta simples.

É possível sair do ciclo desta forma? Ou tal simplicidade não é gratuita?

while(1)
{
 .........
 if(............ ) return;
 ..........
}
 

Mais uma pergunta.

Existe uma estrutura MqlTick com o seguinte campo

longtime_msc;// Tempo da última actualização de preços em milissegundos

Tanto quanto sei, o time_msc armazena o número de milissegundos desde 1970.

A função CopyTick tem o seguinte parâmetro

ulongde=0,// data desde a qual as carraças são solicitadas

Na ajuda, especifica-se que é "Data a partir da qual as carraças são pedidas". Especificado em milissegundos desde 01.01.1970".

Pergunta de atenção.

Porque são utilizados diferentes tipos de dados na estrutura MqlTick e no parâmetro da função CopyTick ? Afinal de contas, ambos guardam o tempo desde 1970.

 
pivomoe:

Mais uma pergunta.

Existe uma estrutura MqlTick com o seguinte campo

longtime_msc;// Tempo da última actualização de preços em milissegundos

Tanto quanto sei, o time_msc armazena o número de milissegundos desde 1970.

A função CopyTick tem o seguinte parâmetro

ulongde=0,// data desde a qual as carraças são solicitadas

Na ajuda, especifica-se que é "Data a partir da qual as carraças são pedidas". Especificado em milissegundos desde 01.01.1970".

Pergunta de atenção.

Porque são utilizados diferentes tipos de dados na estrutura MqlTick e no parâmetro da função CopyTick ? Afinal de contas, ambos guardam o tempo desde 1970.

ulong - tipo longo não assinado

 
Eu sei disso. Porque é que um tipo assinado é utilizado num caso e um tipo não assinado no outro? Os casos são semelhantes.
 
pivomoe:

Uma pergunta simples.

É possível sair do ciclo desta forma? Ou tal simplicidade não é gratuita?

Qual é a preocupação? Rescisão por condição. Só se quiser apenas sair do laço, não voltar mas quebrar

 
Alexey Viktorov:

O que o está a incomodar? Fim da execução por condição. Só se quiser apenas sair do laço, não voltar mas quebrar

Não compreendo o consumo de memória após a saída ou não de um loop de retorno?
 
pivomoe:
Não compreendo o consumo de memória após uma tal saída de retorno ou não?

Porque deveria? Não te metas num monte de disparates. Este tipo de saída irá funcionar rapidamente.

 

Como posso desistir de uma utilidade gratuita (indicador) descarregada através do mercado no terminal. Desinstalá-lo não ajuda. Continuo a receber mensagens sobre a actualização do produto, embora este tenha sido desinstalado há muito tempo.

 

Meus senhores, ajudem-me a compreender a situação, no Testador de Estratégia tudo corre sem erros e problemas também numa conta de demonstração, mas quando carrego um EA no Mercado, diz o Autotester:

2016.04.01 00:00:12 venda instantânea falhada 0,10 EURUSD a 1,13780 sl: 1,14030 tp: 1,13030 [Volume inválido]
2016.04.01 00:00:24 venda instantânea falhada 0.10 EURUSD a 1.13779 sl: 1.14029 tp: 1.13029 [Volume inválido]
2016.04.01 00:00:59 venda instantânea falhada 0.10 EURUSD a 1.13782 sl: 1.14032 tp: 1.13032 [Volume inválido]
2016.04.01 00:01:00 venda imediata falhada 0,10 EURUSD a 1,13793 sl: 1,14043 tp: 1,13043 [Volume inválido]
2016.04.01 00:01:08 venda instantânea falhada 0.10 EURUSD a 1.13783 sl: 1.14033 tp: 1.13033 [Volume inválido]
2016.04.01 00:01:17 venda instantânea falhada 0.10 EURUSD a 1.13784 sl: 1.14034 tp: 1.13034 [Volume inválido]
2016.04.01 00:01:25 venda imediata falhada 0.10 EURUSD a 1.13774 sl: 1.14024 tp: 1.13024 [Volume inválido]
2016.04.01 00:01:34 venda imediata falhada 0,10 EURUSD a 1,13776 sl: 1,14026 tp: 1,13026 [Volume inválido]
2016.04.01 00:01:59 venda instantânea falhada 0.10 EURUSD a 1.13778 sl: 1.14028 tp: 1.13028 [Volume inválido]
2016.04.01 00:02:00 venda imediata falhada 0.10 EURUSD a 1.13778 sl: 1.14028 tp: 1.13028 [Volume inválido]
2016.04.01 00:02:08 venda imediata falhada 0.10 EURUSD a 1.13776 sl: 1.14026 tp: 1.13026 [Volume inválido]

código de função abaixo:

OpenPos(NormalizeDouble(Lot,2), NormalizeDouble(Bid,_Digits), NormalizeDouble(_sl,_Digits),NormalizeDouble(_tp,_Digits),ORDER_TYPE_SELL,MagicSell,Comm);
void OpenPos(const double volume,const double price, const double stop, const double take, const ENUM_ORDER_TYPE o_type, const int magic,const string coment=NULL)
{
   MqlTradeRequest request={0};
   MqlTradeResult result={0};
   
   string t=(o_type==ORDER_TYPE_BUY)?"Buy":"Sell";
   
   ZeroMemory(request);
   ZeroMemory(result);
   
   request.action=TRADE_ACTION_DEAL;
   request.symbol=Symbol();
   request.volume=volume;
   request.type=o_type;
   request.magic=magic;
   request.price=price;
   request.sl=stop;
   request.tp=take;
   request.comment=coment;
   
   if(IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_FOK))
      request.type_filling=ORDER_FILLING_FOK;
   else if(IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_IOC))
      request.type_filling=ORDER_FILLING_IOC;
   else
      request.type_filling=ORDER_FILLING_RETURN;
   
   if(!OrderSend(request,result))
      PrintFormat("Can't open position %s error %i",t,GetLastError());
}
 
Andrii Djola:

Quero pedir-lhe que me ajude a compreender a situação, no Testador de Estratégia tudo corre sem qualquer erro ou problema, também não tenho problemas na minha conta de demonstração, mas quando carrego a minha EA no Mercado, o Autotester escreve:

Imprimir o resultado da OrderCheck e a sua estrutura completa. Faça o mesmo com OrderSend.

Configurar contas demo em dez servidores comerciais diferentes. E experimente lá o seu código. Na maioria das vezes, algumas características particulares do servidor de negociação não são tidas em conta, as quais são reproduzidas ao verificar no Mercado.

E não se esqueça de produzir LastError. Tudo isto em conjunto permitir-lhe-á chegar muito rapidamente ao fundo das causas do erro.

Razão: