SimplePivot





/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                                  SimplePivot.mq4 |
//|                  Copyright © 2006, Derk Wehler, Global One Group |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Derk Wehler, Global One Group"
#property link      "http://www.metaquotes.net"

//---- input parameters
extern int Lots = 1;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
   static int prevTradeOp = -1;
   static int prevBars = -1;
   static int ticketNum = -1;
   
   int curBars = Bars;
   if (prevBars == -1)
      prevBars = curBars;

   Print("curBars, prevBars = ", curBars);
   if (curBars == prevBars)
      return(0);
   Print("After checking bars");
      
   prevBars = curBars;
   
   // Only buy and tell on the first tick of new candle creation
   double prevHigh = High[1];
   double prevLow = Low[1];
   double curOpen = Open[0];
   double pivot = (prevHigh + prevLow) / 2;
   int tradeOp = OP_BUY;

   // Determine whether we are in a buy or sell position for this candle
   if (curOpen < prevHigh && curOpen > pivot)
      tradeOp = OP_SELL;

   // If we were in a buy, and still in a buy for this new candle, do not 
   // close and re-open the trade, giving up the spread again.  Same for sell.
   if (tradeOp == prevTradeOp && prevTradeOp != -1)
      return(0);
      
   Print("Closing old trade");
   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
   // Close the current trade
   if (ticketNum != -1)
   {
      OrderSelect(ticketNum, SELECT_BY_TICKET);
   
      // long position is opened
      if (OrderType() == OP_BUY) 
      {
         OrderClose(ticketNum, OrderLots(), Bid, 0, Violet);
      }
      // short position is opened
      else
      {
         OrderClose(ticketNum, OrderLots(), Ask, 0, Violet);
      }
   }
   
   Print("Opening new trade");
   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
   // Open new trade
   if (tradeOp == OP_BUY)
   {
     ticketNum = OrderSend(Symbol(), OP_BUY, Lots, Ask, 0, 0,
         0, "Simple Pivot", 55255, 0, Green);
      if (ticketNum > 0)
      {
         if (OrderSelect(ticketNum, SELECT_BY_TICKET))
            Print("BUY order opened : ",OrderOpenPrice());
      }
      else 
         Print("Error opening BUY order : ", GetLastError());
   }
   else
   {
      ticketNum = OrderSend(Symbol(), OP_SELL, Lots, Bid, 0, 0,
         0, "CSimple Pivot", 55255, 0, Red);
      if (ticketNum > 0)
      {
         if (OrderSelect(ticketNum, SELECT_BY_TICKET))
            Print("SELL order opened : ", OrderOpenPrice());
      }
      else 
         Print("Error opening SELL order : ", GetLastError());
   }
     
   return(0);
}
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains open prices of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

It Closes Orders by itself

Other Features: