268 lines
22 KiB
MQL5
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()
|