[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 376

 
Gibt es eine Möglichkeit, die Provisionen für einen 1-Lot-Auftrag herauszufinden, ohne einen Auftrag zu eröffnen?
 
Reshetov:

OrdersTotal() gibt die Anzahl der bereits geöffneten Positionen an, d.h. Sie können damit überprüfen, ob bereits eine Position geöffnet ist oder nicht.

Ich verwende die Funktion Terminal() aus dem Tutorial, wenn ich Positionen schließe, vorausgesetzt, dass Mas_Ord_New[0][0]!=0. Aber wir haben hier noch eine andere Aufgabe: wir sollten eine Flagge erstellen, die den Handel mit dem aktuellen Signal verbietet, wenn bereits ein Auftrag durch dieses Signal eröffnet wurde. Ich versuche, Flaggen zu verwenden, aber ich habe einen Fehler gemacht.

  
static bool buy_1=true;
   
if(Stoch_Sig==4 && buy_l==true)
       { 
         sl=Ask-Stop_Loss*Point;
         Ans=OrderSend(Symb,OP_BUY,Lots,Ask,40,sl,0,"LSMA+Stoch",Magic);
         if(Ans==false)
           Alert("Неудачная попытка открыть ордер BUY. Ошибка: ", GetLastError());
         if(Ans==true)
            buy_l=false; // снимем флаг, запрещаем торговать по данному сигналу
       }


   
if(Stoch_Sig!=4 && buy_l==false) // поднимем флаг, сигнал сменился - торговать по нему можно опять
       buy_l=true;
 

Parny braucht Hilfe Was ist das?

2012.09.10 18:40:20 '6257743': Order buy 5.00 EURUSD opening at 1.27816 sl: 1.27791 tp: 1.27876 failed [Invalid S/L or T/P]

Und warum sind der Preis und der Stop-Loss identisch?

Kurs 1.25618 Stop Loss 1.25618 Take Profit 1.25698


Gewinnmitnahme 60 Pips

Stop Loss 20

 

Hallo. Ich habe eine Frage zu benutzerdefinierten Indikatoren. In der iCustom-Beschreibung steht:

double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)
Berechnung des angegebenen benutzerdefinierten Indikators. Der benutzerdefinierte Indikator muss kompiliert werden (Datei mit EX4-Erweiterung) und imTerminal-Verzeichnis\experts\indicators abgelegt werden.
Symbol - Symbolname des Symbols, auf dessen Daten der Indikator berechnet werden soll. NULL bedeutet aktuelles Symbol.
Zeitrahmen - Zeitraum. Kann eine der Perioden des Diagramms sein. 0 bedeutet die Periode des aktuellen Diagramms.
Name - Name des benutzerdefinierten Indikators.
... - Liste der Parameter (falls erforderlich). Die übermittelten Parameter sollten der Reihenfolge der Deklaration und dem Typ der externen (externen) Variablen des benutzerdefinierten Indikators entsprechen.
Modus - Index der Indikatorlinie. Kann von 0 bis 7 sein und sollte dem Index entsprechen, der von einer der SetIndexBuffer-Funktionen verwendet wird.
Schicht - Index des aus dem Indikatorpuffer erhaltenen Wertes (Verschiebung relativ zum aktuellen Takt um die angegebene Anzahl von Perioden zurück).

Frage: Wie erhalte ich den Wert von "shift" (wenn ich den Indikator mit einem Shift aufrufe, verwendet er die Werte wie ohne ihn, d.h.iCustom(NULL, 0, "name",pam1,0,1)= iCustom(NULL, 0, "name",pam1,0,100), aber wenn ich den Indikator vor 100 Takten aufrufe, wird er einen anderen Wert haben als iCustom(NULL, 0, "name",pam1,0,100). Der Indikator ist einfach, verwendet 5 vorherige Close-Werte und nimmt deren Durchschnitt.

Ich werde für Ihre Hilfe dankbar sein.

 
paladin80:
Sie haben die Abweichung von der Hauptlinie auf 0 (Null) gesetzt. Sie sollte größer als Null sein.
Reschetow:
Würden Sie die Abweichung auch auf negativ setzen?


Vielen Dank, liebe Genossen! Ganz genau! Ich war zu sehr mit meiner Arbeit beschäftigt und hatte keine Ahnung. Ich wünschte, ich hätte einfach auf die Schaltfläche "Danke" klicken können, um mich nicht zu vermehren. )

Übrigens wäre es sinnvoll, Anfängern zu empfehlen, Parameter über Variablen mit sprechenden Namen an Indikatoren zu übergeben. Bisher habe ich das getan, aber dieses Mal habe ich etwas übersehen.

 

Guten Abend zusammen!

Ich wollte die gleiche Frage stellen und habe die Funktion von hier https://www.mql5.com/ru/forum/131859 übernommen.

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров. Версия функции для тестов на истории.         |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            OrderDelete(OrderTicket(), clDelete);
          }
        }
      }
    }
  }
}

Ich erhalte Fehler--->

Alle Variablen in der Funktion sind innerhalb der Funktion definiert...was ist los?

kopiert und eingefügt. --->

   if((High[2]==High[1])||(Close[2]==High[1])||(High[2]==Open[1]))
   {
   DeleteOrders()
   }
   
   
 //+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров. Версия функции для тестов на истории.         |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            OrderDelete(OrderTicket(), clDelete);
          }
        }
      }
    }
  }
}
 
DanLett:

Dort gibt es keine Fehler:

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров. Версия функции для тестов на истории.         |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            OrderDelete(OrderTicket(), CLR_NONE);
          }
        }
      }
    }
  }
}
Sie müssen jedoch nur eine Farbe angeben, zum BeispielCLR_NONE.
 

Und es sieht so aus, als ob Sie das 'in der Luft hängen' lassen:

  if((High[2]==High[1])||(Close[2]==High[1])||(High[2]==Open[1]))
   {
   DeleteOrders()
   }
Tatsächlich ist eine solche Bedingung (High[2]==High[1 ]) oder eine solche(Close[2]==High[1 ]) oder eine solche(High[2]==Open[1 ]) selten. Schauen Sie sich das Diagramm an, wie viele dieser Übereinstimmungen werden Sie finden?

Was die Logik der Aufhebung der Bestellung angeht, ... - auch leidet, kurz gesagt.

 

den Code von hier kopiert und ein neues Projekt (EA) erstellt, den Code eingefügt -> kompiliert

Seltsamerweise gibt es immer noch die gleichen Fehler...

 
DanLett:

den Code von hier kopiert und ein neues Projekt (EA) erstellt, den Code eingefügt -> kompiliert

Seltsamerweise gibt es immer noch die gleichen Fehler...

Versuchen Sie, alles außer dieser Funktion zu entfernen und zu kompilieren. Wird es zu Fehlern kommen? Speichern Sie es einfach, bevor Sie es löschen.
Grund der Beschwerde: