Fehler, Irrtümer, Fragen - Seite 668

 

Wenn man sich auf die Farben im Preis-Tumblr konzentriert, scheint es Verwirrung zu geben.

//---

Die Schaltfläche Kaufen ist blau. Daher sollten die Preise, zu denen Sie ein Gebot abgeben können, ebenfalls blau sein. Jetzt ist es andersherum, und man muss hart arbeiten, um sich daran zu gewöhnen, und es ist unwahrscheinlich, dass es funktioniert. Das ist eine psychologische Nuance. )))

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен - Документация по MQL5
 

Ausgehend von den Informationen über den Preisstapel in der Hilfe würde das Layout für den Test etwa so aussehen:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   MarketBookAdd(_Symbol);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   MarketBookRelease(_Symbol);
  }
//+------------------------------------------------------------------+
//| OnBook Event                                                     |
//+------------------------------------------------------------------+
MqlBookInfo priceArray[];
//---
void OnBookEvent(const string &symbol_name)
  {
   bool getBook=MarketBookGet(_Symbol,priceArray);
//---
   if(!getBook)
     {
      Print("Не удалось получить содержимое стакана по символу ",Symbol());
     }
  }
//+------------------------------------------------------------------+
//| OnChart event handler                                            |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
   double price_buy=0.0,price_sell=0.0;
//---
   TRADE_EXEMODE=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_EXEMODE); // Узнаем тип исполнения
//---
   if(TRADE_EXEMODE==SYMBOL_TRADE_EXECUTION_MARKET ||
            TRADE_EXEMODE==SYMBOL_TRADE_EXECUTION_EXCHANGE)
     {
      mytrade.SetTypeFilling(ORDER_FILLING_IOC);
      //---
      if(TRADE_EXEMODE==SYMBOL_TRADE_EXECUTION_EXCHANGE)
        {
         int size=ArraySize(priceArray);
         //---
         for(int i=size-1; i>=0; i--)
           {
            if(priceArray[i].type==1)
              {
               price_buy=priceArray[i].price; // Получим ближайшую цену для BUY
               price_sell=priceArray[i+1].price; // Получим ближайшую цену для SELL

               //---
               break;
              }
           }
        }
      else
        {
         price_buy=mylast_tick.ask;
         price_sell=mylast_tick.bid;
        }
     }
//---
   //... Далее следуют функции для совершения торговых операций
  }

//---

Wenn jedoch ein Handel getätigt wird, zeigt das Log des Expert Advisors eine Meldung an, aus der hervorgeht, dass es zwar einen Preis in der Abfrage gab, dieser aber der nächstliegende in der Markttiefe war:

price_request=mytrade.RequestPrice();

ist das Ergebnis kein Preis (0,000):

price_result=mytrade.ResultPrice();

und die Handelsfunktion gibt false zurück:

//---

Im Protokoll können wir sehen, dass versucht wurde, eine Position zum Nullkurs zu eröffnen:

aber die Position wurde dennoch zum aktuellen Kurs eröffnet.

//---

Wenn diese Informationen nicht ausreichen, um festzustellen, welche Seite die Schuld trägt, werde ich mich an den Service Desk wenden.

 

Können Sie mir sagen, wie ich einen schwebenden Auftrag entfernen kann?

trReq.order=order_ticket;

trReq.type=TRADE_ACTION_REMOVE;

OrderSend(trReq,trRez);

Mein Compiler meldet: TRADE_ACTION_REMOVE kann enum nicht konvertieren

und 2 Mal über denselben Fehler.

Ich habe dasselbe schon einmal mit dem Nullabgleich versucht:

trReq.symbol =Symbol(); //NULL

trReq.magic =MAGIC; //0

trReq.volume =0.0;

trReq.type =0;

trReq.price =0.0;

trReq.sl =0.0;

trReq.tp =0.0;

trReq.type_time =0;

trReq.expiration=0;

funktioniert nicht. Build 597.

Geben Sie mir bitte ein vollständiges Beispiel. Ich danke Ihnen im Voraus.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
stroka:
...

Nennen Sie bitte ein vollständiges Beispiel. Ich danke Ihnen im Voraus.

Ein vollständiges Beispiel findet sich in der Standardbibliothek. Function OrderDelete(). Sie hat eine Dokumentation. Sie können dort auch Funktionen für alle Handelsoperationen übernehmen.

//+------------------------------------------------------------------+
//| Delete specified pending order.                                  |
//| INPUT:  ticket - ticket of order for delete.                     |
//| OUTPUT: true-if successful, false otherwise.                     |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CTrade::OrderDelete(ulong ticket)
  {
//--- variables
   string action,result;
//--- check stopped
   if(IsStopped(__FUNCTION__)) return(false);
//--- clean
   ClearStructures();
//--- setting request
   m_request.action    =TRADE_ACTION_REMOVE;
   m_request.order     =ticket;
//--- order check
   if(!OrderCheck(m_request,m_check_result))
     {
      //--- copy return code
      m_result.retcode=m_check_result.retcode;
      if(m_log_level>LOG_LEVEL_NO)
         printf(__FUNCTION__+": %s [%s]",FormatRequest(action,m_request),FormatRequestResult(result,m_request,m_result));
      return(false);
     }
//--- order send
   if(!OrderSend(m_request,m_result))
     {
      if(m_log_level>LOG_LEVEL_NO)
         printf(__FUNCTION__+": %s [%s]",FormatRequest(action,m_request),FormatRequestResult(result,m_request,m_result));
      return(false);
     }
   if(m_log_level>LOG_LEVEL_ERRORS)
      printf(__FUNCTION__+": %s [%s]",FormatRequest(action,m_request),FormatRequestResult(result,m_request,m_result));
//--- ok
   return(true);
  }
 
Das Terminal meldet sich nicht bei der mql5-Community an. Ich gebe das Login und das Passwort in den Terminaleinstellungen ein, drücke auf ok und nichts passiert. Wenn ich die Einstellungen erneut eingebe, wird die Anmeldung gespeichert, aber das Passwort ist leer. Ich kann nichts vom Markt herunterladen. Ich kann das Forum ohne Probleme betreten.
 
Dima_S:

Warum wird eine Zeichenkette abgeschnitten, wenn Sie sie als externen Parameter angeben?

Eingabezeichenfolge - es können maximal 105 Zeichen angegeben werden, bei mehr Zeichen wird sie rechts abgeschnitten.

597 bauen

buid 607 - gleiches Problem.
 

Bitte sagen Sie mir, warum der folgende Code das entsprechende Fenster nicht findet (ich habe es überprüft, das Fenster mit dieser Klasse existiert)

#import "user32.dll"
   int FindWindowA(string &lpClassName, string &lpWindowName);
#import

string FormClass="TMyMainForm";
string FormName="";
int hnd = FindWindowA(FormClass,FormName);
if (hnd==0) printf("not found");
else printf("found");
 

Es sieht so aus, als gäbe es einen Fehler in

//+------------------------------------------------------------------+
//| Open position.                                                   |
//| INPUT:  symbol     -symbol for trade,                            |
//|         order_type -direct for open,                             |
//|         volume     -volume of position,                          |
//|         price      -price for open,                              |
//|         stop       -price of stop loss,                          |
//|         take       -price of take profit,                        |
//|         comment    -comment of position.                         |
//| OUTPUT: true-if successful, false otherwise.                     |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CTrade::PositionOpen(const string symbol,ENUM_ORDER_TYPE order_type,double volume,
                          double price,double sl,double tp,const string comment)

Bei Rückgabecode 10008 (Bestellung aufgegeben) gibt diese Methode false zurück.

Der Auftrag wird schließlich ausgeführt.

Aus diesem Grund wurden auf dem Demokonto mehr als die erforderliche Anzahl von Aufträgen eröffnet.

RQ      0       Trades  14:00:18        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
IO      0       Trades  14:00:18        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
MH      0       Trades  14:00:18        '3119321' : exchange buy 0.10 USDCHF at 0.00000
MQ      0       Trades  14:00:18        '3119321' : deal #2888080 buy 0.10 USDCHF at 0.91144 done (based on order #4880065)
NL      0       Trades  14:00:18        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
MK      0       Trades  14:00:18        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
IS      0       Trades  14:00:18        '3119321' : exchange buy 0.10 USDCHF at 0.00000
MN      0       Trades  14:00:19        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
NE      0       Trades  14:00:19        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
JQ      0       Trades  14:00:19        '3119321' : exchange buy 0.10 USDCHF at 0.00000
PJ      0       Trades  14:00:19        '3119321' : deal #2888081 buy 0.10 USDCHF at 0.91144 done (based on order #4880066)
KG      0       Trades  14:00:20        '3119321' : deal #2888082 buy 0.10 USDCHF at 0.91145 done (based on order #4880067)
KF      0       Trades  14:00:20        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
LM      0       Trades  14:00:20        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
HJ      0       Trades  14:00:20        '3119321' : exchange buy 0.10 USDCHF at 0.00000
DR      0       Trades  14:00:20        '3119321' : deal #2888083 buy 0.10 USDCHF at 0.91146 done (based on order #4880068)
HR      0       Trades  14:00:21        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
OJ      0       Trades  14:00:21        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
CE      0       Trades  14:00:21        '3119321' : exchange buy 0.10 USDCHF at 0.00000
MN      0       Trades  14:00:21        '3119321' : deal #2888084 buy 0.10 USDCHF at 0.91146 done (based on order #4880069)
DI      0       Trades  14:00:21        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
CF      0       Trades  14:00:21        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
OP      0       Trades  14:00:21        '3119321' : exchange buy 0.10 USDCHF at 0.00000
GI      0       Trades  14:00:22        '3119321' : deal #2888085 buy 0.10 USDCHF at 0.91146 done (based on order #4880070)
QD      0       Trades  14:00:22        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
JS      0       Trades  14:00:22        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
NK      0       Trades  14:00:22        '3119321' : exchange buy 0.10 USDCHF at 0.00000
MD      0       Trades  14:00:22        '3119321' : deal #2888086 buy 0.10 USDCHF at 0.91146 done (based on order #4880071)
NS      0       Trades  14:00:23        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
MH      0       Trades  14:00:23        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
IG      0       Trades  14:00:23        '3119321' : exchange buy 0.10 USDCHF at 0.00000
....

Und das Expert Advisor-Protokoll

(EURUSD,H1)     14:00:18        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:18        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:19        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:20        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:21        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:21        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:22        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:23        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:23        CTrade::PositionOpen:  [placed]
....

Bitte sagen Sie mir, wann kann es vorkommen, dass ein Marktauftrag auf dem Server platziert, aber nicht (auch nur teilweise) ausgeführt wurde?
Документация по MQL5: Торговые функции / OrdersTotal
Документация по MQL5: Торговые функции / OrdersTotal
  • www.mql5.com
Торговые функции / OrdersTotal - Документация по MQL5
 
olyakish:

Es scheint ein Fehler zu sein in

Bei Rückgabecode 10008 (Bestellung aufgegeben) gibt diese Methode false zurück.

Der Auftrag wird schließlich doch ausgeführt.

Aus diesem Grund wurden auf dem Demokonto mehr als die erforderliche Anzahl von Aufträgen eröffnet.

Und das Expertenprotokoll

Wann kann es vorkommen, dass ein Marktauftrag zwar auf dem Server platziert, aber nicht (auch nicht teilweise) ausgeführt wird?

Das gleiche Problem wird ganz am Anfang der Seite beschrieben. Sie wird hier beschrieben: https://www.mql5.com/ru/forum/1111/page679#comment_164002. Bisher wurde noch keine Antwort erteilt.

//---

Wo haben Sie Ihr Demokonto eröffnet?

 
tol64:

Das gleiche Problem wird ganz am Anfang der Seite beschrieben. Hier ist sie: https://www.mql5.com/ru/forum/1111/page679#comment_164002. Es wurde noch keine Antwort gegeben.

//---

Wo haben Sie Ihr Demokonto eröffnet?

1. Ich habe diesen Thread zu spät gesehen.

2. Unter A*****i.

Und ich habe dies in Humor auf Forum 4 gepostet, aber ich denke, es sollte auch hier stehen:

Ich analysiere die Flüge des Expert Advisors (MT5) und habe folgendes in den Logs gefunden

.....(EURUSD,H1)        16:43:16        CTrade::PositionClose:  [not enough money]
... Wo ... in der DC ist das nicht der Fall.
Grund der Beschwerde: