Помощь в кодировании - страница 294

 
mladen:
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);

}

//+------------------------------------------------------------------+

 
scott TTM:
может ли кто-нибудь заставить этот индикатор строить график на открытии бара, когда он присутствует? версия в 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 году.

 
scott TTM:
Я искал его, но не могу найти. Я купил индикатор в 2004 году.

Я спросил об этом, так как хотел бы сравнить код - иногда код на простом языке выглядит как простая задача для преобразования в metatrader, но различия слишком велики, чтобы в некоторых случаях быть уверенным на 100%, что преобразование выполнено так, как нужно.

 

Помогите мне

привет

Не могли бы вы помочь сделать так, чтобы это работало на MT4 Build 600+

Заранее спасибо!

Файлы:
sap_robot.mq4  32 kb
forexhacked.mq4  19 kb
 

Ошибка WPR_MA

Привет, Младен!

Могу ли я попросить небольшой помощи в кодировании?

Я, вроде как, написал индикатор, который усредняет 4 других WPR в одном окне индикатора.

Если загрузить шаблон, то можно увидеть разницу между МА на WPR.

Верхняя - индикатор, нижняя - вручную смешанная. Цель состоит в том, чтобы превратить ручной в индикатор.

Спрашивается, зачем она это делает? Где я неправильно закодировал WPR_MA.

Спасибо за ваше время

Adledion

Файлы:
 
adledion:
Привет, mladen!

Могу ли я попросить небольшой помощи в кодировании?

Я, вроде как, написал индикатор, который усредняет 4 других WPR в одном окне индикатора.

Если загрузить шаблон, то можно увидеть разницу между МА на WPR.

Верхняя - индикатор, нижняя - вручную смешанная. Цель состоит в том, чтобы превратить ручной в индикатор.

Спрашивается, зачем она это делает? Где я неправильно закодировал WPR_MA.

Спасибо за ваше время

Adledion

Adledion

В шаблоне ma применяется только к одному WPR (WPR(50) в случае этого шаблона). Вы не можете применить ma к нескольким индикаторам, и именно поэтому существует разница между вашим индикатором и шаблоном.

Попробуйте - установите все периоды WPR в вашем индикаторе на 50 и сравните значения индикатора с предыдущим значением ma в шаблоне (предыдущим, поскольку вы используете сдвиг один в индикаторе для iMAOnArray() ) и вы увидите, что у вас точно такие же значения в этом случае.

 
mladen:
Adledion

В шаблоне ma применяется только к одному WPR (WPR(50) в случае этого шаблона). Вы не можете применить ma к нескольким индикаторам, и именно поэтому существует разница между вашим индикатором и шаблоном.

Попробуйте - установите все периоды WPR в вашем индикаторе на 50 и сравните значения индикатора с предыдущим значением ma в шаблоне (предыдущим, поскольку вы используете сдвиг один в индикаторе для iMAOnArray() ) и вы увидите, что у вас точно такие же значения в этом случае

Ого, спасибо, не копал так глубоко

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

Что представляют собой эти гистограммы, вы знаете? Спасибо.

Файлы:
forexmtn.mq4  3 kb
rd-combo.mq4  11 kb
Причина обращения: