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
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 ;)
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'
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()
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... :)
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
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