Скачать MetaTrader 5

Баг с IsVisualMode()!!!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114299
Forex Trader  
Здравствуйте.

В новом 200 билде и в 199, не работает функция IsVisualMode(), не возвращает True
пример приведенный в хелпе, тоже не функционирует, исправте этот баг.

код для проверки:
#property indicator_chart_window

int start()
{
int counted_bars=IndicatorCounted();
//----
if(IsVisualMode()) Comment("Visual mode turned on");
//----
return(0);
}
Forex Trader
114299
Forex Trader  
Как Вы определили, что функция не работает?
Forex Trader
114299
Forex Trader  
Комент не работает. на чарт не выводится информация "Visual mode turned on"
Forex Trader
114299
Forex Trader  
Поиск "comment"
"Функция Comment"

а пример действительно не совсем удачный :)
Forex Trader
114299
Forex Trader  
Вот пример надеюсь более удачный. Стандартный индикатор MACD, если его прикрепить на чарт то он ничего не должен расчитывать, а если прикрепить к графику где идёт визкальное тестирование то расчет должен осуществляться. т.к. IsVisualMode()==true

//+------------------------------------------------------------------+
//| Custom MACD.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "https://www.metaquotes.net/
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Silver
#property indicator_color2 Red
#property indicator_width1 2
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//---- indicator buffers
double MacdBuffer[];
double SignalBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);
SetIndexDrawBegin(1,SignalSMA);
IndicatorDigits(Digits+1);
//---- indicator buffers mapping
SetIndexBuffer(0,MacdBuffer);
SetIndexBuffer(1,SignalBuffer);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------+
int start()
{
if (IsVisualMode()==true){
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
for(int i=0; i<limit; i++)
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
}
return(0);
}
//+------------------------------------------------------------------+
Forex Trader
114299
Forex Trader  
Индикаторы, вызванные из экспертов, работают в контексте вызвавшего их эксперта. И они ничего не рисуют на графике.

Попробуйте вместо коммента использовать принт.
Forex Trader
114299
Forex Trader  
Я просто прикрепляю индикатор на график визуализации руками. и ничего не происходит, ни коменты не выводятся ни чего-то другое. Индикатор не вызывается из тестируемого эксперта.
Forex Trader
114299
Forex Trader  
Вы прикрепили индикатор к графику. И этот индикатор не имеет никакого отношения к тестированию. Если Вы попытаетесь вызвать в этом индикаторе функцию IsTesting, то она вернёт false. По той же причине.
Forex Trader
114299
Forex Trader  
объясните подробнев в связке с чем и как использовать данную функцию.
Попробывал написать эксперта который вызывает данный индикатор, тоже ничего не вышло.

int start()
{
//----
double indic = iCustom(NULL, 0, "MACD",12,26,9,0);
Comment (indic);
//----
return(0);
}
Forex Trader
114299
Forex Trader  
Эту функцию желательно использовать в экспертах (согласно справки). Например, для дополнительной визуализации с помощью графических объектов.
Forex Trader
114299
Forex Trader  
В индикаторах тоже можно. Просто для общности. Вызванные экспертом индикаторы наследуют всё окружение (флаги в том числе) эксперта.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий