Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подскажите пожалуйста где происходит установка первой координаты, точнее куда можно вклинить свои значения чтобы далее работало корректно.
/**/ - отмечены строки которые я добавил в оригинальный код..
//+------------------------------------------------------------------+ //| Parabolic Sub.mq4 | //| Copyright © 2004, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" //---- //Added Fix1 September 6, 2006 Advance Index if new bar by Stanley Fiala http://merlin4x.com #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Yellow //---- input parameters extern double Step = 0.02; extern double Maximum = 0.2; /**/extern int SAR_start; // Начальный бар (X) /**/extern double SAR_V_shift; // Цена с которой начать (Y) /**/extern bool SAR_dirlong; // Рассматривать как длинную или короткую позицию //---- buffers double SarBuffer[]; //---- int save_lastreverse; bool save_dirlong; double save_start; double save_last_high; double save_last_low; double save_ep; double save_sar; int bartime; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0, DRAW_ARROW); SetIndexArrow(0, 159); SetIndexBuffer(0, SarBuffer); //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void SaveLastReverse(int last, int dir, double start, double low, double high, double ep, double sar) { save_lastreverse = last; save_dirlong = dir; save_start = start; save_last_low = low; save_last_high = high; save_ep = ep; save_sar = sar; } //+------------------------------------------------------------------+ //| Parabolic Sell And Reverse system | //+------------------------------------------------------------------+ int start() { static bool first = true; bool dirlong; double start, last_high, last_low; double ep, sar, price_low, price_high, price; int i, counted_bars = IndicatorCounted(); int counted_bars_ii=0; //---- if(Bars < 3) return(0); //---- initial settings i = Bars - 2; //---- if(counted_bars == 0 || first) { first = false; dirlong = true; start = Step; last_high = -10000000.0; last_low = 10000000.0; //---- while(i > 0) { save_lastreverse = i; price_low = Low[i]; //---- if(last_low > price_low) last_low = price_low; price_high = High[i]; //---- if(last_high < price_high) last_high = price_high; //---- if(price_high > High[i+1] && price_low > Low[i+1]) break; //---- if(price_high < High[i+1] && price_low < Low[i+1]) { dirlong = false; break; } i--; } //---- initial zero /**/ if(counted_bars_ii == 0){i=SAR_start;} int k = i; //Print(" k=", k, " Bars=", Bars); //---- while(k < Bars) { SarBuffer[k] = 0.0; k++; } //---- check further /**/ if(counted_bars_ii == 0){dirlong=SAR_dirlong;} if(dirlong) { /**/ if(counted_bars_ii == 0){SarBuffer[i] = SAR_V_shift; ep = SAR_V_shift;} /**/ else {SarBuffer[i] = Low[i+1]; ep = High[i];} } else { /**/ if(counted_bars_ii == 0){SarBuffer[i] = SAR_V_shift; ep = SAR_V_shift;} /**/ else {SarBuffer[i] = High[i+1]; ep = Low[i];} } i--; } else { i = save_lastreverse; start = save_start; dirlong = save_dirlong; last_high = save_last_high; last_low = save_last_low; ep = save_ep; sar = save_sar; // Fix1 start // If new bar increment index if(Time[0] != bartime) { bartime = Time[0]; i++; } //Fix1 end } //---- while(i >= 0) { price_low = Low[i]; price_high = High[i]; //--- check for reverse from long to short if(dirlong && price_low < SarBuffer[i+1]) { SaveLastReverse(i, true, start, price_low, last_high, ep, sar); start = Step; dirlong = false; ep = price_low; last_low = price_low; SarBuffer[i] = last_high; i--; continue; } //--- check for reverse from short to long if(!dirlong && price_high > SarBuffer[i+1]) { SaveLastReverse(i, false, start, last_low, price_high, ep, sar); start = Step; dirlong = true; ep = price_high; last_high = price_high; SarBuffer[i] = last_low; i--; continue; } //sar(i) = sar(i+1)+start*(ep-sar(i+1)) /**/ if(counted_bars_ii == 0){price = SAR_V_shift;} /**/ else {price = SarBuffer[i+1];} sar = price + start*(ep - price); //---- if(dirlong) { if(ep < price_high && (start + Step) <= Maximum) start += Step; //---- if(price_high < High[i+1] && i == Bars - 2) sar = SarBuffer[i+1]; price = Low[i+1]; //---- if(sar > price) sar = price; price = Low[i+2]; //---- if(sar > price) sar = price; //---- if(sar > price_low) { SaveLastReverse(i, true, start, price_low, last_high, ep, sar); start = Step; dirlong = false; ep = price_low; last_low = price_low; SarBuffer[i] = last_high; i--; continue; } //---- if(ep < price_high) { last_high = price_high; ep = price_high; } } //dir-long else { if(ep > price_low && (start + Step) <= Maximum) start += Step; //---- if(price_low < Low[i+1] && i == Bars - 2) sar = SarBuffer[i+1]; price = High[i+1]; //---- if(sar < price) sar = price; price = High[i+2]; //---- if(sar < price) sar = price; //---- if(sar < price_high) { SaveLastReverse(i, false, start, last_low, price_high, ep,sar); start = Step; dirlong = true; ep = price_high; last_high = price_high; SarBuffer[i] = last_low; i--; continue; } //---- if(ep > price_low) { last_low = price_low; ep = price_low; } } //dir-short SarBuffer[i] = sar; i--; counted_bars_ii++; } //while //---- return(0); } //+------------------------------------------------------------------+