Author: Ron Thompson
Profit factor:
0.69

Okay, here's a breakdown of what this MetaTrader script does, explained in a way that doesn't require any programming knowledge.

In Simple Terms:

This script is designed to automatically trade on the Forex market based on a specific strategy. It's like a robot trader that follows a set of rules to decide when to buy or sell a currency pair.

Here's the breakdown of how it works:

  1. Settings You Control:

    • Lots: This determines the size of each trade the script makes. A larger "Lots" value means the script will trade a larger amount of currency, which can lead to bigger profits or bigger losses.
    • TakeProfit: This is the target profit, expressed in 'points', for each trade. When the trade reaches this profit level, the script will automatically close the trade and secure the profit.
    • StopLoss: This is the level of acceptable loss, also in 'points'. If a trade starts losing money and reaches this level, the script will automatically close the trade to prevent further losses. Setting this to zero means the script will never automatically close a losing trade.
    • Interval: This controls how often the script will add to an existing winning trade. The higher this number, the longer it will wait before adding to the trade.
    • myCCI: This setting determines the period (number of past data points) used for calculating a technical indicator called the Commodity Channel Index (CCI). CCI is a tool used to identify overbought or oversold conditions in the market.
  2. What the Script Monitors:

    • Price Fluctuations: The script continuously monitors the price of the currency pair.
    • CCI Indicator: The script calculates the CCI to help determine if the currency pair is potentially overbought (likely to go down) or oversold (likely to go up).
  3. Decision Making:

    • CCI Crossing: The main trigger for the script to take action is when the CCI line crosses above or below the zero line. Crossing above zero is considered a "buy" signal, while crossing below is a "sell" signal.
    • Closing Existing Trades: When the CCI crosses the zero line (giving a new buy or sell signal), the script first closes any existing open trades for that currency pair.
    • Opening New Trades: After closing any existing trades, the script opens a new trade in the direction indicated by the CCI crossing. If the CCI crossed above zero, it opens a "buy" trade; if it crossed below zero, it opens a "sell" trade. It uses the specified "Lots" size and sets the "TakeProfit" and "StopLoss" levels.
    • Adding to Winning Trades (Pyramiding): If there's already an open trade and enough time has passed ("Interval" setting), the script will open another trade in the same direction. This is called "pyramiding" and it aims to increase profits if the trend continues.
  4. Safety Checks:

    • Account Balance: The script checks if there's enough money in the trading account to place a trade of the specified "Lots" size. If not, it stops trading.
    • Sufficient Data: The script ensures there's enough historical price data available before it starts making decisions.

In summary, this script watches the price of a currency pair, calculates the CCI indicator, and opens/closes trades based on CCI crossing zero. It also uses TakeProfit and StopLoss levels to manage risk and can pyramid into winning trades based on the specified interval.

Price Data Components
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It automatically opens orders when conditions are reached
Indicators Used
Commodity channel index
3 Views
0 Downloads
0 Favorites
zzz005
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//| 1MA Expert                               |
//+------------------------------------------------------------------+
#property copyright "Ron Thompson"
#property link      "http://www.lightpatch.com/forex"

// User Input
extern double Lots = 0.1;
extern int    TakeProfit=92;
extern int    StopLoss=0;
extern int    Interval=4;
extern int       myCCI=30;


// Global scope
double barmove0 = 0;
double barmove1 = 0;
int         itv = 0;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//|------------------------------------------------------------------|

int init()
  {
   itv=Interval;
   return(0);
  }


//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }


//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

int start()
  {

   bool      found=false;
   bool     rising=false;
   bool    falling=false;
   bool      cross=false;

   double slA=0, slB=0, tpA=0, tpB=0;
   double p=Point();
   
   double cCI0;
   double cCI1;
   
   int      cnt=0;

   // Error checking
   if(AccountFreeMargin()<(1000*Lots))        {Print("-----NO MONEY"); return(0);}
   if(Bars<100)                               {Print("-----NO BARS "); return(0);}
   if(barmove0==Open[0] && barmove1==Open[1]) {                        return(0);}

   // bars moved, update current position
   barmove0=Open[0];
   barmove1=Open[1];

   // interval (bar) counter
   // used to pyramid orders during trend
   itv++;
   
   // since the bar just moved
   // calculate TP and SL for (B)id and (A)sk
   tpA=Ask+(p*TakeProfit);
   slA=Ask-(p*StopLoss);
   tpB=Bid-(p*TakeProfit);
   slB=Bid+(p*StopLoss);
   if (TakeProfit==0) {tpA=0; tpB=0;}           
   if (StopLoss==0)   {slA=0; slB=0;}           
   
   // get CCI based on OPEN
   cCI0=iCCI(Symbol(),0,myCCI,PRICE_OPEN,0);
   cCI1=iCCI(Symbol(),0,myCCI,PRICE_OPEN,1);

   // is it crossing zero up or down
   if (cCI1<0 && cCI0>0) { rising=true; cross=true; Print("Rising  Cross");}
   if (cCI1>0 && cCI0<0) {falling=true; cross=true; Print("Falling Cross");}
   
   // close then open orders based on cross
   // pyramid below based on itv
   if (cross)
     {
      // Close ALL the open orders 
      for(cnt=0;cnt<OrdersTotal();cnt++)
        {
         OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         if(OrderSymbol()==Symbol())
           {
            if (OrderType()==0) {OrderClose(OrderTicket(),Lots,Bid,3,White);}
            if (OrderType()==1) {OrderClose(OrderTicket(),Lots,Ask,3,Red);}
            itv=0;
           }
        }
      // Open new order based on direction of cross
      if (rising)  OrderSend(Symbol(),OP_BUY,Lots,Ask,3,slA,tpA,"ZZZ100",11123,0,White);
      if (falling) OrderSend(Symbol(),OP_SELL,Lots,Bid,3,slB,tpB,"ZZZ100",11321,0,Red);
      
      // clear the interval counter
      itv=0;
     }
   
   // Only pyramid if order already open
   found=false;
   for(cnt=0;cnt<OrdersTotal();cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()==Symbol())
        {
         if (OrderType()==0)  //BUY
           {
            if (itv >= Interval)
              {
               OrderSend(Symbol(),OP_BUY,Lots,Ask,3,slA,tpA,"ZZZ100",11123,0,White);
               itv=0;
              }
           }
         if (OrderType()==1)  //SELL
           {
            if (itv >= Interval)
              {
               OrderSend(Symbol(),OP_SELL,Lots,Bid,3,slB,tpB,"ZZZ100",11321,0,Red);
               itv=0;
              }
           }
         found=true;
         break;
        }
     }
   return(0);
  }

Profitability Reports

AUD/USD Jan 2025 - Jul 2025
0.42
Total Trades 582
Won Trades 276
Lost trades 306
Win Rate 47.42 %
Expected payoff -5.79
Gross Profit 2397.20
Gross Loss -5768.80
Total Net Profit -3371.60
-100%
-50%
0%
50%
100%
USD/CAD Oct 2024 - Jan 2025
1.18
Total Trades 176
Won Trades 111
Lost trades 65
Win Rate 63.07 %
Expected payoff 0.60
Gross Profit 697.28
Gross Loss -592.51
Total Net Profit 104.77
-100%
-50%
0%
50%
100%
GBP/USD Oct 2024 - Jan 2025
0.73
Total Trades 204
Won Trades 127
Lost trades 77
Win Rate 62.25 %
Expected payoff -2.05
Gross Profit 1117.40
Gross Loss -1534.80
Total Net Profit -417.40
-100%
-50%
0%
50%
100%
GBP/CAD Oct 2024 - Jan 2025
0.51
Total Trades 174
Won Trades 0
Lost trades 0
Win Rate 0.00 %
Expected payoff -3.67
Gross Profit 665.83
Gross Loss -1304.82
Total Net Profit -638.99
-100%
-50%
0%
50%
100%
AUD/USD Oct 2024 - Jan 2025
0.59
Total Trades 211
Won Trades 0
Lost trades 0
Win Rate 0.00 %
Expected payoff -3.24
Gross Profit 987.90
Gross Loss -1671.40
Total Net Profit -683.50
-100%
-50%
0%
50%
100%

Comments