Tester





/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//=============================================================================
//                                                       YOUR EA NAME HERE.mq4
//                                            Copyright © 2006, YOUR NAME HERE
//                                                      YOUR WEBSITE NAME HERE
//
// DERK COMMENT 1
// First off, notice how I have removed those stupid "|" things in the 
// comments.  They only serve as a pain in the ass when you go to modify 
// your comment blocks because you are constantly having to change the 
// position of those "|"s.
//=============================================================================
#property copyright "Copyright © 2006, Derk Wehler"
#property link      "http://www.metaquotes.net"

// DERK COMMENT 2
// Notice I have spaced out your externs so they are nicely readable
// And here's an early hint right here.  Go into your MetaEditor 
// Tools / Options and under the General tab, set your tabs == 4 and 
// REMOVE the check in the box that says "Insert spaces".
//
//---- input parameters
extern int 		wpr			= 55;
extern double 	wprup		= -20;
extern double 	wprdn		= -80;
extern int 		rsi			= 3;
extern double 	rsiup		= 80;
extern double 	rsidn		= 20;
extern double 	stochup		= 80;
extern double 	stochdn		= 25;
extern double 	TP1 		= 13;
extern double 	TP2 		= 8;
extern double 	TP3 		= 5;
extern double 	SL1 		= 100;
extern double 	SL2 		= 40;
extern double 	LotSize1 	= 0.1;
extern double 	LotSize2 	= 0.1;

//=============================================================================
// expert initialization function
//=============================================================================
int init()
{
// DERK COMMENT 3
// Remove extraneous crap the medaEditor inserts, like this:

//-----

//-----
	return(0);
}


int deinit()
{
	return(0);
}


int start()
{
	// DERK COMMENT 4
	// Magic number should be an integer, and must be 
	// smaller than: 4294967296.  So NO, NOT 200610062146
//	double MagicNumber = 200610062146 + Period();
	int MagicNumber = 1800 + Period();

	// int LotSize=MathFloor( AccountBalance( ) / 10000);
	// if (LotSize < 1)
	// {
	// LotSize = 1;
	// }

	// DERK COMMENT 5
	// Notice that I have tabbed out all your code, and spaced it out consistantly, 
	// so that, for example, your lines now look like this:
	//
	// 		OrderSend(Symbol(), OP_BUY, LotSize1, Ask, 2, Ask - SL1 * Point, Ask + TP1 * Point, NULL, MagicNumber, 0, Green);
	//
	// instead of this:
	//
	//		OrderSend(Symbol( ),OP_BUY, LotSize1, Ask,2,Ask-SL1*Point,Ask+ TP1*Point, NULL,MagicNumber ,0,Green) ;
	// 
	// These two are functionally the same, but which is easier to read?  Is it 
	// critical you use my particular method of code formatting?  Absolutely not.  
	// But use SOME form, and make it look nice so other people can read your code, 
	// and so you can read it better 6 months from now when you go back to change it.
	// TAB OUT your code correctly so others (and you) can easily read the flow of 
	// the function of the code.
	//
	// Read over my version here and compare it to your own.  I bet you find mine 
	// easier to undertstand.  DO this fro mthe beginning with each new piece of 
	// code you write, and put in LOTS of comments on what the code does, even if
	// it seems fairly obvious at the time you are writing it.  You will be glad later.
	//
	double currentClose = iClose(Symbol(), 60, 1);
	double priorClose = iClose(Symbol(), 60, 2);
	double oldestClose = iClose(Symbol(), 60, 3);
	int Total_Orders = 0;

	for (int i=OrdersTotal(); i >= 0; i--)
	{
		OrderSelect(i, SELECT_ BY_POS, MODE_ TRADES);
		if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
		{
			Total_Orders++;
			Print("Total Orders: ", Total_Orders) ;
		}
	}
	Print("Total Orders: ", Total_Orders, ", MagicNum: ", MagicNumber, 
			", Orderstotal: ", OrdersTotal(), ", OMN: ", OrderMagicNumber());

	// DERK COMMENT 6
	// As for the actual problem you are having, I cannot be sure what 
	// the problem is.  You said you have several experts you'd like 
	// to se on diff pairs.  You mean you want to use this expert on 
	// several pairs, or do you have other experts?
	//
	// As Ron said, it sounds like you need to just use different 
	// MagicNumbers in each of your EAs.  Your magic number, above 
	// (COMMENT 4) is the only functional change I have made to this 
	// code.  If you have another EA, copy and paste that line in for 
	// you other EA, but change the base from 1800 to some other number
	// in the other code.
	//
	// New Orders:
	double myWPR = iWPR(Symbol(), 240, wpr, 2);
	double myRsi = iRSI(Symbol(), 240, rsi, PRICE_CLOSE, 2);
	double myStoch = iStochastic(Symbol(), 60, 8, 3, 3, MODE_SMA, 0, MODE_MAIN, 2);
	if (myStoch < stochdn && currentClose > priorClose && 
		priorClose > oldestClose && Total_Orders == 0)
	{
		OrderSend(Symbol(), OP_BUY, LotSize1, Ask, 2, Ask - SL1 * Point, Ask + TP1 * Point, NULL, MagicNumber, 0, Green);
		OrderSend(Symbol(), OP_BUY, LotSize1, Ask, 2, Ask - SL1 * Point, Ask + TP2 * Point, NULL, MagicNumber, 0, Green);
		OrderSend(Symbol(), OP_BUY, LotSize1, Ask, 2, Ask - SL1 * Point, Ask + TP3 * Point, NULL, MagicNumber, 0, Green);
	}
	if (myStoch > stochup && currentClose < priorClose && 
		priorClose < oldestClose 	&& Total_Orders == 0)
	{
		OrderSend(Symbol(), OP_SELL, LotSize1, Bid, 2, Bid + SL1 * Point, Bid - TP1 * Point, NULL, MagicNumber, 0, Red);
		OrderSend(Symbol(), OP_SELL, LotSize1, Bid, 2, Bid + SL1 * Point, Bid - TP2 * Point, NULL, MagicNumber, 0, Red);
		OrderSend(Symbol(), OP_SELL, LotSize1, Bid, 2, Bid + SL1 * Point, Bid - TP3 * Point, NULL, MagicNumber, 0, Red);
	}
}





Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar


Indicator Curves created:


Indicators Used:

Larry William percent range indicator
Relative strength index
Stochastic oscillator


Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders

It automatically opens orders when conditions are reached

Other Features: