[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 215

 
Qra:

Guten Tag an alle!

Ich schreibe meinen ersten Bot, und gleichzeitig mache ich mich mit MQL vertraut. Beim Testen habe ich folgendes Problem:

Die Order OP_BUYSTOP wird direkt nach der Ordererteilung ausgelöst, obwohl der Kurs, dem Chart nach zu urteilen, den Zielwert nicht erreicht (siehe unten)

ZeitTypBestellungBandPreisS / LT / PGewinnBilanz
12011.09.19 02:10Kaufstopp10.0176.93576.73577.135
22011.09.19 02:10kaufen10.0176.93576.73577.135

USDJPY,M5 (visuell)

Datum 2011.09.19

Zeit 02:15

Offen 76.903

Hoch 76.909

Niedrig 76.890

Schließen 76.890

Band 66

Ich teste alle Zecken.

Vielleicht verstehe ich den Befehl OP_BUYSTOP nicht richtig? Zu kaufen, wenn der Preis einen bestimmten Wert übersteigt, richtig?

Hier ist ein Teil des Quellcodes, der eine Bestellung aufgibt

int ticket=OrderSend(Symb, OP_BUYSTOP, Lot, Price, 0, SL, TP);

Vielen Dank an alle im Voraus!

Auf dem Candlestick-Chart sind alle Preise Bid und jeder Kaufauftrag wird zum Ask-Preis ausgeführt.
 
PapaYozh:
Auf dem Candlestick-Chart sind alle Preise Bid und jeder Kaufauftrag wird zum Ask-Preis ausgeführt.

Ich danke Ihnen!

 
Hallo zusammen!

Ich möchte schwebende horizontale Linien löschen, wenn ihr Niveau vom aktuellen Kurs durchbrochen wurde. Anders ausgedrückt: wenn der Pegel bereits nach der Erstellung von OBJ_HLINE überschritten oder "neu ausgehandelt" wurde.

Danke an Roll für die Hilfe. Könnten Sie mir bitte sagen, wie ich die Bedingung, den Pegel in einem bekannten Zeitraum zu halten, korrekt verfolgen kann?
//----------------------------------------------------------------------+ 
//  Удаление  OBJ_HLINE при пробитии его уровня   /Red-Up/Blue-Down|    |
//----------------------------------------------------------------------+   
void DelHLine( string nm="")  
   {
    int obj_total=ObjectsTotal();

       for(int i=1;i<obj_total;i++) 
      { 
        nm=ObjectName(i);
         if(nm==ObjectName(i)&&ObjectType(nm)==OBJ_HLINE)
         {
          color    cl     = ObjectGet(nm,OBJPROP_COLOR);
          double   pl     = ObjectGet(nm,OBJPROP_PRICE1);
          datetime timeSet= ObjectGet(nm,OBJPROP_TIME1);
          int      shift  = iBarShift(NULL,0,timeSet);
   
          if((cl==Red  && pl<High[iHighest(NULL,0,MODE_HIGH,shift,1)])||
             (cl==Blue && pl>Low [iLowest (NULL,0,MODE_LOW, shift,1)]) ) ObjectDelete(nm); 
         } 
      }
    return(0);  
  }
//+------------------------------------------------------------------+
 

Hallo! Bitte helfen Sie mir.

Ich kann nicht verstehen, warum dieses Skript die Daten in Excel nicht als Spalten anzeigt.

Bei der Ausführung in Excel gibt es nur einen Tabellenkopf, aber keine Daten.

Helfen Sie mir zu verstehen, warum Begrenzungszeichen von Excel nicht erkannt werden.

Dateien:
writefile.mq4  3 kb
 

Ich fange gerade mit dem Programmieren an, daher tauchen viele Fragen auf, ich danke Ihnen im Voraus für Ihre Aufmerksamkeit!

Ich habe ein Skript namens NewScript geschrieben, das eine einfache Funktion ausführt - die Anzeige von OHLC-Preisen nach Balken in einem Diagramm...

Meine Frage ist - wenn BARS ist genau die Anzahl der Balken auf dem aktuellen Diagramm, warum dann in meinem EA-Log zeigt die Anzahl der Balken auf dem Bildschirm (ca. 200), aber in meinem Protokoll mehr als 2000?

Ich danke Ihnen!

Dateien:
 
Vinin:


Kleine Korrektur


double Hi (int pos=0) //создали Hi, зависящую от pos
{ 
  int i=pos; //присваиваем "i" значение от "pos", то есть i равно pos
  double H=0;
  while (i<=pos+10) //как она может быть меньше, если она равна?
  {
    if (H<iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i))  //это мне вообще не понятно... то есть если значение "Н" будет меньше, то присваиваем...  
      H=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i); //то есть он определит мне наинизший, но не наивысший бар


    i++; //ну тут мы добавляем к "i" плюс 1
  }
  return(H); //возвращаем Hi в самое начало
}

Entschuldigung, ich verstehe die Funktion nicht...

 
CLAIN:



Die einfachste Option

double Hi (int pos=0) 
{ 
  double H[10]; // Объявили массив
  
  for (i=pos+1;i<=pos+10;i++) // формируем массив
  {
    H[i]=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
  }
  int MaxId=ArrayMaximem(H); ищем индекс максимального элемента
  return(H[MaxId]); // возвращаем максимальный элемент
}
 

Hallo!

Können Sie mir helfen, Code zu schreiben, um den EA für eine Weile anzuhalten?

Ich habe den Code wie folgt geschrieben.

int init() {
string OrderStop="OrderStop "+ Symbol();
OrderSig =GlobalVariableGet(OrderStop);
// Print (OrderSig);

return (0);
}

int deinit() {
return (0);
}

int start() {
string OrderStop="OrderStop "+ Symbol();
OrderSig = GlobalVariableGet(OrderStop);

wenn (OrderSig==1)return(0);

sonst {

EA Körper (Code)

}

zurück(0);

}

Im Trailer funktioniert dieser Code, aber wenn ich kompiliere oder Terminal erneut ausführe,

EA beginnt zu arbeiten (öffnet die Position) und handelt nicht mehr.

Was kann das sein?

Oder nennen Sie mir eine andere Möglichkeit.

 
alega:

Oder schlagen Sie eine andere Option vor.

Verwenden Sie ein f:

  Sleep (3000);
 
Danke, ich werde es ausprobieren.
Grund der Beschwerde: