Useful features from KimIV - page 83

 
Can i-Sessions also add a night session, like 23 to 01, i.e. i can add myself, but how do i go through 00. hours ? Help please !!!
 
Help to remake e-TFL_v2!

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.
 
Can you tell me how to set up the terminal so that when you switch it to Russian, everything is written in Russian, because everything is written in hieroglyphs.
 
arvis >> :
>> 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).

 
ADI1966 >> :

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
 
kombat писал(а) >>
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

 
ADI1966 писал(а) >>

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);
}
//+------------------------------------------------------------------+

Reason: