CodeSample





// Set array size initially as nothing, but we will resize as needed
double 		OpenOrders[][NUM_ATTR];
color		OpenColor[];

bool		CloseForSLSet[];
int			LastBars[];


int AddToOpenOrders(int ticket, int slippage, color clr)
{
	if (!OrderSelect(ticket, SELECT_BY_TICKET))
	{
		Print("LibOrdersCS Error: AddToOpenOrders: Could not find ticket: " + ticket);
		return(-1);
	}

	NumOpenOrders++;
	
	int curArraySize = ArraySize(OpenOrders) / NUM_ATTR;
	Print("AddToOpenOrders: Current array size is: " + curArraySize);

	if (NumOpenOrders > curArraySize)
	{
		if (ArrayResize(OpenOrders, NumOpenOrders) != NumOpenOrders * NUM_ATTR)
		{
			Print("LibOrdersCS Error: AddToOpenOrders: ArrayResize OpenOrdersFailed");
			return(-1);
		}
		if (ArrayResize(OpenColor, NumOpenOrders) != NumOpenOrders)
		{
			Print("LibOrdersCS Error: AddToOpenOrders: ArrayResize OpenColor Failed");
			return(-1);
		}
		if (ArrayResize(CloseForSLSet, NumOpenOrders) != NumOpenOrders)
		{
			Print("LibOrdersCS Error: AddToOpenOrders: ArrayResize CloseForSLSet Failed");
			return(-1);
		}
		if (ArrayResize(LastBars, NumOpenOrders) != NumOpenOrders)
		{
			Print("LibOrdersCS Error: AddToOpenOrders: ArrayResize LastBars Failed");
			return(-1);
		}
	}
	
	int i = NumOpenOrders - 1;
	OpenOrders[i][i_SYM] 	= SymbolToDouble(OrderSymbol());
	OpenOrders[i][i_TCKT] 	= ticket;	
	OpenOrders[i][i_CMD] 	= OrderType();	
	OpenOrders[i][i_LOTS] 	= OrderLots();	
	OpenOrders[i][i_SL] 	= CsSL;	
	OpenOrders[i][i_TP] 	= CsTP;	
	OpenOrders[i][i_PRICE] 	= OrderOpenPrice();	
	OpenOrders[i][i_SLIP] 	= slippage;		// Used when order is closed
	OpenOrders[i][i_MAGIC] 	= OrderMagicNumber();	
	OpenColor[i]			= clr;
	CloseForSLSet[i] 		= false;
	LastBars[i]				= 0;
	
	return(i);
}



void RemoveFromOrdersArray(int ticket, bool isPending)
{
	int i, idx, curArraySize;
	
	curArraySize = ArraySize(OpenOrders) / NUM_ATTR;
	idx = GetOpenOrdersIndex(ticket);
	if (NumOpenOrders != curArraySize)
	{
		Print("LibOrdersCS Error: RemoveFromOrdersArray: OpenOrders array (or NumOpenOrders) is wrong size");
		return;
	}
	Print("RemoveFromOrdersArray: Current array size is: " + curArraySize);

	if (idx == -1)
	{
		Print("LibOrdersCS Error: RemoveFromOrdersArray: Could not remove ticket: " + ticket + " from OpenOrders array");
		return;
	}

	// Sort orders array (move all remaining orders down one)
	for (i=idx; i < NumOpenOrders - 1; i++)
	{
		OpenOrders[i][i_SYM] 	= OpenOrders[i+1][i_SYM];
		OpenOrders[i][i_TCKT] 	= OpenOrders[i+1][i_TCKT];
		OpenOrders[i][i_CMD] 	= OpenOrders[i+1][i_CMD];
		OpenOrders[i][i_LOTS] 	= OpenOrders[i+1][i_LOTS];
		OpenOrders[i][i_SL] 	= OpenOrders[i+1][i_SL];
		OpenOrders[i][i_TP] 	= OpenOrders[i+1][i_TP];
		OpenOrders[i][i_PRICE] 	= OpenOrders[i+1][i_PRICE];
		OpenOrders[i][i_SLIP] 	= OpenOrders[i+1][i_SLIP];
		OpenOrders[i][i_MAGIC] 	= OpenOrders[i+1][i_MAGIC];
		OpenColor[i]			= OpenColor[i+1];
		CloseForSLSet[i] 		= CloseForSLSet[i+1];
		LastBars[i]				= LastBars[i+1];
	}

	// Resize array, getting rid of last element
	NumOpenOrders--;
	if (ArrayResize(OpenOrders, NumOpenOrders) != NumOpenOrders * NUM_ATTR)
	{
		Print("LibOrdersCS Error: RemoveFromOrdersArray: OpenOrders ArrayResize Failed");
		return;
	}
	if (ArrayResize(OpenColor, NumOpenOrders) != NumOpenOrders)
	{
		Print("LibOrdersCS Error: RemoveFromOrdersArray: OpenColor ArrayResize Failed");
		return;
	}
	if (ArrayResize(CloseForSLSet, NumOpenOrders) != NumOpenOrders)
	{
		Print("LibOrdersCS Error: RemoveFromOrdersArray: CloseForSLSet ArrayResize Failed");
		return;
	}
	if (ArrayResize(LastBars, NumOpenOrders) != NumOpenOrders)
	{
		Print("LibOrdersCS Error: RemoveFromOrdersArray: LastBars ArrayResize Failed");
		return;
	}
}


int GetOpenOrdersIndex(int ticket)
{
	int i;
	int curArraySize = ArraySize(OpenOrders) / NUM_ATTR;
	
	for (i=0; i < curArraySize; i++)
		if (OpenOrders[i][i_TCKT] == ticket)
			return(i);
	
	Print("LibOrdersCS: GetOpenOrdersIndex: Could not find ticket: " + ticket + "; returning -1");
	return(-1);
}






Sample





Analysis



Market Information Used:




Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: