Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 343

 
Natürlich können Sie das!!!
 
Vladimirovits:
Ich habe das gesamte Visual Studio-Projekt in meinem Expertenordner... Compile ist eine .exe-Datei, richtig?

Nein, die kompilierte Bibliothek ist die Datei ExpertSample.dll
 
Forexman77:

Die Vorlage wurde einem Lehrbuch entnommen. Ich bin im Moment nicht sehr gut im Umgang mit Fehlerfunktionen.

Bei Auftragseröffnung gibt es RefreshRates(); (ich habe Bids und Asks durch Market Info ersetzt, wie mir gesagt wurde)

Und eine Funktion zur Fehlerbehandlung:

Ich wollte fragen. Kann ich die folgende Zeile aus 129 error hinzufügen?

129

ERR_INVALID_PRICE

Falscher Preis


Wenn Sie diesen Fehler erhalten, sollten Sie die Logik des Expert Advisors überprüfen. Es ist der Expert Advisor, der einen falschen Preis in einem Handelsauftrag sendet. Und Sie haben beschlossen, den Server mit einem fehlerhaften Handelsauftrag lahmzulegen?


Der automatische Handel wird ausgeschaltet und das war's.

 
artmedia70:

129

ERR_INVALID_PRICE

Falscher Preis


Wenn Sie diesen Fehler erhalten, müssen Sie die Logik des EAs überprüfen. Es ist der Expert Advisor, der den falschen Preis im Handelsauftrag sendet. Und Sie haben beschlossen, den Server mit einem fehlerhaften Handelsauftrag lahmzulegen?


Der automatische Handel wird deaktiviert und das war's.

Ich habe alles durchgesehen. Vielleicht, wenn der Expert Advisor eine Anfrage sendet:

Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
merkt es sich, zu welchem Preis es kaufen soll?

Und ich hatte das Folgende:

if  (iClose(Symbol(),Period(),0) <= MA_6_t) 
          {                                          
          Opn_B=true;                    
          }

Wenn das Gebot kleiner oder gleich dem MA ist, dann kaufen wir. Wir haben von der Nachfrage gekauft, also holen wir die Nachfrage nach.

Ich hatte keine Probleme beim Verkauf, nur beim Kauf.

Ich habe einige Informationen zu diesem Thema gefunden:

"Wenn der angeforderte Eröffnungspreis nicht im Preisstrom enthalten ist oder der angeforderte Preis nicht nach dem Dezimalpunkt normalisiert wurde, wird der Fehler 129 (ERR_INVALID_PRICE) erzeugt. Wenn der angeforderte Eröffnungskurs stark veraltet ist, wird unabhängig vom Wert des Slippage-Parameters ein Fehler 138 (ERR_REQUOTE) erzeugt. Ist der angeforderte Preis hingegen veraltet, aber noch im Preisfluss vorhanden, wird die Position zum aktuellen Preis eröffnet, und zwar nur dann, wenn der aktuelle Preis innerhalb der Spanne Preis+Slippage liegt."

Wenn es sich nicht um Geld- und Briefkurse handelt, hätte der Handel zustande kommen müssen. Ich zitiere: "Wenn der angeforderte Preis nicht mehr aktuell, aber noch im Preisstrom vorhanden ist, wird die Position zum aktuellen Preis eröffnet, und zwar nur dann, wenn der aktuelle Preis innerhalb der Spanne Preis+Slippage liegt." Der Preis beim Schweben war zu 100 % in der Handelszone. Der Schlusskurs lag deutlich unter dem gleitenden Durchschnitt.

 

Frage an den Guru.

Ich kann den Indikator in einigen Bereichen nicht darstellen. Das Wesen des Indikators, wenn die Bewegung ist nicht mehr als einen bestimmten Wert, der Wert bleibt wie in der schriftlichen Wert der MA_otshet.

Wenn der Wert überschritten wird, wird der Wert, der dem aktuellen Zeitpunkt entspricht.

Nachstehend finden Sie den Code des Indikators mit Erläuterungen:

//+------------------------------------------------------------------+
//|                                                         EMAF.mq4 |
//|                                                 Kamil Gazizullin |
//|                                             forexman77@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Kamil Gazizullin"
#property link      "forexman77@yandex.ru"
#property indicator_chart_window
#property indicator_buffers 1
#property  indicator_color1 Aqua 
//--- input parameters
//--- buffers
bool flag=true;
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexBuffer(0,ExtMapBuffer1);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    raznica,raznica_static,MA_1_t,MA_2_t;
    
  if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   static double MA_otshet;  //здесь хранится информация по MA_otshet
  for(int i=0;i<limit;i++)
   {  
      MA_1_t=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+1); 
      raznica=MA_1_t-MA_2_t; //разница между сегодня и вчера по скользящей средней
      raznica_static=MA_1_t-MA_otshet; //разница между сегодня и MA_otshet
      RefreshRates();   
      if(raznica > -0.0035 && raznica < 0.0035 && flag) // если raznica не превышает заданное число 
          {
          MA_otshet=MA_2_t; // записываем значение MA_otshet
          ExtMapBuffer1[i]=MA_otshet; //рисуем значение индикатора, как и вчера
          flag=false; // устанавливаем флаг запрета дальнейших расчетов
          }
      if(raznica_static > -0.0035 && raznica_static < 0.0035) //если raznica_static не превышает заданное число
          {
          ExtMapBuffer1[i]=MA_otshet;  // то рисуем значение индикатора, как записанный MA_otshet
          }
      if((raznica > 0.0035) || (raznica <- 0.0035)) // если raznica превышает заданное число
          {
          ExtMapBuffer1[i]=MA_1_t; // то рисуем значение по текущей цене
          flag=true; // разрешаем дальнейшие вычисления для расчета в диапазоне от -0.0035 до 0.0035
          }
   }  
   return(0);
  }
//+------------------------------------------------------------------+

 
Forexman77:

In einigen Bereichen wird der Indikator nicht gezeichnet. Das Wesen des Indikators, wenn die Bewegung ist nicht mehr als einen bestimmten Wert, der Wert bleibt wie in der aufgezeichneten Wert von MA_otshet.

Wenn der Wert überschritten wird, wird der Wert, der dem aktuellen Zeitpunkt entspricht.

Im Folgenden finden Sie den Code und die Erklärung des Indikators:


ZEICHNEN_SCHNITT

 
Forexman77:

Ich habe alles durchgesehen. Vielleicht, wenn der EA eine Anfrage sendet:

Erinnert es sich an den Preis, zu dem es kaufen soll?

Und ich hatte das Folgende:

d.h. das Angebot ist kleiner oder gleich dem MA, dann kaufen wir. Ich habe keine Probleme mit dem Verkauf gehabt, aber ich habe auch keine Probleme mit dem Verkauf gehabt.

Ich hatte keine Probleme beim Verkauf, nur beim Kauf.

Ich habe einige Informationen zu diesem Thema gefunden:

"Wenn der angeforderte Eröffnungspreis nicht im Preisstrom enthalten ist oder der angeforderte Preis nicht nach dem Dezimalpunkt normalisiert wurde, wird der Fehler 129 (ERR_INVALID_PRICE) erzeugt. Wenn der angeforderte Eröffnungskurs stark veraltet ist, wird unabhängig vom Wert des Slippage-Parameters ein Fehler 138 (ERR_REQUOTE) erzeugt. Ist der angeforderte Preis hingegen veraltet, aber noch im Preisfluss vorhanden, wird die Position zum aktuellen Preis eröffnet, und zwar nur dann, wenn der aktuelle Preis innerhalb der Spanne Preis+Slippage liegt."

Wenn es sich nicht um Geld- und Briefkurse handelt, hätte der Handel zustande kommen müssen. Ich zitiere: "Wenn der angeforderte Preis nicht mehr aktuell, aber noch im Preisstrom vorhanden ist, wird die Position zum aktuellen Preis eröffnet, und zwar nur dann, wenn der aktuelle Preis innerhalb der Spanne Preis+Slippage liegt." Der Preis beim Schwebezustand lag zu 100 % in der Handelszone. Der Schlusskurs lag deutlich unter dem gleitenden Durchschnitt.

Gehen wir davon aus, dass Ask immer normalisiert wird, ist der Preis: Er wird nicht berechnet und es hat keinen Sinn, ihn zu normalisieren.

Warum könnte der Preis also falsch sein? Vielleicht sind die Daten veraltet? Versuchen Sie RefreshRates() unmittelbar vor OrderSend() auszuführen.

 
Seid gegrüßt, liebe Trader - Programmierer!!!
Was ist die Bedeutung von AccountComany?
Aus dem Namen kann man gewisse Schlüsse ziehen, aber was hat das mit der Programmiersprache MT4 zu tun?

KontoKredit?

KontoWährung?

AccountEquity?

AccountFreeMargin?

AccountFreeMarginCheck?

AccountLeverage?

AccountStopoutLevel?

AccountStopoutMode?

ArrayBsearch?

Ich bin sehr daran interessiert, die detaillierte Beschreibung jedes Befehls zu erfahren. Bitte helfen Sie mir.

 

ArrayCopy?

ArrayCopyRates?

ArrayCopySeries?

ArrayDimension?

ArrayGetAsSeries?

 

Was ist eine Array-Rate?