Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 607

 
Hallo, wenn ein EA nur Pending Orders setzt und ihnen nicht folgt, sollte er dann in der Lage sein, Fehler zu behandeln?
 
Example2:
Hallo, wenn ein EA nur schwebende Aufträge setzt, sollte es in der Lage sein, Fehler zu behandeln?

Ja.

Zum Beispiel.

 
artmedia70:

Ja.

Zum Beispiel.


Wäre eine solche Funktion für die Fehlerbehandlung geeignet?
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:
Wäre eine Funktion wie diese für die Fehlerbehandlung geeignet?

Etwas ist zu kurz. Auch dieser ist nicht vollwertig.

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

Wenn die Funktion also 1 zurückgibt, sollten wir erneut versuchen, einen Auftrag zu erteilen; wenn sie 0 zurückgibt, verlassen wir die Funktion für offene Aufträge.

 
Hallo zusammen, benutzt jemand Debugging in MT4? In MT5 funktioniert alles, hier geht es nicht.
 

Bürgerinnen und Bürger, können Sie mir sagen, warum das Alpari-Terminal nicht in der Lage ist, eine Bestellung aufzugeben?

Die Funktion OrderSend sieht wie folgt aus

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

Es gibt keine Parameter, die gleich Null sind. Ich habe es überprüft.

Der minimale Haltestellen- und Gewinnabstand gemäß den Terminalbedingungen = 0,1.

Das Terminal erzeugt den Fehler 130 und schreibt über einen ungültigen Gewinn oder Stopp.

SL- und TP-Parameter sind 11 bzw. 1 (nach Normalisierung).

Auf den Terminals Aforex, Diven FX, ForexClub, AlfaForex - keine Probleme mit dem gleichen Code.

 
fmv_for_a_way:

Bürgerinnen und Bürger, können Sie mir sagen, warum das Alpari-Terminal nicht in der Lage ist, eine Bestellung aufzugeben?

Die Funktion OrderSend sieht wie folgt aus

Es gibt keine Parameter, die gleich Null sind. Ich habe es überprüft.

Der minimale Haltestellen- und Gewinnabstand gemäß den Terminalbedingungen = 0,1.

Das Terminal erzeugt den Fehler 130 und schreibt über einen ungültigen Gewinn oder Stopp.

SL- und TP-Parameter sind 11 bzw. 1 (nach Normalisierung).

Auf den Terminals Aforex, Diven FX, ForexClub, AlfaForex - keine Probleme mit dem gleichen Code.


Kauf/Verkauf ohne Stop und Takeaway sl=0;tp=0, dann ändern-->sl=100;tp=300
 
pako:

Kauf/Verkauf ohne Stop und Takeout sl=0;tp=0, dann ändern-->sl=100;tp=300


Der Gedanke ist mir schon aus Verzweiflung gekommen...

Es stellt sich jedoch die Frage, warum bei Vorliegen aller korrekten Parameter kein Auftrag erteilt wird.

Da es sich um eine Goldkarte handelt, sind die Zahlen 11 und 1 durchaus korrekt. Übersetzt bedeutet dies 10 und 110 Pips.

Ich habe die Preise und die Parameter für Stopp und Gewinn überprüft. Zwischen dem Gewinn und dem Stop liegen genau 120 Pips, und aus irgendeinem Grund ist der Eröffnungskurs = 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]

Der Versuch, einen schwebenden Auftrag zu platzieren, brachte entweder nichts....

Es wird immer wundersamer.

 

Guten Tag zusammen!

Können Sie mir bitte sagen, wie ich die folgende Bedingung am besten kodieren kann

Wenn alle Kerzen von 1 bis 20 ausnahmslos bärisch sind (die Anzahl der Punkte zwischen der Eröffnung und der Schließung jeder Kerze spielt keine Rolle)

Um eine Bestellung zu eröffnen.

Ich kann nichts anderes lesen, nur eine Bestellung öffnen.