Обсуждение статьи "Торговые операции на MQL5 - это просто" - страница 4

 
Konstantin Efremov:

UPD: Сообщением выше Рашид выложил файл библиотеки, он решил мою проблему. Печаль, что в стандартной библиотеке ошибка. Буду сейчас изучать сравнивать, чтобы понять можно ли без замены библиотеки прямо в советника внести некие изменения, чтобы всё работало

Эти правки уже попали в стандартную библиотеку. Решил ответить тем, кто прочитает статью только сейчас.

 

Хороший, действительно хороший...

 
<Deleted>
.
 
Andy Obama:
 

Всем доброго дня!

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

И вот! Нашел ещё одну ВЕЛИКОЛЕПНУЮ статью, которая помогла во многом разобраться и доработать свой советник! Жаль что автор не продолжил писать эту серию статей и ограничился только 2012 годом. Но всё-равно, выражаю БОЛЬШОЕ УВАЖЕНИЕ этому человеку и говорю ему такое же БОЛЬШОЕ СПАСИБО от лица всех начинающих!

С уважением, Владимир.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 
Комментарии, не относящиеся к данной теме, были перемещены в раздел "Сообщения не по теме".
 
pdev:

Здравствуйте, спасибо за этот очень полезный пост и, пожалуйста, помогите мне решить эту проблему. Я новичок в MT5 и учусь создавать советников, поэтому я скопировал пример кода для выполнения Ctrade.Buy, но бэктест не удался. Вот дополнительная информация:


1) Счет: Это реальный счет с базовой валютой NZD.

2) Настройки MetaEditor для бэктеста:


3) Код: Скопировано с https://www.mql5.com/ru/articles/481:


//+------------------------------------------------------------------+

//|                                                         demo.mq5 |

//|                        Copyright 2017, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#include<Trade\Trade.mqh>


//--- object for performing trade operations

CTrade  trade;

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

   //--- set MagicNumber for your orders identification

   int MagicNumber=123456;

   trade.SetExpertMagicNumber(MagicNumber);

   //--- set available slippage in points when buying/selling

   int deviation=10;

   trade.SetDeviationInPoints(deviation);

   //--- order execution mode

   trade.SetTypeFilling(ORDER_FILLING_RETURN);

   //--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own

   trade.LogLevel(1);

   //--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()

   trade.SetAsyncMode(true);

   //---

   return(0);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   BuySample1();

  }


//--- Buy sample  

//+------------------------------------------------------------------+

//|  Buying a specified volume at the current symbol                 |

//+------------------------------------------------------------------+

void BuySample1()

  {

//--- 1. example of buying at the current symbol

   if(!trade.Buy(0.1))

     {

      //--- failure message

      Print("Buy() method failed. Return code=",trade.ResultRetcode(),

            ". Code description: ",trade.ResultRetcodeDescription());

     }

   else

     {

      Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),

            " (",trade.ResultRetcodeDescription(),")");

     }

//---

  }

4) Журнал ошибок (пожалуйста, обратите внимание, что я тестирую только на EUR/USD):

GJ 0 19:36:44.410 127.0.0.1 login (build 1730)

HH 0 19:36:44.420 Сеть Загружено 38520 байт информации о счете

JO 0 19:36:44.420 Сеть Загружено 1482 байта параметров тестера

QE 0 19:36:44.420 Сеть 188 байт входных параметров загружено

FR 0 19:36:44.421 Сеть Загружено 443 байта списка символов

IF 0 19:36:44.421 Добавлен файл эксперта тестера: Experts\demo.ex5. Загружено 46684 байта

QH 0 19:36:44.433 Начальный депозит тестера 10000.00 NZD, кредитное плечо 1:100

JN 0 19:36:44.437 Тестер успешно инициализирован

ES 0 19:36:44.437 Получено 46 Кб общих данных инициализации

PP 0 19:36:44.437 Тестер Intel Core i7-4510U @ 2.00GHz, 8103 MB

RJ 0 19:36:44.799 Символы EURUSD: символ должен быть синхронизирован

HR 0 19:36:44.800 Symbols EURUSD: символ синхронизирован, получено 3624 байта информации о символе

NJ 0 19:36:44.800 History EURUSD: началась синхронизация истории

GO 0 19:36:44.856 История EURUSD: загрузка 27 байт исторических данных для синхронизации в 0:00:00.000

RQ 0 19:36:44.856 История EURUSD: история синхронизирована с 2012.01.01 по 2017.11.15

EF 0 19:36:44.993 История EURUSD,Daily: кэш истории выделен на 1010 баров и содержит 312 баров с 2014.01.01 00:00 по 2014.12.31 00:00

ND 0 19:36:44.993 История EURUSD,Daily: история начинается с 2014.01.01 00:00

OL 0 19:36:44.996 Тестер EURUSD,Daily (HalifaxPlus-Live): генерация каждого тика

GN 0 19:36:44.996 Tester EURUSD,Daily: началось тестирование Experts\demo.ex5 с 2015.01.01 00:00 по 2017.11.15 00:00

CK 0 19:36:56.288 Symbols NZDUSD: символ должен быть синхронизирован

IS 0 19:36:56.288 Symbols NZDUSD: символ синхронизирован, получено 3624 байта информации о символе

JL 0 19:36:56.288 History NZDUSD: началась синхронизация истории

HJ 0 19:36:56.575 История NZDUSD: загрузка 14 Кб исторических данных для синхронизации в 0:00:00.078

LS 0 19:36:56.575 History NZDUSD: история синхронизирована с 2013.01.01 по 2017.11.15

CO 0 19:36:56.579 Символы EURNZD: символ должен быть синхронизирован

OJ 0 19:36:56.580 Symbols EURNZD: символ синхронизирован, получено 3624 байта информации о символе

DL 0 19:36:56.580 История EURNZD: началась синхронизация истории

MK 0 19:36:56.656 История EURNZD: загрузить 27 байт исторических данных для синхронизации в 0:00:00.000

OD 0 19:36:56.656 История EURNZD: история синхронизирована с 2013.01.01 по 2017.11.15

IN 0 19:36:56.665 Торговля 2015.01.02 03:00:00 рынок купить 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)

PE 0 19:36:56.665 Trades 2015.01.02 03:00:00 deal #2 buy 0.10 EURUSD at 1.20549 done(based on order #2)

FH 0 19:36:56.666 Trades 2015.01.02 03:00:00 deal performed [#2 buy 0.10 EURUSD at 1.20549]

OG 0 19:36:56.666 Торговля 2015.01.02 03:00:00 ордер исполнен buy 0.10 at 1.20549 [#2 buy 0.10 EURUSD at 1.20549]

FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 Метод Buy() выполнен успешно. Код возврата=10009 (выполнено по цене 1.20549)

NM 2 19:37:15.823 История NZDUSD 2016.09.21 23:01:00: обнаружена поврежденная история (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)

JF 2 19:37:15.823 История NZDUSD 2016.09.21, обнаружен плохой контейнер, необходимо пересинхронизировать

LQ 2 19:37:16.106 История тестера ошибка 9 в неопределенной функции

OH 2 19:37:16.106 Тестер остановился на 0% интервала тестирования с ошибкой '20 NZDUSD'


Пожалуйста, скажите мне, что не так и как мне решить эту проблему?

[Удален]  
pdev:

Здравствуйте, спасибо за этот очень полезный пост и, пожалуйста, помогите мне решить эту проблему. Я новичок в MT5 и учусь создавать советников, поэтому я скопировал пример кода для выполнения Ctrade.Buy, но бэктест не удался. Вот дополнительная информация:


1) Счет: Это реальный счет с базовой валютой NZD.

2) Настройки MetaEditor для бэктеста:


3) Код: Скопировано с https://www.mql5.com/ru/articles/481:


//+------------------------------------------------------------------+

//|                                                         demo.mq5 |

//|                        Copyright 2017, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#include<Trade\Trade.mqh>


//--- object for performing trade operations

CTrade  trade;

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

   //--- set MagicNumber for your orders identification

   int MagicNumber=123456;

   trade.SetExpertMagicNumber(MagicNumber);

   //--- set available slippage in points when buying/selling

   int deviation=10;

   trade.SetDeviationInPoints(deviation);

   //--- order execution mode

   trade.SetTypeFilling(ORDER_FILLING_RETURN);

   //--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own

   trade.LogLevel(1);

   //--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()

   trade.SetAsyncMode(true);

   //---

   return(0);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   BuySample1();

  }


//--- Buy sample  

//+------------------------------------------------------------------+

//|  Buying a specified volume at the current symbol                 |

//+------------------------------------------------------------------+

void BuySample1()

  {

//--- 1. example of buying at the current symbol

   if(!trade.Buy(0.1))

     {

      //--- failure message

      Print("Buy() method failed. Return code=",trade.ResultRetcode(),

            ". Code description: ",trade.ResultRetcodeDescription());

     }

   else

     {

      Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),

            " (",trade.ResultRetcodeDescription(),")");

     }

//---

  }

4) Журнал ошибок (пожалуйста, обратите внимание, что я тестирую только на EUR/USD):

GJ 0 19:36:44.410 127.0.0.1 login (build 1730)

HH 0 19:36:44.420 Сеть Загружено 38520 байт информации о счете

JO 0 19:36:44.420 Сеть Загружено 1482 байта параметров тестера

QE 0 19:36:44.420 Сеть 188 байт входных параметров загружено

FR 0 19:36:44.421 Сеть Загружено 443 байта списка символов

IF 0 19:36:44.421 Добавлен файл эксперта тестера: Experts\demo.ex5. Загружено 46684 байта

QH 0 19:36:44.433 Начальный депозит тестера 10000.00 NZD, кредитное плечо 1:100

JN 0 19:36:44.437 Тестер успешно инициализирован

ES 0 19:36:44.437 Получено 46 Кб общих данных инициализации

PP 0 19:36:44.437 Тестер Intel Core i7-4510U @ 2.00GHz, 8103 MB

RJ 0 19:36:44.799 Символы EURUSD: символ должен быть синхронизирован

HR 0 19:36:44.800 Symbols EURUSD: символ синхронизирован, получено 3624 байта информации о символе

NJ 0 19:36:44.800 History EURUSD: началась синхронизация истории

GO 0 19:36:44.856 История EURUSD: загрузка 27 байт исторических данных для синхронизации в 0:00:00.000

RQ 0 19:36:44.856 История EURUSD: история синхронизирована с 2012.01.01 по 2017.11.15

EF 0 19:36:44.993 История EURUSD,Daily: кэш истории выделен на 1010 баров и содержит 312 баров с 2014.01.01 00:00 по 2014.12.31 00:00

ND 0 19:36:44.993 История EURUSD,Daily: история начинается с 2014.01.01 00:00

OL 0 19:36:44.996 Тестер EURUSD,Daily (HalifaxPlus-Live): генерация каждого тика

GN 0 19:36:44.996 Tester EURUSD,Daily: началось тестирование Experts\demo.ex5 с 2015.01.01 00:00 по 2017.11.15 00:00

CK 0 19:36:56.288 Symbols NZDUSD: символ должен быть синхронизирован

IS 0 19:36:56.288 Symbols NZDUSD: символ синхронизирован, получено 3624 байта информации о символе

JL 0 19:36:56.288 History NZDUSD: началась синхронизация истории

HJ 0 19:36:56.575 История NZDUSD: загрузка 14 Кб исторических данных для синхронизации в 0:00:00.078

LS 0 19:36:56.575 History NZDUSD: история синхронизирована с 2013.01.01 по 2017.11.15

CO 0 19:36:56.579 Символы EURNZD: символ должен быть синхронизирован

OJ 0 19:36:56.580 Symbols EURNZD: символ синхронизирован, получено 3624 байта информации о символе

DL 0 19:36:56.580 История EURNZD: началась синхронизация истории

MK 0 19:36:56.656 История EURNZD: загрузить 27 байт исторических данных для синхронизации в 0:00:00.000

OD 0 19:36:56.656 История EURNZD: история синхронизирована с 2013.01.01 по 2017.11.15

IN 0 19:36:56.665 Торговля 2015.01.02 03:00:00 рынок купить 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)

PE 0 19:36:56.665 Trades 2015.01.02 03:00:00 deal #2 buy 0.10 EURUSD at 1.20549 done(based on order #2)

FH 0 19:36:56.666 Trades 2015.01.02 03:00:00 deal performed [#2 buy 0.10 EURUSD at 1.20549]

OG 0 19:36:56.666 Торговля 2015.01.02 03:00:00 ордер исполнен buy 0.10 at 1.20549 [#2 buy 0.10 EURUSD at 1.20549]

FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 Метод Buy() выполнен успешно. Код возврата=10009 (выполнено по цене 1.20549)

NM 2 19:37:15.823 История NZDUSD 2016.09.21 23:01:00: обнаружена поврежденная история (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)

JF 2 19:37:15.823 История NZDUSD 2016.09.21, обнаружен плохой контейнер, необходимо пересинхронизировать

LQ 2 19:37:16.106 История тестера ошибка 9 в неопределенной функции

OH 2 19:37:16.106 Тестер остановился на 0% интервала тестирования с ошибкой '20 NZDUSD'


Пожалуйста, скажите мне, что не так и как мне решить эту проблему?

 

В статье при открытии лимитных и стоповых ордеров везде

double price=1000*point;

Интересно, кто пишет, что статья им помогла так и вставляют код из статьи?