Fragen von einem "Dummy" - Seite 274

 
Funktioniert nur das Schließen nicht?
 
Ja, und es lässt sich wunderbar öffnen.
 

Und versuchen Sie, eine Auftragsprüfung vor OrderSend einzufügen, um die Korrektheit zu gewährleisten:

//---- Проверка торгового запроса на корректность
if(!OrderCheck(request,check))
{
 ("Ошибка проверки ордера OrderCheck(): ",ResultRetcodeDescription(check.retcode));
}



//+------------------------------------------------------------------+
//| возврат стрингового результата торговой операции по его коду     |
//+------------------------------------------------------------------+
string ResultRetcodeDescription(int retcode)
  {
   string str;
//----
   switch(retcode)
     {
      case TRADE_RETCODE_REQUOTE: str="Реквота"; break;
      case TRADE_RETCODE_REJECT: str="Запрос отвергнут"; break;
      case TRADE_RETCODE_CANCEL: str="Запрос отменен трейдером"; break;
      case TRADE_RETCODE_PLACED: str="Ордер размещен"; break;
      case TRADE_RETCODE_DONE: str="Заявка выполнена"; break;
      case TRADE_RETCODE_DONE_PARTIAL: str="Заявка выполнена частично"; break;
      case TRADE_RETCODE_ERROR: str="Ошибка обработки запроса"; break;
      case TRADE_RETCODE_TIMEOUT: str="Запрос отменен по истечению времени";break;
      case TRADE_RETCODE_INVALID: str="Неправильный запрос"; break;
      case TRADE_RETCODE_INVALID_VOLUME: str="Неправильный объем в запросе"; break;
      case TRADE_RETCODE_INVALID_PRICE: str="Неправильная цена в запросе"; break;
      case TRADE_RETCODE_INVALID_STOPS: str="Неправильные стопы в запросе"; break;
      case TRADE_RETCODE_TRADE_DISABLED: str="Торговля запрещена"; break;
      case TRADE_RETCODE_MARKET_CLOSED: str="Рынок закрыт"; break;
      case TRADE_RETCODE_NO_MONEY: str="Нет достаточных денежных средств для выполнения запроса"; break;
      case TRADE_RETCODE_PRICE_CHANGED: str="Цены изменились"; break;
      case TRADE_RETCODE_PRICE_OFF: str="Отсутствуют котировки для обработки запроса"; break;
      case TRADE_RETCODE_INVALID_EXPIRATION: str="Неверная дата истечения ордера в запросе"; break;
      case TRADE_RETCODE_ORDER_CHANGED: str="Состояние ордера изменилось"; break;
      case TRADE_RETCODE_TOO_MANY_REQUESTS: str="Слишком частые запросы"; break;
      case TRADE_RETCODE_NO_CHANGES: str="В запросе нет изменений"; break;
      case TRADE_RETCODE_SERVER_DISABLES_AT: str="Автотрейдинг запрещен сервером"; break;
      case TRADE_RETCODE_CLIENT_DISABLES_AT: str="Автотрейдинг запрещен клиентским терминалом"; break;
      case TRADE_RETCODE_LOCKED: str="Запрос заблокирован для обработки"; break;
      case TRADE_RETCODE_FROZEN: str="Ордер или позиция заморожены"; break;
      case TRADE_RETCODE_INVALID_FILL: str="Указан неподдерживаемый тип исполнения ордера по остатку "; break;
      case TRADE_RETCODE_CONNECTION: str="Нет соединения с торговым сервером"; break;
      case TRADE_RETCODE_ONLY_REAL: str="Операция разрешена только для реальных счетов"; break;
      case TRADE_RETCODE_LIMIT_ORDERS: str="Достигнут лимит на количество отложенных ордеров"; break;
      case TRADE_RETCODE_LIMIT_VOLUME: str="Достигнут лимит на объем ордеров и позиций для данного символа"; break;
      case TRADE_RETCODE_INVALID_ORDER: str="Выставляемый ордер имеет запрещенный или неверный тип"; break;
      case TRADE_RETCODE_POSITION_CLOSED: str="Операция с позицией невозможна, так как позиция отсутствует"; break;
      default: str="Неизвестный результат";
     }
//----
   return(str);
  }
 

Ach ja, und noch etwas: Achten Sie beim Abschluss darauf, dass Sie die Strukturen aufheben, bevor Sie sie ausfüllen

ZeroMemory(tradeRequest);
ZeroMemory(tradeResult);


Nach

SymbolInfoTick(symb, price);

diese beiden Zeilen einfügen.

 
i_logic:

Ach ja, und noch etwas: Achten Sie beim Schließen darauf, dass Sie die Strukturen vor dem Füllen aufheben.


Nach

diese beiden Zeilen einfügen.

Nein, Sie müssen BEFORE:

for(int i=PositionsTotal()-1;i>=0;i--)
    {
      ZeroMemory(tradeRequest);
      ZeroMemory(tradeResult);
      ZeroMemory(price);
      
      symb=PositionGetSymbol(i);
      PositionSelect(symb);
      SymbolInfoTick(symb, price);

geholfen. Vielen Dank.

 

Hallo, Aufbau eines Fibo-Gitters in einem EA

ObjectCreate(0, "Fibo",OBJ_FIBO,0,time2,price1);

Alles funktioniert, aber jetzt möchte ich den Preis bei 23,6% erhalten, gibt es keine einfache Funktion für diesen Zweck?

double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_LEVELVALUE,1); Dies ergibt 0.236, d.h. nicht den Preis, sondern das Niveau.

double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_PRICE,1); Dies gibt den Preis bei Level 0 (oder bei Level 100).

Ich konnte nichts anderes finden als diese beiden (OBJPROP_PRICE und OBJPROP_LEVELVALUE).

Können Sie mir sagen, wie dieses Problem gelöst werden kann? Ich danke Ihnen!

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

Können Sie mir sagen, wie ich dieses Problem lösen kann? Ich danke Ihnen!

Es gibt nur zwei arithmetische Operationen. Multiplikation (0,236 multipliziert mit der Differenz zwischen dem Preis der Stufe Null und dem Preis der ersten Stufe) und anschließend Addition (Addition des Ergebnisses der Multiplikation zum Preis der Stufe Null).

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
 

Hallo, danke für die vorherige Antwort!

Ich verwende iCustom(NULL,0, "Examples\\ZigZag",ExtDepth,ExtDeviation,ExtBackstep) Ich verbinde einen regelmäßigen Zickzack. Mit den Berechnungen scheint alles in Ordnung zu sein. Könnten Sie mir sagen, wie ich den EA in die Lage versetzen kann , diesen verbundenen Indikator automatisch auf dem Diagramm zu zeichnen? Im Moment muss ich den Zickzack-Indikator manuell hinzufügen, nachdem ich den EA ausgeführt habe, und seine Parameter wie im EA einstellen! Ich danke Ihnen.

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 
zhurkin:

Hallo, danke für die vorherige Antwort!

Ich verwende iCustom(NULL,0, "Examples\\ZigZag",ExtDepth,ExtDeviation,ExtBackstep) Im Allgemeinen verbinde ich einen regelmäßigen Zickzack. Mit den Berechnungen scheint alles in Ordnung zu sein. Könnten Sie mir sagen, wie ich den EA in die Lage versetzen kann , diesen verbundenen Indikator automatisch auf dem Diagramm zu zeichnen? Im Moment muss ich den Zickzack-Indikator manuell hinzufügen, nachdem ich den EA ausgeführt habe, und seine Parameter wie im EA einstellen! Ich danke Ihnen.

https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
Операции с графиками / ChartIndicatorAdd - Документация по MQL5
 

Ich habe begonnen, OOP zu studieren.

Ich hatte ein Problem beim Schreiben eines Nachkommens einer Basisklasse, der Compiler schreibt - "'ХХХХХХХ' - wrong parameters count".

Ich habe lange nach dem Grund gesucht, habe Artikel und Fachbücher gelesen,

aber ich habe es gefunden - die Basisklasse hat einen Konstruktor, es ist einer und parametrisch.

Ich habe auch eine Lösung gefunden - Überladen der Konstruktorfunktion mit dem Standardkonstruktor,

aber dann muss ich alle Parameter des parametrischen Konstruktors der Basisklasse in den Konstruktor des Nachfolgers ziehen, damit die Logik stimmt.

Gibt es noch andere Möglichkeiten?

Gibt es eine Möglichkeit, bei der Deklaration einer Nachfolgeklasse, an wen was zu verteilen? Zum Beispiel: diese Parameter für den Konstruktor der Basisklasse und diese Parameter, damit der Nachkomme sich nicht langweilt...