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

 

Guten Morgen, liebe Freunde. Bitte beraten Sie einen Anfänger, in welche Richtung er graben soll. Das Problem ist nicht gelöst. Die Quintessenz ist folgende:

Auf dem H4 durchbricht der Balken den Balken von unten nach oben, wo er tatsächlich schließt, und dies ist eine Kaufbedingung. Wir kaufen. Jetzt sollten wir einige Punkte, oder etwa zehn, zu schließen (alles war einfach und klar für mich bis zu diesem Moment) und gehen Rauch bis zum nächsten bar (das funktioniert nicht). Sobald eine Order geschlossen wird, wird eine neue eröffnet (die Bedingung ist immer noch erfüllt), wie kann man den Handel bis zum nächsten Takt vermeiden?

Die Lösung scheint einfach zu sein, ich fühle, dass sie mir nahe liegt, aber mir fehlt das Wissen (oder das Gehirn))). Ich muss zugeben, dass ich die 549 Seiten nicht gelesen habe, und falls jemand schon gefragt hat... Fluchen Sie nicht zu viel))))

Können Sie mir bitte helfen?

 

FAQ

 
Dankeschön
 
ex_kalibur:

Hallo, helfen Sie mir bitte, ich kann das Offensichtlichste nicht sehen((((

double LotsAllPos(int op) {

int i;

double ll=0;

for (i=0; i<OrdersTotal(); i++) {

if (OrderType()!=op) weiter;

if (OrderSymbol()!=sy) weiter;

if (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic+1) ll+=OrderLots();

}

zurück(ll);

hier muss ich das summierte Volumen nach meinem Symbol und nach Typ zurückgeben

for (i=0; i<OrdersTotal(); i++) {
 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
   if (OrderType()!=op) continue;

....
   }
 
Sepulca:


Ich danke Ihnen für Ihre Hilfe.
 

Können Sie mir sagen, was das Problem sein könnte? Die Variable newlots ist 0,2.

Wenn ich einen EA ausführe, druckt Print 1 zunächst eine Meldung, die besagt, dass 1 0,2, dann die Bedingung, eine Bestellung zu öffnen, ausgelöst wird, die Bestellung geöffnet ist, aber die Funktion Print 2, die ihr vorausgeht, zeigt nicht die Meldung, ich kann nicht herausfinden, warum es übersprungen wird, da die Bedingung ausgelöst wird und wenn die Bestellfunktion geöffnet ist, sollte die Funktion Print auch geschlossen werden. Außerdem wird im Protokoll nicht die Meldung angezeigt, dass die Bestellung abgeschickt wurde, die standardmäßig bei jedem Öffnen einer Bestellung angezeigt wurde.

Aber das ist noch nicht das Schlimmste, das Hauptproblem ist, dass die Variable newlots gleich 0,2 ist und der Auftrag mit 0,1 Volumen eröffnet wird, wie ist das überhaupt möglich, da es in der Funktion anstelle von Volumen als Variable newlots klar angegeben ist.

  Print("1 ",newlots);
  
  if(условие)
    {
    if(buytime != Time[0] && buys == 0 && sells == 0)
      {
      Print("2 ",newlots);
        if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)
          {
          buytime = Time[0];
          }
      }
    }

// пробовал даже вот так, в этом случае выводятся только первые два сообщение, причем значение выводится что newlots все таки равен 0.2, но третье сообщение
не выводится, и ордер открывается с лотом 0.1.


Print("1 ",newlots); - равен 0.2


Print("2 ",newlots); - равен 0.2

Print("3 ",newlots); - не выводится сообщение, и далее ордер открывается с лотом 0.1



Print("1 ",newlots);
  if(((Ask > (MA1+3*Point*a)) && (Open[0] < (MA1+3*Point*a)) && (Ask < (MA1+5*Point*a))) || ((Low[0] < (MA1+3*Point*a)) && (Bid > (MA1+3*Point*a)) && (Bid < (MA1+5*Point*a))))
    {
    Print("2 ",newlots);
    if(buytime != Time[0] && buys == 0 && sells == 0)
      {
      Print("3 ",newlots);
        if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)
          {
          buytime = Time[0];
          }
      }
    }

 
sss2019:

Können Sie mir sagen, was das Problem sein könnte? Die Variable newlots ist 0,2.

Wenn ich einen EA ausführe, druckt Print 1 zunächst eine Meldung, die besagt, dass 1 0,2, dann die Bedingung, eine Bestellung zu öffnen, ausgelöst wird, die Bestellung geöffnet ist, aber die Funktion Print 2, die ihr vorausgeht, zeigt nicht die Meldung, ich kann nicht herausfinden, warum es übersprungen wird, da die Bedingung ausgelöst wird und wenn die Bestellfunktion geöffnet ist, sollte die Funktion Print auch geschlossen werden. Außerdem wird im Protokoll nicht die Meldung angezeigt, dass die Bestellung abgeschickt wurde, die standardmäßig bei jedem Öffnen einer Bestellung angezeigt wurde.

Aber das ist noch nicht das Schlimmste, das Hauptproblem ist, dass die Variable newlots gleich 0,2 ist und der Auftrag mit 0,1 Volumen eröffnet wird; es kann passieren, weil es in der Funktion anstelle des Volumens klar angegeben ist, dass die Variable newlots.


Wo steht im Code die Eröffnung eines Auftrags? Wo ist OrderSend?

In dem von Ihnen gezeigten Abschnitt wird die Bedingung nicht ausgeführt, so dass Ihr Print 2 und folglich auch OrderSend in dieser Bedingung keinen Auftrag mit 0,2 Lot eröffnet.

Ein weiterer OrderSend wird gerade ausgeführt.

 
zxc:


Wo sonst im Code wird die Bestellung geöffnet? Wo gibt es OrderSend noch?

In dem von Ihnen gezeigten Abschnitt ist die Bedingung nicht erfüllt und daher wird Ihr Print 2 und damit auch der OrderSend in dieser Bedingung nicht geöffnet - es wird kein Auftrag mit Lot 0,2 geöffnet.

Ein weiterer OrderSend wird ausgeführt.


Jetzt geht's los.

if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)

Ich habe nur einen OrderSend in meinem EA, die Bedingung ist erfüllt und die Order wird mit einem unklaren Volumen eröffnet.

 

Können Sie mir sagen, in welchen Ordner ich einen EA ablegen soll, wenn er mit einem Set geliefert wird? Ich danke Ihnen.

 

Guten Tag!

Können Sie helfen, Lesen von Datei, gibt es eine Zeile (in der Regel wird es mehr sein, aber es spielt keine Rolle), es Schleifen, als ob es nicht sehen, das Ende der Datei...

int qq=0;
 while (FileIsEnding(h3)==false)
 {
  int uu=0;
  while (FileIsLineEnding(h3)==false)
  { 
    Histxmas[qq][uu]=StrToDouble(FileReadString(h3));
    Print("Histxmas[",qq,"][",uu,"]=",Histxmas[qq][uu]);
    uu+;
  }
  FileSeek(h3,0,SEEK_END);   
  qq++;
  Print("Бро зациклился, покажи мне кюкю",qq);
 }