Fehler, Irrtümer, Fragen - Seite 2100

 
Slava:

Sie haben den Unterschied zwischen einem synchronen Befehl und einem asynchronen Befehl erkannt.

Könnten Sie eine Liste der asynchronen Funktionen zur Verfügung stellen?

Wenn ich es richtig verstehe, sind die Funktionen von Object und Chart (welche noch?) alle asynchron. Dann ist es nicht ganz klar, warum ChartGet schneller läuft als ChartXY?

 
Slava:

Sie haben den Unterschied zwischen einem synchronen Befehl und einem asynchronen Befehl erkannt.

Ja...
Beobachtungen zeigen jedoch, dass diese Funktionen in ihrer Asynchronität ziemlich synchron sind. :)
Ok, ich werde meine Frage für Entwickler anders formulieren: Gibt es eine Möglichkeit (oder den Wunsch), diese asynchronen Funktionen in synchrone umzuwandeln?
 
fxsaber:

Könnten Sie eine Liste der asynchronen Funktionen zur Verfügung stellen?

Wenn ich es richtig verstehe, sind die Funktionen von Object und Chart (welche noch?) alle asynchron. Dann ist es nicht ganz klar, warum ChartGet schneller läuft als ChartXY?

Sie sind auch furchtbar langsam, es ist nur so, dass der Sinn meines "schnellen" Algorithmus darin besteht, eine Möglichkeit zu berechnen, die Diagrammfunktionen nicht aufzurufen und auf sie zu verzichten. Und sobald Sie das Diagramm in meinem Beispiel "anfassen" und nach links oder rechts bewegen, geht die Geschwindigkeit verloren, da die Diagrammfunktionen aufgrund des Auftretens eines Ereignisses angewendet werden
CHARTEVENT_CHART_CHANGE
 

Hallo, ich habe das Studium von MQL5 aufhttps://www.mql5.com/ru/articles/100 begonnen. Ich habe den Code gestartet und den Fehler 4756 erhalten. Der Fehler hat sich auch nach Durchsicht der Dokumentation nicht verbessert. Ok, ich dachte, ich beginne mit einfachen Funktionen (Alert/Print...). Eine der wichtigsten Funktionen ist OrderSend. Ich habe angefangen, das Forum/die Dokumentation zu durchsuchen, wie man OrderSend verwendet. Ich habe diesen Artikelhttps://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions gefundenund den Code für die Eröffnung einer Kaufposition gefunden. Ich habe Fehler 4756 und Retcode 10030. Ich habe verstanden, dass 10030 - es ist die OrderSend-Eigenschaft, aber ich habe nicht verstanden, wie diese Eigenschaft verwendet werden sollte (ich habe mir den Code von jemand anderem angesehen) und wofür sie hauptsächlich verwendet wird. Dann öffnete ichhttps://www.mql5.com/ru/docs/trading/ordersend, kopierte den Code, führte ihn aus und er funktionierte einwandfrei.
Aber ich verstehe immer noch nicht, warum der Fehler 4756 auftritt und wie man ihn loswerden kann, ebenso wie den Fehler 10030.

Ich habe mir den Code zwischen

void OnTick(){
      //--- объявление и инициализация запроса и результата
      MqlTradeRequest request={0};
      MqlTradeResult  result={0};
      //--- параметры запроса
      request.action   =TRADE_ACTION_DEAL;                     // тип торговой операции
      request.symbol   =Symbol();                              // символ
      request.volume   =0.1;                                   // объем в 0.1 лот
      request.type     =ORDER_TYPE_BUY;                        // тип ордера
      request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // цена для открытия
      request.deviation=5;                                     // допустимое отклонение от цены
      request.magic    =EXPERT_MAGIC;                          // MagicNumber ордера
      //--- отправка запроса
      if(!OrderSend(request,result))
         PrintFormat("OrderSend error %d",GetLastError());     // если отправить запрос не удалось, вывести код ошибки
         Alert(GetLastError());
      //--- информация об операции
      PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
   }

und diese.

uint SendRandomPendingOrder(long const magic_number) 
  { 
//--- готовим запрос 
   MqlTradeRequest request={0}; 
   request.action=TRADE_ACTION_PENDING;         // установка отложенного ордера 
   request.magic=magic_number;                  // ORDER_MAGIC 
   request.symbol=_Symbol;                      // инструмент 
   request.volume=0.1;                          // объем в 0.1 лот 
   request.sl=0;                                // Stop Loss не указан 
   request.tp=0;                                // Take Profit не указан    
//--- сформируем тип ордера 
   request.type=GetRandomType();                // тип ордера 
//---сформируем цену для отложенного ордера 
   request.price=GetRandomPrice(request.type);  // цена для открытия 
//--- отправим торговый приказ 
   MqlTradeResult result={0}; 
   OrderSend(request,result); 
//--- выведем в лог ответ сервера   
   Print(__FUNCTION__,":",result.comment); 
   if(result.retcode==10016) Print(result.bid,result.ask,result.price); 
//--- вернем код ответа торгового сервера 
   return result.retcode; 
  } 

Sie scheinen mir fast identisch zu sein, ich weiß nicht, wo diese Fehler auftreten (4756 und 10030). Bitte zeigen Sie mit dem Finger und erklären Sie es.

 
damirqa:

Hallo! Ich habe das Studium von MQL5 aufhttps://www.mql5.com/ru/articles/100 begonnen. Ich habe den Code gestartet und den Fehler 4756 erhalten. Also dachte ich, ich beginne mit dem einfachsten (Warnung/Drucken...). Eine der wichtigsten Funktionen ist OrderSend. Ich habe angefangen, das Forum/die Dokumentation zu durchsuchen, wie man OrderSend verwendet. Ich habe diesen Artikelhttps://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions gefundenund den Code für die Eröffnung einer Kaufposition gefunden. Ich habe Fehler 4756 und Retcode 10030. Ich habe verstanden, dass 10030 - es ist die OrderSend-Eigenschaft, aber ich habe nicht verstanden, wie diese Eigenschaft verwendet werden sollte (ich habe mir den Code von jemand anderem angesehen) und wofür sie hauptsächlich verwendet wird. Dann öffnete ichhttps://www.mql5.com/ru/docs/trading/ordersend, kopierte den Code, startete ihn, alles ist in Ordnung, es funktionierte.
Aber ich verstehe immer noch nicht, warum der Fehler 4756 auftritt und wie man ihn loswerden kann, ebenso wie den Fehler 10030.

Ich habe mir den Code zwischen

und diese.

Sie scheinen mir fast identisch zu sein, ich weiß nicht, wo diese Fehler auftreten (4756 und 10030). Bitte zeigen Sie mit dem Finger und erklären Sie


Verwenden Sie die Handelsklasse CTrade - so machen Sie garantiert so wenig Fehler wie möglich.

Beispiel für das Senden eines Handelsauftrags zur Eröffnung eines Kaufs:

//+------------------------------------------------------------------+
//|                                                     Open Buy.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
//---
#include <Trade\Trade.mqh>
CTrade         m_trade;                      // trading object
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   m_trade.Buy(1.0); // open Buy position, volume 1.0 lot
  }
//+------------------------------------------------------------------+
Dateien:
Open_Buy.mq5  2 kb
 
Vladimir Karputov:

Verwenden Sie die CTrade-Handelsklasse, um sicherzustellen, dass Sie so wenige Fehler wie möglich machen.

Beispiel für das Senden eines Handelsauftrags zur Eröffnung eines Kaufs:


CTrade - ist es eine universelle Klasse? Das heißt, er kann jeden anderen Code ersetzen?

 
damirqa:

CTrade - ist es eine universelle Klasse? Ist es also möglich, einen anderen Code durch diesen zu ersetzen?


CTrade wird mit dem Terminal in derStandardbibliothek->Trade Classes->CTrade ausgeliefert.

 
damirqa:

Sie scheinen mir fast identisch zu sein, ich weiß nicht, wo diese Fehler auftreten (4756 und 10030). Bitte zeigen Sie mit dem Finger und erklären Sie

https://www.mql5.com/ru/search#!keyword=Unsupported%20filling%20mode

Поиск - MQL5.community
Поиск - MQL5.community
  • www.mql5.com
Поиск выполняется с учетом морфологии и без учета регистра. Все буквы, независимо от того, как они введены, будут рассматриваться как строчные. По умолчанию наш поиск показывает страницы...
 

Ein Beispiel von kodobase


Es gibt mehrere Möglichkeiten, Code in ME zu erhalten

  1. Laden Sie es direkt von ME. Für manche Leute ist das wahrscheinlich praktisch. Aber für mich überhaupt nicht.
  2. Laden Sie die Datei auf die Festplatte herunter, kopieren Sie sie in den Ordner MQL5 und öffnen Sie sie in ME. Meistens benutze ich diesen unbequemen Weg.
  3. Drücken Sie die Taste "Ansicht" und kopieren Sie (Kopieren - STRG+A und STRG+C) und fügen Sie den Code in ME ein (STRG+V). Der schnellste und bequemste Weg.
Ist es sinnvoll, die Schaltfläche "Kopieren" so zu gestalten, wie auf dem Screenshot gezeigt?

 

Im MT5-Tester erlaubt das Objekt "Eingabefeld" OBJ_EDIT nicht, einen Wert darin zu bearbeiten. Ist das so vorgesehen oder ist es ein Fehler?

In den Terminals und im MT4-Tester ist es editierbar, aber im MT5-Tester ist es das nicht, der Wert, der bei der Erstellung des Objekts programmatisch eingegeben wurde, verschwindet.