[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 141
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всё, получилось. Похоже из-за того, что задал один буфер.
#property indicator_buffers 1
всё вы правильно сделали. я проверил - выводит как надо (могу скрин дать).
только сверху дописал ещё
Помогите, плиз!!!
Господа знатоки, когда журнал в тестере пишет "Функция не разрешена в тестовом режиме" как узнать что это за функция не разрешена?
'Особенности и ограничения тестирования торговых стратегий в MetaTrader 4'
'Особенности и ограничения тестирования торговых стратегий в MetaTrader 4'
Благодарю
Здравствуйте. Очень нужна помощь! Хочу сделать советника на основе индикатора. В начале, как и в любом индикаторе есть такие строчки:
SetIndexBuffer(0,ExtBullBuffer);
SetIndexBuffer(1,ExtBull1Buffer);
SetIndexBuffer(2,ExtBull2Buffer);
SetIndexBuffer(3,ExtBull3Buffer);
SetIndexBuffer(4,ExtBull4Buffer);
SetIndexBuffer(5,ExtBull5Buffer);
SetIndexBuffer(6,ExtBull6Buffer);
SetIndexBuffer(7,ExtBull7Buffer);
Далее идет само тело программы (int start()...), где идет вычисление переменных ExtBullBuffer... так как я хочу сделать советника, то мне SetIndexBuffer не нужны, но если я их удаляю, то при тестировании переменные ExtBullBuffer не вычисляются (на всем временном интервале тестирования, на всех таймфреймах выдается 0, хотя это не так)... Подскажите, что делать?? Спасибо.
Здравствуйте. Очень нужна помощь! Хочу сделать советника на основе индикатора. В начале, как и в любом индикаторе есть такие строчки:
SetIndexBuffer(0,ExtBullBuffer);
Далее идет само тело программы (int start()...), где идет вычисление переменных ExtBullBuffer... так как я хочу сделать советника, то мне SetIndexBuffer не нужны, но если я их удаляю, то при тестировании переменные ExtBullBuffer не вычисляются (на всем временном интервале тестирования, на всех таймфреймах выдается 0, хотя это не так)... Подскажите, что делать?? Спасибо.
В индикаторных буферах инициализация буфера происходит автоматически как только вы обьявляете буфер индикаторным(а не вспомогательным),
в других программах (не индикаторах) буфера нужно инициализировать функцией ArrayResize(ExtBullBuffer,Bars);
(если конечно буфер не обьявлен явно double ExtBullBuffer[1000]; )
Причём инициализацию нужно делать в функции где предпологается присваивать значения буферу. В ваше случае в int start().
Всем привет. Подскажите как исправить код индюка, что бы звуковой сигнал выводился не один раз, а раз 10, или как есть индюки где сигналит до тех пор пока не появица следующая свечка. То есть сигнал идёт всё время свечи на которой он возник. А то этот индюк сигнал подаёт, но всего один раз..к сожалению ночью бывает не слышу(((( Заранее благодарен всем кто откликнеца.
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 Yellow
#property indicator_width1 2
#property indicator_color2 SkyBlue
#property indicator_width2 2
#property indicator_color3 Tomato
#property indicator_width3 2
#property indicator_color4 Blue
#property indicator_color5 Red
#property indicator_width4 1
#property indicator_width5 1
//---- input parameters
extern int Price = 0; //Apply to Price(0-Close;1-Open;2-High;3-Low;4-Median price;5-Typical price;6-Weighted Close)
extern int Length = 15; //Period of NonLagMA
extern int Displace = 0; //DispLace or Shift
extern double PctFilter = 0; //Dynamic filter in decimal
extern string note1 ="turn on Color: ln=1 ln&dot=2; off=0";
extern int Color = 2; //Switch of Color mode (1-color)
extern int ColorBarBack = 0; //Bar back for color mode
extern double Deviation = 0; //Up/down deviation
extern string note2 ="turn on = 1; turn off = 0";
extern int AlertMode = 0; //box Alert switch (0-off,1-on)
extern int WarningMode = 0; //Sound Warning switch(0-off,1-on)
extern int SendEmail = 0;
extern string soundfile = "news.wav";
//---- indicator buffers
double MABuffer[];
double UpBuffer[];
double DnBuffer[];
double trend[];
double Del[];
double AvgDel[];
double updbuffer[];
double dndbuffer[];
double alfa[];
int i, Phase, Len,Cycle=4;
double Coeff, beta, t, Sum, Weight, g;
double pi = 3.1415926535;
bool UpTrendAlert=false, DownTrendAlert=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(8);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MABuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,UpBuffer);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,DnBuffer);
SetIndexBuffer(5,trend);
SetIndexBuffer(6,Del);
SetIndexBuffer(7,AvgDel);
SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,159); SetIndexBuffer(3,updbuffer); SetIndexEmptyValue(3,EMPTY_VALUE);
SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,159); SetIndexBuffer(4,dndbuffer); SetIndexEmptyValue(4,EMPTY_VALUE);
string short_name;
//---- indicator line
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
short_name="NonLagMA("+Length+")";
IndicatorShortName(short_name);
SetIndexLabel(0,"NonLagMA");
SetIndexLabel(1,"Up");
SetIndexLabel(2,"Dn");
//----
SetIndexShift(0,Displace);
SetIndexShift(1,Displace);
SetIndexShift(2,Displace);
SetIndexShift(3,Displace);
SetIndexShift(4,Displace);
SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexEmptyValue(1,EMPTY_VALUE);
SetIndexEmptyValue(2,EMPTY_VALUE);
SetIndexDrawBegin(0,Length*Cycle+Length+1);
SetIndexDrawBegin(1,Length*Cycle+Length+1);
SetIndexDrawBegin(2,Length*Cycle+Length+1);
//----
Coeff = 3*pi;
Phase = Length-1;
Len = Length*4 + Phase;
ArrayResize(alfa,Len);
Weight=0;
for (i=0;i<Len-1;i++)
{
if (i<=Phase-1) t = 1.0*i/(Phase-1);
else t = 1.0 + (i-Phase+1)*(2.0*Cycle-1.0)/(Cycle*Length-1.0);
beta = MathCos(pi*t);
g = 1.0/(Coeff*t+1);
if (t <= 0.5 ) g = 1;
alfa[i] = g * beta;
Weight += alfa[i];
}
return(0);
}
//+------------------------------------------------------------------+
//| NonLagMA_v7.1 |
//+------------------------------------------------------------------+
int start()
{
int i,shift, counted_bars=IndicatorCounted(),limit;
double price;
if ( counted_bars > 0 ) limit=Bars-counted_bars;
if ( counted_bars < 0 ) return(0);
if ( counted_bars ==0 ) limit=Bars-Len-1;
if ( counted_bars < 1 )
for(i=1;i<Length*Cycle+Length;i++)
{
MABuffer[Bars-i]=0;
UpBuffer[Bars-i]=0;
DnBuffer[Bars-i]=0;
}
for(shift=limit;shift>=0;shift--)
{
Sum = 0;
for (i=0;i<=Len-1;i++)
{
price = iMA(NULL,0,1,0,3,Price,i+shift);
Sum += alfa[i]*price;
}
if (Weight > 0) MABuffer[shift] = (1.0+Deviation/100)*Sum/Weight;
if (PctFilter>0)
{
Del[shift] = MathAbs(MABuffer[shift] - MABuffer[shift+1]);
double sumdel=0;
for (i=0;i<=Length-1;i++) sumdel = sumdel+Del[shift+i];
AvgDel[shift] = sumdel/Length;
double sumpow = 0;
for (i=0;i<=Length-1;i++) sumpow+=MathPow(Del[shift+i]-AvgDel[shift+i],2);
double StdDev = MathSqrt(sumpow/Length);
double Filter = PctFilter * StdDev;
if( MathAbs(MABuffer[shift]-MABuffer[shift+1]) < Filter ) MABuffer[shift]=MABuffer[shift+1];
}
else
Filter=0;
if (Color>0)
{
trend[shift]=trend[shift+1];
if (MABuffer[shift]-MABuffer[shift+1] > Filter) trend[shift]= 1;
if (MABuffer[shift+1]-MABuffer[shift] > Filter) trend[shift]=-1;
updbuffer[shift] = EMPTY_VALUE; dndbuffer[shift] = EMPTY_VALUE;
if (trend[shift]>0)
{
UpBuffer[shift] = MABuffer[shift];
if (trend[shift+ColorBarBack]<0) UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
DnBuffer[shift] = EMPTY_VALUE;
if (trend[shift+1]<0&&Color>1) updbuffer[shift]= MABuffer[shift];
}
if (trend[shift]<0)
{
DnBuffer[shift] = MABuffer[shift];
if (trend[shift+ColorBarBack]>0) DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
UpBuffer[shift] = EMPTY_VALUE;
if (trend[shift+1]>0&&Color>1) dndbuffer[shift]= MABuffer[shift];
}
}
}
//----------
string Message;
if ( trend[2]<0 && trend[1]>0 && Volume[0]>1 && !UpTrendAlert)
{
Message = " "+Symbol()+" M"+Period()+" NonLagMa Signal for BUY";
if ( AlertMode>0 ) Alert (Message);
if ( WarningMode>0 ) PlaySound(soundfile);
if ( SendEmail>0 ) SendMail("NonLagMa", "UpTrendAlert");
UpTrendAlert=true; DownTrendAlert=false;
}
if ( trend[2]>0 && trend[1]<0 && Volume[0]>1 && !DownTrendAlert)
{
Message = " "+Symbol()+" M"+Period()+" NonLagMa Signal for SELL";
if ( AlertMode>0 ) Alert (Message);
if ( WarningMode>0 ) PlaySound(soundfile);
if ( SendEmail>0 ) SendMail("NonLagMa", "DownTrendAlert");
DownTrendAlert=true; UpTrendAlert=false;
}
//----
return(0);
}
Всем привет. Подскажите как исправить код индюка, что бы звуковой сигнал выводился не один раз, а раз 10, или как есть индюки где сигналит до тех пор пока не появица следующая свечка. То есть сигнал идёт всё время свечи на которой он возник. А то этот индюк сигнал подаёт, но всего один раз..к сожалению ночью бывает не слышу(((( Заранее благодарен всем кто откликнеца.
А вам это зачем? Раскажите подробней может решение рядом, а вы не знаете как правильно спросить чтоб люди поняли.
По тому что вы написали у меня есть два решения, вам какое, два сразу слишком долго писать :)
..
кстати такие длинные коды лучше прикреплять файлом.
Да и для кода есть специальная кнопочка SRC