Si el mensaje ya ha sido ejecutado, ya ha sido eliminado de la cola.
Bien, tengo la siguiente pregunta.
#property indicator_chart_windowbool 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.
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.
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...):
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.
intstart()// Спец. функция start(){// Открытие BUYOrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());
return; // Выход из start()}
Кто может объяснить в чем проблема, буду очень признателен. Заранее спасибо.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
¿me puede decir cómo tratar tales vallas en las citas meta-citas)?
Necesitamos interceptar los mensajes.
Si el mensaje ya ha sido ejecutado, ya ha sido eliminado de la cola.
Bien, tengo la siguiente pregunta.
- Pita en cada tick, porque resulta que el primer indexFirstLeftOnChart es cero. ¿Cómo puedo luchar contra esto? Construye 509.
Si un mensaje ya ha sido ejecutado, ya ha sido eliminado de la cola.
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.
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.
Lo llamo desde el principio:
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?
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.