tara: And in the "Events" tab of the "Tools - Settings" menu, things are quite bad, though. Try using it :(
I agree, it's bad ... Alert is not turned off by spacebar, only manually ... changing the alert parameter in "service-settings-events" does nothing ...
Guys, please give me a hint. I've already asked this question, but I haven't managed to get the code right.
Once again I'll tell you the gist of the idea. By Awesom indicator, from the bottom (below 0) to the top (above 0), the volume of the wave (indicator Volumes) is calculated.
The text label with the sum of the volume of the wave, should be printed on the indicator chart and calculated over the entire history.
I got this:
What is the error?
#property indicator_separate_window#property indicator_buffers 2#property indicator_color1 Red#property indicator_color2 SteelBlue#property indicator_width1 2//---- basic fan indicator parametersexternbool Show_AOLine_2=true;
externint SlowEMA3=34;
externint EMA=3;
externbool Show_Volume=true;
externdouble coaf=0.5;
//---- indicator buffersdouble AOBuffer3[];
double ExtMapBuffer1[];
double VLUP, AO_up,AO_dn;
double prhgh_e=0, prhgh_s, prlw_e=0, prlw_s;
datetime tmhgh, tmlw;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- drawing settingsstring name_ind = "Awesome_super_volumes";
IndicatorShortName("Awesome_super_volumes");
//---- AO_fan line 2 (basic)if(Show_AOLine_2 ==true){Show_AOLine_2=DRAW_LINE; }
else
{Show_AOLine_2=DRAW_NONE; }
SetIndexBuffer(0,AOBuffer3);
SetIndexStyle(0,Show_AOLine_2);
SetIndexLabel(0,"basic line");
SetIndexBuffer(1,ExtMapBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexLabel(1,"Volume");
//---- initialization donereturn(0);
}
//+------------------------------------------------------------------+//| Awesome Oscillator |//+------------------------------------------------------------------+int start()
{
int limit;
int counted_bars=IndicatorCounted();
double prev,current;
//---- last counted bar will be recountedif(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=0; i<limit; i++)
{
//---- AO_fan + Volumes
AOBuffer3[i]=iMA(NULL,0,EMA,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,SlowEMA3,0,MODE_SMA,PRICE_MEDIAN,i);
if (Show_Volume==true)
{
double nSum = Volume[i]*Point*coaf;
if (AOBuffer3[i]<=0)ExtMapBuffer1[i] = nSum;
if (AOBuffer3[i]>0)ExtMapBuffer1[i] = -nSum;
double Vol_Arr[];
if (AOBuffer3[i]<=0)Vol_Arr[i]=Volume[i]*Point*coaf;
if (AOBuffer3[i]>0)Vol_Arr[i] = -Volume[i]*Point*coaf;
}
}
//-- Поиск High & Time & Min_AO if (AOBuffer3[i]>0)
{
AO_up = AOBuffer3[i]*0.1+AOBuffer3[i];
prhgh_s = High[i];
if (prhgh_s >= prhgh_e) {prhgh_e = prhgh_s; tmhgh = Time[i];}
//SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmhgh, AO_up, Black);
}
//-- Поиск Low & Time & Max_AOif (AOBuffer3[i]<0)
{
AO_dn = AOBuffer3[i]*0.1+AOBuffer3[i];
prlw_s = Low[i];
if (prlw_s > prlw_e) {prlw_e = prlw_s; tmlw = Time[i];}
//SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmlw, AO_dn, Black);
}
// -- Пересчет баров от High до Lowif(NewBar())
{
int colbr = iBarShift(NULL,0,tmhgh)-iBarShift(NULL,0,tmlw);
int shift=iBarShift(NULL,0,tmhgh);
for (i=0; i<=colbr; i++)
{VLUP += MathAbs(iVolume(NULL,0, shift+i));}
}
Comment("Vol_",VLUP,prlw_e,prhgh_e);
for(i=0; i<limit; i++)
{
SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmlw, AO_dn, Black);
}
//---- donereturn(0);
}
//+------------------------------------------------------------------+void SetText(string name, string Vl, datetime t1, double p1, color c)
{
// if (ObjectFind(name)!=-1) ObjectDelete(name);ObjectCreate(name,OBJ_TEXT,WindowFind("Awesome_super_volumes"),0,0,0,0);
ObjectSetText(name, Vl, 10, "Times New Roman", c);
ObjectSet(name, OBJPROP_TIME1 , t1);
ObjectSet(name, OBJPROP_PRICE1, p1);
ObjectSet(name, OBJPROP_COLOR, c);
}
bool NewBar()
{
staticdatetime lastbar = 0;
datetime curbar = Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}}
My function finds the number of open market orders, pending bids and settles. I have added another built-in function that finds values of maximal and minimal prices of pending orders in order to check one more thing quicker.
I can see through the print that at some moment in time, it finds values that are not what I want.
The idea is that if pending orders are already closed, they need to be skipped but this function does not skip them for some reason. Here is the function:
So for orders that are active the closing price is logically zero (as it is not closed), but for orders that have already closed the closing price is not zero (the closing price will be the one at the time it was deleted). Logically, this is the closing time?
I understand that pending orders are not closed but deleted, but how else should we implement it?
FAQ: Can you write down what you need from the function - find outermost pending orders ?
To find prices of outermost pending orders. It's the active ones, not the deleted ones. I.e., I want to skip deleted pending orders in our search... I hope I've made myself clear?
Allow the use of cookies to log in to the MQL5.com website.
Please enable the necessary setting in your browser, otherwise you will not be able to log in.
You are signed in. Two-factor authentication has been disabled. Set it up again and scan a new QR code, or continue with two-factor authentication disabled.
You're quick, though. Deleted the post as I found it myself. Thanks a lot!
Good to hear from you, I thought I was replying to an old post I can't find :)
And in the "Events" tab of the "Tools - Settings" menu, things are quite bad, though. Try using it :(
I agree, it's bad ... Alert is not turned off by spacebar, only manually ... changing the alert parameter in "service-settings-events" does nothing ...
Guys, please give me a hint. I've already asked this question, but I haven't managed to get the code right.
Once again I'll tell you the gist of the idea. By Awesom indicator, from the bottom (below 0) to the top (above 0), the volume of the wave (indicator Volumes) is calculated.
The text label with the sum of the volume of the wave, should be printed on the indicator chart and calculated over the entire history.
I got this:
What is the error?
The EA throws a stack of orders on the chart.
My function finds the number of open market orders, pending bids and settles. I have added another built-in function that finds values of maximal and minimal prices of pending orders in order to check one more thing quicker.
I can see through the print that at some moment in time, it finds values that are not what I want.
The idea is that if pending orders are already closed, they need to be skipped but this function does not skip them for some reason. Here is the function:
I have a clear condition:
It means that if closing time of an order is not zero, it is closed and we should skip it.
On the output, I see that it doesn't skip them. Here is the chart:
Why does it get the wrong price for the pause? Because the code is correct, as I see it.
The condition I have is clearly spelled out:
What's it for forwards?
What is it for pending orders?
So for orders that are active the closing price is logically zero (as it is not closed), but for orders that have already closed the closing price is not zero (the closing price will be the one at the time it was deleted). Logically, this is the closing time?
I understand that pending orders are not closed but deleted, but how else should we implement it?
Can you write down what you need from the function - find outermost pending orders ?
To find prices of outermost pending orders. It's the active ones, not the deleted ones. I.e., I want to skip deleted pending orders in our search... I hope I've made myself clear?