помогите создать советника на основе вот этого индикатора

 
помогите создать советника на основе вот этого индикатора ,пожалуйста:
(когда меняется с красного на зелёный buy,наооборот sell)

//+------------------------------------------------------------------+
//| Up&Down.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Tomato
//---- input parameters
extern int HL_period=3;
extern int NumBars=200;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//------
double ur[][2];
int h1[];
int l1[];

int hh=0;
int ll=0;

double spread;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,159);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,159);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(1,0.0);
//----
ArrayResize(ur,NumBars+1);
ArrayResize(h1,HL_period);
ArrayResize(l1,HL_period);

spread = Ask-Bid;
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int n,shift,Nbar,k,mm;
double MaH,MaL;

//----
if( Period() == 5 )
{
ArrayInitialize(ur,0);
ArrayInitialize(h1,0);
ArrayInitialize(l1,0);
for( shift = NumBars; shift>=0; shift-- )
{
if( TimeHour(Time[shift + 1]) != TimeHour(Time[shift]) )
{
Nbar = -1;
k = 0;
mm = 0;
n = shift - 15;
while( n <= shift + HL_period * 12 + 5 )
{
if( n < 0 )
{
n = 1;
Nbar = 0;
}
if( TimeHour(Time[n + 1]) != TimeHour(Time[n]) && Nbar == -1 )
{
Nbar = n;
mm = n;
n++;
continue;
}
if( TimeHour(Time[n + 1]) != TimeHour(Time[n]) && Nbar != -1 )
{
h1[k] = Highest(NULL,0,MODE_HIGH,n - Nbar,n-(n-Nbar)+1);
l1[k] = Lowest(NULL,0,MODE_LOW,n - Nbar,n-(n-Nbar)+1);
k++;
Nbar = n;
}
n++;
}
MaH = 0;
MaL = 0;
for( n = 0; n<HL_period; n++ )
{
MaH = MaH + High[h1[n]]+spread;
MaL = MaL + Low[l1[n]];
}
MaH = MaH / HL_period;
MaL = MaL / HL_period;
ur[shift][0] = MaH;
ur[shift][1] = MaL;
if( Close[mm + 1]+spread/2 >= MaH ) { ll = 1; hh = 0; }
if( Close[mm + 1]+spread/2 <= MaL ) { hh = 1; ll = 0; }
}
if( ur[shift,1] == 0 )
{
ur[shift][0] = ur[shift + 1][0];
ur[shift][1] = ur[shift + 1][1];
}
if( ll == 1 )
{
ExtMapBuffer2[shift]=0;
ExtMapBuffer1[shift]=ur[shift][1];
}
if( hh == 1 )
{
ExtMapBuffer1[shift]=0;
ExtMapBuffer2[shift]=ur[shift][0];
}
}
return(0);
}
//-----------------------------
if( Period() == 15 )
{
ArrayInitialize(ur,0);
ArrayInitialize(h1,0);
ArrayInitialize(l1,0);
for( shift = NumBars; shift>=0; shift-- )
{
if( TimeHour(Time[shift + 1]) != TimeHour(Time[shift]) )
{
Nbar = -1;
k = 0;
mm = 0;
n = shift - 5;
while( n <= shift + HL_period * 4 + 2 )
{
if( n < 0 )
{
n = 1;
Nbar = 0;
}
if( TimeHour(Time[n + 1]) != TimeHour(Time[n]) && Nbar == -1 )
{
Nbar = n;
mm = n;
n++;
continue;
}
if( TimeHour(Time[n + 1]) != TimeHour(Time[n]) && Nbar != -1 )
{
h1[k] = Highest(NULL,0,MODE_HIGH,n - Nbar,n-(n-Nbar)+1);
l1[k] = Lowest(NULL,0,MODE_LOW,n - Nbar,n-(n-Nbar)+1);
k++;
Nbar = n;
}
n++;
}
MaH = 0;
MaL = 0;
for( n = 0; n<HL_period; n++ )
{
MaH = MaH + High[h1[n]]+spread;
MaL = MaL + Low[l1[n]];
}
MaH = MaH / HL_period;
MaL = MaL / HL_period;
ur[shift][0] = MaH;
ur[shift][1] = MaL;
if( Close[mm + 1]+spread/2 >= MaH ) { ll = 1; hh = 0; }
if( Close[mm + 1]+spread/2 <= MaL ) { hh = 1; ll = 0; }
}
if( ur[shift,1] == 0 )
{
ur[shift][0] = ur[shift + 1][0];
ur[shift][1] = ur[shift + 1][1];
}
if( ll == 1 )
{
ExtMapBuffer2[shift]=0;
ExtMapBuffer1[shift]=ur[shift][1];
}
if( hh == 1 )
{
ExtMapBuffer1[shift]=0;
ExtMapBuffer2[shift]=ur[shift][0];
}
}
return(0);
}
//-------------------------
if( Period() == 30 )
{
ArrayInitialize(ur,0);
ArrayInitialize(h1,0);
ArrayInitialize(l1,0);
for( shift = NumBars; shift>=0; shift-- )
{
if( TimeMinute(Time[shift])==0 && (TimeHour(Time[shift])==0 || TimeHour(Time[shift])==4 || TimeHour(Time[shift])==8 || TimeHour(Time[shift])==12 || TimeHour(Time[shift])==16 || TimeHour(Time[shift])==20) )
{
Nbar = -1;
k = 0;
mm = 0;
n = shift - 10;
while( n <= shift + HL_period * 8 + 5 )
{
if( n < 0 )
{
n = 1;
Nbar = 0;
}
if( TimeMinute(Time[n])==0 && (TimeHour(Time[n])==0 || TimeHour(Time[n])==4 || TimeHour(Time[n])==8 || TimeHour(Time[n])==12 || TimeHour(Time[n])==16 || TimeHour(Time[n])==20) && Nbar == -1 )
{
Nbar = n;
mm = n;
n++;
continue;
}
if( TimeMinute(Time[n])==0 && (TimeHour(Time[n])==0 || TimeHour(Time[n])==4 || TimeHour(Time[n])==8 || TimeHour(Time[n])==12 || TimeHour(Time[n])==16 || TimeHour(Time[n])==20) && Nbar != -1 )
{
h1[k] = Highest(NULL,0,MODE_HIGH,n - Nbar,n-(n-Nbar)+1);
l1[k] = Lowest(NULL,0,MODE_LOW,n - Nbar,n-(n-Nbar)+1);
k++;
Nbar = n;
}
n++;
}
MaH = 0;
MaL = 0;
for( n = 0; n<HL_period; n++ )
{
MaH = MaH + High[h1[n]]+spread;
MaL = MaL + Low[l1[n]];
}
MaH = MaH / HL_period;
MaL = MaL / HL_period;
ur[shift][0] = MaH;
ur[shift][1] = MaL;
if( Close[mm + 1]+spread/2 >= MaH ) { ll = 1; hh = 0; }
if( Close[mm + 1]+spread/2 <= MaL ) { hh = 1; ll = 0; }
}
if( ur[shift,1] == 0 )
{
ur[shift][0] = ur[shift + 1][0];
ur[shift][1] = ur[shift + 1][1];
}
if( ll == 1 )
{
ExtMapBuffer2[shift]=0;
ExtMapBuffer1[shift]=ur[shift][1];
}
if( hh == 1 )
{
ExtMapBuffer1[shift]=0;
ExtMapBuffer2[shift]=ur[shift][0];
}
}
return(0);
}
//----
if( Period() == 60 )
{
ArrayInitialize(ur,0);
ArrayInitialize(h1,0);
ArrayInitialize(l1,0);
for( shift = NumBars; shift>=0; shift-- )
{
if( TimeMinute(Time[shift])==0 && (TimeHour(Time[shift])==0 || TimeHour(Time[shift])==4 || TimeHour(Time[shift])==8 || TimeHour(Time[shift])==12 || TimeHour(Time[shift])==16 || TimeHour(Time[shift])==20) )
{
Nbar = -1;
k = 0;
mm = 0;
n = shift - 6;
while( n <= shift + HL_period * 4 + 3 )
{
if( n < 0 )
{
Nbar = 0;
n = 1;
}
if( TimeMinute(Time[n])==0 && (TimeHour(Time[n])==0 || TimeHour(Time[n])==4 || TimeHour(Time[n])==8 || TimeHour(Time[n])==12 || TimeHour(Time[n])==16 || TimeHour(Time[n])==20) && Nbar == -1 )
{
Nbar = n;
mm = n;
n++;
continue;
}
if( TimeMinute(Time[n])==0 && (TimeHour(Time[n])==0 || TimeHour(Time[n])==4 || TimeHour(Time[n])==8 || TimeHour(Time[n])==12 || TimeHour(Time[n])==16 || TimeHour(Time[n])==20) && Nbar != -1 )
{
h1[k] = Highest(NULL,0,MODE_HIGH,n - Nbar,n-(n-Nbar)+1);
l1[k] = Lowest(NULL,0,MODE_LOW,n - Nbar,n-(n-Nbar)+1);
k++;
Nbar = n;
}
n++;
}
MaH = 0;
MaL = 0;
for( n = 0; n<HL_period; n++ )
{
MaH = MaH + High[h1[n]]+spread;
MaL = MaL + Low[l1[n]];
}
MaH = MaH / HL_period;
MaL = MaL / HL_period;
ur[shift][0] = MaH;
ur[shift][1] = MaL;
if( Close[mm + 1]+spread/2 >= MaH ) { ll = 1; hh = 0; }
if( Close[mm + 1]+spread/2 <= MaL ) { hh = 1; ll = 0; }
}
if( ur[shift,1] == 0 )
{
ur[shift][0] = ur[shift + 1][0];
ur[shift][1] = ur[shift + 1][1];
}
if( ll == 1 )
{
ExtMapBuffer2[shift]=0;
ExtMapBuffer1[shift]=ur[shift][1];
}
if( hh == 1 )
{
ExtMapBuffer1[shift]=0;
ExtMapBuffer2[shift]=ur[shift][0];
}
}
return(0);
}
//--------------
if( Period() == 240 )
{
ArrayInitialize(ur,0);
ArrayInitialize(h1,0);
ArrayInitialize(l1,0);
for( shift = NumBars; shift>=0; shift-- )
{
if( TimeDay(Time[shift + 1]) != TimeDay(Time[shift]) )
{
Nbar = -1;
k = 0;
mm = 0;
n = shift - 8;
while( n <= shift + HL_period * 8 + 4 )
{
if( n < 0 )
{
Nbar = 0;
n = 1;
}
if( TimeDay(Time[n + 1]) != TimeDay(Time[n]) && Nbar == -1 )
{
Nbar = n;
mm = n;
n++;
continue;
}
if( TimeDay(Time[n + 1]) != TimeDay(Time[n]) && Nbar != -1 )
{
h1[k] = Highest(NULL,0,MODE_HIGH,n - Nbar,n-(n-Nbar)+1);
l1[k] = Lowest(NULL,0,MODE_LOW,n - Nbar,n-(n-Nbar)+1);
k++;
Nbar = n;
}
n++;
}
MaH = 0;
MaL = 0;
for( n = 0; n<HL_period; n++ )
{
MaH = MaH + High[h1[n]]+spread;
MaL = MaL + Low[l1[n]];
}
MaH = MaH / HL_period;
MaL = MaL / HL_period;
ur[shift][0] = MaH;
ur[shift][1] = MaL;
if( Close[mm + 1]+spread/2 >= MaH ) { ll = 1; hh = 0; }
if( Close[mm + 1]+spread/2 <= MaL ) { hh = 1; ll = 0; }
}
if( ur[shift,1] == 0 )
{
ur[shift][0] = ur[shift + 1][0];
ur[shift][1] = ur[shift + 1][1];
}
if( ll == 1 )
{
ExtMapBuffer2[shift]=0;
ExtMapBuffer1[shift]=ur[shift][1];
}
if( hh == 1 )
{
ExtMapBuffer1[shift]=0;
ExtMapBuffer2[shift]=ur[shift][0];
}
}
return(0);
}
//----
if( Period() == 1440 )
{
ArrayInitialize(ur,0);
ArrayInitialize(h1,0);
ArrayInitialize(l1,0);
for( shift = NumBars; shift>=0; shift-- )
{
if( TimeDayOfWeek(Time[shift + 1]) == 5 && TimeDayOfWeek(Time[shift]) == 1 )
{
Nbar = -1;
k = 0;
mm = 0;
n = shift - 6;
while( n <= shift + HL_period * 5 + 3 )
{
if( n < 0 )
{
Nbar = 0;
n = 1;
}
if( TimeDayOfWeek(Time[n + 1])==5 && TimeDayOfWeek(Time[n])==1 && Nbar == -1 )
{
Nbar = n;
mm = n;
n++;
continue;
}
if( TimeDayOfWeek(Time[n + 1])==5 && TimeDayOfWeek(Time[n])==1 && Nbar != -1 )
{
h1[k] = Highest(NULL,0,MODE_HIGH,n - Nbar,n-(n-Nbar)+1);
l1[k] = Lowest(NULL,0,MODE_LOW,n - Nbar,n-(n-Nbar)+1);
k++;
Nbar = n;
}
n++;
}
MaH = 0;
MaL = 0;
for( n = 0; n<HL_period; n++ )
{
MaH = MaH + High[h1[n]]+spread;
MaL = MaL + Low[l1[n]];
}
MaH = MaH / HL_period;
MaL = MaL / HL_period;
ur[shift][0] = MaH;
ur[shift][1] = MaL;
if( Close[mm + 1]+spread/2 >= MaH ) { ll = 1; hh = 0; }
if( Close[mm + 1]+spread/2 <= MaL ) { hh = 1; ll = 0; }
}
if( ur[shift,1] == 0 )
{
ur[shift][0] = ur[shift + 1][0];
ur[shift][1] = ur[shift + 1][1];
}
if( ll == 1 )
{
ExtMapBuffer2[shift]=0;
ExtMapBuffer1[shift]=ur[shift][1];
}
if( hh == 1 )
{
ExtMapBuffer1[shift]=0;
ExtMapBuffer2[shift]=ur[shift][0];
}
}
return(0);
}
//----
if( Period() == 10080 )
{
ArrayInitialize(ur,0);
ArrayInitialize(h1,0);
ArrayInitialize(l1,0);
for( shift = NumBars; shift>=0; shift-- )
{
if( TimeMonth(Time[shift + 1]+1440*60) != TimeMonth(Time[shift]+1440*60) )
{
Nbar = -1;
k = 0;
mm = 0;
n = shift - 8;
while( n <= shift + HL_period * 8 + 4 )
{
if( n < 0 )
{
Nbar = 0;
n = 1;
}
if( TimeMonth(Time[n + 1]+1440*60) != TimeMonth(Time[n]+1440*60) && Nbar == -1 )
{
Nbar = n;
mm = n;
if( n>NumBars-18 ) Print(TimeToStr(Time[n]));
n++;
continue;
}
if( TimeMonth(Time[n + 1]+1440*60) != TimeMonth(Time[n]+1440*60) && Nbar != -1 )
{
h1[k] = Highest(NULL,0,MODE_HIGH,n - Nbar,n-(n-Nbar)+1);
l1[k] = Lowest(NULL,0,MODE_LOW,n - Nbar,n-(n-Nbar)+1);
k++;
Nbar = n;
}
n++;
}
MaH = 0;
MaL = 0;
for( n = 0; n<HL_period; n++ )
{
MaH = MaH + High[h1[n]]+spread;
MaL = MaL + Low[l1[n]];
}
MaH = MaH / HL_period;
MaL = MaL / HL_period;
ur[shift][0] = MaH;
ur[shift][1] = MaL;
if( Close[mm + 1]+spread/2 >= MaH ) { ll = 1; hh = 0; }
if( Close[mm + 1]+spread/2 <= MaL ) { hh = 1; ll = 0; }
}
if( ur[shift,1] == 0 )
{
ur[shift][0] = ur[shift + 1][0];
ur[shift][1] = ur[shift + 1][1];
}
if( ll == 1 )
{
ExtMapBuffer2[shift]=0;
ExtMapBuffer1[shift]=ur[shift][1];
}
if( hh == 1 )
{
ExtMapBuffer1[shift]=0;
ExtMapBuffer2[shift]=ur[shift][0];
}
}
return(0);
}
//----
return(0);
}
//+------------------------------------------------------------------+
 
Увидил Инджикатор,но было ыб интересно понять какую логику Вы там азкладывлаи дял релаьного применения

Давайте лучше по порядку поясните,что вы хотите увидыть и отвечу что можно сделать
 
всё долго объеснять просто хочу посмотреть как он сам по себе торгует без остальных индикаторов.этот индикатор тоже самое(почти)как скользящая средняя например постав скользящую 15 периода и его 3
 
всё долго объеснять просто хочу посмотреть как он сам по себе торгует без остальных индикаторов.этот индикатор тоже самое(почти)как скользящая средняя например постав скользящую 15 периода и его 3


Если Вы смогли написать такой индюк, то по нему советника написать - дело получаса от силы.

..................

Только сдается мне, что это HiLo индикатор, выдающий показания с учетом старших т\ф, взятый Вами с форума ..... (называть не буду) . Если это так, то не очень приятно, что Вы убрали копирайты. И, если это индюк с форума, то там, на том форуме, этот индикатор обсуждался - он перерисовывает историю.....

Если же это Ваш собственный индюк, то Вы сами легко напишете эксперта - по крайней мере это будет быстрее, чем ждать пока кто-либо заинтересуется.

Удачи.
 
дк мне его дали в нэте ,я сам в этом не смыслю
 
дк мне его дали в нэте ,я сам в этом не смыслю


Так бы и писали сразу. Вобщем на пауке это было - индикатор перерисовывает историю. Количество перерисовываемых баров пропорционально текущему т\ф (если не ошибаюсь - давно было) и, ИМХО,самостоятельно для работы непригоден. Я лично предпочитаю вообще не использовать индикаторов изменяющих показания на истории. Если изменения его сигалов трактовать как сиганл к покупке(продаже), то Вы можете увидеть, например, на текущем баре, что если бы пять баров назад стали в бай(селл) , то уже были бы в плюсах. Или что еще хуже, что вот ту сделку, пять баров назад, делать было ненужно - история перерисовалась и сигнал на бай пропал и остался синал на селл. Цифры условные - говорю же давно было не помню. Если это не Ваш личный индикатор, то скорее всего тот самый, о котором я говорю. Арзума его переделывал, чтобы показания на истории не менялись, но и соответственно это сразу стало неинтересно.

Удачи.