Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 975

 
Alexandr Sokolov:

Eu tinha uma idéia, preciso de muitos ciclos, então decidi verificar a velocidade desta maneira

... Como resultado, o MT5 pára de funcionar, falhas e eu tenho que fechá-lo através do gerenciador de tarefas


Isto é um problema no poder do meu pc ou algo mais?


*PS - Quero tentar escrever uma rede neural, e haverá bilhões de ciclos, e aqui estou indo por um milhão.

Mas eu o peguei duas vezes sem falhas, mas se eu o repito novamente, há falhas (script em arquivos anexos)

Arquivos anexados:
zsbh.mq5  7 kb
 
Alexandr Sokolov:

Eu tinha uma idéia, preciso de muitos ciclos, então decidi verificar a velocidade desta maneira

... Como resultado, o MT5 pára de funcionar, falhas e eu tenho que fechá-lo através do gerenciador de tarefas


Isto é um problema no poder do meu pc ou algo mais?


*PS - Eu quero tentar escrever uma rede neural, e serão bilhões de ciclos, e aqui vou me deitar por um milhão.

não tente :-)

ou melhor, escrever algo mais simples primeiro

Porque o problema está na falta de compreensão do que você está escrevendo e como funciona em geral.

 
Maxim Kuznetsov:

não tente :-)

ou melhor, escreva algo simples primeiro

porque o problema está na falta de compreensão do que você está escrevendo e como funciona em geral.

Este roteiro não é uma rede neural)) Eu fiz isso para ver a velocidade de um milhão de ciclos que passam


Mas por que o terminal está com problemas? O roteiro começa a funcionar (os dígitos estão funcionando), mas eu não chego ao final (pelo menos para mim)

 
Boa tarde, senhores programadores. Por favor, informe. Estou tentando escrever um indicador de seta baseado em padrões de inversão e outros. Parece estar tudo bem. No entanto, considera apenas os dois primeiros castiçais em vez de 4. Ao compilar, o editor jura sobre a possível perda de precisão ao atribuir diferentes tipos de dados. E somente no iVolume. Obrigado de antemão.
 
35vas35:
Boa tarde, senhores programadores. Por favor, informe. Estou tentando escrever um indicador de seta baseado em padrões de inversão e outros. Parece estar tudo bem. No entanto, considera apenas os dois primeiros castiçais em vez de 4. Ao compilar, o editor jura sobre a possível perda de precisão ao atribuir diferentes tipos de dados. E somente no iVolume. Obrigado de antemão.

Aqui.

 
Artyom Trishkin:

Aqui.

Aqui está o código para o 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:
Вот код индикатора.

O problema é que, como você pode ver no gráfico, o volume de 3 velas do sinal de compra é de 3 pontos. Mas no código, o volume é prescrito a partir de 8 e acima.

 
35vas35:

O problema é que, como você pode ver no gráfico, o volume de 3 velas do sinal de compra é de 3 pontos. Mas no código, o volume é prescrito a partir de 8 e acima.

No futuro, quero anexar uma correspondência ou sms. Eu tentei escrever um EA com indicadores MACD, MA e RSI usando este princípio. Há poucos sinais falsos. Mas eu mesmo gostaria de controlar o processo.
 
35vas35:
No futuro, quero vincular o boletim informativo a e-mail ou sms. Eu tentei escrever um EA com indicadores MACD, MA e RSI usando este princípio. Há poucos sinais falsos. Mas eu mesmo gostaria de controlar o processo.
Usei harami, duas velas de absorção, martelo, fenda e véu, padrões de contra-ataque como base.
Razão: