![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
airquest
Вы должны принять это во внимание, иначе индикатор не будет работать.
Лучший способ вызова индикаторов с таким параметром - следующий:
iCustom(NULL,targetTimeFrame,indicatorName,"",...,buffer,shift);
Итак, используйте "" для этого параметраСпасибо, Младен, как всегда, вы мне очень помогли.
может ли кто-нибудь сделать так, чтобы этот индикатор строил график на открытии бара, когда он присутствует? версия в TradeStation будет строить график индикатора более высокого таймфрейма (когда он присутствует) на баре более низкого таймфрейма до того, как цена фактически проторгуется через это значение. однако в версии MT4 это не так, и он не будет строить график, пока цена не проторгуется через него.
большое спасибо,
Скотт
***
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 White
#property indicator_color2 White
//#property indicator_width1 5
//#property indicator_width2 5
//---- входные параметры
/************************************************** ***********************
PERIOD_M1 1
PERIOD_M5 5
PERIOD_M15 15
PERIOD_M30 30
PERIOD_H1 60
PERIOD_H4 240
PERIOD_D1 1440
ПЕРИОД_W1 10080
ПЕРИОД_МН1 43200
Вы должны использовать числовое значение таймфрейма, который вы хотите использовать
когда вы устанавливаете значение TimeFrame' с помощью входов индикатора.
************************************************** ************************/
extern int TimeFrame = 240;
extern int num = 6;
extern color Color = White;
double vftop[];
double vfbot[];
//+------------------------------------------------------------------+
//| Пользовательская функция инициализации индикатора |
//+------------------------------------------------------------------+
int init()
{
//---- индикаторы
IndicatorBuffers(2);
SetIndexBuffer(0, vfbot);
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 5, Color);
// SetIndexArrow(0, 117);
SetIndexEmptyValue(0, 0);
SetIndexBuffer(1, vftop);
SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 5, Color);
// SetIndexArrow(1, 117);
SetIndexEmptyValue(1, 0);
switch(TimeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Текущий таймфрейм";
}
IndicatorShortName("MTF_VolumeFinder ("+TimeFrameStr+")");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция деинициализации индикатора.
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция итерации индикатора |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int i = Bars - counted_bars;
if(counted_bars == 0) i = Bars - num*2;
int j = 0;
double t1, t2;
int y = 0;
while(i >= 0)
{
y = iBarShift(Symbol(), TimeFrame, Time);
t1 = iLow(Symbol(), TimeFrame, y);
t2 = iHigh(Symbol(), TimeFrame, y);
for(j = y+1; j < y + num; j++)
{
t1 = MathMax(t1, iLow(Symbol(), TimeFrame, j));
t2 = MathMin(t2, iHigh(Symbol(), TimeFrame, j));
}
if(t1 <= t2)
{
vftop = t2;
vfbot = t1;
}
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
может ли кто-нибудь заставить этот индикатор строить график на открытии бара, когда он присутствует? версия в TradeStation будет строить график индикатора более высокого таймфрейма (когда он присутствует) на баре более низкого таймфрейма до того, как цена фактически проторгуется через это значение. однако в версии MT4 это не так, и он не будет строить график, пока цена не проторгуется через него.
большое спасибо,
Скотт
***
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 White
#property indicator_color2 White
//#property indicator_width1 5
//#property indicator_width2 5
//---- входные параметры
/************************************************** ***********************
PERIOD_M1 1
PERIOD_M5 5
PERIOD_M15 15
PERIOD_M30 30
PERIOD_H1 60
PERIOD_H4 240
PERIOD_D1 1440
ПЕРИОД_W1 10080
ПЕРИОД_МН1 43200
Вы должны использовать числовое значение таймфрейма, который вы хотите использовать
когда вы устанавливаете значение TimeFrame' с помощью входов индикатора.
************************************************** ************************/
extern int TimeFrame = 240;
extern int num = 6;
extern color Color = White;
double vftop[];
double vfbot[];
//+------------------------------------------------------------------+
//| Пользовательская функция инициализации индикатора |
//+------------------------------------------------------------------+
int init()
{
//---- индикаторы
IndicatorBuffers(2);
SetIndexBuffer(0, vfbot);
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 5, Color);
// SetIndexArrow(0, 117);
SetIndexEmptyValue(0, 0);
SetIndexBuffer(1, vftop);
SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 5, Color);
// SetIndexArrow(1, 117);
SetIndexEmptyValue(1, 0);
switch(TimeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Текущий таймфрейм";
}
IndicatorShortName("MTF_VolumeFinder ("+TimeFrameStr+")");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция деинициализации индикатора.
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция итерации индикатора |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int i = Bars - counted_bars;
if(counted_bars == 0) i = Bars - num*2;
int j = 0;
double t1, t2;
int y = 0;
while(i >= 0)
{
y = iBarShift(Symbol(), TimeFrame, Time);
t1 = iLow(Symbol(), TimeFrame, y);
t2 = iHigh(Symbol(), TimeFrame, y);
for(j = y+1; j < y + num; j++)
{
t1 = MathMax(t1, iLow(Symbol(), TimeFrame, j));
t2 = MathMin(t2, iHigh(Symbol(), TimeFrame, j));
}
if(t1 <= t2)
{
vftop = t2;
vfbot = t1;
}
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+Можете ли вы выложить оригинальный код tradestation?
Я искал его, но не могу найти. Я купил индикатор в 2004 году.
Я искал его, но не могу найти. Я купил индикатор в 2004 году.
Я спросил об этом, так как хотел бы сравнить код - иногда код на простом языке выглядит как простая задача для преобразования в metatrader, но различия слишком велики, чтобы в некоторых случаях быть уверенным на 100%, что преобразование выполнено так, как нужно.
Помогите мне
привет
Не могли бы вы помочь сделать так, чтобы это работало на MT4 Build 600+
Заранее спасибо!
Ошибка WPR_MA
Привет, Младен!
Могу ли я попросить небольшой помощи в кодировании?
Я, вроде как, написал индикатор, который усредняет 4 других WPR в одном окне индикатора.
Если загрузить шаблон, то можно увидеть разницу между МА на WPR.
Верхняя - индикатор, нижняя - вручную смешанная. Цель состоит в том, чтобы превратить ручной в индикатор.
Спрашивается, зачем она это делает? Где я неправильно закодировал WPR_MA.
Спасибо за ваше время
Adledion
Привет, mladen!
Могу ли я попросить небольшой помощи в кодировании?
Я, вроде как, написал индикатор, который усредняет 4 других WPR в одном окне индикатора.
Если загрузить шаблон, то можно увидеть разницу между МА на WPR.
Верхняя - индикатор, нижняя - вручную смешанная. Цель состоит в том, чтобы превратить ручной в индикатор.
Спрашивается, зачем она это делает? Где я неправильно закодировал WPR_MA.
Спасибо за ваше время
AdledionAdledion
В шаблоне ma применяется только к одному WPR (WPR(50) в случае этого шаблона). Вы не можете применить ma к нескольким индикаторам, и именно поэтому существует разница между вашим индикатором и шаблоном.
Попробуйте - установите все периоды WPR в вашем индикаторе на 50 и сравните значения индикатора с предыдущим значением ma в шаблоне (предыдущим, поскольку вы используете сдвиг один в индикаторе для iMAOnArray() ) и вы увидите, что у вас точно такие же значения в этом случае.
Adledion
В шаблоне ma применяется только к одному WPR (WPR(50) в случае этого шаблона). Вы не можете применить ma к нескольким индикаторам, и именно поэтому существует разница между вашим индикатором и шаблоном.
Попробуйте - установите все периоды WPR в вашем индикаторе на 50 и сравните значения индикатора с предыдущим значением ma в шаблоне (предыдущим, поскольку вы используете сдвиг один в индикаторе для iMAOnArray() ) и вы увидите, что у вас точно такие же значения в этом случаеОго, спасибо, не копал так глубоко![](https://c.mql5.com/forextsd/smiles/smile.png)
edit: and that means, in the manual mix the ma is just on one wpr? first indicators data...? so basically the manual is the wrong one (calculating one wpr ma), compared to my original idea, which is calculating 3 or 4 wpr ma.
Младен
Я немного озадачен, являются ли эти 2 индикатора перерисовывающимися? https://www.mql5.com/en/forum/172895
Что представляют собой эти гистограммы, вы знаете? Спасибо.