Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1663

 
artem artem #:

MakarFX, danke! Jetzt gibt es keine zusätzliche erste Nicht-Signal-Order, aber jetzt aus irgendeinem Grund die erste Signal-Order (normal) ist die Eingabe 2 Kerzen früher))) Ich habe einen Screenshot des Testers an meine Nachricht angehängt, aber auch trotz dieser ersten Bestellung - das Wichtigste ist getan, vielen Dank noch einmal) Mit Magiern bekam es, dann werde ich eine externe Variable zu machen und wenn ich den Explorer auf ein bestimmtes Währungspaar Chart anhängen wird, werde ich die Zahl für jedes Paar einzeln ändern.

Ich werde mir die Eröffnung ansehen.

Es ist nicht notwendig, die Magie zu ändern, wenn das Symbol kontrolliert wird.

 
Nerd Trader #:

Ich habe es bereits vergessen... und am Anfang habe ich es auch getan (es ist gut, dass ich es gesperrt habe), aber die Bedingungsmethode schien mir unzuverlässig, ich wollte, dass die geänderte Reihenfolge durch etwas Offensichtlicheres angezeigt wird.

Sie müssen die Bedingungen bei jedem neuen Tick überprüfen, denn wenn es beim vorherigen Tick nicht funktioniert hat, wird es beim neuen Tick anders sein.

Und die Fehlerbearbeitung sollte erledigt sein.

 
Nerd Trader #:

Ich hatte es bereits vergessen... und das tat ich auch am Anfang (es ist gut, dass ich mich verpflichtet habe), aber die Art und Weise der Bedingung erschien mir unzuverlässig, ich wollte etwas Offensichtlicheres, um eine veränderte Reihenfolge anzuzeigen.

//+------------------------------------------------------------------+
if(OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderTakeProfit(), 0))
   ObjectCreate(0,OrderTicket(),OBJ_ARROW_UP,0,Time[0],Bid);
//+------------------------------------------------------------------+
int NameObject()
  {
   int ticket=-1;
   for(int i=0;i<ObjectsTotal();i++)
     {
      ticket=StringToInteger(ObjectName(0,i,0));
     }
   return(ticket);
  }
//+----------------------------------------------------------------------------+
void GetTicketOrder()
  {
   int result=-1;
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
     {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
        {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
           {
            if(OrderType() == OP_BUY || OrderType() == OP_SELL)
              {
               if(OrderTicket() == NameObject())
                  {
                     делай все что хочешь
                  }
              }
           }
        }
     }
  }
 
EVGENII SHELIPOV Einzahlungswährung ist , wird das gesamte Ordergitter geschlossen

Bitte helfen Sie mir, den Code so zu ändern, dass es Punkte anstelle von Gewinn gibt. Ich danke Ihnen.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в пунктах         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetProfitOpenPosInPoint(string sy="", int op=-1, int mn=-1) {
  double p;
  int    i, k=OrdersTotal(), pr=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          p=MarketInfo(OrderSymbol(), MODE_POINT);
          if (p==0) if (StringFind(OrderSymbol(), "JPY")<0) p=0.0001; else p=0.01;
          if (OrderType()==OP_BUY) {
            pr+=(MarketInfo(OrderSymbol(), MODE_BID)-OrderOpenPrice())/p;
          }
          if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(), MODE_ASK))/p;
          }
        }
      }
    }
  }
  return(pr);
}
 
artem artem #:

MakarFX, danke! Jetzt gibt es keine zusätzliche erste Nicht-Signal-Order, aber jetzt aus irgendeinem Grund die erste Signal-Order (normal) ist die Eingabe 2 Kerzen früher))) Ich habe einen Screenshot aus dem Tester zu meiner Nachricht beigefügt, aber auch trotz dieser ersten Bestellung - das Wichtigste ist getan, vielen Dank noch einmal) Mit Magier bekam es, dann werde ich eine externe Variable zu machen und wenn ich die espert zu einem bestimmten Währungspaar Chart anhängen, werde ich die Zahl für jedes Paar einzeln zu ändern.

Welcher Zeitraum wurde getestet und wie hoch war die Anzahl der Bestätigungen?
 
MakarFX #:

Makar, soweit ich das verstanden habe, sollte es anstelle der Funktion CalculiteProfit() versucht werden

 
EVGENII SHELIPOV #:

Makar, soweit ich das verstanden habe, sollte es anstelle der Funktion CalculiteProfit() versucht werden

ja

und ändern Sie dies

int op = GetProfitOpenPosInPoint("", -1, Magic ); 
 
MakarFX #:
In welchem Zeitraum haben Sie den Test durchgeführt und wie hoch war die Anzahl der Bestätigungen?

MakarFX, auf diesem Screenshot, die ich beigefügt, getestet auf EUR / USD - M 30 - alle Ticks - 01.08.21 bis 03.09.21 - 26 Aufträge wurden (aber ich änderte die Konstante von 4 bis 8, beschloss ich, auf eine größere Anzahl von Kerzen aussehen)

Wenn wir die Konstante auf 4 Candlesticks, dann für den gleichen Zeitraum - dann 35 Aufträge, aber die erste Bestellung kommt auch in 2 Aufträge früher

 
MakarFX #:

ja

und Sie ändern es.

Makar, können Sie mir sagen, ob es nur eine Mindest- und eine Höchstbestellung gibt?

 
EVGENII SHELIPOV #:

Makar, können Sie mir sagen, ob es nur eine Mindest- und eine Höchstbestellung gibt?

Meinen Sie mit Ticket oder Preis "min und max"?