Вызов индикатора SilverTrend_Signal Новый комментарий Forex Trader 2005.10.10 08:39 Есть следующий индикатор: //+------------------------------------------------------------------+ //| SilverTrend_Signal.mq4 //| Ramdass - Conversion only //+------------------------------------------------------------------+ #property copyright "SilverTrend rewritten by CrazyChart" #property link "http://viac.ru/" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Aqua #property indicator_color2 Violet //---- input parameters extern int RISK=3; extern int CountBars=350; int SSP=9; //---- buffers double val1[]; double val2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- indicator line IndicatorBuffers(2); SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,233); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,234); SetIndexBuffer(0,val1); SetIndexBuffer(1,val2); //---- return(0); } //+------------------------------------------------------------------+ //| SilverTrend_Signal | //+------------------------------------------------------------------+ int start() { if (CountBars>=Bars) CountBars=Bars; SetIndexDrawBegin(0,Bars-CountBars+SSP); SetIndexDrawBegin(1,Bars-CountBars+SSP); int i,shift,counted_bars=IndicatorCounted(); int i1,i2,K; double Range,AvgRange,smin,smax,SsMax,SsMin,price; bool uptrend,old; //---- if(Bars<=SSP+1) return(0); //---- initial zero if(counted_bars<SSP+1) { for(i=1;i<=SSP;i++) val1[CountBars-i]=0.0; for(i=1;i<=SSP;i++) val2[CountBars-i]=0.0; } //---- K=33-RISK; for (shift = CountBars-SSP; shift>=0; shift--) { Range=0; AvgRange=0; for (i1=shift; i1<=shift+SSP; i1++) {AvgRange=AvgRange+MathAbs(High[i1]-Low[i1]); } Range=AvgRange/(SSP+1); SsMax=High[shift]; SsMin=Low[shift]; for (i2=shift;i2<=shift+SSP-1;i2++) { price=High[i2]; if(SsMax<price) SsMax=price; price=Low[i2]; if(SsMin>=price) SsMin=price; } smin = SsMin+(SsMax-SsMin)*K/100; smax = SsMax-(SsMax-SsMin)*K/100; val1[shift]=0; val2[shift]=0; if (Close[shift]<smin) { uptrend = false; } if (Close[shift]>smax) { uptrend = true; } if (uptrend!=old && uptrend==true) {val1[shift]=Low[shift]-Range*0.5;} if (uptrend!=old && uptrend==false) {val2[shift]=High[shift]+Range*0.5;} old=uptrend; } return(0); } Подскажите как правильно получить сигнал индикатора из эксперта? SilverTrend_Signal=iCustom(NULL,240,"SilverTrend_Signal",3,350,???,???); Вызов функций из индикаторов Индикатор BAMSBUNG-NO REPAINT Подскажите, как достать iCustom из эксперта. Forex Trader 2005.10.10 12:29 #1 iCustom(NULL,240,"SilverTrend_Signal",3,350,"№ буфера","смещение в барах"); "№ буфера" - 0 если надо получить значение стрелочки снизу, или 1 если сверху "смещение в барах" - стандартно для всех индикаторов, первый бар Bars-1, последний бар - 0 Forex Trader 2005.10.10 12:43 #2 Спасибочки!!! Заработало!!! Новый комментарий
//+------------------------------------------------------------------+ //| SilverTrend_Signal.mq4 //| Ramdass - Conversion only //+------------------------------------------------------------------+ #property copyright "SilverTrend rewritten by CrazyChart" #property link "http://viac.ru/" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Aqua #property indicator_color2 Violet //---- input parameters extern int RISK=3; extern int CountBars=350; int SSP=9; //---- buffers double val1[]; double val2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- indicator line IndicatorBuffers(2); SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,233); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,234); SetIndexBuffer(0,val1); SetIndexBuffer(1,val2); //---- return(0); } //+------------------------------------------------------------------+ //| SilverTrend_Signal | //+------------------------------------------------------------------+ int start() { if (CountBars>=Bars) CountBars=Bars; SetIndexDrawBegin(0,Bars-CountBars+SSP); SetIndexDrawBegin(1,Bars-CountBars+SSP); int i,shift,counted_bars=IndicatorCounted(); int i1,i2,K; double Range,AvgRange,smin,smax,SsMax,SsMin,price; bool uptrend,old; //---- if(Bars<=SSP+1) return(0); //---- initial zero if(counted_bars<SSP+1) { for(i=1;i<=SSP;i++) val1[CountBars-i]=0.0; for(i=1;i<=SSP;i++) val2[CountBars-i]=0.0; } //---- K=33-RISK; for (shift = CountBars-SSP; shift>=0; shift--) { Range=0; AvgRange=0; for (i1=shift; i1<=shift+SSP; i1++) {AvgRange=AvgRange+MathAbs(High[i1]-Low[i1]); } Range=AvgRange/(SSP+1); SsMax=High[shift]; SsMin=Low[shift]; for (i2=shift;i2<=shift+SSP-1;i2++) { price=High[i2]; if(SsMax<price) SsMax=price; price=Low[i2]; if(SsMin>=price) SsMin=price; } smin = SsMin+(SsMax-SsMin)*K/100; smax = SsMax-(SsMax-SsMin)*K/100; val1[shift]=0; val2[shift]=0; if (Close[shift]<smin) { uptrend = false; } if (Close[shift]>smax) { uptrend = true; } if (uptrend!=old && uptrend==true) {val1[shift]=Low[shift]-Range*0.5;} if (uptrend!=old && uptrend==false) {val2[shift]=High[shift]+Range*0.5;} old=uptrend; } return(0); }Подскажите как правильно получить сигнал индикатора из эксперта?
SilverTrend_Signal=iCustom(NULL,240,"SilverTrend_Signal",3,350,???,???);