Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 117

 

¿me puede decir cómo tratar tales vallas en las citas meta-citas)?

 
Zhunko:
Necesitamos interceptar los mensajes.

Si el mensaje ya ha sido ejecutado, ya ha sido eliminado de la cola.

Bien, tengo la siguiente pregunta.

#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);
}

- Pita en cada tick, porque resulta que el primer indexFirstLeftOnChart es cero. ¿Cómo puedo luchar contra esto? Construye 509.

 
static bool First = true;
 
gyfto:

Si un mensaje ya ha sido ejecutado, ya ha sido eliminado de la cola.

Las interceptaciones suelen realizarse antes de la ejecución. De lo contrario, no está claro por qué interceptar?
 
FAQ:
static bool First = true;


Zhunko:
Normalmente lo interceptan antes de la ejecución. Si no, no entiendo para qué necesitas interceptarlo.


No hay duda antes de la ejecución. Así que no tiene sentido trasladar la comprobación de validez de AccountNumber() a la dll. Implica que el número de cuenta ya está almacenado en dll.

 
static int indexFirstLeftOnChart;
 

Tengo algo sobre un simple punto, un dolor de cabeza. Existe una función de búsqueda de pedidos.

t - contador de todos los pedidos.

p - contador de órdenes pendientes.

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
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()));
   }
}

Lo llamo desde el principio:

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

De hecho, cuando lo abrimos, aunque no haya pedidos, vemos esto (aunque no haya pedidos, se imprime como si los hubiera...):

¿Cómo es posible?

 
Buenas tardes a todos. He decidido dominar MQL4 recientemente (he estado estudiando el tutorial de Sergey Kovalev). Hoy he decidido hacer un sencillo script de apertura de pedidos para practicar. El código es:
int start()
{
OrderSend("EURUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());

volver;

}

El script no funcionó y se mostró el error 4109 (Trading not allowed). Al intentar cambiar la situación, también apareció el error 4016 (Array no inicializado). Me gustaría saber qué causa estos errores y cómo crear un simple script de apertura de operaciones después de todo. Acabo de copiar el ejemplo del tutorial https://book.mql4.com/ru/trading/ordersend (sólo añadí la función GetLastError en él) y obtuve el error 4109 de todos modos.

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
 
¿Me pueden decir si hay alguna forma de establecer los comentarios en el pedido como predeterminados?