Создаем мультивалютный советник

Программирование прибыли: от азов к секретам мастерства. Читайте, спрашивайте, делитесь опытом.
Бонус за сообщение 0.5$
Ответственный Модератор - Haos

Создаем мультивалютный советник

Сообщение ВЯЧЕСЛАВПЕТРОВ » 18 июн 2017, 10:31

У меня вопрос. Командой я получил данные в переменную и записал в файл как теперь обработать информацию чтобы извлечь необходимое.
Код: выделить все
string getcommunityoutlookreEURUSD = Request("https://www.myfxbook.com/api/get-community-outlook.xml?session="+session, "symbols");
   //---
   Print("Ответ сервера \n",
           "session_id: ", session, "\n",
           "my account name: ", my_account_name, "\n",
           "Реальные счета: ",getcommunityoutlookre  );
//---   
int Handle;
string File_Name="OrdersReport.csv";
Handle=FileOpen(File_Name,FILE_CSV|FILE_WRITE,";");//Открытие файла
   if(Handle==-1)                      // Неудача при открытии файла
     {
      Alert("Ошибка при открытии файла. ",// Сообщение об ошибке
              "Возможно, файл занят другим приложением");
      PlaySound("Bzrrr.wav");          // Звуковое сопровождение
                               // Выход из start()     
     }
     int Qnt_Symb;
     Qnt_Symb=FileWrite(Handle,getcommunityoutlookreEURUSD);//Запись в файл
      if(Qnt_Symb < 0)                 // Если не получилось
        {
         Alert("Ошибка записи в файл ",GetLastError());// Сообщение
         PlaySound("Bzrrr.wav");       // Звуковое сопровождение
         FileClose( Handle );          // Закрываем файл
                             // Выход из start()     
        }
     FileClose( Handle );                // Закрываем файл
//---   
   return(0);



