LIP/Arch/RU/LIP_v01.002/Include/LIP_Fun2_5_v1.002.mqh
super.admin 291e846eab convert
2025-05-30 15:03:51 +02:00

268 lines
22 KiB
MQL5

//============================================================================================= MQL5 ===
// LibreInfoPDO Function2_5 v1.002 MQL5
// Основные технические расчеты
// Librecoin (c)2014-2017
//======================================================================================================
#property strict
//============================================================================================= MQL5 ===
// INCLUDE - подключаемые модули
//------------------------------------------------------------------------------------------------------
//----- Обратные ссылки на основной файл проекта
#include "LIP_Ref_5_v1.002.mqh"
//============================================================================================= MQL5 ===
// PositionsTotalSel() - подсчет количества позиций с отбором по инструменту
// Вход:
// iSymbol - инструмент
// iSymSel - режим отбора по инструменту
// iMagic - magic
// iMagSel - режим отбора по magic
// iTicket - тикет
// iTickSel - режим отбора по тикету
//------------------------------------------------------------------------------------------------------
int PositionsTotalSel( string iSymbol,
enSymSelMode iSymSel,
long iMagic,
enMagSelMode iMagSel,
long iTicket,
enTickSelMode iTickSel){
//-----
int
nPosition=0;
//-----
int iPositionsTotal=PositionsTotal();
{if(iPositionsTotal>0)
{
{for(int i=PositionsTotal()-1;i>=0;i--)
{
ulong Pos_Tick=PositionGetTicket(i); //Выбираем позицию по номеру в списке
{if(Pos_Tick<=0){continue;}} //Неудачно - следующий
{if(!SymCheck(PositionGetString(POSITION_SYMBOL),iSymbol,iSymSel)){continue;}}//Проверка соответствия символа модели по критерию выбора
{if(!MagCheck(PositionGetInteger(POSITION_MAGIC),iMagic,iMagSel)){continue;}}//Проверка соответствия магика модели по критерию выбора
{if(!TickCheck(PositionGetInteger(POSITION_TICKET),iTicket,iTickSel)){continue;}}//Проверка соответствия тикета модели по критерию выбора
nPosition++;
}}//for(int i=PositionsTotal()-1;i>=0;i--)
}}//if(PositionsTotal()>0)
return(nPosition);
}//PositionsTotalSel()
//
//============================================================================================= MQL5 ===
// OrdersTotalSel() - подсчет количества ордеров с отбором по инструменту
// Вход:
// iSymbol - инструмент
// iSymSel - режим отбора по инструменту
// iMagic - magic
// iMagSel - режим отбора по magic
// iTicket - тикет
// iTickSel - режим отбора по тикету
//------------------------------------------------------------------------------------------------------
int OrdersTotalSel( string iSymbol,
enSymSelMode iSymSel,
long iMagic,
enMagSelMode iMagSel,
long iTicket,
enTickSelMode iTickSel){
int
nOrder=0;
//-----
{if(OrdersTotal()>0)
{
{for(int i=OrdersTotal()-1;i>=0;i--)
{
ulong Ord_Tick=OrderGetTicket(i); //Выбираем ордер по номеру в списке
{if(Ord_Tick<=0){continue;}} //Неудачно - следующий
{if(!SymCheck(OrderGetString(ORDER_SYMBOL),iSymbol,iSymSel)){continue;}}//Проверка соответствия символа модели по критерию выбора
{if(!MagCheck(OrderGetInteger(ORDER_MAGIC),iMagic,iMagSel)){continue;}}//Проверка соответствия магика модели по критерию выбора
{if(!TickCheck(OrderGetInteger(ORDER_TICKET),iTicket,iTickSel)){continue;}}//Проверка соответствия тикета модели по критерию выбора
nOrder++;
}}//for(int i=OrdersTotal()-1;i>=0;i--)
}}//if(OrdersTotal()>0)
return(nOrder);
}//OrdersTotalSel()
//
//============================================================================================= MQL5 ===
// HistoryOrdersTotalSel() - подсчет количества ордеров в истории с отбором по инструменту
// Вход:
// iSymbol - инструмент
// iSymSel - режим отбора по инструменту
// iMagic - magic
// iMagSel - режим отбора по magic
// iTicket - тикет
// iTickSel - режим отбора по тикету
//------------------------------------------------------------------------------------------------------
int HistoryOrdersTotalSel( string iSymbol,
enSymSelMode iSymSel,
long iMagic,
enMagSelMode iMagSel,
long iTicket,
enTickSelMode iTickSel){
int
nOrder=0;
//-----
{if(HistoryOrdersTotal()>0)
{
{for(int i=HistoryOrdersTotal()-1;i>=0;i--)
{
ulong Ord_Tick=HistoryOrderGetTicket(i); //Выбираем ордер в истории по номеру в списке
{if(Ord_Tick<=0){continue;}} //Неудачно - следующий
{if(!SymCheck(HistoryOrderGetString(Ord_Tick,ORDER_SYMBOL),iSymbol,iSymSel)){continue;}}//Проверка соответствия символа модели по критерию выбора
{if(!MagCheck(HistoryOrderGetInteger(Ord_Tick,ORDER_MAGIC),iMagic,iMagSel)){continue;}}//Проверка соответствия магика модели по критерию выбора
{if(!TickCheck(HistoryOrderGetInteger(Ord_Tick,ORDER_TICKET),iTicket,iTickSel)){continue;}}//Проверка соответствия тикета модели по критерию выбора
nOrder++;
}}//for(int i=HistoryOrdersTotal()-1;i>=0;i--)
}}//if(HistoryOrdersTotal()>0)
return(nOrder);
}//HistoryOrdersTotalSel()
//
//============================================================================================= MQL5 ===
// HistoryDealsTotalSel() - подсчет количества сделок с отбором по инструменту
// Вход:
// iSymbol - инструмент
// iSymSel - режим отбора по инструменту
// iMagic - magic
// iMagSel - режим отбора по magic
// iTicket - тикет
// iTickSel - режим отбора по тикету
//------------------------------------------------------------------------------------------------------
int HistoryDealsTotalSel( string iSymbol,
enSymSelMode iSymSel,
long iMagic,
enMagSelMode iMagSel,
long iTicket,
enTickSelMode iTickSel){
int
nDeal=0;
//-----
{if(HistoryDealsTotal()>0)
{
{for(int i=HistoryDealsTotal()-1;i>=0;i--)
{
ulong Deal_Tick=HistoryDealGetTicket(i); //Выбираем сделку по номеру в списке
{if(Deal_Tick<=0){continue;}} //Неудачно - следующий
{if(!SymCheck(HistoryDealGetString(Deal_Tick,DEAL_SYMBOL),iSymbol,iSymSel)){continue;}}//Проверка соответствия символа модели по критерию выбора
{if(!MagCheck(HistoryDealGetInteger(Deal_Tick,DEAL_MAGIC),iMagic,iMagSel)){continue;}}//Проверка соответствия магика модели по критерию выбора
{if(!TickCheck(HistoryDealGetInteger(Deal_Tick,DEAL_TICKET),iTicket,iTickSel)){continue;}}//Проверка соответствия тикета модели по критерию выбора
nDeal++;
}}//for(int i=HistoryDealsTotal()-1;i>=0;i--)
}}//if(HistoryOrdersTotal()>0)
return(nDeal);
}//HistoryDealsTotalSel()
//
//============================================================================================= MQL5 ===
// SymCheck() - Проверка соответствия символа модели по критерию выбора
// Вход:
// aSymbol - проверяемый инструмент
// iSymbol - образцовый инструмент
// iSymSel - критерий выбора
//------------------------------------------------------------------------------------------------------
bool SymCheck(string aSymbol,string iSymbol,enSymSelMode iSymSel){
//-----
bool Result=false;
//-----
{switch(iSymSel)
{
case SymSel_all:
{
Result=true;
break;
}
case SymSel_curr:
{
{if((aSymbol!=iSymbol)&&(iSymbol!="")){break;}}//Отбор по символу
Result=true;
break;
}
case SymSel_user:
{
{if((aSymbol!=iSymbol)&&(iSymbol!="")){break;}}//Отбор по символу
Result=true;
break;
}
case SymSel_but:
{
{if((aSymbol==iSymbol)&&(iSymbol!="")){break;}}//Отбор по символу
Result=true;
break;
}
default:
{
break;
}
}}//switch(iSymSel)
return(Result);
}//SymCheck()
//
//============================================================================================= MQL5 ===
// MagCheck() - Проверка соответствия магика по критерию выбора
// Вход:
// aMagic - проверяемый магик
// iMagic - образцовый магик
// iMagSel - критерий выбора
//------------------------------------------------------------------------------------------------------
bool MagCheck(long aMagic,long iMagic,enMagSelMode iMagSel){
//-----
bool Result=false;
//-----
{switch(iMagSel)
{
case MagSel_all:
{
Result=true;
break;
}
case MagSel_user:
{
{if((aMagic!=iMagic)&&(iMagic!=0)){break;}}//Отбор по символу
Result=true;
break;
}
case MagSel_but:
{
{if((aMagic==iMagic)&&(iMagic!=0)){break;}}//Отбор по символу
Result=true;
break;
}
default:
{
break;
}
}}//switch(iSymSel)
return(Result);
}//MagCheck()
//
//============================================================================================= MQL5 ===
// TickCheck() - Проверка соответствия магика по критерию выбора
// Вход:
// aTicket - проверяемый магик
// iTicket - образцовый магик
// iTickSel - критерий выбора
//------------------------------------------------------------------------------------------------------
bool TickCheck(long aTicket,long iTicket,enTickSelMode iTickSel){
//-----
bool Result=false;
//-----
{switch(iTickSel)
{
case TickSel_all:
{
Result=true;
break;
}
case TickSel_user:
{
{if((aTicket!=iTicket)&&(iTicket!=0)){break;}}//Отбор по символу
Result=true;
break;
}
case TickSel_but:
{
{if((aTicket==iTicket)&&(iTicket!=0)){break;}}//Отбор по символу
Result=true;
break;
}
default:
{
break;
}
}}//switch(iSymSel)
return(Result);
}//TickCheck()