[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 241

 
artmedia70:

Der Grund dafür wurde Ihnen bereits mitgeteilt. Es geht nicht um i++ oder i--, sondern darum, an welchem Ende der Liste wir mit dem Löschen von Aufträgen beginnen sollen - am Anfang der Liste (wie Sie es getan haben) oder am Ende der Liste (wie Sie es in diesem Fall tun müssen).

Um zu verstehen, was passiert, wenn Aufträge gelöscht werden, müssen Sie wissen und verstehen, wie die Aufträge im Array gespeichert sind.

Wenn Sie den ersten Auftrag zuerst löschen (er ist durch i=0 indiziert), werden die Indizes aller Aufträge im Array verschoben - der erste Auftrag wird null, der zweite Auftrag wird der erste, der dritte der zweite usw. Aus diesem Grund werden nicht alle Aufträge vollständig entfernt - wenn i zu 6 wird, wird der sechste Auftrag an die fünfte Position in der Auftragsreihe verschoben und der Auftrag wird nicht durch den Index 6 ausgewählt.

Wenn Sie Aufträge am Ende der Liste löschen, findet keine Verschiebung statt - der erste Auftrag hat eine Nullposition in der Liste und wird diese auch beibehalten. Der 10. Auftrag hatte die Position 9, er wurde gelöscht, dann wurde der 9. Auftrag, der die Position 8 in der Liste hat, gelöscht, und so weiter, bis zum ersten Auftrag mit der Position Null in der Reihe der Aufträge.

Ein GROSSES DANKESCHÖN an artmedia70 für die umfassende Antwort, ein Dankeschön an ilunga ... und auch an Nadya für ihre Teilnahme ... beste Wünsche ...
 
Ich habe das Mehrwährungstool so eingerichtet, dass ich mit mehreren Währungen in einem Fenster arbeiten kann. Das Problem ist jedoch, dass der Wechsel zwischen den Währungen so schnell vonstatten geht, dass keine Zeit bleibt, einen Auftrag zu eröffnen. Innerhalb von 3 Minuten wurden 4 Aufträge + 4 schwebende Aufträge eröffnet. Und es wurde viel zwischen den Währungen gewechselt.
 
volshebnik:
Was ist besser und was nicht? )
Einzigartige Namen erfinden und sie sich merken. Ich kenne Ihre Aufgabe nicht, vielleicht brauchen Sie das auch nicht.
 
forexnew:
Ich habe das Mehrwährungstool so eingerichtet, dass ich mit mehreren Währungen in einem Fenster arbeiten kann. Das Problem ist jedoch, dass der Wechsel zwischen den Währungen so schnell vonstatten geht, dass keine Zeit bleibt, einen Auftrag zu eröffnen. Innerhalb von 3 Minuten wurden 4 Aufträge + 4 schwebende Aufträge eröffnet. Und es wurde viel zwischen den Währungen gewechselt.

http://vinin.ucoz.ru/forum/11
 

es gibt 2 Benutzeränderungen Mod_1 und Mod_2

beide Fälle haben eine Änderungsbedingung:

double TS;
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);

if (TS < Min_Dist)
TS=Min_Dist;

Wie kann man es so ändern, dass die Modifikation nicht mit einer Stop-Loss-Bedingung durchgeht, denn der Stop-Loss für den Kauf ist kleiner als der Trailing-Stop,

und beim Verkauf ist der Stop Loss größer als der Trailing Stop

 

Hallo.

Bitte helfen Sie mir, einen Fehler zu finden.

Der unten stehende Code funktioniert nicht auf dem Testgerät, während es auf der Demo kein solches Problem gibt. Es gibt keinen Fehler im Logbuch.

Vielen Dank im Voraus.

  //====================== Отлавливаем прибыль по рынку ===========================================
  if (RinProfit) {
    if(SchBuyLots>0 || SchBuyLots777>0)
     {
      if((SchSellStop_b(MAGIC)>0 && (maM_fast<maM_slow || maH_fast<maH_slow || maOtk_fast<maOtk_slow)) ||
         (SchSellStop_b(MAGIC)>0 && (speedup_H1_ff<(10000+H1_MA_factor_ff) || speedup_H1_ss<(10000+H1_MA_factor_ss) ||
                                     speedup_M15_ff<(10000+M15_MA_factor_ff) || speedup_M15_ss<(10000+M15_MA_factor_ss))) ||
         (SchSellStop_b(MAGIC)>0 && ((maHXX<=H1_point_min  && speedup_H1_ss<(10000+H1_MA_factor_ss)) || maHXX>=H1_point_max)) ||
         (SchSellStop_b(MAGIC)>0 && Fractal_fibo_buy>Fibo_prohibit) ||
         (SchSellStop_b(MAGIC)>0 && TF1S>0 && TF2S>0 && timf1s!=0 && timf2s!=0 && TF1S<TF2S) ||
         (SchSellStop_b(MAGIC)>0 && TF1S>0 && TF2S>0 && timf1s!=0 && timf2s!=0 && TF1S>=TF2S && Bid<price_S))
       {
        while (SchBuyLots+SchBuyLots777>0 && SchSellLots+SchSellLots777>0)
         {
          CloseVstrechnye(MAGIC);
          return (0);
         }
        CloseAll_bMAGIC(Proskalz, MAGIC);
        CloseAll777_b(Proskalz);
        DeleteOtlozhMAGIC(MAGIC);
        DeleteOtlozh777();
        Alert("Позиции Buy закрыты согласно рыночной ситуации.");
        RefreshRates();
        if (Timeout_Trade>0 && ProfHist<=0)
         {
          Comment (SMB,": ТАЙМАУТ ТОРГОВЛИ "); 
          Sleep (Timeout_Trade*60000);
         } 
        RefreshRates();
       }
    }
    if(SchSellLots>0 || SchSellLots777>0)
     {
      if((SchBuyStop_b(MAGIC)>0 && (maM_fast>maM_slow || maH_fast>maH_slow || maOtk_fast>maOtk_slow)) ||
         (SchBuyStop_b(MAGIC)>0 && (speedup_H1_ff>(10000-H1_MA_factor_ff) || speedup_H1_ss>(10000-H1_MA_factor_ss) ||
                                    speedup_M15_ff>(10000-M15_MA_factor_ff) || speedup_M15_ss>(10000-M15_MA_factor_ss))) ||
         (SchBuyStop_b(MAGIC)>0 && ((maHXX<=H1_point_min  && speedup_H1_ss>(10000-H1_MA_factor_ss)) || maHXX>=H1_point_max)) ||
         (SchBuyStop_b(MAGIC)>0 && Fractal_fibo_sell>Fibo_prohibit) ||
         (SchBuyStop_b(MAGIC)>0 && TF1B>0 && TF2B>0 && timf1b!=0 && timf2b!=0 && TF1B>TF2B) ||
         (SchBuyStop_b(MAGIC)>0 && TF1B>0 && TF2B>0 && timf1b!=0 && timf2b!=0 && TF1B<=TF2B && Bid>price_B))
       {
        while (SchBuyLots+SchBuyLots777>0 && SchSellLots+SchSellLots777>0)
         {
          CloseVstrechnye(MAGIC);
          return (0);
         }
        CloseAll_bMAGIC(Proskalz, MAGIC);
        CloseAll777_b(Proskalz);
        DeleteOtlozhMAGIC(MAGIC);
        DeleteOtlozh777();
        Alert("Позиции Sell закрыты согласно рыночной ситуации.");
        RefreshRates();
        if (Timeout_Trade>0 && ProfHist<=0)
         {
          Comment (SMB,": ТАЙМАУТ ТОРГОВЛИ "); 
          Sleep (Timeout_Trade*60000);
         } 
        RefreshRates();
       }
     } 
   }
  //===============================================================================================  
 

Was ist der Unterschied zwischen dem Aufruf von Funktionen aus einer DLL in MT4 und MT5? Ich kompilieren dll, es funktioniert gut in MT5, aber in MT4 es gibt mir Fehler:

2011.10.06 23:00:34 Solaris Executor EURUSDm,M1: kann Funktion 'InfoOfTrading' aus dll 'Solaris.dll' nicht aufrufen(Fehler 127)

Was zum Teufel ist das? - Ich habe mir den Kopf zerbrochen. :(

 
 
sergeev:
ein Win32-dll-Projekt erstellen
Aber im MT5 funktioniert es einwandfrei!
 

Ich werde mit meiner obigen Frage fortfahren.

Ich habe den obigen Code auch in einem anderen EA verwendet. Die Situation mit diesem EA war ähnlich wie die oben beschriebene, mit dem Unterschied, dass die Code-Bedingungen genau umgekehrt erfüllt wurden (in der Demo funktionierte wiederum alles ohne Fehler). Aber eines Tages funktionierte der Tester korrekt, und der Code funktionierte gemäß den ihm vorgegebenen Bedingungen.

Es ist ein echter Mystizismus.

Außerdem kann ich meinen Code manchmal aus irgendeinem Grund nicht optimieren. Manchmal wird etwas neu berechnet, aber aus irgendeinem Grund werden alle Ergebnisse auf Null zurückgesetzt. Dies geschieht auf den Terminals verschiedener Makler. Wenn jedoch alle Sterne und Konstellationen am Himmel zusammenkommen, funktioniert alles so, wie es sollte.

Grund der Beschwerde: