Author: Ron Thompson
Profit factor:
0.73

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
2 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

USD/CAD Oct 2024 - Jan 2025
1.02
Total Trades 212
Won Trades 131
Lost trades 81
Win Rate 61.79 %
Expected payoff 0.09
Gross Profit 829.84
Gross Loss -811.42
Total Net Profit 18.42
-100%
-50%
0%
50%
100%
GBP/USD Oct 2024 - Jan 2025
0.69
Total Trades 220
Won Trades 133
Lost trades 87
Win Rate 60.45 %
Expected payoff -2.38
Gross Profit 1161.90
Gross Loss -1685.70
Total Net Profit -523.80
-100%
-50%
0%
50%
100%
GBP/CAD Oct 2024 - Jan 2025
0.57
Total Trades 191
Won Trades 0
Lost trades 0
Win Rate 0.00 %
Expected payoff -3.12
Gross Profit 784.90
Gross Loss -1380.56
Total Net Profit -595.66
-100%
-50%
0%
50%
100%
AUD/USD Oct 2024 - Jan 2025
0.63
Total Trades 234
Won Trades 0
Lost trades 0
Win Rate 0.00 %
Expected payoff -2.80
Gross Profit 1138.20
Gross Loss -1792.90
Total Net Profit -654.70
-100%
-50%
0%
50%
100%

Comments