Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1050

 
rapid_minus:
День добрый! Неужели заданный мною на стр.1048 вопрос настолько сложный, что профи не знают ответа? Или это просто игнор (ну не нравлюсь я некоторым!)?
Какой вопрос, такой и ответ. Прочти примечание к функции Sleep() Это ответ на первый твой вопрос.
 
Ekburg:

Доброго дня.

Разбираю код одного эксперта и не могу понять одну строчку:

 

 Из названия переменной я понимаю, чего хотел добиться программист.

Но на своём любительском уровне программирования не понимаю ничего кроме  MarketInfo(Symbol(),MODE_MINLOT).

Разъясните плз что зачем, куда и с каким соусом) 

 

А что такое логарифм понимаешь?

Хотя этот код какой-то непонятный. Непонятно зачем логарифм значения делить на логарифм(10) если log(10) всегда будет 1.

 
kocunyc89 код, в индикатор, который кажет в углу экрана
#property indicator_chart_window  //Вывод информации в окно графика
#property strict
int Число=25;

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
{
  // Проверка наличия метки для вывода информации
  if(ObjectFind("Итог")<0)
  {
    ObjectCreate("Итог", OBJ_LABEL, 0, 0, 0);   // Создание
    ObjectSet("Итог", OBJPROP_CORNER, 1);  // Правый верхний угол
    ObjectSet("Итог", OBJPROP_XDISTANCE, 10); //X   
    ObjectSet("Итог", OBJPROP_YDISTANCE, 10);       //Y
  }
  ObjectSetText("Итог", string(Число), 14,"Arial",Yellow);
  return(0);
}

void OnDeinit(const int reason)
{
  ObjectDelete("Итог");
}
 
AlexeyVik

log(10) всегда будет 1.

Alert(log(10));  log(10)=2.302585092994046. MathLog  как и просто Log - это натуральный логарифм. Десятичный в MQL отсутствует.   Мне нужен был десятичный логарифм и через него количество знаков в целой части числа, так называемый порядок числа. Десятичный логарифм LG(X) можно получить через любой другой. Здесь LG(X)=Log(X)/Log(10) 
 
Не понял, где там ответ. Имеется в виду вот это: "В функцию встроена проверка состояния флага остановки эксперта каждую 0.1 секунды."? Если так, то  как убрать этот флаг?
 
LRA:

простите, в програмировании я очень слаб, не могли бы вы помочь, засунуть это все в индикатор?
#property indicator_chart_window  //Вывод информации в окно графика
#property strict
int Число=25;

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
{
  // Проверка наличия метки для вывода информации
  if(ObjectFind("Итог")<0)
  {
    ObjectCreate("Итог", OBJ_LABEL, 0, 0, 0);   // Создание
    ObjectSet("Итог", OBJPROP_CORNER, 1);  // Правый верхний угол
    ObjectSet("Итог", OBJPROP_XDISTANCE, 10); //X   
    ObjectSet("Итог", OBJPROP_YDISTANCE, 10);       //Y
  }
  ObjectSetText("Итог", string(Число), 14,"Arial",Yellow);
  return(0);
}

void OnDeinit(const int reason)
{
  ObjectDelete("Итог");
}
Файлы:
j_1.mq4  6 kb
 
rapid_minus:
                   poz = OrderSend(Symbol(),OP_SELL,lot,Bid,slip,0,0,NULL,magic,Red);                  
                   Sleep(10000);
                   poz = OrderSend(Symbol(),OP_SELL,lot,Bid,slip,0,0,NULL,magic,Red);
                   Sleep(10000);
                   poz = OrderSend(Symbol(),OP_SELL,lot,Bid,slip,0,0,NULL,magic,Red);
                   Sleep(10000);
                   poz = OrderSend(Symbol(),OP_SELL,lot,Bid,slip,0,0,NULL,magic,Red);
                   Sleep(10000);
                   poz = OrderSend(Symbol(),OP_SELL,lot,Bid,slip,0,0,NULL,magic,Red);
Одна из причин: за 10 секунд слипа Bid стареет и будет ошибка. Смотреть в журналах. Можно увеличить slip или RefreshRates().   В тестере слипы глохнут и все ОК
 
kocunyc89:   засунуть ... в индикатор

Для начала засуньте в конец индикатора вот это. Увидев на экране метку, сообразите как в нее вывести требуемое.  Здесь советуют, а засовывает каждый сам.

  int Число=25;

  if(ObjectFind("Итог")<0)        // Проверка наличия метки для вывода информации
  {
    ObjectCreate("Итог", OBJ_LABEL, 0, 0, 0);   // Создание
    ObjectSet("Итог", OBJPROP_CORNER, 1);       // Правый верхний угол
    ObjectSet("Итог", OBJPROP_XDISTANCE, 10);   //X   
    ObjectSet("Итог", OBJPROP_YDISTANCE, 10);   //Y
  }
  ObjectSetText("Итог", string(Число), 14,"Arial",Yellow);   // Вывод в метку
 
rapid_minus: В функцию встроена проверка состояния флага остановки эксперта каждую 0.1 секунды.  как убрать этот флаг?
Флаг поднимает терминал, чтоб сообщить эксперту, что через три секунды его сглушат. Увидев флаг, слип глохнет и не мешает эксперту собрать игрушки перед побегом.
 
LRA:
Alert(log(10));  log(10)=2.302585092994046. MathLog  как и просто Log - это натуральный логарифм. Десятичный в MQL отсутствует.   Мне нужен был десятичный логарифм и через него количество знаков в целой части числа, так называемый порядок числа. Десятичный логарифм LG(X) можно получить через любой другой. Здесь LG(X)=Log(X)/Log(10) 

log(10) действительно не 1, а вот что в mql нет десятичного логарифма это ты меня удивил...

А это тогда что? https://docs.mql4.com/ru/math/mathlog10 хотя в тексте допущена ошибка.

Вопрос решается гораздо проще.

(int)MathAbs(MathLog10(MarketInfo(_Symbol, MODE_LOTSTEP)));