Author: Ron Thompson
Profit factor:
0.57

This script is designed to automatically trade on the Forex market using the MetaTrader platform. It looks at the price fluctuations of a currency pair and tries to make profitable trades based on a specific indicator. Here's the breakdown:

  1. Initial Setup: The script starts by defining some settings that the user can adjust. These settings include:

    • Lots: The amount of currency to trade in each transaction. Think of it as the size of the bet.
    • TakeProfit: The amount of profit, in points, the script aims to make on each trade. When the price reaches this level, the trade is automatically closed, securing the profit.
    • StopLoss: The maximum amount of loss, in points, the script is willing to accept on each trade. If the price moves against the trade and hits this level, the trade is automatically closed to limit losses.
    • Interval: a bar (period) counter to increment order count.
    • myCCI: this variable is the period length for the CCI indicator.
  2. Checking Conditions Before Trading: Before placing any trades, the script performs some checks:

    • Sufficient Funds: It verifies that the trading account has enough available money to cover the potential cost of the trade.
    • Sufficient Data: It ensures that there is enough historical price data available to make informed decisions.
    • Bar Movement: It determines if the price has moved since the last time the script checked, to avoid redundant calculations.
  3. Calculating Profit and Loss Levels: The script calculates the TakeProfit and StopLoss price levels based on the current market price and the user-defined settings. These levels determine when a trade will be automatically closed for profit or to prevent further losses.

  4. CCI Indicator: The script employs the Commodity Channel Index (CCI) indicator, which is a tool used to identify overbought or oversold conditions in the market. In this code, CCI is used to find crossing points.

  5. Making Trading Decisions Based on Indicator Crossings: This is the heart of the script's logic. It looks for points where the CCI crosses above or below zero.

    • Rising Cross: When the CCI crosses above zero, it's interpreted as a potential buy signal.
    • Falling Cross: When the CCI crosses below zero, it's interpreted as a potential sell signal.
  6. Opening and Closing Trades:

    • Closing Existing Orders: When a CCI cross occurs, the script first closes any existing open trades for that currency pair.
    • Opening New Orders: Based on whether the cross is rising or falling, the script opens a new buy or sell order, respectively. It also sets the TakeProfit and StopLoss levels for the new trade.
  7. Pyramiding

    • Pyramiding: If the current order is already open, more orders are created after some price intervals. This creates layers of new orders when the trend is already in place.

In essence, this script is a simple automated trading system that uses the CCI indicator to identify potential buying and selling opportunities, automatically opening and closing trades based on pre-defined rules and risk management settings.

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
14 Views
0 Downloads
0 Favorites
zzz006
/*-----------------------------+
|			       |
| 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=28;


// 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;
      return(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

NZD/USD Jul 2025 - Sep 2025
0.73
Total Trades 618
Won Trades 328
Lost trades 290
Win Rate 53.07 %
Expected payoff -1.49
Gross Profit 2488.50
Gross Loss -3408.80
Total Net Profit -920.30
-100%
-50%
0%
50%
100%
GBP/USD Jul 2025 - Sep 2025
0.75
Total Trades 419
Won Trades 218
Lost trades 201
Win Rate 52.03 %
Expected payoff -1.48
Gross Profit 1907.20
Gross Loss -2527.00
Total Net Profit -619.80
-100%
-50%
0%
50%
100%
GBP/CAD Jul 2025 - Sep 2025
0.19
Total Trades 712
Won Trades 254
Lost trades 458
Win Rate 35.67 %
Expected payoff -9.25
Gross Profit 1573.51
Gross Loss -8161.13
Total Net Profit -6587.62
-100%
-50%
0%
50%
100%
GBP/AUD Jul 2025 - Sep 2025
0.27
Total Trades 597
Won Trades 266
Lost trades 331
Win Rate 44.56 %
Expected payoff -6.93
Gross Profit 1558.36
Gross Loss -5694.76
Total Net Profit -4136.40
-100%
-50%
0%
50%
100%
EUR/USD Jul 2025 - Sep 2025
0.00
Total Trades 56
Won Trades 35
Lost trades 21
Win Rate 62.50 %
Expected payoff -1880.21
Gross Profit 296.20
Gross Loss -105587.90
Total Net Profit -105291.70
-100%
-50%
0%
50%
100%
AUD/USD Jul 2025 - Sep 2025
0.78
Total Trades 654
Won Trades 318
Lost trades 336
Win Rate 48.62 %
Expected payoff -1.01
Gross Profit 2350.60
Gross Loss -3008.30
Total Net Profit -657.70
-100%
-50%
0%
50%
100%
USD/JPY Jul 2025 - Sep 2025
0.29
Total Trades 193
Won Trades 108
Lost trades 85
Win Rate 55.96 %
Expected payoff -8.74
Gross Profit 675.28
Gross Loss -2362.29
Total Net Profit -1687.01
-100%
-50%
0%
50%
100%
USD/CHF Jul 2025 - Sep 2025
0.99
Total Trades 199
Won Trades 107
Lost trades 92
Win Rate 53.77 %
Expected payoff -0.06
Gross Profit 1193.02
Gross Loss -1204.40
Total Net Profit -11.38
-100%
-50%
0%
50%
100%
USD/CAD Jul 2025 - Sep 2025
1.07
Total Trades 205
Won Trades 125
Lost trades 80
Win Rate 60.98 %
Expected payoff 0.26
Gross Profit 785.84
Gross Loss -733.06
Total Net Profit 52.78
-100%
-50%
0%
50%
100%
NZD/USD Jul 2025 - Sep 2025
1.01
Total Trades 217
Won Trades 115
Lost trades 102
Win Rate 53.00 %
Expected payoff 0.06
Gross Profit 1017.20
Gross Loss -1004.30
Total Net Profit 12.90
-100%
-50%
0%
50%
100%

Comments