Вот как я это сделал посмотрите может кому поможет
Таким образом теперь что бы включить обычный трал мне не нужно перерывать всю свою базу кодов в поиске нужного кода, или переписывать его с ноля, я просто в советник дописываю Tral ()
и при компиляции мета едитор дописывает нужный фрагмент в моего эксперта .....
В таком случае нужно писать не так: используйте функции с параметрами и такие, что не модифицируют глобальные переменные. Например, для первого случая:
Нужное количество, например, рыночных ордеров на покупку получите так OrdCount[OP_BUY]
Гораздо меньше проблем будет.
с чем могут быть проблемы и чем моя функция хуже ???
и ещё вопрос я не работал с массивами не знаю ... если происходит перезагрузка компьютера информация из массивов стирается или каким то образом востанавливается ????
в моем коде что бы не произошло на каждом тике будет достоверная информация о ордерах ....
с чем могут быть проблемы и чем моя функция хуже ???
и ещё вопрос я не работал с массивами не знаю ... если происходит перезагрузка компьютера информация из массивов стирается или каким то образом востанавливается ????
в моем коде что бы не произошло на каждом тике будет достоверная информация о ордерах ....
Ваша функция вообще бесполезна, поскольку результатом ее работы Вы воспользоваться не сможете. Еще раз: те переменные, которые в ней описаны видны только в ней, но в ней они ни как не используются после подсчета их значений. То есть, и подсчитывать тогда не обязательно.
Чтобы она выполняла то, что Вы хотите ее нужно немного изменить:
int Orders (int &n=0, int &b=0, int &s=0, int &bs=0,int &ss=0,int &bl=0,int &sl=0)
{
n=0; b=0; s=0; bs=0; ss=0; bl=0; sl=0;
for (int i=OrdersTotal()-1; i>=0; i--)
{if(OrderSelect(i, SELECT_BY_POS))
{if(OrderSymbol()==Symbol() )
{ n ++;
if (OrderType()==OP_BUY &&OrderMagicNumber()==Magic){b ++;}
if (OrderType()==OP_SELL &&OrderMagicNumber()==Magic){s ++;}
if (OrderType()==OP_BUYSTOP &&OrderMagicNumber()==Magic){bs++;}
if (OrderType()==OP_SELLSTOP &&OrderMagicNumber()==Magic){ss++;}
if (OrderType()==OP_BUYLIMIT &&OrderMagicNumber()==Magic){bl++;}
if (OrderType()==OP_SELLLIMIT&&OrderMagicNumber()==Magic){sl++;}
}}}
return(n);
}
VladislavVG:
Так (директивой #import) включают библиотеки.
Согласен ... Так и библиотеки имеют расширение mqh .....
Я перепробовал массу способов и заметил что то что написано в документации работает или работало наверно в билдах ниже 300 сейчас в документации много неправды, вот так вот оно и получается ....
Согласен ... Так и библиотеки имеют расширение mqh .....
Я перепробовал массу способов и заметил что то что написано в документации работает или работало наверно в билдах ниже 300 сейчас в документации много неправды, вот так вот оно и получается ....
Нет, библиотеки имеют расширение mq4. Директивой #import подключается код из откомпилированных файлов, то есть с расширением .ex4. Происходит это на этапе исполнения кода. Тогда еще и нужен заголовочный файл - с расширением .mqh. В нем должны быть описания подключаемых функций. Иначе на этапе компиляции Вы подключаемыми функциями не сможете воспользоваться.
В случае же использования #include включение кода происходит на этапе компиляции - это все равно, что Вы внесете код функции в соответствующее место файла - эксперта, индикатора или скрипта. Работать будет быстрее.
VladislavVG:
Ваша функция вообще бесполезна, поскольку результатом ее работы Вы воспользоваться не сможете. Еще раз: те переменные, которые в ней описаны видны только в ней, но в ней оин ни как не используются после подсчета их значений. То есть, и подсчитывать тогда не обязательно.
В таком случае Вы привели не тот код - если у Вас в функции описаны b и s, то во внешние
b и s меняться не будут. Если Вы меняете из функции внешние переменные (то есть в самой функции b и s не описаны), то это плохой стиль программирования - Вам всегда нужно будет помнить какие функции меняют какие переменные. И какие внешние переменные что обозначают. Не дай бог получится, что разные функции меняют переменные с одинаковым названием, но разным смыслом - проблем не оберетесь. Пока код мал - это не имеет особого значения, но с ростом кода... Вы рискуете получить эффект прямопротивоположный желаемому: вместо упрощения использования - накручивание проблем поднятых, что называется "с пола".
Вот как я это сделал посмотрите может кому поможет
Таким образом теперь что бы включить обычный трал мне не нужно перерывать всю свою базу кодов в поиске нужного кода, или переписывать его с ноля, я просто в советник дописываю Tral ()
и при компиляции мета едитор дописывает нужный фрагмент в моего эксперта .....
В таком случае нужно писать не так: используйте функции с параметрами и такие, что не модифицируют глобальные переменные. Например, для первого случая:
Нужное количество, например, рыночных ордеров на покупку получите так OrdCount[OP_BUY]
Гораздо меньше проблем будет.
с чем могут быть проблемы и чем моя функция хуже ???
и ещё вопрос я не работал с массивами не знаю ... если происходит перезагрузка компьютера информация из массивов стирается или каким то образом востанавливается ????
в моем коде что бы не произошло на каждом тике будет достоверная информация о ордерах ....
с чем могут быть проблемы и чем моя функция хуже ???
и ещё вопрос я не работал с массивами не знаю ... если происходит перезагрузка компьютера информация из массивов стирается или каким то образом востанавливается ????
в моем коде что бы не произошло на каждом тике будет достоверная информация о ордерах ....
Ваша функция вообще бесполезна, поскольку результатом ее работы Вы воспользоваться не сможете. Еще раз: те переменные, которые в ней описаны видны только в ней, но в ней они ни как не используются после подсчета их значений. То есть, и подсчитывать тогда не обязательно.
Чтобы она выполняла то, что Вы хотите ее нужно немного изменить:
Так (директивой #import) включают библиотеки.
Согласен ... Так и библиотеки имеют расширение mqh .....
Я перепробовал массу способов и заметил что то что написано в документации работает или работало наверно в билдах ниже 300 сейчас в документации много неправды, вот так вот оно и получается ....
Согласен ... Так и библиотеки имеют расширение mqh .....
Я перепробовал массу способов и заметил что то что написано в документации работает или работало наверно в билдах ниже 300 сейчас в документации много неправды, вот так вот оно и получается ....
Нет, библиотеки имеют расширение mq4. Директивой #import подключается код из откомпилированных файлов, то есть с расширением .ex4. Происходит это на этапе исполнения кода. Тогда еще и нужен заголовочный файл - с расширением .mqh. В нем должны быть описания подключаемых функций. Иначе на этапе компиляции Вы подключаемыми функциями не сможете воспользоваться.
В случае же использования #include включение кода происходит на этапе компиляции - это все равно, что Вы внесете код функции в соответствующее место файла - эксперта, индикатора или скрипта. Работать будет быстрее.
Ваша функция вообще бесполезна, поскольку результатом ее работы Вы воспользоваться не сможете. Еще раз: те переменные, которые в ней описаны видны только в ней, но в ней оин ни как не используются после подсчета их значений. То есть, и подсчитывать тогда не обязательно.
Странно как то .... Чем эт она бесполезна )))))
В таком исполнении кода компилятор ругается
int Orders (int &n=0, int &b=0, int &s=0, int &bs=0,int &ss=0,int &bl=0,int &sl=0)
Странно как то .... Чем эт она бесполезна )))))