- Помогите бесплатно ,если это возможно надо переделать код индикатора что бы он считал тики вместо объема
- Скользящая средняя
- Помощь в кодировании
//+------------------------------------------------------------------+ //| Waddah_ExVolv2_01 | //| нач. 21/09/2019 | //+------------------------------------------------------------------+ #property copyright "Inkov Evgeni" #property link "ew123@mail.ru" //+------------------------------------------------------------------+ #property version "1.00" #property strict //---- #property indicator_separate_window #property indicator_buffers 6 #property indicator_color1 clrNONE #property indicator_color2 clrNONE #property indicator_color3 clrYellow #property indicator_color4 clrBlack #property indicator_color5 clrBlue #property indicator_color6 clrRed #property indicator_maximum 1 #property indicator_minimum -1 //================================= extern int ExPeriod = 0; extern int Normalize = 1; extern int MaxBars = 100; extern color clr_arrow_UP = clrLime; extern color clr_arrow_DW = clrRed; extern int widh_arrow = 3; extern int shift_arrow = 0; //---- buffers double P1; double P2; double P1Buffer[]; double P2Buffer[]; double P3Buffer[]; //---- datetime Time_Alert=0; double pos; double VolBuffer[]; double PosBuffer[]; double NegBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(6); SetIndexBuffer(0, P1Buffer); SetIndexBuffer(1, P2Buffer); SetIndexBuffer(2, P3Buffer); //---- SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 1); SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 1); SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID,20); //===================================================== SetIndexStyle(3, DRAW_NONE); SetIndexBuffer(3, VolBuffer); SetIndexStyle(4, DRAW_HISTOGRAM, STYLE_SOLID, 4); SetIndexBuffer(4, PosBuffer); SetIndexStyle(5, DRAW_HISTOGRAM, STYLE_SOLID, 4); SetIndexBuffer(5, NegBuffer); SetIndexDrawBegin(3, ExPeriod); SetIndexDrawBegin(4, ExPeriod); SetIndexDrawBegin(5, ExPeriod); SetIndexLabel(4, NULL); SetIndexLabel(5, NULL); IndicatorDigits(0); return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjectsDeleteAll(0,"up"); ObjectsDeleteAll(0,"dw"); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i,ii; // waddah static int pii=-1; int n=iBars(Symbol(),PERIOD_M1); if (MaxBars>0)n=iBarShift(NULL,PERIOD_M1,iTime(NULL,0,MaxBars)); for(i = 0; i <iBars(Symbol(),PERIOD_M1) && i<n; i++) // for(i = 0; i <iBars(Symbol(),PERIOD_M1) ; i++) { ii = iBarShift(Symbol(), Period(), iTime(Symbol(),PERIOD_M1,i), true); if (ii>=Bars || ii<0)continue; //---- if (pii!=ii) { P1=0; P2=0; P1Buffer[ii]=0; P2Buffer[ii]=0; P3Buffer[ii]=0; } if (ii != -1) { if (iClose(Symbol(),PERIOD_M1,i)>iClose(Symbol(),PERIOD_M1,i+1)) { P1 = P1+(iVolume(Symbol(),PERIOD_M1,i)); } if (iClose(Symbol(),PERIOD_M1,i)<iClose(Symbol(),PERIOD_M1,i+1)) { P2 = P2-(iVolume(Symbol(),PERIOD_M1,i)); } if (iClose(Symbol(),PERIOD_M1,i)==iClose(Symbol(),PERIOD_M1,i+1)) { P1 = P1+(iVolume(Symbol(),PERIOD_M1,i)/2); P2 = P2-(iVolume(Symbol(),PERIOD_M1,i)/2); } } double tmp_p3 = 0; if((P1+P2) != 0){tmp_p3 = ((P1-P2)/(P1+P2))*100.0;} P1Buffer[ii]=P1; P2Buffer[ii]=P2; P3Buffer[ii]=tmp_p3; pii=ii; } //======================================= // ExVolv2 int counted_bars = IndicatorCounted(); double negative = 0, positive = 0; //---- if(Bars <= ExPeriod) return(0); if(counted_bars < 1) for(i = 1; i <= ExPeriod; i++) VolBuffer[Bars-i] = 0.0; //---- i = Bars - ExPeriod - 1; if(counted_bars >= ExPeriod) i = Bars -counted_bars - 1; i=MathMin(MaxBars,Bars -ExPeriod - 1); while(i >= 0) { i--; if (i>=Bars-1)continue; if (i<0)break; PosBuffer[i]= 0; NegBuffer[i]= 0; negative = 0; positive = 0; if(i < Bars - ExPeriod - 1) { int k = i + ExPeriod; while(k >= i) { if(Open[k] < Close[k]) positive += (Close[k] - Open[k]); if(Open[k] > Close[k]) negative += (Open[k] - Close[k]); if(Open[k] == Close[k]) { negative += 0; positive += 0; } k--; } } double poss = 0; if(Normalize < 1) Normalize = 1; if(Normalize > 1000) Normalize = 1000; for(int j = 1; j != Normalize; j++)poss += VolBuffer[i+j]; pos = (poss + ((positive - negative)*3000)) / Normalize; if(VolBuffer[i+1] < pos) { PosBuffer[i] = pos; if (pos>0 && pos< 1) PosBuffer[i]= 1; if (pos<0 && pos>-1) PosBuffer[i]=-1; form_strel(i,PosBuffer[i],P3Buffer[i]); } if(VolBuffer[i+1] > pos) { NegBuffer[i]=pos; if (pos>0 && pos< 1) NegBuffer[i]= 1; if (pos<0 && pos>-1) NegBuffer[i]=-1; form_strel(i,NegBuffer[i],P3Buffer[i]); } VolBuffer[i]=pos; } return(0); } //---------------------------- void form_strel(int i,double Ex,double Wad) { if (Wad>0 && Ex<0) { if (i>0)strel_up(225,i); if (i==1 && Time_Alert!=Time[0]) { Alert(Symbol()+" "+str_TF(Period())+" UP"); Time_Alert=Time[0]; } } else if (Wad<0 && Ex>0) { if (i>0)strel_dw(226,i); if (i==1 && Time_Alert!=Time[0]) { Alert(Symbol()+" "+str_TF(Period())+" DW"); Time_Alert=Time[0]; } } } //----------------------- void strel_up(int kod, int i) { string name="up_"+TimeToStr(Time[i]); if (ObjectFind(name)<0)ObjectCreate(name,OBJ_ARROW,0,Time[i],Low[i]-shift_arrow*Point); ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_TOP); ObjectSet(name,OBJPROP_TIME1,Time[i]); ObjectSet(name,OBJPROP_PRICE1,Low[i]-shift_arrow*Point); ObjectSet(name,OBJPROP_ARROWCODE,kod); ObjectSet(name,OBJPROP_COLOR,clr_arrow_UP); ObjectSet(name,OBJPROP_WIDTH,widh_arrow); } //------------------------- void strel_dw(int kod, int i) { string name="dw_"+TimeToStr(Time[i]); if (ObjectFind(name)<0)ObjectCreate(name,OBJ_ARROW,0,Time[i],High[i]+shift_arrow*Point); ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_BOTTOM); ObjectSet(name,OBJPROP_TIME1,Time[i]); ObjectSet(name,OBJPROP_PRICE1,High[i]+shift_arrow*Point); ObjectSet(name,OBJPROP_ARROWCODE,kod); ObjectSet(name,OBJPROP_COLOR,clr_arrow_DW); ObjectSet(name,OBJPROP_WIDTH,widh_arrow); } //------------------------- string str_TF(int n) { if (n==0)n=Period(); switch(n) { case PERIOD_M1: return ("M1"); case PERIOD_M5: return ("M5"); case PERIOD_M15: return ("M15"); case PERIOD_M30: return ("M30"); case PERIOD_H1: return ("H1"); case PERIOD_H4: return ("H4"); case PERIOD_D1: return ("D1"); case PERIOD_W1: return ("W1"); case PERIOD_MN1: return ("MN1"); } return("TF?"); } //----------------------------
В силу сложившейся ситуации я не могу перечислить деньги за работу. В долгу не останусь . Мне надо запустить этот индикатор. В строке 226 вместо P3Buffer[ii]=P1+P2; должно быть P3Buffer[ii]=((P1-P2)/(Р1+Р2))*100; и исправить что бы не появлялись зеленые стрелки когда нет объема. Люди ---------Помогите!!!!!!
Желтым сделано, про стрелки пока не смотрел. Сформулируйте условие по объёмам конкретно.
Желтым сделано, про стрелки пока не смотрел. Сформулируйте условие по объёмам конкретно.
"Сформулируйте условие по объёмам конкретно" Они в формуле ( Р1+Р2)/Р1-Р2)*100% индикатор показывает объем в % и стрелочки появляются если объем и свеча в противофазе. Этот индикатор написан по моей идее.В нем есть ошибки. Их можно будет подправить когда определюсь с Т.С.Тот кто писал (не бесплатно) не смог мне сделать так что бы индюк не считал текуший бар.Дело в том что при сильных движениях он тормозит терминал.А текущие события не несут ни какой информации о тренде.Если это возможно это исправить подскажите что поправить в коде.
"Сформулируйте условие по объёмам конкретно" Они в формуле ( Р1+Р2)/Р1-Р2)*100% индикатор показывает объем в % и стрелочки появляются если объем и свеча в противофазе. Этот индикатор написан по моей идее.В нем есть ошибки. Их можно будет подправить когда определюсь с Т.С.Тот кто писал (не бесплатно) не смог мне сделать так что бы индюк не считал текуший бар.Дело в том что при сильных движениях он тормозит терминал.А текущие события не несут ни какой информации о тренде.Если это возможно это исправить подскажите что поправить в коде.
Попробуйте для начала вот это:
for(i = 0; i <iBars(Symbol(),PERIOD_M1) && i<n; i++) // for(i = 0; i <iBars(Symbol(),PERIOD_M1) ; i++)
Поменять на это:
for(i = 1; i <iBars(Symbol(),PERIOD_M1) && i<n; i++) // for(i = 0; i <iBars(Symbol(),PERIOD_M1) ; i++)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования