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

 
WinProject:

Gracias) , la variable Cena=FileReadString(handle); inserto en la función Separator=StringReplace(Sepa,",","."); escribe error "conversión implícita de número a cadena" -.

no quiere leer el valor con el separador "," (1,22426) como una cadena, y StringReplace no funciona. ¿O lo estoy haciendo mal?


Por favor, copie la parte del código tal y como lo tiene, desde el principio de la lectura del archivo, especificando el tipo de variable CENA

 
Vladislav Andruschenko:

Por favor, copie la parte del código tal y como lo tiene, desde el principio de la lectura del archivo, especificando el tipo de la variable CENA


void MiFunción()

{

handle=FileOpen('Datos.csv',FILE_CSV|FILE_READ,';');

while(FileIsEnding(handle)!=true)

{ string cena=FileReadString(handle);

string Separ=StringReplace(cena,",".");

if(FileIsEnding(handle)==true)

romper;

}

FileClose(handle);

}

 
WinProject:

void MiFunción()

{

handle=FileOpen('Datos.csv',FILE_CSV|FILE_READ,';');

while(FileIsEnding(handle)!=true)

{ string cena=FileReadString(handle);

string Separ=StringReplace(cena,",".");

if(FileIsEnding(handle)==true)

romper;

}

FileClose(handle);

}

Por favor, lea lo que devuelve esta función. Estás tratando de encadenar el resultado. Pero esta función sólo sustituye un carácter por una cadena. Puedes seguir usando la cena con cambios
 
Vladislav Andruschenko:
Por favor, lea lo que devuelve esta función. Estás tratando de encadenar el resultado. Pero esta función sólo sustituye un carácter por otro. Puedes seguir utilizando Cena ya con los cambios
Descubrí mi error, (cadena Separ=es redundante aquí) y funcionó.

Gracias, gracias)

 

Ayuda, necesito dibujar un rectángulo desde el máximo de la vela anterior hasta un punto 200p por encima de ella y el tiempo de una barra por delante.

He escrito el código, pero no entiendo por qué el punto izquierdo del rectángulo no se mueve? Y el derecho se desliza detrás del hai.

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   //ObjectDelete(0,"Name");
   ArraySetAsSeries(high,true);
   ObjectCreate(0,"Name",OBJ_RECTANGLE,0,TimeCurrent(),high[0],TimeCurrent()+PeriodSeconds(PERIOD_CURRENT)*2,high[0]+200*_Point);
   ObjectSetInteger(0,"Name",OBJPROP_FILL,true);
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Roman Sharanov:

Ayuda, necesito dibujar un rectángulo desde el máximo de la vela anterior hasta un punto 200p por encima de él y el tiempo de una barra por delante.

He escrito el código, pero no entiendo por qué el punto izquierdo del rectángulo no se mueve? Y el derecho se desliza detrás del hai.


¿Tal vez está intentando crear un objeto que ya está en el gráfico?


Y la barra anterior es 1 no 0.

high[0] - это ХАЙ текущего бара
 
Vladislav Andruschenko:

Tal vez esté tratando de crear un objeto que ya está en el gráfico. Sería mejor comprobar si ya hay objetos en el gráfico.


Sí y la barra anterior es 1 no 0.


Así es, ya arreglé los índices.

Cambiado el nombre, mirado la lista, nada ha cambiado, sigue igual, un punto cuelga en un sitio, el otro sigue el hai

 
Roman Sharanov Así es, ya arreglé los índices.

Cambiado el nombre, mirado la lista, nada ha cambiado, sigue igual, un punto cuelga en un sitio, el otro sigue el hai

   ObjectDelete(0,"Name");
   ObjectCreate(0,"Name",OBJ_RECTANGLE,0,
                TimeCurrent()-_Period*60,high[1],
                TimeCurrent()+PeriodSeconds(PERIOD_CURRENT)*2,high[0]+200*_Point);
   ObjectSetInteger(0,"Name",OBJPROP_FILL,true);
   return(rates_total);

Se está moviendo.


 
STARIJ:
Es muy sencillo. Es necesario establecer 7 parámetros para el cálculo del iMA. El primer parámetro, el nombre del símbolo, es obvio. Como el segundo, marco temporal, establece M1. El tercer parámetro - el período - establecer tantas veces como sea necesario, cuántos días es más de un minuto. El cuarto parámetro - shift = 0. Los dos siguientes parámetros -el método de promediación y el tipo de precio- ya los conoces. El último es el número de compás. Por favor, calcule el número de compás si sabe el tiempo que necesita. ¡Eso es todo! Vuelve a comprobarlo haciendo cálculos para los plazos M5 y M15. Tal vez incluso para la M30.

STARIJ, Gracias por la ayuda, comprobado, desgraciadamente la coincidencia con el original es pobre, y a medida que aumenta el TF (por ejemplo de 30 min a semanal) la coincidencia disminuye significativamente. Este método es mejor que nada, pero no tiene mucha precisión. ¿Existen otras variantes?

 
Boss11:

STARIJ, Gracias por la ayuda, comprobado, desgraciadamente la coincidencia con el original es pobre, y a medida que aumenta el TF (por ejemplo de 30 min a semanal) la coincidencia disminuye significativamente. Este método es mejor que nada, pero no tiene mucha precisión. ¿Existen otras variantes?

Sí. Deberíamos usar M1, y M5, ... - para comprobarlo. ¿Tal vez deberíamos usar la interpolación? MT5 tiene un historial de ticks. Si me dices dónde está el beneficio, le echaré otro vistazo.