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 1146

Vitalie Postolache  
Андрей:

Esqueci-me, obrigado por sua atenção.


Um novo truque para mim. Aqui está o resultado.

O indicador ainda muda a coloração da tabela. Se você restaurar o padrão e bater através do iCustom, ele colorirá novamente o gráfico à sua própria maneira.

Isso significa que temos valores nos amortecedores, já é bom. Em seguida, tente encontrar o valor não na 1ª barra, mas um pouco mais longe, em 2-3 barras, ou vice versa, em 0. Você não pode dizer nada sem ter visto o código.
Ivan Denisov  
por favor expliquem por que quando se aumenta a etapa dos parâmetros durante a otimização o número de passagens na parte inferior direita do terminal não é reduzido, ou seja, o número é o mesmo que em uma otimização mais detalhada qual poderia ser a razão e o mesmo tempo que em uma otimização mais detalhada em geral não ajuda a reduzir o tempo de otimização por quê? e como acelerar a otimização em geral?
Valiantsin Karvat  

Cavalheiros, saudações!


Eu tenho lutado com o webrequest (get) por muito tempo, primeiro usando mql4 e agora usando mql5.

A solução é a seguinte: preciso de um onTick para copiar do site os preços de algumas cruzes exóticas. Meu corretor, infelizmente, não os tem. O exemplo da cruz está no site abaixo:

Por favor, ajude. Estou quase pronto para pagar pela solução deste problema: você pode imaginar até onde vai?))

Boa sorte a todos! BugRiver

Artiom Morochin  

Como obter uma variável do tipo string na EA, se a chamada de função dll retorna apenas o ponteiro para string

const char *sqlite3_sql(sqlite3_stmt *pStmt)


Link para a documentação

Ilya Prozumentov  
Valiantsin Karvat:

Cavalheiros, saudações!


Eu tenho lutado com o webrequest (get) por muito tempo, primeiro usando mql4 e agora usando mql5.

A solução é a seguinte: preciso de um onTick para copiar do site os preços de algumas cruzes exóticas. Meu corretor, infelizmente, não os tem. O exemplo da cruz está no site abaixo:

Por favor, ajude. Estou quase pronto para pagar pela solução deste problema: você pode imaginar até onde vai?))

Boa sorte a todos! BugRiver

/// Для MQL 4
// url - адрес страницы сайта
// timeot - время в течении которого будет ожидаться ответ (мс)
// webData - сообщение-ответ на запрос т.е. данные страницы сайта в виде текста
// cut - количество отбрасываемых символов от начала сообщения-ответа
///
// Функция возвращает - true в случае, если удалось получить сообщение-ответ на запрос.
bool ReadURL(const string url, int timeout, string &webData, int cut)
{
   char
   myMessage[],
   webMessage[];
   string sWebTitle;
   if(url == NULL)
   {
      Print("URL: NULL");
      return false;
   }
   ResetLastError();
// метод HTTP, url-адрес, cookie, referer, таймаут, массив тела HTTP-сообщения, размер массива data[] в байтах, массив с данными ответа сервера, заголовки ответа сервера
   WebRequest("GET", url, NULL, NULL, timeout, myMessage, 0, webMessage, sWebTitle);
   if(ArraySize(webMessage) == 0)
   {
      Print("В качестве ответа получено пустое сообщение.");
      Print("URL: ", url);
      return false;
   }
   webData = CharArrayToString(webMessage, cut);
   Print("URL: ", url);
   Print("Title: ", sWebTitle);
   return true;
}
Em seguida, você procura os dados necessários da variável que recebeu a mensagem - responda com a ajuda de funções de texto. É melhor visualizar a mensagem-resposta em seu navegador, ou seja, vá para a página desejada e abra o código fonte da página. Encontre ali os dados necessários e escreva um filtro único no programa.

Não tenho trabalhado com o Investing desta forma e acho que isto será problemático. Eles tornaram seu site especialmente lento para aqueles que não têm uma assinatura. Portanto, é melhor encontrar outra fonte de citações para leitura automática a partir do código do programa.

PS> Você não pode chamar WebRequest na ferramenta. Portanto, você terá que organizar a conexão entre o indy e o EA ou o indy e o roteiro em loop, para entregar os dados ao indy.
evgen_gal  
//variável
double ma = iCustom(NULL, 0, "EMA", MA_Period, Coef, MA_Shift, SetPrice, 0, 0);
// csi variável
bz duplo = iCustom(NULL, 0, "Bollinger Squeeze v8", triggerType, stochPeriod_trigger1, cciPeriod_trigger2,rsiPeriod_trigger3,6,0);
//fisher variável
double fi = iCustom(NULL, 0, "Fischer11", RangePeriods, PriceSmoothing,IndexSmoothing, Left_Right, Up_Down, 0,0);
se (Ask === ma && bz > 0 && fi > Koof_H)
{
OrderSend(Symbol(), OP_BUY, 1, Ask, Slippage, Stoploss , TakeProfit, "", magic, 0, Lime);
}
if (Bid === ma && bz < 0 && fi < Koof_L)
{
OrderSend(Symbol(), OP_SELL, 1, Bid, Slippage, Stoploss , TakeProfit, "", magic, 0, Red);
}

Eu fiz o código, ou melhor, uma paródia dele, durante meio dia de estudo e estudo, ele gera erro "valor de retorno de 'OrderSend' deve ser verificado".

Alguém pode me ajudar a descobrir isso?

Renat Akhtyamov  
evgen_gal:
//variável
double ma = iCustom(NULL, 0, "EMA", MA_Period, Coef, MA_Shift, SetPrice, 0, 0);
// csi variável
duplo bz = iCustom(NULL, 0, "Bollinger Squeeze v8", triggerType, stochPeriod_trigger1, cciPeriod_trigger2,rsiPeriod_trigger3,6,0);
//fisher variável
double fi = iCustom(NULL, 0, "Fischer11", RangePeriods,PriceSmoothing,IndexSmoothing,Left_Right,Up_Down,0,0);
se (Ask === ma && bz > 0 && fi > Koof_H)
{
OrderSend(Symbol(), OP_BUY, 1, Ask, Slippage, Stoploss , TakeProfit, "", magic, 0, Lime);
}
if (Bid === ma && bz < 0 && fi < Koof_L)
{
OrderSend(Symbol(), OP_SELL, 1, Bid, Slippage, Stoploss , TakeProfit, "", magic, 0, Red);
}

Eu fiz o código, ou melhor, uma paródia dele, durante meio dia de estudo e estudo, ele gera erro "valor de retorno de 'OrderSend' deve ser verificado".

Alguém pode me ajudar a descobrir e me dizer como criar uma EA?

Eu estou bem. Ainda é preciso ler sobre a função de tratamento de erros e acrescentar ao código.

https://www.mql5.com/ru/forum/64058

Функция обработки ошибок. Нужна помощь!
Функция обработки ошибок. Нужна помощь!
  • 2015.09.12
  • www.mql5.com
Как правильно использовать функцию обработки ошибок, чтобы при возникновении непреодолимой ошибки при отправки ордера, эксперт перестал делать запросы на отправку ордера.
Vitaly Muzichenko  
Renat Akhtyamov:
Está tudo bem. Tudo o que resta é ler sobre a função de tratamento de erros e adicioná-la ao código.

Ele não vai encontrar o erro, você lhe diz imediatamente:

 //ема переменая
 int result=-1;
     double ma = iCustom(NULL, 0, "EMA", MA_Period, Coef, MA_Shift, SetPrice, 0, 0); 
    // сси переменая 
     double bz = iCustom(NULL, 0, "Bollinger Squeeze v8", triggerType, stochPeriod_trigger1, cciPeriod_trigger2,rsiPeriod_trigger3,6,0);
    //фишер переменая 
     double fi = iCustom(NULL, 0, "Fischer11", RangePeriods, PriceSmoothing,IndexSmoothing, Left_Right, Up_Down, 0,0);
     
     if  (Ask == ma && bz > 0 && fi > Koof_H)
       {
      result= OrderSend(Symbol(), OP_BUY, 1, Ask, Slippage, Stoploss , TakeProfit, "", magic, 0, Lime);
      
        }
       if (Bid == ma && bz < 0 && fi < Koof_L)
       {
      result= OrderSend(Symbol(), OP_SELL, 1, Bid, Slippage, Stoploss , TakeProfit, "", magic, 0, Red);
       }
Renat Akhtyamov  
Vitaly Muzichenko :

Sim, ele não encontrará um erro, você imediatamente me diz:

OK.

após cada comando para abrir/fechar qualquer pedido, adicione esta linha:

 if (result< 0 && Fun_Error( GetLastError ())== 1 ){ return ( 0 );}

e coloque a função chamada após o código do EA:

 //+------------------------------------------------------------------+
//| ФУНКЦИЯ ОБРАБОТКИ ОШИБОК                                         |
//+------------------------------------------------------------------+
 int Fun_Error( int Error)                        
  {   switch (Error)
     {                                           // Преодолимые ошибки        
           case 0 :       return ( 0 );
           case 1 :       Print ( "Попытка изменить уже установленные значения такими же значениями." ); return ( 1 );
           case 2 :       Print ( "Общая ошибка. Прекратить все попытки торговых операций до выяснения обстоятельств." ); return ( 0 );
           case 3 :       Print ( "В торговую функцию переданы неправильные параметры." ); return ( 1 );
           case 4 :       Print ( "Торговый сервер занят.Пробуем ещё раз.." ); Sleep ( 3000 ); return ( 1 );
           case 5 :       Print ( "Старая версия клиентского терминала." ); return ( 0 );
           case 6 :       Print ( "Нет связи с торговым сервером." ); return ( 1 );
           case 7 :       Print ( "Недостаточно прав." ); return ( 1 );
           case 8 :       Print ( "Слишком частые запросы." ); return ( 1 );
           case 9 :       Print ( "Недопустимая операция нарушающая функционирование сервера." ); return ( 1 );
           case 64 :     Print ( "Счет заблокирован. Необходимо прекратить все попытки торговых операций." ); return ( 0 );
           case 65 :     Print ( "Неправильный номер счета." ); return ( 1 );
           case 128 :     Print ( "Истек срок ожидания совершения сделки." ); return ( 1 );
           case 129 :     Print ( "Неправильная цена bid или ask, возможно, ненормализованная цена." ); return ( 1 );
           case 130 :     Print ( "Слишком близкие стопы или неправильно рассчитанные или ненормализованные цены в стопах (или в цене открытия отложенного ордера)." ); return ( 1 );
           case 131 :     Print ( "Неправильный объем, ошибка в грануляции объема." ); return ( 1 );
           case 132 :     Print ( "Рынок закрыт." ); return ( 1 );
           case 133 :     Print ( "Торговля запрещена." ); return ( 0 );
           case 134 :     Print ( "Недостаточно денег для совершения операции." ); return ( 0 );
           case 135 :     Print ( "Цена изменилась. Пробуем ещё раз.." ); RefreshRates (); return ( 1 );
           case 136 :     Print ( "Нет цен. Ждём новый тик.." );
                         while ( RefreshRates ()== false )           // До нового тика            
                         Sleep ( 1 );
                         return ( 1 );
           case 137 :     Print ( "Брокер занят.Пробуем ещё раз.." ); Sleep ( 3000 ); return ( 1 );
           case 138 :     Print ( "Запрошенная цена устарела, либо перепутаны bid и ask." ); return ( 1 );
           case 139 :     Print ( "Ордер заблокирован и уже обрабатывается." ); return ( 1 );
           case 140 :     Print ( "Разрешена только покупка. Повторять операцию SELL нельзя." ); return ( 1 );
           case 141 :     Print ( "Слишком много запросов." ); return ( 1 );
           case 142 :     Print ( "Ордер поставлен в очередь." ); return ( 1 );
           case 143 :     Print ( "Ордер принят дилером к исполнению." ); return ( 1 );
           case 144 :     Print ( "Ордер аннулирован самим клиентом при ручном подтверждении сделки." ); return ( 1 );
           case 145 :     Print ( "Модификация запрещена, так как ордер слишком близок к рынку и заблокирован из-за возможного скорого исполнения." ); return ( 1 );
           case 146 :     Print ( "Подсистема торговли занята.Пробуем ещё.." ); Sleep ( 500 ); return ( 1 );
           case 147 :     Print ( "Использование даты истечения ордера запрещено брокером." ); return ( 1 );
           case 148 :     Print ( "Количество открытых и отложенных ордеров достигло предела, установленного брокером." ); return ( 1 );
           case 149 :     Print ( "Попытка открыть противоположную позицию к уже существующей в случае, если хеджирование запрещено." ); return ( 1 );
           case 4000 :   return ( 0 );
           case 4001 :   Print ( "Неправильный указатель функции." ); return ( 1 );
           case 4002 :   Print ( "Индекс массива - вне диапазона." ); return ( 1 );
           case 4003 :   Print ( "Нет памяти для стека функций." ); return ( 1 );
           case 4004 :   Print ( "Переполнение стека после рекурсивного вызова." ); return ( 1 );
           case 4005 :   Print ( "На стеке нет памяти для передачи параметров." ); return ( 1 );
           case 4006 :   Print ( "Нет памяти для строкового параметра." ); return ( 1 );
           case 4007 :   Print ( "Нет памяти для временной строки." ); return ( 1 );
           case 4008 :   Print ( "Неинициализированная строка." ); return ( 1 );
           case 4009 :   Print ( "Неинициализированная строка в массиве." ); return ( 1 );
           case 4010 :   Print ( "Нет памяти для строкового массива." ); return ( 1 );
           case 4011 :   Print ( "Слишком длинная строка." ); return ( 1 );
           case 4012 :   Print ( "Остаток от деления на ноль." ); return ( 1 );
           case 4013 :   Print ( "Деление на ноль." ); return ( 1 );
           case 4014 :   Print ( "Неизвестная команда." ); return ( 1 );
           case 4015 :   Print ( "Неправильный переход." ); return ( 1 );
           case 4016 :   Print ( "Неинициализированный массив." ); return ( 1 );
           case 4017 :   Print ( "Вызовы DLL не разрешены." ); return ( 1 );
           case 4018 :   Print ( "Невозможно загрузить библиотеку." ); return ( 1 );
           case 4019 :   Print ( "Невозможно вызвать функцию." ); return ( 1 );
           case 4020 :   Print ( "Вызовы внешних библиотечных функций не разрешены." ); return ( 1 );
           case 4021 :   Print ( "Недостаточно памяти для строки, возвращаемой из функции." ); return ( 1 );
           case 4022 :   Print ( "Система занята." ); return ( 1 );
           case 4050 :   Print ( "Неправильное количество параметров функции." ); return ( 1 );
           case 4051 :   Print ( "Недопустимое значение параметра функции." ); return ( 1 );
           case 4052 :   Print ( "Внутренняя ошибка строковой функции." ); return ( 1 );
           case 4053 :   Print ( "Ошибка массива." ); return ( 1 );
           case 4054 :   Print ( "Неправильное использование массива-таймсерии." ); return ( 1 );
           case 4055 :   Print ( "Ошибка пользовательского индикатора." ); return ( 1 );
           case 4056 :   Print ( "Массивы несовместимы." ); return ( 1 );
           case 4057 :   Print ( "Ошибка обработки глобальныех переменных." ); return ( 1 );
           case 4058 :   Print ( "Глобальная переменная не обнаружена." ); return ( 1 );
           case 4059 :   Print ( "Функция не разрешена в тестовом режиме." ); return ( 1 );
           case 4060 :   Print ( "Функция не подтверждена." ); return ( 1 );
           case 4061 :   Print ( "Ошибка отправки почты." ); return ( 1 );
           case 4062 :   Print ( "Ожидается параметр типа string." ); return ( 1 );
           case 4063 :   Print ( "Ожидается параметр типа integer." ); return ( 1 );
           case 4064 :   Print ( "Ожидается параметр типа double." ); return ( 1 );
           case 4065 :   Print ( "В качестве параметра ожидается массив." ); return ( 1 );
           case 4066 :   Print ( "Запрошенные исторические данные в состоянии обновления." ); return ( 1 );
           case 4067 :   Print ( "Ошибка при выполнении торговой операции." ); return ( 1 );
           case 4099 :   Print ( "Конец файла." ); return ( 1 );
           case 4100 :   Print ( "Ошибка при работе с файлом." ); return ( 1 );
           case 4101 :   Print ( "Неправильное имя файла." ); return ( 1 );
           case 4102 :   Print ( "Слишком много открытых файлов." ); return ( 1 );
           case 4103 :   Print ( "Невозможно открыть файл." ); return ( 1 );
           case 4104 :   Print ( "Несовместимый режим доступа к файлу." ); return ( 1 );
           case 4105 :   Print ( "Ни один ордер не выбран." ); return ( 1 );
           case 4106 :   Print ( "Неизвестный символ." ); return ( 1 );
           case 4107 :   Print ( "Неправильный параметр цены для торговой функции." ); return ( 1 );
           case 4108 :   Print ( "Неверный номер тикета." ); return ( 1 );
           case 4109 :   Print ( "Торговля не разрешена. Необходимо включить опцию Разрешить советнику торговать в свойствах эксперта." ); return ( 1 );
           case 4110 :   Print ( "Длинные позиции не разрешены. Необходимо проверить свойства эксперта." ); return ( 1 );
           case 4111 :   Print ( "Короткие позиции не разрешены. Необходимо проверить свойства эксперта." ); return ( 1 );
           case 4200 :   Print ( "Объект уже существует." ); return ( 1 );
           case 4201 :   Print ( "Запрошено неизвестное свойство объекта." ); return ( 1 );
           case 4202 :   Print ( "Объект не существует." ); return ( 1 );
           case 4203 :   Print ( "Неизвестный тип объекта." ); return ( 1 );
           case 4204 :   Print ( "Нет имени объекта." ); return ( 1 );
           case 4205 :   Print ( "Ошибка координат объекта." ); return ( 1 );
           case 4206 :   Print ( "Не найдено указанное подокно." ); return ( 1 );
           case 4207 :   Print ( "Ошибка при работе с объектом." ); return ( 1 );
           return ( 0 );
     }
     return ( 0 );  
  }