Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 975

 
Alexandr Sokolov:

Ho avuto un'idea, ho bisogno di molti cicli, quindi ho deciso di controllare la velocità in questo modo

... Il risultato è che MT5 smette di funzionare, ha dei glitch e devo chiuderlo tramite il task manager


È un problema di potenza del mio pc o qualcos'altro?


*PS - Voglio provare a scrivere una rete neurale, e ci saranno miliardi di cicli, e qui sto andando per un milione.

Ma l'ho preso due volte senza alcun problema, ma se lo ripeto di nuovo si blocca (script nei file allegati)

File:
zsbh.mq5  7 kb
 
Alexandr Sokolov:

Ho avuto un'idea, ho bisogno di molti cicli, quindi ho deciso di controllare la velocità in questo modo

... Il risultato è che MT5 smette di funzionare, ha dei glitch e devo chiuderlo tramite il task manager


È un problema di potenza del mio pc o qualcos'altro?


*PS - Voglio provare a scrivere una rete neurale, e saranno miliardi di cicli, e qui mi sdraio per un milione.

non provarci :-)

o meglio, scrivere prima qualcosa di più semplice

Perché il problema è nella mancanza di comprensione di ciò che si sta scrivendo e di come funziona in generale.

 
Maxim Kuznetsov:

non provarci :-)

o meglio, scrivi prima qualcosa di semplice

perché il problema è nella mancanza di comprensione di ciò che si sta scrivendo e di come funziona in generale.

Questo script non è una rete neurale)) l'ho fatto per vedere quanto velocemente passa un milione di cicli


Ma perché il terminale ha dei problemi? Lo script inizia a funzionare (le cifre girano), ma non arrivo alla fine (almeno per me)

 
Buon pomeriggio, signori programmatori. Si prega di avvisare. Sto cercando di scrivere un indicatore di freccia basato su modelli di inversione e altri. Sembra che sia tutto a posto. Tuttavia, considera solo le prime 2 candele invece di 4. Durante la compilazione, l'editor giura sulla possibile perdita di precisione nell'assegnazione di diversi tipi di dati. E solo su iVolume. Grazie in anticipo.
 
35vas35:
Buon pomeriggio, signori programmatori. Si prega di avvisare. Sto cercando di scrivere un indicatore di freccia basato su modelli di inversione e altri. Sembra che sia tutto a posto. Tuttavia, considera solo le prime 2 candele invece di 4. Durante la compilazione, l'editor giura sulla possibile perdita di precisione nell'assegnazione di diversi tipi di dati. E solo su iVolume. Grazie in anticipo.

Qui.

 
Artyom Trishkin:

Qui.

Ecco il codice dell'indicatore.
//+------------------------------------------------------------------+
//|                                                       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:
Вот код индикатора.

Il problema è che come puoi vedere sul grafico, il volume di 3 candele dal segnale di acquisto è di 3 punti. Ma nel codice il volume è prescritto da 8 in su.

 
35vas35:

Il problema è che come puoi vedere sul grafico, il volume di 3 candele dal segnale di acquisto è di 3 punti. Ma nel codice il volume è prescritto da 8 in su.

In futuro, voglio allegare un mailing o un sms. Ho provato a scrivere un EA con indicatori MACD, MA e RSI usando questo principio. Ci sono pochi falsi segnali. Ma vorrei controllare io stesso il processo.
 
35vas35:
In futuro, voglio collegare la newsletter all'email o agli sms. Ho provato a scrivere un EA con indicatori MACD, MA e RSI usando questo principio. Ci sono pochi falsi segnali. Ma vorrei controllare io stesso il processo.
Ho usato come base l'harami, l'assorbimento di due candele, l'hammer, il gap e il velo, i modelli di contrattacco.