AllOrdersControl





//+------------------------------------------------------------------+
//|                                             AllOrdersControl.mq4 |
//|                                      Copyright © 2006, komposter |
//|                                      mailto:komposterius@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, komposter"
#property link      "mailto:komposterius@mail.ru"

// ïåðåìåííàÿ, êîòîðàÿ áóäåò õðàíèòü êîëè÷åñòâî îðäåðîâ, ïðèíàäëåæàùèõ ýêñïåðòó:
int _ExpertOrdersTotal = 0;

// ìàññèâû, â êîòîðûõ áóäóò õðàíèòñüÿ õàðàêòåðèñòèêè îðäåðîâ:
int _OrderTicket[], _OrderType[];
double _OrderLots[], _OrderOpenPrice[], _OrderStopLoss[], _OrderTakeProfit[];
double _OrderProfit[], _OrderSwap[], _OrderCommission[];
datetime _OrderOpenTime[], _OrderExpiration[];
string _OrderComment[];

void AllOrdersInit( int magic )
{
	int _GetLastError = 0, _OrdersTotal = OrdersTotal();
	_ExpertOrdersTotal = 0;

	// èçìåíÿåì ðàçìåðû ìàññèâîâ ïîä òåêóùåå êîë-âî ïîçèöèé
	// (åñëè _OrdersTotal = 0, ìåíÿåì ðàçìåð ìàññèâîâ íà 1)
	int temp_value = MathMax( _OrdersTotal, 1 );
	ArrayResize( _OrderTicket,			temp_value );
	ArrayResize( _OrderType,			temp_value );
	ArrayResize( _OrderLots,			temp_value );
	ArrayResize( _OrderOpenPrice,		temp_value );
	ArrayResize( _OrderStopLoss,		temp_value );
	ArrayResize( _OrderTakeProfit,	temp_value );
	ArrayResize( _OrderOpenTime,		temp_value );
	ArrayResize( _OrderProfit,			temp_value );
	ArrayResize( _OrderSwap,			temp_value );
	ArrayResize( _OrderCommission,	temp_value );
	ArrayResize( _OrderComment,		temp_value );
	ArrayResize( _OrderExpiration,	temp_value );

	// îáíóëÿåì ìàññèâû
	ArrayInitialize( _OrderTicket,		0 );
	ArrayInitialize( _OrderType,			0 );
	ArrayInitialize( _OrderLots,			0 );
	ArrayInitialize( _OrderOpenPrice,	0 );
	ArrayInitialize( _OrderStopLoss,		0 );
	ArrayInitialize( _OrderTakeProfit,	0 );
	ArrayInitialize( _OrderOpenTime,		0 );
	ArrayInitialize( _OrderProfit,		0 );
	ArrayInitialize( _OrderSwap,			0 );
	ArrayInitialize( _OrderCommission,	0 );
	ArrayInitialize( _OrderExpiration,	0 );

	for ( int z = _OrdersTotal - 1; z >= 0; z -- )
	{
		if ( !OrderSelect( z, SELECT_BY_POS ) )
		{
			_GetLastError = GetLastError();
			Print( "OrderSelect( ", z, ", SELECT_BY_POS ) - Error #", _GetLastError );
			continue;
		}
		if ( OrderMagicNumber() == magic && OrderSymbol() == Symbol() )
		{
			// çàïîëíÿåì ìàññèâû
			_OrderTicket		[_ExpertOrdersTotal] = OrderTicket();
			_OrderType			[_ExpertOrdersTotal] = OrderType();
			_OrderLots			[_ExpertOrdersTotal] = NormalizeDouble( OrderLots(), 1 );
			_OrderOpenPrice	[_ExpertOrdersTotal] = NormalizeDouble( OrderOpenPrice(), Digits );
			_OrderStopLoss		[_ExpertOrdersTotal] = NormalizeDouble( OrderStopLoss(), Digits );
			_OrderTakeProfit	[_ExpertOrdersTotal] = NormalizeDouble( OrderTakeProfit(), Digits );
			_OrderOpenTime		[_ExpertOrdersTotal] = OrderOpenTime();
			_OrderProfit		[_ExpertOrdersTotal] = NormalizeDouble( OrderProfit(), 2 );
			_OrderSwap			[_ExpertOrdersTotal] = NormalizeDouble( OrderSwap(), 2 );
			_OrderCommission	[_ExpertOrdersTotal] = NormalizeDouble( OrderCommission(), 2 );
			_OrderComment		[_ExpertOrdersTotal] = OrderComment();
			_OrderExpiration	[_ExpertOrdersTotal] = OrderExpiration();
			_ExpertOrdersTotal ++;
		}
	}

	// èçìåíÿåì ðàçìåðû ìàññèâîâ ïîä êîë-âî ïîçèöèé, ïðèíàäëåæàùèõ ýêñïåðòó
	// (åñëè _ExpertOrdersTotal = 0, ìåíÿåì ðàçìåð ìàññèâîâ íà 1)
	temp_value = MathMax( _ExpertOrdersTotal, 1 );
	ArrayResize( _OrderTicket,			temp_value );
	ArrayResize( _OrderType,			temp_value );
	ArrayResize( _OrderLots,			temp_value );
	ArrayResize( _OrderOpenPrice,		temp_value );
	ArrayResize( _OrderStopLoss,		temp_value );
	ArrayResize( _OrderTakeProfit,	temp_value );
	ArrayResize( _OrderOpenTime,		temp_value );
	ArrayResize( _OrderProfit,			temp_value );
	ArrayResize( _OrderSwap,			temp_value );
	ArrayResize( _OrderCommission,	temp_value );
	ArrayResize( _OrderComment,		temp_value );
	ArrayResize( _OrderExpiration,	temp_value );
}



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders


Other Features: