[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 88

 

Todo estaba aquí C:\N-Users\======AppData\Local\VirtualStore\\NProgram Files\====== - MetaTrader\

vista

 

Por favor, avisa.

Escribí un simple script (poner dos colgantes cerca del mercado para ponerlo en el gráfico antes de la publicación de noticias para no tener que hacerlo manualmente). Parece ser mucho más fácil, pero no funciona, no se abren órdenes y el diario sólo dice que el script se carga con éxito, y luego se elimina inmediatamente en el mismo segundo! Se compila sin errores. Lo he convertido a forma experta, es decir, he añadido ininit y deinit, para comprobarlo en tester, ha funcionado. Pero, como comprenderás, no necesito un Asesor Experto, sino sólo un script.

¿Qué ocurre aquí? Gracias de antemano.

Aquí está el código del script:

#property copyright "alexey15"
#enlace de la propiedad ""
#property show_confirm

extern int SL = 15;
extern int TP = 90;
extern int DELTA = 15;
extern double LOT = 0.1;
extern int SLIP = 3;

//+------------------------------------------------------------------+
//| función de inicio del programa de script |
//+------------------------------------------------------------------+
int inicio()
{
//----
double PRECIOS DE COMPRA = Oferta + DELTA*Punto;
double SELLPRICE = Oferta - DELTA*Punto;
int ORDEN_ABIERTO;

OPEN_ORDER=OrderSend(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*Point,BUYPRICE+TP*Point,NULL,0,0,Blue);
OPEN_ORDER=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*Point,SELLPRICE-TP*Point,NULL,0,0,Red);


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

 
wiwkin52:

Hola. Por favor, ayuda. He desinstalado el mt y todos los indicadores junto con él, todos. Ahora lo he instalado y todo sigue ahí. ¿Qué debo hacer? ¿Tal vez haya copias de los indicadores y todo lo demás almacenado en algún lugar?

¿Sólo has desinstalado o también has eliminado la carpeta MT de Archivos de Programa?
 
alexey15:

Por favor, avisa.

Escribí un simple script (poner dos colgantes cerca del mercado para ponerlo en el gráfico antes de la publicación de noticias para no tener que hacerlo manualmente). Parece ser mucho más fácil, pero no funciona, no se abren órdenes y el diario sólo dice que el script se carga con éxito, y luego se elimina inmediatamente en el mismo segundo! Se compila sin errores. Lo he convertido a forma experta, es decir, he añadido init y deinit, para comprobarlo en tester, ha funcionado. Pero, como comprenderás, no necesito un Asesor Experto, sino sólo un script.

¿Qué ocurre aquí? Gracias de antemano.

Aquí está el código del script:


Lo he comprobado. Tu guión funciona.

Imprime el error por si acaso:

int start()
{
//----
double BUYPRICE = Ask + DELTA*Point;
double SELLPRICE = Bid - DELTA*Point;
int TicketBS,TicketSS;
TicketBS=OrderSend(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*Point,BUYPRICE+TP*Point,NULL,0,0,Blue);
TicketSS=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*Point,SELLPRICE-TP*Point,NULL,0,0,Red);
 if(TicketBS<=0 || TicketSS<=0)Print("Error = ",GetLastError());
//----
return(0);
}

 
alexey15:

Por favor, avisa.

Escribí un sencillo script (colocando dos colgantes en ambas direcciones cerca del mercado para ponerlo en el gráfico antes de la publicación de la noticia y así no tener que hacerlo manualmente). Parece ser mucho más fácil, pero no funciona, no se abren órdenes y el diario sólo dice que el script se carga con éxito, y luego se elimina inmediatamente en el mismo segundo! Se compila sin errores. Lo he convertido a forma experta, es decir, he añadido init y deinit, para comprobarlo en tester, ha funcionado. Pero, como comprenderás, no necesito un Asesor Experto, sino sólo un script.

¿Qué ocurre aquí? Gracias de antemano.

Funciona con el número de cuatro dígitos. No lo he comprobado en los niveles de cinco dígitos, pero he añadido una comprobación de las restricciones en StopLevel:

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
extern int SL     = 15;
extern int TP     = 90;
extern int DELTA  = 15;
extern double LOT = 0.1;
extern int SLIP   = 3;

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
int StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
if (DELTA <= StopLevel) DELTA = StopLevel+1;

double BUYPRICE = Ask + DELTA*Point;
double SELLPRICE = Bid - DELTA*Point;
int OPEN_ORDER;

OPEN_ORDER=OrderSend(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*Point,BUYPRICE+TP*Point,NULL,0,0,Blue);
OPEN_ORDER=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*Point,SELLPRICE-TP*Point,NULL,0,0,Red);

//----
return(0);
}
//+------------------------------------------------------------------+
En principio, se pueden hacer ajustes de punto para cuatro, cinco dígitos para evitar errores. Porque el nivel Delta debería ser diez veces mayor en una cifra de cinco, es decir, 150 en lugar de 15, y los topes y las tomas en consecuencia...

Entonces se vería así:

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
extern int SL     = 15;
extern int TP     = 90;
extern int DELTA  = 15;
extern double LOT = 0.1;
extern int SLIP   = 3;

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
double PointX;

if(Digits==5 || Digits==3) PointX = Point * 10;    // Корректировка Point под трёх- пятизнак
if(Digits==4 || Digits==2) PointX = Point;

int StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
if (DELTA <= StopLevel) DELTA = StopLevel+1;

double BUYPRICE = Ask + DELTA*PointX;
double SELLPRICE = Bid - DELTA*PointX;
int OPEN_ORDER;

OPEN_ORDER=OrderSend(Symbol(),OP_BUYSTOP,LOT,BUYPRICE,SLIP,BUYPRICE-SL*PointX,BUYPRICE+TP*PointX,NULL,0,0,Blue);
OPEN_ORDER=OrderSend(Symbol(),OP_SELLSTOP,LOT,SELLPRICE,SLIP,SELLPRICE+SL*PointX,SELLPRICE-TP*PointX,NULL,0,0,Red);

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

¡Buenos días!

¿Alguien tiene algún consejo sobre los índices...?

 
volshebnik:

¡Buenos días!

¿Alguien tiene algún consejo sobre los índices...?

Bien, los índices.
 
splxgf:
Bien, los índices.
No es gracioso ) La pregunta estaba aquí - https://www.mql5.com/ru/forum/131277/page87 Pero como los administradores del foro no recomiendan repetir preguntas, no la volví a publicar.
 
volshebnik:

¡Hola !

¿Pueden decirme qué pasa? Estoy usando el probador en GBPUSD - abre las operaciones como debe ser. Lo estoy usando en el índice del dólar DXH1 - no abre muchas operaciones, el error "130" - Paradas incorrectas. Además, no está claro qué es lo que falla: se abre y no se abre en situaciones similares, pero más que eso. Spread y nivel de stop para Dollar Index -100 y 200. Spread y nivel de stop para GBPUSD -3 y 4. Precios en el índice del dólar, por ejemplo 78,150, en el par - 4 decimales. Pero está contabilizado.

Aquí está una parte del código :


Sólo me viene a la cabeza:

1) SL y TP no están normalizados;

2) OrderSend utiliza Digits al normalizar, mientras que el pedido es realizado por Symb.

Inténtalo de esta manera:

int opDigits=MarketInfo(Symb,MODE_DIGITS);
SL = NormalizeDouble(SL,opDigits);
TP = NormalizeDouble(TP,opDigits);
ОткрФрвверх = NormalizeDouble(ОткрФрвверх,opDigits);
ticketup=OrderSend(Symb, OP_BUYSTOP, Lot, ОткрФрвверх,0, SL, TP,NULL,A,0,вверх); // Ордер вверх
 
PapaYozh:


En una suposición:

1) SL y TP no están normalizados;

2) OrderSend utiliza Digits para la normalización, mientras que el orden lo establece Symb.

Inténtalo de esta manera:

Muchas gracias. Funcionó, pero rara vez, a veces se produce el mismo error - 130....... ( ¿Es siempre necesario normalizar los topes o sólo en los índices? (sólo en los pares de divisas los stops siempre han funcionado, en mi opinión, sin normalización).