Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 607

 
Olá, se um EA só define ordens pendentes e não as segue, deveria ser capaz de lidar com erros?
 
Example2:
Olá, se um EA só define ordens pendentes, será que ele deve ser capaz de lidar com erros?

Sim.

Por exemplo.

 
artmedia70:

Sim.

Por exemplo.


Tal função seria adequada para o tratamento de erros?
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á que uma função como esta seria adequada para o tratamento de erros?

Algo é muito curto. Mesmo esta também não está completa.

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

Assim, se a função retornar 1, devemos tentar colocar um pedido novamente; se retornar 0, sairemos da função para abrir pedidos.

 
Olá a todos, alguém está usando a depuração no MT4? No MT5 tudo está funcionando aqui não está indo bem.
 

Cidadãos, vocês podem me dizer por que o terminal Alpari não consegue fazer um pedido?

A função OrderSend tem este 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

Não há parâmetros iguais a zero. Eu o verifiquei.

A distância mínima de parada e de lucro de acordo com as condições do terminal = 0,1.

O terminal gera erro 130 e escreve sobre um lucro ou parada inválida.

Os parâmetros SL e TP são 11 e 1 (após a normalização), respectivamente.

Nos terminais Aforex, Diven FX, ForexClub, AlfaForex - sem problemas com o mesmo código.

 
fmv_for_a_way:

Cidadãos, vocês podem me dizer por que o terminal Alpari não consegue fazer um pedido?

A função OrderSend tem este aspecto

Não há parâmetros iguais a zero. Eu o verifiquei.

A distância mínima de parada e de lucro de acordo com as condições do terminal = 0,1.

O terminal gera erro 130 e escreve sobre um lucro ou parada inválida.

Os parâmetros SL e TP são 11 e 1 (após a normalização), respectivamente.

Nos terminais Aforex, Diven FX, ForexClub, AlfaForex - sem problemas com o mesmo código.


comprar/vender sem parar e retirar sl=0;tp=0, depois modificar-->sl=100;tp=300
 
pako:

Comprar/vender sem parar e descolar sl=0;tp=0, depois modificar-->sl=100;tp=300


O pensamento já me ocorreu por desespero...

Entretanto, a questão é por que com todos os parâmetros corretos o pedido não é feito.

Como este é um gráfico dourado, os números 11 e 1 são bastante corretos. Traduzido significa 10 e 110 pips.

Verifiquei os preços e os parâmetros de parada e lucro. Há exatamente 120 pips entre o lucro e a parada, e por alguma razão o preço de abertura = 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]

A tentativa de fazer um pedido pendente também não trouxe nada....

Está se tornando cada vez mais milagroso.

 

Bom dia a todos!

Você poderia me dizer qual é a melhor maneira de codificar a seguinte condição

Se todos os castiçais de 1 a 20 são de baixa sem exceção (o número de pontos entre a abertura e o fechamento de cada candelabro não importa)

Para abrir um pedido.

Eu não consigo ler mais nada, basta abrir um pedido.