Funciones útiles de KimIV - página 83

 
¿Puede i-Sessions añadir también una sesión nocturna, como la 23 a la 01, es decir, puedo añadirme, pero cómo paso por las 00. horas? ¡¡¡Ayuda por favor !!!
 
¡Ayuda para rehacer e-TFL_v2!

Cómo hacer que el EA abra no una posición, sino 2 o 3 a la vez en una dirección. Por ejemplo, ¿cómo puedo abrir dos posiciones unidireccionales a 0,5 y 0,5 lotes en lugar de un lote? O 0,3+0,3+0,3 lotes.
 
Me puedes decir cómo configurar el terminal para que cuando lo cambies a ruso, todo esté escrito en ruso, porque todo está escrito en jeroglíficos.
 
arvis >> :
>> ¿Cómo configuro el terminal para que cuando lo cambie a ruso, diga todo en ruso, porque mi idioma está escrito en jeroglíficos?

En la configuración regional de Windows, establezca el idioma en ruso para utilizarlo en aplicaciones que no utilizan Unicode.

 

Hola, tengo una pregunta directamente a Igor Kim porque es el autor (si no me equivoco) del indicador i-SignalOfTrade.

El indicador realiza todas sus funciones perfectamente, pero al enviar un correo electrónico aparecen las siguientes entradas en el registro

Correo: 'i-SignalOfTrade' falló

Correo: 451 Véase http://pobox.com/~djb/docs/smtplf.html.

y por supuesto el mensaje no va a ninguna parte.

¿Pueden decirme cuál puede ser el problema y cómo solucionarlo?

P.D. El cliente de correo está configurado correctamente, los mensajes de prueba se envían y entregan sin problemas.

 

Buenas tardes. ¿Puede decirme quién lo sabe? Estoy trabajando con el índice RTS. El tamaño de la posición es calculado por un programa de terceros y transmitido al Asesor Experto a través de un archivo txt. Tengo dos problemas aquí:

1. Como el bloque de inicio {...} sólo se activa cuando llega un nuevo tick y los ticks en el índice son escasos, hay un retraso en la ejecución del EA.

Lo he colocado en un instrumento de ticking más frecuente ( EURUSD ), pero aún así pregunto - ¿es posible iniciar forzosamente {...}?

2. El tamaño máximo de posición permitido por mi broker es de 20 lotes. Necesito abrir una posición de 100 lotes. Ahora mismo estoy abriendo una posición a la vez,

pero se tarda mucho, unos 4 segundos por pedido. (es decir, tarda 20 segundos en abrir una posición), y a veces eso no es bueno. ¿Hay alguna forma de hacerlo más rápido? (a través de órdenes de stop preestablecidas - a mí no me funciona).

 
ADI1966 >> :

2. el tamaño máximo de posición permitido por el broker es de 20 lotes. Necesito abrir una posición de 100 lotes. Ahora estoy abriendo en sucesión,

pero se tarda mucho, unos 4 segundos por pedido. (es decir, tarda 20 segundos en abrir una posición), y a veces eso no es bueno. ¿Hay alguna forma de hacerlo más rápido? (a través de órdenes de stop precolocadas - a mí no me funciona).

https://forum.mql4.com/ru/13567
 
kombat писал(а) >>
https://forum.mql4.com/ru/13567

leer.

He entendido bien que en un tick el EA enviará varias órdenes de compra al sistema de trading al mismo tiempo,

en lugar de esperar a que el servidor responda a la primera aceptación y ejecución de la orden, luego a la segunda, y así sucesivamente? ??

Hasta ahora lo tengo así - ejemplo - (registro, cuenta real, tiempo real)

10.55.13 - orden de compra de mercado 20 RTS - se trata de los primeros 20 lotes

10.55.13 - La solicitud ha sido aceptada por el servidor

10.55.13 - solicitud en curso

10.55.17 - se abrió el pedido

10.55.18 - orden de compra de mercado 20 RTS - este es el segundo 20 lotes

10.55.18 - La solicitud ha sido aceptada por el servidor

10.55.19 - solicitud en curso

10.55.22 - se abrió la orden

10.55.23 - orden de compra de mercado 20 RTS - este es el tercer 20 lotes

10.55.23 - la solicitud ha sido aceptada por el servidor

10.55.24 - solicitud en curso

10.55.27 - se abrió la orden

y me gustaría que toda la posición se abriera en los primeros 4 segundos, es decir, antes de las 10.55.17

 
ADI1966 писал(а) >>

2. el tamaño máximo de posición permitido por el broker es de 20 lotes. Necesito abrir una posición de 100 lotes. Ahora estoy abriendo en sucesión,

pero se tarda mucho, unos 4 segundos por pedido. (es decir, tarda 20 segundos en abrir una posición), y a veces eso no es bueno. ¿Hay alguna forma de hacerlo más rápido? (a través de órdenes de stop preestablecidas - a mí no me funciona).

Si se ejecutan 4 terminales, llegarán al distribuidor 4 solicitudes para su procesamiento a la vez, no una por una.

 

¡Igor, hola!

¿Podría aconsejarme cómo implementar una notificación sonora en un indicador existente?

Por ejemplo, en ZigZag. Si quieres tener sonido en el momento de trazar la nueva línea, regístralo en el Organizador:

//+------------------------------------------------------------------+
//| Zigzag.mq4 ||
//| Copyright © 2005-2007, MetaQuotes Software Corp.
//| https://www.metaquotes.net// |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#enlace de la propiedad "https://www.metaquotes.net//"

#propiedad ventana_del_gráfica_del_indicador
#property indicator_buffers 1
#property indicator_color1 Rojo
//---- parámetros del indicador
extern intDepth=12;
extern inttern ExtDeviation=5;
extern inttern ExtBackstep=3;
//---- búferes indicadores
doble ZigzagBuffer[];
doble HighMapBuffer[];
doble LowMapBuffer[];
int level=3; // profundidad del recuento
bool downloadhistory=false;
//+------------------------------------------------------------------+
//| Función de inicialización de indicadores personalizada |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(3);
//---- ajustes de dibujo
SetIndexStyle(0,DRAW_SECTION);
//---- asignación de topes indicadores
SetIndexBuffer(0,ZigzagBuffer);
SetIndexBuffer(1,HighMapBuffer);
SetIndexBuffer(2,LowMapBuffer);
SetIndexEmptyValue(0,0.0);

//---- nombre corto del indicador
IndicatorShortName("ZigZag("+ExtDepth+", "+ExtDeviation+", "+ExtBackstep+")";
//---- inicialización realizada
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int inicio()
{
int, counted_bars = IndicatorCounted();
int limite,contadorZ,quepunto de vista;
int cambio,atrás,última posición alta,última posición baja;
doble val,res;
doble curlow,curhigh,lastthigh,lastlow;

if (counted_bars==0 && downloadhistory) // se ha descargado el historial
{
ArrayInitialize(ZigzagBuffer,0.0);
ArrayInitialize(HighMapBuffer,0.0);
ArrayInitialize(LowMapBuffer,0.0;)
}
si (barras_contadas==0)
{
limit=Barras-ProfundidadExterior;
downloadhistory=true;
}
si (barras_contadas>0)
{
while (contadorZ<nivel && i<100)
{
res=ZigzagBuffer[i];
si (res!=0) contadorZ++;
i++;
}
i--;
limit=i;
if (LowMapBuffer[i]!=0)
{
curlow=BufferMapaBajo[i];
whatlookfor=1;
}
si no
{
curhigh=MapaAltoBuffer[i];
para qué=-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;
si no
{
lastlow=val;
if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
si no
{
for(back=1; back<=ExtBackstep; back++)
{
res=BufferMapaBajo[shift+back];
if((res!=0)&&(res>val)) LowMapBuffer[shift+back]=0.0;
}
}
}
si (Low[shift]==val) LowMapBuffer[shift]=val; si no LowMapBuffer[shift]=0.0;
//--- alto
val=Alto[iAlto(NULL,0,MODO_ALTO,ProfundidadExt,desplazamiento)];
if(val==lasthigh) val=0,0;
si no
{
último muslo=val;
if((val-High[shift])>(ExtDeviation*Point)) val=0.0;
si no
{
for(back=1; back<=ExtBackstep; back++)
{
res=MapaAltoBuffer[shift+back];
if((res!=0)&&(res<val)) HighMapBuffer[shift+back]=0.0;
}
}
}
si (High[shift]==val) HighMapBuffer[shift]=val; si no, HighMapBuffer[shift]=0.0;
}

// corte final
si (whatlookfor==0)
{
lastlow=0;
último tramo=0;
}
si no
{
lastlow=curlow;
último tramo = último tramo;
}
for (shift=limit;shift>=0;shift--)
{
res=0,0;
switch(whatlookfor)
{
caso 0: // buscar pico o césped
if (lastlow==0 && lasthigh==0)
{
if (HighMapBuffer[shift]!=0)
{
lasthigh=altura[turno];
lastthighpos=desplazamiento;
para qué=-1;
ZigzagBuffer[shift]=lastra;
res=1;
}
if (LowMapBuffer[shift]=0)
{
lastlow=Low[shift];
lastlowpos=desplazamiento;
whatlookfor=1;
ZigzagBuffer[shift]=lastlow;
res=1;
}
}
romper;
caso 1: // buscar el pico
if (LowMapBuffer[shift]=0.0 && LowMapBuffer[shift]<lastlow && HighMapBuffer[shift]==0.0)
{
ZigzagBuffer[lastlowpos]=0.0;
lastlowpos=desplazamiento;
lastlow=BufferMapaBajo[shift];
ZigzagBuffer[shift]=lastlow;
res=1;
}
if (HighMapBuffer[shift]=0.0 && LowMapBuffer[shift]==0.0)
{
lasthigh=BufferMapaAlto[shift];
lastthighpos=desplazamiento;
ZigzagBuffer[shift]=lastra;
para qué=-1;
res=1;
}
romper;
caso -1: // buscar el césped
if (HighMapBuffer[shift]=0.0 && HighMapBuffer[shift]>lasthigh && LowMapBuffer[shift]==0.0)
{
ZigzagBuffer[lastthighpos]=0.0;
lastthighpos=desplazamiento;
lasthigh=BufferMapaAlto[shift];
ZigzagBuffer[shift]=lastra;
}
if (LowMapBuffer[shift]=0.0 && HighMapBuffer[shift]==0.0)
{
lastlow=BufferMapaBajo[shift];
lastlowpos=desplazamiento;
ZigzagBuffer[shift]=lastlow;
whatlookfor=1;
}
romper;
por defecto: retorno;
}
}

return(0);
}
//+------------------------------------------------------------------+