[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 12

 
das ist es
Dateien:
 
igrok2008 >> :

In Ihrem vorherigen Kommentar haben Sie mich auf meinen Fehler hingewiesen, nämlich auf die falschen Kauf- und Verkaufsniveaus, was (so wie ich es verstehe) die Umkehrung der < > Zeichen erfordert.

Für CCI ist die Angabe von -100???????????????????????? erforderlich oder nicht.

Nimm es und steck es in den Tester

und es wird angezeigt, wo das Ergebnis besser ist

wo es ein Minus gibt oder wo es keins gibt

und welche Zahl am Ende 250 oder -250 sein wird

 

Bitte schreiben Sie oder schlagen Sie vor, wie man eine Order öffnet, wenn ein neuer Balken erscheint, und schließt, wenn er schließt? Mein Kopf tut weh, ich werde nicht schlau daraus ))))

 
vadim2304 >> :

Bitte schreiben Sie oder schlagen Sie vor, wie man eine Order öffnet, wenn ein neuer Balken erscheint, und schließt, wenn er schließt? Mein Kopf tut schon weh, ich kann ihn nicht mehr ausdenken ))))

if ( isTime(Period()*60)) { закрытьОткрытыйОрдер(); открытьНовыйОрдер()};


bool isTime(int sec){
   bool res = false;
   static datetime time = 0;
   double min = 0;
   if (TimeCurrent() >= time){
      min = MathFloor( sec / 60);
      if ( min==0) min = 1.0;         
      time = iTime(NULL,PERIOD_H1,0) + (MathFloor(Minute()/ min) + 1) * min * 60;
      res = true;
   } 
   return( res);
}
 
keekkenen >> :

Ich verstehe, dies ist für Bar mit H1-Zeitrahmen, aber wo zu schreiben Code für die Eröffnung und Schließung Preise, nach if (isTime(Period()*60)), und was bedeutet es, bitte entschlüsseln )))

 

Missverständnis... Zeitraum()*60 gilt für jede TF - alles wird in Sekunden ausgedrückt, d. h.

auf M1 - 60 Sekunden, M5 - 300 Sekunden usw. (denn Periode() auf M1 ergibt 1, auf M5 - 5...)

Ich habe es im übertragenen Sinne geschrieben

if ( isTime(Period()*60)) { закрытьОткрытыйОрдер(); открытьНовыйОрдер()};

Das heißt, wenn ein neuer Balken erscheint, können Sie einen offenen Auftrag schließen und einen neuen eröffnen.

Wenn Sie es nicht selbst machen können, schauen Sie sich die Anleitung https://book.mql4.com/ru/ an.

 
keekkenen >> :

Missverständnis... Zeitraum()*60 gilt für jede TF - alles wird in Sekunden ausgedrückt, d. h.

auf M1 - 60 Sekunden, M5 - 300 Sekunden, usw. (als Periode() auf М1 liefert 1, auf М5 - 5...)

Ich habe es im übertragenen Sinne geschrieben.

Es geht darum, einen offenen Auftrag zu schließen und einen neuen zu eröffnen.

Wenn Sie dies nicht selbst tun können, finden Sie unter "https://book.mql4.com/ru/" eine Anleitung dazu.


Und wenn es keine offenen Orders gibt (sie werden nach diesem Balken geschlossen) und einfach eine neue Order eröffnet wird, gibt es keinen Fehler.

 
satop >> :

Nimm es und steck es in den Tester

und es wird Ihnen zeigen, wo die Ergebnisse besser sind.

wo es ein Minus gibt oder wo es keins gibt.

und es wird Ihnen angezeigt, ob es 250 oder -250 ist.

Sei nicht böse, Satop. Jeder war ein Anfänger, jeder stellte dumme Fragen. Denken Sie an die Schule zurück. Es müssen Freaks gewesen sein. Sie waren neugierig, sie wollten lernen. Mit der Zeit haben sie sie natürlich bedrängt, aber es zeigt sich, dass diejenigen, die wütend waren, alles schneller begriffen und verstanden haben. Aber beide Lehrmethoden HABEN ein Recht auf Leben. Caesar an Caesar......Keine Beleidigung.......Ich will nicht abstreiten, dass ich ein Dummkopf bin, aber ich bin neugierig. Nichts für ungut...

 
vadim2304 >> :

Und wenn es keine offenen Orders gibt (sie werden nach diesem Balken geschlossen) und wir einfach eine neue Order öffnen, wird es keinen Fehler geben?

Die Sache ist die, dass die Funktion OrderClose(), die den Auftrag schließt, die Auftragsnummer als ersten Parameter erhält, und die Auftragsnummer kann nur durch den Aufruf von OrderSelect() für bestehende Aufträge ermittelt werden, so dass der Abschluss im Allgemeinen wie folgt aussieht...

bool res = false;
int slippage = 3;

for (int i = 0; i < OrdersTotal(); i++) {
   if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES) &&
         OrderSymbol()==Symbol()){

      while (IsTradeContextBusy() || !IsTradeAllowed())
         {Comment("Торговый поток занят ...");Sleep(2000);}               
      res = OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), slippage,CLR_NONE);
      if ( res){  
         res = true; Comment("Ордер закрыт !");              
      }else{
         Comment("Ошибка - ", msg);
      }
   }
}
  


Wenn OrdersTotal() = 0 ist, d.h. wenn es keine offenen Aufträge gibt, dann wird die for-Schleife sofort beendet...

 
igrok2008 >> :

Sei nicht böse, Satop. Jeder war ein Anfänger, jeder stellte dumme Fragen. Denken Sie an die Schule zurück. Sicherlich gab es Freaks. Sie waren neugierig, sie wollten lernen. Mit der Zeit haben sie sie natürlich bedrängt, aber das zeigt, dass diejenigen, die wütend waren, alles schneller begriffen und verstanden haben. Aber beide Lehrmethoden HABEN ein Recht auf Leben. Caesar an Caesar......Keine Beleidigung.......Ich will nicht abstreiten, dass ich ein Dummkopf bin, aber ich bin neugierig. >> nichts für ungut.

Wie kommen Sie darauf, dass ich wütend bin?

Das ist nur meine Art, zu erklären, dass

indem sie jedes Zeichen von Ungleichheit aufgreifen und

>> im Prüfgerät, können Sie eine positive

das Ergebnis mit irgendeinem Niveau, und es spielt keine Rolle, welches Niveau

positiv oder negativ. Und auf die Frage

ob Sie die Stufe mit oder ohne Minuszeichen nehmen wollen,

Leider gibt es keine klare Unterscheidung.

Grund der Beschwerde: