NinaEA v.02

Author: emsjoflo, dr gaines, renato, and adil syed
Profit factor:
0.64
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
6 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

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%
GBP/CAD Jul 2025 - Sep 2025
0.46
Total Trades 52
Won Trades 14
Lost trades 38
Win Rate 26.92 %
Expected payoff -12.97
Gross Profit 569.63
Gross Loss -1243.83
Total Net Profit -674.20
-100%
-50%
0%
50%
100%
GBP/AUD Jul 2025 - Sep 2025
1.51
Total Trades 47
Won Trades 16
Lost trades 31
Win Rate 34.04 %
Expected payoff 7.54
Gross Profit 1053.90
Gross Loss -699.73
Total Net Profit 354.17
-100%
-50%
0%
50%
100%
AUD/USD Jul 2025 - Sep 2025
0.32
Total Trades 43
Won Trades 11
Lost trades 32
Win Rate 25.58 %
Expected payoff -10.42
Gross Profit 209.50
Gross Loss -657.60
Total Net Profit -448.10
-100%
-50%
0%
50%
100%
USD/JPY Jan 2025 - Jul 2025
0.68
Total Trades 86
Won Trades 32
Lost trades 54
Win Rate 37.21 %
Expected payoff -11.37
Gross Profit 2047.50
Gross Loss -3024.91
Total Net Profit -977.41
-100%
-50%
0%
50%
100%
USD/CHF Jan 2025 - Jul 2025
0.57
Total Trades 104
Won Trades 27
Lost trades 77
Win Rate 25.96 %
Expected payoff -10.52
Gross Profit 1445.15
Gross Loss -2539.61
Total Net Profit -1094.46
-100%
-50%
0%
50%
100%
USD/CAD Jan 2025 - Jul 2025
0.29
Total Trades 88
Won Trades 18
Lost trades 70
Win Rate 20.45 %
Expected payoff -14.10
Gross Profit 503.48
Gross Loss -1744.61
Total Net Profit -1241.13
-100%
-50%
0%
50%
100%
NZD/USD Jan 2025 - Jul 2025
0.63
Total Trades 95
Won Trades 24
Lost trades 71
Win Rate 25.26 %
Expected payoff -4.89
Gross Profit 803.30
Gross Loss -1267.40
Total Net Profit -464.10
-100%
-50%
0%
50%
100%
GBP/CAD Jan 2025 - Jul 2025
0.81
Total Trades 116
Won Trades 28
Lost trades 88
Win Rate 24.14 %
Expected payoff -4.37
Gross Profit 2176.80
Gross Loss -2683.64
Total Net Profit -506.84
-100%
-50%
0%
50%
100%
GBP/AUD Jan 2025 - Jul 2025
0.82
Total Trades 119
Won Trades 25
Lost trades 94
Win Rate 21.01 %
Expected payoff -3.89
Gross Profit 2144.20
Gross Loss -2606.76
Total Net Profit -462.56
-100%
-50%
0%
50%
100%

Comments