Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 430

 
igrok333:

escreveu este código.

o meta-editor murmura.



Por que ele acasala?


#propriedade rigorosa

Seu pr é inicializado?

 
igrok333:

escreveu este código.

o meta-editor murmura.
Por que ele acasala?


#propriedade rigorosa

Está claramente escrito ali que uma variável sem valor pode ser usada na linha 553. Tente escrever bool pr=false; isto enganará o compilador, mas é melhor verificar corretamente. Afinal, se o tipo de pedido for um pedido pendente, você ainda terá pr sem valor...

 
Roman Sharanov:

sobre o anterior, e o que há aqui do mql4? a função OnTick()?

A questão foi abordada no artigo sobre a linguagem mql4, então notei imediatamente o tempo[0].

Após um olhar mais atento, torna-se claro que se trata de um conjunto definido pelo usuário.

E aqui está um comentário da documentação:

Nota

A função usa chamada síncrona - significa que a função aguarda a execução de todos os comandos que foram colocados na fila do gráfico antes de ser chamada, portanto, esta função pode consumir muito tempo. Você deve ter isto em mente se trabalhar com um grande número de objetos na tabela.

Como um objeto em uma coordenada de preço pode ter vários valores, é necessário especificar o número da linha. Esta função pode ser aplicada apenas aos seguintes objetos:

  • Linha de tendência (OBJ_TREND)
  • Linha de tendência por ângulo (OBJ_TRENDBYANGLE)
  • Linha Gann (OBJ_GANNLINE)
  • Canal equidistante (OBJ_CHANNEL) - 2 linhas
  • Canal de regressão linear (OBJ_REGRESSION) - 3 linhas
  • Canal de desvio padrão (OBJ_STDDEVCHANNEL) - 3 linhas
  • Linha com seta (OBJ_ARROWED_LINE)


 
Artyom Trishkin:

O seu pr está rubricado?

é preciso inicializá-lo? pensei que bastava declará-lo.
Pensei que tinha sido inicializada por zero quando declarada.
 
STARIJ:

Ela diz claramente que na linha 553 é possível utilizar uma variável que não tem valor. Tente escrever bool pr=false; isto enganará o compilador, mas é melhor verificar tudo corretamente. Afinal, se o tipo de pedido for um pedido pendente, você ainda terá pr sem valor...

obrigado por me lembrar sobre as ordens pendentes)



Esta é a maneira correta de fazer isso?

 void zakritj_vse_sdelki()
 {
 bool pr;
 for (int i=OrdersTotal()-1; i>=0; i--)       
   {                                        
   if(OrderSelect(i,SELECT_BY_POS)==true)
      {  
         pr=false; 

         if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );                              
         if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
         
         if (pr==false) Print("закрытие ордера ", OrderSymbol() ," завершилось с ошибкой #",GetLastError());
         if (pr==true) Print("ордер ", OrderSymbol() , " ЗАКРЫТ");
       }
    }
  }  
 
igrok333:

obrigado por me lembrar sobre as ordens pendentes)
é esta a maneira correta de fazer isso?

if (pr===falso) é equivalente a if (!pr)
if (pr===verdadeiro) é equivalente a if (pr)

Uso Alerta ao invés de Imprimir - deve aparecer imediatamente sem abrir a revista. E não há informações extras

 
Вместо
if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );
if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
короче
if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), Bid, 30 );
if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), Ask, 30 );
или просто
pr=OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 30 );


 
STARIJ:

se (pr===falso) é equivalente a se (!pr)
se (pr===verdadeiro) é equivalente a se (pr)

Eu uso Alerta ao invés de Imprimir - ele aparece instantaneamente na tela sem abrir a revista. E não há informações extras

Na verdade estou falando de colocar pr no código))
 
Дед пенсионер:
podemos escrever OrderClosePrice() desta forma?

Recebemos OrderClosePrice() depois que a transação é fechada.
 
igrok333:
É possível escrever OrderClosePrice() desta forma?

Recebemos OrderClosePrice() após o fechamento do comércio.

Você pode. Mas tenha cuidado. Para uma posição aberta, ele retorna o preço de fechamento. Correspondentemente: para Compra - Oferta, para Venda - Pergunte

Razão: