sixperiod_v31





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

//+------------------------------------------------------------------+
//+ Trade on 6-period HLCC/4 trend NO T/P, keep adjusting S/L        |
//+------------------------------------------------------------------+


#property copyright "Ron Thompson"
#property link      "http://www.lightpatch.com/forex"

// User Input
extern double Lots = 0.1;
extern double Stop_Loss = 15;


//+------------------------------------------------------------------+
//| What to do 1st                                                   |
//+------------------------------------------------------------------+

int init ()
  {
   return(0);
  }



//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

int deinit()
  {
   return(0);
  }



//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double oTYP0=0, oTYP1=0, oTYP2=0, oTYP3=0, oTYP4=0, oTYP5=0;
   double total;
   int cnt;
   bool foundorder=False;

   double nslB=0,nslS=0,osl=0,ccl=0;
   
   //
   // Error checking
   //
   
   if(Bars<100)
     {
      Print("bars less than 100");
      return(0);
     }
   
   if(AccountFreeMargin()<(1000*Lots))
     {
      Print("We have no money");
      return(0);
     }

   //
   // only one order at a time/per symbol 
   // so see if our symbol has an order open
   //
   total=OrdersTotal();
   for(cnt=0;cnt<OrdersTotal();cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()==Symbol())
        {

         // An order for this Symbol() is open so check
         // the stoploss, adjust upward as price changes
         // in the favorable direction.

         ccl=Close[1]; // 1 NOT 0 or the swings will kill ya!
         osl=OrderStopLoss();
         nslB=ccl-(Stop_Loss*Point());
         nslS=ccl+(Stop_Loss*Point());

         // Existing BUY orders trailing stop
         if ( OrderType() == 0 )
           {
            Comment("BUY  ",Symbol()," osl=",osl," nslB=",nslB );
            if ( nslB > osl )
              {
               Print("BUY MODIFY! ",Symbol()," osl=",osl," ccl=",ccl," nslB=",nslB);
               OrderModify(OrderTicket(),OrderOpenPrice(),nslB,OrderTakeProfit(),0,Red);
              }
           }

         // Existing SELL orders trailing stop
         if ( OrderType() == 1 )
           {
            Comment("SELL ",Symbol()," osl=",osl," nslS=",nslS );
            if ( nslS < osl )
              {
               Print("SELL MODIFY! ",Symbol()," osl=",osl," ccl=",ccl," nslS=",nslS );
               OrderModify(OrderTicket(),OrderOpenPrice(),nslS,OrderTakeProfit(),0,Red);
              }
           }

         // set the 'found' flag so we don't buy/sell any more
         foundorder=True;
         break;
        }
     }

   if ( foundorder == False )
     {

      Comment(" ");

      // three-period
      oTYP0=(High[0]+Low[0]+Close[0]+Close[0])/4;
      oTYP1=(High[1]+Low[1]+Close[1]+Close[1])/4;
      oTYP2=(High[2]+Low[2]+Close[2]+Close[2])/4;
      oTYP3=(High[3]+Low[3]+Close[3]+Close[3])/4;
      oTYP4=(High[4]+Low[4]+Close[4]+Close[4])/4;
      oTYP5=(High[5]+Low[5]+Close[5]+Close[5])/4;

      // down trend
      if(oTYP5>oTYP4 && oTYP4>oTYP3 && oTYP3>oTYP2 && oTYP2>oTYP1 && oTYP1>oTYP0)
        {
         // no take profit so I can scalp if I want
         Print("SELL Order started  ",Bid,"   ",Bid-(Stop_Loss*Point()) );
         OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+(Stop_Loss*Point()),0,"5P Sell",16789,0,Red);
         if(GetLastError()==0)Comment("SELL Order opened : ",Bid );

        }
      
      // up trend
      if(oTYP5<oTYP4 && oTYP4<oTYP3 && oTYP3<oTYP2 && oTYP2<oTYP1 && oTYP1<oTYP0)
        {
         // no take profit so I can scalp if I want
         Print("BUY  Order started  ",Ask,"   ",Ask-(Stop_Loss*Point()) );
         OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-(Stop_Loss*Point()),0,"5P Buy",16543,0,White);
         if(GetLastError()==0)Comment("BUY Order opened : ",Ask);
        }
     }           
      
   return(0);
  }





Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders
It can change open orders parameters, due to possible stepping strategy
It automatically opens orders when conditions are reached

Other Features: