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

 
smartemiy:

Liebe Fachleute!

Ich bitte Sie um Ihre Hilfe!

Ich habe einen Handelsroboter, der jeweils 20-80 Trades macht. Ich kann nicht verstehen, dass es von der Maklerfirma abhängt?

Anstatt einer - legt 100 Stück.

Bitte helfen Sie!!!

Die Startfunktion wird bei jedem Tick ausgeführt und wenn die Ordereröffnungsbedingung erfüllt ist, wird bei jedem Tick eine neue Order eröffnet.

Setzen Sie Grenzen für die maximale Anzahl offener Aufträge oder einen Auftrag pro Bar usw.

 
splxgf:

Die Startfunktion wird bei jedem Tick ausgeführt, und wenn die Bedingung zur Eröffnung einer Order erfüllt ist, wird bei jedem Tick eine neue Order eröffnet.

Setzen Sie Grenzen für die maximale Anzahl offener Aufträge oder einen Auftrag pro Bar usw.

Vielen Dank für die Antwort!

Splxgf , daran habe ich auch schon gedacht:

int init()
{  RefreshRates();
   if (NumberOfOrders()>15) return(0); // если число открытых ордеров превышает число 15, тогда советние не торгует
   if (OpenStop()>30) return(0);       // если число отложеных ордеров превышает число 15, тогда советние не торгует
}

NumberOfOrders ist ein f-from, das die Anzahl der offenen Aufträge zählt. OpenStop - f-op zählt die Anzahl der ausstehenden Aufträge.

Die Bedingung für die Eröffnung der Order ist erfüllt und der EA stellt eine beliebige Anzahl von Orders in eine Reihe.

>splxgf: Dies ist eine Variante des Codes, der den Expert Advisor anhält, wenn die Anzahl der Trades überschritten wird. Wie kann ich schreiben, dass ein Auftrag erteilt wird, wenn die Bedingung ausgelöst wird?

 

init wird nur einmal ausgeführt https://docs.mql4.com/ru/basis/functions/special

int MaxOpenOrders=15;

int start()
  { 
    //bla-bla
    if (((OrderOpenPrice()-pAsk) >= -60 || OrdersTotal()<MaxOpenOrders) //открываем новые если количество открытых и отложенных ордеров не превышает 15
    OrderSend...
  

Es gibt sogar eine Anleitung unter https://book.mql4.com/ru/.

Wenn Sie möchten, dass die Bedingung nur einmal ausgelöst wird, ist es komplizierter

 
Meine Herren! Kann jemand meine Frage zu Netbook und 3G-Modem (auf Seite 221) beantworten? Vielen Dank im Voraus.
 
splxgf:

init wird nur einmal ausgeführt https://docs.mql4.com/ru/basis/functions/special

Es gibt sogar eine Anleitung unter https://book.mql4.com/ru/.

Wenn Sie wollen, dass die Bedingung nur einmal ausgelöst wird, ist es komplizierter.

Ich danke Ihnen!

Ich werde es mir ansehen!

 

Ich habe die Datenbank durchsucht und konnte sie nicht finden, aber vielleicht habe ich nicht gründlich genug gesucht.

Sagt mir, ihr Lieben, habt ihr etwas Ähnliches?

Der Algorithmus ist einfach: ein analoges Raster, bei dem alle n Pips eine Order eröffnet wird (Kauf oder Verkauf, je nach Kursrichtung). Aufträge werden eröffnet, bis ein Gewinn von m Pips erzielt wird. Wenn dieser Wert erreicht ist, werden alle Aufträge geschlossen und alles beginnt von vorne.

Ich danke Ihnen im Voraus für Ihre Aufmerksamkeit.

 
Zhunko:
Die Aufgabe bestand darin, den heruntergeladenen Verlauf in den Verlaufsdateien zu speichern. Während des Herunterladens wird der gesamte Verlauf im Speicher gehalten. Nach dem Schließen des MT4-Fensters beginnt das Speichern in den Dateien mit den MT4-Tools. Dies ist kein schneller Prozess.

Vadim, ich habe das Speicherproblem auf diese Weise gelöst:

if(Bars<7000)
  {
    int handle, bar, wParam;
    handle=WindowHandle(Symbol(),Period());
    switch(Period())
            {
                  case PERIOD_M1:  wParam = 33137; break;
                  case PERIOD_H1:  wParam = 33135; break;
                  case PERIOD_D1:  wParam = 33134; break;
            }
    for(bar=1;bar<7000;bar=+100)
      {
        Comment(Bars);
        PostMessageA(handle,WM_KEYDOWN,VK_HOME,0); Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_COMMAND,33135,0);  Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_KEYDOWN,VK_HOME,0); Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_COMMAND,33134,0);  Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_KEYDOWN,VK_HOME,0); Comment(Bars); Sleep(10000); 
        PostMessageA(handle,WM_COMMAND,33137,0);  Comment(Bars); Sleep(10000); 
        bar=Bars;
        RefreshRates();
        if(Bars>=7000) {PostMessageA(handle,WM_KEYDOWN,VK_END,0); StartProfit();} //обязательный выход, иначе просто остается и подкачивает данные
        
      }
   }

Durch das Springen zwischen den Zeitrahmen wird die Historie gleichzeitig auf mehreren Zeitrahmen gespeichert (in diesem Fall 1 Minute, 1 Stunde und 1 Tag). Es ist also nicht notwendig, das Terminal auszuschalten, aber das Laden ist nicht sehr schnell, die Geschwindigkeit beträgt etwa 1 Minute (unter diesen Bedingungen) für ein Währungspaar, d.h. wenn wir es für viele Währungen starten, wird das Terminal eine halbe Stunde lang hängen. Der Expert Advisor beginnt, historische Daten zu verwenden, ohne das Terminal neu zu laden.

 
forexnew:

Vadim, ich habe das Problem der Konservierung auf diese Weise gelöst:

Durch das Springen zwischen den Zeitrahmen wird die Historie gleichzeitig für mehrere Zeitrahmen (in diesem Fall 1 Minute, 1 Stunde und 1 Tag) gespeichert. Es besteht also keine Notwendigkeit, das Terminal auszuschalten, aber das Laden ist nicht sehr schnell, die Geschwindigkeit beträgt etwa 1 Minute (unter diesen Bedingungen) für ein Währungspaar, d.h. wenn wir es für viele Währungen starten, wird das Terminal eine halbe Stunde lang hängen. Der Expert Advisor beginnt, historische Daten zu verwenden, ohne das Terminal neu zu laden.

Ich habe das Gleiche, nur um ein Vielfaches zuverlässiger. Beim Umschalten der TF wird der Verlauf nicht in Dateien gespeichert. Nur beim Entladen des Terminals.

Manchmal speichert das Terminal den Verlauf auch selbst, aber das hat nichts mit TFswitching zu tun.

 
Zhunko:

Ich habe das Gleiche, nur um ein Vielfaches zuverlässiger. Beim Umschalten der TF wird der Verlauf nicht in Dateien gespeichert. Nur wenn das Terminal entladen ist.

Manchmal beginnt das Terminal von selbst mit der Speicherung des Verlaufs, aber das hat nichts mit dem TF-Wechsel zu tun.

Wie kann ich einstellen, dass nur bestimmte Zeitrahmen (nicht alle) heruntergeladen werden: Minuten, 1 Stunde und Tage?

Also: string sTimeFrame = {"M1", "H1", "D1"}; // Die Zeichenkette mit den zu durchsuchenden TF.

Es werden nicht mehr als 2000 Balken in einer Minute heruntergeladen, aber mein Expert Advisor benötigt mehr als 7000. Nach dem Herunterladen mit diesem Skript, wird mein Expert Advisor es beenden.

Ist es so vorgesehen, dass nicht alle Balken heruntergeladen werden?

 

Hallo liebe Gemeinde.

Ich habe ein solches Problem. Ich verwende den Indikator "Bollinger Bands" in meiner Vorlage (iBands - https://docs.mql4.com/ru/indicators/iBands) und einer seiner Parameter - die Abweichung (Standardabweichung) - ist dort als int definiert . Ist es möglich, die Zahl zu verdoppeln? In MT4 gibt es im Abschnitt "Benutzerdefinierte Indikatoren" weitere Bollinger-Bänder (gekennzeichnet als "Bands"), bei denen die Abweichung als doppelt definiert ist. Aber wie fügt man sie in MQL4 ein? Sie ist nicht im Standardsatz der integrierten Indikatoren enthalten, oder? Ich habe keine Ahnung, wie ich sie in MQL4 verwenden kann.

Grund der Beschwerde: