Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1269

 
Aleksei Lesnikov:

Алексей, спасибо!  Теперь понятно, что это невозможно. 

Правда у меня не совсем mql4. Я пытаюсь заменить данные через класс CiOpen. Смутило меня наличие метода Update, который должен изменить элемент в указанной позиции массива.

Копировать в свои переменные / массивы и с ними уже работать.
 
Valeriy Yastremskiy:
Копировать в свои переменные / массивы и с ними уже работать.

Так и сделал.

 

Огромная просьба помочь! Я совсем новичок в программировании.

При изучении столкнулся с трудностями реализации кода. Существует статья https://www.mql5.com/ru/articles/3336 Никак не могу понять как происходит сравнение 

      if(!CompareTiks(n_tiks[i], m_ticks[k]))

Подозреваю что используются "Шаблонные коллекции данных" там и есть такой глобальный метод "Compare". Только вот в листинге статьи нигде не приводится как дать понять компилятору что нужно использовать "Compare" из "Шаблонные коллекции данных", и примеров использования глобальных методов из  "Шаблонные коллекции данных" не нашел.

Такая запись, которая приведена в описании глобального метода,  думаю ничего не поменяет в результате

template<typename T>
int Compare(
   T  x,                  // первое значение
   T  y                   // второе значение
   );

В результате имею следующий код (вернее код имеет меня)

#ifndef MyInclude
#define MyInclude


//template<typename T>
//interface ICollection
//#include <Generic\Interfaces\ICollection.mqh>
template<typename T>
int Compare(
   T  x,                  // первое значение
   T  y                   // второе значение
   );
  
class CMarketBook
{
private:
string m_symbol;
MqlTick m_ticks[];
MqlTick LastTicks[];

protected:

public:
   void CMarketBook::CompareTicks(void);
};
//+------------------------------------------------------------------+
//|Compare two ticks colllection and find new ticks                  |
//+------------------------------------------------------------------+
void CMarketBook::CompareTicks(void)
{
   MqlTick n_ticks[];
   ulong T_begin = (TimeCurrent()-(1*20))*1000;//20sec ago
   m_symbol = Symbol();
   int Total = CopyTicks(m_symbol, n_ticks, COPY_TICKS_ALL, T_begin, 1000);
   if (Total < 1) {printf("Не удалось получить тики"); return;}
   if (ArraySize(m_ticks) == 0) {ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY); return;}
  
   int k = ArraySize(m_ticks)-1;
   int n_t = 0;
   int Limit_comp = 20;
   int Comp_success = 0;

   // Перебираем новые полученные тики
   for (int i = ArraySize(n_ticks)-1; i>=0 && k>=0; i--)
   {
      if (!Compare(n_ticks[i], m_ticks[k]))
      {
         n_t = ArraySize(n_ticks) - i;
         k = ArraySize(m_ticks) - 1;
         Comp_success = 0;
      }
      else
      {
         Comp_success += 1;
         if (Comp_success >= Limit_comp) break;
         k--; 
      };
   };
   //Запоминаем полученные тики
   ArrayResize(m_ticks, Total);
   ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY);
   //Расчитываем индекс начала новых тиков и копируем их в буфер для доступа
   ArrayResize(LastTicks, n_t);
   if (n_t > 0)
   {
      int index = ArraySize(n_ticks) - n_t;
      ArrayCopy(LastTicks, m_ticks, 0, index, n_t);
   };
};
#endif

При компиляции образуется ошибка - "object are by passed by reference only"  к строке       if (!Compare(n_ticks[i], m_ticks[k])) указывая на n_ticks[i]

Пишем скальперский стакан цен на основе графической библиотеки CGraphic
Пишем скальперский стакан цен на основе графической библиотеки CGraphic
  • www.mql5.com
Именно с этой, улучшенной и дополненной версией мы и начнем работать, чтобы постепенно превратить ее в скальперский стакан цен. Краткий обзор графической библиотеки CPanel Созданию пользовательских интерфейсов в MQL5 посвящено много статей. Среди них особенно выделяется серия Анатолия Кажарского "Графические интерфейсы", после которой сложно...
 
При использовании мобильного интернета не приходят SendNotification... При подключении к вай-фай - приходят (даже те, которые не приходили при моб. нете). Это на стороне провайдера проблема? Вроде бы включены все разрешения в настройках мобильного интернета...
 

Всем доброго времени суток.

Я тестирую советника МТ4 от Альпари. Перед тестированием МТ предлагает мне выставить значение спреда ( текущий или какое то конкретное значение из предлагаемых ).


В Альпари спред плавающий. Поэтому вышеуказанные настройки размера спреда мне не подходят.

ВОПРОС. Какая функция отображает на истории  значения спреда действовашие на на каждый исторический тик?
Или как сделать так что бы советник открывал и закрывал ордера с учетом спреда действовавшего на момент открытия или закрытия ордера?

Спасибо всем за помощь.

 
ANDREY:

Всем доброго времени суток.

Я тестирую советника МТ4 от Альпари. Перед тестированием МТ предлагает мне выставить значение спреда ( текущий или какое то конкретное значение из предлагаемых ).


В Альпари спред плавающий. Поэтому вышеуказанные настройки размера спреда мне не подходят.

ВОПРОС. Какая функция отображает на истории  значения спреда действовашие на на каждый исторический тик?
Или как сделать так что бы советник открывал и закрывал ордера с учетом спреда действовавшего на момент открытия или закрытия ордера?

Спасибо всем за помощь.

В МТ 4 никак, в мт 5  можно

 
Vladimir Pastushak:

В МТ 4 никак, в мт 5  можно

Спасибо большое за ценную информацию.

Начну изучать mql5. Говорят , что он сильно похож на  mql4. Что бы его изучать сразу под нужным мне углом, буду Вам очень признателен если подскажете как в  mql5 реализуется мой замысел.

 
ANDREY:

Спасибо большое за ценную информацию.

Начну изучать mql5. Говорят , что он сильно похож на  mql4. Что его изучать сразу под нужным мне углом, буду Вам очень признателен если подскажете как в  mql5 реализуется мой замысел.

В мт5 ничего придумывать не нужно. 
Все происходит автоматически и советник торгует с плавающий спредом в тестере стратегий 
 
Vladislav Andruschenko:
В мт5 ничего придумывать не нужно. 
Все происходит автоматически и советник торгует с плавающий спредом в тестере стратегий 

Это круто. Спасибо за ценную информацию.

Как мне кажется, что бы быстро  перейти с mql4 на   mql5 оптимальнее всего читать одновременно справочники по  mql4 и по  mql5 , и обращать внимание на то чем они отличаются друг от друга. Все познается в сравнении.....
 

Всем доброго времени суток!

Начал изучать mql5. Начал с изучения того как открываются ордера. Понял что код для открытия ордера пишется в отдельном включаемом файле. Посмотрел как пишется этот код и на его окончательный вариант для торговли. Поразился тому, как легко и просто открывается ордер в  mql4, по сравнению с  mql5.

ВОПРОС. Правильно ли я понимаю ,что включаемый файл с кодом для открытия ордера уже где то есть и мне писать этот код не обязательно? Если такой файл где то есть то мне нужно только подключить его к моему советнику и установить нужные мне значения параметров ордера.? Если такой файл где то есть, то где и как его найти и как он называется.

Спасибо.

Причина обращения: