Help on "Unexpected Token"

 

Hi

I am trying to write a very simple ea(with mql4) after about 8 years and it seems that I have severe problem and I should call myself a newbie again.

while testing the first part, I am facing "Unexpected Token" ERROR, I tried to find any missing ";" or parenthesis or any reserved word but I didn't find any.

I would be very grateful if someone help me fixing this error.

Thank you in advance for your care.

Regards

//+------------------------------------------------------------------+
//|                                               My Test Expert.mq4 |
//|                                   Copyright © 2018,Hojjat Hemmat |
//|                                      http://www.HojjatHemmat.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018,Hojjat Hemmat"
#property link      "http://www.HojjatHemmat.com"
extern double fst=100;//First Step
extern double dm=1.00;//Distance Multipler
extern double lsm=1.00;//Lot Size Multipler
extern double inils=0.01;//Initial Lot Size
extern int iBm=500;//Minimum Magic Number(even number 0,2,4,6,...)
extern int iSm=501;//Minimum Magic Number(even number 0,2,4,6,...)
extern int sl=9;//Slipage Pips
static double sp=7;//Spread
static double initAsk,initBid,tp,dp;
static int CSmgc,CBmgc;
static int ticket1,ticketBu1,o,error;
static int STrN,BTrN;
static string symb;
static bool result, mgcexist;
static double npbd,npbu,npsu,npsd;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
//----
symb=Symbol();
sp = MarketInfo(symb,MODE_SPREAD);
STrN=-1;
BTrN=-1;
return(0);
}
//+------------------------------------------------------------+
//|  deinitialization function                                 |
//+------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------+
//|  start function                                            |
//+------------------------------------------------------------+
int start()
{
//+------------------------------------------------------------+
//| Part 1: First Time Orders                                  |
//+------------------------------------------------------------+
if(STrN==-1)
{
   initAsk=Ask;
   tp=Ask-fst*Point;
   CSmgc=iSm;
   ticketBu1=OrderSend (symb,OP_SELL,inils,Ask,3,0,tp,NULL,CSmgc,0,clrNONE);
   o=GetLastError();
   if(o==0) STrN=STrN+1;
   else Print ("Error =",o);
}
   
if(BTrN==-1)
{
   initBid=Bid;
   tp=Bid+fst*Point;
   CBmgc=iBm;
   ticketBu1=OrderSend (symb,OP_BUY,inils,Bid,3,0,tp,NULL,CBmgc,0,clrNONE);
   o=GetLastError();
   if(o==0)BTrN=BTrN+1;
   else Print ("Error =",o);
 }

if((STrN>=0 && npsd==Ask)
{
   Print("Next Point in Sell");
      dp=npsd-initAsk;
      CSmgc=iSm-dp*Point/100*2;
      Print("Current Sell Magic No=",CSmgc);
      mgcexist=false;
         for(i=1;i<=OrdersTotal();i++)
         {
         ticketBu1=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            if (OrderMagicNumber()==CSmgc)
            {
            mgcexist=true;
            break;
            }
         }
         if (mgcexist==false) 
         {
         tp=Ask-fst*Point;
         ticket1=OrderSend (symb,OP_SELL,inils,Ask,3,0,tp,NULL,CSmgc);
         o=GetLastError();
         if(o==0)Print("Order No. ",ticket1," Placed Successfully");
         }
}
   

return(0);
}
 
//if((STrN>=0 && npsd==Ask)
if(STrN>=0 && npsd==Ask)
         //for(i=1;i<=OrdersTotal();i++)
         for(int i=1;i<=OrdersTotal();i++)
 
Keith Watford:

Thank you so much.

I appreciate your care and thanks again for your precious help.

Best Regards

 
hhemmat:

It Solved the problem but I didn't get the difference between the line you suggested and previous one.

I highlighted the unnecessary (

 
Keith Watford:

I highlighted the unnecessary (

I got that. it seems that I need  glasses.

Thank you very much.

 
ticketBu1=OrderSend (symb,OP_BUY,inils,Bid,3,0,tp,NULL,CBmgc,0,clrNONE);

You buy at the Ask and sell at the Bid. Pending Buy Stop orders become market orders when hit by the Ask.

  1. Your buy order's TP/SL (or Sell Stop's/Sell Limit's entry) are triggered when the Bid / OrderClosePrice reaches it. Using Ask±n, makes your SL shorter and your TP longer, by the spread. Don't you want the specified amount used in either direction?

  2. Your sell order's TP/SL (or Buy Stop's/Buy Limit's entry) will be triggered when the Ask / OrderClosePrice reaches it. To trigger close at a specific Bid price, add the average spread.
              MODE_SPREAD (Paul) - MQL4 programming forum - Page 3 #25

  3. The charts show Bid prices only. Turn on the Ask line to see how big the spread is (Tools → Options (control+O) → charts → Show ask line.)

    Most brokers with variable spreads widen considerably at end of day (5 PM ET) ± 30 minutes.
    My GBPJPY shows average spread = 26 points, average maximum spread = 134.
    My EURCHF shows average spread = 18 points, average maximum spread = 106.
    (your broker will be similar).
              Is it reasonable to have such a huge spreads (20 PIP spreads) in EURCHF? - General - MQL5 programming forum (2022)

Reason: