Уроки по программированию на языке MQL4 от eevviill

  • Автор темы Автор темы eevviill
  • Дата начала Дата начала

Ugar

Гуру форума
Да.
Но я согласен что програмировать и так тяжело, а тут ещё пишут замысловато.
Каждый пишет так как ему самому удобнее. Без учёта что бы новичкам понятнее было. Не учебное пособие же пишут.
Я например, в такой ситуации написал бы if(OrderType()<2) вместо if(OrderType()==OP_SELL||OrderType()==OP_BUY).
У такого написания есть несколько достоинств.
1. OrderType это функция, а вызывается она только один раз, вместо 2. Выигрыш в производительности. Хоть и небольшой, но всё же.
2. В if(OrderType()<2) только 1 логическая операция, в if(OrderType()==OP_SELL||OrderType()==OP_BUY) 3 логических операции.
Опять же, в 3 раза меньше логических операций, мне больше нравится.
3. Мне придётся, значительно меньше кнопок нажимать что бы написать мой вариант.
 

eevviill

Заблокирован
Каждый пишет так как ему самому удобнее. Без учёта что бы новичкам понятнее было. Не учебное пособие же пишут.
Я например, в такой ситуации написал бы if(OrderType()<2) вместо if(OrderType()==OP_SELL||OrderType()==OP_BUY).
У такого написания есть несколько достоинств.
1. OrderType это функция, а вызывается она только один раз, вместо 2. Выигрыш в производительности. Хоть и небольшой, но всё же.
2. В if(OrderType()<2) только 1 логическая операция, в if(OrderType()==OP_SELL||OrderType()==OP_BUY) 3 логических операции.
Опять же, в 3 раза меньше логических операций, мне больше нравится.
3. Мне придётся, значительно меньше кнопок нажимать что бы написать мой вариант.
А как насчёт того чтобы через скажем месяц разбирать свой код?
Конечно можно привыкнуть. Но всё же. Может ещё кто захочет взглянуть.
Хотя... Я сам пишу ! вместо =false

PHP:
Expand Collapse Copy
OrderType это функция, а вызывается она только один раз
Ну можно перед сравнением записать её в переменную.
 
Последнее редактирование:

Ugar

Гуру форума
А как насчёт того чтобы через скажем месяц разбирать свой код?
Конечно можно привыкнуть. Но всё же. Может ещё кто захочет взглянуть.
Хотя... Я сам пишу ! вместо =false
Сам я уже давно привык. А то что кому то будет сложнее понять мой код, мне плевать. Если программу писал бесплатно, я ещё специально запутаю. Что бы сложнее было разобраться новичкам. Научен несколькими случаями. Делал доброе дело, писал бесплатно, потом жалел об этом. Один раз меня даже забанили на пол года на одном из форумов. Сейчас бесплатно если и пишу то так запутанно, что даже опытный программист, быстрее свой код напишет, чем с матом в моём разберётся.
А у новичков вообще шансов почти нет что то понять.
 

Ugar

Гуру форума
PHP:
Expand Collapse Copy
OrderType это функция, а вызывается она только один раз
Ну можно перед сравнением записать её в переменную.
Да, но это если значение типа ордера используется несколько раз.
Если тип ордера нужен только один раз, то незачем ему выделять переменную.
 

eevviill

Заблокирован
Поскольку не хочу встречатся с супер програмистами в соседних ветках, то буду писать недовольство здесь.

Хотел по тикету проверять есть ли ордер в рынке методом
PHP:
Expand Collapse Copy
OrderSelect(tick,SELECT_BY_TICKET,MODE_TRADES)
А эти умные люди сделали так
PHP:
Expand Collapse Copy
Параметр MODE_TRADES игнорируется, если ордер выбирается по номеру тикета.
тоесть ордер по тикету смотрится и из истории тоже.

Браво!
Теперь прийдётся искать пути которыми пользуются грамотные супер програмисты.
О нашел способ суперпрограмистов через .опу
PHP:
Expand Collapse Copy
bool closed;
if(OrderSelect(tick,SELECT_BY_TICKET))
if(OrderCloseTime()>0) closed=true;
Правильно зачем писать 1 строку если можно 10.
 
Последнее редактирование модератором:

eevviill

Заблокирован
ДМ 4

PHP:
Expand Collapse Copy
OrderModify(ticket_op,OrderOpenPrice(),OrderStopLoss(),ObjectGet(kvard_chek,OBJPROP_PRICE1),0,CLR_NONE);

Хо хо хо. Чтобы модифицировать ордер надо его перед этим выбрать OrderSelect, если хочешь чтобы работали OrderOpenPrice() и т.д.
Умно! А нах тогда в OrderModify тикет самого ордера передаём???
Правильно, чтобы посложнее было.
 

Milord

Местный знаток
PHP:
Expand Collapse Copy
OrderModify(ticket_op,OrderOpenPrice(),OrderStopLoss(),ObjectGet(kvard_chek,OBJPROP_PRICE1),0,CLR_NONE);

Хо хо хо. Чтобы модифицировать ордер надо его перед этим выбрать OrderSelect, если хочешь чтобы работали OrderOpenPrice() и т.д.
Умно! А нах тогда в OrderModify тикет самого ордера передаём???
Правильно, чтобы посложнее было.
согласен!интересно - кто тупит в "Метаквотах", руководство, или программисты, или те и другие..?)
удивился ответам на их форуме, будто и слышать не хотят никакой критики в свой адрес..)
кстати, тоже этот момент непонятен, зачем так тупо сделано, может им этот вопрос задать на их форуме?)
 
Последнее редактирование:

Milord

Местный знаток
Василий привет!)
будет ли ДМ5?)
я думаю им на форуме писать их ДМ, найденные, то есть явно тупые места в MQL4, посмотрим че они скажут, подтвердят свою тупость или нет)))будет смешно посмотреть))
 

eevviill

Заблокирован
Василий привет!)
будет ли ДМ5?)
я думаю им на форуме писать их ДМ, найденные, то есть явно тупые места в MQL4, посмотрим че они скажут, подтвердят свою тупость или нет)))будет смешно посмотреть))
Стирают сразу. Даже предложение, а не критику.
 

Milord

Местный знаток
ДМ-5

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

Dom

Гуру форума
Здравствуйте eevviill!! В MQL4 я совсем немного, но как-то разбирался, в новом же темный лес, даже не знаю с чего начать, а старая дорога скоро закончится. Нельзя ли возобновить Ваши уроки, в свете новых изменений, хотя бы по чайной ложке. Я думаю не мне одному это будет полезно. На нет и суда нет. Извините если что не так.
 

eevviill

Заблокирован
Здравствуйте eevviill!! В MQL4 я совсем немного, но как-то разбирался, в новом же темный лес, даже не знаю с чего начать, а старая дорога скоро закончится. Нельзя ли возобновить Ваши уроки, в свете новых изменений, хотя бы по чайной ложке. Я думаю не мне одному это будет полезно. На нет и суда нет. Извините если что не так.
Привет.
Когда всем принудительно внедрят новый билд, тогда буду пробовать.
Основной геморой это разширенее типов данных. Хотя можно по старинке int писать.
 

eevviill

Заблокирован
су.. ДМ ...

Угадайте что возвращает алерт.
PHP:
Expand Collapse Copy
double zero = 1 / 60;
 

Genadi22

Новичок форума
Доброго времени суток учитель...
хотя можно и неофициально
привет - eevviill

в общем,- я в ступоре и вдохновение куда то подалось - может в отпуск на олимпиаду...

у меня вопрос:

доводилось ли писать фунцкцию определяющую свечу на графике,- с полностью модифицированными параматрами...

Open[1]
Close[1]
High[1]
Low[1]

с этими параметрами ничего не получается,- и на большее меня не хватает...

и кстати надо отметить,- что эту тему сторонятся наши программисты...
 

eevviill

Заблокирован
Доброго времени суток учитель...
хотя можно и неофициально
привет - eevviill

в общем,- я в ступоре и вдохновение куда то подалось - может в отпуск на олимпиаду...

у меня вопрос:

доводилось ли писать фунцкцию определяющую свечу на графике,- с полностью модифицированными параматрами...

Open[1]
Close[1]
High[1]
Low[1]

с этими параметрами ничего не получается,- и на большее меня не хватает...

и кстати надо отметить,- что эту тему сторонятся наши программисты...
Вообще не понял в чём проблема.
 

Genadi22

Новичок форума
Вообще не понял в чём проблема.

шас попробую прояснить...

под модифицированием подразумевал:

1. тело свечи - в пунктах...
2. стержень свечи - в пунктах...
3. место положение тела - относительно длины стержня в процентах...

например:

extern int S1 = 10; // длина тела свечи Open - Close
extern int S2 = 25; // длина стержня High - Low
extern double S3 = 0.25; // положение тела свечи относительно начала стержня в - %
 

Вложения

  • 5.png
    5.png
    2,2 КБ · Просмотры: 14
Последнее редактирование:

Genadi22

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

eevviill

Заблокирован
...
1. тело свечи - в пунктах...
2. стержень свечи - в пунктах...
3. место положение тела - относительно длины стержня в процентах...
1) MathAbs(Close[1]-Open[1])/Point
2) (High[1]-Close[1])/Point (Close[1]-Low[1])/Point
3) (High[1]-Low[1])/Point это 100%
 
Верх