Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2552

 
Vitaly Murlenko #:
Интересно, можно ли из кода индикатора отправлять серверу торговые приказы, например, OrderSend()? Вроде ограничений в справке не видел. Или я что-то не знаю?

нельзя, и в справке про это сказано (правда искать лень, но об этом написано)

 
Коллеги можно оптимальный вариант решения округления лота под нужный размер там 1 знак после запятой.

Сегодня  запустил робота он пишет ошибку 131  при открытии позиций.

Надо округлять с точностью 1 знак после запятой. Т.к. по этому символу мин обьем 0.1 лот.

Причем во внеш переменных я указыааю 0.1 тут все ок.

Потом происходит то что усредняя позиции например на коэфф 1.6 робот открывать пытается  объемом 0.54 лота к примеру.

Что является не допустимым.

Естественно этот же робот торгует и на символах на этом же счете которые имеют 2 - а знака после запятой - т.е. мин обьем 0.01 лота.
И шаг 0.01 лота.
Там ок всё.

Как то может в инит и через маркет инфо по торгуемому  символу  сразу узнавать  количество символов  после запятой по лоту. Типа мин лот. Мин шаг. Понять что после запятой 1 цифра и так округлять с точностью до первого знака после запятой уже при открытии позиций в ф-ии on-tick

Посоветуйте плз оптимальный вариант без жёстких костылей...
Спс.
 
Maxim Kuznetsov #:

нельзя, и в справке про это сказано (правда искать лень, но об этом написано)

Искренне жаль. А так хотелось сделать торговую панель (для ручного торга) в виде индикатора. :(

 

Vitaly Murlenko #:
Интересно, можно ли из кода индикатора отправлять серверу торговые приказы, например, OrderSend()? Вроде ограничений в справке не видел. Или я что-то не знаю?

Только в экспертах 

 
Roman Shiredchenko #:
Коллеги можно оптимальный вариант решения округления лота под нужный размер там 1 знак после запятой.

Сегодня  запустил робота он пишет ошибку 131  при открытии позиций.

Надо округлять с точностью 1 знак после запятой. Т.к. по этому символу мин обьем 0.1 лот.

Причем во внеш переменных я указыааю 0.1 тут все ок.

Потом происходит то что усредняя позиции например на коэфф 1.6 робот открывать пытается  объемом 0.54 лота к примеру.

Что является не допустимым.

Естественно этот же робот торгует и на символах на этом же счете которые имеют 2 - а знака после запятой - т.е. мин обьем 0.01 лота.
И шаг 0.01 лота.
Там ок всё.

Как то может в инит и через маркет инфо по торгуемому  символу  сразу узнавать  количество символов  после запятой по лоту. Типа мин лот. Мин шаг. Понять что после запятой 1 цифра и так округлять с точностью до первого знака после запятой уже при открытии позиций в ф-ии on-tick

Посоветуйте плз оптимальный вариант без жёстких костылей...
Спс.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам

Alexey Viktorov, 2025.02.20 16:13

А зачем NULL? Параметр по умолчанию указывать не надо.

double lot = NormalizePrice(0.0151);

Да, извини. Это функция для нормализации цен, а не лотов.

Вот эта для лотов.

/********************************************************************/
double NormalizePrice(double price, string symbol = NULL)
 {
  symbol = symbol == NULL ? _Symbol : symbol;
  double p = price;
  double tickStep = SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP);
  p = floor(price/tickStep)*tickStep;
  return(p);
 }/******************************************************************/

 
Alexey Viktorov #:

ок. спс - курану получше тему... эту переписку видел там еще пойнт/2 варик предлагали для уточнений.... 

читаю пока не понял
 

мне как надо - я во внешних указал верные данные в зависимости от кол-ва цифр после запятой по лоту и далее уже как я понимаю что в ините 

по маркетИнфо считываю мин лот и шаг лота и кол-во цифр после запятой. И уже потом это значение - кол-во цифр после запятой - я ставлю в значение до которого округлять лот. При открытии позиции.

Как это реализовать программно. Как узнать кол-во цифр после запятой при мин лоте и шаге?

мне надо чтобы потом при последующих открытиях позиций лот по например коэффициенту 1.6   считался с точностью до первого числа после запятой. 

На те х инструментах где они так объемом регламентированы на вход от ДЦ.

На каких два знака  - значит чтобы там считался с точностью два знака после запятой. 

Изначально во внешние переменных я буду писать мин лон, т.е.  или 0,1 или 0,01 лота

 
Roman Shiredchenko #:

мне как надо - я во внешних указал верные данные в зависимости от кол-ва цифр после запятой по лоту и далее уже как я понимаю что в ините 

по маркетИнфо считываю мин лот и шаг лота и кол-во цифр после запятой. И уже потом это значение - кол-во цифр после запятой - я ставлю в значение до которого округлять лот. При открытии позиции.

Как это реализовать программно. Как узнать кол-во цифр после запятой при мин лоте и шаге?

это твёрдая 2-ка, одновременно и по математике и программированию

log10(x)

 
Vitaly Murlenko #:

Искренне жаль. А так хотелось сделать торговую панель (для ручного торга) в виде индикатора. :(

Я делал такую, вот только нужен советник на одном любом графике, для обработки событий. Работала резво

 
Maxim Kuznetsov #:

это твёрдая 2-ка, одновременно и по математике и программированию

log10(x)

)