Автоматизация торговли на финансовых рынках Автоматизация торговли на финансовых рынках

 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

В помощь начинающим трейдерам...
На страницу Пред.  1, 2, 3
 
Начать новую тему   Ответить на тему    Список форумов Автоматизация торговли на финансовых рынках -> FAQ
Предыдущая тема :: Следующая тема  
Автор Сообщение
Vic111



Зарегистрирован: 20.11.2010
Сообщения: 13
Откуда: Израиль

СообщениеДобавлено: Пт Ноя 26, 2010 10:34 pm    Заголовок сообщения: Ответить с цитатой

Мое почтение Вам Игорь Викторович.
Чувствую, как шаг за шагом, ступенька за ступенькой я все ближе к цели. И это с Вашей и Божьей помощью. Как атеист я, естественно,
Вашу помощь поставил на первое место. С самого начала, когда решил осваивать форекс и когда читал все подряд, и когда в голове была (и до сих пор есть) каша-малаша, я мечтал, что хорошо бы рядом иметь учителя, как сейчас говорят, гуру. И вот она, удача. Стучу по дереву, не спугнуть бы.
Увертюра закончилась. И теперь о деле. Я получил исчерпывающие и понятные ответы на свои вопросы. И еще раз спасибо Вам за это. Но у меня сложилось такое впечатление, что функция IsStopped() не нужная, не интересная, что вполне можно обойтись без нее.
Что касается терминации функции start(), то это писали, конечно же, не Вы. Это курс по MQL4 некого Кирилла. Вот кусочек из его курса, на который я обратил внимание:
Код:
//---- check for possible errors
if (counted_bars<0) return(-1);
Разбор:
Очевидно, что число баров, не измененных после последнего вызова индикатора должно быть = 0 или > 0. Если же оно < 0, значит, произошла ошибка. Мы терминируем функцию
start() и сообщаем об ошибке, возвращая не 0.

Наверное, случайная ошибка.
Игорь Викторович, а Вы можете посоветовать что-то почитать по MQL4. По-вашему стоящее и на русском языке.
И еще мне интересно Ваше мнение, правильно ли я делаю, что начал с MQL4, а не с MQL5.
Игорь Викторович, на форуме, отвечая Олегу, Вы сказали,"Индикаторы не люблю, советникам не доверяю". Неужели, правда? А Вы вообще торгуете? Ответе, пожалуйста, если не секрет.
С лучшими пожеланиями, Vic111.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


Зарегистрирован: 24.01.2006
Сообщения: 958
Откуда: Кунгур

СообщениеДобавлено: Сб Ноя 27, 2010 12:38 am    Заголовок сообщения: Ответить с цитатой

Vic111 писал(а):
Игорь Викторович, а Вы можете посоветовать что-то почитать по MQL4. По-вашему стоящее и на русском языке.

Почитайте учебник Сергея Ковалёва

По прочим вопросам... Правда... Торгую...

_________________
Ещё вчера я себе казался умным и пытался изменить мир, а сегодня я стал мудрым и пытаюсь изменить себя...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
Vic111



Зарегистрирован: 20.11.2010
Сообщения: 13
Откуда: Израиль

СообщениеДобавлено: Пн Ноя 29, 2010 1:02 am    Заголовок сообщения: Ответить с цитатой

Уважаемый Игорь Викторович. Учебник Сергея Ковалева был моим первым знакомством с MQL4. Читал, вникал, старался понять, но было трудно. Трудно объединить две незнакомые области знания, существующее друг для друга, в одно общее, цельное. Сейчас попробую еще раз прочитать и, наверное, многое увижу совсем
по-другому.
А теперь еще вопрос. Вы где-то применяете такой код:
while(!IsTradeAllowed()) Sleep(100); ?
Я предполагаю, что сервер и так держит терминал в ожидании, если есть проблемы. И зачем тогда организовывать ожидание программными средствами? Чувствую, что не прав, но хочу узнать, где ошибаюсь.
С благодарностью к Вам. Vic111.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


Зарегистрирован: 24.01.2006
Сообщения: 958
Откуда: Кунгур

СообщениеДобавлено: Пн Ноя 29, 2010 7:52 pm    Заголовок сообщения: Ответить с цитатой

Vic111 писал(а):
Вы где-то применяете такой код:
while(!IsTradeAllowed()) Sleep(100); ?

Да, только делаю слип на 5 секунд.

Vic111 писал(а):
Я предполагаю, что сервер и так держит терминал в ожидании, если есть проблемы. И зачем тогда организовывать ожидание программными средствами?

Это рекомендация разработчиков, проверять доступность торгового потока перед подачей торговой команды.

_________________
Ещё вчера я себе казался умным и пытался изменить мир, а сегодня я стал мудрым и пытаюсь изменить себя...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
Vic111



Зарегистрирован: 20.11.2010
Сообщения: 13
Откуда: Израиль

СообщениеДобавлено: Ср Dec 01, 2010 2:50 am    Заголовок сообщения: Ответить с цитатой

Мой друг PC был в реанимации, к сожалению. Поэтому мое спасибо пишу с опозданием. А ответ на мой вопрос принял, проглотил и переварил. Буду применять со слип на 5 секунд.

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



Зарегистрирован: 20.11.2010
Сообщения: 13
Откуда: Израиль

СообщениеДобавлено: Сб Dec 04, 2010 11:55 pm    Заголовок сообщения: Ответить с цитатой

Уважаемый Игорь Викторович. С удовольствием говорю Вам, здравствуйте (в смысле и приветствую, и желаю здоровья, одновременно).
И, если можно, еще вопрос. В советнике, который сейчас пытаюсь сделать. Я подготовительные операции делаю один раз, в функции
init(). А далее, уже в функции start(), после каждого тика выполняю основную работу. И вот не знаю, где правильно поставить мне проверку:
while(!IsTradeAllowed()) Sleep(5000).
Или поставить в функцию init() и выполнить ее один раз, до начала работы советника? Или использовать этот код в функции start() и выполнять проверку каждый раз после поступления тика? А может быть, нужно, поставить этот код и в функцию init(), и в функцию start()?
Подскажите, пожалуйста, как правильно поступить? Заранее благодарен. Vic111.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


Зарегистрирован: 24.01.2006
Сообщения: 958
Откуда: Кунгур

СообщениеДобавлено: Вс Dec 05, 2010 12:26 am    Заголовок сообщения: Ответить с цитатой

Правильно - поставить эту проверку перед каждой посылкой торговой команды на торговый сервер.
_________________
Ещё вчера я себе казался умным и пытался изменить мир, а сегодня я стал мудрым и пытаюсь изменить себя...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
Vic111



Зарегистрирован: 20.11.2010
Сообщения: 13
Откуда: Израиль

СообщениеДобавлено: Пн Dec 06, 2010 5:04 pm    Заголовок сообщения: Ответить с цитатой

Уважаемый Игорь Викторович. Я опять закопался, глубоко и глухо. И без Вашей помощи никак не справлюсь.
Стратегия, для которой пытаюсь написать программу, называется “Опорные свечи”. В этой стратегии используется пользовательский индикатор "PivotDay". Этот индикатор рассчитывает ежедневные опорные уровни, рядом с которыми определяем моменты для входа в рынок.
Если я перед запуском советника запущу этот индикатор, то я могу работать с опорными уровнями без проблем (функция ObjectGet). А использовать этот индикатор из советника, без предварительного запуска никак не получается. Все мои попытки связаны с функцией "iCustom". Более ничего подходящего не нашел. И еще, в индикаторе нет никаких массивов описывающих линии (они здесь и не нужны). Уровни задаются одним числом, размером цены.
И последнее. Игорь Викторович, если Вы знакомы с индикатором "PivotDay", то он рассчитывает кроме нужных для советника и понятных мне уровней еще какие-то, которые обозначены как MS1, MS2, MS3 и MR1, MR2, MR3. Что бы это могло быть?
Игорь Викторович, я, наверняка, злоупотребляю Вашей добротой и деликатностью. Что бы такого не было, выделите мне, пожалуйста, лимит, например, два вопроса за месяц или как Вам будет удобно?
А пока досвидания. С самыми лучшими пожеланиями Vic111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


Зарегистрирован: 24.01.2006
Сообщения: 958
Откуда: Кунгур

СообщениеДобавлено: Пн Dec 06, 2010 8:01 pm    Заголовок сообщения: Ответить с цитатой

Vic111 писал(а):
Если я перед запуском советника запущу этот индикатор, то я могу работать с опорными уровнями без проблем (функция ObjectGet). А использовать этот индикатор из советника, без предварительного запуска никак не получается. Все мои попытки связаны с функцией "iCustom".

Для использования функции iCustom() нужно, чтобы пользовательский индикатор заполнял значениями специальные буферы. Функция iCustom() берёт значения именно из этих буферов. Подробнее про буферы читайте здесь.

Vic111 писал(а):
И еще, в индикаторе нет никаких массивов описывающих линии (они здесь и не нужны).

Вот как раз-таки нужны для использования функции iCustom(). Но можно обойтись и функцией ObjectGet().

Vic111 писал(а):
...если Вы знакомы с индикатором "PivotDay", то он рассчитывает кроме нужных для советника и понятных мне уровней еще какие-то, которые обозначены как MS1, MS2, MS3 и MR1, MR2, MR3. Что бы это могло быть?

Не знаком... не знаю...

Vic111 писал(а):
...выделите мне, пожалуйста, лимит, например, два вопроса за месяц или как Вам будет удобно?

И Вы будете его соблюдать? Возникнет вопрос и Вы будете терпеть и ждать генерации разрешающего лимита? Very Happy

_________________
Ещё вчера я себе казался умным и пытался изменить мир, а сегодня я стал мудрым и пытаюсь изменить себя...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
Vic111



Зарегистрирован: 20.11.2010
Сообщения: 13
Откуда: Израиль

СообщениеДобавлено: Пн Dec 13, 2010 6:45 pm    Заголовок сообщения: Ответить с цитатой

Yes! Yes! И еще раз Yes! Сделан первый советник! С тремя индикаторами, один из которых
пользовательский. И мне глубоко не важно будет он прибыльный или сливной, как бачок в
туалете. Главное, прошла компиляция без ошибок и замечаний. И запущенный советник что-то
там крутит, шелестит, думает.
Игорь Викторович, во-первых, здравствуйте (воспитанные люди с этого начинают). Я прекрасно
понимаю женщин, родивших ребенка. А чем я хуже? Но родить родил, а теперь нужно воспитать и вырастить. То есть отладить и запустить в работу. И вот тут опять вопросы.
Я совершенно не представляю, как можно отладить программу? Создать искусственно все возможные варианты, что бы испытать советник во всех режимах, мне кажется невозможно.
А запустить советник и ждать пока он отработает все ситуации, ну это долго и нет гарантий,
что выловишь все ошибки. Может быть, есть какие-то приемы или специальные программы, отладчики?
И далее. Опять код while(!IsTradeAllowed()) Sleep(5000).
Вы предлагаете поставить эту проверку перед каждой посылкой торговой команды на торговый сервер. Можно уточнить, что такое торговая команда? Это торговая функция или это более широкое понятие?
Ну и последнее, на сегодня. Ковалев пишет, что имеется техническая возможность вызова специальных функций из программы, но мы будем считать такой способ некорректным и здесь рассматривать не будем. Дело в том, что я пробовал и убедился, что обращения к специальным функциям из советника работают без проблем. И возник вопрос, почему Ковалев считает этот способ некорректным? Конечно, можно обойтись без таких обращений (наверно), но если есть такая опция, то почему ее не использовать?
Спасибо Вам за помощь. И желаю Вам грандиозных успехов и богатырского здоровья. Vic111.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Vic111



Зарегистрирован: 20.11.2010
Сообщения: 13
Откуда: Израиль

СообщениеДобавлено: Сб Dec 25, 2010 6:25 pm    Заголовок сообщения: Ответить с цитатой

Уважаемый Игорь Викторович.
Я разбирал советник Андрея Ведихина (Vedikhin), представителя дилингового центра Альпари. И споткнулся на коде:
// установим время последней торговой операции вчерашним днем
LastTradeTime = CurTime()-24*60*60;
//----
//----
// проверим, не выставляли ли мы ордер уже сегодня
// если выставляли - выходим
if (TimeDayOfYear(CurTime())==TimeDayOfYear(LastTradeTime))
return(0);

Функция CurTime() (так же, как TimeCurrent) возвращает время прихода последней котировки. И мне не понятно, как это связано с временем выставления ордера? Пожалуйста, подскажите, где я ошибаюсь? Спасибо Вам за помощь. Vic111.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


Зарегистрирован: 24.01.2006
Сообщения: 958
Откуда: Кунгур

СообщениеДобавлено: Сб Dec 25, 2010 8:19 pm    Заголовок сообщения: Ответить с цитатой

Vic111 писал(а):
Можно уточнить, что такое торговая команда? Это торговая функция или это более широкое понятие?
ммм... Походу, это просто функция такая. И не одна, а несколько. Ну там типа OrderClose(), OrderCloseBy(), OrderDelete(), OrderModify(), OrderSend(). Чё-то я разогнался и все перечислил Very Happy

Vic111 писал(а):
И возник вопрос, почему Ковалев считает этот способ некорректным?
Такие вопросы, вообще-то, Ковалёву и надо задавать. Я ж не он. Фиг знает, почему он так считает. А сам я не понял, о чём речь. Я его учебник не читал. Но с Серёгой я знаком. Он дядька умный. Дурь писать не будет.

Vic111 писал(а):
Функция CurTime() (так же, как TimeCurrent) возвращает время прихода последней котировки. И мне не понятно, как это связано с временем выставления ордера?
хм... Ну вот я ордер выставил. Время выставления зафиксировалось и стало уходить далеко в прошлое. Всё дальше и дальше. А время прихода последней котировки где-то тут болтается, недалеко от настоящего. Как-то так... Smile
_________________
Ещё вчера я себе казался умным и пытался изменить мир, а сегодня я стал мудрым и пытаюсь изменить себя...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора Yahoo Messenger
Vic111



Зарегистрирован: 20.11.2010
Сообщения: 13
Откуда: Израиль

СообщениеДобавлено: Пн Янв 10, 2011 2:11 am    Заголовок сообщения: Ответить с цитатой

Уважаемый Игорь Викторович, желаю Вам успехов в 2011 году!
А я, попробую задать еще несколько вопросов.
Что-то не могу разобраться с параметром slippage. Его определяют, как максимально допустимое отклонение цены для рыночных ордеров, но не пойму, где берется его значение. Такое впечатление, что это значение выбирается произвольно. И, если это так, то в каких диапазонах может быть этот самый slippage и какие значения будут предпочтительные?
Игорь Викторович, если на форуме это разрешено (может это считается рекламой), с каким дилинговым
центром Вы работаете? Пишут, что выбор дилингового центра имеет большое значение.
Спасибо Вам за неоценимую помощь. И, еще раз, успехов и успехов во всем. Vic111.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Автоматизация торговли на финансовых рынках -> FAQ Часовой пояс: GMT + 5
На страницу Пред.  1, 2, 3
Страница 3 из 3

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять вложения в этом форуме
Вы не можете просматривать вложения в этом форуме
Рейтинг@Mail.ru


Powered by phpBB © 2001, 2005 phpBB Group