Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 117

 

me diga como tratar tais cercas em meta-cotações)?

 
Zhunko:
Precisamos interceptar mensagens.

Se a mensagem já tiver sido executada, ela já foi excluída da fila.

Ok, eu tenho a seguinte pergunta.

#property indicator_chart_window
bool First = true;
int start(){
   if(First){
      int indexFirstLeftOnChart = WindowFirstVisibleBar();//иницилизируем под флагом, потому что в init() могут быть артефакты
      Alert("indexFirstLeftOnChart ", indexFirstLeftOnChart);
      First = false;
   }
   if(WindowFirstVisibleBar() != indexFirstLeftOnChart){//проверяем на каждом тике, изменилось ли значение
      Alert("first indexFirstLeftOnChart ", indexFirstLeftOnChart);      
      indexFirstLeftOnChart = WindowFirstVisibleBar();//если изменилось, записываем его
      Alert("second indexFirstLeftOnChart ", indexFirstLeftOnChart);
   }
   return(0);
}

- Ele apita a cada tique, porque acontece que o primeiro índiceFirstLeftOnChart é zero. Como posso combater isto? Construir 509.

 
static bool First = true;
 
gyfto:

Se uma mensagem já tiver sido executada, ela já foi excluída da fila.

As interceptações são geralmente feitas antes da execução. Caso contrário, não está claro por que interceptar?
 
FAQ:
static bool First = true;


Zhunko:
Normalmente eles o interceptam antes da execução. Caso contrário, não entendo para que você precisa interceptar?


Não há dúvidas antes da execução. Portanto, não vale a pena mudar o AccountNumber() para dll. Isso implica que o número da conta já está armazenado na dll.

 
static int indexFirstLeftOnChart;
 

Eu tenho algo sobre um ponto simples, uma dor de cabeça. Há uma função de busca de pedidos.

t - contador de todas as ordens.

p - contador de ordens pendentes.

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders(int& t, int& p)
{
   int total = OrdersTotal() - 1;
   t = 0;
   p = 0;
   for (int i=total; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderType() > 1)
      {
          p++;
      }
      t++;
      pr ("FindOrders(): " + "t = " + t + "   " + TimeToStr(TimeCurrent()));
      pr ("FindOrders(): " + "p = " + p + "   " + TimeToStr(TimeCurrent()));
   }
}

Eu o chamo desde o início:

int start()
{
   if (g_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                               // ..уже были выполнены
   
   int oTotal = 0, oPending = 0;
   
   FindOrders(oTotal, oPending);
   
   int signal = GetGeneralSignal(oTotal);
   
   if (signal != SIGNAL_NO)
   {
       if (!Trade(signal))
       return(0);
   }
   else

Na verdade, quando a abrimos, mesmo quando não há ordens, vemos isso (mesmo quando não há ordens, ela imprime como se houvesse...):

Como isso é possível?

 
Boa noite a todos. Decidi dominar a MQL4 recentemente (estive estudando o tutorial de Sergey Kovalev). Hoje decidi fazer um simples roteiro de abertura do pedido para a prática. O código é:
int start()
{
OrderSend("EURUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());

retornar;

}

O script não funcionou e o erro 4109 (Comércio não permitido) foi mostrado. Ao tentar mudar a situação, também apareceu o erro 4016 (Uninitialised array). Eu gostaria de saber o que causa esses erros e como criar um simples roteiro de abertura comercial, afinal de contas. Acabei de copiar o exemplo do tutorial https://book.mql4.com/ru/trading/ordersend (acabei de adicionar a função GetLastError nele) e recebi o erro 4109 de qualquer forma.

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());
   return;                                   // Выход из start()
  }

Кто может объяснить в чем проблема, буду очень признателен. Заранее спасибо.
 
depósito = tipo 6
 
Você pode me dizer se há alguma forma de definir os comentários sobre o pedido como padrão???