Скачать MetaTrader 5

Нужна линия баланса в виде индикатора

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Статьи уже помогли многим трейдерам. Заходи и читай!
forexman77
2119
forexman77 2015.03.20 07:54 

Нужна линия баланса в виде индикатора при вызове из тестера.

Сделал индюк. Запускаю, на новом баре каждый раз новое окно открывается.

Кто скажет в чем дело? Код MQL4, там уже спрашивал.

Код индикатора:

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Blue
extern double r=1.0; 
double balance[];
 
int init()
{
   SetIndexBuffer(0,balance);
    IndicatorDigits( 2 );
    SetIndexStyle( 0, DRAW_LINE );

}
int start()
{
    int counted_bars=IndicatorCounted(),                      
    i,limit;
    if(counted_bars>0)
      counted_bars--;  
    limit=Bars-counted_bars-1;
    
    for(i=limit;i>=0;i--)balance[i] =r;
   
    return(0);
}

 в советнике:

double r;
r=AccountBalance();
double indicator=iCustom(NULL,0,"Balance",r,0,1);

 Вот так при вызове из тестера индикатор начинает спамить окнами.

 

Sergey Dzyublik
4817
Sergey Dzyublik 2015.03.20 08:07  

Все верно работает.
Вы каждый раз вызываете новый индикатор с новыми параметрами iCustom(NULL,0,"Balance",r,0,1);


Нет возможности передавать значение с советника в индикатор через iCustom.
Вы можете сделать это:
- через глобальные переменные терминала
- через запись чтение с файла
- DLL для общего доступа к переменным
- найти готовое решение в кодобазе
- ..... 

forexman77
2119
forexman77 2015.03.20 08:18  
ALXIMIKS:

Все верно работает.
Вы каждый раз вызываете новый индикатор с новыми параметрами iCustom(NULL,0,"Balance",r,0,1);


Нет возможности передавать значение с советника в индикатор через iCustom.
Вы можете сделать это:
- через глобальные переменные терминала
- через запись чтение с файла
- DLL для общего доступа к переменным
- найти готовое решение в кодобазе
- ..... 

По глобальным переменным пробовал, ничего не выходит.

На основе статьи  komposter

Ссылку найти не могу. Может в старых билдах работало?

Делал вот так(пост 292):

Вот что получается:

  

в индикаторе попробовал на каждом баре значение получать, та же картина:

int start()
{
int counted_bars=IndicatorCounted(),                      
    i,limit;
    if(counted_bars>0)
      counted_bars--;  
    limit=Bars-counted_bars-1;
    
    for(i=limit;i>=0;i--){balance[i]=GlobalVariableGet( "vGrafBalance" );}
    return(0);
}
Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - MQL4 форум
  • www.mql5.com
Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - MQL4 форум
Vasiliy Sokolov
21797
Vasiliy Sokolov 2015.03.20 08:37  
forexman77:
Вам не нужны глобальные переменные, как не нужно передавать значения из советника в индикатор. Попробуйте найти решение этой проблемы иначе.
forexman77
2119
forexman77 2015.03.20 08:43  
C-4:
Вам не нужны глобальные переменные, как не нужно передавать значения из советника в индикатор. Попробуйте найти решение этой проблемы иначе.

Ну, Вы прямо сходи туда не знаю куда, возьми, то не знаю, что)

Можно подсказку. Все равно, что подсказывают,  потом разбираю, пытаясь понять.

Но, вот время масса уходит, если не спрашивать.  

Линия индикатора мне нужна, так как есть желание сделать из нее мувинги с пересечением. 

forexman77
2119
forexman77 2015.03.20 09:07  

 Сделал так в индикаторе:

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Blue

double balance[];
int init()
{
    SetIndexBuffer(0,balance);
    IndicatorDigits( 2 );
    SetIndexStyle( 0, DRAW_LINE );
}
int start()
{
    int counted_bars=IndicatorCounted(),                      
    i,limit;
    if(counted_bars>0)
      counted_bars--;  
    limit=Bars-counted_bars-1;
    
    for(i=limit;i>=0;i--)balance[i] =AccountBalance();
   
    return(0);
}

 в советнике вызываю:

double indicator=iCustom(NULL,0,"Balance",0,1);

 на всех барах значение баланса равняется значению в конце теста.

Vasiliy Sokolov
21797
Vasiliy Sokolov 2015.03.20 10:32  
forexman77:

Ну, Вы прямо сходи туда не знаю куда, возьми, то не знаю, что)

Можно подсказку. Все равно, что подсказывают,  потом разбираю, пытаясь понять.

Прямо из индикатора получите доступ к торговому окружению (количество сделок, фин. результат и т.д.). 
Dmitry Fedoseev
42923
Dmitry Fedoseev 2015.03.20 10:45  
Перед вызовом индикатора отправить в глобальную переменную значение, в индикаторе забрать значение и положить его в индикаторный буфер  для бара с индексом 0. Для тестера пойдет.
forexman77
2119
forexman77 2015.03.20 11:05  
C-4:
Прямо из индикатора получите доступ к торговому окружению (количество сделок, фин. результат и т.д.). 
Ну, вот же в предыдущем посте запрашивают баланс, все буферы заполняются последним значением.
forexman77
2119
forexman77 2015.03.20 11:08  
Integer:
Перед вызовом индикатора отправить в глобальную переменную значение, в индикаторе забрать значение и положить его в индикаторный буфер  для бара с индексом 0. Для тестера пойдет.
Во втором своем сообщении делал и так ничего не получается.
Dmitry Fedoseev
42923
Dmitry Fedoseev 2015.03.20 11:54  
Индикатор не надо вызывать из советника. В советнике только глобальной переменой присваиваем значение. Индикатор тоже проще некуда - присваиваем нулевому элементу буфера значение глобальной переменной.  Будет работать только в визуальном режиме (в самом процессе тестирования).
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий