Библиотеки: Virtual - страница 37

 
Andrey Khatimlianskii:
OrderComment( const string new_comment )?

Интересный вариант.

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: Virtual

fxsaber, 2021.05.10 21:39

Не вижу причин не делать. Надо только определиться с названием функций изменения мэджика, лота и комментария.


приоритет этой задачи очень низкий? 

ЗЫ: в исходники не хочу лезть, но с записью информации в комментарии ордеров хотелось бы поэкспериментировать

 
Igor Makanu:

приоритет этой задачи очень низкий? 

На следующей неделе. Буду снепшоты модифицировать с учетом доп. понимания MT5, что реализовал в MT4Orders отсюда. Тогда и OrderComment довеском сделаю.

 
fxsaber:

На следующей неделе. Буду снепшоты модифицировать с учетом доп. понимания MT5, что реализовал в MT4Orders отсюда. Тогда и OrderComment довеском сделаю.

Сделал.

// Изменяем комментарий ордера.

#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  if (VIRTUAL::SelectByHandle(VIRTUAL::Create()))
  {
    VIRTUAL::NewTick();
    
    const long Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0, "FirstComment");

    Print(VIRTUAL::ToString()); // До.
    
    if (OrderSelect(Ticket, SELECT_BY_TICKET))
      OrderComment("NewComment"); // Изменили комментарий выбранного ордера.
    
    Print(VIRTUAL::ToString()); // После.
  }
}
 

Не стали в этой библиотеке в итоге менять конструкции вида

::SymbolInfoDouble(Symb, Property, Value)

на

::SymbolInfoDouble(Symb!=_Symbol ? Symb : _Symbol, Property, Value)

?

 
traveller00:

Не стали в этой библиотеке в итоге менять конструкции вида?

Напомните, какая цель у этой замены?

 
fxsaber:

Напомните, какая цель у этой замены?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

MT5 и скорость в боевом исполнении

Slava, 2021.03.01 08:05

Записи Symbol(), _Symbol - эквивалентны NULL (там, где допускется NULL вместо имени символа)

В данном случае не производится лишняя проверка на существование текущего символа, на присутствие текущего символа в Обзоре рынка и лишний вызов свойств текущего символа, так как свойства текущего символа кешируются

То есть, если указан обычный строковый параметр вместо Symbol(), _Symbol или NULL, то производятся проверки по полной программе и ещё запрос свойств


 
traveller00:

Спасибо. Надо, чтобы кто-то провел исследование на эту тему. Вроде, обсуждение подвисло.

 
fxsaber:

Сделал.

Спасибо!

работает:

void OnStart()
{
   struct S
   {
      double         a, b, c;
      int            x, y, z;
   };

   S s1 = {1.111, 2.222, 3.333, 4, 5, 6};
   char arr[];
   StructToCharArray(s1, arr);

   if (VIRTUAL::SelectByHandle(VIRTUAL::Create()))
   {
      VIRTUAL::NewTick();

      const long Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0, "FirstComment");

      Print(VIRTUAL::ToString()); // До.

      if (OrderSelect(Ticket, SELECT_BY_TICKET))
         OrderComment(CharArrayToString(arr)); // Изменили комментарий выбранного ордера.

      if (OrderSelect(Ticket, SELECT_BY_TICKET))
         StringToCharArray(OrderComment(), arr);


      S result[1];
      ZeroMemory(result);
      CharArrayToStruct(result[0], arr);
      ArrayPrint(result);
   }
}

а можно понаглеть и попросить перегрузку:

OrderComment(const char &array[]);
 
Igor Makanu:

а можно понаглеть и попросить перегрузку:

bool OrderComment( const char &Array[] )
{
  return(OrderComment(CharArrayToString(Array)));
}
Причина обращения: