Ответить
31.01.2015, 19:23
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,624
Поблагодарили 3,758 раз(а) / Репутация: 3750
Всем Привет!
у меня вопрос относительно функции OrdersTotal(), я верно понимаю что отсчет открытых ордеров идет от 0 , а не от 1, то есть при 1ном открытом ордере, функция OrdersTotal()=0, если это так, то при 10 открытых ордерах, она покажет 9???
отсюда понятна путаница в кодах разных программистов, когда они считают число открытых ордеров или выбирают ордера в цикле
fot(int i=0;i<OrdersTotal();i++) или лучше так?
fot(int i=0;i=OrdersTotal();i++)


еще вопрос - есть ли разница в работе советника если перебирать ордера наоборот, вот так:
fot(int i<OrdersTotal();i=0;i--)
или вот так:
for(int i=OrdersTotal()-1; i>=0; i--)

напишите плиз понятно где ошибки в каких вариантах циклов по выбору ордеров, и в чем именно ошибки, и есть ли разница в работе если ошибок нету, при прямом переборе и обратном???
ЗАРАНЕЕ СПАСИБО!
Функция OrdersTotal() возвращает количество рыночных и отложенных ордеров, но нумеруются они от 0 до OrdersTotal()-1
Направление перебора важно только для закрытия ВСЕХ ордеров. Причины описывать мне сейчас лениво, уже это обсуждалось неоднократно. В остальных случаях не важно.
Только любой вариант должен быть логически правильным:

1. fot(int i=0;i<OrdersTotal();i++) - Логичный вариант от индекса 0 пока индекс меньше количества ордеров. Работать будет безукоризненно, но в скрипте закрытия ВСЕХ ордеров может дать сбой. Из относительно большого количества ордеров пропустит парочку... Конкретно не угадаешь сколько будет пропущено. Но и здесь есть вариант исправления без изменения направления перебора. После закрытия ордера индекс уменьшать на 1.
2. fot(int i=0;i=OrdersTotal();i++) - Не логичный вариант... от индекса 0 пока индекс равен количеству ордеров.?????
3. fot(int i<OrdersTotal();i=0;i--) - Этот вариант тоже не логичен, от индекса меньше количества ордеров, пока индекс равен 0 ??????
4. for(int i=OrdersTotal()-1; i>=0; i--) - А вот этот вариант годен для любого случая.
Итого: Приемлемые, правильные варианты 1 и 4.
Milord 
31.01.2015, 20:05
Аватар для matro3
matro3 matro3 вне форума Почётный гражданин
Регистрация: 18.07.2013 / Сообщений: 349
Поблагодарили 340 раз(а) / Репутация: 344
Первый обект в массиве имеет индекс 0.
OrdersTotal() вернет 0 только если ордеров нет.
Т.е. пробежать с первого индекса массива по последний можно пройти так:
fot(int i = 0; i < OrdersTotal(); i++)
или так
fot(int i = OrdersTotal() -1; i >= 0; i--)

P.S. не успел ))
31.01.2015, 21:32
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,624
Поблагодарили 3,758 раз(а) / Репутация: 3750
Первый обект в массиве имеет индекс 0.
OrdersTotal() вернет 0 только если ордеров нет.
Т.е. пробежать с первого индекса массива по последний можно пройти так:
fot(int i = 0; i < OrdersTotal(); i++)
или так
fot(int i = OrdersTotal() -1; i >= 0; i--)

P.S. не успел ))
Вот один из примеров где тоже получается нелогичное условие цикла. Хотя я и сам не задумываясь, таким циклом частенько пользуюсь.
Если ордеров 0, то получается цикл от -1 пока индекс больше или равен 0
Тоесть такой цикл логично использовать исключительно для закрытия ордеров и только когда проверено наличие хотябы одного ордера.

Последний раз редактировалось AlexeyVik; 31.01.2015 в 21:34.
Milord 
31.01.2015, 21:57
Регистрация: 23.11.2011 / Адрес: Львов / Сообщений: 1,403
Поблагодарили 2,259 раз(а) / Репутация: 2260
  • Отправить сообщение для volodymyr67 с помощью Skype™

По умолчанию Всем приет !

ЭТО НЕ В ТЕМУ
ПРОШУ ПОДПРАВИТЬ ОШИБКИ
С уважением Владимир!
http://forexsystems.ru/poleznye-dlya...tml#post467397

ГДЕ ЕСТЬ ЗАКОН - ТАМ НЕТ СВОБОДЫ

Последний раз редактировалось volodymyr67; 03.03.2015 в 14:40.
01.02.2015, 09:54
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 603
Поблагодарили 708 раз(а) / Репутация: 711

По умолчанию Еще вопросик по ошибкам в коде???

Всем привет!
хочу уточнить написание оператора return и его отличие от break, например в приведенных ниже примерах, ограничение времени работы советника,в чем будет разница в логике работы???

PHP код:
if(Hour()<Start||Hour()>Stop)return;

if(
Hour()<Start||Hour()>Stop)return(0);

if(
Hour()<Start||Hour()>Stop)break; 
ЗАРАНЕЕ СПАСИБО!
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 01.02.2015 в 10:01.
01.02.2015, 10:14
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,624
Поблагодарили 3,758 раз(а) / Репутация: 3750
Всем привет!
хочу уточнить написание оператора return и его отличие от break, например в приведенных ниже примерах, ограничение времени работы советника,в чем будет разница в логике работы???

PHP код:
if(Hour()<Start||Hour()>Stop)return;

if(
Hour()<Start||Hour()>Stop)return(0);

if(
Hour()<Start||Hour()>Stop)break; 
ЗАРАНЕЕ СПАСИБО!
Что-то мне показалось что ты абсолютно не читаешь справку. Там-же описано всё доходчиво. _http://docs.mql4.com/ru/basis/operators
Оператор return Прекращает выполнение текущей функции и возвращает управление вызвавшей программе
Оператор break Прекращает выполнение ближайшего вложенного внешнего оператора switch, while, do-while или for

Где ты нашёл выход из условия оператором break я не представляю.
Так-же там написано
В функциях с типом возвращаемого значения void необходимо использовать оператор return без выражения:

Завершающая фигурная скобка функции предполагает неявное исполнение оператора return без выражения.
Это ответ на отличие между return и return(0). Всё зависит от типа функции.
01.02.2015, 10:44
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 603
Поблагодарили 708 раз(а) / Репутация: 711
Что-то мне показалось что ты абсолютно не читаешь справку. Там-же описано всё доходчиво. _http://docs.mql4.com/ru/basis/operators
Оператор return Прекращает выполнение текущей функции и возвращает управление вызвавшей программе
Оператор break Прекращает выполнение ближайшего вложенного внешнего оператора switch, while, do-while или for

Где ты нашёл выход из условия оператором break я не представляю.
Так-же там написано
В функциях с типом возвращаемого значения void необходимо использовать оператор return без выражения:

Завершающая фигурная скобка функции предполагает неявное исполнение оператора return без выражения.
Это ответ на отличие между return и return(0). Всё зависит от типа функции.
я читал справку, зачем оттуда копировать что там написано корявым академическим языком,
те кто писал справку похоже были партизанами в застенках гестапо!
,
и нормальным языком не смогли ее написать...она написана для тех кто и так знает язык MQL4 или С++, так если я знаю эти языки - зачем мне справка?????
а если не знаю - так и писать нужно было справку понятным и доходчивым языком...

P.S. ваш ответ не прибавил ясности не на сколько....
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 01.02.2015 в 10:51.
01.02.2015, 13:02
Регистрация: 05.01.2012 / Сообщений: 1,149
Поблагодарили 7,802 раз(а) / Репутация: 7846
Всем привет!
хочу уточнить написание оператора return и его отличие от break, например в приведенных ниже примерах, ограничение времени работы советника,в чем будет разница в логике работы???

PHP код:
if(Hour()<Start||Hour()>Stop)return;

if(
Hour()<Start||Hour()>Stop)return(0);

if(
Hour()<Start||Hour()>Stop)break; 
ЗАРАНЕЕ СПАСИБО!
На деревенском это будет приблизительно так
return; - Глушит напрочь.
return(0); - Вырубает но перезапускается при следующем тике.(можно и без скобок прям как в С++)
break; - выход из цикла и перезапуск, лучше использовать если что то ходит по кругу посчитали отключили и так далее.
01.02.2015, 15:55
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,624
Поблагодарили 3,758 раз(а) / Репутация: 3750
я читал справку, зачем оттуда копировать что там написано корявым академическим языком,
те кто писал справку похоже были партизанами в застенках гестапо!
,
и нормальным языком не смогли ее написать...она написана для тех кто и так знает язык MQL4 или С++, так если я знаю эти языки - зачем мне справка?????
а если не знаю - так и писать нужно было справку понятным и доходчивым языком...

P.S. ваш ответ не прибавил ясности не на сколько....
Ну извиняйте... Просто у тебя примеры к вопросам абсолютно не подходят.
Код:
void F1()
{
if(Hour()<Start||Hour()>Stop) return; // так будет правильно.
}

int F2()
{
if(Hour()<Start||Hour()>Stop) return(0); // и так будет правильно.
}

double F3()
{
for(int i = 0; i < 6; i++)
{
if(Hour()<Start||Hour()>Stop || i == 3) break; // и это будет правильно но выполнение перейдёт на строку после цикла когда будет выполнено одно из условий.
}
int с = 60; // сначала переменной с присвоится значение 60
return(0); // и только здесь функция будет завершена.
}
Если в последнем примере вместо break написать return(0) то переменной с значение 60 присвоено не будет.
Так понятно?
Milord 
01.02.2015, 18:17
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 603
Поблагодарили 708 раз(а) / Репутация: 711
Ну извиняйте... Просто у тебя примеры к вопросам абсолютно не подходят....
Так понятно?
да, так намного яснее стало! спасибо!
я стараюсь не задавать тут вопросы, которые сам могу решить или прочитать ответ в справке...

P.S.помню как в школе не мог решить по математике те задачи, которые были сформулированы тупо и неясно, а не потому что я не знал как решать, просто в голове был вопрос
- "ЧЕ ОНИ ВАПЩЕ ОТ МЕНЯ ХОТЯТ, ТЕ КТО ЗАДАЧУ НАПИСАЛИ,МОЖЕТ ОНИ ИДИОТЫ САМИ?"

Аналогично справку к МТ4 писали такие супер пупер программисты, которые считают что все кто изучает MQL4, уже знают С++ как они сами...наивные люди, думать что все, кто начинает изучать язык MQL4 уже мастера в С++))))
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 01.02.2015 в 18:24.
01.02.2015, 18:31
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,624
Поблагодарили 3,758 раз(а) / Репутация: 3750
да, так намного яснее стало! спасибо!
я стараюсь не задавать тут вопросы, которые сам могу решить или прочитать ответ в справке...

P.S.помню как в школе не мог решить по математике те задачи, которые были сформулированы тупо и неясно, а не потому что я не знал как решать, просто в голове был вопрос
- "ЧЕ ОНИ ВАПЩЕ ОТ МЕНЯ ХОТЯТ, ТЕ КТО ЗАДАЧУ НАПИСАЛИ,МОЖЕТ ОНИ ИДИОТЫ САМИ?"

Аналогично справку к МТ4 писали такие супер пупер программисты, которые считают что все кто изучает MQL4, уже знают С++ как они сами...наивные люди, думать что все, кто начинает изучать язык MQL4 уже мастера в С++))))
Не правильный у тебя подход к своим проблемам. Вместо того чтобы настойчиво пытаться понять, ты обвиняешь написателей...
Представь себе, я никогда не учил С++ или другие его варианты. И сейчас не знаю.
Так-же не знает его Андрей (Ugar). И это не мешает ни мне, ни ему понимать что пишут в документации.
01.02.2015, 19:17
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 603
Поблагодарили 708 раз(а) / Репутация: 711
Не правильный у тебя подход к своим проблемам. Вместо того чтобы настойчиво пытаться понять, ты обвиняешь написателей...
у каждого своя правда, а ИСТИНА одна и непостижима!ИМХО!

кто то любит конфеты, а кто свиной хрящик....кто любит водку, кто кагор, кто пиво, а кто молоко и компот..))
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
02.02.2015, 14:38
Аватар для jenzo
jenzo jenzo на форуме Местный знаток
Регистрация: 10.07.2014 / Сообщений: 593
Поблагодарили 593 раз(а) / Репутация: 594
Ребята подскажите, какой код отвечает за рисовку стрелки на предыдущей свече?
02.02.2015, 16:10
Аватар для Oculyus
Oculyus Oculyus вне форума Интересующийся
Регистрация: 02.02.2015 / Сообщений: 4
Поблагодарили 0 раз(а) / Репутация: 1
Уважаемые знатоки mql4, помогите пожалуйста девушке разобраться с советником. У меня есть готовый код, и я хотела бы туда добавить следующие условие, что при убыточной сделки в бай, советник дальше заходил только в селл и наоборот. А то иногда ловит восходящий тренд и все сделки в селл открывает и депо сливает((((

Я поняла, что это через функцию HistoryTotal() а как ее полноценно вписать и куда не понимаю(((

Тем более не понимаю как задать что бы после слива заходит ТОЛЬКО на противоположном сигнале.

В самом советнике код написан след образом
int Rules()
{
if (условия для селла) return(1);
if (условия для бая) return(2);
return(0);
}
А под цифрами 1 и 2 уже сам процесс открытия ордеров.

ПОЖАЛУЙСТА!!))
02.02.2015, 18:27
Аватар для matro3
matro3 matro3 вне форума Почётный гражданин
Регистрация: 18.07.2013 / Сообщений: 349
Поблагодарили 340 раз(а) / Репутация: 344
Вычисляете тип последней сделки и ее профит. В зависимости от этого поднимаете флаг, при котором входите только в нужную вам сторону.
02.02.2015, 20:57
Аватар для Oculyus
Oculyus Oculyus вне форума Интересующийся
Регистрация: 02.02.2015 / Сообщений: 4
Поблагодарили 0 раз(а) / Репутация: 1
Спасибо, но не совсем поняла про флаг.... я не сильна в mql4
02.02.2015, 21:38
Аватар для gince
gince gince на форуме Местный знаток
Регистрация: 09.09.2008 / Адрес: Литва / Сообщений: 488
Поблагодарили 855 раз(а) / Репутация: 855
  • Отправить сообщение для gince с помощью Skype™
ЭТО НЕ В ТЕМУ
ПРОШУ ПОДПРАВИТЬ ОШИБКИ
Большие ошибки подправил , дальше смотри сам. Непроверял.
Гинтарас
03.02.2015, 20:13
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 603
Поблагодарили 708 раз(а) / Репутация: 711
Уважаемые знатоки mql4, помогите пожалуйста девушке разобраться с советником. У меня есть готовый код, и я хотела бы туда добавить следующие условие, что при убыточной сделки в бай, советник дальше заходил только в селл и наоборот. А то иногда ловит восходящий тренд и все сделки в селл открывает и депо сливает((((
Мадам, для тех кто в языке не силен, есть ветка по бесплатной доработке советников и индикаторов, вот тут:
http://forexsystemsru.com/yazyk-prog...v-vol-2-a.html
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 03.02.2015 в 20:16.
04.02.2015, 08:33
Аватар для Oculyus
Oculyus Oculyus вне форума Интересующийся
Регистрация: 02.02.2015 / Сообщений: 4
Поблагодарили 0 раз(а) / Репутация: 1
Спасибо!! Большое!
04.02.2015, 10:42
Аватар для Picasso
Picasso Picasso на форуме Местный знаток
Регистрация: 17.04.2013 / Адрес: город-герой ОДЕССА ★ / Сообщений: 440
Поблагодарили 726 раз(а) / Репутация: 727
  • Отправить сообщение для Picasso с помощью Skype™
Приветствую коллеги. Есть такой вопрос, как в самом простом подвальном индикаторе (любом) с одной линией, сделать визуализацию в виде стрелки, в том же подвале, если показания индюка выше отметки 0 - стрелка вверх или ниже - стрелка вниз.
Надеюсь на вашу помощь.
Немного визуализирую вопрос, может кто поможет.
На обычном макдаке, линия пересекла 0, стрелка постоянно показывает вверх и наоборот, при пересечении вниз.

Нажмите на изображение для увеличения
Название: fsys.png
Просмотров: 16
Размер:	12.1 Кб
ID:	195015

MACD.mq4
Ответить

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 11:19. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO