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

 
Menschen. Bitte um Hilfe. Meine Frage ist folgende. Ich mache einen EA, der auf dem MACD-Indikator basiert. Es gibt eigentlich zwei Bedingungen für die Öffnung und zwei Bedingungen für die Schließung. Die erste Bedingung für einen Kaufabschluss: Das Signal ist größer als 0, der MACD ist größer als 0, der erste Balken ist kleiner als der zweite und der zweite ist größer als der dritte. Die zweite Bedingung: Signal ist kleiner als 0, MACD ist kleiner als 0, der erste Balken ist kleiner als der zweite und der zweite ist kleiner als der erste. Aber es gibt eine.... Diese Bedingungen sind eine vollständige Kopie der Bedingungen des Kaufvertrags, um den Verkauf abzuschließen. Wie kann man sie trennen? Bitte beraten Sie mich. Ich habe eine Idee, dass der Peak im Histogramm wiederholt wird, aber wie beschreibe ich dann, dass der Peak schon einmal da war? Wie kann man einen solchen Speicher im EA erstellen?
 

Hallo zusammen, ich schreibe gerade einen EA. Das Wesen ist dies - öffnet zwei unterschiedlich gerichtete Stop-Aufträge, wenn einer von ihnen auslöst die zweite gelöscht wird, aber in der Tester gelöscht wird nur kaufen, um beim Versuch zu löschen sellstop kommt 4108 Fehler falsche Ticket. Bitte helfen Sie mir, dies zu verstehen. Es wurde eine Funktion eingefügt, die den Auftrag löscht.

Vielen Dank im Voraus!!!

void DellSell()
  {
   int dell;
   for(int i=OrdersTotal() -1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_SELLSTOP && CountBuyDell()>0)
               dell=OrderDelete(OrderTicket());
            if(!dell)
              {
               Print("Ордер SellStop не удален");
              }
           }
        }
     }
   return;
  }
 

Grüße. Bitte teilen Sie mir mit, wie ich Daten aus dem Indikator übernehmen kann.

Benötigt werden Daten aus den roten und blauen Symbolen. Wenn nicht gezeichnet wird, befinden sich in den jeweiligen Puffern astronomische Werte. Ich habe sie auf eine Anzahl von 10000 begrenzt. Scheint zu funktionieren, aber es werden Signale übersprungen. Wie kann man das beheben? So habe ich es vermasselt:

PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0);
PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0);
wenn (PriceHigh1<10000) PriceHigh=PriceHigh1; sonst PriceHigh=0;
wenn (PriceLow1<10000) PriceLow=PriceLow1; sonst PriceLow=0;
Dateien:
 
Andrey Sokolov:

Grüße. Können Sie mir sagen, wie ich die richtigen Daten aus dem Indikator bekomme?

Ich benötige Daten aus den roten und blauen Symbolen. Wenn nicht gezeichnet wird, befinden sich in den jeweiligen Puffern astronomische Werte. Ich habe sie auf eine Anzahl von 10000 begrenzt. Es scheint zu funktionieren, aber es gibt Übersprungsignale. Wie kann man das beheben? So habe ich es vermasselt:

PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0);
PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0);
wenn (PriceHigh1<10000) PriceHigh=PriceHigh1; sonst PriceHigh=0;
wenn (PriceLow1<10000) PriceLow=PriceLow1; sonst PriceLow=0;

Ich habe mir den Code nicht angeschaut, aber ich kann davon ausgehen, dass dies helfen wird. Ich kann mich irren:

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
 
Vitaly Muzichenko:

Ich habe mir den Code nicht angesehen, aber ich kann davon ausgehen, dass er helfen wird. Ich könnte mich irren:

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
Danke, dass Sie nicht durchgegangen sind, aber es hat nichts gebracht.
 
Andrey Sokolov:
Danke, dass Sie nicht durchgegangen sind, aber es hat nichts gebracht.
Versuchen Sie auch, mit EMPTY_VALUE zu vergleichen, da es "astronomische" Werte gibt.
 
ArraySearchDouble() und EquationDirect()in der alten Version von mql 4. Hat die neue Version irgendwelche Entsprechungen.
 
27311065:
ArraySearchDouble() und EquationDirect()in der alten Version von mql 4. Und die neue Version hat keine Entsprechungen.
Wo haben Sie sie in der alten Version gesehen? Dies sind selbst geschriebene Funktionen. Nein?
 
danke für den Tipp
 

Bitte beraten Sie, wie am besten mit Daten zu arbeiten - angesichts einer Reihe von Zahlen, die in Untergruppen unterteilt werden, je nach den Ergebnissen der Berechnung, sollten diese Gruppen in einem Array gespeichert werden, darüber hinaus wird jede Gruppe zwei oder mehr Indikatoren pro Gruppe haben (eine Gruppe von Zahlen getrennt wird die berechnete Zahl gehören). Die Daten sollen wie folgt aussehen

1/1,2,3,4/23/33

2/1,4,5/26/11

3/3,4,5,33,56,38/21/44

und so weiter

Grund der Beschwerde: