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

 
Existe um robô comercial MT4, eu acrescento código com link para conta comercial, mas ele ainda falha. Lança um erro. Eu preciso de alguém que me ajude a fazer isso. meu telegrama@Starinkov eu ficaria muito grato)))))
 

Espero que a tradução seja fiel, mas óbvio que não será..

É por este e outros motivos que NÃO precisamos de THREADS Globais...

Do contr;ario, não teríamos Fórums Regionais...

Movimento bizarro...

:(

 
Olá! construí um computador com 24 núcleos para acelerar a otimização e ser capaz de otimizar o desempenho da estratégia em pequenos TFs, tais como M1, M2, etc. Quando o inicio, vejo que o processo ocasionalmente congela e fica pendurado por muito tempo. Estou anexando três fotos sobre o assunto. No meu antigo computador (8 núcleos) e nada como isto acontece. Além disso, não há nenhum benefício em utilizar um computador potente como resultado desta paralisação. Atualmente eu posso ver que 8 núcleos dão resultados mais rápidos que 24x. E eu queria obter 10x de velocidade. Talvez haja algo que eu precise ajustar em algum lugar... Favor informar se alguém souber o que pode ser.
 

Olá.

Quero fazer um arquivo de inclusão universal que possa ser incluído em qualquer EA. E deve ser limitado a apenas uma inclusão sem qualquer código adicional.

O problema é que o arquivo usa OnTimer() como ponto de entrada.

E se a EA (a qual meu arquivo include se conecta) também usar o OnTimer()? Existe alguma solução?

 

Boa tarde. Eu negocio na bolsa de valores Moex. Corretor Otkritie. Se houver posições abertas para vários instrumentos, o robô os confunde ao enviar um pedido de fechamento parcial (ele pode enviar um pedido com o preço das ações Sberbank para ações Magnit, por exemplo. Ou seja, o instrumento no pedido é especificado para Magnit, mas os preços são especificados para Sberbank) ou simplesmente não envia o pedido. Código de algoritmo de fechamento para posição longa (funciona quando o preço do instrumento Price_Close_1_Buy é alcançado):

void Price_Close_1_Buy()
  {

   MqlTradeRequest arequest;
   MqlTradeResult aresult;
   ZeroMemory(arequest);
   ZeroMemory(aresult);

   for(int i=PositionsTotal()-1; i>=0; i--)
      {
       if(Symbol()==PositionGetSymbol(i))
      {
       arequest.action   = TRADE_ACTION_DEAL;
       arequest.position = PositionGetTicket(i);
       arequest.symbol   = Symbol();
       arequest.volume   = NormalizeDouble((Lots_Close_1/100*Lots_current()),0);
       arequest.price    = aposition.PriceCurrent();
       arequest.type_filling = ORDER_FILLING_FOK;
       arequest.type     = ORDER_TYPE_SELL;
       Price_Close_1_Buy_Request_Send = true;
      }
       OrderSend(arequest,aresult);
       Print("=================================================================================================== ");
       Print(asymbol.Name());
       Print("Price_Close_1_Buy_request() ",arequest.price);
       Print("Lots_Close_1_Buy_request() ",arequest.volume);
       Print("Result ", aresult.comment);
       Print("Retcode ",aresult.retcode);
      }
  }
 
leonerd #:

Olá.

Quero fazer um arquivo de inclusão universal que possa ser incluído em qualquer EA. E deve ser limitado a uma inclusão sem qualquer código adicional.

O problema é que o arquivo usa OnTimer() como ponto de entrada.

E se a EA (a qual meu arquivo include se conecta) também usar o OnTimer()? Existe uma solução?

Nunca faça isso.

Apenas um conselho. Não vou mudar minha opinião.

 
Manter84 houver posições abertas para vários instrumentos, o robô os confunde ao enviar um pedido de fechamento parcial (ele pode enviar um pedido com o preço das ações Sberbank para ações Magnit, por exemplo. Ou seja, o instrumento no pedido é especificado para Magnit, mas os preços são especificados para Sberbank) ou simplesmente não envia o pedido. Código de algoritmo de fechamento para posição longa (funciona quando o preço do instrumento atinge Price_Close_1_Buy):
Sobre a questão do preço - cavar
aposition.PriceCurrent()
 
Koldun Zloy #:

Nunca faça isso.

Apenas um conselho. Eu não vou mudar sua opinião.

Estas são as exigências do projeto.

 

Como posso anular o OrderSend() padrão?

#define OrderSend(MqlTradeRequest,MqlTradeResult)  MyOrderSend(MqlTradeRequest,MqlTradeResult)

Eu acrescentei uma linha no topo.

Em myOrderSend() eu faço alguns cálculos e chamo OrderSend() novamente. Eu quero chamar OrderSend() nativo, mas em vez disso recebo recorrência e MyOrderSend() é chamado novamente.

E esta chamada também não ajuda ::OrderSend()
 
leonerd Euadicionei umalinha acima.

Em myOrderSend() eu faço alguns cálculos e chamo OrderSend() novamente. Quero chamar a função nativa OrderSend(), mas em vez disso recebo uma repetição e MyOrderSend() é chamado novamente.

Isto não funciona de forma alguma. #define substitui a primeira (a chamada) pela segunda no código do programa, pois OrderSend(...) é substituída por MyOrderSend(...) toda vez que ela ocorre.