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

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

Куски кода. Нужна помощь!!!
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов Автоматизация торговли на финансовых рынках -> Программирование в MQL4
Предыдущая тема :: Следующая тема  
Автор Сообщение
kraser



Зарегистрирован: 29.01.2006
Сообщения: 15
Откуда: Barnaul

СообщениеДобавлено: Пт Фев 10, 2006 3:46 pm    Заголовок сообщения: Куски кода. Нужна помощь!!! Ответить с цитатой

Игорь привет.

Нужна твоя помощь.
Как в советнике прописать диапазон торговли по времени?
Например с 0 часов по 8 часов и с 17 по 23-55 советник работал наоборот, т.е. вместо покупок продавал и вместо продаж покупал.
В остальное время работал в обычном режиме. Сигналы одни и те же.

С Ув. Сергей.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


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

СообщениеДобавлено: Пт Фев 10, 2006 4:01 pm    Заголовок сообщения: Ответить с цитатой

Привет, Сергей!

1. Организуй флаги по одному на каждую операцию. Например, для покупок bCanBuy, для продаж bCanSell.
2. Сделай в советнике возможность операций по флагам
Код:
if (bCanBuy)
{
  OpenBuy();
}
if (bCanSell)
{
  OpenSell();
}

3. Контролируй время, проверяй сигналы и управляй флагами
Код:
if ((Hour()>=0 && Hour()<9) || (Hour()>16))
{
  if (сигнал на покупку)
  {
    bCanBuy=False;
    bCanSell=True;
  } else {
    bCanBuy=True;
    bCanSell=False;
  }
} else {
  if (сигнал на покупку)
  {
    bCanBuy=True;
    bCanSell=False;
  } else {
    bCanBuy=False;
    bCanSell=True;
  }
}


Удачи!!!

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



Зарегистрирован: 26.03.2009
Сообщения: 9

СообщениеДобавлено: Вс Мар 29, 2009 5:04 am    Заголовок сообщения: Ответить с цитатой

Уважаемый Игорь,
Очень рад что недавно обнаружил ваш форум - хороший ресурс информации.
Я пытаюсь проделать похожее с советником что и kraser, а именно задать параметры времени когда он может торговать. Например с 7 утра и до 3 дня а в остальное время он ничего не делает.
К сожалению мне медведь наухо наступил в плане програмирования.
Но все же вот попытка:
Код:
if ((Hour()<7 && Hour()>15);
       return; //ничего не происходит
       else;//эксперт начинает работу.

однако как его безошибочно посадить этот текст в эксперт чтоб не получился Франкенштейн не знаю.
Не могли бы вы пожалуйста помочь?

Николай
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


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

СообщениеДобавлено: Вс Мар 29, 2009 4:07 pm    Заголовок сообщения: Ответить с цитатой

Здравствуйте, Николай!
В Вашем коде лишняя открывающая скобка и лишняя точка с запятой, то есть надо писать так:
Код:
if (Hour()<7 && Hour()>15)
  return; //ничего не происходит
else; //эксперт начинает работу.

Кроме того само условие построено неправильно. Ну сами подумайте, может ли число 2 быть одновременно меньше 7 и больше 15? Нет, такого не может быть никогда. Может быть только ИЛИ. Правильное условие будет следующим:
Код:
if (Hour()<7 || Hour()>15)
  return; //ничего не происходит
else; //эксперт начинает работу.


kalkulon писал(а):
как его безошибочно посадить этот текст в эксперт

Вставьте в начало функции start().

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



Зарегистрирован: 26.03.2009
Сообщения: 9

СообщениеДобавлено: Вт Мар 31, 2009 6:16 pm    Заголовок сообщения: Ответить с цитатой

Спасибо за ответ.

Я написал в эксперт следующее после "void start()" :


if (Hour()<7 || Hour()>15)
return;
//NOTHING HAPPENS
else;
//EXPERT STARTS WORK//

{ начало эксперта...

и получил ошибку:'if' semicolon expected (в линии if (Hour()<7 || Hour()>15)). Куда его я не ставил ничего путевого не вышло...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


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

СообщениеДобавлено: Вт Мар 31, 2009 8:34 pm    Заголовок сообщения: Ответить с цитатой

Вот так надо:
Код:
void start() {
  if (Hour()<7 || Hour()>15) return;
  // а здесь Ваш код, то есть код функции start()
}

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



Зарегистрирован: 26.03.2009
Сообщения: 9

СообщениеДобавлено: Чт Апр 02, 2009 2:39 am    Заголовок сообщения: Ответить с цитатой

Спасибо, сработало!
Только интересно какое время использует EA: время компьютера или время сервера?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


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

СообщениеДобавлено: Чт Апр 02, 2009 7:10 am    Заголовок сообщения: Ответить с цитатой

kalkulon писал(а):
Только интересно какое время использует EA: время компьютера или время сервера?

Время котировок, которое равно времени сервера. Но с помощью функции TimeLocal() можно запрограммировать использование времени компьютера.

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



Зарегистрирован: 21.03.2009
Сообщения: 6

СообщениеДобавлено: Вс Апр 05, 2009 11:24 am    Заголовок сообщения: Ответить с цитатой

Ким, очень часто пользовался твоими скриптами и брал из них части кода, за что тебе большая благодарность!!! Теперь нашел этот ресурс и рад, что могу именно у тебя попросить совет. Проблема в следующем: советник оптимизирован по тейкпрофиту, чтобы не терять на развороте, но после закрытия позы по тейку сохраняются условия на вход в том же направлении, советник входит и закрывает по лосю. Как написать код, чтобы после закрытия по тейку советник ждал вход в противоположную сторону???
Заранее благодарен!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


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

СообщениеДобавлено: Вс Апр 05, 2009 8:44 pm    Заголовок сообщения: Ответить с цитатой

anik писал(а):
Как написать код, чтобы после закрытия по тейку советник ждал вход в противоположную сторону???

1. Проверка, есть поза или нет.
2. Если есть - курим.
3. Если нет, смотрим, по тейку закрылась последняя или нет.
4. Если не по тейку - курим.
5. Если по тейку - снова курим, типа ждём сигнала в противоположную сторону.

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



Зарегистрирован: 21.03.2009
Сообщения: 6

СообщениеДобавлено: Пн Апр 06, 2009 1:00 am    Заголовок сообщения: Ответить с цитатой

Я решил проблему таким образом: добавил к условию на вход дополнительно переменную лонг и шорт. После блока закрытия и блока трала (бай и селл раздельно) дописал лонг=фальше, шорт=труе. и наоборот.
Спасибо за ответ, продумаю и твой вариант.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
anik



Зарегистрирован: 21.03.2009
Сообщения: 6

СообщениеДобавлено: Пн Апр 06, 2009 11:01 am    Заголовок сообщения: Ответить с цитатой

2. Если есть - курим.
3. Если нет, смотрим, по тейку закрылась последняя или нет.
4. Если не по тейку - курим.
5. Если по тейку - снова курим, типа ждём сигнала в противоположную сторону

Ким, а как это написать на языке MQL?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KimIV
Admin


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

СообщениеДобавлено: Пн Апр 06, 2009 7:02 pm    Заголовок сообщения: Ответить с цитатой

Наличие позиции можно проверить функцией ExistPositions().
Срабатывание тейка - функция isCloseLastPosByTake().
Ну и ещё, наверно, понадобится GetTypeLastClosePos().

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



Зарегистрирован: 21.03.2009
Сообщения: 6

СообщениеДобавлено: Сб Апр 11, 2009 3:59 pm    Заголовок сообщения: Ответить с цитатой

Игорь, я в восторге от твоих библиотек кодов!!! Это то, что мне нужно было уже давно, как хорошо, что нашел сейчас.Спасибо тебе за твою работу и науку.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
anik



Зарегистрирован: 21.03.2009
Сообщения: 6

СообщениеДобавлено: Вс Апр 12, 2009 7:42 am    Заголовок сообщения: Ответить с цитатой

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

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


Powered by phpBB © 2001, 2005 phpBB Group