![MQL5 - Language of trade strategies built-in the MetaTrader 5 client terminal](https://c.mql5.com/i/registerlandings/logo-2.png)
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
How to make the EA open not one position, but 2 or 3 at once in one direction. For example, how can I open two one-directional positions at 0.5 and 0.5 lots instead of one lot? Or 0.3+0.3+0.3 lots.
>> How can I set up the terminal so that when I switch it to Russian, it will say everything in Russian, because everything is written with some hieroglyphs.
In windows regional settings, set the language to Russian for use in applications that do not use Unicode.
Hello, I have a question directly to Igor Kim because he is the author (if I am not mistaken) of the i-SignalOfTrade indicator.
The indicator performs all of its functions perfectly, but the following entries appear in the log when sending an email
Mail: 'i-SignalOfTrade' failed
Mail: 451 See http://pobox.com/~djb/docs/smtplf.html.
and of course the message doesn't go anywhere.
Can you tell me what the problem may be and how to fix it?
P.S. The mail client is configured correctly, test messages are sent and delivered without any problems.
Good afternoon. Can you tell me who knows? I am working with the RTS Index. The position size is calculated by a third-party program and transmitted to the Expert Advisor via a txt file. I have two problems here:
1. As the start block {...} is only activated when a new tick comes and ticks in the index are rare, there is a delay in EA execution.
I placed it on a more frequently ticking instrument ( EURUSD ), but I want to ask whether it is possible to forcefully start {...}?
2. The maximum position size allowed by my broker is 20 lots. I need to open a position of 100 lots. Right now I am opening one position at a time,
but it takes a lot of time, about 4 seconds per order. (i.e. it takes 20 sec. to open a position), and sometimes that is not good. Is there any way to do it faster? (via pre-set stop orders - doesn't work for me).
2. the maximum position size allowed by the broker is 20 lots. I need to open a position of 100 lots. Now I am opening in succession,
but it takes a lot of time, about 4 seconds per order. (i.e. it takes 20 sec. to open a position), and sometimes that is not good. Is there any way to do it faster? (through pre-placed stop orders - doesn't work for me).
https://forum.mql4.com/ru/13567
read.
I understood correctly that on one tick the EA will send several buy orders to the trading system at the same time,
instead of waiting for the server to respond on the first order acceptance and execution, then the second one, and so on ? ??
I have it like this so far - example - (log, real account, real time)
10.55.13 - order buy market 20 RTS - this is the first 20 lots
10.55.13 - request was assepted by server
10.55.13 - request in process
10.55.17 - order was opened
10.55.18 - order buy market 20 RTS - this is the second 20 lots
10.55.18 - request was assepted by server
10.55.19 - request in process
10.55.22 - order was opened
10.55.23 - order buy market 20 RTS - this is the third 20 lots
10.55.23 - request was assepted by server
10.55.24 - request in process
10.55.27 - order was opened
and I would like to have the entire position opened within the first 4 sec. i.e. by 10.55.17
2. the maximum position size allowed by the broker is 20 lots. I need to open a position of 100 lots. Now I am opening in succession,
but it takes a lot of time, about 4 seconds per order. (i.e. it takes 20 sec. to open a position), and sometimes that is not good. Is there any way to do it faster? (via pre-set stop orders - doesn't work for me).
Run 4 terminals, then 4 requests will get to the dealer for processing at once, not one by one.
Igor, hello!
Could you please advise how to implement sound notification in an existing indicator?
For example, in ZigZag. If you want to have sound at the time when drawing the new line, please register it in the Organizer:
//+------------------------------------------------------------------+
//| Zigzag.mq4 |
//| Copyright © 2005-2007, MetaQuotes Software Corp.
//| https://www.metaquotes.net// |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link "https://www.metaquotes.net//"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern intDepth=12;
extern inttern ExtDeviation=5;
extern inttern ExtBackstep=3;
//---- indicator buffers
double ZigzagBuffer[];
double HighMapBuffer[];
double LowMapBuffer[];
int level=3; // recounting's depth
bool downloadhistory=false;
//+------------------------------------------------------------------+
//| Custom indicator initialisation function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(3);
//---- drawing settings
SetIndexStyle(0,DRAW_SECTION);
//---- indicator buffers mapping
SetIndexBuffer(0,ZigzagBuffer);
SetIndexBuffer(1,HighMapBuffer);
SetIndexBuffer(2,LowMapBuffer);
SetIndexEmptyValue(0,0.0);
//---- indicator short name
IndicatorShortName("ZigZag("+ExtDepth+", "+ExtDeviation+", "+ExtBackstep+")");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
int i, counted_bars = IndicatorCounted();
int limit,counterZ,whatlookfor;
int shift,back,lasthighpos,lastlowpos;
double val,res;
double curlow,curhigh,lasthigh,lastlow;
if (counted_bars==0 && downloadhistory) // history was downloaded
{
ArrayInitialize(ZigzagBuffer,0.0);
ArrayInitialize(HighMapBuffer,0.0);
ArrayInitialize(LowMapBuffer,0.0;)
}
if (counted_bars==0)
{
limit=Bars-ExtDepth;
downloadhistory=true;
}
if (counted_bars>0)
{
while (counterZ<level && i<100)
{
res=ZigzagBuffer[i];
if (res!=0) counterZ++;
i++;
}
i--;
limit=i;
if (LowMapBuffer[i]!=0)
{
curlow=LowMapBuffer[i];
whatlookfor=1;
}
else
{
curhigh=HighMapBuffer[i];
whatlookfor=-1;
}
for (i=limit-1;i>=0;i--)
{
ZigzagBuffer[i]=0.0;
LowMapBuffer[i]=0.0;
HighMapBuffer[i]=0.0;
}
}
for(shift=limit; shift>=0; shift--)
{
val=Low[iLowest(NULL,0,MODE_LOW,ExtDepth,shift)];
if(val==lastlow) val=0.0;
else
{
lastlow=val;
if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=LowMapBuffer[shift+back];
if((res!=0)&&(res>val)) LowMapBuffer[shift+back]=0.0;
}
}
}
if (Low[shift]==val) LowMapBuffer[shift]=val; else LowMapBuffer[shift]=0.0;
//--- high
val=High[iHighest(NULL,0,MODE_HIGH,ExtDepth,shift)];
if(val==lasthigh) val=0.0;
else
{
lasthigh=val;
if((val-High[shift])>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=HighMapBuffer[shift+back];
if((res!=0)&&(res<val)) HighMapBuffer[shift+back]=0.0;
}
}
}
if (High[shift]==val) HighMapBuffer[shift]=val; else HighMapBuffer[shift]=0.0;
}
// final cutting
if (whatlookfor==0)
{
lastlow=0;
lasthigh=0;
}
else
{
lastlow=curlow;
lasthigh=curhigh;
}
for (shift=limit;shift>=0;shift--)
{
res=0.0;
switch(whatlookfor)
{
case 0: // look for peak or lawn
if (lastlow==0 && lasthigh==0)
{
if (HighMapBuffer[shift]!=0)
{
lasthigh=high[shift];
lasthighpos=shift;
whatlookfor=-1;
ZigzagBuffer[shift]=lasthigh;
res=1;
}
if (LowMapBuffer[shift]=0)
{
lastlow=Low[shift];
lastlowpos=shift;
whatlookfor=1;
ZigzagBuffer[shift]=lastlow;
res=1;
}
}
break;
case 1: // look for peak
if (LowMapBuffer[shift]=0.0 && LowMapBuffer[shift]<lastlow && HighMapBuffer[shift]==0.0)
{
ZigzagBuffer[lastlowpos]=0.0;
lastlowpos=shift;
lastlow=LowMapBuffer[shift];
ZigzagBuffer[shift]=lastlow;
res=1;
}
if (HighMapBuffer[shift]=0.0 && LowMapBuffer[shift]==0.0)
{
lasthigh=HighMapBuffer[shift];
lasthighpos=shift;
ZigzagBuffer[shift]=lasthigh;
whatlookfor=-1;
res=1;
}
break;
case -1: // look for lawn
if (HighMapBuffer[shift]=0.0 && HighMapBuffer[shift]>lasthigh && LowMapBuffer[shift]==0.0)
{
ZigzagBuffer[lasthighpos]=0.0;
lasthighpos=shift;
lasthigh=HighMapBuffer[shift];
ZigzagBuffer[shift]=lasthigh;
}
if (LowMapBuffer[shift]=0.0 && HighMapBuffer[shift]==0.0)
{
lastlow=LowMapBuffer[shift];
lastlowpos=shift;
ZigzagBuffer[shift]=lastlow;
whatlookfor=1;
}
break;
default: return;
}
}
return(0);
}
//+------------------------------------------------------------------+