xrust писал (а)>> Еще вопрос, не будете ли вы против если я в своих функциях буду применять, синтаксис, и названия переменных как у Вас, что бы так сказать стандартизировать.
Эта функция выполняет установку объекта OBJ_LABEL текстовая метка на текущем графике.
nm - Наименование объекта. Обязательный параметр.
tx - Текст. Обязательный параметр.
cl - Цвет метки. Обязательный параметр.
xd - Координата X в пикселах относительно угла привязки. Обязательный параметр.
yd - Координата Y в пикселах относительно угла привязки. Обязательный параметр.
cr - Номер угла привязки. Допустимые значения: 0-левый верхний угол, 1-правый верхний, 2-левый нижний, 3-правый нижний. Значение по умолчанию - 0.
fs - Размер шрифта. Значение по умолчанию - 9.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Установка текстовой метки, объект OBJ_LABEL. |//+----------------------------------------------------------------------------+//| Параметры: |//| nm - наименование объекта |//| tx - текст |//| cl - цвет метки |//| xd - координата X в пикселах |//| yd - координата Y в пикселах |//| cr - номер угла привязки (0 - левый верхний, |//| 1 - правый верхний, |//| 2 - левый нижний, |//| 3 - правый нижний ) |//| fs - размер шрифта (9 - по умолчанию ) |//+----------------------------------------------------------------------------+voidSetLabel(stringnm, stringtx, colorcl, intxd, intyd, intcr=0, intfs=9){if(ObjectFind(nm)<0)ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER , cr);
ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
Создать файл-"инклудник" (mqh) (наверное 2 - "торговые" и "прочие"), договориться о его названии и заставить "разработчиков" включать его в дистрибутив.
Мысль убить нельзя, дело идет к консолидации уже давно. Моя мечта как непрофессионала - оставить рядовому пользователю только принятие решений, освободив его от программных тонкостей.
Разработки Игоря (потрясающие по последовательности и детализации) подошли к этому максимально близко. Тем более автор не только программирует, но и постоянно держит свои
советники на реале, что умножает практическую ценность кода.
Хотелось бы услышать мнение Игоря по поводу возможности mqh-оформления его разработок, достоинств и недостатков такой реализации.
granit77 писал (а)>> Хотелось бы услышать мнение Игоря по поводу возможности mqh-оформления его разработок, достоинств и недостатков такой реализации.
пра вазможности...
MQH-файлы у меня уже давно сделаны... Пока не выкладываю... Типа туз в рукаве... Завершающий аккорд будет... Выложу все функции и подведу итог выкладыванием mqh-файлов.
пра дастоинства и нидастатки...
MQH-файлы - это удобно. Можно использовать в разных советниках. Код конкретного советника существенно сокращается. Остаётся только голимая логика и ещё кое-что, а всё навороты и обвёртки снаружи лежат.
Но я mqh-файлами пользуюсь редко, и в основном только одним. Это stdlib.mqh. А все необходимые функции копипастю в файл советника. Мне так удобнее. Привычкой такой обзавёлся, когда писал много на заказ и часто забывал заказчику выслать тот или иной mqh-файл. Да и самому мне удобнее копировать в разные папки терминалов один файл советника, и не тащить за ним целый ворох инклудников.
Эта функция вычисляет координаты точки пересечения двух прямых. Каждая прямая задаётся парой координат своих точек. В функцию в качестве параметров передаются три массива:
x - Массив абсцисс. Должен содержать четыре элемента: x[0], x[1] - абсциссы первой прямой, x[2], x[3] - абсциссы второй прямой.
y - Массив ординат. Должен содержать четыре элемента: y[0], y[1] - ординаты первой прямой, y[0], y[1] - ординаты второй прямой.
t - Массив координат искомой точки пересечения двух прямых. После нормального исполнения функции данный массив будет содержать два элемента: t[0] - абсцисса искомой точки пересечения двух прямых и t[1] - ордината этой же точки.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Вычисляет координаты точки пересечения двух прямых. |//| Каждая прямая задаётся парой координат своих точек. |//+----------------------------------------------------------------------------+//| Параметры: |//| x - массив абсцисс x[0], x[1] - первая прямая |//| x[2], x[3] - вторая прямая |//| y - массив ординат y[0], y[1] - первая прямая |//| y[0], y[1] - вторая прямая |//| t - массив искомых координат t[0] - абсцисса |//| t[1] - ордината |//+----------------------------------------------------------------------------+voidCrossPointOfLines(double& x[], double& y[], double& t[]){doublez=(y[3]-y[2])*(x[1]-x[0])-(y[1]-y[0])*(x[3]-x[2]);
ArrayResize(t, 2);
ArrayInitialize(t, 0.0);
if(z==0)Print("CrossPointOfLines(): Не удалось найти точку пересечения!");
else{doublexy1=x[1]*y[0]-x[0]*y[1];
doublexy2=x[3]*y[2]-x[2]*y[3];
t[0]=NormalizeDouble((xy1*(x[3]-x[2])-xy2*(x[1]-x[0]))/z, 0);
t[1]=(xy1*(y[3]-y[2])-xy2*(y[1]-y[0]))/z;
}}
В качестве примера использования функции CrossPointOfLines() я традиционно предлагаю свой скрипт (см. вложение). Чтобы скрипт правильно отработал, нужно на текущем графике нарисовать две пересекающиеся прямые, любого из следующих типов: вертикальная, горизонтальная, трендовая. А потом набросить на график скрипт. Результатом работы скрипта будет левая ценовая метка в точке пересечения двух прямых.
ЗЫ. Во вложении скрипт для тестирования функции CrossPointOfLines().
Эта функция выполняет установку объекта OBJ_REGRESSION канал линейной регрессии на текущем графике.
cl - Цвет объекта. Обязательный параметр.
nm - Наименование объекта. При передаче умолчательного значения - "" в качестве имени используется время открытия текущего бара.
t1 - Первая координата времени установки объекта. Значение по умолчанию - 0 - время открытия десятого бара.
t2 - Вторая координата времени установки объекта. Значение по умолчанию - 0 - время открытия текущего бара.
ry - Флаг свойства ЛУЧ. Значение по умолчанию False.
st - Стиль линии. Допустимые значения STYLE_SOLID (по умолчанию), STYLE_DASH, STYLE_DOT, STYLE_DASHDOT, STYLE_DASHDOTDOT.
wd - Толщина линии. Значение по умолчанию - 1.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Установка объекта OBJ_REGRESSION канал линейной регрессии. |//+----------------------------------------------------------------------------+//| Параметры: |//| cl - цвет линии |//| nm - наименование ( "" - время открытия текущего бара) |//| t1 - время открытия бара ( 0 - Time[10]) |//| t2 - время открытия бара ( 0 - Time[0]) |//| ry - луч (False - по умолчанию) |//| st - стиль линии ( 0 - простая линия) |//| wd - ширина линии ( 1 - по умолчанию) |//+----------------------------------------------------------------------------+voidSetRegression(colorcl, stringnm="", datetimet1=0, datetimet2=0,
boolry=False, intst=STYLE_SOLID, intwd=1){if(nm=="")nm=DoubleToStr(Time[0], 0);
if(t1<=0)t1=Time[10];
if(t2<=0)t2=Time[0];
if(ObjectFind(nm)<0)ObjectCreate(nm, OBJ_REGRESSION, 0, 0,0, 0,0);
ObjectSet(nm, OBJPROP_TIME1, t1);
ObjectSet(nm, OBJPROP_TIME2, t2);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_RAY , ry);
ObjectSet(nm, OBJPROP_STYLE, st);
ObjectSet(nm, OBJPROP_WIDTH, wd);
}
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Еще вопрос, не будете ли вы против если я в своих функциях буду применять, синтаксис, и названия переменных как у Вас, что бы так сказать стандартизировать.
Делайте то, что считаете нужным.
Функция SetLabel().
Эта функция выполняет установку объекта OBJ_LABEL текстовая метка на текущем графике.
Примеры использования функции SetLabel().
ЗЫ. Во вложении скрипт для тестирования функции SetLabel().
Создать файл-"инклудник" (mqh) (наверное 2 - "торговые" и "прочие"), договориться о его названии и заставить "разработчиков" включать его в дистрибутив.
Мысль убить нельзя, дело идет к консолидации уже давно. Моя мечта как непрофессионала - оставить рядовому пользователю только принятие решений, освободив его от программных тонкостей.
Разработки Игоря (потрясающие по последовательности и детализации) подошли к этому максимально близко. Тем более автор не только программирует, но и постоянно держит свои
советники на реале, что умножает практическую ценность кода.
Хотелось бы услышать мнение Игоря по поводу возможности mqh-оформления его разработок, достоинств и недостатков такой реализации.
Хотелось бы услышать мнение Игоря по поводу возможности mqh-оформления его разработок, достоинств и недостатков такой реализации.
пра вазможности...
MQH-файлы у меня уже давно сделаны... Пока не выкладываю... Типа туз в рукаве... Завершающий аккорд будет... Выложу все функции и подведу итог выкладыванием mqh-файлов.
пра дастоинства и нидастатки...
MQH-файлы - это удобно. Можно использовать в разных советниках. Код конкретного советника существенно сокращается. Остаётся только голимая логика и ещё кое-что, а всё навороты и обвёртки снаружи лежат.
Но я mqh-файлами пользуюсь редко, и в основном только одним. Это stdlib.mqh. А все необходимые функции копипастю в файл советника. Мне так удобнее. Привычкой такой обзавёлся, когда писал много на заказ и часто забывал заказчику выслать тот или иной mqh-файл. Да и самому мне удобнее копировать в разные папки терминалов один файл советника, и не тащить за ним целый ворох инклудников.
Может у Вас, в полезных функциях, есть скрипт который смог бы выполнять открытие ордеров описанной в статье http://www.kroufr.ru/content/view/1027/124/.
Вручную занимает много времени.Если нет,то посоветуйте где найти.спасибо. .
Функция CrossPointOfLines().
Эта функция вычисляет координаты точки пересечения двух прямых. Каждая прямая задаётся парой координат своих точек. В функцию в качестве параметров передаются три массива:
Пример использования функции CrossPointOfLines().
В качестве примера использования функции CrossPointOfLines() я традиционно предлагаю свой скрипт (см. вложение). Чтобы скрипт правильно отработал, нужно на текущем графике нарисовать две пересекающиеся прямые, любого из следующих типов: вертикальная, горизонтальная, трендовая. А потом набросить на график скрипт. Результатом работы скрипта будет левая ценовая метка в точке пересечения двух прямых.
ЗЫ. Во вложении скрипт для тестирования функции CrossPointOfLines().
Функция SetRegression().
Эта функция выполняет установку объекта OBJ_REGRESSION канал линейной регрессии на текущем графике.