Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 206

 
mikhail12:

Wenn Sie jedoch wieder eröffnen, wird die Position um den Betrag des Spreads reduziert.

Nun, das wäre eine besonders schöne Perversion. Das glaube ich nicht.
 
tara:

Nun, das wäre eine besonders elegante Perversion. Das glaube ich nicht.

Ja, ich habe das schon überprüft, glaube ich... wenn es nicht so wäre, könnte man einen Verkauf von Israeli in einem islamischen Konto und einen Kauf in einem Spread-Konto führen. Es gäbe stabile Gewinne... mehr als auf der Bank
 

1. Situation der teilweisen Schließung einer Bestellung - das Ticket wird geändert, und in den Kommentar zur neuen Bestellung geschrieben, ist es klar, es kann erreicht werden.
2.Wie verhält sich das Ticket in diesem Fall, wenn einige Broker eine Position über Nacht/Wochenende übertragen, die Position schließen und sie zu Beginn des Tages wieder öffnen? Das alte Ticket wird in den Kommentar der neuen Position geschrieben, nichts passiert? Wie kann man den Überblick über die Aufträge behalten, wenn es mehr als 4-8 sind?

 
Vladislav: Du hättest den Beitrag löschen sollen, denke ich.
 
artmedia70:


datetime ist dasselbe wie int



Hat mich zum Nachdenken gebracht - ich war sicher, datetime war ein unsigned int, ich habe es überprüft und du hattest Recht. Es stellt sich heraus, dass MT4 nicht länger als bis 2038 leben wird ;). Es ist noch Zeit )))))))))))))))))))))))).
 
tara:
Vladislav: Du hättest den Beitrag nicht löschen sollen, finde ich.


Nicht umsonst, IMHO, natürlich: datetime ist wirklich int. Zwar ist alles Geschriebene im Allgemeinen richtig, aber nicht in diesem Fall. Hier kann ich die Logik der ICL-Entwickler nicht verstehen (((((((((((((. Vielleicht wird dies in einer neuen Version der Sprache korrigiert.

SZ: Die Bedeutung des gelöschten Beitrags war, dass Typen wie vorgesehen verwendet werden sollten, da sonst Laufzeitfehler auftreten können. In diesem Fall ist es besser, datetime und nicht int zu verwenden, denn es besteht die Hoffnung, dass die Nichtübereinstimmung der Typen korrigiert wird.

 
VladislavVG:


Nicht umsonst, IMHO, natürlich: datetime ist wirklich int. Obwohl alles, was geschrieben wurde, im Allgemeinen richtig ist, aber nicht in diesem Fall. Ich kann die Logik der ICL-Entwickler hier nicht verstehen (((((((((((((. Vielleicht wird dies in einer neuen Version der Sprache korrigiert.

SZ: Die Bedeutung des gelöschten Beitrags war, dass Typen wie vorgesehen verwendet werden sollten, da es sonst zu Laufzeitfehlern kommen kann. In diesem Fall ist es für date besser datetime, aber nicht int, denn es besteht die Hoffnung, dass die Nichtübereinstimmung der Typen korrigiert wird.


Ich stimme zu, wir sollten nicht int anstelle von datetime, oder Farbe. nicht einmal wegen der Ausführung Fehler, aber von dem, was passieren wird, wenn die Entwickler die Dinge in Ordnung zu bringen.
 
VladislavVG:


Nicht umsonst, IMHO, natürlich: datetime ist wirklich int. Obwohl alles, was geschrieben wurde, im Allgemeinen richtig ist, aber nicht in diesem Fall. Ich kann die Logik der ICL-Entwickler hier nicht verstehen (((((((((((((. Vielleicht wird dies in einer neuen Version der Sprache korrigiert.

SZ: Die Bedeutung des gelöschten Beitrags war, dass Typen wie vorgesehen verwendet werden sollten, da es sonst zu Laufzeitfehlern kommen kann. In diesem Fall ist es für date besser datetime, aber nicht int, denn es besteht die Hoffnung, dass die Nichtübereinstimmung der Typen korrigiert wird.

Ja. Sie versprachen 8 Bytes wie in MQL5. Ich vermute, es wird der Typ __time64_t (UNIXTIME64) sein.
 
solnce600:

Meine Herren Fachleute.... Ich bin verwirrt

TarasBY undartmedia70 sagen, dass mein Fehler mit dem Wert der Variablen zusammenhängt, die die magische Zahl der Bestellung speichert


Vinin sagt,es gehe nicht um magische Zahlen, sondern um falsche Logik......... artmedia70 widerspricht ihm

.

Wenn sich die Fachleute nicht auf mein Problem einigen können, was sollte ich als Anfänger tun, um mein Problem zu lösen?


Der Fehler mit dem Magier führt dazu, dass Ihr EA nicht sieht, dass seine Position auf einem Stop geschlossen ist, wenn er auf einem Stop schließt. Und warum? Die Antwort ist, dass Sie eine Position mit magic 123 eröffnen und die Variable Magic an die Funktion senden, die prüft, ob die Position am Stop geschlossen wird. Was meinen Sie, was es bei der impliziten Initialisierung bedeutet? Null. Die Funktion sucht natürlich nach Positionen mit der magischen Zahl 0 und diese ist gleich 123 in Ihren Positionen. Und wir streiten uns nicht, nur... ...Argumentation... Überprüfen Sie die Reaktion auf die Schließung der Haltestelle:


double   Lot;
int      Magic=123;

int start() {

   double Price=iOpen(Symbol (),0,0);
          
   int last_order_bar=0; 
   int ot=OrdersTotal();
   if (ot>0) {
      if (OrderSelect(ot-1,SELECT_BY_POS))
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) last_order_bar=iBarShift(Symbol(),0,OrderOpenTime()); 
      }                                    

   int last_hist_order_bar=0;   
   int oht=OrdersHistoryTotal(); 

   if (oht>0) { 
      if (OrderSelect(oht-1,SELECT_BY_POS, MODE_HISTORY))    
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) last_hist_order_bar=iBarShift(Symbol(),0,OrderOpenTime());
      }

   if (ot==0)
      if (Bid==Price)
  //=============================================================== 
         if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
            if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
               if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
  //============================================================
                  Lot=MarketInfo(Symbol(), MODE_MINLOT);   
                  if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot)) {
                     Lot=Lot*2;
                     OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
                     }
                  else {
                     Lot=0.1;        
                     OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
                     }
   return(0);
}
//+----------------------------------------------------------------------------+
bool isCloseLastPosByStop(string sy, int op, int mn, double &ll) {
   double   pt;
   int      dg, i, j=-1, k=OrdersHistoryTotal()-1;
   datetime t=0;                                   // во избежание возможных ошибок после возможных будущих улучшений
   for (i=k; i>=0; i--) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
         if (OrderMagicNumber()!=mn)   continue;   // если магик не тот, переходим к следующему
         if (OrderSymbol()!=sy)        continue;   // если символ не тот, переходим к следующему
         if (OrderType()!=op)          continue;   // если тип не тот, переходим к следующему
         if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
   if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
      dg=MarketInfo(OrderSymbol(), MODE_DIGITS);      // количество знаков в цене символа ордера
      pt=MarketInfo(OrderSymbol(), MODE_POINT);       // размер пункта инструмента в валюте котировки ордера
      if (MathAbs(OrderClosePrice()-OrderStopLoss())<0.5*pt) { // Если закрыт по стопу
         ll=OrderLots();                              // записываем количество лотов в ордере, закрытом по стопу
         return(true);                                // возвращаем истину
         }
      }
   return(False);                                     // возвращаем ложь (позиции нету, либо не по стопу)
}
//+----------------------------------------------------------------------------+

Ich habe mir den Rest Ihrer "toten" EA-Logik nicht angeschaut - ich habe Ihnen geholfen, die Funktion zum Prüfen des Schließens beim Stoppen herauszufinden...

 
tara:

Bitte sehr. Viel Glück!

Alexej! Guten Tag!

Unsere Kommunikation geht mir nicht aus dem Kopf...... und hier ist der Grund.....

In Bezug auf meine Kodierung habe ich wiederholt Kommentare über den Mangel an Logik gehört.

Gestern haben Sie mir die Boolesche Algebra erklärt, ein umfangreiches und tiefes Thema.

Tatsache ist, dass ich kein Mathematiker bin und schon gar kein algebraischer Geist.

Einige nicht sehr schwierige mathematische Dinge verstehe ich.... aber nicht auf Anhieb, und komplexe Dinge nimmt mein Gehirn überhaupt nicht wahr.

Vor über sechs Monaten, bevor ich mit dem Studium des MCL-Programmierlehrbuchs begonnen habe, habe ich mich gefragt

ob ich es ohne mathematische Fähigkeiten verstehen könnte.

Aber Herr Kozlov sagte im Vorwort zu seinem Lehrbuch, dass es eigentlich viel einfacher ist, als es auf den ersten Blick aussieht.

auf den ersten Blick.

Und tatsächlich denke ich, dass ich 60-70% seines Tutorials jetzt verstehen kann (wahrscheinlich nicht zum ersten Mal) und als Ergebnis kann ich bereits etwas programmieren.

Bis gestern schien es mir, dass all die komplexen mathematischen Berechnungen (die ich nicht verstehen kann) das Programm macht, und ich muss nur die Regeln kennen, nach denen

das Programm funktioniert und führt die Berechnungen durch.

Aber unser gestriges Gespräch hat mich auf die Idee gebracht, dass meine Codes ohne Logik sein werden, wenn ich nicht Boolesche Algebra lerne.

Wenn meinen Codes die boolesche Logik fehlt, werden meine Programme nicht richtig oder gar nicht funktionieren.

Aber ich habe gestern einen Blick auf Wikipedia geworfen und festgestellt, dass Boolesche Algebra und wahrscheinlich auch Logik nichts für meinen Verstand sind!

Gestern haben Sie bei einem flüchtigen Blick auf ein Fragment meines Codes schnell festgestellt, dass es ihm an boolescher Logik fehlt.

Wenn es Ihnen nichts ausmacht, könnten Sie bitte den Verlauf Ihrer Argumentation erläutern, die Ihrer Schlussfolgerung über die fehlende Logik in diesem Fragment vorausging.

Wenn ich es verstehe, werde ich weitermachen. Wenn ich das nicht verstehe....., werde ich wahrscheinlich zu dem Schluss kommen, dass Programmieren etwas ist, das meine Fähigkeiten weit übersteigt.

Ich danke Ihnen.

wenn (ot==0)
wenn (Gebot==Preis)
if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))