Price Data Components
Miscellaneous
0
Views
0
Downloads
0
Favorites
TheoryPairs
//+------------------------------------------------------------------+
//| TheoryPairs.mq4 |
//| Copyright © 2010, Andrey Vassiliev |
//| http://www.vassiliev.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Andrey Vassiliev (MoneyJinn)"
#property link "http://www.vassiliev.ru"
//Èíäèêàòîð ñîçäàí íà îñíîâå òåîðèè ïàð òðàåêòîðèé. Àâòîð òåîðèè: Àíäðåé Âàñèëüåâ.
//Èíäèêàòîð îïðåäåëÿåò âîçìîæíîå íàïðàâëåíèå âòîðîé òðàåêòîðèè ïàðû è îòîáðàæàåò
//åãî â òî÷êå íà÷àëà ýòîé òðàåêòîðèè.
//Ðåêîìåíäóåìàÿ ðàáî÷àÿ ïàðà âàëþò: USD/CHF, M1 èëè M5.
//Îáñóæäåíèå èíäèêàòîðà è òåîðèè ïàð òðàåêòîðèé: http://forum.mql4.com/ru/36231
//Íîâûå âåðñèè èíäèêàòîðà: http://www.moneyjinn.com
//Ïî÷òîâûé àäðåñ àâòîðà: andrey@vassiliev.ru
//Ïóáëèêàöèÿ, ïåðåïðîäàæà, ðàñïðîñòðàíåíèå âíóòðè ëþáûõ ñîîáùåñòâ, êîììåð÷åñêîå
//ðàñïðîñòðàíåíèå èíäèêàòîðà èëè ÷àñòè åãî êîäà áåç ðàçðåøåíèÿ àâòîðà çàïðåùåíû!
#property indicator_chart_window
double PUP;
double PDN;
double UP;
double DN;
double E;
//IndicatorBuffers(3);
double UPB[];
double DNB[];
double EB[];
//Âðåìÿ íà÷àëà òîðãîâîé ñåññèè.
extern string StartTime="11:00";
//Âðåìÿ îêîí÷àíèÿ òîðãîâîé ñåññèè.
extern string EndTime="23:00";
//Ìàêñèìàëüíàÿ äëèòåëüíîñòü òîðãîâîé ñåññèè - 24 ÷àñà.
//Âðåìÿ ñåðâåðà ÄÖ, èñïîëüçîâàííîãî ïðè òåñòèðîâàíèè, ðàâíî: MSK - 2, ãäå MSK - Ìîñêîâñêîå âðåìÿ.
//Åñëè âðåìÿ ñåðâåðà Âàøåãî ÄÖ èíîå, òî âåëè÷èíû StartTime è EndTime ñëåäóåò ñêîððåêòèðîâàòü.
//Êîëè÷åñòâî ïîâòîðîâ ñåññèè âíóòðè äíÿ.
extern int Repeats=1;
//Êðàéíèå òî÷êè òðàåêòîðèé óêàçûâàåòñÿ â âèäå êîýôôèöèåíòîâ îò äëèòåëüíîñòè òîðãîâîé ñåññèè.
//Ýòî ïîçâîëÿåò ïðè ñìåíå äëèòåëüíîñòè òîðãîâîé ñåññèè ïðàâèëüíî îïðåäåëèòü ðàñïîëîæåíèå ïàð òðàåêòîðèé.
//K - òî÷êà íà÷àëà âòîðîé òðàåêòîðèè ïàðû.
extern double K=0.491;
//Ìåòîä àíàëèçà ðàáî÷åãî íàïðàâëåíèÿ ïåðâîé òðàåêòîðèè ïàðû.
//0 - Open(t2) - Open(t1).
//1 - Íàèáîëüøåå èç äâóõ: High(t2) - Low(t1) èëè High(t1) - Low(t2).
//2 - Íàèáîëüøåå ñìåùåíèå îò çíà÷åíèÿ Open òî÷êè t1 â èíòåðâàëå äî òî÷êè t2.
//3 - Íàèáîëüøåå èç äâóõ: íàèáîëüøåå ñìåùåíèå îò çíà÷åíèÿ High òî÷êè t1 äî Lowest â èíòåðâàëå äî òî÷êè t2
// èëè íàèáîëüøåå ñìåùåíèå îò çíà÷åíèÿ Low òî÷êè t1 äî Highest â èíòåðâàëå äî òî÷êè t2.
//4 - Íàèáîëüøåå èçìåíåíèå ñóùåñòâóþùåå â èíòåðâàëå îò t1 äî t2.
extern int Method=3;
//Ìèíèìàëüíî äîïóñòèìîå çíà÷åíèå èçìåíåíèÿ íà òåñòèðóåìîì ó÷àñòêå. Èçìåðÿåòñÿ â ïèïñàõ.
//Îäèí ïèïñ ñîîòâåòñòâóåò èçìåíåíèþ öåíû íà 0.0001 èëè 0.01, â çàâèñèìîñòè îò âàëþòíîé ïàðû.
extern int Delta=14;
//Ïåðåõîä íà çèìíåå âðåìÿ.
extern int WinterTimeChange=-1;
//Äëÿ íåêîòîðûõ ÄÖ çíà÷åíèå WinterTimeChange ìîæåò ðàâíÿòüñÿ íóëþ.
//P1 (P2,P3) - èñïîëüçóåìûå ïàðàìåòðû ïåðâîé òðàåêòîðèè.
//K1 (K3,K5) - òî÷êà íà÷àëà ïåðâîé òðàåêòîðèè ïàðû.
//K2 (K4,K6) - òî÷êà îêîí÷àíèÿ ïåðâîé òðàåêòîðèè ïàðû.
//N1 (N2,N3) - àíòèïàðà èëè ïàðà.
//Ìîæíî îäíîâðåìåííî èñïîëüçîâàòü íåñêîëüêî íàñòðîåê ïåðâûõ
//òðàåêòîðèé ñ ðàçíîé äëèòåëüíîñòüþ è ðàçíûìè êîîðäèíàòàìè.
//Ïðè ýòîì â òî÷êå K ñèãíàë ïîÿâèòñÿ òîëüêî â òîì ñëó÷àå,
//åñëè íàïðàâëåíèå âñåõ âûáðàííûõ ïåðâûõ òðàåêòîðèé óêàçûâàåò
//íà îäíî è òîæå íàïðàâëåíèå âòîðîé òðàåêòîðèè ïàðû.
extern bool P1=true;
extern double K1=0.180;
extern double K2=0.491;
extern bool N1=true;
extern bool P2=false;
extern double K3=0;
extern double K4=0;
extern bool N2=true;
extern bool P3=false;
extern double K5=0;
extern double K6=0;
extern bool N3=true;
//Ôèëüòð ïîäòâåðæäåíèÿ ñèãíàëîâ.
//Ðåæèì: 0 - 2
//0 - Îòêëþ÷åí.
//Ïîäòâåðæäàþùèé ñèãíàë ïîÿâëÿåòñÿ:
//1 - Åñëè îò óðîâíÿ ïîÿâëåíèÿ ñèãíàëà ðûíîê ñõîäèë ñ ìîìåíòà åãî ïîÿâëåíèÿ â åãî íàïðàâëåíèè
//íà N pips. Óðîâíè ïðåäûäóùèõ ñèãíàëîâ ïðè ïîÿâëåíèè íîâîãî ñèãíàëà ëþáîãî íàïðàâëåíèÿ
//ïåðåñòàþò ó÷èòûâàòüñÿ.
//2 - Åñëè ñ ìîìåíòà ïîÿâëåíèÿ ñèãíàëà ðûíîê ñõîäèë â åãî íàïðàâëåíèè
//íà N pips. Ìîìåíòû ïðåäûäóùèõ ñèãíàëîâ ïðè ïîÿâëåíèè íîâîãî ñèãíàëà
//ëþáîãî íàïðàâëåíèÿ ïåðåñòàþò ó÷èòûâàòüñÿ.
extern int Confirm=0;
//Change - óðîâåíü ïîäòâåðæäåíèÿ äâèæåíèÿ. Èçìåðÿåòñÿ â ïèïñàõ.
//Îäèí ïèïñ ñîîòâåòñòâóåò èçìåíåíèþ öåíû íà 0.0001 èëè 0.01, â çàâèñèìîñòè îò âàëþòíîé ïàðû.
extern int Change=16;
//Íàèáîëüøàÿ çàäåðæêà ñèãíàëà ðàâíàÿ îáùåìó ÷èñëó áàðîâ ïðîøåäøèõ ñ ìîìåíòà ñèãíàëà.
extern int Pause=1;
//Èçîáðàæåíèå ñèãíàëîâ â âèäå ñòðåëîê èëè â âèäå ëèíèé.
extern bool Arrows=true;
//Ïîêàçûâàòü ñèãíàëû ñ íåèçâåñòíûì íàïðàâëåíèåì èëè íåò.
extern bool Unknown=false;
//Ïîêàçûâàòü ãðàôè÷åñêèå îáúåêòû èëè íåò.
extern bool Drawing=true;
//Íóìåðàöèÿ èíäèêàòîðíûõ áóôåðîâ: (0) - âíèç, (1) - ââåðõ, (2) - íå îïðåäåëåíî.
datetime KT1;
datetime KT2;
datetime KT3;
datetime KT4;
datetime KT5;
datetime KT6;
datetime STS;
datetime STE;
int IndCounted;
double IUP;
double IDN;
string Signal;
datetime TS;
datetime CRT;
datetime CRE;
int TSA;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(3);
IndCounted=0;
IUP=0;
IDN=0;
TS=0;
CRT=0;
CRE=0;
int BrokerDecimal=1;
if(Digits==3 || Digits==5) BrokerDecimal=10;
Delta=Delta*BrokerDecimal;
Change=Change*BrokerDecimal;
TSA=TimeCurrent();
SetIndexBuffer(0,DNB);
SetIndexBuffer(1,UPB);
SetIndexBuffer(2,EB);
SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_NONE);
SetIndexStyle(2,DRAW_NONE);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
if(ArraySize(UPB)>0)
{
ArrayInitialize(UPB,0);
ArrayInitialize(DNB,0);
ArrayInitialize(EB,0);
}
GlobalVariableSet("RESET",1);
TS=0; CRT=0; CRE=0;
if(Drawing==true)
{
int objects_amount=ObjectsTotal();
for(int b=objects_amount-1; b>=0; b --)
{ObjectDelete(ObjectName(b));}
WindowRedraw();
}
Comment("");
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
IndCounted=IndicatorCounted();
if(IndCounted<0){return(0);}
if(IndCounted==0){deinit();}
int pos=0;
if(Bars>IndCounted+1){pos=(Bars-IndCounted)-1;}
while(pos>=0)
{
if(TS==0)
{
TS=Time[pos];
if(TS<TSA)
{
TSA=TS;
Print("Indicator start point: ",TimeToStr(TS));
}
}
if(Time[pos]>=TS)
{
TS=Time[pos];
PUP=0;
PDN=0;
UP=0;
DN=0;
E=0;
if(CRT>0 && Time[pos]>(CRT+Pause*Period()*60)) {CRT=0;}
if(CRT==0) {Points(pos);}
TRE(pos);
if(Confirm==0 || Confirm>2)
{
UP=PUP;
DN=PDN;
}
if(Confirm==1)
{
if(PUP>0)
{
IUP=Low[pos];
IDN=0;
}
if(IUP!=0)
{
if((High[pos]-IUP)>=(Change*Point))
{
UP=Low[pos];
IUP=0;
}
}
if(PDN>0)
{
IDN=High[pos];
IUP=0;
}
if(IDN!=0)
{
if((IDN-Low[pos])>=(Change*Point))
{
DN=High[pos];
IDN=0;
}
}
}
if(Confirm==2)
{
if(PUP>0)
{
IUP=Low[pos];
IDN=0;
}
if(IUP!=0)
{
if(Low[pos]<IUP){IUP=Low[pos];}
if((High[pos]-IUP)>=(Change*Point))
{
UP=Low[pos];
IUP=0;
}
}
if(PDN>0)
{
IDN=High[pos];
IUP=0;
}
if(IDN!=0)
{
if(High[pos]>IDN){IDN=High[pos];}
if((IDN-Low[pos])>=(Change*Point))
{
DN=High[pos];
IDN=0;
}
}
}
ART(pos);
}
pos--;
}
Comment(Signal);
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CLR(int pos)
{
string Name="Up";
string ObjName=Name+" "+TimeToStr(Time[pos]);
if(ObjectFind(ObjName)!=-1) ObjectDelete(ObjName);
Name="Dn";
ObjName=Name+" "+TimeToStr(Time[pos]);
if(ObjectFind(ObjName)!=-1) ObjectDelete(ObjName);
Name="Unknown";
ObjName=Name+" "+TimeToStr(Time[pos]);
if(ObjectFind(ObjName)!=-1) ObjectDelete(ObjName);
WindowRedraw();
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void ART(int pos)
{
//---- Ñîçäàíèå åñëè åñòü
if(UP>0)
{
UPB[pos]=Open[pos];
Signal="Last Signal: UP Level: "+DoubleToStr((Open[pos]+(MarketInfo(Symbol(),MODE_SPREAD)*Point)),Digits)+" Spread: "+DoubleToStr(MarketInfo(Symbol(),MODE_SPREAD)*Point,Digits)+" Time: "+TimeToStr(Time[pos]);
if(Drawing==true)
{
CLR(pos);
string Name="Up";
if(Arrows==true)
{
SetArrow(Time[pos],Open[pos],Name,233,LimeGreen);
}
else
{
SetLine(Time[pos],Open[pos],Name,LimeGreen);
}
}
}
if(DN>0)
{
DNB[pos]=Open[pos];
Signal="Last Signal: DN Level: "+DoubleToStr(Open[pos],Digits)+" Spread: "+DoubleToStr(MarketInfo(Symbol(),MODE_SPREAD)*Point,Digits)+" Time: "+TimeToStr(Time[pos]);
if(Drawing==true)
{
CLR(pos);
Name="Dn";
if(Arrows==true)
{
SetArrow(Time[pos],Open[pos],Name,234,Red);
}
else
{
SetLine(Time[pos],Open[pos],Name,Red);
}
}
}
if(E>0 && Unknown==true)
{
EB[pos]=Open[pos];
if(Drawing==true)
{
CLR(pos);
Name="Unknown";
if(Arrows==true)
{
SetArrow(Time[pos],Open[pos],Name,74,White);
}
else
{
SetLine(Time[pos],Open[pos],Name,White);
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void SetArrow(datetime ArrowTime,double Price,string Trend,double ArrowCode,color ArrowColor)
{
int err;
string ArrowName=Trend+" "+TimeToStr(ArrowTime);
if(ObjectFind(ArrowName)!=-1) ObjectDelete(ArrowName);
if(!ObjectCreate(ArrowName,OBJ_ARROW,0,ArrowTime,Price))
{
err=GetLastError();
Print("error: can't create Arrow! code #",err);
return;
}
else
{
ObjectSet(ArrowName,OBJPROP_ARROWCODE,ArrowCode);
ObjectSet(ArrowName,OBJPROP_COLOR,ArrowColor);
WindowRedraw();
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void SetLine(datetime LineTime,double Price,string Trend,color LineColor)
{
int err;
string LineName=Trend+" "+TimeToStr(LineTime);
if(ObjectFind(LineName)!=-1) ObjectDelete(LineName);
if(!ObjectCreate(LineName,OBJ_VLINE,0,LineTime,Price))
{
err=GetLastError();
Print("error: can't create Line! code #",err);
return;
}
else
{
ObjectSet(LineName,OBJPROP_STYLE,0);
ObjectSet(LineName,OBJPROP_COLOR,LineColor);
ObjectSet(LineName,OBJPROP_WIDTH,1);
ObjectSet(LineName,OBJPROP_BACK,true);
WindowRedraw();
}
}
//Îïðåäåëåíèå äàííûõ áëèæàéøåé ñåññèè
//Âõîäíûå äàííûå:
//b - òåêóùèé áàð
//Ðåçóëüòàò:
//STS - Íà÷àëî áëèæàéøåé ñåññèè
//STE - Êîíåö áëèæàéøåé ñåññèè
void Points(int b)
{
datetime Ses[][4];
ArrayResize(Ses,3*(Repeats+1)+1);
ArrayInitialize(Ses,0);
int t1=TimeHour(StrToTime(StartTime))*3600+TimeMinute(StrToTime(StartTime))*60;
if(EndTime<StartTime) {int t2=(TimeHour(StrToTime(EndTime))+24)*3600+TimeMinute(StrToTime(EndTime))*60;}
else {t2=TimeHour(StrToTime(EndTime))*3600+TimeMinute(StrToTime(EndTime))*60;}
int p=t2-t1;
datetime td=Time[b]-24*3600;
td=(1440*60*(MathFloor(td/60/1440)));
//Êîððåêöèÿ äàííûõ
if(K>1){K=1;}
if(K<0){K=0;}
if(t2>(t1+24*3600)) {t2=(t1+24*3600);}
if(t2>(t1+12*3600) && Repeats>0) {Repeats=0;}
//if ((t1+p*(Repeats+1))>(24*3600)) {Repeats=MathFloor((24*3600)/p)-1;}
//
int ck=0;
int s=0;
for(int c1=0; c1<=48; c1=c1+24)
{
for(int c2=0; c2<=Repeats; c2++)
{
ck=ck+1;
Ses[ck][1]= td+(t1 + c1*3600 + c2*p);
Ses[ck][2]= td+(t2 + c1*3600 + c2*p);
Ses[ck][3]= TFSet(td+(t1 + K*p + c1*3600 + c2*p));
if(!SummerTime(Ses[ck][1])) {Ses[ck][1]=Ses[ck][1]+WinterTimeChange*3600;}
if(!SummerTime(Ses[ck][2])) {Ses[ck][2]=Ses[ck][2]+WinterTimeChange*3600;}
if(!SummerTime(Ses[ck][3])) {Ses[ck][3]=TFSet(WinterTimeChange*3600+td+(t1+K*p+c1*3600+c2*p));}
if(s==0)
{
if(Time[b]<=(Ses[ck][3]+Pause*Period()*60) && Ses[ck][3]>CRE) {s=ck; break;}
}
}
if(s>0) {break;}
}
STS=Ses[s][1];
STE=Ses[s][2];
CRT=Ses[s][3];
if(CRT>0 && CRT==CRE) {s=0; CRT=0; STS=0; STE=0;}
if(s>0){s=1;}
return(s);
}
//Îïðåäåëåíèå âðåìåíè â çàäàííîé òî÷êå ïî çíà÷åíèþ êîýôôèöèåíòà
//Âõîäíûå äàííûå:
//Êîýôôèöèåíò
//STS - Íà÷àëî áëèæàéøåé ñåññèè
//STE - Êîíåö áëèæàéøåé ñåññèè
//CRT - âðåìÿ îñíîâíîé òî÷êè ïîÿâëåíèÿ ñèãíàëà
//Ðåçóëüòàò:
//Òî÷íîå çíà÷åíèå âðåìåíè ïî çíà÷åíèþ êîýôôèöèåíòà
datetime KPoint(double k,int pos)
{
datetime KT = TFSet(STS+((STE-STS)*k));
datetime CT = CRT - KT;
int BCT=(CT/60)/Period();
return(iTime(Symbol(),0,BCT+iBarShift(Symbol(),Period(),Time[pos],false)));
}
//Îêðóãëåíèå çíà÷åíèÿ âðåìåíè ïîä òåêóùèé òàéìôðåéì
datetime TFSet(datetime k){return((Period()*60*(MathFloor(k/60/Period()))));}
//Îïðåäåëåíèå íàïðàâëåíèÿ èíòåðâàëà
int Interval(datetime k1,datetime k2,datetime k,string i)
{
int n;
double h1,l1,h2,l2,dd,du;
//Êîððåêöèÿ äàííûõ
if(k2<k1)
{
datetime k3=k2;
k2=k1;
k1=k3;
}
if(k1>k) {k1=k;}
if(k2>k) {k2=k;}
if(Method==0 || Method>4)
{
//
int t1=iBarShift(Symbol(),Period(),k1,false);
int t2=iBarShift(Symbol(),Period(),k2,false);
h1 = iOpen(Symbol(),Period(),t1);
h2 = iOpen(Symbol(),Period(),t2);
du = h2-h1;
if(Delta>0){if(MathAbs(du)<Delta*Point){du=0;}}
//
if(k1==k2 || du==0) {n=0;} else if(du>0) {n=1;} else {n=-1;}
}
if(Method==1)
{
//
t1=iBarShift(Symbol(),Period(),k1,false);
t2=iBarShift(Symbol(),Period(),k2,false);
h1 = iHigh(Symbol(),Period(),t1);
h2 = iHigh(Symbol(),Period(),t2);
l1 = iLow(Symbol(),Period(),t1);
l2 = iLow(Symbol(),Period(),t2);
dd = h1-l2;
du = h2-l1;
if(Delta>0)
{
if(du<Delta*Point){du=0;}
if(dd<Delta*Point){dd=0;}
}
//
if(k1==k2 || dd==du) {n=0;} else if(du>dd) {n=1;} else {n=-1;}
}
if(Method==2)
{
//
t1=iBarShift(Symbol(),Period(),k1,false);
t2=iBarShift(Symbol(),Period(),k2,false);
h1=High[iHighest(NULL,0,MODE_HIGH,(t1-t2)+1,t2)];
l1=Low[iLowest(NULL,0,MODE_LOW,(t1-t2)+1,t2)];
du = h1-Open[t1];
dd = Open[t1]-l1;
if(Delta>0)
{
if(du<Delta*Point){du=0;}
if(dd<Delta*Point){dd=0;}
}
//
if(k1==k2 || dd==du) {n=0;} else if(du>dd) {n=1;} else {n=-1;}
}
if(Method==3)
{
//
t1=iBarShift(Symbol(),Period(),k1,false);
t2=iBarShift(Symbol(),Period(),k2,false);
h1=High[iHighest(NULL,0,MODE_HIGH,(t1-t2)+1,t2)];
l1=Low[iLowest(NULL,0,MODE_LOW,(t1-t2)+1,t2)];
du = h1-Low[t1];
dd = High[t1]-l1;
if(Delta>0)
{
if(du<Delta*Point){du=0;}
if(dd<Delta*Point){dd=0;}
}
//
if(k1==k2 || dd==du) {n=0;} else if(du>dd) {n=1;} else {n=-1;}
}
if(Method==4)
{
//
t1=iBarShift(Symbol(),Period(),k1,false);
t2=iBarShift(Symbol(),Period(),k2,false);
int h3=iHighest(NULL,0,MODE_HIGH,(t1-t2)+1,t2);
int l3=iLowest(NULL,0,MODE_LOW,(t1-t2)+1,t2);
if(Delta>0)
{
if(High[h3]-Low[l3]<Delta*Point){h3=0; l3=0;}
}
//
if(h3==l3 || High[h3]==Low[l3]) {n=0;} else if(l3>h3) {n=1;} else {n=-1;}
}
if(((P2==false && P3==false) || (P1==false && P3==false)) || (P1==false && P2==false))
{i=""; string ipr="";} else {ipr=" ";}
if(Drawing==true)
{
if(n==0)
{
string on=i+ipr+"Trend: ~ Point: "+TimeToStr(k);
ObjectCreate(on,OBJ_TREND,0,Time[t2],Close[t2],Time[t1],Open[t1]);
ObjectSet(on,OBJPROP_COLOR,White);
ObjectSet(on,OBJPROP_WIDTH,1);
ObjectSet(on,OBJPROP_STYLE,STYLE_SOLID);
ObjectSet(on,OBJPROP_RAY,false);
}
if(n==1)
{
on=i+ipr+"Trend: UP Point: "+TimeToStr(k);
ObjectCreate(on,OBJ_TREND,0,Time[t2],High[t2],Time[t1],Low[t1]);
ObjectSet(on,OBJPROP_COLOR,LimeGreen);
ObjectSet(on,OBJPROP_WIDTH,1);
ObjectSet(on,OBJPROP_STYLE,STYLE_SOLID);
ObjectSet(on,OBJPROP_RAY,false);
}
if(n==-1)
{
on=i+ipr+"Trend: DN Point: "+TimeToStr(k);
ObjectCreate(on,OBJ_TREND,0,Time[t2],Low[t2],Time[t1],High[t1]);
ObjectSet(on,OBJPROP_COLOR,Red);
ObjectSet(on,OBJPROP_WIDTH,1);
ObjectSet(on,OBJPROP_STYLE,STYLE_SOLID);
ObjectSet(on,OBJPROP_RAY,false);
}
}
return(n);
}
//Îïðåäåëåíèå íàïðàâëåíèÿ â çàäàííîé òî÷êå ïî íàïðàâëåíèþ êîíòðîëüíûõ îòðåçêîâ
//Âðåìÿ çàäàííîé òî÷êè CRT
int CRPoint()
{
double Mas[4][5];
ArrayInitialize(Mas,0);
Mas[1][1]=P1;
Mas[1][2]=KT1;
Mas[1][3]=KT2;
Mas[1][4]=N1;
Mas[2][1]=P2;
Mas[2][2]=KT3;
Mas[2][3]=KT4;
Mas[2][4]=N2;
Mas[3][1]=P3;
Mas[3][2]=KT5;
Mas[3][3]=KT6;
Mas[3][4]=N3;
for(int i=1;i<=3;i++)
{
if(Mas[i][1]==true)
{
int z=Interval(Mas[i][2],Mas[i][3],CRT,i+"P");
if(Mas[i][4]==true) {z=z*(-1);}
Mas[i][0]=z;
if(z==0){Mas[0][0]=2;}
if(Mas[0][0]==0) {Mas[0][0]=z;} else {if(Mas[0][0]!=z) {Mas[0][0]=2;}}
}
}
if(Mas[0][0]==2) {Mas[0][0]=0;}
return(Mas[0][0]);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void TRE(int pos)
{
if(CRT>0)
{
if(Time[pos]>=CRT && Time[pos]<=(CRT+Pause*Period()*60))
{
PUP=0;
PDN=0;
UP=0;
DN=0;
E=0;
KT1 = KPoint(K1,pos);
KT2 = KPoint(K2,pos);
KT3 = KPoint(K3,pos);
KT4 = KPoint(K4,pos);
KT5 = KPoint(K5,pos);
KT6 = KPoint(K6,pos);
int nt=CRPoint();
if(nt>0){PUP=Open[pos];}
if(nt<0){PDN=Open[pos];}
if(nt==0){E=Open[pos];}
CRE=CRT;
CRT=0;
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool SummerTime(datetime dt)
{
int i;
if(TimeMonth(dt)>=11 || TimeMonth(dt)<=2) {return(false);}
if(TimeMonth(dt)>=4 && TimeMonth(dt)<= 9) {return(true);}
datetime tSeek;
if(TimeMonth(dt)==10)
{
if(TimeDay(dt)>=20)
{
tSeek= StrToTime(StringTrimRight(StringTrimLeft(DoubleToStr(TimeYear(dt),0)))+".10.31 02:00");
for(i=31; i>=20; i--)
{
if(TimeDayOfWeek(tSeek)==0) {break;}
tSeek=tSeek-86400;
}
if(dt>=tSeek) {return(false);}
}
return(true);
}
if(TimeMonth(dt)==3)
{
if(TimeDay(dt)>=20)
{
tSeek = StrToTime(StringTrimRight(StringTrimLeft(DoubleToStr(TimeYear(dt),0)))+".03.31 03:00");
for(i = 31; i >= 20; i-- )
{
if(TimeDayOfWeek(tSeek)==0) {break;}
tSeek=tSeek-86400;
}
if(dt>=tSeek) {return(true);}
}
return(false);
}
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---