Navigation´╝ÜHome > Content >

SMC2.mq4

Time: 2011-08-17 | Download file:SMC2.mq4

//+------------------------------------------------------------------+
//|                                      SMC Trader Manual           |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
 extern double TakeProfit = 50;
 extern double Lots = 0.1;
 extern double InitialStop = 30;
 extern double TrailingStop = 20;
//#####################################################################
int init()
{
//---- 
ObjectCreate("OpenL", OBJ_TREND, 0, CurTime()-(Period()*60*30), High[10],CurTime(),High[10]);
ObjectSet("OpenL",6,LimeGreen);
ObjectSet("OpenL",7,STYLE_DOT);
ObjectSet("OpenL",10,0);
ObjectSetText("OpenL","OL");

ObjectCreate("OpenS", OBJ_TREND, 0, CurTime()-(Period()*60*30), Low[10],CurTime(),Low[10]);
ObjectSet("OpenS",6,HotPink);
ObjectSet("OpenS",7,STYLE_DOT);
ObjectSet("OpenS",10,0);
ObjectSetText("OpenS","OS");

ObjectCreate("CloseL", OBJ_TREND, 0, CurTime()-(Period()*60*30), Close[10],CurTime(),Close[10]);
ObjectSet("CloseL",6,Blue);
ObjectSet("CloseL",7,STYLE_DOT);
ObjectSet("CloseL",10,0);
ObjectSetText("CloseL","CL");

ObjectCreate("CloseS", OBJ_TREND, 0, CurTime()-(Period()*60*30), Open[10],CurTime(),Open[10]);
ObjectSet("CloseS",6,FireBrick);
ObjectSet("CloseS",7,STYLE_DOT);
ObjectSet("CloseS",10,0);
ObjectSetText("CloseS","CS");

ObjectCreate("TargetL", OBJ_TREND, 0, CurTime()-(Period()*60*30), Close[10],CurTime(),Close[10]);
ObjectSet("TargetL",6,Aqua);
ObjectSet("TargetL",7,STYLE_DOT);
ObjectSet("TargetL",10,0);
ObjectSetText("TargetL","CL");

ObjectCreate("TargetS", OBJ_TREND, 0, CurTime()-(Period()*60*30), Open[10],CurTime(),Open[10]);
ObjectSet("TargetS",6,Tomato);
ObjectSet("TargetS",7,STYLE_DOT);
ObjectSet("TargetS",10,0);
ObjectSetText("TargetS","CS");



Print("Initialising");

//----
   return(0);
  }
//#####################################################################

int start()
  {
   int cnt,total,ticket,MinDist,tmp;
   double Spread;
//############################################################################
  if(Bars<100){
     Print("bars less than 100");
     return(0);  
  }
//#########################################################################################
//~~~~~~~~~~~~~~~~Miscellaneous setup stuff~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 MinDist=MarketInfo(Symbol(),MODE_STOPLEVEL);
 Spread=(Ask-Bid);
//#########################################################################################
// use an indicator for data values
   double OpenLongVal   =ObjectGet("OpenL",3);
   double CloseLongVal  =ObjectGet("CloseL",3);
   double TargetLongVal =ObjectGet("TargetL",3);
   double OpenShortVal  =ObjectGet("OpenS",3);
   double CloseShortVal =ObjectGet("CloseS",3);
   double TargetShortVal=ObjectGet("TargetS",3);
//Print(Symbol()," ",OpenLongVal," ",CloseLongVal," ",OpenShortVal," ",CloseShortVal);
//########################################################################################
//##################     ORDER CLOSURE  ###################################################
// If Orders are in force then check for closure against Technicals LONG & SHORT
//CLOSE LONG Entries
  total=OrdersTotal();
  if(total>0)
   { 
   for(cnt=0;cnt CloseShortVal)
      {   
       OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close SHORT position
     }}
//Close Target Long
    OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);
    if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) //symbol check
     {
     if(Bid > TargetLongVal)
      {
      OrderClose(OrderTicket(),OrderLots(),Bid,3,Yellow);
     }}
//Close Target Short
    OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);
    if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) //symbol check
     {
     if(Ask > TargetShortVal)
      {
      OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);
     }}   
    
    }  // for loop return
    }   // close 1st if 
//##############################################################################
//##################     ORDER TRAILING STOP Adjustment  #######################
//TRAILING STOP: LONG
if(0==1)  //This is used to turn the trailing stop on & off
 {
  total=OrdersTotal();
  if(total>0)
   { 
   for(cnt=0;cnt (Point*TrailingStop)
     &&
     OrderStopLoss()0)
   { 
   for(cnt=0;cnt (Point*TrailingStop)
     &&
     OrderStopLoss() > Ask+(Point*TrailingStop) 
     )
     {OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(Point*TrailingStop),OrderTakeProfit(),0,Yellow);
          return(0);}
 }}
}  // end bracket for on/off switch
//##########################################################################################
//~~~~~~~~~~~ END OF ORDER Closure routines & Stoploss changes  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//##########################################################################################
//~~~~~~~~~~~~START of NEW ORDERS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//#########################  NEW POSITIONS ?  ######################################
if (0==1) // switch to turn ON/OFF history check
{  
 total=HistoryTotal();
 if(total>0)
  { 
   for(cnt=0;cnt0)
   { 
    for(cnt=0;cnt0)
    {
    if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
     }
     else Print("Error opening BUY order : ",GetLastError()); 
     return(0); 
   } 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//ENTRY RULES: SHORT                                     //################################
 if(Close[1]< OpenShortVal)
  {
   ticket=OrderSend( Symbol(),
                     OP_SELL,
                     Lots,
                     Bid,
                     3,//slippage
                     0,//stoploss
                     0,//takeprofit
                     "MaxMin Short",
                     16384,0,Red);
   if(ticket>0)
    {
     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
      }
      else Print("Error opening SELL order : ",GetLastError()); 
      return(0); 
   }

//####################################################################################
//############               End of PROGRAM                  #########################   
   return(0);
}

Recommend