//+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
//| utter_up_dn_revision.mq4 |
//| Copyright © 2011, RMM |
//+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
#property copyright "Copyright © 2011, RMM"
#property link "rmm@nm.ru"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
double Up[];
double Dn[];
double Up_tmp;
double Dn_tmp;
int review=25;
extern string ñ2= "Ãëóáèíà ïðîñìîòðà èñòîðèè â áàðàõ";
extern int QuantityOfBars=1000;
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//| Custom indicator initialization function
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int init()
{
IndicatorBuffers(2);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,217);
SetIndexBuffer(0,Up); //ïàðàìåòð ïðè âûçîâå ôóíêöèåé iCustom mode=0
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,218);
SetIndexBuffer(1,Dn); //ïàðàìåòð ïðè âûçîâå ôóíêöèåé iCustom mode=1
return(0);
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//| Custom indicator deinitialization function
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int deinit()
{
int obj_total=ObjectsTotal(); //Âîçâðàùàåò îáùåå ÷èñëî îáúåêòîâ
for(int i = obj_total - 1; i >= 0; i--)
{
string label = ObjectName(i);
if(StringFind(label, "mark")==-1) continue;
ObjectDelete(label); //Óäàëÿåì îáúåêòû ñîçäàííûå èíäèêàòîðîì
}
return(0);
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//| Custom indicator iteration function
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int start()
{
bool actual_back, actual_forward;
int i,j, TypeDuo;
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if(QuantityOfBars>Bars)QuantityOfBars=Bars;
for(i=QuantityOfBars;i>1;i--) //îñíîâíàÿ èòåðàöèÿ
{
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Íàéäåí âåðõíèé ýêñòðåìóì, îòñóòñòâóåò íèæíèé ýêñòðåìóì
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if(ExistUp(i)&&!ExistDn(i)) //åñëè íàéäåí âåðõíèé ýêñòðåìóì
{
actual_back=false; //îáíóëÿåì ôëàã îêåéíîñòè ïðè ïðîñìîòðå íàçàä ïî èñòîðèè
j=i; //çàïîìèíàåì áàð íà êîòîðîì íàøëè âåðõíèé ýêñòðåìóì
while(j<i+review) //õîòèì ïðîáåæàòü ïî áàðàì íàçàä ïî èñòîðèè íà âåëè÷èíó review
{
j++; //íàðàùèâàåì ñ÷åò÷èê õîäà íàçàä ïî èñòîðèè
if(ExistUp(j)&&!ExistDn(j)&&High[j]>=High[i]) {actual_back=false; break;} //åñëè åñòü âåðõíèé ýêñòðåìóì è îí âûøå èëè ðàâåí òåêóùåìó, òî íàø âåðõíèé íå äåéñòâèòåëüíûé
if(ExistDn(j)&&!ExistUp(j)&&Low [j]<=High[i]) {actual_back=true; break;} //åñëè íàõîäèì íèæíèé ýêñòðåìóì è îí íèæå òåêóùåãî, òî íàø âåðõíèé èìååò ïðàâî æèòü
if(ExistDn(j)&&ExistUp(j)) //åñëè íàõîäèì è íèæíèé è âåðõíèé ýêñòðåìóì
{
TypeDuo=IdentDualExtr(j);
switch(TypeDuo)
{
case 1:
actual_back=true;
break;
case 2:
actual_back=true;
break;
case 3:
actual_back=true;
break;
case 4:
actual_back=true;
break;
case 5:
actual_back=true;
break;
case 6:
actual_back=true;
break;
case 7:
actual_back=false;
break;
case 8:
actual_back=true;
break;
case 9:
actual_back=false;
break;
case 10:
actual_back=false;
break;
case 11:
actual_back=false;
break;
case 12:
actual_back=false;
break;
case 13:
actual_back=false;
break;
case 14:
actual_back=false;
break;
case 15:
actual_back=false;
break;
case 16:
actual_back=false;
break;
case 17:
actual_back=true;
break;
case 18:
actual_back=true;
break;
case 19:
actual_back=true;
break;
case 20:
actual_back=true;
break;
case 21:
actual_back=true;
break;
case 22:
actual_back=false;
break;
case 23:
actual_back=true;
break;
case 24:
actual_back=true;
break;
case 25:
actual_back=false;
break;
case 26:
actual_back=false;
break;
case 27:
actual_back=false;
break;
case 28:
actual_back=false;
break;
case 29:
actual_back=false;
break;
case 30:
actual_back=false;
break;
case 31:
actual_back=false;
break;
case 32:
actual_back=false;
break;
}
break;
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
actual_forward=false; //îáíóëÿåì ôëàã îêåéíîñòè ïðè ïðîñìîòðå âïåðåä ïî èñòîðèè
j=i; //çàïîìèíàåì áàð íà êîòîðîì íàøëè âåðõíèé ýêñòðåìóì
while(j>i-review) //õîòèì ïðîáåæàòü ïî áàðàì âïåðåä ïî èñòîðèè íà âåëè÷èíó review
{
j--; //íàðàùèâàåì ñ÷åò÷èê õîäà âïåðåä ïî èñòîðèè
if(ExistUp(j)&&!ExistDn(j)&&High[j]>High[i]) {actual_forward=false; break;} //åñëè íàõîäèì âåðõíèé ýêñòðåìóì è îí âûøå òåêóùåãî, òî íàø âåðõíèé íå äåéñòâèòåëüíûé
if(ExistDn(j)&&!ExistUp(j)&&Low [j]<=High[i]) {actual_forward=true; break;} //åñëè íàõîäèì íèæíèé ýêñòðåìóì è îí íèæå òåêóùåãî, òî íàø âåðõíèé èìååò ïðàâî æèòü
if(ExistDn(j)&&ExistUp(j)) //åñëè íàõîäèì è íèæíèé è âåðõíèé ýêñòðåìóì
{
TypeDuo=IdentDualExtr(j);
switch(TypeDuo)
{
case 1:
actual_forward=true;
break;
case 2:
actual_forward=true;
break;
case 3:
actual_forward=false;
break;
case 4:
actual_forward=false;
break;
case 5:
actual_forward=true;
break;
case 6:
actual_forward=true;
break;
case 7:
actual_forward=true;
break;
case 8:
actual_forward=true;
break;
case 9:
actual_forward=false;
break;
case 10:
actual_forward=false;
break;
case 11:
actual_forward=false;
break;
case 12:
actual_forward=false;
break;
case 13:
actual_forward=false;
break;
case 14:
actual_forward=false;
break;
case 15:
actual_forward=false;
break;
case 16:
actual_forward=false;
break;
case 17:
actual_forward=false;
break;
case 18:
actual_forward=false;
break;
case 19:
actual_forward=false;
break;
case 20:
actual_forward=false;
break;
case 21:
actual_forward=false;
break;
case 22:
actual_forward=false;
break;
case 23:
actual_forward=false;
break;
case 24:
actual_forward=false;
break;
case 25:
actual_forward=true;
break;
case 26:
actual_forward=true;
break;
case 27:
actual_forward=false;
break;
case 28:
actual_forward=false;
break;
case 29:
actual_forward=true;
break;
case 30:
actual_forward=true;
break;
case 31:
actual_forward=true;
break;
case 32:
actual_forward=true;
}
break;
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if(actual_back&&actual_forward) //åñëè ïîçàäè è âïåðåäè âñ¸ ÎÊ
{
Up_tmp=High[i]; //çàïîëíÿåì ìàññèâ Up ÷åðåç ïåðåìåííóþ Up_tmp
}
else Up_tmp=0; //åñëè ýêñòðåìóì íå äåéñòâèòåëüíûé, òî îáíóëÿåì ìàññèâ ÷åðåç ïåðåìåííóþ Up_tmp
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
} //âûïîëíåíî âñ¸ â ñëó÷àå åñëè íàéäåí âåðõíèé ýêñòðåìóì
else Up_tmp=0; //åñëè âåðõíåãî ýêñòðåìóìà íå áûëî, òî îáíóëÿåì ìàññèâ ÷åðåç ïåðåìåííóþ Up_tmp
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Íàéäåí íèæíèé ýêñòðåìóì, îòñóòñòâóåò âåðõíèé ýêñòðåìóì
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if(ExistDn(i)&&!ExistUp(i)) //åñëè íàéäåí íèæíèé ýêñòðåìóì
{
actual_back=false; //îáíóëÿåì ôëàã îêåéíîñòè ïðè ïðîñìîòðå íàçàä ïî èñòîðèè
j=i; //çàïîìèíàåì áàð íà êîòîðîì íàøëè íèæíèé ýêñòðåìóì
while(j<i+review) //õîòèì ïðîáåæàòü ïî áàðàì íàçàä ïî èñòîðèè íà âåëè÷èíó depth_review
{
j++; //íàðàùèâàåì ñ÷åò÷èê õîäà íàçàä ïî èñòîðèè
if(ExistDn(j)&&!ExistUp(j)&&Low [j]<=Low[i]) {actual_back=false; break;} //åñëè íàõîäèì íèæíèé ýêñòðåìóì è îí íèæå èëè ðàâåí òåêóùåìó, òî íàø íèæíèé íå äåéñòâèòåëüíûé
if(ExistUp(j)&&!ExistDn(j)&&High[j]>=Low[i]) {actual_back=true; break;} //åñëè íàõîäèì âåðõíèé ýêñòðåìóì è îí âûøå òåêóùåãî, òî íàø íèæíèé èìååò ïðàâî æèòü
if(ExistDn(j)&&ExistUp(j)) //åñëè íàõîäèì è íèæíèé è âåðõíèé ýêñòðåìóì
{
TypeDuo=IdentDualExtr(j);
switch(TypeDuo)
{
case 1:
actual_back=false;
break;
case 2:
actual_back=false;
break;
case 3:
actual_back=false;
break;
case 4:
actual_back=false;
break;
case 5:
actual_back=false;
break;
case 6:
actual_back=false;
break;
case 7:
actual_back=false;
break;
case 8:
actual_back=false;
break;
case 9:
actual_back=true;
break;
case 10:
actual_back=true;
break;
case 11:
actual_back=false;
break;
case 12:
actual_back=true;
break;
case 13:
actual_back=true;
break;
case 14:
actual_back=true;
break;
case 15:
actual_back=true;
break;
case 16:
actual_back=true;
break;
case 17:
actual_back=false;
break;
case 18:
actual_back=false;
break;
case 19:
actual_back=false;
break;
case 20:
actual_back=false;
break;
case 21:
actual_back=false;
break;
case 22:
actual_back=false;
break;
case 23:
actual_back=false;
break;
case 24:
actual_back=false;
break;
case 25:
actual_back=true;
break;
case 26:
actual_back=false;
break;
case 27:
actual_back=true;
break;
case 28:
actual_back=true;
break;
case 29:
actual_back=true;
break;
case 30:
actual_back=true;
break;
case 31:
actual_back=true;
break;
case 32:
actual_back=true;
}
break;
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
actual_forward=false; //îáíóëÿåì ôëàã îêåéíîñòè ïðè ïðîñìîòðå âïåðåä ïî èñòîðèè
j=i; //çàïîìèíàåì áàð íà êîòîðîì íàøëè íèæíèé ýêñòðåìóì
while(j>i-review) //õîòèì ïðîáåæàòü ïî áàðàì âïåðåä ïî èñòîðèè íà âåëè÷èíó review
{
j--; //íàðàùèâàåì ñ÷åò÷èê õîäà âïåðåä ïî èñòîðèè
if(ExistDn(j)&&!ExistUp(j)&&Low [j]<Low[i]) {actual_forward=false; break;} //åñëè íàõîäèì íèæíèé ýêñòðåìóì è îí íèæå òåêóùåãî, òî íàø íèæíèé íå äåéñòâèòåëüíûé
if(ExistUp(j)&&!ExistDn(j)&&High[j]>=Low[i]) {actual_forward=true; break;} //åñëè íàõîäèì âåðõíèé ýêñòðåìóì è îí âûøå òåêóùåãî, òî íàø íèæíèé èìååò ïðàâî æèòü
if(ExistDn(j)&&ExistUp(j)) //åñëè íàõîäèì è íèæíèé è âåðõíèé ýêñòðåìóì
{
TypeDuo=IdentDualExtr(j);
switch(TypeDuo)
{
case 1:
actual_forward=false;
break;
case 2:
actual_forward=false;
break;
case 3:
actual_forward=false;
break;
case 4:
actual_forward=false;
break;
case 5:
actual_forward=false;
break;
case 6:
actual_forward=false;
break;
case 7:
actual_forward=false;
break;
case 8:
actual_forward=false;
break;
case 9:
actual_forward=true;
break;
case 10:
actual_forward=true;
break;
case 11:
actual_forward=true;
break;
case 12:
actual_forward=true;
break;
case 13:
actual_forward=true;
break;
case 14:
actual_forward=true;
break;
case 15:
actual_forward=false;
break;
case 16:
actual_forward=false;
break;
case 17:
actual_forward=true;
break;
case 18:
actual_forward=true;
break;
case 19:
actual_forward=true;
break;
case 20:
actual_forward=true;
break;
case 21:
actual_forward=true;
break;
case 22:
actual_forward=true;
break;
case 23:
actual_forward=false;
break;
case 24:
actual_forward=false;
break;
case 25:
actual_forward=false;
break;
case 26:
actual_forward=false;
break;
case 27:
actual_forward=false;
break;
case 28:
actual_forward=false;
break;
case 29:
actual_forward=false;
break;
case 30:
actual_forward=false;
break;
case 31:
actual_forward=false;
break;
case 32:
actual_forward=false;
}
break;
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if(actual_back&&actual_forward) //åñëè ïîçàäè è âïåðåäè âñ¸ ÎÊ
{
Dn_tmp=Low[i]; //çàïîëíÿåì ìàññèâ Dn ÷åðåç ïåðåìåííóþ Dn_tmp
}
else Dn_tmp=0; //åñëè ýêñòðåìóì íå äåéñòâèòåëüíûé, òî îáíóëÿåì ìàññèâ ÷åðåç ïåðåìåííóþ Dn_tmp
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
} //âûïîëíåíî âñ¸ â ñëó÷àå åñëè íàéäåí íèæíèé ýêñòðåìóì
else Dn_tmp=0; //åñëè íèæíåãî ýêñòðåìóìà íå áûëî, òî îáíóëÿåì ìàññèâ ÷åðåç ïåðåìåííóþ Dn_tmp
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Íàéäåí íèæíèé ýêñòðåìóì, íàéäåí âåðõíèé ýêñòðåìóì
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if(ExistDn(i)&&ExistUp(i)) //åñëè íàéäåí è âåðõíèé è íèæíèé ýêñòðåìóì
{
TypeDuo=IdentDualExtr(i);
switch(TypeDuo)
{
case 1:
Up_tmp=0;
Dn_tmp=Low[i];
break;
case 2:
Up_tmp=0;
Dn_tmp=Low[i];
break;
case 3:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 4:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 5:
Up_tmp=0;
Dn_tmp=Low[i];
break;
case 6:
Up_tmp=0;
Dn_tmp=Low[i];
break;
case 7:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 8:
Up_tmp=0;
Dn_tmp=Low[i];
break;
case 9:
Up_tmp=High[i];
Dn_tmp=0;
break;
case 10:
Up_tmp=High[i];
Dn_tmp=0;
break;
case 11:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 12:
Up_tmp=High[i];
Dn_tmp=0;
break;
case 13:
Up_tmp=High[i];
Dn_tmp=0;
break;
case 14:
Up_tmp=High[i];
Dn_tmp=0;
break;
case 15:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 16:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 17:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 18:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 19:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 20:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 21:
Up_tmp=0;
Dn_tmp=0;
break;
case 22:
Up_tmp=High[i];
Dn_tmp=0;
break;
case 23:
Up_tmp=0;
Dn_tmp=Low[i];
break;
case 24:
Up_tmp=0;
Dn_tmp=Low[i];
break;
case 25:
Up_tmp=0;
Dn_tmp=0;
break;
case 26:
Up_tmp=0;
Dn_tmp=Low[i];
break;
case 27:
Up_tmp=High[i];
Dn_tmp=0;
break;
case 28:
Up_tmp=High[i];
Dn_tmp=0;
break;
case 29:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 30:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 31:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
case 32:
Up_tmp=High[i];
Dn_tmp=Low[i];
break;
}
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if(!ExistDn(i)&&!ExistUp(i)) //åñëè íå íàéäåíû è âåðõíèé è íèæíèé ýêñòðåìóì
{
Up_tmp=0;
Dn_tmp=0;
}
Up[i]=Up_tmp+3*Point; // Çàïîëíÿåòñÿ íåïîñðåäñòâåííî ìàññèâ Up
Dn[i]=Dn_tmp-3*Point; // Çàïîëíÿåòñÿ íåïîñðåäñòâåííî ìàññèâ Dn
}
return(0);
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ âåðõíåãî ýêñòðåìóìà
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
bool ExistUp(int NumberBar)
{
if(High[NumberBar+1]<High[NumberBar]&&High[NumberBar]>=High[NumberBar-1]) return(true);
return(false);
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ íèæíåãî ýêñòðåìóìà
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
bool ExistDn(int NumberBar)
{
if(Low[NumberBar+1]>=Low[NumberBar]&&Low[NumberBar]<Low[NumberBar-1]) return(true);
return(false);
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Âîçâðàùàåò òèï ïàòòåðíà ïðè íàëè÷èè íà ñâå÷å è âåðõíåãî è íèæíåãî ýêñòðåìóìîâ
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int IdentDualExtr(int NumberBar)
{
int j, type;
int up_back, dn_back, up_forward, dn_forward;
string direction;
j=NumberBar; //çàïîìèíàåì áàð íà êîòîðîì íàøëè íèæíèé ýêñòðåìóì
if(Open[NumberBar]<=Close[NumberBar]) direction="up";
if(Open[NumberBar]>Close[NumberBar]) direction="dn";
while(j<NumberBar+review) //õîòèì ïðîáåæàòü ïî áàðàì íàçàä ïî èñòîðèè íà âåëè÷èíó review
{
j++; //íàðàùèâàåì ñ÷åò÷èê õîäà íàçàä ïî èñòîðèè
if(ExistUp(j)&&!ExistDn(j)&&High[j]>Low[NumberBar])
{
if(High[j]>=High[NumberBar]){up_back=1; dn_back=0; break;}
if(High[j]<High[NumberBar]){up_back=2; dn_back=0; break;}
}
if(ExistDn(j)&&!ExistUp(j)&&Low[j]<High[NumberBar])
{
if(Low [j]<=Low [NumberBar]){up_back=0; dn_back=1; break;}
if(Low [j]>Low [NumberBar]){up_back=0; dn_back=2; break;}
}
}
j=NumberBar; //çàïîìèíàåì áàð íà êîòîðîì íàøëè íèæíèé ýêñòðåìóì
while(j>NumberBar-review) //õîòèì ïðîáåæàòü ïî áàðàì âïåðåä ïî èñòîðèè íà âåëè÷èíó review
{
j--; //íàðàùèâàåì ñ÷åò÷èê õîäà âïåðåä ïî èñòîðèè
if(ExistUp(j)&&!ExistDn(j)&&High[j]>Low[NumberBar])
{
if(High[j]>=High[NumberBar]){up_forward=1; dn_forward=0; break;}
if(High[j]<High[NumberBar]){up_forward=2; dn_forward=0; break;}
}
if(ExistDn(j)&&!ExistUp(j)&&Low[j]<High[NumberBar])
{
if(Low[j]<=Low[NumberBar]){up_forward=0; dn_forward=1; break;}
if(Low[j]>Low[NumberBar]){up_forward=0; dn_forward=2; break;}
}
}
if(up_back==1 && up_forward==1 && direction=="dn") type=1;
if(up_back==1 && up_forward==2 && direction=="dn") type=2;
if(up_back==2 && up_forward==2 && direction=="dn") type=3;
if(up_back==2 && up_forward==1 && direction=="dn") type=4;
if(up_back==1 && up_forward==1 && direction=="up") type=5;
if(up_back==1 && up_forward==2 && direction=="up") type=6;
if(up_back==2 && up_forward==2 && direction=="up") type=7;
if(up_back==2 && up_forward==1 && direction=="up") type=8;
if(dn_back==1 && dn_forward==1 && direction=="dn") type=9;
if(dn_back==1 && dn_forward==2 && direction=="dn") type=10;
if(dn_back==2 && dn_forward==2 && direction=="dn") type=11;
if(dn_back==2 && dn_forward==1 && direction=="dn") type=12;
if(dn_back==1 && dn_forward==1 && direction=="up") type=13;
if(dn_back==1 && dn_forward==2 && direction=="up") type=14;
if(dn_back==2 && dn_forward==2 && direction=="up") type=15;
if(dn_back==2 && dn_forward==1 && direction=="up") type=16;
if(dn_back==1 && up_forward==1 && direction=="dn") type=17;
if(dn_back==1 && up_forward==2 && direction=="dn") type=18;
if(dn_back==2 && up_forward==2 && direction=="dn") type=19;
if(dn_back==2 && up_forward==1 && direction=="dn") type=20;
if(dn_back==1 && up_forward==1 && direction=="up") type=21;
if(dn_back==1 && up_forward==2 && direction=="up") type=22;
if(dn_back==2 && up_forward==2 && direction=="up") type=23;
if(dn_back==2 && up_forward==1 && direction=="up") type=24;
if(up_back==1 && dn_forward==1 && direction=="dn") type=25;
if(up_back==1 && dn_forward==2 && direction=="dn") type=26;
if(up_back==2 && dn_forward==2 && direction=="dn") type=27;
if(up_back==2 && dn_forward==1 && direction=="dn") type=28;
if(up_back==1 && dn_forward==1 && direction=="up") type=29;
if(up_back==1 && dn_forward==2 && direction=="up") type=30;
if(up_back==2 && dn_forward==2 && direction=="up") type=31;
if(up_back==2 && dn_forward==1 && direction=="up") type=32;
return(type);
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Comments