Miscellaneous
2
Views
0
Downloads
0
Favorites
tpehep
//+------------------------------------------------------------------+
//| TPEHEP.mq4 |
//| Copyright 2016.|
//+------------------------------------------------------------------+
#property link "Fedor10_10@mail.ru"
#property version "1.01"
#property strict
#property indicator_chart_window
#property description "Èíäèêàòîð TPEHEP ïðåäíàçíà÷åí äëÿ òåñòèðîâàíèÿ ñòðàòåãèè"
#property description "íà èñòîðèè â ïîøàãîâîì ðåæèìå ñ àâòîìàòè÷åñêèì êîíòðîëåì"
#property description "èñïîëíåíèÿ ïðèêàçîâ, îøèáîê, è ñîçàíèåì îò÷åòà äëÿ Excel."
#property description " Ãîðÿ÷èå êëàâèøè: 'B'- BUY, 'S'- SELL, 'C'- CLOSE"
#property description " F12 èëè Step- ñäâèã ãðàôèêà íà 1 øàã"
#property description " '<'- Îáëàñòü âëåâî, '>'- Îáëàñòü âïðàâî"
#property description " 'P'- ñîõðàíåíèå ôàéëà îò÷åòà"
extern string K="+:+:+:+";//Ïàðàìåòðû èñïîëíåíèÿ ïðèêàçîâ
input bool Traid=true;//Òîðãîâëÿ/Ðàçìåòêà
input double Lots =1.0;//Âåëè÷èíà ëîòà
input int StopLoss =100;//StopLoss (â 5-çíà÷íîì)
input int TakeProfit=40;//TakeProfit (â 5-çíà÷íîì)
input double Spread=0.0; //Ñïðåä (â 5-çíà÷íîì) 0 - èç èñòîðèè
input double Freeze=0.0; //Óðîâåíü çàìîðîçêè (â 5-çíà÷íîì)
extern string L="+:+:+:+";//Ðàçðåøåíèå íà ïðîðèñîâêó
input bool Vertical =true;//ðèñîâàíèå/íåò âåðòèêàëüíûõ ëèíèé
input color OpBUY=clrLightSkyBlue;//öâåò ëèíèè BUY
input color OpSELL=clrLightPink;//öâåò ëèíèè SELL
input color ClsAll=clrWhite; //öâåò ëèíèè çàêðûòèÿ ðó÷íîãî
input color TakePr=clrPaleGreen;//öâåò ëèíèè çàêðûòèÿ ïî TakeProfit
input color StopLs=clrYellow; //öâåò ëèíèè çàêðûòèÿ ïî StopLoss
extern string M="+:+:+:+";//ðàçíîå
input color Zone=clrDarkViolet; //öâåò âûäåëåíèÿ ðàññìàòðèâàåìîãî áàðà
input bool Metka=false;//ðèñîâàíèå/íåò öåíîâûõ ìåòîê
input bool Alerts=false;//çàïðåò ïðåäóïðåæäåíèé
input int Step=110;//Êëàâèøà ñäâèãà ãðàôèêà íà 1 øàã
int n,bar0,Ordr,Tr,SH,file;
double Ask0,Ask1,Bid0,Bid1,SL,TP,SP,Zm,Lev,LevOrd,LevUp,LevDn,Sum;
string FileName,FileNamo,Namo,Uplev,Oplev,Dnlev;
long result,resold;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
FileName=Symbol()+"."+IntegerToString(Period())+" ";//âðåìåííûé ôàéë äëÿ çàïèñè ñäåëîê
if(Traid)//ïðîïóñê ïðè îòêàçå îò ðàñ÷åòà
{
if(Spread==0.0) SP=MarketInfo(Symbol(),MODE_SPREAD);//Ñïðåä
else SP=Spread;
if(Freeze==0.0) Zm=MarketInfo(Symbol(),MODE_FREEZELEVEL);//óðîâåíü çàìîðîçêè
else Zm=Freeze;
Lev=MarketInfo(Symbol(),MODE_STOPLEVEL);//ìèíèìàëüíûé ñòîï
Lev=NormalizeDouble((Lev*Point),Digits);//ìèíèìàëüíûé ñòîï
SL=NormalizeDouble((StopLoss*Point),Digits);//StopLoss
if(SL<Lev) {SL=Lev; Alert("StopLoss=",SL/Point);}
TP=NormalizeDouble((TakeProfit*Point),Digits);//TakeProfit
if(TP<Lev) {TP=Lev; Alert("TakeProfit=",TP/Point);}
SP=NormalizeDouble((SP*Point),Digits);//ñïðåä
Zm=NormalizeDouble((Zm*Point),Digits);//óðîâåíü çàìîðîçêè
if(Digits==3 || Digits==5)//ïåðåñ÷åò ïîä èíñòðóìåíò
{
if(SL>1000) Alert("StopLoss äëÿ 5-çíàêà íå áîëüøå 1000");
if(TP>1000) Alert("TakeProfit äëÿ 5-çíàêà íå áîëüøå 1000");
}
else
{
if(SL>100) Alert("StopLoss äëÿ 4-çíàêà íå áîëüøå 100");
if(TP>100) Alert("TakeProfit äëÿ 4-çíàêà íå áîëüøå 100");
}
ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,result);//êîëè÷åñòâî ïèêñåëåé ïî Õ
ObjectCreate("Show1",OBJ_LABEL,0,0,0); //ìåñòî îòðèñîâêè íà ýêðàíå
ObjectSet("Show1",OBJPROP_XDISTANCE,result/2-50);
ObjectSet("Show1",OBJPROP_YDISTANCE,0);
ObjectSet("Show1",OBJPROP_CORNER,0);
ObjectSetText("Show1","ÁÀËÀÍÑ:",14,"Arial",clrDarkGray);//íàäïèñü ÁÀËÀÍÑ
ObjectCreate("Show2",OBJ_LABEL,0,0,0); //ìåñòî îòðèñîâêè íà ýêðàíå
ObjectSet("Show2",OBJPROP_XDISTANCE,result/2+40);
ObjectSet("Show2",OBJPROP_YDISTANCE,0);
ObjectSet("Show2",OBJPROP_CORNER,0);
ObjectSetText("Show2",DoubleToString(0.0,1),14,"Arial",clrBlueViolet);//ðåçóëüòàò òðåéäåðà
resold=result;
file=FileOpen(FileName,FILE_WRITE|FILE_SHARE_READ|FILE_TXT);
FileWrite(file," Íîìåð\t Âðåìÿ\t Öåíà\t Ïðèêàç\t Âðåìÿ\t Öåíà\t Ïðîôèò\t Èòîã");
}
ObjectCreate("Zona",OBJ_VLINE,0,Time[0],Close[0]);//âûäåëÿåì îáëàñòü ðàññìàòðèâàåìîãî áàðà
ObjectSet("Zona",OBJPROP_STYLE,DRAW_LINE);
ObjectSet("Zona",OBJPROP_WIDTH,8);
ObjectSet("Zona",OBJPROP_COLOR,Zone);
ObjectSet("Zona",OBJPROP_BACK,true);
ObjectSet("Zona",OBJPROP_TIME1,Time[0]);//óòî÷íèì ðàññìàòðèâàåìûé áàð
ChartRedraw(); //ïåðåðèñóåì
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
if(Traid) FileClose(file);//ñîõðàíåíèå ïîñëå ðàñ÷åòà
ObjectDelete("Zona");
ObjectDelete("Show1");
ObjectDelete("Show2");
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
return(rates_total);//ïóñòûøêà
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, // èäåíòèôèêàòîð ñîáûòèÿ
const long& lparam, // ïàðàìåòð ñîáûòèÿ òèïà long
const double& dparam, // ïàðàìåòð ñîáûòèÿ òèïà double
const string& sparam) // ïàðàìåòð ñîáûòèÿ òèïà string
{
//+------------------------------------------------------------------+
//| ïðîâåðêà íàæàòèÿ êëàâèøè èëè ìûøêè |
//+------------------------------------------------------------------+
if(CHARTEVENT_CHART_CHANGE)
{
ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,result);//êîíòðîëü çà ðàçìåðîì ýêðàíà
if(result!=resold) Show(result);
}
if(Traid && Ordr!=0 && id==CHARTEVENT_OBJECT_DRAG)
{
if(sparam==Uplev)//ïðîâåðêà âåðõíåãî óðîâíÿ
if(LevUp!=ObjectGet(Uplev,OBJPROP_PRICE1))
LevUp=MouseUp();//ïðè èçìåíåíèè óðîâíÿ
if(sparam==Dnlev)//ïðîâåðêà íèæíåãî óðîâíÿ
if(LevDn!=ObjectGet(Dnlev,OBJPROP_PRICE1))
LevDn=MouseDn();//ïðè èçìåíåíèè óðîâíÿ
}
if(id==CHARTEVENT_KEYDOWN)
{
switch(int(lparam))
{
case 37: Alert("Ïîïûòêà ïîâòîðèòü èñòîðèþ"); break;//KEY_LEFT_ARROW
case 39: Alert("Ïîøàãîâàÿ ïðîêðóòêà ïî F12"); break;//KEY_RIGHT_ARROW ïî F12
case 66: if(Traid)
{
if(Ordr==0)//KEY_BUY
{
Ordr=bar0;
Levl("BUY");//ðèñóåì ëèíèè îòêðûòèÿ è ñòîïû
if(Vertical) Vert("BUY",OpBUY);//ðèñóåì âåðòèêàëüíóþ ëèíèþ BUY
if(Metka) Metca("BUY",0,OpBUY);//ðèñóåì öåíîâóþ ìåòêó
}
else Alert("Ñäåëêà óæå îòêðûòà");
}
else if(Tr!=1){Tr=1; Vert("BUY",OpBUY);}//ðèñóåì âåðòèêàëüíóþ ëèíèþ BUY
else Alert("Òðåíä ââåðõ óæå îòìå÷åí");
n++; if(n==1) Namo=TimeToString(Time[Bar()],TIME_DATE);
break;
case 67: if(Traid)
{
if(Ordr!=0)//KEY_CLOSE
{
if(Freez()) break;//ïðîâåðêà íà çàìîðîçêó
Trend("CL",Ordr,ClsAll);//ðèñóåì ëèíèþ
if(Vertical) Vert("CL",ClsAll);//ðèñóåì âåðòèêàëüíóþ ëèíèþ Clîså
if(Metka) Metca("CL",Ordr,ClsAll);//ðèñóåì öåíîâóþ ìåòêó
Prof("CL",Ordr);//ïîäñ÷èòàåì èòîã
Ordr=0; if(Traid) Delet();//óäàëåíèå óðîâíåé
}
else Alert("Íåò ñäåëêè");
}
else if(Tr!=0) {Tr=0; Vert("CL",ClsAll);}//ðèñóåì âåðòèêàëüíóþ ëèíèþ Clîså
else Alert("Òðåíä íå îòìå÷åí");
break;
case 80:
if(n<1)//÷èñòûé øàáëîí
{
if(ChartSaveTemplate(0,FileName+"."))
Alert("øàáëîí ",FileName," ñîõðàíåí"); break;
}
else
{
if(Traid)//ñîõðàíåíèå ôàéëà îò÷åòà
{
FileFlush(file); FileClose(file);
FileNamo=FileName+Namo+"-"+TimeToString(Time[Bar()],TIME_DATE)+".xls";
if(FileMove(FileName,0,FileNamo,FILE_REWRITE))
Alert("îò÷åò ",FileNamo," ñîõðàíåí"); break;
}
else//øàáëîí ñ ðàçìåòêîé
{
FileNamo=FileName+Namo+"-"+TimeToString(Time[Bar()],TIME_DATE)+".";
if(ChartSaveTemplate(0,FileNamo))
Alert("ðàçìåòêà ",FileNamo," ñîõðàíåíà"); break;
}
}
case 83: if(Traid)
{
if(Ordr==0)//KEY_SELL
{
Ordr=-bar0;
Levl("SEL");//ðèñóåì ëèíèè îòêðûòèÿ è ñòîïû
if(Vertical) Vert("SEL",OpSELL);//ðèñóåì âåðòèêàëüíóþ ëèíèþ SELL
if(Metka) Metca("SEL",0,OpSELL);//ðèñóåì öåíîâóþ ìåòêó
}
else Alert("Ñäåëêà óæå îòêðûòà");
}
else if(Tr!=-1) {Tr=-1; Vert("SEL",OpSELL);}//ðèñóåì âåðòèêàëüíóþ ëèíèþ SELL
else Alert("Òðåíä âíèç óæå îòìå÷åí");
n++; if(n==1) Namo=TimeToString(Time[Bar()],TIME_DATE);
break;
case 188: SH++;//KEY_LEFT
if(SH>WindowBarsPerChart()){Alert("Îáëàñòü íà ãðàíèöå ñëåâà"); SH=WindowBarsPerChart();}
break;//óâåëè÷èì íîìåð ðàññìàòðèâàåìîãî áàðà
case 190: SH--;//KEY_RIGHT
if(SH<0){Alert("Îáëàñòü íà ãðàíèöå ñïðàâà"); SH=0;}
break;//óìåíüøèì íîìåð ðàññìàòðèâàåìîãî áàðà
default: if(lparam==Step) {ChartNavigate(0,CHART_CURRENT_POS,1); break;}//KEY_Shift
else Alert("Íàæàòà íå òà êëàâèøà",(lparam));
}
}
if(Bar()<=0) {if(n>0) Alert("Ïðîðèñîâàí ïîñëåäíèé áàð"); return;}//êîíòðîëü îêîí÷àíèÿ èñòîðèè
bar0=Bar()+SH;//íîìåð íóæíîãî áàðà íà ãðàôèêå
if(Time[bar0]!=ObjectGet("Zona",OBJPROP_TIME1))//ïðîâåðèì ðàññìàòðèâàåìûé áàð
{
Bid0=Close[bar0]; Ask0=Close[bar0]+SP;//öåíà çàêðûòèÿ ðàññìàòðèâàåìîãî áàðà
Bid1=Open[bar0-1]; Ask1=Open[bar0-1]+SP;//öåíà îòêðûòèÿ áóäóùåãî áàðà
LevStop();//àâòîìàòè÷åñêàÿ ïðîâåðêà ñðàáàòûâàíèÿ óðîâíåé
ObjectSet("Zona",OBJPROP_TIME1,Time[bar0]);//óòî÷íèì ðàññìàòðèâàåìûé áàð
ChartRedraw();//ïåðåðèñóåì
}
}
//+------------------------------------------------------------------+
//| ïðèëîæåíèÿ |
//+------------------------------------------------------------------+
void Vert(string cmd,color clr)//ðèñóåì âåðòèêàëüíóþ ëèíèþ
{
cmd+=IntegerToString(n);
ObjectCreate(cmd,OBJ_VLINE,0,Time[bar0],0);
ObjectSet(cmd,OBJPROP_STYLE,STYLE_DASH);
ObjectSet(cmd,OBJPROP_COLOR,clr);
ObjectSet(cmd,OBJPROP_BACK,true);
ChartRedraw();//ïåðåðèñóåì
}
//+------------------------------------------------------------------+
void Levl(string cmd)//ðèñóåì ãîðèçîíòàëüíûå ëèíèè ïðèêàçîâ
{
Oplev=cmd;
if(cmd=="BUY")
{
LevOrd=Ask1;//óðîâåíü Ask îòêðûòèÿ
Uplev="TakeProfit"; LevUp=LevOrd+TP;//óðîâåíü Bid StopLoss îò îòêðûòèÿ
Dnlev="StopLoss"; LevDn=LevOrd-SL;//óðîâåíü Bid TakeProfit îò îòêðûòèÿ
}
if(cmd=="SEL")
{
LevOrd=Bid1;//óðîâåíü Bid îòêðûòèÿ
Uplev="StopLoss"; LevUp=LevOrd+SL;//óðîâåíü Ask TakeProfit îò îòêðûòèÿ
Dnlev="TakeProfit"; LevDn=LevOrd-TP;//óðîâåíü Ask StopLoss îò îòêðûòèÿ
}
ObjectCreate(Uplev,OBJ_HLINE,0,0,LevUp);
ObjectSet(Uplev,OBJPROP_STYLE,STYLE_DASHDOT);
ObjectSet(Uplev,OBJPROP_COLOR,clrOrangeRed);
ObjectSetInteger(0,Uplev,OBJPROP_BACK,true);
ObjectSetInteger(0,Uplev,OBJPROP_SELECTED,true);
ObjectCreate(Oplev,OBJ_HLINE,0,0,LevOrd);
ObjectSet(Oplev,OBJPROP_STYLE,STYLE_DASHDOT);
ObjectSet(Oplev,OBJPROP_COLOR,clrLimeGreen);
ObjectSetInteger(0,Oplev,OBJPROP_BACK,true);
ObjectCreate(Dnlev,OBJ_HLINE,0,0,LevDn);
ObjectSet(Dnlev,OBJPROP_STYLE,STYLE_DASHDOT);
ObjectSet(Dnlev,OBJPROP_COLOR,clrOrangeRed);
ObjectSetInteger(0,Dnlev,OBJPROP_BACK,true);
ObjectSetInteger(0,Dnlev,OBJPROP_SELECTED,true);
ChartRedraw();//ïåðåðèñóåì
}
//+------------------------------------------------------------------+
void Metca(string cmd,int ord,color clr)//ðèñóåì öåíîâóþ ìåòêó
{
if(ord==0)//îòêðûòèå îðäåðà
{
if(cmd=="BUY") Met("Ask"+IntegerToString(n),Time[bar0-1],LevOrd,clr);//Open BUY
if(cmd=="SEL") Met("Bid"+IntegerToString(n),Time[bar0-1],LevOrd,clr);//Open SELL
}
if(ord>0)//îòêðûò îðäåð BUY
{
if(cmd=="CL") Met("Bid"+IntegerToString(n),Time[bar0-1],Bid1,clr);//ZERO
if(cmd=="SL") Met("Bid"+IntegerToString(n),Time[bar0],LevDn,clr);//SL
if(cmd=="TP") Met("Bid"+IntegerToString(n),Time[bar0],LevUp,clr);//TP
}
if(ord<0)
{
if(cmd=="CL") Met("Ask"+IntegerToString(n),Time[bar0-1],Ask1,clr);//ZERO
if(cmd=="SL") Met("Ask"+IntegerToString(n),Time[bar0],LevUp,clr);//SL
if(cmd=="TP") Met("Ask"+IntegerToString(n),Time[bar0],LevDn,clr);//TP
}
}
//+------------------------------------------------------------------+
void Met(string nm,datetime tm,double pr,color clr)//ðèñóåì öåíîâóþ ìåòêó
{
ObjectCreate(nm,OBJ_ARROW_LEFT_PRICE,0,tm,pr);
ObjectSet(nm,OBJPROP_STYLE,STYLE_SOLID);
ObjectSet(nm,OBJPROP_COLOR,clr);
ObjectSetInteger(0,nm,OBJPROP_SELECTED,false);
ObjectSetInteger(0,nm,OBJPROP_SELECTABLE,false);
ChartRedraw();//ïåðåðèñóåì
}
//+------------------------------------------------------------------+
void Trend(string cmd,int ord,color clr)//ðèñóåì ëèíèþ îò îòêðûòèÿ äî çàêðûòèÿ
{
string name="Tr"+IntegerToString(n);
if(ord>0)//Ask-Bid
{
if(cmd=="CL") Tr(name,ord,Bid1,Time[bar0-1],clr);//Man
if(cmd=="SL") Tr(name,ord,LevDn,Time[bar0],clr);//SL
if(cmd=="TP") Tr(name,ord,LevUp,Time[bar0],clr);//TP
}
if(ord<0)//Bid-Ask
{
if(cmd=="CL") Tr(name,-ord,Ask1,Time[bar0-1],clr);//Man
if(cmd=="SL") Tr(name,-ord,LevUp,Time[bar0],clr);//SL
if(cmd=="TP") Tr(name,-ord,LevDn,Time[bar0],clr);//TP
}
}
//+------------------------------------------------------------------+
void Tr(string name,int ord,double pr,datetime tm,color clr)//ðèñóåì ëèíèþ îò îòêðûòèÿ äî çàêðûòèÿ
{
ObjectCreate(name,OBJ_TREND,0,Time[ord-1],LevOrd,tm,pr);
ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);//îòêëþ÷èì (false) îòîáðàæåíèå ëèíèè âïðàâî
ObjectSet(name,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(name,OBJPROP_COLOR,clr);
ChartRedraw();//ïåðåðèñóåì
}
//+------------------------------------------------------------------+
bool Freez()
{
if(Ordr>0)
{
if(LevUp<=Bid0+Zm)
{
Alert("TakeProfit â çîíå çàìîðîçêè");
return(true);
}
if(LevDn>=Bid0-Zm)
{
Alert("StopLoss â çîíå çàìîðîçêè");
return(true);
}
}
if(Ordr<0)
{
if(LevUp<=Ask0+Zm)
{
Alert("StopLoss â çîíå çàìîðîçêè");
return(true);
}
if(LevDn>=Ask0-Zm)
{
Alert("TakeProfit â çîíå çàìîðîçêè");
return(true);
}
}
return(false);
}
//+------------------------------------------------------------------+
void LevStop()
{
if(Ordr>0)//êîíòðîëü BUY
{
if(Low[bar0]<=LevDn)//ïðè ïðîáèòèè íèæíåãî óðîâíÿ
{
if(Vertical) Vert("SL",StopLs);
if(Metka) Metca("SL",Ordr,StopLs);
if(Traid) {Trend("SL",Ordr,StopLs); Prof("SL",Ordr); Delet();}
if(Alerts) Alert("Ñðàáîòàë StopLoss");
Ordr=0;
}
if(High[bar0]>=LevUp)//ïðè ïðîáèòèè âåðõíåãî óðîâíÿ
{
if(Vertical) Vert("TP",TakePr);
if(Metka) Metca("TP",Ordr,TakePr);
if(Traid) {Trend("TP",Ordr,TakePr); Prof("TP",Ordr); Delet();}
if(Alerts) Alert("ñðàáîòàë TakeProfit");
Ordr=0;
}
}
if(Ordr<0)//êîíòðîëü SELL
{
if(High[bar0]+SP>=LevUp)//ïðè ïðîáèòèè âåðõíåãî óðîâíÿ
{
if(Vertical) Vert("SL",StopLs);
if(Metka) Metca("SL",Ordr,StopLs);
if(Traid) {Trend("SL",Ordr,StopLs); Prof("SL",Ordr); Delet();}
if(Alerts) Alert("Ñðàáîòàë StopLoss");
Ordr=0;
}
if(Low[bar0]+SP<=LevDn)//ïðè ïðîáèòèè íèæíåãî óðîâíÿ
{
if(Vertical) Vert("TP",TakePr);
if(Metka) Metca("TP",Ordr,TakePr);
if(Traid) {Trend("TP",Ordr,TakePr); Prof("TP",Ordr); Delet();}
if(Alerts) Alert("ñðàáîòàë TakeProfit");
Ordr=0;
}
}
}
//+------------------------------------------------------------------+
void Prof(string cmd,int ord)//áóõãàëòåðèÿ
{
if(ord>0)//áûë BUY Bid-Ask
{
if(cmd=="CL") Write(ord,"CL_BUY",Time[bar0-1],Bid1,NormalizeDouble(Bid1-LevOrd,Digits));//Man
if(cmd=="SL") Write(ord,"SL_BUY",Time[bar0],LevDn,NormalizeDouble(LevDn-LevOrd,Digits));//SL
if(cmd=="TP") Write(ord,"TP_BUY",Time[bar0],LevUp,NormalizeDouble(LevUp-LevOrd,Digits));//TP
}
if(ord<0)//áûë SELL Ask-Bid
{
if(cmd=="CL") Write(ord,"CL_SEL",Time[bar0-1],Ask1,NormalizeDouble(LevOrd-Ask1,Digits));//Man
if(cmd=="SL") Write(ord,"SL_SEL",Time[bar0],LevUp,NormalizeDouble(LevOrd-LevUp,Digits));//SL
if(cmd=="TP") Write(ord,"TP_SEL",Time[bar0],LevDn,NormalizeDouble(LevOrd-LevDn,Digits));//TP
}
}
//+------------------------------------------------------------------+
void Write(int ord,string nm,datetime tm,double clr,double pr)//çàïèñü â ôàéë
{
Sum+=NormalizeDouble(pr*Lots/(10*Point),2);//îáùèé èòîã
color Cl=clrBlueViolet; if(Sum<0.0) Cl=clrCrimson;//öâåò ÁÀËÀÍÑÀ
datetime T0=Time[fabs(ord)-1];//âðåìÿ îòêðûòèÿ îðäåðà
FileWrite(file,n,"\t",TimeToStr(T0,TIME_MINUTES),"\t",Rus(DoubleToString(LevOrd,Digits)),"\t",nm,"\t",
TimeToStr(tm,TIME_MINUTES),"\t",Rus(DoubleToString(clr,Digits)),"\t",
IntegerToString(int(pr/Point)),"\t",Rus(DoubleToString(Sum,2)));
ObjectSetText("Show2",DoubleToString(Sum,2),14,"Arial",Cl);//èçìåíåíèå ðåçóëüòàòà òðåéäåðà
ChartRedraw();//ïåðåðèñóåì
}
//+------------------------------------------------------------------+
string Rus(string ru)//Ôóíêöèÿ çàìåíÿåò(.)íà(,)äëÿ ðóññêîé Excel
{
StringReplace(ru,".",",");
return ru;
}
//+------------------------------------------------------------------+
int Bar()//íîìåð ïåðâîãî âèäèìîãî áàðà íà ãðàôèêå.
{
long res=0;// ïîäãîòîâèì ïåðåìåííóþ
res+=ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0,res);//çàïðîñèì íîìåð ëåâîãî áàðà
res-=WindowBarsPerChart()+1;//íàéäåì íîìåð ïðàâîãî áàðà
return(int(res));//--- âåðíåì íîìåð íóæíîãî áàðà
}
//+------------------------------------------------------------------+
void Show(long res)//êîíòðîëü çà ðàçìåðîì ýêðàíà
{
ObjectSet("Show1",OBJPROP_XDISTANCE,res/2-50);
ObjectSet("Show2",OBJPROP_XDISTANCE,res/2+40);
ChartRedraw();//ïåðåðèñóåì
resold=result;
}
//+------------------------------------------------------------------+
void Delet()//ïðîâåðêà óðîâíåé
{
ObjectDelete(Uplev);//óäàëåíèå âåðõíåãî óðîâíÿ
ObjectDelete(Oplev);//óäàëåíèå óðîâíÿ îòêðûòèÿ
ObjectDelete(Dnlev);//óäàëåíèå íèæíåãî óðîâíÿ
ChartRedraw();//ïåðåðèñóåì
}
//+------------------------------------------------------------------+
double MouseUp()
{
if(Freez()) ObjectSet(Uplev,OBJPROP_PRICE1,LevUp);//âîçâðàùàåì ëèíèþ íà ñòàðîå ìåñòî
else
{
if(Ordr>0 && ObjectGet(Uplev,OBJPROP_PRICE1)<=Ask0+Lev)//åñëè ëèíèÿ â çîíå ìèíèìóìà
{
Alert("TakeProfit= ",Lev,"+1");
ObjectSet(Uplev,OBJPROP_PRICE1,(Ask0+Lev+Point));//îòâîäèì TakeProfit çà ìèíèìóì
}
if(Ordr<0 && ObjectGet(Uplev,OBJPROP_PRICE1)<=Bid0+Lev)//åñëè ëèíèÿ â çîíå ìèíèìóìà
{
Alert("StopLoss= ",Lev,"+1");
ObjectSet(Uplev,OBJPROP_PRICE1,(Bid0+Lev+Point));//îòâîäèì StopLoss çà ìèíèìóì
}
}
ChartRedraw();//ïåðåðèñóåì
return(ObjectGet(Uplev,OBJPROP_PRICE1));//âîçâðàùàåì âåðõíèé âûñòàâëåííûé óðîâåíü
}
//+------------------------------------------------------------------+
double MouseDn()
{
if(Freez()) ObjectSet(Dnlev,OBJPROP_PRICE1,LevDn);//âîçâðàùàåì ëèíèþ íà ñòàðîå ìåñòî
else
{
if(Ordr>0 && ObjectGet(Dnlev,OBJPROP_PRICE1)>=Ask0-Lev)//åñëè ëèíèÿ â çîíå ìèíèìóìà
{
Alert("StopLoss= ",Lev,"+1");
ObjectSet(Dnlev,OBJPROP_PRICE1,(Ask0-Lev-Point));//îòâîäèì StopLoss çà ìèíèìóì
}
if(Ordr<0 && ObjectGet(Dnlev,OBJPROP_PRICE1)>=Bid0-Lev)//åñëè ëèíèÿ â çîíå ìèíèìóìà
{
Alert("StopLoss= ",Lev,"+1");
ObjectSet(Dnlev,OBJPROP_PRICE1,(Bid0-Lev-Point));//îòâîäèì TakeProfit çà ìèíèìóì
}
}
ChartRedraw();//ïåðåðèñóåì
return(ObjectGet(Dnlev,OBJPROP_PRICE1));//âîçâðàùàåì íèæíèé âûñòàâëåííûé óðîâåíü
}
//+------------------------------------------------------------------+
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
---