AM2
Андрей

 
Уровень 35

  Торгую в компаниях:


Группа "Программирование на MQL"

Рейтинг 280



"CME Loader" полуавтомат

Для просмотра бюллетеня СМЕ для EURUSD достаточно перейти по ссылке:



Простым копипастом, т.е. нажатием клавиш «CTRL+A» и «CTRL+С» копируем данные бюллетеня.



Затем в папке Files терминала создаем файл CME.TXT и жмем «CTRL+V». Сохраняем и закрываем файл.

Алгоритм.

Входные переменные будут такие:


extern string call = "SEP15 EURO FX CALL";
extern string put  = "SEP15 EURO FX PUT";


Файл открываем с помощью функции:


int h=FileOpen("cme.txt",FILE_READ|FILE_TXT,'\n');


Пока не достигнут конец файла, читаем его построчно и строим уровни:


      //--- прочитаем данные из файла
      while(!FileIsEnding(h))
        {
         //--- прочитаем строку
         str=FileReadString(h,str_size);
            ...
         //--- закроем файл
         FileClose(h);
        }
     }


Для построения уровней CALL осуществляем поиск подстроки «SEP15 EURO FX CALL»


//--- если есть подстрока call
if(StringFind(str,call,0)>0)
...


Для построения уровней PUT осуществляем поиск подстроки «SEP15 EURO FX PUT»


//--- если есть подстрока put
if(StringFind(str,put,0)>0)
...


Страйк читаем следующим образом:


         //читаем подстроку со страйком
         strike=StringSubstr(str,0,4);


Премию так:


         //читаем подстроку с премией
         prem=StringSubstr(str,27,5);


С помощью следующих функций строим сами уровни и выводим на экран необходимый текст.

Уровни:


void PutHLine(double price,const int width,const ENUM_LINE_STYLE style,const color clr)
  {
   const string name="HLine";
   ObjectCreate(0,name,OBJ_HLINE,0,0,price);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии
   ObjectSetInteger(0,name,OBJPROP_STYLE,style);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
  }


Текст:


void PutText(const string text,const string font,const int font_size,double price,datetime time,const ENUM_ANCHOR_POINT anchor,const color clr)
  {
   const string name="Text"+TimeToStr(TimeCurrent()); 
//--- создадим объект "Текст"  
   ObjectCreate(0,name,OBJ_TEXT,0,time,price);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,font);
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,font_size);
//--- установим способ привязки
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,anchor);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
  }  


Для наглядности необходимые переменные можно вывести на экран:



Все необходимые функции у нас есть, а расчет уровня можно произвести следующим образом:


PutHLine(StringToDouble(strike)/1000+StringToDouble(prem)*0.001,2,STYLE_SOLID,Red);


П.С. Окончательный вариант скрипта или индикатора у каждого будет свой :D .
  • +5
  • Просмотров: 9432
  • 16 августа 2015, 17:41
  • AM2
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Программирование на MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
Следующая запись в группе  
Как написать DLL для советника на MQL4
17 мая 2015
04 сентября 2015

Брокер для ваших роботов, 15 лет на рынке

Комментарии (2)

+
+1
Мне у danza вот эта программа нравится: danza.opentraders.ru/26920.html
Тем более, что в субботу мне скинула её последнюю версию. Думаю, скоро и топик появится или обновится по этому поводу.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 16 августа 2015, 19:54
+
0
Это то что удалось сегодня набросать за 2 часа. На мкл можно считывать и сразу строить уровни, да и по времени поменьше будет.
avatar

  35  AM2 Автор Сообщений: 16441 - Андрей

  • 16 августа 2015, 21:37

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий