Результат деления на целое число - целое, результат деления на дробное - дробное. Независимо от типа делимого (числителя)
Тока есть вероятность что однажды разработчики могут тихо почикать эту фичу в сторону даблов или интов, на их выбор и без объявления, чисто "в рамках инвентаризации инструментария приведения типов". Лучше округлять явно
Результат деления на целое число - целое, результат деления на дробное - дробное. Независимо от типа делимого (числителя)
Тока есть вероятность что однажды разработчики могут тихо почикать эту фичу в сторону даблов или интов, на их выбор и без объявления, чисто "в рамках инвентаризации инструментария приведения типов". Лучше округлять явно
Просто полтергейст..-делаю тоже самое отдельно-всё норм
voidOnTick()
{
int HL[50];
int bar=0;
HL[bar]=28;
double bar_d=HL[bar]/10.0;
Print(bar_d);
}
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
Я совсем не программист. Максимум могу цифры в коде подправить. Посмотрел статью, ничего похожего не увидел.
Если не сложно подскажите что куда надо вписать. Я так понимаю надо всего одну строчку подправить.
Вот более точная ссылка. Там есть пример
функции. Конкретно с этой функцией я не разбирался, не знаю как из неё получить нужное значение. Там по ссылке можно получить сообщение о
корректности объёма и сообщение true или false. Моя функция возвращает размер лота, но с шагом, типа 0.25 я её не проверял, в связи с
отсутствием необходимости.
#define volume_max(symbolName) SymbolInfoDouble(symbolName, SYMBOL_VOLUME_MAX)
#define volume_min(symbolName) SymbolInfoDouble(symbolName, SYMBOL_VOLUME_MIN)
#define volume_step(symbolName) SymbolInfoDouble(symbolName, SYMBOL_VOLUME_STEP)
double ContractSize(double volume, string symbol = NULL)
{
symbol = symbol == NULL ? _Symbol : symbol;
double v = volume;
int ratio = (int)floor(volume/volume_step(symbol));
if(fabs(ratio*volume_step(symbol)-volume) > _Point)
v = ratio*volume_step(symbol);
return(v < volume_min(symbol) ? volume_min(symbol) : v > volume_max(symbol) ? volume_max(symbol) : v);
}/*******************************************************************/
По
идее в функцию надо передать значение лота, а функция вернёт значение кратное шагу или минимальное значение лота. Или максимальное если
переданное значение будет больше максимально допустимого.
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку, так как небольшая ошибка в логике советника или индикатора может привести к убыткам на торговом счете. Именно поэтому нами разработана серия базовых проверок, призванных обеспечить необходимый уровень качества продуктов Маркета. Если в процессе проверки...
Можете разъяснить плиз?
Можете разъяснить плиз?
Да я понимаю....
bar_d=HL[bar]; bar_d=bar_d/10;Можете разъяснить плиз?
Результат деления на целое число - целое, результат деления на дробное - дробное. Независимо от типа делимого (числителя)
Тока есть вероятность что однажды разработчики могут тихо почикать эту фичу в сторону даблов или интов, на их выбор и без объявления, чисто "в рамках инвентаризации инструментария приведения типов". Лучше округлять явно
Результат деления на целое число - целое, результат деления на дробное - дробное. Независимо от типа делимого (числителя)
Тока есть вероятность что однажды разработчики могут тихо почикать эту фичу в сторону даблов или интов, на их выбор и без объявления, чисто "в рамках инвентаризации инструментария приведения типов". Лучше округлять явно
Просто полтергейст..-делаю тоже самое отдельно-всё норм
Люди добрые, подскажите пожалуйста как вставить функцию округления? MQL5
{
if(!position.SelectByIndex(i))continue;
if(position.Symbol()!=_Symbol)continue;
double lot=NormalizeVolume(_Symbol,position.Volume()/2.0); /// КАК ВСТАВИТЬ ФУНКЦИЮ ОКРУГЛЕНИЯ?
if(position.PositionType()==POSITION_TYPE_BUY)trade.Sell(lot);
if(position.PositionType()==POSITION_TYPE_SELL) trade.Buy(lot);
break;
}
Если при закрытии половины открытая поза не делиться на 2 (например 0.75 , 1.25, 5.25 ) советник ругается (шаг объема 0.25)
Пример при попытки закрытия половины от 0.75 lot CTrade::OrderSend: market buy 0.38 Ger30 [invalid volume]
Люди добрые, подскажите пожалуйста как вставить функцию округления? MQL5
{
if(!position.SelectByIndex(i))continue;
if(position.Symbol()!=_Symbol)continue;
double lot=NormalizeVolume(_Symbol,position.Volume()/2.0); /// КАК ВСТАВИТЬ ФУНКЦИЮ ОКРУГЛЕНИЯ?
if(position.PositionType()==POSITION_TYPE_BUY)trade.Sell(lot);
if(position.PositionType()==POSITION_TYPE_SELL) trade.Buy(lot);
break;
}
Если при закрытии половины открытая поза не делиться на 2 (например 0.75 , 1.25, 5.25 ) советник ругается (шаг объема 0.25)
Пример при попытки закрытия половины от 0.75 lot CTrade::OrderSend: market buy 0.38 Ger30 [invalid volume]
Найдите статью "Какие проверки должен пройти советник..." Там есть пример функции.
Я совсем не программист. Максимум могу цифры в коде подправить. Посмотрел статью, ничего похожего не увидел.
Если не сложно подскажите что куда надо вписать. Я так понимаю надо всего одну строчку подправить.
Я совсем не программист. Максимум могу цифры в коде подправить. Посмотрел статью, ничего похожего не увидел.
Если не сложно подскажите что куда надо вписать. Я так понимаю надо всего одну строчку подправить.
Вот более точная ссылка. Там есть пример функции. Конкретно с этой функцией я не разбирался, не знаю как из неё получить нужное значение. Там по ссылке можно получить сообщение о корректности объёма и сообщение true или false. Моя функция возвращает размер лота, но с шагом, типа 0.25 я её не проверял, в связи с отсутствием необходимости.
По идее в функцию надо передать значение лота, а функция вернёт значение кратное шагу или минимальное значение лота. Или максимальное если переданное значение будет больше максимально допустимого.