[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 601

 
lottamer:

Bitte geben Sie an, wo Sie nachsehen können, wie die Bedingung "Wenn das letzte Take-Profit-Geschäft > 0 war, dann...." kodiert ist.

d.h. Verbuchung von bereits abgeschlossenen Geschäften (automatisch).


https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page4#434230

Funktion isCloseLastPosByTake().

Diese Funktion gibt ein Flag zurück, um die letzte Position von Takei zu schließen. Flagge wird gesetzt - True - TakeProfit wurde ausgelöst. Flagge gesenkt - Falsch - Position wurde aus einem anderen Grund geschlossen. Eine genauere Auswahl der zu berücksichtigenden Positionen wird durch externe Parameter festgelegt:

  • sy - Bezeichnung des Marktinstruments. Wenn Sie diesen Parameter angeben, berücksichtigt die Funktion nur Positionen des angegebenen Instruments. Der Standardwert "" bedeutet ein beliebiges Marktinstrument. NULL bedeutet das aktuelle Instrument.
  • op - Handelsoperation, Positionsart. Gültige Werte: OP_BUY, OP_SELL oder -1. Der Standardwert -1 bedeutet eine beliebige Position.
  • mn - Positionsbezeichner, MagicNumber. Der Standardwert -1 bedeutet einen beliebigen Bezeichner.
  • //+----------------------------------------------------------------------------+
    //|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
    //+----------------------------------------------------------------------------+
    //|  Версия   : 19.05.2008                                                     |
    //|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
    //+----------------------------------------------------------------------------+
    //|  Параметры:                                                                |
    //|    sy - наименование инструмента   (""   - любой символ,                   |
    //|                                     NULL - текущий символ)                 |
    //|    op - операция                   (-1   - любая позиция)                  |
    //|    mn - MagicNumber                (-1   - любой магик)                    |
    //+----------------------------------------------------------------------------+
    bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
      datetime t;
      double   ocp, otp;
      int      dg, i, j=-1, k=OrdersHistoryTotal();
    
      if (sy=="0") sy=Symbol();
      for (i=0; i<k; i++) {
        if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
          if (OrderSymbol()==sy || sy=="") {
            if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
              if (op<0 || OrderType()==op) {
                if (mn<0 || OrderMagicNumber()==mn) {
                  if (t<OrderCloseTime()) {
                    t=OrderCloseTime();
                    j=i;
                  }
                }
              }
            }
          }
        }
      }
      if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
        dg=MarketInfo(sy, MODE_DIGITS);
        if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
        ocp=NormalizeDouble(OrderClosePrice(), dg);
        otp=NormalizeDouble(OrderTakeProfit(), dg);
        if (ocp==otp) return(True);
      }
      return(False);
    }

 
BeerGod:

https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page4#434230

Die Funktion isCloseLastPosByTake().

Diese Funktion gibt ein Flag zum Schließen der letzten Position durch Take Profit zurück. Flagge ist oben - Wahr - TakeProfit wurde ausgelöst. Flagge gesenkt - Falsch - Position wurde aus einem anderen Grund geschlossen. Eine genauere Auswahl der zu berücksichtigenden Positionen wird durch externe Parameter festgelegt:

  • sy - Bezeichnung des Marktinstruments. Wenn Sie diesen Parameter angeben, berücksichtigt die Funktion nur Positionen des angegebenen Instruments. Der Standardwert "" bedeutet ein beliebiges Marktinstrument. NULL bedeutet das aktuelle Instrument.
  • op - Handelsoperation, Positionsart. Gültige Werte: OP_BUY, OP_SELL oder -1. Der Standardwert -1 bedeutet eine beliebige Position.
  • mn - Positionsbezeichner, MagicNumber. Der Standardwert -1 bedeutet einen beliebigen Bezeichner.




Danke, ich bin selbst auf KIM's Libraries gestoßen...(Genosse Kim hat anscheinend wie MARX der Forex-Welt - CAPITAL geschrieben...und wir alle zitieren es jetzt (d.h. fügen es in unsere EAs ein)) .... es gibt "Flaggen" der letzten Geschäfte in verschiedenen Varianten...

außer dass ich # includ-.... noch nie verwendet habe

Können Sie das kurz und bündig erklären?

am Anfang schreibe ich # include (Dateiname mqh)

Aber in den Code? wo genau soll ich die Funktion einfügen?

GetTypeLastClosePos ();

und was dann?

WAS davon wird mir die Art der Position zurückgeben?

int GetTypeLastClosePos(string sy="", int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal(), r=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            r=OrderType();
          }
        }
      }
    }
  }
  return(r);
}

OrderType() ?

d.h. wenn(OrderType() ==TRUE ) dann dies und das tun... oder?

 
Wie unterscheiden sich die Funktionen für den Tester von denen für den Online-Handel?
 
Theoretisch Fehlerbehandlung bei der Kommunikation mit dem Handelsserver.
 
lottamer:


Vielen Dank, ich selbst kam über KIM's Libraries ... (Genosse KIM wahrscheinlich schrieb CAPITAL wie MARKS der Forex-Welt ... und wir alle zitieren sie jetzt (dh, fügen Sie es in unsere Expert Advisors) ...) es gibt "Flaggen" der letzten Geschäfte in verschiedenen Varianten...

außer dass ich # includ-.... noch nie benutzt habe

Können Sie das kurz und bündig erklären?

am Anfang schreibe ich # include (Dateiname mqh)

Aber in den Code? wo genau soll ich die Funktion einfügen?

GetTypeLastClosePos ();

und was dann?

WAS davon wird mir die Art der Position zurückgeben?

OrderType() ?

d.h. wenn(OrderType() ==TRUE ) dann dies und das tun... oder?

Die Funktionen sollten nach return(0) eingefügt werden;

Die Funktion GetTypeLastClosePos() gibt 0 zurück, wenn es einen Kauf gab, und 1, wenn es einen Verkauf gab, oder -1, wenn es nichts in der Historie gab.

//+------------------------------------------------------------------+
//|                                                          123.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
if (isCloseLastPosByTake()==true) Comment("Профит"); else Comment("ХЗ");   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
}
 
BeerGod:

Die Funktion muss nach return(0) eingefügt werden;

Die Funktion GetTypeLastClosePos() gibt 0 zurück, wenn es einen Kauf gab, und 1, wenn es einen Verkauf gab, oder -1, wenn nichts in der Historie vorhanden ist.



Verstanden, danke.

Wenn die Funktion jedoch in einer #include-Datei steht, wie soll sie dann behandelt werden?

 
lottamer:


Verstanden, danke.

und dennoch, wenn die Funktion in einer #include-Datei ist, wie entsorgen Sie sie?


Wie verstehen Sie #include?

Wie in dem Dokument oder auf Ihre eigene Art und Weise?

 

Ich brauche die Eule, um eine Pending Order genau bei der Eröffnung einer Kerze auf D1 zu platzieren.

Ich habe eine Funktion geschrieben:

bool GetTimeToInput()
{
  if(TimeCurrent() == iTime(Symbol(),1440,0)
  {
    return(true);
  }
  else
    return(false);
}

Der Compiler runzelt die Stirn:

'\end_of_program' - unbalanced left parenthesis E:\Insall'd soft's\Forex\Alpari NZ MT4\experts\Gann_2Days.mq4 (228, 4)

Jeder hat Klammern. Das ist seltsam. Wenn diese Funktion auskommentiert wird, lässt sich der Code ohne Fehler kompilieren. Was könnte falsch sein?

Ist es richtig, dass ich die Funktion so schreibe, dass sie nur zum Eröffnungskurs einer Tageskerze öffnet?

 

hoz:

Alle Klammern sind da, das ist seltsam.

Nein. In der if-Zeile fehlt der richtige Hund.


und sagen Sie vielleicht nicht das Wort "seltsam", wenn es um den Compiler geht. Natürlich ist es schwer, den Balken im eigenen Auge zu sehen :)

Und habe ich tatsächlich die richtige Funktion geschrieben, um nur zum Eröffnungskurs der Tageskerze zu öffnen?

keine
 
lottamer:


Die Entwickler hatten nichts damit zu tun. :__

Anstelle von ( Hour()>=10 || Hour()<20 ) hätten Sie es einfach machen sollen Hour()>=10 && Hour()<20

und alles funktionierte


Die Frage ist nicht, dass es funktioniert hat, sondern dass es nicht funktionieren sollte, wenn die Hilfe richtig geschrieben ist.
Grund der Beschwerde: