NinaEA v.02

Author: emsjoflo, dr gaines, renato, and adil syed
Profit factor:
0.68
Price Data Components
Series array that contains close prices for each bar
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt Closes Orders by itself
Indicators Used
Moving average indicator
9 Views
0 Downloads
0 Favorites
NinaEA v.02
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                                  NinaEA v.02.mq4 |
//|                                   emsjoflo, dr gaines,and renato |
//|                                            inspired by adil syed |
//|                                  automaticforex.invisionzone.com |
//+------------------------------------------------------------------+
#property copyright "emsjoflo, dr gaines, renato, and adil syed"
#property link      "automaticforex.invisionzone.com"
#define MAGICMA  20050610

extern double Lots               = 0.1;
extern double MaximumRisk        = 0.02;
extern double DecreaseFactor     = 3;
extern double MovingPeriod       = 12;
extern double MovingShift        = 6;
extern int       PeriodWATR=10;
extern double    Kwatr=1;
extern int       highlow=0;
extern int       cbars = 1000;
extern int       from  = 0;
extern int       maP  = 50;
extern double    lots=0.1;
extern int       SMAspread=0;
extern int       StopLoss=0;
extern int       Slippage=4;
double   nina, SL=0;
int      i, buys, sells;
//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
//---- select lot size
   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//---- calcuulate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         //----
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//---- return lot size
   if(lot<0.1) lot=0.1;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int    res;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
      ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
      nina = iCustom(NULL,0,"NINA",PeriodWATR,Kwatr,highlow,cbars,from,maP,0,1)-iCustom(NULL,0,"NINA",PeriodWATR,Kwatr,highlow,cbars,from,maP,1,1);
//---- sell conditions
      if(Open[1]>ma && Close[1]<ma)  
      {
      if (nina < 0)
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
      return;
     }
//---- buy conditions
  if(Open[1]<ma && Close[1]>ma)  
     {
     
      if (nina > 0)
     
     
     res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
      return;
     }
//----
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double ma;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
  ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
   
     nina = iCustom(NULL,0,"NINA",PeriodWATR,Kwatr,highlow,cbars,from,maP,0,1)-iCustom(NULL,0,"NINA",PeriodWATR,Kwatr,highlow,cbars,from,maP,1,1);
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //---- check order type 
      if(OrderType()==OP_BUY)
        {
         if(Open[1]>ma && Close[1]<ma) if (nina > 0)OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(Open[1]<ma && Close[1]>ma)if (nina < 0) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         break;
        }
     }
//----
  }
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
//---- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
//----
  }
//+------------------------------------------------------------------+

Profitability Reports

NZD/USD Jul 2025 - Sep 2025
0.34
Total Trades 91
Won Trades 16
Lost trades 75
Win Rate 17.58 %
Expected payoff -6.58
Gross Profit 311.40
Gross Loss -910.40
Total Net Profit -599.00
-100%
-50%
0%
50%
100%
GBP/USD Jul 2025 - Sep 2025
0.72
Total Trades 113
Won Trades 29
Lost trades 84
Win Rate 25.66 %
Expected payoff -4.13
Gross Profit 1201.10
Gross Loss -1667.50
Total Net Profit -466.40
-100%
-50%
0%
50%
100%
GBP/CAD Jul 2025 - Sep 2025
0.31
Total Trades 104
Won Trades 14
Lost trades 90
Win Rate 13.46 %
Expected payoff -12.52
Gross Profit 594.01
Gross Loss -1895.91
Total Net Profit -1301.90
-100%
-50%
0%
50%
100%
GBP/AUD Jul 2025 - Sep 2025
0.00
Total Trades 0
Won Trades 0
Lost trades 0
Win Rate 0.0 %
Expected payoff 0.00
Gross Profit 0.00
Gross Loss 0.00
Total Net Profit 0.00
-100%
-50%
0%
50%
100%
EUR/USD Jul 2025 - Sep 2025
0.48
Total Trades 69
Won Trades 15
Lost trades 54
Win Rate 21.74 %
Expected payoff -13.22
Gross Profit 829.40
Gross Loss -1741.50
Total Net Profit -912.10
-100%
-50%
0%
50%
100%
AUD/USD Jul 2025 - Sep 2025
0.61
Total Trades 103
Won Trades 19
Lost trades 84
Win Rate 18.45 %
Expected payoff -3.12
Gross Profit 492.70
Gross Loss -813.60
Total Net Profit -320.90
-100%
-50%
0%
50%
100%
USD/JPY Jul 2025 - Sep 2025
2.06
Total Trades 42
Won Trades 17
Lost trades 25
Win Rate 40.48 %
Expected payoff 12.94
Gross Profit 1053.79
Gross Loss -510.43
Total Net Profit 543.36
-100%
-50%
0%
50%
100%
USD/CHF Jul 2025 - Sep 2025
0.47
Total Trades 40
Won Trades 13
Lost trades 27
Win Rate 32.50 %
Expected payoff -15.07
Gross Profit 541.24
Gross Loss -1143.89
Total Net Profit -602.65
-100%
-50%
0%
50%
100%
NZD/USD Jul 2025 - Sep 2025
1.91
Total Trades 34
Won Trades 9
Lost trades 25
Win Rate 26.47 %
Expected payoff 9.74
Gross Profit 696.00
Gross Loss -364.70
Total Net Profit 331.30
-100%
-50%
0%
50%
100%
GBP/USD Jul 2025 - Sep 2025
0.34
Total Trades 43
Won Trades 8
Lost trades 35
Win Rate 18.60 %
Expected payoff -19.25
Gross Profit 418.40
Gross Loss -1246.20
Total Net Profit -827.80
-100%
-50%
0%
50%
100%

Comments