MQL5

Тема в разделе "Metatrader 5", создана пользователем finger, 15 окт 2009.

  1. finger

    finger Alex

    Вот капли одного из самых неловкое реализации, которые можно найти в ООП. Это вызывает смех. Похоже, те,
    кто осуществляет MQL5 не знаю, почему они переходят к ООП.
    <!--c1--><div class='codetop'>QUELLTEXT</div><div class='codemain'><!--ec1-->long handle=ChartOpen("EURUSD",PERIOD_H12);
    if(handle!=0)
    {
    &nbsp;&nbsp; ChartSetInteger(handle,CHART_AUTOSCROLL,false);
    &nbsp;&nbsp; ChartSetInteger(handle,CHART_SHIFT,true);
    &nbsp;&nbsp; ChartSetInteger(handle,CHART_MODE,CHART_LINE);
    &nbsp;&nbsp; ResetLastError();
    &nbsp;&nbsp; bool res=ChartNavigate(handle,CHART_END,150);
    &nbsp;&nbsp; if(!res) Print("Navigate failed. Error= ",GetLastError());
    &nbsp;&nbsp; ChartRedraw();
    }<!--c2--></div><!--ec2-->

    В ООП, он должен быть действительно хотели следующие которая улучшает читаемость.
    Обратите внимание, что следующий не MQL5 но что MQL5 должно быть.
    <!--c1--><div class='codetop'>QUELLTEXT</div><div class='codemain'><!--ec1-->Chart ch = new Chart("EURUSD", ChartPeriod.H12);
    if (ch != null) {
    &nbsp;&nbsp; ch.AutoScroll = false;
    &nbsp;&nbsp; ch.Shift = true;
    &nbsp;&nbsp; ch.Mode = ChartMode.Line;
    &nbsp;&nbsp; try {
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch.Navigate(150, ChartPosition.End);
    &nbsp;&nbsp; } catch(exception ex) {
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.WriteLine(ex.Message);
    &nbsp;&nbsp; }
    &nbsp;&nbsp; Chart.Current.Redraw();
    }<!--c2--></div><!--ec2-->
     
  2. finger

    finger Alex

    <b>MQL4 :: iHighest</b> <i>Возвращает переход от максимального значения в течение определенного числа периодов.</i>
    <!--c1--><div class='codetop'>QUELLTEXT</div><div class='codemain'><!--ec1-->int iHighest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)<!--c2--></div><!--ec2-->

    Как внедрить его в MQL5 ?
     
  3. finger

    finger Alex

    <b>функция iHighest</b> <i>Возвращает переход от максимального значения в течение определенного числа периодов.</i>
    <!--c1--><div class='codetop'>QUELLTEXT</div><div class='codemain'><!--ec1-->//+------------------------------------------------------------------+
    //|&nbsp;&nbsp;searching index of the highest bar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
    //+------------------------------------------------------------------+
    int iHighest(const double &array[],
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int depth,
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int startPos)
    &nbsp;&nbsp;{
    &nbsp;&nbsp; int index=startPos;
    //--- start index validation
    &nbsp;&nbsp; if(startPos<0)
    &nbsp;&nbsp;&nbsp;&nbsp; {
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print("Invalid parameter in the function iHighest, startPos =",startPos);
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;
    &nbsp;&nbsp;&nbsp;&nbsp; }
    &nbsp;&nbsp; int size=ArraySize(array);
    //--- depth correction if need
    &nbsp;&nbsp; if(startPos-depth<0) depth=startPos;
    &nbsp;&nbsp; double max=array[startPos];
    //--- start searching
    &nbsp;&nbsp; for(int i=startPos;i>startPos-depth;i--)
    &nbsp;&nbsp;&nbsp;&nbsp; {
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(array>max)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index=i;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max=array;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;&nbsp; }
    //--- return index of the highest bar
    &nbsp;&nbsp; return(index);
    &nbsp;&nbsp;}<!--c2--></div><!--ec2-->

    <b>Пример Индикатор</b> value = Возвращает переход от максимального значения в течение определенного числа периодов.
    <!--c1--><div class='codetop'>QUELLTEXT</div><div class='codemain'><!--ec1-->int OnCalculate(const int rates_total,
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const int prev_calculated,
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const datetime &time[],
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const double &open[],
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const double &high[],
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const double &low[],
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const double &close[],
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const long &tick_volume[],
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const long &volume[],
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const int &spread[])
    &nbsp;&nbsp;{

    double value=high[iHighest(high,5,0)];

    }<!--c2--></div><!--ec2-->
     
  4. finger

    finger Alex

    Моя 1-го класса MQL5 Класс CalcFrac определяется числом фрактальной баров до и после нынешнего высокого / низкого.

    <!--c1--><div class='codetop'>QUELLTEXT</div><div class='codemain'><!--ec1-->//+------------------------------------------------------------------+
    //| Class CalcFrac.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
    //| Appointment: Class calculate fractals by array values&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
    //+------------------------------------------------------------------+
    class CalcFrac
    &nbsp;&nbsp;{
    public:
    &nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; before_period;
    &nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; after_period;
    &nbsp;&nbsp; double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;values[];

    &nbsp;&nbsp; bool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_lower_fr(int bar);
    &nbsp;&nbsp; bool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_upper_fr(int bar);

    protected:
    &nbsp;&nbsp; int CountMax() {return((int)MathMax(before_period,after_period));};
    &nbsp;&nbsp;};
    //+------------------------------------------------------------------+
    //| calculate lower fractals&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
    //+------------------------------------------------------------------+
    bool CalcFrac :: is_lower_fr(int bar)
    &nbsp;&nbsp;{
    &nbsp;&nbsp; for(int i=1;i<=CountMax();i++)
    &nbsp;&nbsp;&nbsp;&nbsp; {
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i<=after_period && values[bar]>values[bar+i]) return(false); //
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i<=before_period && values[bar]>values[bar-i]) return(false);
    &nbsp;&nbsp;&nbsp;&nbsp; }

    &nbsp;&nbsp; return(true);
    &nbsp;&nbsp;}
    //+------------------------------------------------------------------+
    //| calculate upper fractals&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
    //+------------------------------------------------------------------+
    bool CalcFrac :: is_upper_fr(int bar)
    &nbsp;&nbsp;{
    &nbsp;&nbsp; for(int i=1;i<=CountMax();i++)
    &nbsp;&nbsp;&nbsp;&nbsp; {
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i<=after_period && values[bar]<values[bar+i]) return(false); //
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i<=before_period && values[bar]<values[bar-i]) return(false);
    &nbsp;&nbsp;&nbsp;&nbsp; }

    &nbsp;&nbsp; return(true);
    &nbsp;&nbsp;}
    //+------------------------------------------------------------------+<!--c2--></div><!--ec2-->


    An example
    <a href="http://www.onix-trade.net/forum/index.php?showtopic=85600" target="_blank">http://www.onix-trade.net/forum/index.php?showtopic=85600</a>
    Capture_100.gif

    ^drink
     
  5. Andres74

    Andres74 Новичок

    Нашел <span class='inv'><![CDATA[<noindex>]]></span><a href="http://www.onix-trade.net/forum/go.php?http://mql5.su/forum/viewtopic.php?f=3&t=5" rel="nofollow" target="_blank">конвертер программ MQL4 => MQL5</a><span class='inv'><![CDATA[</noindex>]]></span> Похоже переделка программ на 5-ку теперь не станет золотой жилой программистов ^secret^
     
  6. DVDima

    DVDima indifférent Команда форума

    копнул глубже, вот сорс программы <span class='inv'><![CDATA[<noindex>]]></span><a href="http://www.onix-trade.net/forum/go.php?http://www.dr-ea.com/meta-blog/" rel="nofollow" target="_blank">http://www.dr-ea.com/meta-blog/</a><span class='inv'><![CDATA[</noindex>]]></span>
     
  7. nen

    nen Профи форума

    Простенькие программы, может быть, и сконвертирует.
     
  8. Andres74

    Andres74 Новичок

    Мдааа, чего то не фига не читается у меня тот блог, на каком он языке. Вот так весь сайт: sait.GIF
    Коллеги, подскажите, как его прочитать :blink: Если что там действительно дельное, киньте сюда плз.
     
  9. поручик

    поручик настоящий полковник

    Еще 1 c ТСД <span class='inv'><![CDATA[<noindex>]]></span><a href="http://www.onix-trade.net/forum/go.php?http://www.forex-tsd.com/indicators-metatrader-5/24502-mt4-mt5-code-converter.html#post331786" rel="nofollow" target="_blank">http://www.forex-tsd.com/indicators-metatr...html#post331786</a><span class='inv'><![CDATA[</noindex>]]></span>

    Rewrite MQL 4 to MQL 5 Script

    A script which converts MQL 4 code to MQL 5 code was developed by Keiji and Circlesquares on the MQL4 forum.

    First, download the following files and place them in your Metatrader 4 / experts / include folder

    - mt4accountinfo.mqh
    - mt4string.mqh
    - mt4datetime.mqh
    - mt4objects_1.mqh
    - mt4timeseries_2.mqh

    Now, place the latest version of the rewrite script and it in your Metatrader 4 / experts / scripts folder:

    - mq4to5rewrite_sample_v4_2.mq4

    After that you will need to place a mql4 indicator, script or ea which you want to convert to MQL 5 in your Metatrader 4 / experts / files folder. Now open Metatrader 4 and run the script. As you can see you must first provide the name (without extension) of your mq4 file and select if it is an indicator (0), EA (2) or script (3) file.

    Now hit the "OK" button and if everything is done

    After that go to your Metatrader 4 / experts / files folder and you will find the converted mq5 file there:

    Now open this file with Metaeditor 5 in compile it:

    Try to fix the errors with the MQL4 to MQL5 Porting Table and the last version of the translated MQL5 user guide.

    All the required files is included in the ZIP

    <b>Эл. перевод</b>

    Перепишите MQL 4 к MQL 5 Подлинников

    Подлинник, который преобразовывает MQL 4 кодекса в MQL 5 кодексов, был развит Keiji и Circlesquares на форуме MQL4.

    Сначала, загрузите следующие файлы и разместите их в ваш Metatrader 4 / эксперты / включают папку

    - mt4accountinfo.mqh
    - mt4string.mqh
    - mt4datetime.mqh
    - mt4objects_1.mqh
    - mt4timeseries_2.mqh

    Теперь, поместите последнюю версию переписывающегося подлинника и этого в вашем Metatrader 4 / эксперты / папка подлинников:

    - mq4to5rewrite_sample_v4_2.mq4

    После этого Вы будете должны поместить mql4 индикатор, подлинник или землю, которую Вы хотите преобразовать в MQL 5 в вашем Metatrader 4 / эксперты / папка файлов. Теперь откройте Metatrader 4 и управляйте подлинником. Поскольку Вы можете видеть, что Вы должны сначала обеспечить название (без расширения) вашего mq4 файла и выбора, если это - индикатор (0), эксперт (2) или скрипт (3) файл.

    Теперь поразите 'хорошо' кнопка и если все сделано

    После того, как это идет в ваш Metatrader 4 / эксперты / папка файлов, и Вы найдете переделанный mq5 файл там:

    Теперь откройтесь, этот файл с Metaeditor 5 в собирают это:

    Пробуйте установить ошибки с MQL4 к MQL5, Держащему Стол в строевой стойке и последнюю версию переведенного руководства пользователя MQL5.

    Все необходимые файлы включены в ZIP
     

    Вложения:

  10. Ice

    Ice Профи форума

    Программеры MQL будут плакать горькими слезами, стока работы сорвалось... :ab:
     
  11. cmillion

    cmillion I am an MQL programmer https://cmillion.ru

    Программисты без дела не останутся. Самое веселое начнется, когда будут просить сделать изменение в перекрученные программы.... Это тоже, что и декодированные переделывать - проще написать новую. Помимо этого в МТ5 много нового и интересного, о чем в 4 только мечтали. Поэтому программы, написанные сразу на МТ5 будут значительно информативнее и быстрее. А следовательно есть ли смысл в перекручивании?
     
  12. Ice

    Ice Профи форума

    Конечно есть! Полно трейдеров, у которых вся ТС уже отлажена и им надо будет чтобы всё работало также как и было, никаких изменений не надо, лишь - бы работало и приносило радость :ab:
     
  13. DVDima

    DVDima indifférent Команда форума

    японский, так понимаю. гугла в помощь


    <span class='inv'><![CDATA[<noindex>]]></span><a href="http://www.onix-trade.net/forum/go.php?http://translate.google.ru/translate?js=y&prev=_t&hl=ru&ie=UTF-8&layout=1&eotf=1&u=http://www.dr-ea.com/meta-blog/&sl=ja&tl=ru" rel="nofollow" target="_blank">http://translate.google.ru/translate?js=y&...sl=ja&tl=ru</a><span class='inv'><![CDATA[</noindex>]]></span>
     
  14. serg.volkoff

    serg.volkoff Новичок

    Тот, кто не пробовал конвертить - не спешите радоваться.
    Скрипт конвертирует всего процентов 20% от кода, да и то - через пень колоду.
    Торговая логика - вообще совершенно другая и скриптом даже и не пробует
    покрываться - переписывайте сами.
    Так что кто будет плакать горькими слезами - вопрос еще тот.
    Наверно, это так было задумано - дать програмерам от МетаКвотц
    побольше возможности зарабатывать на стороне.
    Тока вот желающих пока что много не видится.
    А зря - есть очень ряд ценных нововденний и усоверщенствований в МТ5.
     
  15. tol64

    tol64 Активный пользователь

  16. Mutter

    Mutter Активный пользователь

    Есть принципиальная разница между MQL4 и MQL5?
     
  17. cmillion

    cmillion I am an MQL programmer https://cmillion.ru

    Да и она огромная!

    для оперативности пишите в скайп или на почту
    email: cmillion@narod.ru
    Skype: mqlcmillion
     

Поделиться этой страницей