Try this ...
// Close all buy open order for(PositionIndex=TotalNumberOfOrders-1; PositionIndex>=0; PositionIndex --) { if(OrderSelect(PositionIndex,SELECT_BY_POS,MODE_TRADES)) { if(OrderMagicNumber()==magic && OrderSymbol()==Symbol() && OrderType()==OP_BUY) { if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage)) { Print("Order Close failed when try to close "buy order", order number: ",OrderTicket()," Error: ",GetLastError()); } } } }
I think the culprit is the OrderSelect function, so I have adjusted it a little bit.
Not tested though.
But somehow, with this code, the system doesn't close the currently running "buy" order.
if ( ! OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), Slippage ) ) { Print("Order Close failed when try to close "buy order", order number: ", OrderTicket(), " Error: ", GetLastError() ); }
?? What kind of error(s) do you have,.... moments it fails ??
Print("Order Close failed when try to close "buy order", order number: ", OrderTicket(), " Error: ", GetLastError() );
is this correct ??
or has it to be
Print("Order Close failed when try to close buy order, order number: ", OrderTicket(), " Error: ", GetLastError() );
Thanks guy I think I found out where the problem is.. sort of. It never close any order because it never got executed.
//--- input parameters #define magic 2049485321 extern double volume=0.5; extern int Slippage=10; extern int MA_Period=20; extern int MA_Shift=0; extern int MA_Method=0; extern int Contract_Step=150; extern int Precision=10; extern int Shift_Bars=1; double ExtMapBuffer[]; int ExtCountedBars=0; int count; bool current; double v1[]; double v2[]; double val1; double val2; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- SetIndexBuffer(0,ExtMapBuffer); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ int start() { if(Bars<=MA_Period) {return(0);} ExtCountedBars=IndicatorCounted(); //---- check for possible errors if (ExtCountedBars<0) { //Somehow, things got stuck right here. function return -1 and the rest of the start function never got executed return(-1);} //---- last counted bar will be recounted if (ExtCountedBars>0) ExtCountedBars--; //Do some more stuff
I don't know why does the IndicatorCounted() keep return -1.
Thanks guy I think I found out where the problem is.. sort of. It never close any order because it never got executed.
I don't know why does the IndicatorCounted() keep return -1.
So you wanna place trades with an ...... indicator
That was before build 625 never possible...
and if it is right then also with the build 625 it might be not possible
IndicatorCounted
The function returns the amount of bars not changed after the indicator had been launched last.
int IndicatorCounted(); |
Returned value
The amount of bars not changed after the indicator had been launched last.
Oh yes. I have create an indicator before. Basically, what it does it
if(condition1) { Alert("buy"); }else{ Alert("sell"); }
now I want it to do the trading automatically so I just copy and paste the code from my indicator. Is this kind of thinking correct? Sorry, just a newbie :P
if(condition1) { buy(); }else{ sell(); }
Indicator = Gives info only
EA = Uses captured info from Indicator (if any) and determine what to do next
hmm interesting. In my past indicator, I calculate the Support and Resistance of the market. That's why I need those "indicator" function. After a while, I discover a function call "iCustom" which can return a value from an indicator. Does anyone know how this work? If it works like the way I think it is, then my life would be much more simpler. For example, if this file is in my directory. (File can be downloaed from https://www.mql5.com/en/code/7530 )
//+------------------------------------------------------------------+ //| SuperSR 6.mq4 | //| Copyright © 2006 Scorpion@fxfisherman.com | //+------------------------------------------------------------------+ #property copyright "FxFisherman.com" #property link "http://www.fxfisherman.com" //---- #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 clrRed #property indicator_color2 clrBlue //---- extern int Contract_Step=150; extern int Precision=10; extern int Shift_Bars=1; //---- buffers double v1[]; double v2[]; double val1; double val2; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(2); SetIndexArrow(0, 159); SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,1,Red); SetIndexDrawBegin(0,-1); SetIndexBuffer(0, v1); SetIndexLabel(0,"Resistance"); // SetIndexArrow(1, 159); SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,1,Blue); SetIndexDrawBegin(1,-1); SetIndexBuffer(1, v2); SetIndexLabel(1,"Support"); // watermark(); //----- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double gap; double contract=(Contract_Step + Precision) * Point; int i=Bars-5-Shift_Bars; int shift; bool fractal; double price; while(i>=0) { shift=i + Shift_Bars; // Resistance price=High[shift+2]; fractal=price>=High[shift+4] && price>=High[shift+3] && price > High[shift+1] && price > High[shift]; gap=v1[i+1] - price; if (fractal && (gap>=contract || gap < 0)) { v1[i]=price + (Precision * Point); }else{ v1[i]=v1[i+1]; } // Support price=Low[shift+2]; fractal=price<=Low[shift+4] && price<=Low[shift+3] && price < Low[shift+1] && price < Low[shift]; gap=price - v2[i+1]; if (fractal && (gap>=contract || gap < 0)) { v2[i]=price - (Precision * Point); }else{ v2[i]=v2[i+1]; } i--; } return(0); } //+------------------------------------------------------------------+ void watermark() { ObjectCreate("fxfisherman", OBJ_LABEL, 0, 0, 0); ObjectSetText("fxfisherman", "fxfisherman.com", 11, "Lucida Handwriting", RoyalBlue); ObjectSet("fxfisherman", OBJPROP_CORNER, 2); ObjectSet("fxfisherman", OBJPROP_XDISTANCE, 5); ObjectSet("fxfisherman", OBJPROP_YDISTANCE, 10); return; } //+------------------------------------------------------------------+
How can I get the Resistance and the Support value?
double Rval=iCustom(...); double Sval = iCustom(...); //Something like this? I have no idea what to fill in for the parameter to get the desired value.

- 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 guy. Can someone help me out?
So when I call the "sell" function, I want to place 1 sell order and then close all the currently opening order (if any). But somehow, with this code, the system doesn't close the currently running "buy" order.