Нужно переписать две функции на mql5

Работа завершена

Время выполнения 13 часов
Отзыв от заказчика
Работа выполнена быстро и качественно. Рекомендую!

Техническое задание

Добрый день! Нужно переписать две функции с mql4 на mql5.

 

Первая функция для отправки данных на сайт: 

//+------------------------------------------------------------------+
//|                                                 InetFunction.mq4 |
//|                                 Copyright © 2011, XrustSolution. |
//|                                           mail: [email]xrustx@gmail.com[/email] |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|     Defines                                                      |
//+------------------------------------------------------------------+
#define HTTP_QUERY_CONTENT_LENGTH 0x00000005
#define HTTP_QUERY_FLAG_NUMBER    0x20000000
//----
#define INTERNET_OPEN_TYPE_DIRECT       0
#define INTERNET_OPEN_TYPE_PRECONFIG    0x00000000   // use registry configuration
#define INTERNET_FLAG_RELOAD            0x80000000
#define INTERNET_FLAG_NO_CACHE_WRITE    0x04000000
#define INTERNET_FLAG_PRAGMA_NOCACHE    0x00000100
//----
#define AGENT "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)"
//+------------------------------------------------------------------+
//|     Export Function from WINAPI                                    |
//+------------------------------------------------------------------+
#import "wininet.dll"
        int InternetAttemptConnect (int x);
        int InternetOpenA                                       ( string sAgent, int lAccessType, string sProxyName, string sProxyBypass, int lFlags );
        int InternetOpenUrlA                            ( int hInternetSession, string sUrl, string sHeaders, int lHeadersLength, int lFlags, int lContext );
        int InternetReadFile                            ( int hFile, int& lpvBuffer[], int lNumBytesToRead, int& lNumberOfBytesRead[] );
        int InternetCloseHandle                 ( int hInet );
        int InternetQueryDataAvailable  ( int hFile, int& lpdwNumberOfBytesAvailable[], int dwFlags, int dwContext );
        int HttpQueryInfoA                                      ( int hRequest, int dwInfoLevel, int& lpvBuffer[], int& lpdwBufferLength[], int& lpdwReserved[] );


//+------------------------------------------------------------------+
//|                                 Function  :         InetToString |
//|                                 Copyright © 2010, XrustSolution. |
//|                                           mail: xrustx@gmail.com |
//+------------------------------------------------------------------+
int InetToString(string fUrl, string &out)
{
Print("URL :",fUrl);
Print("IN DATA",out);
   if(!IsDllsAllowed()){
     Alert("Must be configured to allow the use of DLL");
     return(1001);
   }
   int rv = InternetAttemptConnect(0);
   if(rv != 0){
     Print("Error when calling InternetAttemptConnect ()");
     return(1002);
   }
   int hSession = InternetOpenA(AGENT, INTERNET_OPEN_TYPE_DIRECT, "0", "0", 0);
   if(hSession <= 0){
     Print("Error when calling InternetOpenA()");
     return(1003);         
   }    
        int hReq = InternetOpenUrlA(hSession, fUrl, "0", 0,
                                                                        INTERNET_FLAG_NO_CACHE_WRITE |
                                                                        INTERNET_FLAG_PRAGMA_NOCACHE |
                                                                        INTERNET_FLAG_RELOAD, 0
                                                                        );
   if(hReq <= 0){
     Print("Error when calling InternetOpenUrlA()");
     InternetCloseHandle(hSession);
     return(1004);
   }
   int cBuffer[256];
   ArrayInitialize(cBuffer,0);
   int dwBytesRead[1]; 
   ArrayInitialize(dwBytesRead,0);
   string TXT = "";
   while(!IsStopped()){
        bool bResult = InternetReadFile(hReq, cBuffer, 1024, dwBytesRead);
        if(dwBytesRead[0] == 0)break;
        string text = "";   
        for(int i = 0; i < 256; i++){
                text = text + CharToStr(cBuffer[i] & 0x000000FF);
                        if(StringLen(text) == dwBytesRead[0])break;
                        text = text + CharToStr(cBuffer[i] >> 8 & 0x000000FF);
                        if(StringLen(text) == dwBytesRead[0])break;
                text = text + CharToStr(cBuffer[i] >> 16 & 0x000000FF);
                if(StringLen(text) == dwBytesRead[0])break;
                text = text + CharToStr(cBuffer[i] >> 24 & 0x000000FF);
                if(StringLen(text) == dwBytesRead[0])break;
                }
        TXT = TXT + text;
        Sleep(1);
        }
   if(StringFind(TXT,"<html>",0)>=0||StringFind(TXT,"<HTML>",0)>=0||StringFind(TXT,"<title>",0)>=0||StringFind(TXT,"<head>",0)>=0){
        if(StringFind(TXT,">404",0)>=0){return(404);}
   }  
   out = TXT;  
        InternetCloseHandle(hReq);
        InternetCloseHandle(hSession);  
        //Print("ServerAnswer:",out);                                                                           
        return(0);         
}

И вторая функция для перелогина счетов в МТ4, ее тоже нужно переписать на MQL5, если это возможно.

#import "user32.dll"
  int GetParent( int hWnd );
  int GetDlgItem( int hDlg, int nIDDlgItem );
  int GetLastActivePopup( int hWnd );
#import
 
#define VK_HOME 0x24
#define VK_DOWN 0x28
#define VK_ENTER 0x0D

extern int Amount = 64; // Количество счетов в закладке Избранное окна Навигатор
extern int Pause  = 30; // Пауза между переключениями торговых счетов

int start()
{  
 int i;
  
  Pause *= 1000;
 
  for (i = 1; i <= Amount; i++)
  {
    Login(i);
    Sleep(Pause);

//здесь остальной код
  }
   return(0);
}

//+------------------------------------------------------------------+
//| Подключается к счету, расположенному в строчке номер Num         |
//| в закладке Избранное окна Навигатор                              |
//+------------------------------------------------------------------+
void Login( int Num )
{
   int hwnd = WindowHandle(Symbol(), Period());
   int hwnd_parent = 0;
 
   while (!IsStopped())
   {
      hwnd = GetParent(hwnd);
      
      if (hwnd == 0)
        break;
        
      hwnd_parent = hwnd;
   }
   
   if (hwnd_parent != 0)  // нашли главное окно
   {
     hwnd = GetDlgItem(hwnd_parent, 0xE81C); // нашли Избранное окна Навигатор
     hwnd = GetDlgItem(hwnd, 0x52);
     hwnd = GetDlgItem(hwnd, 0x8A70);
     
     PostMessageA(hwnd, WM_KEYDOWN, VK_HOME,0); // верхняя строчка закладки Избранное окна Навигатор
     
     while (Num > 1)  
     {
       PostMessageA(hwnd, WM_KEYDOWN,VK_DOWN, 0); // сместились на нужную строчку
       Num--;
     }
 
     PostMessageA(hwnd, WM_KEYDOWN, VK_ENTER, 0);  // логин
     Sleep(1000);                                  // выждали
     
     hwnd = GetLastActivePopup(hwnd_parent);  // нашли форму логина
     PostMessageA(hwnd, WM_KEYDOWN, VK_ENTER, 0); // залогинились
   }
 
  return;
}

 В профиле на счету пока что есть только 5$ начисленных сайтом, после выполнения задания пополню счет и рассчитаюсь за работу.

Откликнулись

1
Разработчик 1
Оценка
(336)
Проекты
620
38%
Арбитраж
39
23% / 64%
Просрочено
93
15%
Свободен
2
Разработчик 2
Оценка
(62)
Проекты
140
46%
Арбитраж
19
42% / 16%
Просрочено
32
23%
Свободен
Похожие заказы
Техническое задание для разработки торгового эксперта (робота) для терминала MetaTrader . 1. Терминал MT 4 или MT 5. МТ5 2. Как Вы хотите назвать эксперта (не обязательно, но желательно) 1-24 3. Опишите как можно подробнее идею своей стратегии: Открытие сделок по сигналам «1», «0», «-1» получаемых из файла Ексель. - какие ордера используются, рыночные или отложенные - сколько ордеров открываются
Рассмотрю любые стратегии, с любой прибылью, с кодом или без. Для удобства пожалуйста предоставьте информацию по бэктэстам с 2018 года: · Чистая прибыль (средняя) за год в % к начальному депозиту (лучше для фиксированного лота, а если нет, то укажите что прибыль/просадка с учетом сложного процента) · Максимальная просадка по средствам за год или сколько сливов или сколько сработало SL · Какие
Нужен специалист из города Ростов-на-Дону для написания советника все подробности при личной встрече, советник должен совершать автоматические сделки в обе стороны BAY и SELL каждые 400 пунктов, каждая третья сделка должна быть больше на один цент больше предыдущей
1. Понимание экспоненциальной и линейной функций: - Экспоненциальная функция имеет вид: y = a * b^x, где a - начальное значение, b - основание экспоненты. - Линейная функция имеет вид: y = mx + b, где m - коэффициент наклона, b - свободный член. 2. Определение целевых значений: - Необходимо определить, к каким значениям на линейном графике должны соответствовать точки на экспоненциальном графике. 3. Решение
Необходимо модифицировать советник под новое обновление торгового терминала МТ4 (Bulid 1420). До последнего обновления советник отлично работал, без нареканий, однако после обновления МТ4 выскакивает ошибка "cannot load". Готов к любым рекомендациям и решениям проблемы Нужно исходный файл советника .ех4 адаптировать под мт4 версии 1420. Файл скину после утверждения исполнителя. На данный момент, после обновления мт4
Доброго дня дорогие разработчики. Требуется написать несложный советник который будет открывать ордера по началу новой свечи с заданным TP и SL. В случае закрытия по SL советник будет открывать ордер увеличеного обьема в обратную сторону и так до определенного уровня просадки. Подробнее опишу в полном ТЗ
Нужен бот на основе двух индикаторов: Naradaya и MA. Суть в пересечение полным телом одной свечи двух верних/нижних линий канала - подаётся сигнал либо открывается лот. С возможностью настройки выставления автоматических SL и TP. Более подробно напишу позже
Есть готовый софт для внутри биржевого арбитража, однако из-за недостаточной скорости совершения одного цикла, постоянно проходит проскальзывание в связи с чем все сделки убыточные. Проводились тесты на демо счете и там все работало прекрасно, на реальном же счете чего-то не хватает. Нужно оптимизировать софт либо найти решения, для увеличения скорости цикла. На данный момент скорость одного цикла 800 мс
Нужен скрипт или советник. В программе заложены будут как сигналы так и данные индикаторов. В этом скрипте/советнике или возможно программе, будут различные индикаторы такие как Стохастик, RSI,RVI, MACD, Momentum, MFI, OBV, A/D, а также несколько Muving, BollingerB, ParabolicSAR, Semafor, также учитываться точки Pivot, линии тренда и уровни поддержки/сопротивления. Необходимо чтобы вышеуказанные индикаторы давали
Необходимо модифицировать советник под новое обновление торгового терминала МТ4 (Bulid 1420). До последнего обновления советник отлично работал, без нареканий, однако после обновления МТ4 выскакивает ошибка "cannot load". Готов к любым рекомендациям и решениям проблемы

Информация о проекте

Бюджет
10 - 50 USD
Исполнителю
9 - 45 USD
Сроки выполнения
от 2 до 15 дн.