任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 607

 
你好,如果一个EA只设置挂单 而不跟单,它是否应该能够处理错误?
 
Example2:
你好,如果一个EA只设置挂单,它是否应该能够处理错误?

是的。

比如说

 
artmedia70:

是的。

比如说


这样一个函数是否适合用于错误处理?
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:
像这样的函数是否适合用于错误处理?

有些东西太短了。即使这个也不是完全成熟的。

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

相应地,如果该函数返回1,我们应该尝试再次下单;如果它返回0,我们将退出该函数的开单。

 
大家好,有人在MT4中使用调试功能吗?在MT5中,一切都在工作,但在这里却无法进行。
 

公民们,你们能告诉我为什么Alpari终端无法下订单吗?

OrderSend函数 看起来像这样

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

没有等于零的参数。我已经检查过了。

根据终端条件,最小止损和盈利距离=0.1。

终端产生错误130,并写下无效的利润或停止。

SL和TP参数分别为11和1(归一化后)。

在终端Aforex,Diven FX,ForexClub,AlfaForex - 相同的代码没有问题。

 
fmv_for_a_way:

公民们,你们能告诉我为什么Alpari终端无法下订单吗?

OrderSend函数看起来像这样

没有等于零的参数。我已经检查过了。

根据终端条件,最小止损和盈利距离=0.1。

终端产生错误130,并写下无效的利润或停止。

SL和TP参数分别为11和1(归一化后)。

在终端Aforex,Diven FX,ForexClub,AlfaForex - 相同的代码没有问题。


买入/卖出时不设止损和止盈sl=0;tp=0,然后修改-->sl=100;tp=300
 
pako:

买入/卖出不设止损和止盈sl=0;tp=0,然后修改-->sl=100;tp=300


出于无奈,我已经有了这个想法......

然而,问题是为什么所有的参数都正确的情况下,订单却没有下。

由于这是一个黄金图表,数字11和1是非常正确的。翻译过来就是10和110个点。

我检查了价格和止损及利润参数。盈利和止损之间正好有120点,由于某种原因,开盘价=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]

试图下一个挂单,也没有得到任何结果....。

越来越多的奇迹出现了。

 

大家好!

你能告诉我对以下条件进行编码的最佳方法 吗?

如果从1到20的所有 蜡烛图都是看跌的,没有例外(每个蜡烛图的开盘和收盘之间的点数并不重要)。

要打开一个订单。

我不能读别的东西,只是开了一个订单。