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

 
Hola, si un EA sólo pone órdenes pendientes y no las acompaña, ¿debe ser capaz de manejar errores?
 
Example2:
Hola, si un EA sólo establece órdenes pendientes, ¿debe ser capaz de manejar los errores?

Sí.

Por ejemplo.

 
artmedia70:

Sí.

Por ejemplo.


¿Sería una función de este tipo adecuada para la gestión de errores?
int ERRORS (int Error)  // Error - номер ошибки  
  {
  if(Error==0)
      return(0);        // Нет ошибки      
  // 4-торговый сервер занят,132-рынок закрыт,137-брокер занят
  if(Error==4||Error==132||Error==137)  
      {
      Sleep(240000);    // Пауза 240 сек.
      return(1);        // Сообщаем о преодол. ошибке
      }
  // 128,142,143 - истек срок ожидания и т.д.
  if(Error==128||Error==142||Error==143) 
      {      
      Sleep(60000);     // Пауза 60 сек.
      return(1);        // Сообщаем о преодол. ошибке 
      }    
  // 135-цена изменилась,138-цена устарела
  if(Error==135||Error==138)               
      {      
      return(1);        // Сообщаем о преодол. ошибке
      }        
  // 6-нет связи,129-неправильные цены,
  // 130-неправильные стопы,136-нет цен
  if(Error==6||Error==129||Error==130||   
  Error==136||Error==137||Error==138)    
      {
      Sleep(5000);      // Пауза 5 сек. 
      return(1);        // Сообщаем о преодол. ошибке
      }
  // 146-подсистема торговли занята
  if(Error==146)               
      {      
      // Пока подсистема занята
      while(IsTradeContextBusy())
         {
         Sleep(10);     // Пауза 0.01 сек.
         }
      return(1);        // Сообщаем о преодол. ошибке
      }         
  // Критическая ошибка
  Alert("Ошибка №",Error,". Дальнейшая работа советника невозможна."); 
  return(2);          // Сообщаем о критич. ошибке
  }
 
Example2:
¿Sería adecuada una función como ésta para la gestión de errores?

Algo es demasiado corto. Incluso éste tampoco es completo.

//*********************ф-ия обработки ошибок*************************|
int Fun_Error(int Error) 
{
      switch(Error)
   { // Преодолимые ошибки
   case 0: return(1);
   case 4: //Print("Торговый сервер занят. Пробуем ещё раз...");
   Sleep(500); // Простое решение
   return(1); // Выход из функции
   case 128:   //Истек срок ожидания совершения сделки
   return(1);
   case 129: //Print("Цена изменилась. Пробуем ещё раз...");
   return(1); // Выход из функции
   case 132: //Print("Рынок закрыт. Пробуем ещё раз...");
   Sleep(123000); // Это было сделано для робо. У них первые 2 минуты в понедельник рынок закрыт, а надо было ставить ордера в 00:00
   return(1); // Выход из функции
   case 135: //Print("Цена изменилась. Пробуем ещё раз...");
   RefreshRates(); // Обновим данные
   return(1); // Выход из функции
   case 136: //Print("Нет цен. Ждём новый тик...");
   while(RefreshRates()==false) // До нового тика
   Sleep(1); // Задержка в цикле
   return(1); // Выход из функции
   case 137: //Print("Брокер занят. Пробуем ещё раз...");
   Sleep(500); // Простое решение
   return(1); // Выход из функции
   case 138: //Print("Новые цены. Пробуем ещё раз...");
   Sleep(1); // Задержка в цикле
   return(1); // Выход из функции
   case 146: //Print("Подсистема торговли занята. Пробуем ещё...");
   Sleep(500); // Простое решение
   return(1); // Выход из функции
   case 4107: //Print("Неправильный параметр цены для торговой функции. Пробуем ещё...");
   Sleep(50); // Простое решение
   return(1); // Выход из функции
// Критические ошибки
   case 1:
   return(0);
   case 2: Alert("Общая ошибка. Перегрузите терминал и\или компьютер.");
   return(0); // Выход из функции
   case 5: Alert("Старая версия терминала.");
   //Work=false; // Больше не работать
   return(0); // Выход из функции
   case 64: Alert("Счет заблокирован.");
   //Work=false; // Больше не работать
   return(0); // Выход из функции
   case 130: Alert("Неправильные стопы.");
   return(0); // Выход из функции
   case 133: Alert("Торговля запрещена.");
   return(0); // Выход из функции
   case 134: Alert("Недостаточно денег для совершения операции.");
   return(0); // Выход из функции
   case 4051: Alert("Недопустимое значение параметра функции.");
   return(0); // Выход из функции
   case 4108: Alert("Неверный номер тикета.");
   return(0); // Выход из функции
   default: //Print("Возникла ошибка ",Error); // Другие варианты
   return(0); // Выход из функции
   }
}//******************************************************************|

En consecuencia, si la función devuelve 1, debemos intentar colocar una orden de nuevo; si devuelve 0, saldremos de la función para abrir órdenes.

 
Hola a todos, ¿alguien utiliza la depuración en MT4? En MT5 todo funciona aquí no va.
 

Ciudadanos, ¿pueden decirme por qué el terminal de Alpari no puede hacer un pedido?

La función OrderSend tiene el siguiente aspecto

ticket_b = OrderSend(Symbol(), OP_BUY, Lot_b, (MarketInfo (Symbol(), MODE_ASK)), 3, ((MarketInfo (Symbol(), MODE_ASK))-SL), ((MarketInfo (Symbol(), MODE_ASK))+TP), "V 5.11 market", Magic, 0, CLR_NONE);

SL = NormalizeDouble (StopLoss * RealPoint,Digits);
TP = NormalizeDouble (TakeProfit * RealPoint,Digits);

Параметры 
Lot_b
Magic

Объявлены и посчитаны ранее.

RealPoint посчитан и равен 0,1

No hay parámetros iguales a cero. Lo he comprobado.

La distancia mínima de parada y beneficio según las condiciones del terminal = 0,1.

El terminal genera el error 130 y escribe sobre un beneficio o un stop no válido.

Los parámetros SL y TP son 11 y 1 (tras la normalización), respectivamente.

En los terminales Aforex, Diven FX, ForexClub, AlfaForex - sin problemas con el mismo código.

 
fmv_for_a_way:

Ciudadanos, ¿pueden decirme por qué el terminal de Alpari no puede hacer un pedido?

La función OrderSend tiene el siguiente aspecto

No hay parámetros iguales a cero. Lo he comprobado.

La distancia mínima de parada y beneficio según las condiciones del terminal = 0,1.

El terminal genera el error 130 y escribe sobre un beneficio o un stop no válido.

Los parámetros SL y TP son 11 y 1 (tras la normalización), respectivamente.

En los terminales Aforex, Diven FX, ForexClub, AlfaForex - sin problemas con el mismo código.


comprar/vender sin stop y sin retirada sl=0;tp=0, luego modificar-->sl=100;tp=300
 
pako:

Compra/venta sin stop y despegue sl=0;tp=0, luego modificar-->sl=100;tp=300


La idea ya se me ha ocurrido por desesperación...

Sin embargo, la pregunta es por qué con todos los parámetros correctos el pedido no se realiza.

Como se trata de un gráfico de oro, los números 11 y 1 son bastante correctos. Traducido significa 10 y 110 pips.

He comprobado los precios y los parámetros de stop y profit. Hay exactamente 120 pips entre el beneficio y el stop, y por alguna razón el precio de apertura = 0,000.

 
2014.05.21 10:35:52.480 '6991883': order buy stop 0.25 XAUUSD opening at 1293.100 sl: 1282.100 tp: 1294.100 failed [Invalid S/L or T/P]

Al intentar colocar una orden pendiente no se obtiene nada ....

Esto es cada vez más milagroso.

 

¡Buenos días a todos!

¿Podría decirme la mejor manera de codificar la siguiente condición

Si todas las velas del 1 al 20 son bajistas sin excepción (el número de puntos entre la apertura y el cierre de cada vela no importa)

Para abrir un pedido.

No puedo leer nada más, sólo abrir una orden.