Profit factor:
0.46
Price Data Components
Series array that contains open time of each barSeries array that contains open prices of each barSeries array that contains the highest prices of each barSeries array that contains the lowest prices of each bar
Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reached
Indicators Used
MACD HistogramMoving Average of OscillatorForce index
15 Views
1 Downloads
0 Favorites
TSD(x)
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

/*[[
	Name := TDSGlobal
	Author := Copyright © 2005 Bob O'Brien / Barcode, Modified by Frank Chamanara(to be run on a 4hr chart)
	Link := 
	Notes := Based on Alexander Elder's Triple Screen system, Weekly System.
]]*/

//+------------------------------------------------------------------+
//|  External Variables                                              |
//+------------------------------------------------------------------+

extern int Lots = 1;
extern int TakeProfit = 50;
extern int Stoploss = 25;
extern int TrailingStop = 20;	
extern int Slippage=5;			// Slippage
//+------------------------------------------------------------------+
//|   Internal Variables                                             |
//+------------------------------------------------------------------+

int BuyEntryOrderTicket=0,SellEntryOrderTicket=0,cnt=0,total=0,h,m,risk=20;

double MacdCurrent=0, MacdPrevious=0, MacdPrevious2=0, Direction=0, OsMAPrevious=0, OsMAPrevious2=0, OsMADirection=0;
double O1,H1,L1,newbar=0;
double PriceOpen=0,lotMM;
double ForcePos=0, ForceNeg=0, Force=0,NewPrice=0;						

bool First=True;
bool hasatrade=false;

datetime prevtime=0;

int start()
{

// initial data checks

   if(Bars<50)
     {
      Print("bars less than 50");
      return(0);  
     }

	     Comment(Year(),"-",Month(),"-",Day(),"  ",Hour(),":",Minute(),
        "\n","MacdPrevious = ",MacdPrevious,"    OsMAPrevious = ",OsMAPrevious,
        "\n","MacdPrevious2 = ",MacdPrevious2,"   OsMAPrevious2 = ",OsMAPrevious2,
        "\n","Direction = ",Direction,"    OsMADirection = ",OsMADirection,
        "\n",
        "\n","Daily Force = ",Force,
        "\n","Is Force Bullish = ",ForcePos,
        "\n","Is Force Bearish = ",ForceNeg,
        "\n",
        "\n","Total Orders = ",total,
        "\n",
        "\n","Daily Open = ",O1,
        "\n","Daily High = ",H1,
        "\n","Daily Low = ",L1,
        "\n",
        "\n","Current Ask Price + 16 pips = ",Ask+(16*Point),
        "\n","Current Bid Price - 16 pips = ",Bid-(16*Point));  
     
if(prevtime == Time[0]) return(0);      // Always start at the new bar
prevtime = Time[0];

// =================================================================================
// PYRAMIDING - LINEAR
// Money Management risk exposure compounding
// =================================================================================
  lotMM = (MathCeil(AccountBalance() * risk / 20000) / 10);
  if (lotMM < 0.1) lotMM = Lots;
  if (lotMM > 1.0) lotMM = MathCeil(lotMM);

/////////////////////////////////////////////////
//  Pending Order Management
/////////////////////////////////////////////////
total=OrdersTotal();
hasatrade = false;   
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

         if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP)
         {
            hasatrade = true;
				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)
         {
            hasatrade = true;
				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++)
      
  if(AccountFreeMargin()<(100*Lots))
    {
     Print("We have no money. Free Margin = ", AccountFreeMargin());    
     return(0);  
    }      
  

     h = TimeHour(CurTime());
     m = TimeMinute(CurTime());
     O1=iOpen(NULL,1440,1);
     H1=iHigh(NULL,1440,1);
     L1=iLow(NULL,1440,1);

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

     Force = iForce(NULL,60,24,MODE_EMA,PRICE_CLOSE,1); 
     ForcePos = iForce(NULL,60,24,MODE_EMA,PRICE_CLOSE,1) > 0;
	  ForceNeg = iForce(NULL,60,24,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;
	   

/////////////////////////////////////////////////////////////////
//  Process the next bar details for any possible buy/sell order
/////////////////////////////////////////////////////////////////
if (!hasatrade)   // no open orders
{   
	   
	   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,lotMM,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,lotMM,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,lotMM,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,lotMM,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)

} // end of hasatrade 

/////////////////////////////////////////////////
//  Stop Loss Management
/////////////////////////////////////////////////

  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++)
//return(0);
} // close for int start

Profitability Reports

NZD/USD Jul 2025 - Sep 2025
0.48
Total Trades 422
Won Trades 172
Lost trades 250
Win Rate 40.76 %
Expected payoff -14.15
Gross Profit 5488.70
Gross Loss -11459.90
Total Net Profit -5971.20
-100%
-50%
0%
50%
100%
GBP/USD Jul 2025 - Sep 2025
0.64
Total Trades 463
Won Trades 240
Lost trades 223
Win Rate 51.84 %
Expected payoff -12.24
Gross Profit 10126.90
Gross Loss -15796.20
Total Net Profit -5669.30
-100%
-50%
0%
50%
100%
GBP/CAD Jul 2025 - Sep 2025
0.11
Total Trades 279
Won Trades 66
Lost trades 213
Win Rate 23.66 %
Expected payoff -35.50
Gross Profit 1266.87
Gross Loss -11170.58
Total Net Profit -9903.71
-100%
-50%
0%
50%
100%
GBP/AUD Jul 2025 - Sep 2025
0.12
Total Trades 310
Won Trades 80
Lost trades 230
Win Rate 25.81 %
Expected payoff -31.95
Gross Profit 1391.45
Gross Loss -11294.58
Total Net Profit -9903.13
-100%
-50%
0%
50%
100%
EUR/USD Jul 2025 - Sep 2025
0.68
Total Trades 453
Won Trades 226
Lost trades 227
Win Rate 49.89 %
Expected payoff -11.58
Gross Profit 11187.30
Gross Loss -16434.30
Total Net Profit -5247.00
-100%
-50%
0%
50%
100%
AUD/USD Jul 2025 - Sep 2025
0.49
Total Trades 491
Won Trades 199
Lost trades 292
Win Rate 40.53 %
Expected payoff -13.03
Gross Profit 6222.80
Gross Loss -12621.60
Total Net Profit -6398.80
-100%
-50%
0%
50%
100%
NZD/USD Oct 2024 - Jan 2025
0.52
Total Trades 274
Won Trades 134
Lost trades 140
Win Rate 48.91 %
Expected payoff -16.96
Gross Profit 4962.00
Gross Loss -9608.70
Total Net Profit -4646.70
-100%
-50%
0%
50%
100%
GBP/USD Oct 2024 - Jan 2025
0.82
Total Trades 272
Won Trades 159
Lost trades 113
Win Rate 58.46 %
Expected payoff -8.26
Gross Profit 10372.70
Gross Loss -12618.20
Total Net Profit -2245.50
-100%
-50%
0%
50%
100%
AUD/USD Oct 2024 - Jan 2025
0.32
Total Trades 309
Won Trades 0
Lost trades 0
Win Rate 0.00 %
Expected payoff -25.73
Gross Profit 3693.30
Gross Loss -11643.40
Total Net Profit -7950.10
-100%
-50%
0%
50%
100%

Comments