TSD-v11-MT4-JB-OsMA beta 0.3

Profit factor:
355.82
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategy
Indicators Used
MACD HistogramMoving Average of OscillatorForce index
10 Views
0 Downloads
0 Favorites
TSD-v11-MT4-JB-OsMA beta 0.3
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

/*[[
	Name := TDSGlobal
	Author := Copyright © 2005 Bob O'Brien / Barcode
	Link := 
	Notes := Based on Alexander Elder's Triple Screen system. To be run only on a Weekly chart.
	Lots := 1
	Stop Loss := 0
	Take Profit := 100
	Trailing Stop := 60
]]*/
//+------------------------------------------------------------------+
//|  External Variables                                              |
//+------------------------------------------------------------------+

extern double Lots = 1.0;
extern int TakeProfit = 100;
extern int Stoploss = 0;
extern int TrailingStop = 60;	
extern int Slippage=5;			// Slippage
extern int StopYear=2005;
extern int MM=0,Leverage=1,AcctSize=10000;

int BuyEntryOrderTicket=0,SellEntryOrderTicket=0,cnt=0,total=0;

double MacdCurrent=0, MacdPrevious=0, MacdPrevious2=0, Direction=0, OsMAPrevious=0, OsMAPrevious2=0, OsMADirection=0;

double newbar=0,PrevDay=0,PrevMonth=0,PrevYear=0,PrevCurtime=0;

double PriceOpen=0;								// Price Open


bool First=True;

double TradesThisSymbol=0;
double ForcePos=0, ForceNeg=0, Force=0,NewPrice=0;
double StartMinute1=0,EndMinute1=0,StartMinute2=0,EndMinute2=0,StartMinute3=0,EndMinute3=0;
double StartMinute4=0,EndMinute4=0,StartMinute5=0,EndMinute5=0,StartMinute6=0,EndMinute6=0;
double StartMinute7=0,EndMinute7=0,DummyField=0;

int start()
{

Comment("TSD for MT4 ver beta 0.3 - DO NOT USE WITH REAL MONEY YET",
        "\n",
        "\n","Weekly MacdPrevious = ",MacdPrevious,"    Weekly OsMAPrevious = ",OsMAPrevious,
        "\n","Weekly MacdPrevious2 = ",MacdPrevious2,"    Weekly OsMAPrevious2 = ",OsMAPrevious2,
        "\n","Weekly Direction = ",Direction,"    Weekly OsMADirection = ",OsMADirection,
        "\n",
        "\n","Daily Force = ",Force,
        "\n","Is Daily Force Bullish = ",ForcePos,
        "\n","Is Daily Force Bearish = ",ForceNeg,
        "\n",
        "\n","Total Orders = ",total,
        "\n","Trades this Symbol(",Symbol(),") = ",TradesThisSymbol,
        "\n",
        "\n","New Bar Time is ",TimeToStr(newbar),
        "\n",
        "\n","Daily High[1] = ",High[1],
        "\n","Daily High[2] = ",High[2],
        "\n","Daily Low[1] = ",Low[1],
        "\n","Daily Low[2] = ",Low[2],
        "\n",
        "\n","Current Ask Price + 16 pips = ",Ask+(16*Point),
        "\n","Current Bid Price - 16 pips = ",Bid-(16*Point));
        
        
        
  total=OrdersTotal();
     TradesThisSymbol=0;
	  for(cnt=0;cnt<total;cnt++)
     { 
         OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
	      
	      if(OrderSymbol()==Symbol())
	      {
	        TradesThisSymbol ++;
	      } // close for if(OrderSymbol()==Symbol())
	  } // close for for(cnt=0;cnt<total;cnt++)        
        
        
        
        

     
	  MacdPrevious  = iMACD(NULL,10080,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
	  MacdPrevious2 = iMACD(NULL,10080,12,26,9,PRICE_CLOSE,MODE_MAIN,2);
	  
	  OsMAPrevious  = iOsMA(NULL,10080,12,26,9,PRICE_CLOSE,1);
	  OsMAPrevious2 = iOsMA(NULL,10080,12,26,9,PRICE_CLOSE,2);

     Force = iForce(NULL,1440,2,MODE_EMA,PRICE_CLOSE,1); 
     ForcePos = iForce(NULL,1440,2,MODE_EMA,PRICE_CLOSE,1) > 0;
	  ForceNeg = iForce(NULL,1440,2,MODE_EMA,PRICE_CLOSE,1) < 0;

	  
	  if (MacdPrevious > MacdPrevious2) Direction = 1;
	  if (MacdPrevious < MacdPrevious2) Direction = -1;
	  if (MacdPrevious == MacdPrevious2) Direction = 0;
	  
	  if (OsMAPrevious > OsMAPrevious2) OsMADirection = 1;
	  if (OsMAPrevious < OsMAPrevious2) OsMADirection = -1;
	  if (OsMAPrevious == OsMAPrevious2) OsMADirection = 0;
	  
	            
     
	  
// Select a range of minutes in the day to start trading based on the currency pair.
// This is to stop collisions occurring when 2 or more currencies set orders at the same time.

if(Symbol() == "USDCHF")
{
    StartMinute1 = 0;
	EndMinute1   = 1;
    StartMinute2 = 8;
	EndMinute2   = 9;
    StartMinute3 = 16;
	EndMinute3   = 17;
    StartMinute4 = 24;
	EndMinute4   = 25;
    StartMinute5 = 32;
	EndMinute5   = 33;
    StartMinute6 = 40;
	EndMinute6   = 41;
    StartMinute7 = 48;
	EndMinute7   = 49;
} // close for if(Symbol() == "USDCHF")
if(Symbol() == "GBPUSD")
{  
    StartMinute1 = 2;
	EndMinute1   = 3;
    StartMinute2 = 10;
	EndMinute2   = 11;
    StartMinute3 = 18;
	EndMinute3   = 19;
    StartMinute4 = 26;
	EndMinute4   = 27;
    StartMinute5 = 34;
	EndMinute5   = 35;
    StartMinute6 = 42;
	EndMinute6   = 43;
    StartMinute7 = 50;
	EndMinute7   = 51;
} // close for if(Symbol() == "GBPUSD")
if(Symbol() == "USDJPY")
{
    StartMinute1 = 4;
	EndMinute1   = 5;
    StartMinute2 = 12;
	EndMinute2   = 13;
    StartMinute3 = 20;
	EndMinute3   = 21;
    StartMinute4 = 28;
	EndMinute4   = 29;
    StartMinute5 = 36;
	EndMinute5   = 37;
    StartMinute6 = 44;
	EndMinute6   = 45;
    StartMinute7 = 52;
	EndMinute7   = 53;
} //close for if(Symbol() == "USDJPY")
if(Symbol() == "EURUSD")
{
    StartMinute1 = 6;
	EndMinute1   = 7;
    StartMinute2 = 14;
	EndMinute2   = 15;
    StartMinute3 = 22;
	EndMinute3   = 23;
    StartMinute4 = 30;
	EndMinute4   = 31;
    StartMinute5 = 38;
	EndMinute5   = 39;
    StartMinute6 = 46;
	EndMinute6   = 47;
    StartMinute7 = 54;
	EndMinute7   = 59;
} // close for if(Symbol() == "EURUSD")



if( (Minute() >= StartMinute1 && Minute() <= EndMinute1) ||
   (Minute() >= StartMinute2 && Minute() <= EndMinute2) ||
   (Minute() >= StartMinute3 && Minute() <= EndMinute3) ||
   (Minute() >= StartMinute4 && Minute() <= EndMinute4) ||
   (Minute() >= StartMinute5 && Minute() <= EndMinute5) ||
   (Minute() >= StartMinute6 && Minute() <= EndMinute6) ||
   (Minute() >= StartMinute7 && Minute() <= EndMinute7) )
{
	DummyField = 0; // dummy statement because MT will not allow me to use a continue statement
} // close for LARGE if statement
else return(0);

/////////////////////////////////////////////////
//  Process the next bar details
/////////////////////////////////////////////////

if (newbar != Time[0]) 
{
	 newbar        = Time[0];
	 
	 if(TradesThisSymbol < 1) 
	 {
	   
	   if(OsMADirection == 1 && ForceNeg)
		{
			PriceOpen = High[1] + 1 * Point;		// Buy 1 point above high of previous candle
			if(PriceOpen > (Ask + 16 * Point))  // Check if buy price is a least 16 points > Ask
			{
				BuyEntryOrderTicket=OrderSend(Symbol(),OP_BUYSTOP,Lots,PriceOpen,Slippage,Low[1] - 1 * Point,PriceOpen + TakeProfit * Point,"Buy Entry Order placed at "+CurTime(),0,0,Green);
				return(0);

			} // close for if(PriceOpen > (Ask + 16 * Point))
			else
			{
			   NewPrice = Ask + 16 * Point;
				BuyEntryOrderTicket=OrderSend(Symbol(),OP_BUYSTOP,Lots,NewPrice,Slippage,Low[1] - 1 * Point,NewPrice + TakeProfit * Point,"Buy Entry Order placed at "+CurTime(),0,0,Green);
				return(0);
			} // close for else statement
	   } // close for if(Direction == 1 && ForceNeg)
     
     
     if(OsMADirection == -1 && ForcePos)
     {
         PriceOpen = Low[1] - 1 * Point;
			if(PriceOpen < (Bid - 16 * Point)) // Check if buy price is a least 16 points < Bid
			{
				SellEntryOrderTicket=OrderSend(Symbol(),OP_SELLSTOP,Lots,PriceOpen,Slippage,High[1] + 1 * Point,PriceOpen - TakeProfit * Point,"Sell Entry Order placed at "+CurTime(),0,0,Green);
				return(0);
			} // close for if(PriceOpen < (Bid - 16 * Point))
			else
			{
				NewPrice = Bid - 16 * Point;
				SellEntryOrderTicket=OrderSend(Symbol(),OP_SELLSTOP,Lots,NewPrice,Slippage,High[1] + 1 * Point,NewPrice - TakeProfit * Point,"Sell Entry Order placed at "+CurTime(),0,0,Green);
            return(0);			
			} // close for else statement

      } // close for if(Direction == -1 && ForcePos)
    } //Close of if(TradesThisSymbol < 1)


/////////////////////////////////////////////////
//  Pending Order Management
/////////////////////////////////////////////////

if(TradesThisSymbol > 0)
	{
      total=OrdersTotal();
      for(cnt=0;cnt<total;cnt++)
  	   { 
  	      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

         if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP)
         {

				if(OsMADirection == -1)
  				{ 
  				   OrderDelete(OrderTicket());
	        		return(0); 
				} // close for if(Direction == -1)
			} // close for if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP)

         if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP)
         {

				if(OsMADirection == 1)
  				{ 
  				   OrderDelete(OrderTicket());
	        		return(0); 
				} //close for if(Direction == 1)
			} //close for if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP)


         if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP)
   	   {
				if(High[1] < High[2])
	  			{ 
					if(High[1] > (Ask + 16 * Point))
	  				{ 
	  	   		  OrderModify(OrderTicket(),High[1] + 1 * Point,Low[1] - 1 * Point,OrderTakeProfit(),0,Cyan);
                 return(0);					
	  				} //close for if(High[1] > (Ask + 16 * Point))
	  				else
	  				{
	  				  OrderModify(OrderTicket(),Ask + 16 * Point,Low[1] - 1 * Point,OrderTakeProfit(),0,Cyan);
                 return(0);					
	  				
	  				} //close for else statement
	  			} //close for if(High[1] < High[2])
	  		} //close for if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP)
	  
	      if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP)
   		{
				if(Low[1] > Low[2])
				{ 
					if(Low[1] < (Bid - 16 * Point))
					{
		   		  OrderModify(OrderTicket(),Low[1] - 1 * Point,High[1] + 1 * Point,OrderTakeProfit(),0,Cyan);
                 return(0);					
					} // close for if(Low[1] < (Bid - 16 * Point))
					else
					{
					  OrderModify(OrderTicket(),Bid - 16 * Point,High[1] + 1 * Point,OrderTakeProfit(),0,Cyan);
                 return(0);					
      
					} //close for else statement
				} //close for if(Low[1] > Low[2])
			} //close for if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP)
		} // close for for(cnt=0;cnt<total;cnt++)
	} // close for if(TradesThisSymbol > 0)
} // close for if (newbar != Time[0]) 

/////////////////////////////////////////////////
//  Stop Loss Management
/////////////////////////////////////////////////
if(TradesThisSymbol > 0)
{
  total=OrdersTotal();
  for(cnt=0;cnt<total;cnt++)
  { 
     OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

     if(OrderSymbol()==Symbol() && OrderType()==OP_BUY)
    	{
			if(Ask-OrderOpenPrice() > (TrailingStop * Point))
  			{ 
				if(OrderStopLoss() < (Ask - TrailingStop * Point))
				{ 
	   		   OrderModify(OrderTicket(),OrderOpenPrice(),Ask - TrailingStop * Point,Ask + TakeProfit * Point,0,Cyan);
               return(0);					

				} // close for if(OrderStopLoss() < (Ask - TrailingStop * Point))
			} // close for if(Ask-OrderOpenPrice() > (TrailingStop * Point))
		} // close for if(OrderSymbol()==Symbol() && OrderType()==OP_BUY)
	
     if(OrderSymbol()==Symbol() && OrderType()==OP_SELL)
		{
			if(OrderOpenPrice() - Bid > (TrailingStop * Point))
			{ 
				if(OrderStopLoss() > (Bid + TrailingStop * Point))
				{ 
	   		   OrderModify(OrderTicket(),OrderOpenPrice(),Bid + TrailingStop * Point,Bid - TakeProfit * Point,0,Cyan);
               return(0);					

				} // close for if(OrderStopLoss() > (Bid + TrailingStop * Point))
			} // close for if(OrderOpenPrice() - Bid > (TrailingStop * Point))
		 } // close for if(OrderSymbol()==Symbol() && OrderType()==OP_SELL)
  	  } // close for for(cnt=0;cnt<total;cnt++)
   } // close for if(TradesThisSymbol > 0)
  
	

//return(0);

} // close for start

Profitability Reports

EUR/USD Jul 2025 - Sep 2025
5722.08
Total Trades 365
Won Trades 222
Lost trades 143
Win Rate 60.82 %
Expected payoff 182024.45
Gross Profit 66450537.00
Gross Loss -11613.00
Total Net Profit 66438924.00
-100%
-50%
0%
50%
100%
EUR/USD Jul 2025 - Sep 2025
3515.63
Total Trades 224
Won Trades 152
Lost trades 72
Win Rate 67.86 %
Expected payoff 150642.69
Gross Profit 33753562.00
Gross Loss -9601.00
Total Net Profit 33743961.00
-100%
-50%
0%
50%
100%
USD/CAD Oct 2024 - Jan 2025
1.02
Total Trades 157
Won Trades 87
Lost trades 70
Win Rate 55.41 %
Expected payoff 0.60
Gross Profit 6299.14
Gross Loss -6205.69
Total Net Profit 93.45
-100%
-50%
0%
50%
100%
AUD/USD Jan 2025 - Jul 2025
0.85
Total Trades 353
Won Trades 191
Lost trades 162
Win Rate 54.11 %
Expected payoff -8.49
Gross Profit 16776.00
Gross Loss -19774.00
Total Net Profit -2998.00
-100%
-50%
0%
50%
100%
GBP/USD Oct 2024 - Jan 2025
0.81
Total Trades 206
Won Trades 132
Lost trades 74
Win Rate 64.08 %
Expected payoff -8.87
Gross Profit 7673.00
Gross Loss -9500.00
Total Net Profit -1827.00
-100%
-50%
0%
50%
100%
GBP/USD Jul 2025 - Sep 2025
0.74
Total Trades 158
Won Trades 94
Lost trades 64
Win Rate 59.49 %
Expected payoff -15.32
Gross Profit 6901.00
Gross Loss -9321.00
Total Net Profit -2420.00
-100%
-50%
0%
50%
100%
GBP/USD Jul 2025 - Sep 2025
0.74
Total Trades 252
Won Trades 150
Lost trades 102
Win Rate 59.52 %
Expected payoff -12.27
Gross Profit 8737.00
Gross Loss -11829.00
Total Net Profit -3092.00
-100%
-50%
0%
50%
100%
EUR/USD Jan 2025 - Jul 2025
0.71
Total Trades 478
Won Trades 304
Lost trades 174
Win Rate 63.60 %
Expected payoff -16.15
Gross Profit 18940.00
Gross Loss -26662.00
Total Net Profit -7722.00
-100%
-50%
0%
50%
100%
USD/CHF Jan 2025 - Jul 2025
0.69
Total Trades 453
Won Trades 269
Lost trades 184
Win Rate 59.38 %
Expected payoff -17.19
Gross Profit 17117.74
Gross Loss -24904.97
Total Net Profit -7787.23
-100%
-50%
0%
50%
100%
USD/JPY Jul 2025 - Sep 2025
0.69
Total Trades 315
Won Trades 197
Lost trades 118
Win Rate 62.54 %
Expected payoff -12.80
Gross Profit 8845.59
Gross Loss -12879.02
Total Net Profit -4033.43
-100%
-50%
0%
50%
100%
USD/JPY Jan 2025 - Jul 2025
0.66
Total Trades 468
Won Trades 333
Lost trades 135
Win Rate 71.15 %
Expected payoff -17.86
Gross Profit 16394.39
Gross Loss -24754.63
Total Net Profit -8360.24
-100%
-50%
0%
50%
100%
GBP/AUD Jan 2025 - Jul 2025
0.64
Total Trades 340
Won Trades 191
Lost trades 149
Win Rate 56.18 %
Expected payoff -28.31
Gross Profit 16751.84
Gross Loss -26376.90
Total Net Profit -9625.06
-100%
-50%
0%
50%
100%
USD/CHF Jul 2025 - Sep 2025
0.63
Total Trades 157
Won Trades 91
Lost trades 66
Win Rate 57.96 %
Expected payoff -20.65
Gross Profit 5495.15
Gross Loss -8737.73
Total Net Profit -3242.58
-100%
-50%
0%
50%
100%
USD/CHF Jul 2025 - Sep 2025
0.63
Total Trades 238
Won Trades 125
Lost trades 113
Win Rate 52.52 %
Expected payoff -16.29
Gross Profit 6613.11
Gross Loss -10488.97
Total Net Profit -3875.86
-100%
-50%
0%
50%
100%
USD/CAD Jul 2025 - Sep 2025
0.60
Total Trades 167
Won Trades 79
Lost trades 88
Win Rate 47.31 %
Expected payoff -17.32
Gross Profit 4314.75
Gross Loss -7206.97
Total Net Profit -2892.22
-100%
-50%
0%
50%
100%
AUD/USD Jul 2025 - Sep 2025
0.54
Total Trades 221
Won Trades 68
Lost trades 153
Win Rate 30.77 %
Expected payoff -20.56
Gross Profit 5345.00
Gross Loss -9889.00
Total Net Profit -4544.00
-100%
-50%
0%
50%
100%
NZD/USD Jul 2025 - Sep 2025
0.51
Total Trades 118
Won Trades 47
Lost trades 71
Win Rate 39.83 %
Expected payoff -23.54
Gross Profit 2893.00
Gross Loss -5671.00
Total Net Profit -2778.00
-100%
-50%
0%
50%
100%
NZD/USD Jul 2025 - Sep 2025
0.49
Total Trades 160
Won Trades 58
Lost trades 102
Win Rate 36.25 %
Expected payoff -19.43
Gross Profit 2995.00
Gross Loss -6104.00
Total Net Profit -3109.00
-100%
-50%
0%
50%
100%
NZD/USD Oct 2024 - Jan 2025
0.48
Total Trades 158
Won Trades 56
Lost trades 102
Win Rate 35.44 %
Expected payoff -32.21
Gross Profit 4659.00
Gross Loss -9748.00
Total Net Profit -5089.00
-100%
-50%
0%
50%
100%
NZD/USD Jan 2025 - Jul 2025
0.48
Total Trades 306
Won Trades 137
Lost trades 169
Win Rate 44.77 %
Expected payoff -32.11
Gross Profit 9214.00
Gross Loss -19040.00
Total Net Profit -9826.00
-100%
-50%
0%
50%
100%
GBP/CAD Jan 2025 - Jul 2025
0.47
Total Trades 241
Won Trades 127
Lost trades 114
Win Rate 52.70 %
Expected payoff -39.94
Gross Profit 8525.94
Gross Loss -18151.19
Total Net Profit -9625.25
-100%
-50%
0%
50%
100%
GBP/AUD Jul 2025 - Sep 2025
0.41
Total Trades 216
Won Trades 113
Lost trades 103
Win Rate 52.31 %
Expected payoff -39.74
Gross Profit 6068.99
Gross Loss -14652.10
Total Net Profit -8583.11
-100%
-50%
0%
50%
100%
USD/JPY Jul 2025 - Sep 2025
0.37
Total Trades 154
Won Trades 51
Lost trades 103
Win Rate 33.12 %
Expected payoff -53.29
Gross Profit 4755.83
Gross Loss -12962.32
Total Net Profit -8206.49
-100%
-50%
0%
50%
100%
AUD/USD Oct 2024 - Jan 2025
0.21
Total Trades 167
Won Trades 0
Lost trades 0
Win Rate 0.00 %
Expected payoff -57.37
Gross Profit 2536.00
Gross Loss -12117.00
Total Net Profit -9581.00
-100%
-50%
0%
50%
100%
GBP/CAD Jul 2025 - Sep 2025
0.09
Total Trades 132
Won Trades 14
Lost trades 118
Win Rate 10.61 %
Expected payoff -73.39
Gross Profit 999.81
Gross Loss -10686.70
Total Net Profit -9686.89
-100%
-50%
0%
50%
100%
AUD/USD Jul 2025 - Sep 2025
0.06
Total Trades 106
Won Trades 6
Lost trades 100
Win Rate 5.66 %
Expected payoff -92.54
Gross Profit 600.00
Gross Loss -10409.00
Total Net Profit -9809.00
-100%
-50%
0%
50%
100%

Comments