[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 477
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
demlin:
Еще вопрос: какой функцией можно вытащить стоимость одного пункта инструмента?
https://docs.mql4.com/ru/constants/marketinfo
MarketInfo(Symbol(), MODE_TICKVALUE);
скажите пожалуйста какой код вписать в советник, чтобы советник торговал только один раз в час
например, советник сработал, открылся ордер (дальше не интересует), нужно чтобы ордер больше не открывался на текущем баре на часовом таймфрейме
все выглядит примерно так:
int hh;
int CurrentHour;
CurrentHour=TimeHour(TimeCurrent());
if (CurrentHour!=hh)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
hh=TimeHour(TimeCurrent());
}
но у меня открывается бесчисленное количество ордеров
Всем привет!
Подскажите, что сие означает:
Order buy ...... failed [Trade timeout]
Конкретно интересует что это за таймаут
https://www.mql5.com/ru/forum/112612
Это истек срок ожидания ответа от сервера --- открылась сделка или нет. Причем нет гарантий что сделка не открылась.
Поэтому нужно как рекомендуют разработчики, через минуту проверить не открылся ли ордер и лишь потом действовать дальше.
rlx:
нужно установить перед start() и init()
int hh = 0;
int init()
{
return(0);
}
int start()
{
//-------------------------------------------------
int countorder;
countorder=OrdersTotal();
if (countorder==0)
{
Alert ("открытых ордеров нет");
}else
{
Alert ("есть открытые ордера");
}
int hh;
int CurrentHour;
CurrentHour=TimeHour(TimeCurrent());
if ((CurrentHour!=hh)&&(countorder==0))
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
hh=TimeHour(TimeCurrent());
}
//-------------------------------------------------
return(0);
}
int deinit()
{
return(0);
}
сделал как сказали, не помогло, добавил учет количества открытых ордеров, теперь открывает ордера сразу после закрытия предидущего
я пошел в обход через OrderCloseTime(), вроде бы теперь работает
int countorder;
countorder=OrdersTotal();
if (countorder==0)
{
Alert ("открытых ордеров нет");
}else
{
Alert ("есть открытые ордера");
}
int hh;
int CurrentHour;
int LastOrderCloseTime;
CurrentHour=TimeHour(TimeCurrent());
OrderSelect(HistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
hh=TimeHour(OrderCloseTime());
if ((CurrentHour!=hh)&&(countorder==0))
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
}
https://www.mql5.com/ru/forum/112612
Это истек срок ожидания ответа от сервера --- открылась сделка или нет. Причем нет гарантий что сделка не открылась.
Поэтому нужно как рекомендуют разработчики, через минуту проверить не открылся ли ордер и лишь потом действовать дальше.
Не хочется быть занудой, однако..
Объясните мне, как откроется ордер, если OrderTotal() равен нулю.
Спасибо.
Ниже рисунок, на котором отмечены скобки ограничиваюшие блок кода, который исполняется при условии
На операции OrderSend() это условие не влияет.
как получить номер бара, в "будущем" :)
ф-ция iBarShift() прекрасно работает для получения номера бара из истории, а как бы получить номер бара для вот такого кода, если сдвинуть линию вправо - за нулевой бар?
как получить номер бара, в "будущем" :)
ф-ция iBarShift() прекрасно работает для получения номера бара из истории, а как бы получить номер бара для вот такого кода, если сдвинуть линию вправо - за нулевой бар?
Можно получить смещение относительно Time[0]
Можно получить смещение относительно Time[0]
Спасибо! Теперь все ОК!