Plan_x_www.forex-instruments.info

Author: Copyright � 2005, Peter Ingram
Price Data Components
Series array that contains open time of each bar
Orders Execution
It automatically opens orders when conditions are reachedChecks for the total of open ordersIt can change open orders parameters, due to possible stepping strategy
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites

Profitability Reports

AUD/USD Oct 2024 - Jan 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%
GBP/USD Oct 2024 - Jan 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%
Plan_x_www.forex-instruments.info
//+------------------------------------------------------------------+
//|                                                       plan x.mq4 |
//|                                   Copyright © 2005, Peter Ingram |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Peter Ingram"
#property link      "http://www.metaquotes.net"
//----
extern double  Lots              =0.1;
extern int     Slippage          =2;
extern int     LongTarget        =25;
extern int     ShortTarget       =20;
extern int     InitialSL         =25;
extern int     TrailStopTrigger  =10;
extern int     TrailStopPips     =5;
extern double  BeginTime         =11;
extern double  EndTime           =15;
extern int     MagicNumber       =411;
extern string  comment           ="plan x";
//----
int shift,c,b,i,s,ticket;
double tsl;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init(){return(0);}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit(){return(0);}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  int start()
  {
   if(Period()!=PERIOD_M15) {Alert("Expert for 15m Chart!"); return(0);}
   PosCounter();
   //
   shift=iBarShift(NULL,PERIOD_M15,begintime()); //Print(shift);
   //
     if(CurTime()<endtime() && CurTime()>subsequentclose())   
     {//15min timeframe
        if(Close[1]>(Close[shift]+(LongTarget*Point)) && b==0)  
        {
         ticket=OrderSend(Symbol(),
                          OP_BUY,
                          Lots,
                          Ask,
                          Slippage,
                          Ask-(InitialSL*Point),
                          0,//OrderTakeProfit
                          comment,
                          MagicNumber,
                          0,//Order expiration time/date
                          Aqua);
           if(ticket>0)   
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
            {  Print(ticket); 
            }
            else Print("Error Opening Buy Order: ",GetLastError());
           return(0);  
            }
           }//buy
        if(Close[1]<(Close[shift]-(ShortTarget*Point)) && s==0)   
        {
         ticket=OrderSend(Symbol(),
                          OP_SELL,
                          Lots,
                          Bid,
                          Slippage,
                          Bid+(InitialSL*Point),
                          0,//OrderTakeProfit
                          comment,
                          MagicNumber,
                          0,//Order expiration time/date
                          Red);
           if(ticket>0)   
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
            {
              Print(ticket); 
            }
            else Print("Error Opening Sell Order: ",GetLastError());
           return(0);  
            }
           }
          }//sell
     if(!IsTesting()) 
     {
        for(i=0;i<=OrdersTotal();i++)   
        {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) 
           {
              if(OrderType()==OP_BUY) 
              {
               Print(OrderOpenPrice(),"  ",OrderStopLoss());
                 if(OrderStopLoss()<OrderOpenPrice() && Bid-OrderOpenPrice()>=(TrailStopTrigger*Point)) 
                 {
                 tsl=OrderOpenPrice()+(TrailStopPips*Point);}
                 if(OrderStopLoss()>OrderOpenPrice() && Bid-OrderStopLoss()>=(TrailStopTrigger*Point))  
                 {
                 tsl=OrderStopLoss()+(TrailStopPips*Point);
                 }
               OrderModify(OrderTicket(),
                           OrderOpenPrice(),
                           tsl,
                           OrderTakeProfit(),
                           OrderExpiration(),
                         LightGreen);
                         }
              if(OrderType()==OP_SELL)   
              {
               Print(OrderOpenPrice(),"  ",OrderStopLoss());
                 if(OrderStopLoss()>OrderOpenPrice() && OrderOpenPrice()-Ask>=(TrailStopTrigger*Point)) 
                 {
                 tsl=OrderOpenPrice()-(TrailStopPips*Point);}
                 if(OrderStopLoss()<OrderOpenPrice() && OrderStopLoss()-Ask>=(TrailStopTrigger*Point))  
                 {
                 tsl=OrderStopLoss()-(TrailStopPips*Point);}
               OrderModify(OrderTicket(),
                           OrderOpenPrice(),
                           tsl,
                           OrderTakeProfit(),
                           OrderExpiration(),
                         HotPink);
                         }
                }
              }
            }//live trailstop
     if(IsTesting()) 
     {
        for(i=0;i<=OrdersTotal();i++)   
        {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) 
           {
              if(OrderType()==OP_BUY) 
              {
               Print(OrderOpenPrice(),"  ",OrderStopLoss());
                 if(OrderStopLoss()<OrderOpenPrice() && Close[0]-OrderOpenPrice()>=(TrailStopTrigger*Point)) 
                 {
                 tsl=OrderOpenPrice()+(TrailStopPips*Point);}
                 if(OrderStopLoss()>OrderOpenPrice() && Close[0]-OrderStopLoss()>=(TrailStopTrigger*Point))  
                 {
                 tsl=OrderStopLoss()+(TrailStopPips*Point);}
               OrderModify(OrderTicket(),
                           OrderOpenPrice(),
                           tsl,
                           OrderTakeProfit(),
                           OrderExpiration(),
                         LightGreen);
                         }
              if(OrderType()==OP_SELL)   
              {
               Print(OrderOpenPrice(),"  ",OrderStopLoss());
                 if(OrderStopLoss()>OrderOpenPrice() && OrderOpenPrice()-Close[0]>=(TrailStopTrigger*Point)) 
                 {
                 tsl=OrderOpenPrice()-(TrailStopPips*Point);}
                 if(OrderStopLoss()<OrderOpenPrice() && OrderStopLoss()-Close[0]>=(TrailStopTrigger*Point))  
                 {
                 tsl=OrderStopLoss()-(TrailStopPips*Point);}
               OrderModify(OrderTicket(),
                           OrderOpenPrice(),
                           tsl,
                           OrderTakeProfit(),
                           OrderExpiration(),
                         HotPink);
                         }
                 }
              }
           }//backtest trailstop
   if(!IsTesting()) printcomments();
  return(0);}
//Functions
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  datetime begintime()   
  {
   string date=TimeToStr(CurTime(),TIME_DATE);
   string hour=DoubleToStr(BeginTime,0);
   string minutes=":00";
   return(StrToTime(date+" "+hour+minutes));
   }//end
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  datetime endtime()   
  {
   string date=TimeToStr(CurTime(),TIME_DATE);
   string hour=DoubleToStr(EndTime,0);
   string minutes=":00";
   return(StrToTime(date+" "+hour+minutes));
   }//end
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  datetime subsequentclose()   
  {
   string date=TimeToStr(CurTime(),TIME_DATE);
   string hour=DoubleToStr(BeginTime,0);
   string minutes=":15";
   return(StrToTime(date+" "+hour+minutes));
   }//end
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  void printcomments() 
  { 
  Comment("Last Tick: ",TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),"\n",
  "Begin Time: ",TimeToStr(begintime(),TIME_DATE|TIME_MINUTES),"\n",
  "Begin Bar Close Price:",Close[shift],"\n",
  "End Time: ",TimeToStr(endtime(),TIME_DATE|TIME_MINUTES));  
  }//end
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  void PosCounter() 
  {
   b=0;s=0;
     for(int cnt=0;cnt<=OrdersTotal();cnt++)   
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
        if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) 
        {
         if(OrderType()==OP_SELL) s++;
        if(OrderType()==OP_BUY)b++;}}}
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---