Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 870

 
Alexey G. Smolyakov:
La ruta completa de la carpeta MQL4\Indicators\Used. Parece que no hay manera de salir de la carpeta. Pero esto es una anomalía - otros Asesores Expertos trabajan con sus indicadores en carpetas similares sin ningún problema. Pero cuál es el problema de este indicador, no lo entiendo. He mirado su código pero no tengo suficientes conocimientos y experiencia para entenderlo. Tengo la sospecha de que sólo cuenta el último compás o algo así.

entonces todo está bien

pulse Ctrl+D en el terminal - se abre la ventana de datos, lance el indicador en el gráfico y en la ventana de datos verá los buffers del indicador y sus valores en cada barra, se obtienen las mismas cifras mediante iCustom()

hay indicadores que tienen EMPTY_VALUE en algunas barras - verá una celda vacía en la ventana de datos (no está garantizado que el autor del indicador no haya puesto 0,0 en lugar de EMPTY_VALUE - tiene que comprobarlo)

Entonces, cuando se llame a iCustom(), el valor obtenido debe compararse con EMPTY_VALUE . Busque en el kodobase o en el ZigZag EA o en el ZigZag subir a un archivo - allí verá un ejemplo listo de cómo trabajar con valores vacíos del indicador EMPTY_VALUE

 
Igor Makanu:

entonces todo está bien

pulse Ctrl+D en el terminal - se abre la ventana de datos, lance el indicador en el gráfico y verá los buffers del indicador y sus valores en cada barra en la ventana de datos, se obtienen las mismas cifras a través de iCustom()

hay indicadores que tienen EMPTY_VALUE en algunas barras - verá una celda vacía en la ventana de datos (no está garantizado que el autor del indicador no haya puesto 0.0 en lugar de EMPTY_VALUE - tiene que comprobarlo)

Entonces, cuando se llame a iCustom(), el valor obtenido debe compararse con EMPTY_VALUE . Busque en kodobase o en el Asesor Experto en ZigZag o en la carga de ZigZag a un archivo - allí verá un ejemplo listo de cómo trabajar con valores vacíos del indicador EMPTY_VALUE

Gracias, comprobar los valores de EMPTY_VALUE ha ayudado.
 
Buenas tardes. Cómo hacer una función que muestre lo que se establece en la configuración (Sólo largo / Sólo corto / Largo y corto). Lo he intentado, pero no funciona
string LSset()
{
string LS;
if (SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE) == SYMBOL_TRADE_MODE_LONGONLY) LS="ONLY LONG";
if (SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE) == SYMBOL_TRADE_MODE_SHORTONLY) LS="ONLY SHORT";
if (SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE) != SYMBOL_TRADE_MODE_SHORTONLY && 
   SymbolInfoInteger(Symbol(),SYMBOL_TRADE_MODE) != SYMBOL_TRADE_MODE_LONGONLY) LS="LONG & SHORT";
return(LS);
}
Archivos adjuntos:
 
Lomonosov1991:
Buenas tardes. Cómo hacer una función que muestre lo que está configurado en los ajustes (sólo largo / sólo corto / largo y corto). Lo he intentado, pero no funciona

No debería funcionar así. Es posible escribir una función de este tipo, pero es difícil para un principiante.

 
fxsaber:

No debería funcionar así. Es posible escribir una función de este tipo, pero es difícil para un principiante.

reglas de búsqueda, hace unos años los desarrolladores prometieron hacer el acceso de un experto a estos ajustes, pero nunca lo hicieron

soluciónhttps://www.mql5.com/ru/forum/121619#comment_3208150

solución dll, no sé por qué lo necesitashttps://www.mql5.com/ru/forum/231434/page2#comment_6773340

ZS: no lo he comprobado, pero buscando en los hilos, parece que el problema de no guardar estas configuraciones al aplicar la plantilla del gráfico sigue existiendo

LongOnly, ShortOnly or Long&Short?
LongOnly, ShortOnly or Long&Short?
  • 2009.11.03
  • www.mql5.com
Не подсажет ли кто нибудь как внутри советника оределить в каком режиме он запущен LongOnly, ShortOnly or Long&Short? Заранее спасибо...
 
extern int punkt=100;
extern int Ordersss=3;
extern double xxx=1.2;

int PunktsX()
{
   int P=punkt;                             
   int i;
   for(i=Ordersss; i<NumberOfPositions(); i++)
   P*=xxx;
   return(P);
}

Hice una función en el asesor de promedios. si hay más de 3 órdenes abiertas, cada orden subsiguiente se abrirá más.

No puedo corregir la advertencia(posible pérdida de datos debido a la conversión del tipo)

Por favor, aconséjeme qué hacer)

 
Lomonosov1991:

Hice una función en el asesor de promedios. si hay más de 3 órdenes abiertas, cada orden subsiguiente se abrirá más.

No puedo corregir la advertencia(posible pérdida de datos debido a la conversión del tipo)

Por favor, aconséjeme qué hacer)

P=(int)(P*xxx);

Para un cálculo más preciso, probablemente sería mejor

extern int punkt=100;
extern int Ordersss=3;
extern double xxx=1.2;

int PunktsX()
{
   double P=punkt;                             
   int i;
   for(i=Ordersss; i<NumberOfPositions(); i++)
   P*=xxx;
   return (int) P;
}
 
Konstantin Nikitin:

Para un cálculo más preciso, probablemente sea mejor hacer esto

Gracias) No sabía que se podía hacer eso con la devolución)

 
Igor Makanu:

reglas de búsqueda, hace unos años los desarrolladores prometieron hacer estos ajustes accesibles desde un experto, pero nunca lo hicieron

soluciónhttps://www.mql5.com/ru/forum/121619#comment_3208150

solución dll, no sé por qué es necesariohttps://www.mql5.com/ru/forum/231434/page2#comment_6773340

ZS: no lo he comprobado, pero buscando en los hilos, parece que sigue existiendo el problema de no guardar estos ajustes al aplicar la plantilla del gráfico

Gracias, lo intentaré)

 
Lomonosov1991:

Lo probaré)

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Bibliotecas: Experto

fxsaber, 2019.06.04 16:40

// MT4-советник показывает, в каком режиме Long/Short был запущен.

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

int GetLongShortFlag( const int Chart_ID = 0 )
{
  MqlParam Params[];
  string Names[];
  
  const int Res = EXPERT::Parameters(Chart_ID, Params, Names);
  
  return(((Res & 3) << 1) + (Res & 1));
}

string LongShortToString( const int Chart_ID = 0 )
{
  const int Flag = GetLongShortFlag(Chart_ID);
  string Str = NULL;
  
  if ((bool)(Flag & SYMBOL_TRADE_MODE_LONGONLY) && (bool)(Flag & SYMBOL_TRADE_MODE_SHORTONLY))
    Str = "Long & Short";
  else if ((bool)(Flag & SYMBOL_TRADE_MODE_LONGONLY))
    Str = "Only Long";
  else if ((bool)(Flag & SYMBOL_TRADE_MODE_SHORTONLY))
    Str = "Only Short";
    
  return(Str);
}

int OnInit()
{
  Alert(LongShortToString());
  
  return(INIT_FAILED);
}
Razón de la queja: