Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Какой извращенный стиль! ))))
NormalizeDouble(Ask,Digits); //для цены <- ЧТО ЭТО?!!!
NormalizeDouble(L1,2); //для лота. <- ЧТО ЭТО?!!!
ticket.1=OrderSend ("AUDCAD", OP_BUY, L1, Ask, 3, 0, 0, 0, 0, CLR_NONE);
Нормализовали, ок, но куда результат поместили?
Какой извращенный стиль! ))))
NormalizeDouble(Ask,Digits); //для цены <- ЧТО ЭТО?!!!
NormalizeDouble(L1,2); //для лота. <- ЧТО ЭТО?!!!
ticket.1=OrderSend ("AUDCAD", OP_BUY, L1, Ask, 3, 0, 0, 0, 0, CLR_NONE);
Нормализовали, ок, но куда результат поместили?
))) первая строчка - нормализация цены, вторая - нормализация лота )))
В код добавил в раздел переменные:
extern double ask=0.0;
строчки:
NormalizeDouble(Ask,Digits); //для цены <- ЧТО ЭТО?!!!
NormalizeDouble(L1,2); //для лота. <- ЧТО ЭТО?!!!
Поменял на:
ask=NormalizeDouble(Ask,Digits); //для цены
L1=NormalizeDouble(L1,2); //для лота.
И все равно не работает. (((
Что пишет GetLastError сразу после попытки открыть ордер?
И еще - не используйте имена переменных сходных с зарезервированными словами - рискуете малой ошибкой обрести большие (в обнаружении) сложности.
(я про Ask и ask в данном случае)
Очень, нет - ОЧЕНЬ(!!!!) рекомендую использовать правила написания хорошего кода, иначе проекты выше 2-3 сотен строк кода будут приносить "удовольствие" на уровне "испанского сапога". Достаточно подробно тут -> http://rsdn.ru/article/mag/200401/codestyle.XML
Что пишет GetLastError сразу после попытки открыть ордер?
И еще - не используйте имена переменных сходных с зарезервированными словами - рискуете малой ошибкой обрести большие (в обнаружении) сложности.
(я про Ask и ask в данном случае)
Очень, нет - ОЧЕНЬ(!!!!) рекомендую использовать правила написания хорошего кода, иначе проекты выше 2-3 сотен строк кода будут приносить "удовольствие" на уровне "испанского сапога". Достаточно подробно тут -> http://rsdn.ru/article/mag/200401/codestyle.XML
Интересно, но почему то в одном терминале нормализованные мной ордера (без присвоения переменной) открываются, а в другом - нет.
Программу модифицировал, GetLastError 131. И что это за ошибка? Тут нет https://book.mql4.com/ru/trading/ordersend описания ошибки 131.
extern double L1=0.01;
extern double ask.1=0.0;
extern int ticket.1;
extern int M=0;
int MassivTicketov[3]={0, 0, 0};
int init()
{
return(0);
}
int start()
{
Alert(" 1 ");
RefreshRates(); // Обновление данных
ask.1=NormalizeDouble(Ask,Digits); //для цены
L1=NormalizeDouble(L1,2); //для лота.
ticket.1=OrderSend ("AUDCAD", OP_BUY, L1, Ask, 3, 0, 0, 0, 0, CLR_NONE);
Alert (GetLastError());
Alert(" 1.2 ");
RefreshRates(); // Обновление данных
L1=NormalizeDouble(Bid,Digits); //для цены
ask.1=NormalizeDouble(L1,2); //для лота.
ticket.1=MassivTicketov[M]; M++;
OrderSelect(ticket.1, SELECT_BY_TICKET);
OrderClose (ticket.1, L1, Bid, 3);
return(0);
}
int deinit()
{
return(0);
}
Ссылку http://rsdn.ru/article/mag/200401/codestyle.XML начал изучать.
Ну как нет ошибки 131:
Смотрите.
У разных ДЦ может быть разный шаг изменения лота. Может 0.01, может 0.1, и даже 1.0))
Коды ошибок -> https://docs.mql4.com/ru/constants/errors
Маркетинфо - определения минимального и максимального лота, а так-же шага лота для вашего ДЦ -> https://docs.mql4.com/ru/common/MarketInfo
Оперируя этим можно устранить ошибку.
И все равно не работает. (((
добавьте в start() до открытия ордеров строку