Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 607

 
Bonjour, si un EA ne fait que définir des ordres en attente et ne les suit pas, doit-il être capable de gérer les erreurs ?
 
Example2:
Bonjour, si un EA ne fixe que des ordres en attente, doit-il être capable de gérer les erreurs ?

Oui.

Par exemple.

 
artmedia70:

Oui.

Par exemple.


Une telle fonction conviendrait-elle pour la gestion des erreurs ?
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:
Une fonction de ce type conviendrait-elle pour la gestion des erreurs ?

Quelque chose est trop court. Même celui-ci n'est pas à part entière non plus.

//*********************ф-ия обработки ошибок*************************|
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); // Выход из функции
   }
}//******************************************************************|

Par conséquent, si la fonction renvoie 1, nous devrions essayer de placer un ordre à nouveau ; si elle renvoie 0, nous quitterons la fonction pour les ordres d'ouverture.

 
Bonjour à tous, quelqu'un utilise-t-il le débogage dans MT4 ? Dans MT5 tout fonctionne ici ne va pas.
 

Citoyens, pouvez-vous me dire pourquoi le terminal Alpari est incapable de passer un ordre ?

La fonction OrderSend ressemble à ceci

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

Il n'y a pas de paramètres égaux à zéro. Je l'ai vérifié.

La distance minimale d'arrêt et de profit selon les conditions du terminal = 0,1.

Le terminal génère l'erreur 130 et écrit sur un profit ou un stop invalide.

Les paramètres SL et TP sont respectivement 11 et 1 (après normalisation).

Sur les terminaux Aforex, Diven FX, ForexClub, AlfaForex - aucun problème avec le même code.

 
fmv_for_a_way:

Citoyens, pouvez-vous me dire pourquoi le terminal Alpari est incapable de passer un ordre ?

La fonction OrderSend ressemble à ceci

Il n'y a pas de paramètres égaux à zéro. Je l'ai vérifié.

La distance minimale d'arrêt et de profit selon les conditions du terminal = 0,1.

Le terminal génère l'erreur 130 et écrit sur un profit ou un stop invalide.

Les paramètres SL et TP sont respectivement 11 et 1 (après normalisation).

Sur les terminaux Aforex, Diven FX, ForexClub, AlfaForex - aucun problème avec le même code.


acheter/vendre sans stop et sans prise en charge sl=0;tp=0, puis modifier-->sl=100;tp=300
 
pako:

Acheter/vendre sans stop et sans prise en charge sl=0;tp=0, puis modifier-->sl=100;tp=300


L'idée m'est déjà venue, par désespoir...

Cependant, la question est de savoir pourquoi, avec tous les paramètres corrects, une commande n'est pas passée.

Comme il s'agit d'une carte de l'or, les chiffres 11 et 1 sont tout à fait corrects. Traduit, cela signifie 10 et 110 pips.

J'ai vérifié les prix et les paramètres de stop et de profit. Il y a exactement 120 pips entre le profit et le stop, et pour une raison quelconque le prix d'ouverture = 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]

La tentative de placer un ordre en attente n'a rien donné non plus.....

C'est de plus en plus miraculeux.

 

Bonne journée à tous !

Pouvez-vous me dire quelle est la meilleure façon de coder la condition suivante

Si tous les chandeliers de 1 à 20 sont baissiers sans exception (le nombre de points entre l'ouverture et la fermeture de chaque chandelier n'a pas d'importance).

Pour ouvrir une commande.

Je ne peux rien lire d'autre, juste ouvrir une commande.

Raison: