Help with stop loss error

 

Hi all

I've been working through the xpert adviser sample in the "BOOK" and have run aground.

The following code looks good to me:

   {    
    
       Ticket = OrderSend(Symbol(),OP_BUYSTOP,Lts,High[1]+5*Point,3,High[1]-SL*Point,High[1]+TP*Point);  
         Alert("long,stoploss, SL","  ",High[1],"  ",High[1]-SL*Point," ",SL);     
       Alert("opened order buy  ",Ticket);
       }

I've added the first alert line to see what is actually happening, the values shown below are what I expect and should work but I keep getting error 130

2008.06.16 21:41:22 2008.06.11 23:57 INSIDEBAR GBPCAD,H1: Alert: long, stoploss, SL 2.0031 1.9971 60

I'm not too close, the decimals are correct and I'm not wildly out of range.

Ideas,suggestions, wild hunches, all deeply appreciated.

Keith

 
kminler wrote >>

Hi all

I've been working through the xpert adviser sample in the "BOOK" and have run aground.

The following code looks good to me:

I've added the first alert line to see what is actually happening, the values shown below are what I expect and should work but I keep getting error 130

2008.06.16 21:41:22 2008.06.11 23:57 INSIDEBAR GBPCAD,H1: Alert: long, stoploss, SL 2.0031 1.9971 60

I'm not too close, the decimals are correct and I'm not wildly out of range.

Ideas,suggestions, wild hunches, all deeply appreciated.

Keith

Got it working, don't know why, I suspect that changing the Takeprofit setting did it, so the question is does the 130 error, consider the The takeprofit argument to be a stop?

Keith

 

To avoid error 130 use MarketInfo(Symbol(),MODE_STOPLEVEL)

Your broker can change values of these levels

 
stringo wrote >>

To avoid error 130 use MarketInfo(Symbol(),MODE_STOPLEVEL)

Your broker can change values of these levels

Hi stringo

Thanks for your suggestion, I'll give it a try. first I have to get MarketInfo to work, so far,every time i've used it I've only got it to return zero. I've coded around that for now but sooner or later I'll have to figure out why it doesn't work. I suspect something to do with the marketInfo identifiers but not sure. Nothing is easy in MQL4.

Thanks again

Keith

 

kminler,

why not post your code surrounding MarketInfo() call - might be simple reason?

if do post code, thanks in advance for using SRC button ;)

 
ukt wrote >>

kminler,

why not post your code surrounding MarketInfo() call - might be simple reason?

if do post code, thanks in advance for using SRC button ;)

  
//Orders Processing
                                            //Security name
  Total = 0;
   for(int i=1; i<=OrdersTotal(); i++)

    { 
                                                         //Analyzing orders
      if(OrderSelect(i-1,SELECT_BY_POS)==true)               //If there is a next order
         { 
         if(OrderSymbol()!=Symb) continue;                  //wrong symbol goto next one
            if(OrderType()<1)                               //Pending order found?????(should be>???)
              { 
              Alert("Pending order EA doesn t work");
              return;                                      //exit start
              }
            
              Total++;
                 if(Total>0)                               //Can not be more than one
                 {
                  Alert("Several market orders EA doesn t work");
                  return;                
                 }
                 
               Ticket = OrderTicket();                      //# of selected OrderClose
               Tip    = OrderType();                        // Type of selected OrderClose
               Price  = OrderOpenPrice();                   // Price of selected order
               SL     = OrderStopLoss();                    // Sl of selected OrderClose
               TP     = OrderTakeProfit();                  // TP of selected OrderClose
               Lot    = OrderLots();                        // # of lots in OrderClose
               }
            
               }
   //---------------------------------------------------------------------------------------------------  
   //Order Value
    
    
   RefreshRates();                                          //RefreshRates
   Min_Lot= MarketInfo("gbpcad",MODE_MINLOT);                   //MINIMUM # OF LOTS   
   Free = AccountFreeMargin();                              //Free Margin   
   One_Lot = MarketInfo("gbpcad",MODE_MARGINREQUIRED);          //Price of one lot    
   Step =  MarketInfo("gbpcad",MODE_LOTSTEP);                   //Step is changed                       
   if(Lots>0)                                                 //If lots are set
    {Lts=Lots;}                                              //work with them
   else                                                     // % of free margin
   Lts = MathFloor(Free*Prots/One_Lot/Step)*Step;                    // for opening  
   if(Lts>Min_Lot)Lts = Min_Lot;                             //Not less than minimum    
   if(Lts*One_Lot>Free)                                     //Is lot larger than free margin
  
   {Alert("Not enough money for",Lts," lots");
   return;}                                                 //exit start

Hi ukt

This code is taken directly from the simple expert adviser example in Sergey's book. First go around the compiler wouldn't accept "Symb", so I put in real symbols.

Then after I got it compiled, no trade execution, even though I had set up a simple test situation to guarantee trades, todays high>yesterdays high = go long.

So I know that some trades should have been executed. So I used Alerts to capture the values returned by MarketIinfo and they were all zero.

So to get around that I simply replaced the Market Info items with constants which allowed me to carry on with the project since no matter what I did I could not get

anything useful from MarketInfo. The EA does execute with the constants, with, dismal results, but that is to be expected.

Clearly this will be one of the hurdles to overcome to get a flexible EA working.

Thoughts, wild ideas, hunches all gratefully accepted!

Keith

 

had to laugh... wrote code bla, blaaah

but - for me not work either and got all zeros too


why? GBPCAD [at least in my MT] not there... !

ALSO very important is to use UPPER CASE for symbol names



an observation [I learn too here:] MT not complain about unknown "xyz" symbol string, so appears that even if call returns ok with zero value, is the GIGO syndrome - Garbage In Garbage Out

so must do your best to code defensively at all times, yes?

no point losing your deposit - at least straight away - ;)



2008.06.18 19:18:28 kminler GBPUSD,H1: uninit reason 0
2008.06.18 19:18:28 kminler GBPUSD,H1: end-->>>>> printMarketInfo(GBPCAD)
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_FREEZELEVEL=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINREQUIRED=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINHEDGED=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINMAINTENANCE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGININIT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINCALC=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_PROFITCALC=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPTYPE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MAXLOT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOTSTEP=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MINLOT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TRADEALLOWED=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_EXPIRATION=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_STARTING=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPSHORT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPLONG=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TICKSIZE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TICKVALUE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOTSIZE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_STOPLEVEL=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SPREAD=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_DIGITS=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_POINT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_ASK=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_BID=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=0
2008.06.18 19:18:28 kminler GBPUSD,H1: start-->>>>> printMarketInfo(GBPCAD) follows:-
2008.06.18 19:18:28 kminler GBPUSD,H1: printMarketInfo("GBPCAD")>>>>>>>>>>>>>>>>
2008.06.18 19:18:28 kminler GBPUSD,H1: end-->>>>> printMarketInfo(GBPUSD)
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_FREEZELEVEL=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINREQUIRED=1960.7
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINHEDGED=50000
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINMAINTENANCE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGININIT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINCALC=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_PROFITCALC=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPTYPE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MAXLOT=99999
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOTSTEP=0.01
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MINLOT=0.01
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TRADEALLOWED=1
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_EXPIRATION=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_STARTING=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPSHORT=-1.82
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPLONG=1.21
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TICKSIZE=0.0001
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TICKVALUE=10
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOTSIZE=100000
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_STOPLEVEL=3
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SPREAD=3
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_DIGITS=4
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_POINT=0.0001
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_ASK=1.9607
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_BID=1.9604
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=1.9477
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=1.9477
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=1.9477
2008.06.18 19:18:28 kminler GBPUSD,H1: start-->>>>> printMarketInfo(GBPUSD) follows:-
2008.06.18 19:18:28 kminler GBPUSD,H1: printMarketInfo("GBPUSD")>>>>>>>>>>>>>>>>
2008.06.18 19:18:28 kminler GBPUSD,H1: end-->>>>> printMarketInfo(gbpusd)
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_FREEZELEVEL=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINREQUIRED=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINHEDGED=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINMAINTENANCE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGININIT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINCALC=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_PROFITCALC=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPTYPE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MAXLOT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOTSTEP=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MINLOT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TRADEALLOWED=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_EXPIRATION=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_STARTING=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPSHORT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPLONG=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TICKSIZE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TICKVALUE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOTSIZE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_STOPLEVEL=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SPREAD=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_DIGITS=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_POINT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_ASK=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_BID=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=0
2008.06.18 19:18:28 kminler GBPUSD,H1: start-->>>>> printMarketInfo(gbpusd) follows:-
2008.06.18 19:18:28 kminler GBPUSD,H1: printMarketInfo("gbpusd")>>>>>>>>>>>>>>>>
2008.06.18 19:18:28 kminler GBPUSD,H1: loaded successfully
2008.06.18 19:18:25 Compiling 'kminler'

 
ukt wrote >>

had to laugh... wrote code bla, blaaah

but - for me not work either and got all zeros too


why? GBPCAD [at least in my MT] not there... !

ALSO very important is to use UPPER CASE for symbol names

2008.06.18 19:18:28 kminler GBPUSD,H1: uninit reason 0
2008.06.18 19:18:28 kminler GBPUSD,H1: end-->>>>> printMarketInfo(GBPCAD)
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_FREEZELEVEL=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINREQUIRED=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINHEDGED=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINMAINTENANCE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGININIT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINCALC=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_PROFITCALC=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPTYPE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MAXLOT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOTSTEP=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MINLOT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TRADEALLOWED=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_EXPIRATION=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_STARTING=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPSHORT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPLONG=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TICKSIZE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TICKVALUE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOTSIZE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_STOPLEVEL=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SPREAD=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_DIGITS=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_POINT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_ASK=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_BID=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=0
2008.06.18 19:18:28 kminler GBPUSD,H1: start-->>>>> printMarketInfo(GBPCAD) follows:-
2008.06.18 19:18:28 kminler GBPUSD,H1: printMarketInfo("GBPCAD")>>>>>>>>>>>>>>>>
2008.06.18 19:18:28 kminler GBPUSD,H1: end-->>>>> printMarketInfo(GBPUSD)
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_FREEZELEVEL=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINREQUIRED=1960.7
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINHEDGED=50000
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINMAINTENANCE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGININIT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINCALC=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_PROFITCALC=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPTYPE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MAXLOT=99999
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOTSTEP=0.01
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MINLOT=0.01
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TRADEALLOWED=1
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_EXPIRATION=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_STARTING=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPSHORT=-1.82
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPLONG=1.21
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TICKSIZE=0.0001
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TICKVALUE=10
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOTSIZE=100000
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_STOPLEVEL=3
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SPREAD=3
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_DIGITS=4
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_POINT=0.0001
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_ASK=1.9607
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_BID=1.9604
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=1.9477
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=1.9477
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=1.9477
2008.06.18 19:18:28 kminler GBPUSD,H1: start-->>>>> printMarketInfo(GBPUSD) follows:-
2008.06.18 19:18:28 kminler GBPUSD,H1: printMarketInfo("GBPUSD")>>>>>>>>>>>>>>>>
2008.06.18 19:18:28 kminler GBPUSD,H1: end-->>>>> printMarketInfo(gbpusd)
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_FREEZELEVEL=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINREQUIRED=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINHEDGED=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINMAINTENANCE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGININIT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MARGINCALC=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_PROFITCALC=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPTYPE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MAXLOT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOTSTEP=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_MINLOT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TRADEALLOWED=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_EXPIRATION=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_STARTING=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPSHORT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SWAPLONG=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TICKSIZE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_TICKVALUE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOTSIZE=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_STOPLEVEL=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_SPREAD=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_DIGITS=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_POINT=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_ASK=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_BID=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=0
2008.06.18 19:18:28 kminler GBPUSD,H1: MODE_LOW=0
2008.06.18 19:18:28 kminler GBPUSD,H1: start-->>>>> printMarketInfo(gbpusd) follows:-
2008.06.18 19:18:28 kminler GBPUSD,H1: printMarketInfo("gbpusd")>>>>>>>>>>>>>>>>
2008.06.18 19:18:28 kminler GBPUSD,H1: loaded successfully
2008.06.18 19:18:25 Compiling 'kminler'

Hi ukt

You were right upper case solved problem. No particular reason for using GBPCAD, just wanted to use a pair that I'm not working with elsewhere, I have it at MIG.

Would have been nice to get a compile error first time around. That is an interesting print out you posted, is it from some form of diagnostic software?

Thanks again

Keith

 

yes, just reviewing docs on marketinfo and no mention of this feature but now that know about it...

If of use..., here it is - is just a function I have in my eaTools.mqh code library

not special but comes in handy now and then!


just did copy/paste...

oh, sorry, I'm self confessed #define head-case :) - I use #define EMPTYSTRING ""

is of course more typing but suits my hack style.

just change below use to "" if go that route...

//------------------------------------------------------------------------------
//-
void printMarketInfo (string sym=EMPTYSTRING)
{ /******************
 
    COMMENT
        Code says it all really... :o))
    */
    if( sym==EMPTYSTRING ) sym = Symbol();
    Print("start-->>>>> printMarketInfo(",sym,") follows:-");
    Print("MODE_LOW=",MarketInfo(sym,MODE_LOW));
    Print("MODE_LOW=",MarketInfo(sym,MODE_LOW));
    Print("MODE_LOW=",MarketInfo(sym,MODE_LOW));
    Print("MODE_BID=",MarketInfo(sym,MODE_BID));
    Print("MODE_ASK=",MarketInfo(sym,MODE_ASK));
    Print("MODE_POINT=",MarketInfo(sym,MODE_POINT));
    Print("MODE_DIGITS=",MarketInfo(sym,MODE_DIGITS));
    Print("MODE_SPREAD=",MarketInfo(sym,MODE_SPREAD));
    Print("MODE_STOPLEVEL=",MarketInfo(sym,MODE_STOPLEVEL));
    Print("MODE_LOTSIZE=",MarketInfo(sym,MODE_LOTSIZE));
    Print("MODE_TICKVALUE=",MarketInfo(sym,MODE_TICKVALUE));
    Print("MODE_TICKSIZE=",MarketInfo(sym,MODE_TICKSIZE));
    Print("MODE_SWAPLONG=",MarketInfo(sym,MODE_SWAPLONG));
    Print("MODE_SWAPSHORT=",MarketInfo(sym,MODE_SWAPSHORT));
    Print("MODE_STARTING=",MarketInfo(sym,MODE_STARTING));
    Print("MODE_EXPIRATION=",MarketInfo(sym,MODE_EXPIRATION));
    Print("MODE_TRADEALLOWED=",MarketInfo(sym,MODE_TRADEALLOWED));
    Print("MODE_MINLOT=",MarketInfo(sym,MODE_MINLOT));
    Print("MODE_LOTSTEP=",MarketInfo(sym,MODE_LOTSTEP));
    Print("MODE_MAXLOT=",MarketInfo(sym,MODE_MAXLOT));
    Print("MODE_SWAPTYPE=",MarketInfo(sym,MODE_SWAPTYPE));
    Print("MODE_PROFITCALC=",MarketInfo(sym,MODE_PROFITCALCMODE));
    Print("MODE_MARGINCALC=",MarketInfo(sym,MODE_MARGINCALCMODE));
    Print("MODE_MARGININIT=",MarketInfo(sym,MODE_MARGININIT));
    Print("MODE_MARGINMAINTENANCE=",MarketInfo(sym,MODE_MARGINMAINTENANCE));
    Print("MODE_MARGINHEDGED=",MarketInfo(sym,MODE_MARGINHEDGED));
    Print("MODE_MARGINREQUIRED=",MarketInfo(sym,MODE_MARGINREQUIRED));
    Print("MODE_FREEZELEVEL=",MarketInfo(sym,MODE_FREEZELEVEL));
    Print("end-->>>>> printMarketInfo(",sym,")");
 
}//printMarketInfo()
 
ukt wrote >>

yes, just reviewing docs on marketinfo and no mention of this feature but now that know about it...

If of use..., here it is - is just a function I have in my eaTools.mqh code library

not special but comes in handy now and then!


just did copy/paste...

oh, sorry, I'm self confessed #define head-case :) - I use #define EMPTYSTRING ""

is of course more typing but suits my hack style.

just change below use to "" if go that route...

Hi ukt

Thats excellent looks like it will be useful. I'm learning that there are a lot of hidden possibilities to be unearthed on this site.

many thanks

Keith

 

btw,

there I was blagging on about defensively coding but that code should, to be more bullet proof, at least do trial marketinfo call with callers actual value if != "", that way if get return of zero, well maybe better to print(a warning message about callers lousy symbol value!) and do hasty retreat!

just my fwiw thoughts - for me, am off to code this in, hardly ever used but Murphys Law says... :)

Reason: