포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 1146

 

잊고 있었는데 관심 가져주셔서 감사합니다


나를 위한 새로운 초점. 여기 결과가 있습니다

지표는 차트의 색상도 변경합니다. 표준을 복원하고 iCustom을 노크하면 자체 방식으로 차트를 다시 그립니다.
 
Андрей :

잊고 있었는데 관심 가져주셔서 감사합니다


나를 위한 새로운 초점. 여기 결과가 있습니다

지표는 차트의 색상도 변경합니다. 표준을 복원하고 iCustom을 노크하면 자체 방식으로 차트를 다시 그립니다.

, 버퍼에 이미 좋은 값 이 있습니다. 그런 다음 1 bar가 아닌 2-3에서 또는 그 반대의 경우 0에서 값을 찾으십시오. 코드를 보지 않고는 아무 말도 할 수 없습니다.
 
얘들아 최적화 시 파라미터의 단계를 높일 때 단말 우측 하단의 패스 수가 줄어들지 않는 이유를 좀 더 자세히 최적화 했을 때와 같은 수치인 이유를 설명해달라. 그 이유와 시간은 보다 세부적인 최적화와 마찬가지로 일반적으로 이 단계는 최적화 시간을 줄이는 데 도움이 되지 않습니다. 이유는 무엇입니까? 그리고 일반적으로 최적화 속도를 높이는 방법은 무엇입니까?
 

주님, 안녕하세요!


나는 오랫동안 webrequest (get)와 싸워왔고, 처음에는 mql4에서, 지금은 mql5에서 주기적으로 문제 해결을 연기했습니다.

그것은 다음으로 구성됩니다. 칠면조의 OnTick 사이트에서 여러 이국적인 십자가의 가격을 복사해야합니다. 내 중개인은 불행히도 그것들을 가지고 있지 않습니다. 아래 사이트에 있는 십자가의 예:

도와주세요. 이 문제를 해결하기 위해 거의 비용을 지불할 준비가 되었습니다. 이 문제가 얼마나 진행되었는지 상상할 수 있습니까?))

모든 성공! 버그리버

 

dll 함수 호출이 문자열에 대한 포인터만 반환하는 경우 Expert Advisor에서 문자열 유형 변수를 가져오는 방법

 const char *sqlite3_sql(sqlite3_stmt *pStmt)


문서 링크

 
Valiantsin Karvat :

주님, 안녕하세요!


나는 오랫동안 webrequest (get)와 싸워왔고, 처음에는 mql4에서, 지금은 mql5에서 주기적으로 문제 해결을 연기했습니다.

그것은 다음으로 구성됩니다. 칠면조의 OnTick 사이트에서 여러 이국적인 십자가의 가격을 복사해야합니다. 내 중개인은 불행히도 그것들을 가지고 있지 않습니다. 아래 사이트에 있는 십자가의 예:

도와주세요. 이 문제를 해결하기 위해 거의 비용을 지불할 준비가 되었습니다. 이 문제가 얼마나 진행되었는지 상상할 수 있습니까?))

모든 성공! 버그리버

 /// Для 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 ;
}
그런 다음 응답 메시지를 받은 변수에서 텍스트 함수를 사용하여 필요한 데이터를 찾습니다. 미리 브라우저에서 응답 메시지를 보는 것이 좋습니다. 즉, 원하는 페이지로 이동하여 페이지의 소스 코드를 여는 것입니다. 거기에서 필요한 데이터를 찾고 프로그램에서 고유한 필터를 작성하십시오.

나는 이런 식으로 Investing과 일한 적이 없으며 문제가 될 것이라고 생각합니다. 그들은 특히 구독이없는 사람들을 위해 사이트를 느리게 만들었습니다. 따라서 프로그램 코드에서 자동으로 읽기 위한 다른 인용 부호 소스를 찾는 것이 좋습니다.

PS> 터키에서는 WebRequest 를 호출할 수 없습니다. 따라서 칠면조에 데이터를 전달하려면 칠면조와 고문 또는 칠면조와 루프 스크립트 간의 연결을 구성해야 합니다.
 
//에마 변수
이중 ma = iCustom(NULL, 0, "EMA", MA_Period, 계수, MA_Shift, SetPrice, 0, 0);
// CSS 변수
더블 bz = iCustom(NULL, 0, "볼린저 스퀴즈 v8", triggerType, stochPeriod_trigger1, cciPeriod_trigger2, rsiPeriod_trigger3,6,0);
//피셔 체인지
이중 fi = iCustom(NULL, 0, "Fischer11", RangePeriods, PriceSmoothing,IndexSmoothing, Left_Right, Up_Down, 0,0);
if (질문 == ma && bz > 0 && fi > Koof_H)
{
OrderSend(Symbol(), OP_BUY, 1, Ask, Slippage, Stoploss, TakeProfit, "", magic, 0, Lime);
}
if (입찰가 == ma && bz < 0 && fi < Koof_L)
{
OrderSend(Symbol(), OP_SELL, 1, Bid, Slippage, Stoploss, TakeProfit, "", magic, 0, Red);
}

코드를 만들었는데 반나절 공부하고 패러디하는 게 나을 것 같은데 "'OrderSend'의 반환 값을 확인해야 합니다"라는 오류가 나옵니다.

아무도 그것을 알아낼 수 있습니까? 조언자를 만드는 방법을 제안하십시오.

 
evgen_gal :
//에마 변수
이중 ma = iCustom(NULL, 0, "EMA", MA_Period, 계수, MA_Shift, SetPrice, 0, 0);
// CSS 변수
더블 bz = iCustom(NULL, 0, "볼린저 스퀴즈 v8", triggerType, stochPeriod_trigger1, cciPeriod_trigger2, rsiPeriod_trigger3,6,0);
//피셔 체인지
이중 fi = iCustom(NULL, 0, "Fischer11", RangePeriods, PriceSmoothing,IndexSmoothing, Left_Right, Up_Down, 0,0);
if (질문 == ma && bz > 0 && fi > Koof_H)
{
OrderSend(Symbol(), OP_BUY, 1, Ask, Slippage, Stoploss, TakeProfit, "", magic, 0, Lime);
}
if (입찰가 == ma && bz < 0 && fi < Koof_L)
{
OrderSend(Symbol(), OP_SELL, 1, Bid, Slippage, Stoploss, TakeProfit, "", magic, 0, Red);
}

코드를 만들었는데 반나절 공부하고 패러디하는 게 나을 것 같은데 "'OrderSend'의 반환 값을 확인해야 합니다"라는 오류가 나옵니다.

아무도 그것을 알아낼 수 있습니까? 조언자를 만드는 방법을 제안하십시오.

괜찮은. 오류 처리 기능에 대해 읽고 코드에 추가해야 합니다.

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

Функция обработки ошибок. Нужна помощь!
Функция обработки ошибок. Нужна помощь!
  • 2015.09.12
  • www.mql5.com
Как правильно использовать функцию обработки ошибок, чтобы при возникновении непреодолимой ошибки при отправки ордера, эксперт перестал делать запросы на отправку ордера.
 
Renat Akhtyamov :
괜찮은. 오류 처리 기능에 대해 읽고 코드에 추가해야 합니다.

예, 그는 오류를 찾지 못할 것입니다. 즉시 저에게 말합니다.

 //ема переменая
 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);
       }
 
Vitaly Muzichenko :

예, 그는 오류를 찾지 못할 것입니다. 즉시 저에게 말합니다.

확인.

주문을 열거나 닫는 각 명령 뒤에 다음 줄을 추가하십시오.

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

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 );  
  }