LIP/RU/LIP_v01.006/Include/LIP_Man_5_v1.006.mqh

893 lines
95 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 15:03:51 +02:00
<EFBFBD><EFBFBD>//============================================================================================= MQL5 ===
// LibreInfoPDO Main_5 v1.006 MQL5
// >4C;L >1@01>B:8 A>1KB89
// LibreCoin (c)2014-2018
//======================================================================================================
#property strict
//============================================================================================= MQL5 ===
// INCLUDE - ?>4:;NG05<K5 <>4C;8
//------------------------------------------------------------------------------------------------------
//----- 1@0B=K5 AAK;:8 =0 >A=>2=>9 D09; ?@>5:B0
#include "LIP_Ref_5_v1.006.mqh"
//============================================================================================= MQL5 ===
// EVENT PROCESSING MODULE
//------------------------------------------------------------------------------------------------------
//
//============================================================================================= MQL5 ===
// On_Init() - 8=8F80;870F8O A>25B=8:0
//------------------------------------------------------------------------------------------------------
ENUM_INIT_RETCODE On_Init()
{
//----- !G5BG8:8 8 =0AB@>9:8 AG5BG8:>2
gnTick=0;
gInTimer=false;
//----- ?@545;O5< 8<O ?@>3@0<<K
ProgramName=MQLInfoString(MQL_PROGRAM_NAME);
//----- 0AAG8BK205< :>@>B:>5 8<O 8=48:0B>@0
ChartID_Str=IntegerToString(ChartID());
IndicatorShortName=vers+" "+StringSubstr(ChartID_Str,StringLen(ChartID_Str)-3);
IndicatorSetString(INDICATOR_SHORTNAME,IndicatorShortName);
//----- ;>10;L=K5 ?0@0<5B@K
TheSymbol=Symbol();
//----- 0AB@>9:0 <0AA82>2
ArrayResize(inSelectSym,nSymSelectList);
ArrayResize(inEliminatSym,nSymEliminatList);
ArrayResize(inSelectMag,nMagSelectList);
ArrayResize(inEliminatMag,nMagEliminatList);
ArrayResize(inSelectTick,nTickSelectList);
ArrayResize(inEliminatTick,nTickEliminatList);
//----- 0AB@>9:8 4;O >B1>@0 ?> 8=AB@C<5=BC
{switch(SelSym)
{
case SelSym_all:
{
inSelectSym[0]="";
break;
}
case SelSym_curr:
{
inSelectSym[0]=TheSymbol;
break;
}
case SelSym_user:
{
inSelectSym[0]=SelectorSymbol;
break;
}
case SelSym_but:
{
inEliminatSym[0]=SelectorSymbol;
break;
}
case SelSym_list:
{
FillSymSelect(inSelectSym);
break;
}
case SelSym_butlist:
{
FillSymEliminat(inEliminatSym);
break;
}
case SelSym_listbutlist:
{
FillSymSelect(inSelectSym);
FillSymEliminat(inEliminatSym);
break;
}
default:
{
inSelectSym[0]="";
}
}}//switch(SelSym)
//----- 0AB@>9:8 4;O >B1>@0 ?> <038:C
{switch(SelMag)
{
case SelMag_all:
{
inSelectMag[0]=0;
break;
}
case SelMag_user:
{
inSelectMag[0]=SelectorMagic;
break;
}
case SelMag_but:
{
inEliminatMag[0]=SelectorMagic;
break;
}
case SelMag_list:
{
FillMagSelect(inSelectMag);
break;
}
case SelMag_butlist:
{
FillMagEliminat(inEliminatMag);
break;
}
case SelMag_listbutlist:
{
FillMagSelect(inSelectMag);
FillMagEliminat(inEliminatMag);
break;
}
default:
{
inSelectMag[0]=0;
}
}}//switch(SelMag)
//----- 0AB@>9:8 4;O >B1>@0 ?> B8:5BC
{switch(SelTick)
{
case SelTick_all:
{
inSelectTick[0]=0;
break;
}
case SelTick_user:
{
inSelectTick[0]=SelectorTicket;
break;
}
case SelTick_but:
{
inEliminatTick[0]=SelectorTicket;
break;
}
case SelTick_list:
{
FillTickSelect(inSelectTick);
break;
}
case SelTick_butlist:
{
FillTickEliminat(inEliminatTick);
break;
}
case SelTick_listbutlist:
{
FillTickSelect(inSelectTick);
FillTickEliminat(inEliminatTick);
break;
}
default:
{
inSelectTick[0]=0;
}
}}//switch(SelMag)
//----- 0AB@>9:8 B09<5@0
{if(!MQLInfoInteger(MQL_TESTER)) //5 B5AB8@>20=85
{
int err=-1;
int count=50;
{while((err!=0)&&(count>0))
{
ResetLastError();
EventSetMillisecondTimer(SetMSTimer); //#AB0=>2:0 B09<5@0 XXX <8;;8A5:C=4
err=GetLastError();
{if(err!=0)
{
Sleep(50);
Print("EventSetMillisecondTimer n=",count," err >>",err);
}}//if(err!=0)
count--;
}}//while((err!=0)&&(count>0))
}}//if(!MQLInfoInteger(MQL_TESTER))
//----- #AB0=>2:0 8 @0AG5B ?0@0<5B@>2 >:=0 8=48:0B>@0
IndicatorSetInteger(INDICATOR_DIGITS,0);
nSubWindow=ChartWindowFind(0,IndicatorShortName); //'B> AB@0==>, >6840;>AL GB> 1C45B @01>B0BL ProgramName
IndHeigh=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,nSubWindow);
IndicatorSetDouble(INDICATOR_MINIMUM,0.0);
IndicatorSetDouble(INDICATOR_MAXIMUM,IndHeigh);
nFirstBar=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR);
kScale=((ChartGetInteger(0,CHART_WIDTH_IN_PIXELS)>0) // 0AG5B <0AHB010 3@0D8:0 (10@>2 =0 ?8:A5;)
?((double)ChartGetInteger(0,CHART_WIDTH_IN_BARS)/ChartGetInteger(0,CHART_WIDTH_IN_PIXELS))
:(1));
//----- 0?@0H8205< 8AB>@8N A45;>: 8 >@45@>2 70 C:070==K9 ?5@8>4 A5@25@=>3> 2@5<5=8.
{if(!HistorySelect(0,TimeCurrent()))
{
Print("HistorySelect Error!");
return(INIT_FAILED);
}}//A;8 =5C40G=> - 2KE>48<
//----- ?@545;5=85 :>;8G5AB20 >@45@>2, A45;>:, ?>78F89. !>740=85 3@0D8G5A:8E >1J5:B>2.
nColo=0; //!G5BG8: :>;>=>: 2K2>40
//----- B:@KBK5 ?>78F88
{if(PositionsView)
{
Positions_Total=PositionsTotal(); //"5:CI85 ?>78F88
Sel_Positions_Total=CalcPositionsTotal(inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick);//"5:CI85 ?>78F88 >B>1@0==K5
CreateColoLabel("LIP",ColoStep*nColo,
"Position="+IntegerToString(Sel_Positions_Total)+"/"+IntegerToString(Positions_Total));//!>740Q< 3@0D8G5A:89 >1J5:B 703>;>2:0 :>;>=:8
CreateColo("LIP",ColoStep*nColo,Positions_Total); //!>740Q< 3@0D8G5A:89 >1J5:B 4;O :>;>=:8 ?>78F89
Positions_Total_Old=Positions_Total; //"5:CI85 ?>78F88 2 1CD5@
Sel_Positions_Total_Old=Sel_Positions_Total; //"5:CI85 ?>78F88 >B>1@0==K5 2 1CD5@
nColo++;
}}//if(PositionsView)
//----- >78F88 2 8AB>@88
{if(PositionsHistoryView)
{
//Positions_Total=PositionsTotal(); //"5:CI85 ?>78F88
//Sel_Positions_Total=CalcPositionsTotal(inSelectSym,inEliminatSym,SelSym,
// inSelectMag,inEliminatMag,SelMag,
// inSelectTick,inEliminatTick,SelTick);//"5:CI85 ?>78F88 >B>1@0==K5
CreateColoLabel("LHP",ColoStep*nColo,
"PositionHistory=");//!>740Q< 3@0D8G5A:89 >1J5:B 703>;>2:0 :>;>=:8
CreateColo("LHP",ColoStep*nColo,1); //!>740Q< 3@0D8G5A:89 >1J5:B 4;O :>;>=:8 ?>78F89
//Positions_Total_Old=Positions_Total; //"5:CI85 ?>78F88 2 1CD5@
//Sel_Positions_Total_Old=Sel_Positions_Total; //"5:CI85 ?>78F88 >B>1@0==K5 2 1CD5@
nColo++;
}}//if(PositionsView)
//----- B:@KBK5 >B;>65==K5 >@45@0
{if(OrdersView)
{
Orders_Total=OrdersTotal(); //"5:CI85 ;8<8B=K5 >@45@0
Sel_Orders_Total=CalcOrdersTotal(inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick); //"5:CI85 ;8<8B=K5 >@45@0 >B>1@0==K5
CreateColoLabel("LIO",ColoStep*nColo,
"Order="+IntegerToString(Sel_Orders_Total)+"/"+IntegerToString(Orders_Total));//!>740Q< 3@0D8G5A:89 >1J5:B 703>;>2:0 :>;>=:8
CreateColo("LIO",ColoStep*nColo,Orders_Total); //!>740Q< 3@0D8G5A:89 >1J5:B 4;O :>;>=:8 >@45@>2
Orders_Total_Old=Orders_Total; //"5:CI85 ;8<8B=K5 >@45@0 2 1CD5@
Sel_Orders_Total_Old=Sel_Orders_Total; //"5:CI85 ;8<8B=K5 >@45@0 >B>1@0==K5 2 1CD5@
nColo++;
}}//if(OrdersView)
//----- K?>;=5==K5 >@45@0 2 8AB>@88
{if(OrdersHistoryView)
{
Orders_History_Total=HistoryOrdersTotal(); //0:@KBK5 @K=>G=K5 >@45@0
Sel_Orders_History_Total=CalcHistoryOrdersTotal(inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick);//0:@KBK5 @K=>G=K5 >@45@0 >B>1@0==K5
CreateColoLabel("LHO",ColoStep*nColo,
"History_Order="+IntegerToString(Sel_Orders_History_Total)+"/"+IntegerToString(Orders_History_Total));//!>740Q< 3@0D8G5A:89 >1J5:B 703>;>2:0 :>;>=:8
CreateColo("LHO",ColoStep*nColo,Orders_History_Total); //!>740Q< 3@0D8G5A:89 >1J5:B 4;O :>;>=:8 >@45@>2 2 8AB>@88
Orders_History_Total_Old=Orders_History_Total; //0:@KBK5 @K=>G=K5 >@45@0 2 1CD5@
Sel_Orders_History_Total_Old=Sel_Orders_History_Total; //0:@KBK5 @K=>G=K5 >@45@0 >B>1@0==K5 2 1CD5@
nColo++;
}}//if(OrdersHistoryView)
//----- !45;:8 2 8AB>@88
{if(DealsHistoryView)
{
Deals_History_Total=HistoryDealsTotal(); //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0)
Sel_Deals_History_Total=CalcHistoryDealsTotal(inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick);//!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0) >B>1@0==K5
CreateColoLabel("LHD",ColoStep*nColo,
"History_Deal="+IntegerToString(Sel_Deals_History_Total)+"/"+IntegerToString(Deals_History_Total));//!>740Q< 3@0D8G5A:89 >1J5:B 703>;>2:0 :>;>=:8
CreateColo("LHD",ColoStep*nColo,Deals_History_Total); //!>740Q< 3@0D8G5A:89 >1J5:B 4;O :>;>=:8 A45;>: 2 8AB>@88
Deals_History_Total_Old=Deals_History_Total; //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0) 2 1CD5@
Sel_Deals_History_Total_Old=Sel_Deals_History_Total; //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0) >B>1@0==K5 2 1CD5@
nColo++;
}}//if(DealsHistoryView)
//-----
return(INIT_SUCCEEDED);
}//On_Init()
//
//============================================================================================= MQL5 ===
// On_Tick() - A=>2=>9 >1@01>BG8: B8:>2
//------------------------------------------------------------------------------------------------------
void On_Tick()
{
//----- @5@K205< 703@C7:C, 5A;8 8=48:0B>@ C65 5ABL
{if((ChartWindowFind(0,IndicatorShortName)>=0)&&(ChartWindowFind(0,ProgramName)>=0))
{
Print("Abort loading indicator: ",ProgramName);
ChartIndicatorDelete(0,ChartWindowFind(0,ProgramName),ProgramName);
}}//if(ChartWindowFind(0,IndicatorShortName)>=0)
//-----
//{if(!gInTimer)
//{
gnTick++;
// gInTimer=false;
//}}//if(!InTimer)
{if(gnTick>4294967000)
{
gnTick=100;
}}//if(gnTick>4294967000)
//----- #AB0=>2:0 8 @0AG5B ?0@0<5B@>2 >:=0 8=48:0B>@0
ChartID_Str=IntegerToString(ChartID());
IndicatorShortName=vers+" "+StringSubstr(ChartID_Str,StringLen(ChartID_Str)-3);
//ProgramName=MQLInfoString(MQL_PROGRAM_NAME);
nSubWindow=ChartWindowFind(0,IndicatorShortName);
IndHeigh=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,nSubWindow);
IndicatorSetDouble(INDICATOR_MINIMUM,0.0);
IndicatorSetDouble(INDICATOR_MAXIMUM,IndHeigh);
nFirstBar=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR);
kScale=((ChartGetInteger(0,CHART_WIDTH_IN_PIXELS)>0) // 0AG5B <0AHB010 3@0D8:0 (10@>2 =0 ?8:A5;)
?((double)ChartGetInteger(0,CHART_WIDTH_IN_BARS)/ChartGetInteger(0,CHART_WIDTH_IN_PIXELS))
:(1));
//----- 0?@0H8205< 8AB>@8N A45;>: 8 >@45@>2 70 C:070==K9 ?5@8>4 A5@25@=>3> 2@5<5=8.
{if(!HistorySelect(0,TimeCurrent()))
{
Print("HistorySelect Error!");
return;
}}//A;8 =5C40G=> - 2KE>48<
//----- ?@545;5=85 :>;8G5AB20 >@45@>2, A45;>:, ?>78F89. K2>4 3@0D8G5A:8E >1J5:B>2.
nColo=0; //!G5BG8: :>;>=>: 2K2>40
//----- !?8A>: >B:@KBKE ?>78F89
{if(PositionsView)
{
Positions_Total=PositionsTotal(); //"5:CI85 ?>78F88
Sel_Positions_Total=CalcPositionsTotal(inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick);//"5:CI85 ?>78F88 >B>1@0==K5
{if(Sel_Positions_Total!=Sel_Positions_Total_Old) //5@5AG5B - ?5@5@8A>2:0 ?@8 87<5=5=88 :>;8G5AB20
{
DeleteColo("LIP",Positions_Total_Old); //>;>=:0 ?>78F89
CreateColo("LIP",ColoStep*nColo,Positions_Total);
}}//if(Sel_Positions_Total!=Sel_Positions_Total_Old)
MoveColoLabel( "LIP", //03>;>2>: :>;>=:8
ColoStep*nColo,
"Position="+
IntegerToString(Sel_Positions_Total)+"/"+
IntegerToString(Positions_Total)+
((SummView)
?(" ="+DoubleToString(CalcPositionsSumm(inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick),2)+" ")
:(""))+
""
);
//-----
{if(Positions_Total>=0)
{
nRow=0;
CopyTime(TheSymbol,PERIOD_CURRENT,(nFirstBar-(int)((ColoStep*nColo+ColoShift)*kScale)),1,gTime);
{for(int i=Positions_Total-1;i>=0;i--)
{
sTXW="LIP_"+IntegerToString(i); //#AB0=02;8205< 8<O 4;O B5:cB>2>3> >1J5:B0
ObjectSetString(0,sTXW,OBJPROP_TEXT," "); //1=C;5=85 AB@>:8 2K2>40
ulong Pos_Tick=PositionGetTicket(i); //K18@05< ?>78F8N ?> =><5@C 2 A?8A:5
{if(Pos_Tick<=0){continue;}} //5C40G=> - A;54CNI89
{if(!CheckSym(PositionGetString(POSITION_SYMBOL),inSelectSym,inEliminatSym,SelSym)){continue;}}//5 B>B A8<2>; - A;54CNI89
{if(!CheckMag(PositionGetInteger(POSITION_MAGIC),inSelectMag,inEliminatMag,SelMag)){continue;}}//@>25@:0 A>>B25BAB28O <038:0 <>45;8 ?> :@8B5@8N 2K1>@0
{if(!CheckTick(PositionGetInteger(POSITION_TICKET),inSelectTick,inEliminatTick,SelTick)){continue;}}//@>25@:0 A>>B25BAB28O B8:5B0 <>45;8 ?> :@8B5@8N 2K1>@0
ENUM_POSITION_TYPE OrdType=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
TypeStringPos=EnumToString(OrdType);
StringReplace(TypeStringPos,"POSITION_TYPE_","");
DataStringPos= " "+
IntegerToString(i)+"."+
PositionGetString(POSITION_SYMBOL)+" "+
TypeStringPos+" ["+
IntegerToString(Pos_Tick)+"-"+
IntegerToString(PositionGetInteger(POSITION_MAGIC))+"-"+
DoubleToString(PositionGetDouble(POSITION_VOLUME),2)+"-"+
DoubleToString(PositionGetDouble(POSITION_PRICE_OPEN),
(int)SymbolInfoInteger(PositionGetString(POSITION_SYMBOL),SYMBOL_DIGITS))+"]="+
DoubleToString(PositionGetDouble(POSITION_PROFIT),2)+" "+
"";
ResetLastError();
{if(!ObjectSetInteger(
0, //45=B8D8:0B>@ G0@B0
sTXW, //<O >1J5:B0
OBJPROP_TIME, //7<5=O5< :>>@48=0BC 2@5<5=8 >1J5:B0
gTime[0]
))
{
Print("ObjectSetInteger0 Error=",GetLastError());
continue;
}}//if(!ObjectSetInteger(...
ResetLastError();
{if(!ObjectSetDouble(
0, //45=B8D8:0B>@ G0@B0
sTXW, //<O >1J5:B0
OBJPROP_PRICE, //7<5=O5< :>>@48=0BC F5=K >1J5:B0
IndHeigh-11*(nRow+1)
))
{
Print("ObjectSetDouble0 Error=",GetLastError());
continue;
}else{
nRow++;
}}//if(!ObjectSetDouble(...
ObjectSetString(0,sTXW,OBJPROP_TEXT,DataStringPos+"");
}}//for(int i=Positions_Total-1;i>=0;i--)
}}//if(Positions_Total>=0)
//----- 0?><=8< B5:CI85 AG5BG8:8
Positions_Total_Old=Positions_Total; //"5:CI85 ?>78F88
Sel_Positions_Total_Old=Sel_Positions_Total; //"5:CI85 ?>78F88 >B>1@0==K5
//----- =:@5<5=B AG5BG8:0 :>;>=>:
nColo++;
}}//if(PositionsView)
//----- !?8A>: ?>78F89 2 8AB>@88
//5@51@0BL A45;:8 - AD>@<8@>20BL <0AA82 ?>78F89
{if(PositionsHistoryView)
{
Deals_History_Total=HistoryDealsTotal(); //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0)
//Print("407. HistoryDealsTotal()=",Deals_History_Total," TimeCurrent()=",TimeCurrent());
int nPosition=0;
Positions_History_Total=0;
{if(Deals_History_Total>0)
{
nPosition=0; //=45:A ?5@2>9 (=C;52>9) ?>78F88
Positions_History_Total=0; //
ArrayResize(Positions,nPosition+1);//5A;8 <K BCB, B> >4=0 ?>78F8O B>G=> 5ABL
Positions[0].ID=0;
Positions[0].Symbol="";
{for(int i=0;i<=Deals_History_Total-1;i++)
{
//if(i>0)break;
ulong Deal_Tick=(ulong)HistoryDealGetTicket(i); //K18@05< A45;:C ?> =><5@C 2 A?8A:5
{if(Deal_Tick<=0){continue;}} //5C40G=> - A;54CNI89
//Print("423. i=",i," Deal_Tick=",Deal_Tick);
//bool Deal_Select=HistoryDealSelect(Deal_Tick); //K18@05< A45;:C ?> B8:5BC A45;:8
//--- HistoryDealGetInteger()
long DealPositionID=HistoryDealGetInteger(Deal_Tick,DEAL_POSITION_ID); //45=B8D8:0B>@ ?>78F88, 2 >B:@KB88, 87<5=5=88 8;8 70:@KB88 :>B>@>9 CG0AB2>20;0 MB0 A45;:0.
long DealTicket=HistoryDealGetInteger(Deal_Tick,DEAL_TICKET); //"8:5B A45;:8. #=8:0;L=>5 G8A;>, :>B>@>5 ?@8A208205BAO :064>9 A45;:5
long DealOrder=HistoryDealGetInteger(Deal_Tick,DEAL_ORDER); //@45@, =0 >A=>20=85 :>B>@>3> 2K?>;=5=0 A45;:0
datetime DealTime=(datetime)HistoryDealGetInteger(Deal_Tick,DEAL_TIME); //@5<O A>25@H5=8O A45;:8
long DealTimeMSC=HistoryDealGetInteger(Deal_Tick,DEAL_TIME_MSC); //@5<O A>25@H5=8O A45;:8 2 <8;;8A5:C=40E A 01.01.1970
ENUM_DEAL_TYPE DealType=(ENUM_DEAL_TYPE)HistoryDealGetInteger(Deal_Tick,DEAL_TYPE); //"8? A45;:8
ENUM_DEAL_ENTRY DealEntry=(ENUM_DEAL_ENTRY)HistoryDealGetInteger(Deal_Tick,DEAL_ENTRY); //0?@02;5=85 A45;:8  2E>4 2 @K=>:, 2KE>4 87 @K=:0 8;8 @072>@>B
long DealMagic=HistoryDealGetInteger(Deal_Tick,DEAL_MAGIC); //Magic number 4;O A45;:8 (A<>B@8 ORDER_MAGIC)
ENUM_DEAL_REASON DealReson=(ENUM_DEAL_REASON) HistoryDealGetInteger(Deal_Tick,DEAL_REASON); //@8G8=0 8;8 8AB>G=8: ?@>2545=8O A45;:8
//--- HistoryDealGetDouble()
double DealVolume=HistoryDealGetDouble(Deal_Tick,DEAL_VOLUME); //1J5< A45;:8
double DealPrice=HistoryDealGetDouble(Deal_Tick,DEAL_PRICE); //&5=0 A45;:8
double DealComission=HistoryDealGetDouble(Deal_Tick,DEAL_COMMISSION); //><8AA8O ?> A45;:5
double DealSwap=HistoryDealGetDouble(Deal_Tick,DEAL_SWAP); //0:>?;5==K9 A2>? ?@8 70:@KB88
double DealProfit=HistoryDealGetDouble(Deal_Tick,DEAL_PROFIT); //$8=0=A>2K9 @57C;LB0B A45;:8
//--- HistoryDealGetString()
string DealSymbol=HistoryDealGetString(Deal_Tick,DEAL_SYMBOL); //<O A8<2>;0, ?> :>B>@><C ?@>872545=0 A45;:0
string DealComment=HistoryDealGetString(Deal_Tick,DEAL_COMMENT); //><<5=B0@89 : A45;:5
string DealExternalID=HistoryDealGetString(Deal_Tick,DEAL_EXTERNAL_ID); //45=B8D8:0B>@ A45;:8 2> 2=5H=59 B>@3>2>9 A8AB5<5 (=0 18@65)
//--- 5@51>@ ?>78F89, ?>8A: ?>78F88 B5:CI59 A45;:8
bool PositionNew=true;
{if(i>0)
{
//{for(int j=0;j<=MaxPosition;j++)//BCB 2>7<>6=> ;CGH5 AG8B0BL >B :>=F0
{for(int j=Positions_History_Total;j>=0;j--)//BCB ;CGH5 AG8B0BL >B :>=F0
{
//if( true
// && ((j==4)||(j==5))
// && (DealTicket==5087854)
// //&& (DealEntry==DEAL_ENTRY_IN)
// )
//Print("450. j=",j,
// " DealTicket=",DealTicket," DealPositionID=",DealPositionID," DealType=",EnumToString(DealType)," DealEntry=",EnumToString(DealEntry),
// " ArraySize()=",ArraySize(Positions)," Positions[j].ID=",Positions[j].ID);
{if(Positions[j].ID==DealPositionID)
{
//if(DealTicket==6643501)Print("446. j=",j," DealTicket=",DealTicket," DealPositionID=",DealPositionID," ArraySize()=",ArraySize(Positions)," Positions[j].ID=",Positions[j].ID);//7370160
PositionNew=false;
nPosition=j;
break;
}}//if(Positions[j].ID==DealPositionID)
}}//for(int j=0;j<=nPosition;j++)
}}//if(i>0)
//--- 1@01>B:0 =>2>9 8;8 @0=55 =0945==>9 ?>78F88
{if(PositionNew)
{
//1@01>B:0 2=>2L =0945==>9 ?>78F88
{if(i>0)
{
Positions_History_Total++;
nPosition=Positions_History_Total;
ArrayResize(Positions,nPosition+1);//?@>25@8BL =0 :>;8G5AB2> M;5<5=B>2
}}//if(i>0)
Positions[nPosition].Profit=0.0;
Positions[nPosition].Swap=0.0;
Positions[nPosition].Magic=0;
{switch(DealEntry)
{
case DEAL_ENTRY_IN:
{
//Positions[nPosition].Profit=DealProfit;
Positions[nPosition].Type=DealType;
Positions[nPosition].Magic=DealMagic;
Positions[nPosition].VolumeOpen=DealVolume;
Positions[nPosition].VolumeClose=0;
Positions[nPosition].PriceOpen=DealPrice;
break;
}
case DEAL_ENTRY_OUT:
{
Positions[nPosition].VolumeClose=DealVolume;
break;
}
default: break;
}}//switch(DealEntry)
//Print("490. ArraySize()=",ArraySize(Positions));
}else{
//1@01>B:0 @0=55 =0945==>9 ?>78F88
{switch(DealEntry)
{
case DEAL_ENTRY_IN:
{
Positions[nPosition].VolumeOpen+=DealVolume;
break;
}
case DEAL_ENTRY_OUT:
{
Positions[nPosition].Magic=DealMagic;
Positions[nPosition].Profit+=DealProfit;
Positions[nPosition].Swap+=DealSwap;
Positions[nPosition].VolumeClose+=DealVolume;
Positions[nPosition].PriceClose=DealPrice;
break;
}
default: break;
}}//switch(DealEntry)
}}//if(PositionNew)
{if((DealType==DEAL_TYPE_BUY)||(DealType==DEAL_TYPE_SELL))
{
Positions[nPosition].Symbol=DealSymbol;
Positions[nPosition].Magic=DealMagic;
Positions[nPosition].ID=DealPositionID;
}else{
Positions[nPosition].Symbol="BALANCE";
Positions[nPosition].Magic=0;
Positions[nPosition].ID=0;
}}//if((DealType==DEAL_TYPE_BUY)||(DealType==DEAL_TYPE_SELL))
//if( true
// //&& (nPosition==5)
// && (DealTicket==5087854)
// //&& (DealEntry==DEAL_ENTRY_IN)
// )
//Print("505. n=",nPosition," PositionNew=",PositionNew,
// " DealTicket=",DealTicket," DealPositionID=",DealPositionID," DealType=",EnumToString(DealType)," DealEntry=",EnumToString(DealEntry),
// " ArraySize()=",ArraySize(Positions)," Positions[n].ID=",Positions[nPosition].ID," Positions[n].Type=",EnumToString(Positions[nPosition].Type));//7370160
//Print("441. i=",i," HistoryDealsTotal()=",Deals_History_Total," DealPositionID=",DealPositionID," nPosition=",nPosition," Positions[nPosition].Symbol=",Positions[nPosition].Symbol);
}}//for(int i=HistoryDealsTotal()-1;i>=0;i--)
Positions_History_Total++;
}}//if(HistoryDealsTotal()>0)
//0:@KBK5 ?>78F88 >B>1@0==K5
Sel_Positions_History_Total=CalcPositionsHistoryTotal(inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick,
Positions_History_Total);
{if(Sel_Positions_History_Total!=Sel_Positions_History_Total_Old)//5@5AG5B - ?5@5@8A>2:0 ?@8 87<5=5=88 :>;8G5AB20
{
DeleteColo("LHP",Positions_History_Total_Old); //>;>=:0 ?>78F89
CreateColo("LHP",ColoStep*nColo,Positions_History_Total);
}}//if(Sel_History_Deals_Total!=Sel_History_Deals_Total_Old)
//-----
MoveColoLabel( "LHP", //03>;>2>: :>;>=:8
ColoStep*nColo,
"PositionHistory="+
IntegerToString(Sel_Positions_History_Total)+"/"+
IntegerToString(Positions_History_Total)+
((SummView)
?(" ="+DoubleToString(CalcPositionsHistorySumm( inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick,
Positions_History_Total),2)+" ")
:(""))+
""
);
//-----
{if((HistoryDealsTotal()>0)&&(Positions_History_Total>0))//"CB ?>4C<0BL =04 CA;>285<
{
nRow=0;
CopyTime(TheSymbol,PERIOD_CURRENT,(nFirstBar-(int)((ColoStep*nColo+ColoShift)*kScale)),1,gTime);
{for(int i=Positions_History_Total-1;i>=0;i--)
{
//Print("503. i=",i," ArraySize()=",ArraySize(Positions));
sTXW="LHP_"+IntegerToString(i); //#AB0=02;8205< 8<O 4;O B5:cB>2>3> >1J5:B0
ObjectSetString(0,sTXW,OBJPROP_TEXT," "); //1=C;5=85 AB@>:8 2K2>40
{if(!CheckSym(Positions[i].Symbol,inSelectSym,inEliminatSym,SelSym)){continue;}}//@>25@:0 A>>B25BAB28O A8<2>;0 <>45;8 ?> :@8B5@8N 2K1>@0
{if(!CheckMag(Positions[i].Magic,inSelectMag,inEliminatMag,SelMag)){continue;}}//@>25@:0 A>>B25BAB28O <038:0 <>45;8 ?> :@8B5@8N 2K1>@0
{if(!CheckTick(Positions[i].ID,inSelectTick,inEliminatTick,SelTick)){continue;}}//@>25@:0 A>>B25BAB28O B8:5B0 <>45;8 ?> :@8B5@8N 2K1>@0
PositionTypeString=EnumToString(Positions[i].Type);
StringReplace(PositionTypeString,"DEAL_TYPE_","");
DataStringPos= " "+
IntegerToString(i)+"."+
Positions[i].Symbol+" "+
PositionTypeString+
" ["+
IntegerToString(Positions[i].ID)+"-"+
IntegerToString(Positions[i].Magic)+"-"+
DoubleToString(Positions[i].VolumeOpen,2)+"/"+
DoubleToString(Positions[i].VolumeClose,2)+"-"+
DoubleToString(Positions[i].PriceOpen,(int)SymbolInfoInteger(Positions[i].Symbol,SYMBOL_DIGITS))+"/"+
DoubleToString(Positions[i].PriceClose,(int)SymbolInfoInteger(Positions[i].Symbol,SYMBOL_DIGITS))+
"]="+
DoubleToString(Positions[i].Profit,2)+" "+
"";
ResetLastError();
{if(!ObjectSetInteger(
0, //45=B8D8:0B>@ G0@B0
sTXW, //<O >1J5:B0
OBJPROP_TIME, //7<5=O5< :>>@48=0BC 2@5<5=8 >1J5:B0
gTime[0]
))
{
Print("ObjectSetInteger0 Error=",GetLastError());
continue;
}}//if(!ObjectSetInteger(...
ResetLastError();
{if(!ObjectSetDouble(
0, //45=B8D8:0B>@ G0@B0
sTXW, //<O >1J5:B0
OBJPROP_PRICE, //7<5=O5< :>>@48=0BC F5=K >1J5:B0
IndHeigh-11*(nRow+1)
))
{
Print("ObjectSetDouble0 Error=",GetLastError());
continue;
}else{
nRow++;
}}//if(!ObjectSetDouble(...
ObjectSetString(0,sTXW,OBJPROP_TEXT,DataStringPos+"");
}}//for(int i=nPosition-1;i>=0;i--)
}}//if((HistoryDealsTotal()>0)&&(nPosition>0))
//----- 0?><=8< B5:CI85 AG5BG8:8
Positions_History_Total_Old=Positions_History_Total; //0:@KBK5 ?>78F88
Sel_Positions_History_Total_Old=Sel_Positions_History_Total; //0:@KBK5 ?>78F88 >B>1@0==K5
//----- =:@5<5=B AG5BG8:0 :>;>=>:
nColo++;
}}//if(PositionsHistoryView)
//----- !?8A>: >B:@KBKE >B;>65==KE >@45@>2
{if(OrdersView)
{
Orders_Total=OrdersTotal(); //"5:CI85 ;8<8B=K5 >@45@0
Sel_Orders_Total=CalcOrdersTotal(inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick); //"5:CI85 ;8<8B=K5 >@45@0 >B>1@0==K5
{if(Sel_Orders_Total!=Sel_Orders_Total_Old) //5@5AG5B - ?5@5@8A>2:0 ?@8 87<5=5=88 :>;8G5AB20
{
DeleteColo("LIO",Orders_Total_Old); //>;>=:0 >@45@>2
CreateColo("LIO",ColoStep*nColo,Orders_Total);
}}//if(Sel_Orders_Total!=Sel_Orders_Total_Old)
MoveColoLabel("LIO",ColoStep*nColo,"Order="+IntegerToString(Sel_Orders_Total)+"/"+IntegerToString(Orders_Total));//03>;>2>: :>;>=:8
//-----
{if(Orders_Total>=0)
{
nRow=0;
CopyTime(TheSymbol,PERIOD_CURRENT,(nFirstBar-(int)((ColoStep*nColo+ColoShift)*kScale)),1,gTime);
{for(int i=Orders_Total-1;i>=0;i--)
{
sTXW="LIO_"+IntegerToString(i); //#AB0=02;8205< 8<O 4;O B5:cB>2>3> >1J5:B0
ObjectSetString(0,sTXW,OBJPROP_TEXT," "); //1=C;5=85 AB@>:8 2K2>40
ulong Ord_Tick=OrderGetTicket(i); //K18@05< >@45@ ?> =><5@C 2 A?8A:5
{if(Ord_Tick<=0){continue;}} //5C40G=> - A;54CNI89
{if(!CheckSym(OrderGetString(ORDER_SYMBOL),inSelectSym,inEliminatSym,SelSym)){continue;}}//5 B>B A8<2>; - A;54CNI89
{if(!CheckMag(OrderGetInteger(ORDER_MAGIC),inSelectMag,inEliminatMag,SelMag)){continue;}}//@>25@:0 A>>B25BAB28O <038:0 <>45;8 ?> :@8B5@8N 2K1>@0
{if(!CheckTick(OrderGetInteger(ORDER_TICKET),inSelectTick,inEliminatTick,SelTick)){continue;}}//@>25@:0 A>>B25BAB28O B8:5B0 <>45;8 ?> :@8B5@8N 2K1>@0
ENUM_ORDER_TYPE OrdType=(ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE);
TypeStringOrd=EnumToString(OrdType);
StringReplace(TypeStringOrd,"ORDER_TYPE_","");
DataStringOrd= " "+
IntegerToString(i)+"."+
OrderGetString(ORDER_SYMBOL)+" "+
TypeStringOrd+" ["+
IntegerToString(Ord_Tick)+"-"+
IntegerToString(OrderGetInteger(ORDER_MAGIC))+"-"+
DoubleToString(OrderGetDouble(ORDER_VOLUME_CURRENT),2)+"-"+
DoubleToString(OrderGetDouble(ORDER_PRICE_OPEN),(int)SymbolInfoInteger(OrderGetString(ORDER_SYMBOL),SYMBOL_DIGITS))+"]"+
"";
ResetLastError();
{if(!ObjectSetInteger(
0, //45=B8D8:0B>@ G0@B0
sTXW, //<O >1J5:B0
OBJPROP_TIME, //7<5=O5< :>>@48=0BC 2@5<5=8 >1J5:B0
gTime[0]
))
{
Print("ObjectSetInteger1 Error=",GetLastError());
continue;
}}//if(!ObjectSetInteger(...
ResetLastError();
{if(!ObjectSetDouble(
0, //45=B8D8:0B>@ G0@B0
sTXW, //<O >1J5:B0
OBJPROP_PRICE, //7<5=O5< :>>@48=0BC F5=K >1J5:B0
IndHeigh-11*(nRow+1)
))
{
Print("ObjectSetDouble1 Error=",GetLastError());
continue;
}else{
nRow++;
}}//if(!ObjectSetDouble(...
ObjectSetString(0,sTXW,OBJPROP_TEXT,DataStringOrd+"");
}}//for(int i=Orders_Total-1;i>=0;i--)
}}//if(Orders_Total>=0)
//----- 0?><=8< B5:CI85 AG5BG8:8
Orders_Total_Old=Orders_Total; //"5:CI85 ;8<8B=K5 >@45@0
Sel_Orders_Total_Old=Sel_Orders_Total; //"5:CI85 ;8<8B=K5 >@45@0 >B>1@0==K5
//----- =:@5<5=B AG5BG8:0 :>;>=>:
nColo++;
}}//if(OrdersView)
//----- !?8A>: >@45@>2 2 8AB>@88
{if(OrdersHistoryView)
{
Orders_History_Total=HistoryOrdersTotal(); //0:@KBK5 @K=>G=K5 >@45@0
Sel_Orders_History_Total=CalcHistoryOrdersTotal(inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick);//0:@KBK5 @K=>G=K5 >@45@0 >B>1@0==K5
{if(Sel_Orders_History_Total!=Sel_Orders_History_Total_Old)//5@5AG5B - ?5@5@8A>2:0 ?@8 87<5=5=88 :>;8G5AB20
{
DeleteColo("LHO",Orders_History_Total_Old); //>;>=:0 8AB>@88 >@45@>2
CreateColo("LHO",ColoStep*nColo,Orders_History_Total);
}}//if(Sel_History_Orders_Total!=Sel_History_Orders_Total_Old)
MoveColoLabel("LHO",ColoStep*nColo,"History Order="+IntegerToString(Sel_Orders_History_Total)+"/"+IntegerToString(Orders_History_Total));//03>;>2>: :>;>=:8
//-----
{if(Orders_History_Total>=0)
{
nRow=0;
CopyTime(TheSymbol,PERIOD_CURRENT,(nFirstBar-(int)((ColoStep*nColo+ColoShift)*kScale)),1,gTime);
{for(int i=Orders_History_Total-1;i>=0;i--)
{
sTXW="LHO_"+IntegerToString(i); //#AB0=02;8205< 8<O 4;O B5:cB>2>3> >1J5:B0
ObjectSetString(0,sTXW,OBJPROP_TEXT," "); //1=C;5=85 AB@>:8 2K2>40
ulong Ord_Tick=HistoryOrderGetTicket(i); //K18@05< >@45@ ?> =><5@C 2 A?8A:5
{if(Ord_Tick<=0){continue;}} //5C40G=> - A;54CNI89
{if(!CheckSym(HistoryOrderGetString(Ord_Tick,ORDER_SYMBOL),inSelectSym,inEliminatSym,SelSym)){continue;}}//5 B>B A8<2>; - A;54CNI89
{if(!CheckMag(HistoryOrderGetInteger(Ord_Tick,ORDER_MAGIC),inSelectMag,inEliminatMag,SelMag)){continue;}}//@>25@:0 A>>B25BAB28O <038:0 <>45;8 ?> :@8B5@8N 2K1>@0
{if(!CheckTick(HistoryOrderGetInteger(Ord_Tick,ORDER_TICKET),inSelectTick,inEliminatTick,SelTick)){continue;}}//@>25@:0 A>>B25BAB28O B8:5B0 <>45;8 ?> :@8B5@8N 2K1>@0
ENUM_ORDER_TYPE OrdType=(ENUM_ORDER_TYPE)HistoryOrderGetInteger(Ord_Tick,ORDER_TYPE);
TypeStringOrd=EnumToString(OrdType);
StringReplace(TypeStringOrd,"ORDER_TYPE_","");
DataStringOrd= " "+
IntegerToString(i)+"."+
HistoryOrderGetString(Ord_Tick,ORDER_SYMBOL)+" "+
TypeStringOrd+" ["+
IntegerToString(Ord_Tick)+"-"+
IntegerToString(HistoryOrderGetInteger(Ord_Tick,ORDER_MAGIC))+"-"+
DoubleToString(HistoryOrderGetDouble(Ord_Tick,ORDER_VOLUME_INITIAL),2)+"-"+
DoubleToString(HistoryOrderGetDouble(Ord_Tick,ORDER_PRICE_OPEN),
(int)SymbolInfoInteger(HistoryOrderGetString(Ord_Tick,ORDER_SYMBOL),SYMBOL_DIGITS))+"]"+
"";
ResetLastError();
{if(!ObjectSetInteger(
0, //45=B8D8:0B>@ G0@B0
sTXW, //<O >1J5:B0
OBJPROP_TIME, //7<5=O5< :>>@48=0BC 2@5<5=8 >1J5:B0
gTime[0]
))
{
Print("ObjectSetInteger2 Error=",GetLastError());
continue;
}}//if(!ObjectSetInteger(...
ResetLastError();
{if(!ObjectSetDouble(
0, //45=B8D8:0B>@ G0@B0
sTXW, //<O >1J5:B0
OBJPROP_PRICE, //7<5=O5< :>>@48=0BC F5=K >1J5:B0
IndHeigh-11*(nRow+1)
))
{
Print("ObjectSetDouble2 Error=",GetLastError());
continue;
}else{
nRow++;
}}//if(!ObjectSetDouble(...
ObjectSetString(0,sTXW,OBJPROP_TEXT,DataStringOrd+"");
}}//for(int i=History_Orders_Total-1;i>=0;i--)
}}//if(History_Orders_Total>=0)
//----- 0?><=8< B5:CI85 AG5BG8:8
Orders_History_Total_Old=Orders_History_Total; //0:@KBK5 @K=>G=K5 >@45@0
Sel_Orders_History_Total_Old=Sel_Orders_History_Total; //0:@KBK5 @K=>G=K5 >@45@0 >B>1@0==K5
//----- =:@5<5=B AG5BG8:0 :>;>=>:
nColo++;
}}//if(OrdersHistoryView)
//----- !?8A>: A45;>: 2 8AB>@88
{if(DealsHistoryView)
{
Deals_History_Total=HistoryDealsTotal(); //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0)
Sel_Deals_History_Total=CalcHistoryDealsTotal(inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick);//!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0) >B>1@0==K5
{if(Sel_Deals_History_Total!=Sel_Deals_History_Total_Old)//5@5AG5B - ?5@5@8A>2:0 ?@8 87<5=5=88 :>;8G5AB20
{
DeleteColo("LHD",Deals_History_Total_Old); //>;>=:0 8AB>@88 ?>78F89
CreateColo("LHD",ColoStep*nColo,Deals_History_Total);
}}//if(Sel_History_Deals_Total!=Sel_History_Deals_Total_Old)
MoveColoLabel( "LHD",
ColoStep*nColo,
"History Dial="+
IntegerToString(Sel_Deals_History_Total)+"/"+
IntegerToString(Deals_History_Total)+
((SummView)
?(" ="+DoubleToString(CalcHistoryDealsSumm( inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick),2)+" ")
:(""))+
""
);//03>;>2>: :>;>=:8
//-----
{if(Deals_History_Total>=0)
{
nRow=0;
CopyTime(TheSymbol,PERIOD_CURRENT,(nFirstBar-(int)((ColoStep*nColo+ColoShift)*kScale)),1,gTime);
{for(int i=Deals_History_Total-1;i>=0;i--)
{
sTXW="LHD_"+IntegerToString(i); //#AB0=02;8205< 8<O 4;O B5:cB>2>3> >1J5:B0
ObjectSetString(0,sTXW,OBJPROP_TEXT," "); //1=C;5=85 AB@>:8 2K2>40
ulong Deal_Tick=HistoryDealGetTicket(i); //K18@05< >@45@ ?> =><5@C 2 A?8A:5
{if(Deal_Tick<=0){continue;}} //5C40G=> - A;54CNI89
{if(!CheckSym(HistoryDealGetString(Deal_Tick,DEAL_SYMBOL),inSelectSym,inEliminatSym,SelSym)){continue;}}//5 B>B A8<2>; - A;54CNI89
{if(!CheckMag(HistoryDealGetInteger(Deal_Tick,DEAL_MAGIC),inSelectMag,inEliminatMag,SelMag)){continue;}}//@>25@:0 A>>B25BAB28O <038:0 <>45;8 ?> :@8B5@8N 2K1>@0
{if(!CheckTick(HistoryDealGetInteger(Deal_Tick,DEAL_TICKET),inSelectTick,inEliminatTick,SelTick)){continue;}}//@>25@:0 A>>B25BAB28O B8:5B0 <>45;8 ?> :@8B5@8N 2K1>@0
ENUM_DEAL_TYPE DealType=(ENUM_DEAL_TYPE)HistoryDealGetInteger(Deal_Tick,DEAL_TYPE);
DealTypeString=EnumToString(DealType);
StringReplace(DealTypeString,"DEAL_TYPE_","");
DataStringDeal= " "+
IntegerToString(i)+"."+
HistoryDealGetString(Deal_Tick,DEAL_SYMBOL)+" "+
DealTypeString+" ["+
IntegerToString(Deal_Tick)+"-"+
IntegerToString(HistoryDealGetInteger(Deal_Tick,DEAL_MAGIC))+"-"+
DoubleToString(HistoryDealGetDouble(Deal_Tick,DEAL_VOLUME),2)+"-"+
DoubleToString(HistoryDealGetDouble(Deal_Tick,DEAL_PRICE),
(int)SymbolInfoInteger(HistoryDealGetString(Deal_Tick,DEAL_SYMBOL),SYMBOL_DIGITS))+"]="+
DoubleToString(HistoryDealGetDouble(Deal_Tick,DEAL_PROFIT),2)+" "+
IntegerToString(HistoryDealGetInteger(Deal_Tick,DEAL_POSITION_ID))+" "+ //45=B8D8:0B>@ ?>78F88, 2 >B:@KB88, 87<5=5=88 8;8 70:@KB88 :>B>@>9 CG0AB2>20;0 MB0 A45;:0.
"";
ResetLastError();
{if(!ObjectSetInteger(
0, //45=B8D8:0B>@ G0@B0
sTXW, //<O >1J5:B0
OBJPROP_TIME, //7<5=O5< :>>@48=0BC 2@5<5=8 >1J5:B0
gTime[0]
))
{
Print("ObjectSetInteger3 Error=",GetLastError());
continue;
}}//if(!ObjectSetInteger(...
ResetLastError();
{if(!ObjectSetDouble(
0, //45=B8D8:0B>@ G0@B0
sTXW, //<O >1J5:B0
OBJPROP_PRICE, //7<5=O5< :>>@48=0BC F5=K >1J5:B0
IndHeigh-11*(nRow+1)
))
{
Print("ObjectSetDouble3 Error=",GetLastError());
continue;
}else{
nRow++;
}}//if(!ObjectSetDouble(...
ObjectSetString(0,sTXW,OBJPROP_TEXT,DataStringDeal+"");
}}//for(int i=History_Deals_Total-1;i>=0;i--)
}}//if(History_Deals_Total>=0)
//----- 0?><=8< B5:CI85 AG5BG8:8
Deals_History_Total_Old=Deals_History_Total; //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0)
Sel_Deals_History_Total_Old=Sel_Deals_History_Total; //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0) >B>1@0==K5
//----- =:@5<5=B AG5BG8:0 :>;>=>:
nColo++;
}}//if(DealsHistoryView)
//----- $>@<8@C5< AB@>:C :><<5=B0@8O =0 G0@B5
{if(CommentView)
{
CommentLine[0]=""+
"PositionsTotal="+IntegerToString(Positions_Total)+" "+
"OrdersTotal="+IntegerToString(Orders_Total)+" "+
"";
CommentLine[1]=""+
"PositionsHistoryTotal="+IntegerToString(Positions_History_Total)+" "+
"OrdersHistoryTotal="+IntegerToString(Orders_History_Total)+" "+
"DealsHistoryTotal="+IntegerToString(Deals_History_Total)+" "+
"";
Comment( CommentLine[0]+" "+CommentLine[1]+" "+
(string)(datetime)(TimeCurrent()-ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0)*PeriodSeconds(PERIOD_CURRENT))+" "+
_n+"Ticks>>"+IntegerToString(gnTick)+" Tims>>"+IntegerToString(gnTimer));
}}//if(CommentView)
//----- 5@5@8A>2:0 G0@B0
ChartRedraw();
//-----
return;
}//On_Tick()
//
//============================================================================================= MQL5 ===
// On_Timer - 1@01>B:0 A>1KB89 ?> B09<5@C
//------------------------------------------------------------------------------------------------------
void On_Timer()
{
//-----
gnTimer++;
{if(gnTimer>4294967000)
{
gnTimer=100;
}}//if(gnTimer>4294967000)
gInTimer=true;
On_Tick();
}//On_Timer()