Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Переменная, объявленная с модификатором sinput, является входным параметром MQL4-программы, значение этого параметра можно изменять при её запуске. Но при этом данная переменная не участвует в процессе оптимизации входных параметров, то есть не производится перебор её значений при поиске наилучшего набора параметров по заданному критерию.



А дальше документацию дочитать? Вот что ниже метаквоты пишут:

Но при этом есть одно исключение из данного правила – sinput-переменные можно варьировать в задачах оптимизации с помощью функции ParameterSetRange(). Данная функция создана специально для программного управления пространством доступных значений для любых input-переменных, в том числе и объявленных как static input (sinput). Другая функция ParameterGetInput() позволяет при запуске оптимизации (в обработчике OnTesterInit()) получить значения input-переменных и в случае необходимости переопределить шаг изменения и диапазон, в пределах которого будет перебираться значение оптимизируемого параметра.

Таким образом, сочетание модификатора sinput и двух функций по работе с input-параметрами позволяет создавать гибкие правила для задания интервалов оптимизации одних input-переменных в зависимости от значения других input-переменных.


Но на деле в MQL4 функции ParameterSetRange() нет. А ведь она задумывалась именно для решения описанной задачи при оптимизации.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано


CountSell() и CountBuy() достаточно вызвать один раз и результат использовать в выражении.



Слишком много перебора с использованием оператора цикла, что вроде нагружает процесор, тут решил одну идею проверить чтобы один раз вызвать и все сравнить. Компилятор пропустил, значит можно использовать.

if(((((CountBuy())>1) {
// ураааааа
}
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Спойлер



Переменная, объявленная с модификатором sinput, является входным параметром MQL4-программы, значение этого параметра можно изменять при её запуске. Но при этом данная переменная не участвует в процессе оптимизации входных параметров, то есть не производится перебор её значений при поиске наилучшего набора параметров по заданному критерию.



А дальше документацию дочитать? Вот что ниже метаквоты пишут:

Но при этом есть одно исключение из данного правила – sinput-переменные можно варьировать в задачах оптимизации с помощью функции ParameterSetRange(). Данная функция создана специально для программного управления пространством доступных значений для любых input-переменных, в том числе и объявленных как static input (sinput). Другая функция ParameterGetInput() позволяет при запуске оптимизации (в обработчике OnTesterInit()) получить значения input-переменных и в случае необходимости переопределить шаг изменения и диапазон, в пределах которого будет перебираться значение оптимизируемого параметра.

Таким образом, сочетание модификатора sinput и двух функций по работе с input-параметрами позволяет создавать гибкие правила для задания интервалов оптимизации одних input-переменных в зависимости от значения других input-переменных.


Но на деле в MQL4 функции ParameterSetRange() нет. А ведь она задумывалась именно для решения описанной задачи при оптимизации.


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

так как парнишке помочь?
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано



CountSell() и CountBuy() достаточно вызвать один раз и результат использовать в выражении.



Слишком много перебора с использованием оператора цикла, что вроде нагружает процесор, тут решил одну идею проверить чтобы один раз вызвать и все сравнить. Компилятор пропустил, значит можно использовать.

if(((((CountBuy())>1) {
// ураааааа
}


vitek01, к чему такие сложности? :-/ Чтобы избежать многократного вызова функции CountBuy() (а соответственно и многократных ненужных переборов), достаточно сохранить полученные из функции данные в переменную. nixxer это и имел ввиду. Вот так:

int buyOrders=CountBuy();//вызываем функцию один раз

//а дальше используем эту переменную
if((buyOrders > 0 && Bid >= envup0) ||
(buyOrders > 0 && ma82 >= ma132 && ma81 // (buyOrders > 0 && open2 close1 && close1 > (OrderOpenPrice() + CloseDelta * Point) && time1 > OrderOpenTime())||
(buyOrders > 0 && close1 > NormalizeDouble(OrderOpenPrice() + CloseDelta * Point,Digits) && close1 OrderOpenTime()) ||
(buyOrders > 0 && Bid > NormalizeDouble(OrderOpenPrice() + CloseDelta * Point,Digits) && Bid OrderOpenTime()))

Через несколько дней Вы напрочь забудете какой смысл Вы вкладывали в это условие if(((((CountBuy())>1) Изменено пользователем DreamWorks
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

так как парнишке помочь?


Затрудняюсь ответить.

Видимо mobidik прав:

Ни как, тетстер не знает, что при false нужно пропустить то и то. Только в два этапа прогона: с установленным параметром на Ордер_2 = true и с галками по перебору его TP, SL и т.д. и с выключенным, Ордер_2 = false и без галок по перебору. Предварительно сохранив предыдущие результаты тестирования.



P.S. В MQL5 думаю эту проблему можно решить.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Спойлер




CountSell() и CountBuy() достаточно вызвать один раз и результат использовать в выражении.



Слишком много перебора с использованием оператора цикла, что вроде нагружает процесор, тут решил одну идею проверить чтобы один раз вызвать и все сравнить. Компилятор пропустил, значит можно использовать.

if(((((CountBuy())>1) {
// ураааааа
}


vitek01, к чему такие сложности? :-/ Чтобы избежать многократного вызова функции CountBuy() (а соответственно и многократных ненужных переборов), достаточно сохранить полученные из функции данные в переменную. nexxer это и имел ввиду. Вот так:

int buyOrders=CountBuy();//вызываем функцию один раз

//а дальше используем эту переменную
if((buyOrders > 0 && Bid >= envup0) ||
(buyOrders > 0 && ma82 >= ma132 && ma81 // (buyOrders > 0 && open2 close1 && close1 > (OrderOpenPrice() + CloseDelta * Point) && time1 > OrderOpenTime())||
(buyOrders > 0 && close1 > NormalizeDouble(OrderOpenPrice() + CloseDelta * Point,Digits) && close1 OrderOpenTime()) ||
(buyOrders > 0 && Bid > NormalizeDouble(OrderOpenPrice() + CloseDelta * Point,Digits) && Bid OrderOpenTime()))

Через несколько дней Вы напрочь забудете какой смысл Вы вкладывали в это условие if(((((CountBuy())>1)


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

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте! Да у Вас не "вопросик", а ВОПРОСИЩЕ! Если компилятор не выдает ошибок, то дело естественно в логической ошибке. А чтобы кому-то ее найти, надо разобраться и вникнуть в каждую строчку. Потратить на это уйму времени. И ради чего? Научиться программировать это Вам не поможет. Потому что нельзя вот так вот посмотреть три урока, скопировать кусок чужого кода, абсолютно не понимая что там внутри, увидеть что что-то не работает, прибежать на форум, задать подобный вопрос и научиться программировать. НЕЛЬЗЯ. Также нельзя таким образом по-бырому и свой "грааль запилить" (если Вы так торопитесь сделать именно это). А здесь тема по обучению MQL. Чтобы обучаться программированию, смотрите уроки последовательно, делайте домашние задания, читайте документацию по MQL, пишите несложные вещи но СВОИМИ руками и СВОЕЙ головой. Не пользуйтесь чужим кодом, пока не научитесь хорошо его читать. Идите от простого к сложному и все получиться. И если что-то непонятно именно в материале, в документации и т.п., то задавайте ради Бога вопросы в этой ветке. А Вы же пытаетесь из первого класса прыгнуть в одиннадцатый.



Здравствуйте! Есть правда в Ваших словах, но во всем согласиться не могу.
В третьем уроке дается пример того, как можно сделать советник на внешнем индикаторе. И для того, чтобы сделать советник на другом индикаторе, не обязательно переписывать советник «с нуля», достаточно заменить индикатор и поправить сигналы на открытие и закрытие ордеров применительно к новому индикатору и стратегии.Собственно говоря, это и было сделано: вместо индикатора ТМА вставлен индикатор Genesis Matrix.
Т.к. Genesis состоит из 4 входящих в него индикаторов - TVI, CCI, T3 и GHL, у него 8 буферов, четыре из которых (0,2,4 и 6) дают сигнал «up» (для каждого из 4 входящих в него индикаторов) и четыре (1,3,5 и 7) - «down». Если все 4 буфера дают сигнал «up» или «down» одновременно, индикатор дает общий сигнал на покупку или продажу соответственно.
Именно это и было предусмотрено советнике - при получении 4 сигналов «up» открытие ордера на покупку, при получении 4 сигналов «down» - открытие ордера на продажу. Закрытие ордеров по такому же принципу при наличии открытых ордеров.

Так что, как видите, маневров для ошибки было не так уж и много. А вопрос задал, так как считаю, что косяк системный и кто-то из опытных наверняка сталкивался с чем-то подобным.

Небольшое дополнение к вопросу. При прогоне в тестере стратегий сделки совершаются, при этом тестер тормозит и в режиме визуализатора после окончания в окне с графиком оказывается 256 индикаторов Genesis Matrix.
Так что если кто сталкивался подобным, подскажите, плиз. Google ничего найти не может :-)
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте! Есть правда в Ваших словах, но во всем согласиться не могу.
В третьем уроке дается пример того, как можно сделать советник на внешнем индикаторе. И для того, чтобы сделать советник на другом индикаторе, не обязательно переписывать советник «с нуля», достаточно заменить индикатор и поправить сигналы на открытие и закрытие ордеров применительно к новому индикатору и стратегии.Собственно говоря, это и было сделано: вместо индикатора ТМА вставлен индикатор Genesis Matrix.
Т.к. Genesis состоит из 4 входящих в него индикаторов - TVI, CCI, T3 и GHL, у него 8 буферов, четыре из которых (0,2,4 и 6) дают сигнал «up» (для каждого из 4 входящих в него индикаторов) и четыре (1,3,5 и 7) - «down». Если все 4 буфера дают сигнал «up» или «down» одновременно, индикатор дает общий сигнал на покупку или продажу соответственно.
Именно это и было предусмотрено советнике - при получении 4 сигналов «up» открытие ордера на покупку, при получении 4 сигналов «down» - открытие ордера на продажу. Закрытие ордеров по такому же принципу при наличии открытых ордеров.

Так что, как видите, маневров для ошибки было не так уж и много. А вопрос задал, так как считаю, что косяк системный и кто-то из опытных наверняка сталкивался с чем-то подобным.

Небольшое дополнение к вопросу. При прогоне в тестере стратегий сделки совершаются, при этом тестер тормозит и в режиме визуализатора после окончания в окне с графиком оказывается 256 индикаторов Genesis Matrix.
Так что если кто сталкивался подобным, подскажите, плиз. Google ничего найти не может :-)



То что тормозит, то тут нет ничего удивительного. Тормозить может, и скорее всего, из-за тяжелых алгоритмов самих индикаторов. Не факт, что индикаторы какие-то кривые, просто Вы используете 4 индикатора (8 буферов). При этом Вы на каждом тике проверяете все 8 буферов. При каждом обращении к буферу производятся вычисления в индикаторах. Вот и представьте себе объем этих вычислений. Если ТС не требует проверки показателей индикаторов на каждом тике, то можно тут оптимизировать (например, проверять с интервалом от нескольких секунд, а может и раз в минуту). Возможно не нужно следить за индикаторами, когда позиция в рынке... Ну и т.д. Все зависит от стратегии.
В конце тестирования в режиме визуализации на графике рисуются все индикаторы, которые используются - это норма.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Затрудняюсь ответить.

Видимо mobidik прав:

Ни как, тетстер не знает, что при false нужно пропустить то и то. Только в два этапа прогона: с установленным параметром на Ордер_2 = true и с галками по перебору его TP, SL и т.д. и с выключенным, Ордер_2 = false и без галок по перебору. Предварительно сохранив предыдущие результаты тестирования.



P.S. В MQL5 думаю эту проблему можно решить.


Всем спасибо за участие ))
Боюсь, что при прогоне в два этапа резы будут искаженными... При одних параметрах, например, Ордера_1 или чего-то другого, включенный Ордер_2 даст дополнительную прибыль, а при других может дать противоположный эффект... И наоборот. Поэтому, при отключенном Ордере_2, параметры Ордера_1 должны быть одни, а при включенном другие. Это никак не покажет прогон в два этапа ((
Так что, видимо, придется терять время, но гонять с лишними прогонами в один этап.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте, через раз выполняется вот это условие Bid > NormalizeDouble(OrderOpenPrice() + CloseDelta * Point,Digits) && Bid OrderOpenTime())) т.е. ордер должен закрываться только при условии когда цена выше цены открытия на определенное кол-во пунктов, но на деле условие может и не выполниться, подскажите что можно с этим сделать?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Помогите, не могу разобраться. Советник открывает ордер на каждый тик, как от этого избавиться.

Спойлер


void OnTick()
{
boprice = iHigh(_Symbol, PERIOD_D1,1)+DistancePoint*_Point;
soprice = iLow(_Symbol, PERIOD_D1,1)-DistancePoint*_Point;
soprice2 = iLow(_Symbol, PERIOD_D1,2)-DistancePoint*_Point;
boprice2 = iHigh(_Symbol, PERIOD_D1,2)+DistancePoint*_Point;
TP =0;
SL =0;
OP =0;
if(CountBuy()==0 && UseDojiCandles&&Doji()==1)
{
SL = soprice2;
TP = NormalizeDouble(Ask+(Ask-soprice2)*TPCoef, Digits);
if(!OrderSend(Symbol(),OP_BUY,0.1,Ask,0,SL,TP,NULL,0,0,Blue)) Print("Не удалось отправить ордер в покупку");
}
if(UseDojiCandles&&Doji()==-1 && CountSell()==0)
{
SL = boprice2;
TP = NormalizeDouble(Bid-(boprice2-Bid)*TPCoef, Digits);
if(!OrderSend(Symbol(),OP_SELL,0.1,Bid,0,SL,TP,NULL,0,0,Red)) Print("Не удалось отправить ордер в продажу");
}

}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade >=0; trade--)
{
if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol()&& OrderMagicNumber() == MagicNumber&& OrderType() == OP_SELL)
count++;
}
}

return(count);
}

int CountBuy()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade>=0; trade--)
{
if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol()&& OrderMagicNumber() == MagicNumber&& OrderType() == OP_BUY)
count++;
}
}

return(count);
}

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте, через раз выполняется вот это условие Bid > NormalizeDouble(OrderOpenPrice() + CloseDelta * Point,Digits) && Bid OrderOpenTime())) т.е. ордер должен закрываться только при условии когда цена выше цены открытия на определенное кол-во пунктов, но на деле условие может и не выполниться, подскажите что можно с этим сделать?



Из этой строчки не видно, какие значения могут принимать используемые в ней переменные (CloseDelta, low1, time1). Судя по всему Вы не хотите показать весь Ваш код полностью, ну или хотя-бы ту часть, где не будет неизвестных переменных. Если этого не сделаете, по подобным фрагментам Вам никто не поможет. А вообще все просто на самом деле: если программа не выполняет каких-либо действий, то условия для их выполнения НЕ НАСТУПИЛИ. Вот и все. Другого не дано. Копайте в этом направлении.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Помогите, не могу разобраться. Советник открывает ордер на каждый тик, как от этого избавиться.



Функцию Doji() в студию.


Аааа.... просмотрел. Вы Magic то ордерам задайте :) Изменено пользователем DreamWorks
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Помогите, не могу разобраться. Советник открывает ордер на каждый тик, как от этого избавиться.



Функцию Doji() в студию.


Аааа.... просмотрел. Вы Magic то ордерам задайте :)

Огромное спасибо! Неделю бился. Слона и не приметил ~x(
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Приветствую. Помогите разобраться с классами, я уже задавал вопрос:

"Подскажите, как сделать чтоб для каждого нового ордера создавались отдельные переменные (пусть А, В, С для каждого) ? Предполагаю что это что-то типа Peremennaja+ticket=А12345, В12345, С12345."

Мне ответили что нужно написать класс и для каждого ордера создавать объект класса.

Может кто поможет примерами или мануалом именно для такой или подобной ситуации?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Приветствую. Помогите разобраться с классами, я уже задавал вопрос:

"Подскажите, как сделать чтоб для каждого нового ордера создавались отдельные переменные (пусть А, В, С для каждого) ? Предполагаю что это что-то типа Peremennaja+ticket=А12345, В12345, С12345."

Мне ответили что нужно написать класс и для каждого ордера создавать объект класса.

Может кто поможет примерами или мануалом именно для такой или подобной ситуации?



Здравствуйте. Думаю, что необязательно для этих целей класс ордера писать. Можно обойтись объявлением структуры, в которой будут все необходимые переменные для работы с ордером. Затем создаете массив структур и храните/меняете в нем всю необходимую информацию, связанную с конкретным ордером. Просто начать знакомство с ООП со структур будет проще. Разобраться в этом Вам поможет документация по MQL. Также есть отличные видеоуроки от xbms по структурам и классам. Плюс, море информации по объектно-ориентированному программированию по запросу в Google. Вообще это безусловно мощнейший инструмент, который надо изучать и уметь пользоваться. Без этого некоторые задачи решить практически невозможно, ну или крайне-крайне сложно.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Проблема такая: нужно объявить динамический двумерный массив, в котором второе измерение устанавливается через переменную. Примерно так

//---
input int lvlF=5;
//---
double array[][2*lvlF+3];

Компилятор ругается английскими буквами '[' - invalid index value уже вроде всё перепробовал :(

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Проблема такая: нужно объявить динамический двумерный массив, в котором второе измерение устанавливается через переменную. Примерно так

//---
input int lvlF=5;
//---
double array[][2*lvlF+3];

Компилятор ругается английскими буквами '[' - invalid index value уже вроде всё перепробовал :(



При объявлении массива, его размер нельзя задавать выражением. Для изменения размера массива служит функция ArrayResize(). Но с ее помощью можно задать размер только для первого измерения массива. Изменение размера второго измерения массива в MQL, если не ошибаюсь, не предусмотрено.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте, помогите с проблемой..

На терминале работает один бот на разных парах. Перед кодом открытия ордера, стоит if(total==0), total - переменная, если её убрать, то бот открывает тысячи сделок одновременно, в противном случае бот не открывает ордера по другим парам, если в терминале уже есть любой открытый ордер, хоть и разные магики, как можно исправить ситуацию ?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Здравствуйте, помогите с проблемой..

На терминале работает один бот на разных парах. Перед кодом открытия ордера, стоит if(total==0), total - переменная, если её убрать, то бот открывает тысячи сделок одновременно, в противном случае бот не открывает ордера по другим парам, если в терминале уже есть любой открытый ордер, хоть и разные магики, как можно исправить ситуацию ?


Предположу что процедура выбора и подсчета ордеров прописана не корректно, раз на работу влияет наличие других ордеров.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Здравствуйте, помогите с проблемой..

... как можно исправить ситуацию ?



Здравствуйте. Переменной total присваивается некое значение. Смотрите где и как это делается. Скорее всего это некая функция, подсчитывающая количество каких-то ордеров. От того какие именно ордера при подсчете учитывает функция и надо отталкиваться в решении Вашей проблемы. А так, что-то внятное и полезное сказать невозможно не видя кода.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

бот не открывает ордера по другим парам, если в терминале уже есть любой открытый ордер, хоть и разные магики, как можно исправить ситуацию ?



Скорее всего, раз меджики разные, у Вас переменной total присваивается значение функции OrdersTotal(). Следует вместо неё использовать отдельную функцию по подсчету ордеров открытых только этой совой. // Результат работы OrdersTotal() не зависит от пары и меджика. //
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


бот не открывает ордера по другим парам, если в терминале уже есть любой открытый ордер, хоть и разные магики, как можно исправить ситуацию ?



Скорее всего, раз меджики разные, у Вас переменной total присваивается значение функции OrdersTotal(). Следует вместо неё использовать отдельную функцию по подсчету ордеров открытых только этой совой. // Результат работы OrdersTotal() не зависит от пары и меджика. //


Видимо нужно ордер тотал заменить на что то другое, вот код:

if (Hour()>=2 && Hour() if (Hour()>=5 && Hour() if (Hour()>=10 && Hour() if (Hour()>=14 && Hour() if (Hour()>=16 && Hour() if (Hour()>=18 && Hour()


if (total==0) // если нет позиций
{
// Buy
if(Close[2]BB_Up && MA_1_Long>MA_2_Long)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,50,BB_Low-reserve*Point,0,"Buy MIN RISK",86388,0,Green);
return(0);
}


И есть в закрытии ордеров :

total=OrdersTotal();

for(cnt=0;cnt
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

total=OrdersTotal();


Вот именно, подключите готовую или напишите свою функцию подсчета ордеров вместо OrdersTotal() и будет Вам счастье, удачи.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


total=OrdersTotal();


Вот именно, подключите готовую или напишите свою функцию подсчета ордеров вместо OrdersTotal() и будет Вам счастье, удачи.


Я пробую к примеру int Total = OrderCount(-1, 0, "USDCHF"); только по паре.
но у меня не определяется OrderCount, пишет ошибку
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...