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

 

Ajuda, por favor. O que está errado aqui?

 double buy_OrderProfit = 0;
 double sell_OrderProfit = 0;
 double buy_Order_price  = 0;
 double sell_Order_price = 0;
 
  double Drop_proc1 =AccountEquity();
  double Drop_proc2 =AccountBalance();
  double Drop_proc3 =(Drop_proc1*100)/Drop_proc2;
  
  if (Drop_procK <= Drop_proc3)
  {
  for(int i=OrdersTotal()-1; i>=0; i--)
       if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))&& (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic))
            if((OrderType()==OP_SELL) sell_OrderProfit + OrderProfit())
                 if((OrderType()==OP_BUY)  buy_OrderProfit + OrderProfit()) 

  for (int i=OrdersTotal()-1; i>=0; i--)
        if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))&& (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic))
             if ((OrderType()==OP_BUY ) && ( buy_OrderProfit < sell_OrderProfit ) )     
                  OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
                    if ((OrderType()==OP_SELL) && sell_OrderProfit < buy_OrderProfit )
                         OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);  
        } 
   else 1=1;

erro 'se' - não são permitidas expressões num âmbito global v.4.1.5(2).mq4 793 3



 
new-rena:

Cavalheiros!

Como posso saber se o mercado está fechado ou não durante a inicialização de um Expert Advisor MQL4? (que comando?)

Não existe tal comando. Pode tentar colocar uma ordem pendente de longo alcance e depois apagá-la se o fizer.
 
Kisolen:

Ajuda, por favor. O que está errado aqui?

A condição se só pode estar dentro de uma função.
 
Sergei Vladimirov:
A condição se só pode estar dentro de uma função.
Obrigado pela sua resposta. Este código está dentro da função OnTick() vazia, dentro dos parênteses encaracolados. Está longe no topo, peço desculpa por não o ter copiado. É assim que eu o entendo? Isto é uma função, certo? E ainda há um erro.
 
Kisolen:
Obrigado pela sua resposta. Este código está dentro da função OnTick() vazia, dentro dos parênteses encaracolados. Está longe no topo, desculpem por não o ter copiado. É assim que eu o entendo? Isto é uma função, certo? E ainda há um erro.
O compilador escreve que se estiver no âmbito global. Talvez seja apenas um desequilíbrio de parênteses, vejam isto (não é de admirar, a propósito, com este estilo de código).
 
Vitaly Muzichenko:

Experimente este, parecia funcionar uma vez, mas ainda não o usei:

O seu código não funciona, porque a hora actual é determinada pelo TimeCurrent(), e devolve a hora da última citação, e a sua função voltará sempre a ser verdadeira. Pode fazer o mesmo com o TimeLocal(), tendo em conta a diferença de fuso horário entre computador e servidor, mas isto não garante o resultado correcto: o relógio no computador pode estar errado, e pode não preencher a hora da sessão no servidor, e nos feriados (Ano Novo), ninguém sabe o que será devolvido... E não existe uma função simples e fiável como MarketIsClosed() em µl.
 
Sergei Vladimirov:
Não existe tal comando. Pode tentar colocar uma ordem pendente de longo alcance e depois apagá-la se o fizer.

Sim, uma boa opção. A equipa devolverá um erro "O mercado está fechado".

Está resolvido.

Obrigado!

 

Boa tarde a todos.

Por favor, aconselhe qual a forma de escavar, ou se puder um pedaço de código por exemplo :)

Preciso do seguinte:

Tenho o Consultor Especialista e o indicador no gráfico. Como alterar os parâmetros indicadores com o Expert Advisor?

Agradecemos antecipadamente as respostas.

 
GrRusel:

Boa tarde, a todos.

Por favor, aconselhe qual a forma de escavar, ou se puder um pedaço de código por exemplo :)

Preciso do seguinte:

Tenho o Consultor Especialista e o indicador no gráfico. Como alterar os parâmetros indicadores com o Expert Advisor?

Agradecemos antecipadamente as respostas.

Não irá alterar visualmente as definições do indicador, mas ao ler os dados no Consultor Especialista através do iCustom a partir do indicador, pode definir parâmetros que são recebidos pelo Consultor Especialista a partir deste indicador. Ou pode usar variáveis globais, se ensinar o indicador a usá-las.
 
Vladimir Zubov:
Não irá alterar visualmente as definições do indicador, mas ao ler os dados no Consultor Especialista através do iCustom a partir do indicador, pode definir parâmetros que são recebidos pelo Consultor Especialista a partir deste indicador. Ou pode usar variáveis globais, se ensinar o indicador a usá-las.
Mas quando altero as definições do indicador, quero que o indicador altere as suas definições de visualização - por exemplo, alterei as zonas OBOS. Decidi alterar as zonas OBOS. Talvez deva removê-lo do gráfico e depois adicioná-lo com novas definições, mas tem de ser feito através do Expert Advisor. Ninguém encontrou tal problema e cada vez que muda tudo à mão - não pode ser...