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

 
Alexandr Sokolov:

Tuve una idea, necesito muchos ciclos, así que decidí comprobar la velocidad de esta manera

... Como resultado, MT5 deja de funcionar, tiene fallos y tengo que cerrarlo a través del administrador de tareas


¿Es un problema de potencia de mi PC o algo más?


*PS - Quiero intentar escribir una red neuronal, y habrá miles de millones de ciclos, y aquí voy por un millón.

Pero lo he cogido dos veces sin ningún fallo, pero si lo vuelvo a repetir falla (script en archivos adjuntos)

Archivos adjuntos:
zsbh.mq5  7 kb
 
Alexandr Sokolov:

Tuve una idea, necesito muchos ciclos, así que decidí comprobar la velocidad de esta manera

... Como resultado, MT5 deja de funcionar, tiene fallos y tengo que cerrarlo a través del administrador de tareas


¿Es un problema de potencia de mi PC o algo más?


*PS - Quiero intentar escribir una red neuronal, y serán miles de millones de ciclos, y aquí me voy a tumbar por un millón.

no lo intentes :-)

o más bien, escribir algo más sencillo primero

Porque el problema está en la falta de comprensión de lo que estás escribiendo y de cómo funciona en general.

 
Maxim Kuznetsov:

no lo intentes :-)

o más bien, escribir algo sencillo primero

porque el problema está en la falta de comprensión de lo que estás escribiendo y de cómo funciona en general.

Este script no es una red neuronal)) lo hice para ver lo rápido que pasa un millón de ciclos


Pero, ¿por qué el terminal tiene fallos? El script comienza a funcionar (los dígitos se ejecutan), pero no llego al final (al menos para mí)

 
Buenas tardes, señores programadores. Por favor, avisa. Estoy tratando de escribir un indicador de flecha basado en patrones de inversión y otros. Parece que está bien. Sin embargo, sólo considera las 2 primeras velas en lugar de 4. Al compilar, el editor jura la posible pérdida de precisión al asignar diferentes tipos de datos. Y sólo en iVolume. Gracias de antemano.
 
35vas35:
Buenas tardes, señores programadores. Por favor, avisa. Estoy tratando de escribir un indicador de flecha basado en patrones de inversión y otros. Parece que está bien. Sin embargo, sólo considera las 2 primeras velas en lugar de 4. Al compilar, el editor jura la posible pérdida de precisión al asignar diferentes tipos de datos. Y sólo en iVolume. Gracias de antemano.

Aquí.

 
Artyom Trishkin:

Aquí.

Aquí está el código del indicador.
//+------------------------------------------------------------------+
//|                                                       Figaro.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2     
#property indicator_color1 Blue   
#property indicator_color2 Red    
double Buy[];                   
double Sell[];                  
#define  BUY 0
#define  SELL 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{

SetIndexBuffer (0, Buy);
SetIndexBuffer (1, Sell);  

SetIndexEmptyValue (0, 0);
SetIndexEmptyValue (1, 0);

SetIndexStyle (0, DRAW_ARROW);
SetIndexStyle (1, DRAW_ARROW); 
SetIndexArrow(0, 233);  // Стрелка "вверх" для покупок
SetIndexArrow(1, 234);  // Стрелка "вниз" для продаж

IndicatorDigits (Digits);

IndicatorShortName ("FIGARO");

SetIndexLabel(0, "Покупаем");
SetIndexLabel(1, "Продаём");

return(INIT_SUCCEEDED);

}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
{

int counted_bars = IndicatorCounted();
int limit, signal;

if (counted_bars>0) 
counted_bars-- ;

limit=Bars-counted_bars;

for(int i = 2; i < limit; i++) 
{
signal = Signal(i-1);
if (signal == BUY)
{ 
Buy[i-1] = low[i-1];
}
else
if (signal == SELL)
{
Sell[i-1] = high[i-1];
}
}
return(rates_total); } 
//+------------------------------------------------------------------+
int Signal(int i)
{
     double O_1 = iOpen(Symbol(), 0, 1);
     double O_2 = iOpen(Symbol(), 0, 2);
     double O_3 = iOpen(Symbol(), 0, 3);
     double O_4 = iOpen(Symbol(), 0, 4);
     double C_1 = iClose(Symbol(), 0, 1);
     double C_2 = iClose(Symbol(), 0, 2);
     double C_3 = iClose(Symbol(), 0, 3);
     double C_4 = iClose(Symbol(), 0, 4);
     double H_1 = iHigh(Symbol(), 0, 1);
     double H_2 = iHigh(Symbol(), 0, 2);
     double L_1 = iLow(Symbol(), 0, 1);
     double L_2 = iLow(Symbol(), 0, 2);
     double S_1 = iVolume(NULL, 0, 1);
     double S_2 = iVolume(NULL, 0, 2);
     double S_3 = iVolume(NULL, 0, 3);
if ((O_1<C_1 && S_1>=8 && S_2==0 && O_3>C_3 && O_4>C_4 && (H_2-O_2)>=6 && (C_2-L_2)>=6) || (O_1<C_1 && S_1>=10 && O_2>C_2 && S_2>=8 && O_3>C_3 &&
O_4>C_4 && S_3>=8 && O_1<=C_2 && O_1<C_3 && O_2<C_1 && O_3<C_1) || (O_1<C_1 && O_2>C_2 && O_3>C_3 && O_4>C_4 && S_1<=1 && (O_1-L_1)>=5 && (H_1-C_1)<=2) || (O_1<C_1 && S_1>=10 &&
O_2>C_2 && O_3>C_3 && S_2>=10 && S_1>=S_2*0.6 && O_1<C_2 && (H_1-C_1)<=2 && (O_1-L_1)<=2 && (H_2-O_2)<=2 && (C_2-L_2)<=2) || (O_1<C_1 && S_1>=10 && O_2>C_2 &&
S_2>=8 && C_1<=C_2 && (H_1-C_1)<=2 && (O_1-L_1)<=2 && (H_2-O_2)<=2 && (C_2-L_2)<=2))
     
     return (BUY);
     
if ((O_1>C_1 && S_1>=8 && S_2==0 && O_3<C_3 && O_4<C_4 && (H_2-O_2)>=6 && (C_2-L_2)>=6) || (O_1>C_1 && S_1>=10 && O_2<C_2 && O_3<C_3 && O_4<C_4 &&
S_2>=8 && S_3>=8 && O_1>=C_2 && O_1>C_3 && O_2>C_1 && O_3>C_1) || (O_1>C_1 && O_2<C_2 && O_3<C_3 && O_4<C_4 && S_1<=1 && (C_1-L_1)>=5 && (H_1-O_1)<=2) || (O_1>C_1 && S_1>=10 && 
O_2<C_2 && O_3<C_3 && O_4<C_4 && S_2>=10 && S_1>=S_2*0.6 && O_1>C_2 && (H_1-O_1)<=2 && (C_1-L_1)<=2 && (H_2-C_2)<=2 && (O_2-L_2)<=2) || (O_1>C_1 && S_1>=10 && O_2<C_2 &&
O_3<C_3 && O_4<C_4 && S_2>=8 && C_1>=C_2 && (H_1-O_1)<=2 && (C_1-L_1)<=2 && (H_2-C_2)<=2 && (O_2-L_2)<=2))

     return (SELL);
     
     return(-1);
     
}
 

35vas35:
Вот код индикатора.

El problema es que como se puede ver en el gráfico, el volumen de 3 velas de la señal de compra es de 3 puntos. Pero en el código el volumen se prescribe a partir de 8.

 
35vas35:

El problema es que como se puede ver en el gráfico, el volumen de 3 velas de la señal de compra es de 3 puntos. Pero en el código el volumen se prescribe a partir de 8.

En el futuro, quiero adjuntar un correo o sms. Intenté escribir un EA con indicadores MACD, MA y RSI utilizando este principio. Hay pocas señales falsas. Pero me gustaría controlar el proceso yo mismo.
 
35vas35:
En el futuro, quiero vincular el boletín con el correo electrónico o los sms. Intenté escribir un EA con indicadores MACD, MA y RSI utilizando este principio. Hay pocas señales falsas. Pero me gustaría controlar el proceso yo mismo.
Utilicé como base el harami, la absorción de dos velas, el martillo, el gap y el velo, los patrones de contraataque.