Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 975

 
Alexandr Sokolov:

Ich hatte eine Idee, ich brauche eine Menge Zyklen, also beschloss ich, die Geschwindigkeit auf diese Weise zu überprüfen

... Infolgedessen funktioniert MT5 nicht mehr, es kommt zu Störungen und ich muss es über den Task-Manager schließen.


Ist das ein Problem mit der Leistung meines PCs oder etwas anderes?


*PS - Ich möchte versuchen, ein neuronales Netz zu schreiben, und es wird Milliarden von Zyklen geben, und hier gehe ich von einer Million aus.

Aber ich habe es zweimal ohne Probleme geschafft, aber wenn ich es noch einmal wiederhole, gibt es Probleme (Skript in den angehängten Dateien)

Dateien:
zsbh.mq5  7 kb
 
Alexandr Sokolov:

Ich hatte eine Idee, ich brauche eine Menge Zyklen, also beschloss ich, die Geschwindigkeit auf diese Weise zu überprüfen

... Infolgedessen funktioniert MT5 nicht mehr, es kommt zu Störungen und ich muss es über den Task-Manager schließen.


Ist das ein Problem mit der Leistung meines PCs oder etwas anderes?


*PS - Ich will versuchen, ein neuronales Netz zu schreiben, und es werden Milliarden von Zyklen sein, und hier werde ich mich um eine Million hinlegen.

Versuchen Sie es nicht :-)

oder lieber erst etwas Einfacheres schreiben

Denn das Problem liegt darin, dass man nicht versteht, was man schreibt und wie es im Allgemeinen funktioniert.

 
Maxim Kuznetsov:

Versuchen Sie es nicht :-)

oder besser gesagt, schreiben Sie zuerst etwas Einfaches

denn das Problem liegt im mangelnden Verständnis dessen, was Sie schreiben und wie es im Allgemeinen funktioniert.

Dieses Skript ist kein neuronales Netz)) Ich habe es erstellt, um zu sehen, wie schnell eine Million Zyklen vergehen


Aber warum ist das Terminal fehlerhaft? Das Skript beginnt zu arbeiten (die Zahlen laufen), aber ich komme nicht zum Ende (zumindest bei mir)

 
Guten Tag, meine Herren Programmierer. Bitte beraten Sie mich. Ich versuche, einen Pfeilindikator auf der Grundlage von Umkehrmustern und anderen zu schreiben. Das scheint in Ordnung zu sein. Allerdings werden nur die ersten 2 statt der ersten 4 Kerzenständer berücksichtigt. Beim Kompilieren flucht der Editor über mögliche Genauigkeitsverluste bei der Zuweisung verschiedener Datentypen. Und nur auf iVolume. Vielen Dank im Voraus.
 
35vas35:
Guten Tag, meine Herren Programmierer. Bitte beraten Sie mich. Ich versuche, einen Pfeilindikator auf der Grundlage von Umkehrmustern und anderen zu schreiben. Das scheint in Ordnung zu sein. Allerdings werden nur die ersten 2 statt der ersten 4 Kerzenständer berücksichtigt. Beim Kompilieren flucht der Editor über mögliche Genauigkeitsverluste bei der Zuweisung verschiedener Datentypen. Und nur auf iVolume. Vielen Dank im Voraus.

Hier.

 
Artyom Trishkin:

Hier.

Hier ist der Code für den Indikator.
//+------------------------------------------------------------------+
//|                                                       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:
Вот код индикатора.

Das Problem ist, dass, wie Sie auf dem Diagramm sehen können, das Volumen von 3 Kerzen vom Kaufsignal 3 Punkte beträgt. Aber im Kodex ist die Lautstärke ab 8 und darüber vorgeschrieben.

 
35vas35:

Das Problem ist, dass, wie Sie auf dem Diagramm sehen können, das Volumen von 3 Kerzen vom Kaufsignal 3 Punkte beträgt. Aber im Kodex ist die Lautstärke ab 8 und darüber vorgeschrieben.

In Zukunft möchte ich ein Mailing oder eine SMS anhängen. Ich habe versucht, einen EA mit MACD-, MA- und RSI-Indikatoren nach diesem Prinzip zu schreiben. Es gibt nur wenige falsche Signale. Aber ich würde den Prozess gerne selbst steuern.
 
35vas35:
In Zukunft möchte ich den Newsletter mit E-Mail oder SMS verknüpfen. Ich habe versucht, einen EA mit MACD-, MA- und RSI-Indikatoren nach diesem Prinzip zu schreiben. Es gibt nur wenige falsche Signale. Aber ich würde den Prozess gerne selbst steuern.
Ich habe Harami, zwei Kerzen Absorption, Hammer, Lücke und Schleier, Gegenangriff Muster als Grundlage.