LIP/Arch/RU/LIP_v01.005/Include/LIP_Man_5_v1.005.mqh

911 lines
99 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 15:03:51 +02:00
<EFBFBD><EFBFBD>//============================================================================================= MQL5 ===
// LibreInfoPDO Main_5 v1.005 MQL5
// >4C;L >1@01>B:8 A>1KB89
// LibreCoin (c)2014-2017
//======================================================================================================
#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.005.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< =5>1E>48<>ABL 8A?>;L7>20=8O 3@0D8:8
GraphUse=( false //"CB =04> ?@>25@8BL :0:>9 @568< A :0:8< A>2<5AB8<
|| ((!MQLInfoInteger(MQL_TESTER))&&(!MQLInfoInteger(MQL_OPTIMIZATION))) //5 B5AB8@>20=85 8 =5 >?B8<870F8O
|| (MQLInfoInteger(MQL_VISUAL_MODE)) //8;8 287C0;L=K9 @568<
);
//GraphUse=true;
//----- ?@545;O5< 8<O ?@>3@0<<K
ProgramName=MQLInfoString(MQL_PROGRAM_NAME);
////----- K1>@ 8=48:0B>@>2 4;O A83=0;>2 >B:@KB8O 8 70:@KB8O - @01>B05B => 4C1;8@C5B ADXW
// int LastError=0;
// {if((!GraphUse)&&((OpenMethod==Open_ADXW)||(CloseProfitMethod==CloseProfit_ADXW)||(CloseLossMethod==CloseLoss_ADXW)))
// {
// ResetLastError();
// adxw_handle=iCustom( TheSymbol,
// PERIOD_CURRENT,
// "Projects\\Indicatores\\MQ5\\ADX\\adxw_zat_117.ex5",
// //----- Input parameters
// aInpPeriodADXW, //Period
// aInpMethodADXW, //Method (MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA)
// aSSCBaseMode, //>@@ (0..3)-(off/spread/close/midHLC)
// aInpFastPeriodEMA, //Fast EMA period
// aInpSlowPeriodEMA, //Slow EMA period
// aDICalcMode, //DICalcMode(0..8)-(hi/low/mahl/mihl/suhl/isuhl/imahl/imihl)
// //----- 0@0<5B@K A1@>A0 B5=45=F88
// adDI, //;O +-DI 2 4>;OE >B (<0:A-AB0@B)
// adActiv, //;O :B82=>AB8 ((+DI)+(-DI)) 2 4>;OE >B <0:A8<0;L=>9
// adDelta, //;O 5;LBK ((+DI)-(-DI)) 2 4>;OE >B <0:A8<0;L=>9
// //----- Levels
// aL0, //L0 ADXOpenLvl
// aL1, //L1 ADXOpenLvlMax
// aL2, //L2 ADXCloseLvl
// aL3, //L3 ADXReversLvl
// aL4, //L4 ADXReversLvlMax
// //----- Scale
// aScaleMax //ScaleMax
// );
// LastError=GetLastError();
// {if(LastError!=0)
// {
// Print("LIP: adxw_handle = ",adxw_handle," error = ",LastError);
// }}//if(LastError!=0)
// {if((GraphUse)&&(!ChartIndicatorAdd(ChartID(),(int)ChartGetInteger(ChartID(),CHART_WINDOWS_TOTAL),adxw_handle)))
// {
// Print("LIP: 5 4>102;5= adxw_zat_117!!!");
// }}//if((GraphUse)&&(!ChartIndicatorAdd(0,(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL),adxw_handle)))
// }}//if((!GraphUse)&&((OpenMethod==Open_ADXW)||(CloseProfitMethod==CloseProfit_ADXW)||(CloseLossMethod==CloseLoss_ADXW)))
////----- 72;5:05< E5=4; ADXW 87 3;>10;L=>9 ?5@5<5==>9 - =5 ?@>E>48B!
//int LastError=0;
//{if((OpenMethod==Open_ADXW)||(CloseProfitMethod==CloseProfit_ADXW)||(CloseLossMethod==CloseLoss_ADXW))
//{
// ulong adxw_handle_tmp=0;
// {if(!GlobalGetUlong("LIP_"+TheSymbol+"_ADXW",adxw_handle_tmp))
// {
// //{if(LastError!=0)
// //{
// // Print("LIP: adxw_handle = ",adxw_handle_tmp," error = ",LastError);
// //}}//if(LastError!=0)
// return(INIT_FAILED);
// }}//if(!GlobalGetUlong("LIP_"+TheSymbol+"_ADXW",adxw_handle_tmp))
// Print("LIP: adxw_handle = ",adxw_handle_tmp," error = ",LastError);
// adxw_handle=int(adxw_handle_tmp);
// ResetLastError();
// {if(!ChartIndicatorAdd(0,(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL),adxw_handle))
// {
// LastError=GetLastError();
// Print("LIP: 5 4>102;5= adxw_zat_117!!!"," error = ",LastError);
// return(INIT_FAILED);
// }}//if(!ChartIndicatorAdd(0,(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL),adxw_handle))
//}}//if((OpenMethod==Open_ADXW)||(CloseProfitMethod==CloseProfit_ADXW)||(CloseLossMethod==CloseLoss_ADXW))
//----- 72;5:05< ChartID 87 3;>10;L=>9 ?5@5<5==>9 - =5 ?@>E>48B!
//----- I5< C65 @0725@=CBK9 ADXW
//----- 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();
//DoItCommand=false;
//----- 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("LIP: 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
{if(GraphUse)
{
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));
}}//if(GraphUse)
//----- 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("LIP: 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
{if(GraphUse)
{
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
}}//if(GraphUse)
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(HistoryOrdersView)
{
History_Orders_Total=HistoryOrdersTotal(); //0:@KBK5 @K=>G=K5 >@45@0
Sel_History_Orders_Total=CalcHistoryOrdersTotal(inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick);//0:@KBK5 @K=>G=K5 >@45@0 >B>1@0==K5
{if(GraphUse)
{
CreateColoLabel("LHO",ColoStep*nColo,
"History_Order="+IntegerToString(Sel_History_Orders_Total)+"/"+IntegerToString(History_Orders_Total));//!>740Q< 3@0D8G5A:89 >1J5:B 703>;>2:0 :>;>=:8
CreateColo("LHO",ColoStep*nColo,History_Orders_Total); //!>740Q< 3@0D8G5A:89 >1J5:B 4;O :>;>=:8 >@45@>2 2 8AB>@88
}}//if(GraphUse)
History_Orders_Total_Old=History_Orders_Total; //0:@KBK5 @K=>G=K5 >@45@0 2 1CD5@
Sel_History_Orders_Total_Old=Sel_History_Orders_Total; //0:@KBK5 @K=>G=K5 >@45@0 >B>1@0==K5 2 1CD5@
nColo++;
}}//if(HistoryOrdersView)
//----- !45;:8 2 8AB>@88
{if(HistoryDealsView)
{
History_Deals_Total=HistoryDealsTotal(); //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0)
Sel_History_Deals_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(GraphUse)
{
CreateColoLabel("LHD",ColoStep*nColo,
"History_Deal="+IntegerToString(Sel_History_Deals_Total)+"/"+IntegerToString(History_Deals_Total));//!>740Q< 3@0D8G5A:89 >1J5:B 703>;>2:0 :>;>=:8
CreateColo("LHD",ColoStep*nColo,History_Deals_Total); //!>740Q< 3@0D8G5A:89 >1J5:B 4;O :>;>=:8 A45;>: 2 8AB>@88
}}//if(GraphUse)
History_Deals_Total_Old=History_Deals_Total; //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0) 2 1CD5@
Sel_History_Deals_Total_Old=Sel_History_Deals_Total; //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0) >B>1@0==K5 2 1CD5@
nColo++;
}}//if(HistoryDealsView)
//----- 1=C;5=85 3;>10;L=KE ?5@5<5==KE
datetime TimeSet=0;
{for(int i=1;i<=3;i++)//5@51>@ B8?>2 ><0=4
{
{for(int j=0;j<=1;j++)//5@51>@ B8?>2 >78F89
{
BuseInd[(int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)]=0; //A2>1>6405< :0=0; BuseInd_N=0 ?> 40==K< B8?0< :><0=4 8 ?>78F89
GlobalSetUlong("LIP_"+TheSymbol+"_Command_"+IntegerToString(CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)),TimeSet,0);//!1@0AK205< :><0=4K Command_N=0
GlobalSetUlong("LIP_"+TheSymbol+"_Ready_"+IntegerToString(CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)),TimeSet,1); //#AB0=02;8205< D;038 7025@H5=8O Ready_N=1
}}//for(int j=0;i<=1;i++)
}}//for(int i=1;i<=2;i++)
//-----
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("LIP: Abort loading indicator: ",ProgramName);
ChartIndicatorDelete(0,ChartWindowFind(0,ProgramName),ProgramName);
}}//if((ChartWindowFind(0,IndicatorShortName)>=0)&&(ChartWindowFind(0,ProgramName)>=0))
//-----
//{if(!gInTimer)
//{
gnTick++;
// gInTimer=false;
//}}//if(!InTimer)
{if(gnTick>4294967000)
{
gnTick=100;
}}//if(gnTick>4294967000)
//----- ?@545;O5< ?0@0<5B@K ?0@0;;5;L=>3> 8=48:0B>@0
!!!
{if((ParallelIndicatorHandle<0)&&(GlobalVariableGet("IndCalc"+Par_03)>0.0))
{
Print(ThisID+": OnCalculate(): ParallelInicatorName=",ParallelInicatorName," ChartID()=",ChartID());
//?@545;O5< E5=4; ?0@0;;5;L=>3> 8=48:0B>@0
ParallelIndicatorHandle=ChartIndicatorGet(ChartID(),ChartWindowFind(ChartID(),ParallelInicatorName),ParallelInicatorName);
{if(ParallelIndicatorHandle>0)
{
Print(ThisID+": OnCalculate(): SEARCH_OK ParallelIndicatorHandle="+IntegerToString(ParallelIndicatorHandle));
}else{
Print(ThisID+": OnCalculate(): SEARCH_FAILED ParallelIndicatorHandle="+IntegerToString(ParallelIndicatorHandle));
return(rates_total);
}}//if(ParallelIndicatorHandle<0)
//<O ?0@0;;5;L=>3> 8=48:0B>@0 ?> E5=4;C
ParallelInicatorName="";
IndicatorName_Search_Handle(ParallelIndicatorHandle,ParallelInicatorName);
Print(ThisID+": OnCalculate(): Handle Base ParallelInicatorName="+ParallelInicatorName);
}}//if(ParallelIndicatorHandle<0)
//----- #AB0=>2:0 8 @0AG5B ?0@0<5B@>2 >:=0 8=48:0B>@0
{if(GraphUse)
{
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));
}}//if(GraphUse)
//----- 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("LIP: 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)&&(GraphUse))
{
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("LIP: 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("LIP: 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>: >B:@KBKE >B;>65==KE >@45@>2
{if((OrdersView)&&(GraphUse))
{
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("LIP: 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("LIP: 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((HistoryOrdersView)&&(GraphUse))
{
History_Orders_Total=HistoryOrdersTotal(); //0:@KBK5 @K=>G=K5 >@45@0
Sel_History_Orders_Total=CalcHistoryOrdersTotal(inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick);//0:@KBK5 @K=>G=K5 >@45@0 >B>1@0==K5
{if(Sel_History_Orders_Total!=Sel_History_Orders_Total_Old)//5@5AG5B - ?5@5@8A>2:0 ?@8 87<5=5=88 :>;8G5AB20
{
DeleteColo("LHO",History_Orders_Total_Old); //>;>=:0 8AB>@88 >@45@>2
CreateColo("LHO",ColoStep*nColo,History_Orders_Total);
}}//if(Sel_History_Orders_Total!=Sel_History_Orders_Total_Old)
MoveColoLabel("LHO",ColoStep*nColo,"History Order="+IntegerToString(Sel_History_Orders_Total)+"/"+IntegerToString(History_Orders_Total));//03>;>2>: :>;>=:8
//-----
{if(History_Orders_Total>=0)
{
nRow=0;
CopyTime(TheSymbol,PERIOD_CURRENT,(nFirstBar-(int)((ColoStep*nColo+ColoShift)*kScale)),1,gTime);
{for(int i=History_Orders_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("LIP: 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("LIP: 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
History_Orders_Total_Old=History_Orders_Total; //0:@KBK5 @K=>G=K5 >@45@0
Sel_History_Orders_Total_Old=Sel_History_Orders_Total; //0:@KBK5 @K=>G=K5 >@45@0 >B>1@0==K5
//----- =:@5<5=B AG5BG8:0 :>;>=>:
nColo++;
}}//if(HistoryOrdersView)
//----- !?8A>: A45;>: 2 8AB>@88
{if((HistoryDealsView)&&(GraphUse))
{
History_Deals_Total=HistoryDealsTotal(); //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0)
Sel_History_Deals_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_History_Deals_Total!=Sel_History_Deals_Total_Old)//5@5AG5B - ?5@5@8A>2:0 ?@8 87<5=5=88 :>;8G5AB20
{
DeleteColo("LHD",History_Deals_Total_Old); //>;>=:0 8AB>@88 ?>78F89
CreateColo("LHD",ColoStep*nColo,History_Deals_Total);
}}//if(Sel_History_Deals_Total!=Sel_History_Deals_Total_Old)
MoveColoLabel( "LHD",
ColoStep*nColo,
"History Dial="+
IntegerToString(Sel_History_Deals_Total)+"/"+
IntegerToString(History_Deals_Total)+
((SummView)
?(" ="+DoubleToString(CalcHistoryDealsSumm( inSelectSym,inEliminatSym,SelSym,
inSelectMag,inEliminatMag,SelMag,
inSelectTick,inEliminatTick,SelTick),2)+" ")
:(""))+
""
);//03>;>2>: :>;>=:8
//-----
{if(History_Deals_Total>=0)
{
nRow=0;
CopyTime(TheSymbol,PERIOD_CURRENT,(nFirstBar-(int)((ColoStep*nColo+ColoShift)*kScale)),1,gTime);
{for(int i=History_Deals_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);
TypeStringDeal=EnumToString(DealType);
StringReplace(TypeStringDeal,"DEAL_TYPE_","");
DataStringDeal= " "+
IntegerToString(i)+"."+
HistoryDealGetString(Deal_Tick,DEAL_SYMBOL)+" "+
TypeStringDeal+" ["+
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)+" "+
"";
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("LIP: 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("LIP: 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
History_Deals_Total_Old=History_Deals_Total; //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0)
Sel_History_Deals_Total_Old=Sel_History_Deals_Total; //!>25@H5==K5 A45;:8 (2K?>;=5==K5 >@45@0) >B>1@0==K5
//----- =:@5<5=B AG5BG8:0 :>;>=>:
nColo++;
}}//if(HistoryDealsView)
//----- $>@<8@C5< AB@>:C :><<5=B0@8O =0 G0@B5
{if((CommentView)&&(GraphUse))
{
CommentLine[0]=""+
"PositionsTotal="+IntegerToString(Positions_Total)+" "+
"OrdersTotal="+IntegerToString(Orders_Total)+" "+
"";
CommentLine[1]=""+
"HistoryOrdersTotal="+IntegerToString(History_Orders_Total)+" "+
"HistoryDealsTotal="+IntegerToString(History_Deals_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
{if(GraphUse){ChartRedraw();}}
//----- ;>: 4;O ?@>25@:8 >1<5=0 A A>25B=8:><
//@>B>:>; >1<5=0 <564C 8=48:0B>@>< 8 A>25B=8:><, 4;O ?5@540G8 :><0=4 =0 >B:@KB85-70:@KB85 ?>78F89 87 8=48:0B>@0 2 A>25B=8:.
//;>10;L=> (3;>10;L=K5 ?5@5<5==K5)
//5@5<5==K5:
//Ready_N - ?@87=0: 7025@H5=8O :><0=4K (87=0G0;L=> CAB0=>2;5=).
// A?>;L7C5BAO 3;>10;L=>, GB>1K >BA;56820BL 7025@H5=85 :><0=4K.
//Command_N - 8=8F80B>@ 2K?>;=5=8O :><0=4K (87=0G0;L=> A1@>H5=).
// A?>;L7C5BAO 3;>10;L=>, GB>1K 8=8F88@>20BL 2K?>;=5=85 :><0=4K.
//0 8=48:0B>@5 (?5@5<5==K5 8=48:0B>@0):
//5@5<5==K5:
//BuseInd_N - :0=0; 70=OB, CAB0=02;8205BAO ?5@54 >B?@02:>9 :><0=4K, A=8<05BAO ?>A;5 ?>4B25@645=8O 2K?>;=5=8O :><0=4K (87=0G0;L=> A1@>H5=).
// A?>;L7C5BAO 2 8=48:0B>@5 (2=CB@5==OO), GB>1K =5 2K4020BL =>2CN :><0=4C 4> 30@0=B8@>20==>3> 7025@H5=8O >1@01>B:8 ?@54K4CI59.
//1. &8:; 8=8F80F88 :><0=4. 5@518@05< 2A5 :><0=4K >B 1 4> N. ;O :064>9:
// 1.1. A;8 :0=0; A2>1>45= BuseInd_N=0, B> 2K?>;=O5<:
// 1.1.1. A;8 A>1;N405BAO CA;>285 2K?>;=5=8O :><0=4K N: (=0;8G85 A83=0;0 =0 :><0=4C N), B> 2K?>;=O5<:
// 1.1.1.1. #AB0=02;8205BAO D;03 70=OB> BuseInd_N=1 (:0=0; :><0=4K N 70=OB, =>2K5 459AB28O =5 8=8F88@CNBAO)
// 1.1.1.2. !1@0AK205BAO D;03 7025@H5=8O Ready_N=0 4;O ?5@5<5==>9 Ready_N (:><0=40 N =5 2K?>;=5=0) (87=0G0;L=> 2A5 MB8 D;038 CAB0=>2;5=K)
// 1.1.1.3. KAB02;O5BAO :><0=40 Command_N=N 4;O ?5@5<5==>9 Command_N (2K?>;=8BL :><0=4C N)
// // @57C;LB0B5 4>;6=> 1KBL: Ready_N=0 (A1@>H5=> 8=48:0B>@><), Command_N=N (CAB0=>2;5=> 8=48:0B>@><), BuseInd_N=1 (CAB0=>2;5=> 8=48:0B>@><)
//2. &8:; ?@>25@:8 2K?>;=5=8O. 5@518@05< 2A5 :><0=4K >B 1 4> N. ;O :064>9:
// 2.1. A;8 :0=0; 70=OB Buse_N=1, B> 2K?>;=O5<:
// 2.1.1. @>25@:0 2K?>;=5=8O: 5A;8 2K?>;=5=> (>1=0@C65= D;03 7025@H5=8O Ready_N=1 4;O :><0=4K N), B> 2K?>;=O5<: //B09<0CB - ?>:0 =5 @0AA<0B@8205<
// 2.1.1.1. A2>1>645=85 :0=0;0: !1@>A D;030 70=OB> Buse_N=0 (:0=0; :><0=4K N A2>1>45=, =>2K5 459AB28O 4>?CAB8<K) //B09<0CB - @0AA<>B@5BL >B45;L=>
// // @57C;LB0B5 4>;6=> 1KBL: Ready_N=1 (CAB0=>2;5=> A>25B=8:><), Command_N=0 (A1@>H5=> A>25B=8><), BuseInd_N=0 (A1@>H5=> 8=48:0B>@><)
//0 A>25B=8:5 (?5@5<5==K5 A>25B=8:0):
//5@5<5==K5:
//ReadyExp_N - 2=CB@5==89 D;03 2K?>;=5=8O :><0=4K N (87=0G0;L=> A1@>H5=)
// A?>;L7C5BAO 2 A>25B=8:5 (2=CB@5==OO), GB>1K >BA;56820BL 7025@H5=85 :><0=4K.
//1. &8:; ?@>25@:8 7040=89 8 ?>AB0=>2:8 =0 2K?>;=5=85. 5@518@05< 2A5 :><0=4K >B 1 4> N. ;O :064>9:
// //1.0. A;8 :0=0; 70=OB BuseInd_N=1, - =5 8A?>;L7C5< 81> 8A?>;L7C5BAO 2 8=48:0B>@5, GB>1K =5 2K4020BL =>2CN :><0=4C 4> >:>=G0=8O >1@01>B:8 ?@54K4CI59.
// 1.1. A;8 >1=0@C65=0 :><0=40 N: Command_N=N, B> 2K?>;=O5<:
// 1.1.1. A;8 A=OB D;03 7025@H5=8O Ready_N=0, B> 2K?>;=O5<:
// 1.1.1.1. !1@0AK205< :><0=4C Command_N=0
// 1.1.1.2. !1@0AK205< 4;O A>25B=8:0 2=CB@5==89 D;03 7025@H5=8O :><0=4K N: ReadyExp_N=0; (87=0G0;L=> 2A5 MB8 D;038 A1@>H5=K, => =0 2AO:89)
// 1.1.1.3. 0?CA:05< :><0=4C =0 2K?>;=5=85 (?>A;5 2K?>;=5=8O :><0=4K 4>;65= 1KBL CAB0=>2;5= 2=CB@5==89 D;03 2K?>;=5=8O :><0=4K N: ReadyExp_N=0;
// // @57C;LB0B5 4>;6=> 1KBL: Ready_N=0 (A1@>H5=> 8=48:0B>@><), Command_N=0 (A1@>H5=> A>25B=8><), ReadyExp_N=0??? (A1@>H5=> A>25B=8:><)
// //!8BC0F8O Ready_N=0 + Command_N=0, 3>2>@8B > B><, GB> :><0=40 70?CI5=0 =0 2K?>;=5=85, => 5IQ =5 2K?>;=5=0.
//2. &8:; ?@>25@:8 2K?>;=5=8O. 5@518@05< 2A5 :><0=4K >B 1 4> N. ;O :064>9:
// 2.1. A;8 CAB0=>2;5= 2=CB@5==89 D;03 7025@H5=8O :><0=4K N: ReadyExp_N=1, B> 2K?>;=O5<:
// 2.1.1. #AB0=02;8205BAO D;03 7025@H5=8O Ready_N=1 4;O ?5@5<5==>9 Ready_N (:><0=40 N 2K?>;=5=0)
// 2.1.2. !1@0AK205< 4;O A>25B=8:0 2=CB@5==89 D;03 7025@H5=8O :><0=4K N: ReadyExp_N=0;
// // @57C;LB0B5 4>;6=> 1KBL: Ready_N=1 (CAB0=>2;5=> A>25B=8:><), Command_N=0 (A1@>H5=> A>25B=8><), ReadyExp_N=0 (A1@>H5=> A>25B=8:><)
//
//>1028BL D;03 >H81:8
//
//=0;8B8:0 ?@8 >B?@02:5 :><0=4K 2 A>25B=8:
//1. AE:
// $;03 >1@0B=>9 A2O78 - A1@0AK205BAO ?5@540NI59 AB>@>=>9 ?@8 >B?@02:5 :><0=4K, 2KAB02;O5BAO ?@8=8<0NI59 AB>@>=>9 ?@8 8A?>;=5=88 :><0=4K:
// <O ?5@5<5==>9 "LIP_"+TheSymbol+"_Ready_"+IntegerToString(iCommandCode)
// =0G5=85:
// 0 - ?@8 =0;8G88 =5=C;52>9 :><0=4K 8=8F88@C5B 2K?>;=5=85 =0 ?@8=8<0NI59 AB>@>=5.
// 1 - CAB0=02;8205BAO ?@8=8<0NI59 AB>@>=>9
//----- ;>: B5AB8@>20=8O >1<5=0
//----- =8F80B>@ 2K?>;=5=8O
//1. &8:; 8=8F80F88 :><0=4. 5@518@05< 2A5 :><0=4K >B 1 4> N. ;O :064>9:
// 1.1. A;8 :0=0; A2>1>45= BuseInd_N=0, B> 2K?>;=O5<:
// 1.1.1. A;8 A>1;N405BAO CA;>285 2K?>;=5=8O :><0=4K N: (=0;8G85 A83=0;0 =0 :><0=4C N), B> 2K?>;=O5<:
// 1.1.1.1. #AB0=02;8205BAO D;03 70=OB> BuseInd_N=1 (:0=0; :><0=4K N 70=OB, =>2K5 459AB28O =5 8=8F88@CNBAO)
// 1.1.1.2. !1@0AK205BAO D;03 7025@H5=8O Ready_N=0 4;O ?5@5<5==>9 Ready_N (:><0=40 N =5 2K?>;=5=0) (87=0G0;L=> 2A5 MB8 D;038 CAB0=>2;5=K)
// 1.1.1.3. KAB02;O5BAO :><0=40 Command_N=N 4;O ?5@5<5==>9 Command_N (2K?>;=8BL :><0=4C N)
// // @57C;LB0B5 4>;6=> 1KBL: Ready_N=0 (A1@>H5=> 8=48:0B>@><), Command_N=N (CAB0=>2;5=> 8=48:0B>@><), BuseInd_N=1 (CAB0=>2;5=> 8=48:0B>@><)
{for(int i=1;i<=3;i++)//5@51>@ B8?>2 ><0=4
{
{for(int j=0;j<=1;j++)//5@51>@ B8?>2 >78F89
{
{if(BuseInd[(int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)]==0) //A;8 :0=0; A2>1>45= BuseInd_N=0 ?> 40==K< B8?0< :><0=4 8 ?>78F89
{
//@>25@:0 CA;>28O >B:@KB8O, ?>;CG5=85 B8?0 ?>78F88
{if( CheckCondition(OpenMethod,CloseProfitMethod,CloseLossMethod,CommandType,PositionType)
&& (CommandType==(enCommandType)i)
&& (PositionType==(ENUM_POSITION_TYPE)j))
{
if(PrintDebug)Print("LIP: i=",i," j=",j," CommandCode=",(int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j));
BuseInd[(int)CommandCode(CommandType,PositionType)]=1; //#AB0=02;8205BAO D;03 70=OB> BuseInd
SendCommand(CommandCode(CommandType,PositionType)); //!1@0AK205BAO D;03 7025@H5=8O Ready 8 KAB02;O5BAO :><0=40 Command A B8?>< ?> CheckOpenCondition
}}//if(CheckOpenCondition(PositionType)&&(PositionType==(ENUM_POSITION_TYPE)j))
}}//if(BuseInd[(int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)]==0)
}}//for(int j=0;i<=1;i++)
}}//for(int i=1;i<=2;i++)
//----- @>25@:0 2K?>;=5=8O
//2. &8:; ?@>25@:8 2K?>;=5=8O. 5@518@05< 2A5 :><0=4K >B 1 4> N. ;O :064>9:
// 2.1. A;8 :0=0; 70=OB Buse_N=1, B> 2K?>;=O5<:
// 2.1.1. @>25@:0 2K?>;=5=8O: 5A;8 2K?>;=5=> (>1=0@C65= D;03 7025@H5=8O Ready_N=1 4;O :><0=4K N), B> 2K?>;=O5<: //B09<0CB - ?>:0 =5 @0AA<0B@8205<
// 2.1.1.1. A2>1>645=85 :0=0;0: !1@>A D;030 70=OB> Buse_N=0 (:0=0; :><0=4K N A2>1>45=, =>2K5 459AB28O 4>?CAB8<K) //B09<0CB - @0AA<>B@5BL >B45;L=>
// // @57C;LB0B5 4>;6=> 1KBL: Ready_N=1 (CAB0=>2;5=> A>25B=8:><), Command_N=0 (A1@>H5=> A>25B=8><), BuseInd_N=0 (A1@>H5=> 8=48:0B>@><)
ulong ReadyGet=0;
{for(int i=1;i<=3;i++)//5@51>@ B8?>2 :><0=4
{
{for(int j=0;j<=1;j++)//5@51>@ B8?>2 >78F89
{
{if(BuseInd[(int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)]==1) //A;8 :0=0; 70=OB Buse_N=1
{
//K=5AB8 2 CheckCommandResult(CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j))
{if((GlobalGetUlong("LIP_"+TheSymbol+"_Ready_"+IntegerToString((int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)),ReadyGet))&&(ReadyGet==1))//A;8 D;03 2K?>;=5=8O CAB0=>2;5= Ready_N=1
{
BuseInd[(int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)]=0; //A2>1>645=85 :0=0;0: !1@>A D;030 70=OB> Buse_N=0
//if(PrintInfo)Print("LIP: 7040G0 "+IntegerToString(CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j))+" 2K?>;=5=0! ");
{if(PrintInfo)
{
{switch((int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j))
{
case(1)://Open Buy
{
Print("LIP: 2K?>;=5=0 :><0=40 1>>"+" Open Buy"+" gnTick="+IntegerToString(gnTick));
break;
}
case(2)://Open Buy
{
Print("LIP: 2K?>;=5=0 :><0=40 2>>"+" Open Sell"+" gnTick="+IntegerToString(gnTick));
break;
}
case(3)://Open Buy
{
Print("LIP: 2K?>;=5=0 :><0=40 3>>"+" Close Buy PROFIT"+" gnTick="+IntegerToString(gnTick));
break;
}
case(4)://Open Buy
{
Print("LIP: 2K?>;=5=0 :><0=40 4>>"+" Close Sell PROFIT"+" gnTick="+IntegerToString(gnTick));
break;
}
case(5)://Open Buy
{
Print("LIP: 2K?>;=5=0 :><0=40 5>>"+" Close Buy LOSS"+" gnTick="+IntegerToString(gnTick));
break;
}
case(6)://Open Buy
{
Print("LIP: 2K?>;=5=0 :><0=40 6>>"+" Close Sell LOSS"+" gnTick="+IntegerToString(gnTick));
break;
}
default:
{
break;
}
}}//switch((int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j))
}}//if(PrintInfo)
}}//if(Ready[(int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)]==1)
}}//if(BuseInd[(int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)]==1)
}}//for(int j=0;i<=1;i++)
}}//for(int i=1;i<=2;i++)
//-----
//Print("LIP: gnTick=",gnTick);
//Comment("LIP: gnTick=",gnTick);
//-----
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()