Ответ с сайта .
Код: выделить все
                <symbol>
                    <name>EURUSD</name>
                                        <shortPercentage>71</shortPercentage>
                    <longPercentage>28</longPercentage>
                    <shortVolume>19685.55</shortVolume>
                    <longVolume>7894.41</longVolume>
                    <longPositions>20696</longPositions>
                    <shortPositions>53547</shortPositions>
                    <totalPositions>27579</totalPositions>
                    <avgShortPrice>1.0962</avgShortPrice>
                    <avgLongPrice>1.1227</avgLongPrice>
                                    </symbol>
                            <symbol>
                    <name>GBPUSD</name>
                                        <shortPercentage>67</shortPercentage>
                    <longPercentage>32</longPercentage>
                    <shortVolume>3473.44</shortVolume>
                    <longVolume>1688.27</longVolume>
                    <longPositions>8219</longPositions>
                    <shortPositions>15688</shortPositions>
                    <totalPositions>5161</totalPositions>
                    <avgShortPrice>1.2650</avgShortPrice>
                    <avgLongPrice>1.3027</avgLongPrice>
                                    </symbol>
                            <symbol>
                    <name>USDJPY</name>
                                        <shortPercentage>51</shortPercentage>
                    <longPercentage>48</longPercentage>
                    <shortVolume>2301.80</shortVolume>
                    <longVolume>2138.38</longVolume>
                    <longPositions>11325</longPositions>
                    <shortPositions>9552</shortPositions>
                    <totalPositions>4440</totalPositions>
                    <avgShortPrice>109.8113</avgShortPrice>
                    <avgLongPrice>112.1883</avgLongPrice>
                                    </symbol>
                            <symbol>
                    <name>GBPJPY</name>
                                        <shortPercentage>45</shortPercentage>
                    <longPercentage>54</longPercentage>
                    <shortVolume>965.67</shortVolume>
                    <longVolume>1155.53</longVolume>
                    <longPositions>4293</longPositions>
                    <shortPositions>3710</shortPositions>
                    <totalPositions>2121</totalPositions>
                    <avgShortPrice>139.9925</avgShortPrice>
                    <avgLongPrice>143.2138</avgLongPrice>
                                    </symbol>
                            <symbol>
                    <name>USDCAD</name>
                                        <shortPercentage>26</shortPercentage>
                    <longPercentage>73</longPercentage>
                    <shortVolume>875.26</shortVolume>
                    <longVolume>2445.71</longVolume>
                    <longPositions>9970</longPositions>
                    <shortPositions>3885</shortPositions>
                    <totalPositions>3320</totalPositions>
                    <avgShortPrice>1.3189</avgShortPrice>
                    <avgLongPrice>1.3411</avgLongPrice>
                                    </symbol>
                            <symbol>
                    <name>EURAUD</name>
                                        <shortPercentage>46</shortPercentage>
                    <longPercentage>53</longPercentage>
                    <shortVolume>1150.57</shortVolume>
                    <longVolume>1343.59</longVolume>
                    <longPositions>3809</longPositions>
                    <shortPositions>5513</shortPositions>
                    <totalPositions>2494</totalPositions>
                    <avgShortPrice>1.4457</avgShortPrice>
                    <avgLongPrice>1.4871</avgLongPrice>
                                    </symbol>
                            <symbol>
                    <name>EURJPY</name>
                                        <shortPercentage>69</shortPercentage>
                    <longPercentage>30</longPercentage>
                    <shortVolume>2481.90</shortVolume>
                    <longVolume>1079.32</longVolume>
                    <longPositions>4609</longPositions>
                    <shortPositions>10795</shortPositions>
                    <totalPositions>3561</totalPositions>
                    <avgShortPrice>122.3282</avgShortPrice>
                    <avgLongPrice>124.2300</avgLongPrice>
                                    </symbol>
                            <symbol>
                    <name>AUDCAD</name>
                                        <shortPercentage>77</shortPercentage>
                    <longPercentage>22</longPercentage>
                    <shortVolume>1524.97</shortVolume>
                    <longVolume>438.72</longVolume>
                    <longPositions>2515</longPositions>
                    <shortPositions>6863</shortPositions>
                    <totalPositions>1963</totalPositions>
                    <avgShortPrice>1.0026</avgShortPrice>
                    <avgLongPrice>1.0141</avgLongPrice>
                                    </symbol>
                            <symbol>
                    <name>AUDJPY</name>
                                        <shortPercentage>62</shortPercentage>
                    <longPercentage>37</longPercentage>
                    <shortVolume>755.98</shortVolume>
                    <longVolume>445.58</longVolume>
                    <longPositions>2321</longPositions>
                    <shortPositions>3531</shortPositions>
                    <totalPositions>1201</totalPositions>
                    <avgShortPrice>83.2307</avgShortPrice>
                    <avgLongPrice>85.0745</avgLongPrice>
                                    </symbol>
                            <symbol>
                    <name>AUDNZD</name>
                                        <shortPercentage>18</shortPercentage>
                    <longPercentage>81</longPercentage>
                    <shortVolume>284.12</shortVolume>
                    <longVolume>1267.56</longVolume>
                    <longPositions>6872</longPositions>
                    <shortPositions>2324</shortPositions>
                    <totalPositions>1551</totalPositions>
                    <avgShortPrice>1.0484</avgShortPrice>
                    <avgLongPrice>1.0644</avgLongPrice>
                                    </symbol>
                            <symbol>
                    <name>AUDUSD</name>
                                        <shortPercentage>85</shortPercentage>
                    <longPercentage>14</longPercentage>
                    <shortVolume>9523.99</shortVolume>
                    <longVolume>1642.35</longVolume>
                    <longPositions>7289</longPositions>
                    <shortPositions>23094</shortPositions>
                    <totalPositions>11166</totalPositions>
                    <avgShortPrice>0.7519</avgShortPrice>
                    <avgLongPrice>0.7629</avgLongPrice>
                                    </symbol>
                            <symbol>
                    <name>CADJPY</name>
                                        <shortPercentage>53</shortPercentage>
                    <longPercentage>46</longPercentage>
                    <shortVolume>283.49</shortVolume>
                    <longVolume>246.29</longVolume>
                    <longPositions>1513</longPositions>
                    <shortPositions>1505</shortPositions>
                    <totalPositions>529</totalPositions>
                    <avgShortPrice>82.5404</avgShortPrice>
                    <avgLongPrice>84.7249</avgLongPrice>
                                    </symbol>
                            <symbol>
                    <name>EURCAD</name>
                                        <shortPercentage>65</shortPercentage>
                    <longPercentage>34</longPercentage>
                    <shortVolume>551.50</shortVolume>
                    <longVolume>285.69</longVolume>
                    <longPositions>2371</longPositions>
                    <shortPositions>3249</shortPositions>
                    <totalPositions>837</totalPositions>
                    <avgShortPrice>1.4634</avgShortPrice>
                    <avgLongPrice>1.4978</avgLongPrice>
                                    </symbol>
Аватар пользователя
ВЯЧЕСЛАВПЕТРОВ
 
Сообщений: 1522
Зарегистрирован: 06 сен 2016, 21:28
Средств на руках: 90.40 Доллар
Награды: 2
Ветеран I (1) Медаль за эрудицию (1)
Группа: Базовая
Благодарил (а): 3574 раз.
Поблагодарили: 434 раз.
Автор Вячеслав Петров. Возьму капитал или счет в управление. В лс.
Мониторинг трех счетной системы. Первый.Второй. Третий.
Четвертый.

Re: Создаем мультивалютный советник

Сообщение Рэндом » 18 июн 2017, 10:48

Надо создавать класс на основе списков который будет разбирать XML.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.

Создаем мультивалютный советник

Сообщение ВЯЧЕСЛАВПЕТРОВ » 18 июн 2017, 19:22

Скачал скрипт.но так и не разобрался как он работает с файлом чтобы выбрать данные.
ReportHTMLtoSCV.mq4
(12.08 KB) Скачиваний: 46

OrdersReport.csv
(56.92 KB) Скачиваний: 46
Аватар пользователя
ВЯЧЕСЛАВПЕТРОВ
 
Сообщений: 1522
Зарегистрирован: 06 сен 2016, 21:28
Средств на руках: 90.40 Доллар
Награды: 2
Ветеран I (1) Медаль за эрудицию (1)
Группа: Базовая
Благодарил (а): 3574 раз.
Поблагодарили: 434 раз.
Автор Вячеслав Петров. Возьму капитал или счет в управление. В лс.
Мониторинг трех счетной системы. Первый.Второй. Третий.
Четвертый.

Re: Создаем мультивалютный советник

Сообщение Рэндом » 20 июн 2017, 12:24

Я увы плохо разбираюсь в чужом коде.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.

Создаем мультивалютный советник

Сообщение ВЯЧЕСЛАВПЕТРОВ » 20 июн 2017, 15:37

Рэндом писал(а):Я увы плохо разбираюсь в чужом коде.

Сам я если честно тоже не разбираюсь в коде. После непонятных мне манипуляций с кодом удалось очистить файл от тегов и сформировать новый текстовый файл.
Вопрос что делать дальше.
Первый вариант который мне приходит в голову это записать сразу в текстовый файл переменные типа.
Код: выделить все
string nameEURUSD = "EURUSD";
int shortPercentageEURUSD=61;



и так далее со всеми переменными. Потом просто импортировать весь готовый код с текстового файла с помощью #include <OrdersReport1.csv>
Потом уже писать советник или есть другие рациональные варианты работы с текстовым файлом.


ReportHTMLtoSCV.mq4
(41.72 KB) Скачиваний: 45



OrdersReport1.csv
(6.02 KB) Скачиваний: 43
Аватар пользователя
ВЯЧЕСЛАВПЕТРОВ
 
Сообщений: 1522
Зарегистрирован: 06 сен 2016, 21:28
Средств на руках: 90.40 Доллар
Награды: 2
Ветеран I (1) Медаль за эрудицию (1)
Группа: Базовая
Благодарил (а): 3574 раз.
Поблагодарили: 434 раз.
Автор Вячеслав Петров. Возьму капитал или счет в управление. В лс.
Мониторинг трех счетной системы. Первый.Второй. Третий.
Четвертый.

Создаем мультивалютный советник

Сообщение Kalkin » 22 июн 2017, 09:03

Если делать так, как Вы написали, то тогда придется каждый раз перекомпилировать советник, чтобы он начал работать с новыми данными. Лучше просто работать с полученным текстовым файлом:
- Открыть файл OrdersReports1.csv;
- В цикле читать очередную строку;
-- если строка равна названию символа, то читаем следующие нужные строки и помещаем в массив для инструментов;
-- Если достигнут конец файла, то завершаем обработку.

А затем советник уже пусть работает с внутренними переменными.

Но это все, как я понял, предполагает необходимость предварительной ручной подготовки данных, а не автоматического подключения к ресурсам интернета.
Аватар пользователя
Kalkin
 
Сообщений: 1589
Зарегистрирован: 05 мар 2015, 06:51
Средств на руках: 108.80 Доллар
Награды: 2
Ветеран I (1) Медаль за научный вклад (1)
Группа: Базовая
Благодарил (а): 633 раз.
Поблагодарили: 1190 раз.
Ace Register Votive

Создаем мультивалютный советник

Сообщение ВЯЧЕСЛАВПЕТРОВ » 22 июн 2017, 16:58

Советник работает в автоматическом режиме и через каждые 5 минут получает данные с интернет ресурса. Текстовый файл обновляется через каждые 5 минут. Он уже результат обработки данных где ненужные теги отсеиваются . Остается только нужная информация записанная в текстовый файл.

Как работать с массивом из текстового файла я пока не понял. Опыта нету даже работы с массивами.
Аватар пользователя
ВЯЧЕСЛАВПЕТРОВ
 
Сообщений: 1522
Зарегистрирован: 06 сен 2016, 21:28
Средств на руках: 90.40 Доллар
Награды: 2
Ветеран I (1) Медаль за эрудицию (1)
Группа: Базовая
Благодарил (а): 3574 раз.
Поблагодарили: 434 раз.
Автор Вячеслав Петров. Возьму капитал или счет в управление. В лс.
Мониторинг трех счетной системы. Первый.Второй. Третий.
Четвертый.

Re: Создаем мультивалютный советник

Сообщение Haos » 22 июн 2017, 17:04

ВЯЧЕСЛАВПЕТРОВ писал(а):Советник работает в автоматическом режиме и через каждые 5 минут получает данные с интернет ресурса. Текстовый файл обновляется через каждые 5 минут. Он уже результат обработки данных где ненужные теги отсеиваются . Остается только нужная информация записанная в текстовый файл.

Как работать с массивом из текстового файла я пока не понял. Опыта нету даже работы с массивами.

Работать с массивами из текстового файла, данные которого не сформированы автоматически (и желательно самой средой МТ4) тяжко, т.к. велика вероятность ошибок при формировании массива в связи с неправильными данными или выходом за границы массива.
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.

Создаем мультивалютный советник

Сообщение ВЯЧЕСЛАВПЕТРОВ » 04 июл 2017, 19:28

С советником я немного разобрался и на первом этапе получил данные с http://www.myfxbook.com/api. XML прямо в советник с обновлением в одну минуту. Теперь хочу разобраться с корреляцией и как она вычисляется.
Информация с https://www.oanda.com/lang/ru/forex-tra ... orrelation
Как вычисляются коэффициенты корреляции
Коэффициент корреляции для двух обменных курсов вычисляется по следующей формуле:

correlationEquation1-23558b814d940a9e13bf8416be1b914e61fb6e9c.png


Где:

correlationEquation2-0b6816a51b6c684f970f629a34015f58fb197d69.png
Аватар пользователя
ВЯЧЕСЛАВПЕТРОВ
 
Сообщений: 1522
Зарегистрирован: 06 сен 2016, 21:28
Средств на руках: 90.40 Доллар
Награды: 2
Ветеран I (1) Медаль за эрудицию (1)
Группа: Базовая
Благодарил (а): 3574 раз.
Поблагодарили: 434 раз.
Автор Вячеслав Петров. Возьму капитал или счет в управление. В лс.
Мониторинг трех счетной системы. Первый.Второй. Третий.
Четвертый.

Re: Создаем мультивалютный советник

Сообщение Haos » 04 июл 2017, 19:33

Функции корреляции давно запрограммированы в библиотеках для mql4. Не стесняйтесь пользоваться или нашим форумом, а если еще не выложены у нас, то сайтом https://www.mql5.com/ru/code/mt4
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.


Вернуться в MQL – теория и практика

Кто сейчас на форуме?

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 70

Права доступа к форуму

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron