Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 730
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
barras[]
Lo llamóBars, el compilador está regañando a los cielos. ¿Has probado este diseño, o simplemente has asumido que debería funcionar, o estoy haciendo algo mal?
Sí, mi error. Dígalo. En general, la idea es dar nombres expresivos a las variables, así no necesitarás crear variables adicionales, cuya existencia no siempre está justificada.
El motivo no es expresar algo, sino acortar el código cuando se trabaja con ellos:
Y el resto de la misma manera, de lo contrario la longitud de las líneas aumenta
Gracias a todos por las aclaraciones.
No lo nombré para expresar algo, sino para reducir el código al trabajar con ellos:
Y el resto de la misma manera, de lo contrario la longitud de las líneas aumenta
Gracias a todos por las aclaraciones.
Si quiere reducir el código al mínimo, haga referencia directamente a la matriz de datos
//| test09.mq5 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
MqlRates bars[]; // массив для хранения данных цен OHLC
int start_bar=0; // с какого бара копируем
int count_bar=4; // сколько баров копируем
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
ArraySetAsSeries(bars, true);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(CopyRates(Symbol(),PERIOD_CURRENT, start_bar, count_bar, bars)<count_bar) return;
if(bars[1].open<bars[1].close && bars[2].close>bars[3].close && bars[1].close>bars[2].close)
{
}
}
//+------------------------------------------------------------------+
¡Buenas tardes!
¿Dónde y cómo borrar correctamente las órdenes colocadas y las posiciones abiertas al descargar (borrar) un Asesor Experto? Si no es difícil, por favor comparta un ejemplo.
Gracias.
Uno de los EAs está teniendo algunas tonterías extrañas. Prueba el EA normalmente, haciendo clic en "Ejecutar una sola prueba" sólo se ejecuta una sola, la primera vez. Entonces, cuando se hace clic en la prueba individual o se hace clic en cualquier línea de la Optimización, se muestra en el Diario:
2017.02.08 13:31:05.165 El comprobador no puede obtener entradas para el pase 4234087422336
2017.02.08 13:31:34.829 El comprobador no puede obtener entradas para el pase 4076312468706
2017.02.08 13:31:47.973 El comprobador no puede obtener entradas para el pase 1004506640527
Los otros EAs se comportan normalmente. ¿Qué puede ser?
Señores, grabando una enorme matriz de 10000*10000
{
//--- запишем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
//---
if(handle!=INVALID_HANDLE)
{
for(int z=ARRAY_SIZE_Y; z>0; z--) // Перебор по барам, колонка Y
{
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
}
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError()," handle ",handle);
//---
count=1;
}
¿Cómo cree que este algoritmo es eficiente en términos de velocidad?
Porque cuando la matriz es de 1000*1000 la velocidad es de unos pocos segundos, al aumentar a 10000*10000 el sistema se levanta
Señores, grabando una enorme matriz de 10000*10000
{
//--- запишем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
//---
if(handle!=INVALID_HANDLE)
{
for(int z=ARRAY_SIZE_Y; z>0; z--) // Перебор по барам, колонка Y
{
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
}
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError()," handle ",handle);
//---
count=1;
}
¿Cómo cree que este algoritmo es eficiente en términos de velocidad?
Porque cuando la matriz es de 1000*1000 la velocidad es de unos pocos segundos, al aumentar a 10000*10000 el sistema se levanta
¿Hay alguna confusión?
¿Cómo es posible obtener una matriz de este tipo si no se permiten matrices de más de cuatro dimensiones?
¿No hay ninguna confusión?
¿No es 10000 x 10000 una matriz bidimensional?
y todo eso...
¿Cómo es posible obtener una matriz de este tipo si no se permiten matrices de más de cuatro dimensiones?
¿Hay alguna confusión?