Для вставки кода на форуме используйте кнопку SRC.
#property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Lime #property indicator_color2 Blue extern int CountBars=300; double PBuffer[]; double S1Buffer[]; string Pivot="P",Sup1="S 1"; int fontsize=10; double P,S1; double LastHigh,LastLow,x; int deinit() { ObjectDelete("Pivot"); ObjectDelete("S1"); return(0); } int init() { string short_name; IndicatorBuffers(7); //---- indicator line SetIndexStyle(0,DRAW_ARROW,2,1,Lime); SetIndexArrow(0,158); SetIndexStyle(1,DRAW_ARROW,2,1,Blue); SetIndexArrow(1,158); SetIndexBuffer(0,PBuffer); SetIndexBuffer(1,S1Buffer); short_name="Pivot"; IndicatorShortName(short_name); SetIndexLabel(0,short_name); short_name="S1"; IndicatorShortName(short_name); SetIndexLabel(1,short_name); //---- SetIndexDrawBegin(0,6); //---- return(0); } int start() { int counted_bars=IndicatorCounted(); int limit, i; if (counted_bars==0) { x=Period(); if (x>CountBars) return(-1); ObjectCreate("Pivot", OBJ_TEXT, 0, 0,0); ObjectSetText("Pivot", " Pivot",10,"Arial",Lime); ObjectCreate("S1", OBJ_TEXT, 0, 0, 0); ObjectSetText("S1", " S1",10,"Arial",Blue); } if(counted_bars<0) return(-1); limit=(Bars-counted_bars)-1; for (i=limit; i>=0;i--) { if (TimeDayOfWeek(Time[i]) != 0) { if (High[i+1]>LastHigh) LastHigh=High[i+1]; if (Low[i+1]<LastLow) LastLow=Low[i+1]; } if (TimeDay(Time[i])!=TimeDay(Time[i+1]) && TimeDayOfWeek(Time[i])!=0 ) { S1 = Open[i+1]; //////////////////////////////////////// Проблема в "Опен" ,если к примеру пишу на часовом графике Open[i+24] линии правильно рисуются и так изменять приходится для каждого таймфрейма приписывать своё количество баров в сутках ,как исправить эту проблему ? P=Close[i+1]; LastLow=Open[i]; LastHigh=Open[i]; ObjectMove("Pivot", 0, Time[i],P); ObjectMove("S1", 0, Time[i],S1); } PBuffer[i]=P; S1Buffer[i]=S1; } return(0); }
AlexeyVik:
Используй не Open[] а iOpen()
спасиб за подсказку ,заменил проблемную строчку кода на S1 = iOpen(NULL,0,i+1); компельнулась только код как работал со старым кодом так и с изменённым вариантом, мне не то требуется,к примеру на сегодняшнем дне отчертилась линия открытия вчерашнего дня,может есть ф-ция которая определяет сколько баров в сутках на текущем таймфрейме ,видеть бы на сколько отодвинуть Open[ i+? ];
Используй не Open[] а iOpen()
andrey198181:
спасиб за подсказку ,заменил проблемную строчку кода на S1 = iOpen(NULL,0,i+1); компельнулась только код как работал со старым кодом так и с изменённым вариантом, мне не то требуется,к примеру на сегодняшнем дне отчертилась линия открытия вчерашнего дня,может есть ф-ция которая определяет сколько баров в сутках на текущем таймфрейме ,видеть бы на сколько отодвинуть Open[ i+? ];
БаровВСутках=1440/Period()+0.5;
спасиб за подсказку ,заменил проблемную строчку кода на S1 = iOpen(NULL,0,i+1); компельнулась только код как работал со старым кодом так и с изменённым вариантом, мне не то требуется,к примеру на сегодняшнем дне отчертилась линия открытия вчерашнего дня,может есть ф-ция которая определяет сколько баров в сутках на текущем таймфрейме ,видеть бы на сколько отодвинуть Open[ i+? ];
tara:
БаровВСутках=1440/Period()+0.5;
БаровВСутках=1440/Period()+0.5;
спасиб ,всё заработало как нуна :)
andrey198181:
спасиб ,всё заработало как нуна :)
если вас не затруднит ,подскажите плиз что это за цифры 1440 и 0.5 заранее спс,я в mql4 новичёк
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вопрос в коде // коментариях