помогите начинающему програмеру

 

Вопрос в коде // коментариях

 

Для вставки кода на форуме используйте кнопку 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);

  }
 
Используй не Open[] а iOpen()
 
AlexeyVik:
Используй не Open[] а iOpen()
спасиб за подсказку ,заменил проблемную строчку кода на   S1 = iOpen(NULL,0,i+1);  компельнулась только код как работал со старым кодом так и с изменённым вариантом, мне не то требуется,к примеру  на сегодняшнем дне отчертилась линия открытия вчерашнего дня,может есть ф-ция которая определяет сколько баров в сутках на текущем таймфрейме ,видеть бы на сколько отодвинуть Open[ i+? ];
 
andrey198181:
спасиб за подсказку ,заменил проблемную строчку кода на   S1 = iOpen(NULL,0,i+1);  компельнулась только код как работал со старым кодом так и с изменённым вариантом, мне не то требуется,к примеру  на сегодняшнем дне отчертилась линия открытия вчерашнего дня,может есть ф-ция которая определяет сколько баров в сутках на текущем таймфрейме ,видеть бы на сколько отодвинуть Open[ i+? ];
БаровВСутках=1440/Period()+0.5;
 
tara:
БаровВСутках=1440/Period()+0.5;

 

спасиб ,всё заработало как нуна :) 

 
andrey198181:

 

спасиб ,всё заработало как нуна :) 

 если вас не затруднит  ,подскажите плиз что это за цифры 1440 и 0.5  заранее спс,я в mql4 новичёк

Причина обращения: