[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 319

 
drknn:


Рынок отдыхает - отдыхайте и Вы.

Рынок открывается в Понедельник в Токио. Закрывается в пятницу в Чикаго. Открывается около 2 часов ночи, закрывается около 22-23 часов (часовой пояс - Москва или Киев)

Спасибо Вам огромное!))) Аж смешно стало. Я просто со вторника начала работать и не знала что в выходные рынок отдыхает.))
 
Zhunko:
Функции нет, но её можно сделать на MQL4 + WinAPI.

//+------------------------------------------------------------------+
//|          Function  : int GetChartScale()[1,2,4,6,13]             |
//|          Copyright © 2012, XrustSolution.  mail:xrustx@gmail.com |
//|          https://www.youtube.com/user/opmlv http://forexrust.info |
//+------------------------------------------------------------------+
//|          Description: Возвращает ширину свечи по масштабу чарта  |
//+------------------------------------------------------------------+
#import "user32.dll"
  bool GetWindowRect(int h, int& pos[4]);
#import
//+------------------------------------------------------------------+
int GetChartScale(){
        int h = WindowHandle(Symbol(), Period());
        int rect[4];
        if(h==0) return(1);
        GetWindowRect(h, rect);
        int wW  = rect[2] - rect[0]; // ширина окна
        int bpc = WindowBarsPerChart();
        if(bpc==0) return(1);
        int scale = MathFloor((wW-48)/bpc);
        switch(scale){
                case  1 :       return(0);
                case  2 :       return(1);
                case  4 :       return(2);
                case  8 :       return(3);
                case 16 :       return(6);
                case 32 :       return(13);
                default :   return(1);
        }
        return(1);
}
//+------------------------------------------------------------------+
 

Доброго дня! Подскажите, пожалуйста, почему не отображается линия индикатора, код вроде элементарный и ничего сложного. Проверяла на Print (T_V) -значение выдаёт, а линия не отображается почему-то?

Добавляю свой вопрос: удалила индикатор, нанесла на график снова и линия отображается. Почему не пересчитывается индикатор при компилировании?

#property indicator_separate_window
#property indicator_minimum -3
#property indicator_maximum 3
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_level1 0.0         //горизонтальный уровень N в отдельном окне индикатора, где N от 1 до 8 
#property indicator_levelcolor Black   // цвет горизонтальных уровней индикатора е 
#property indicator_levelwidth 1       //толщина горизонтальных уровней индикатора
double T_Vol[];

int init()
  {  SetIndexBuffer (0, T_Vol); 
     SetIndexStyle  (0, DRAW_HISTOGRAM, STYLE_SOLID, 1); 
     IndicatorDigits(Digits);
   return(0); }
int start(){
   int limit;
   int сounted_bars=IndicatorCounted();
   if (сounted_bars==0) limit=Bars-1;
   if (сounted_bars>0) limit=Bars-сounted_bars-1;
   for(int i=limit;i>=0;i--){
       int T_V=0; 
       if (Volume[i]>Volume[i+1])T_V=1;
       if (Volume[i]<Volume[i+1])T_V=-1;
       T_Vol[i]=T_V;
   }
   return(0);
}
 
PapaYozh:


1.

Какое значение имеет переменная "SignalBar" и производится ли расчет индикатора на этом баре?

Возможно, SignalBar=0, а индикатор не обсчитывает 0-ой бар.

2.

Да, при визуальном тестировании индикаторные буферы не отображаются до завершения либо прерывания тестирования. Но индикаторы считаются.

Спасибо, что обратили внимание на немаловажные факты! Но пока ничего не помогло :(

Так что теперь изучаю перенос индикатора в эксперт. Если у Вас есть мудрые советы, то я не откажусь ! :)

 

Всем привет!

Изучал программирование на уровне любителя, давно не программировал, и вот вопрос:

Зачем в MQL4 брейкпоинты, если после их постановки при компиляции ничего не происходит? Много программировал на C#, так там делалась пауза в выполнении программы, можно было посмотреть значения переменных, какие функции были вызваны, поглядеть список ошибок. А здесь-жму Compile - и нет ничего. Или как-то можно Debug включить, просто я не знаю как?

 

есть функция "double MathRound( double value)", но мне необходимо, чтоб округление было до большей десятичной дроби, а если число целое или и так десятичное, то не трогать.

Например: 1) 0,744 округлить до 0,8; 1,233 округлить до 1,3

2) 0,9 или 3 или 1,5 не трогать.



Кто может помочь, пожалуйста?
 

Интересно, вы вообще знаете что есть полная и подробная Документация по языку ???

NormalizeDouble

 
FAQ:

Интересно, вы вообще знаете что есть полная и подробная Документация по языку ???

NormalizeDouble

в большую сторону, а то как-то все у вас просто получается, а?...
 
okvseok:
в большую сторону, а то как-то все у вас просто получается, а?...

Можно перевести число в строку и написать функию обработки символов этой строки. У Вас же тут не сложно - округляем же только если у числа более одной цифры после запятой.
 
drknn:

Можно перевести число в строку и написать функию обработки символов этой строки. У Вас же тут не сложно - округляем же только если у числа более одной цифры после запятой.
ок и правда попробую. спасибо огромное за идею!
Причина обращения: