Добрый вечер(в прошлых постах забыл поздороватся). Можете подсказать какой функцией воспользоватся чтобы сделать следуещее. В советнике идёт открытие ордера по индикатору на текущей свече(пусть будет номер=9). Если после открытия ордера он(индикатор) перерисовался(и после закрытия свечи9 не появился), то мне надо чтобы ПОСЛЕ закрытия свечи9 ордер закрылся.
Sys15975382: Это противоречит правилам округления, подождем тчо скажут старшие товарищи.
Э-э-э... Господа. Нельзя лоты нормализовать так просто... :) Вот вам в помощь:
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 16.05.2008 |//| Описание : Возвращает нормализованное значение торгуемого лота. |//+----------------------------------------------------------------------------+//| Параметры: |//| lo - нормализуемое значение лота. |//| ro - способ округления ( False - в меньшую, |//| True - в большую сторону) |//| sy - наименование инструмента ("" или NULL - текущий символ) |//+----------------------------------------------------------------------------+double NormalizeLot(double lo, bool ro=False, string sy="") {
double l, k;
if (sy=="" || sy=="0") sy=Symbol();
double ls=MarketInfo(sy, MODE_LOTSTEP);
double ml=MarketInfo(sy, MODE_MINLOT);
double mx=MarketInfo(sy, MODE_MAXLOT);
if (ml==0) ml=0.1;
if (mx==0) mx=100;
if (ls>0) k=1/ls; else k=1/ml;
if (ro) l=MathCeil(lo*k)/k; else l=MathFloor(lo*k)/k;
if (l<ml) l=ml;
if (l>mx) l=mx;
return(l);
}
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Спасибо.
предупреждений
Мой родной язык украинский. Но спасибо за внимание.
Help! Если, у меня выставлены 2-а отложенника и один из них закрылся по Take Profit-у нужно чтобы 2-й удалялся. Как это прописать? Где ошибка в коде?
Добрый вечер(в прошлых постах забыл поздороватся). Можете подсказать какой функцией воспользоватся чтобы сделать следуещее. В советнике идёт открытие ордера по индикатору на текущей свече(пусть будет номер=9). Если после открытия ордера он(индикатор) перерисовался(и после закрытия свечи9 не появился), то мне надо чтобы ПОСЛЕ закрытия свечи9 ордер закрылся.
Имеются входные параметры:
bool Mart - если true, значит был закрытый ордер по стопу, следовательно делать удвоение.
TradeInf - разрешение торговли, если true, значит нет торгуемых ордеров и можно торговать)
Имеется следующий код:
if (Mart == true && TradeInf==true)
{
Alert("удвоение лота");
LotS=NormalizeDouble(LotS*martin,2);
Alert("размер лота",LotS);
}
if (Mart == false && TradeInf==true)
{
Alert("Обнуление лота");
LotS=lot;
}
Далее в командах OpenOrder размер лота = LotS.
Так вот если он находит закрытый по лосу ордер то размер лота становится: -9315605757223323600
почему так? в чем ошибка?
здравствуйте, высчитываю лот от значения баланса по разнообразному принципу...
в итоге получаю число вроде 0.2345, как мне обрубить double не округляя его, тоесть:
до одного знака - 0,2
до двух знаков - 0.23
до трех - 0,234 и тд...
здравствуйте, высчитываю лот от значения баланса по разнообразному принципу...
в итоге получаю число вроде 0.2345, как мне обрубить double не округляя его, тоесть:
до одного знака - 0,2
до двух знаков - 0.23
до трех - 0,234 и тд...
double lot = NormalizeDouble(LOT,2)
lot- для выставление ордеров
LOT - формула расчета ордера
"2" - округление до 2-х знаков после запятой.
Это противоречит правилам округления, подождем тчо скажут старшие товарищи.
Э-э-э... Господа. Нельзя лоты нормализовать так просто... :) Вот вам в помощь: