[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 87

 
sergeev:

713
borilunad 15.01.2013 12:10

Könnten Sie bitte ein Rätsel lösen: Warum, wenn ich diese Funktion eingefügt habe || isCloseLastPosByTake() == True || begann der Experte im Testgerät sehr langsam zu werden, mal 10! Dies ist eine der 4 sich gegenseitig ausschließenden Bedingungen, so dass ich die if-Kette nicht wie bei summierten Bedingungen verwenden kann, um den Code schneller laufen zu lassen. Was können Sie mir raten? Ich danke Ihnen im Voraus für Ihren Rat!

Diese Funktion geht die Aufträge durch, um den letzten Abschluss zum Take-Wert zu finden. Überarbeiten Sie diese Funktion, um sie zu beschleunigen. Kims Funktion ist universell, d. h. Sie können sich vieler unnötiger Dinge entledigen. Auch hier hängt alles von der Logik Ihres Expert Advisors ab.
 

Können Sie mir bitte sagen, wie man Kaufaufträge eröffnet? Bedingungen für Verkaufsaufträgeif(OrdersTotal()==0&& ma0<ma1 && ma1<ma2). Ich verstehe, dass wireinen Schalterbenutzen müssen. Was soll ich anstelle von(x,a,b)schreiben?

if(AufträgeSumme()==0)

switch(x)case'a':Fall'b':

Vielen Dank im Voraus!


 
artmedia70:
Diese Funktion geht die Aufträge durch, um den letzten zum Zeitpunkt der Übernahme geschlossenen Auftrag zu finden. Überarbeiten Sie diese Funktion, um sie zu beschleunigen. In Kims Programm sind sie alle universell, was bedeutet, dass eine Menge unnötiger Dinge aus ihnen entfernt werden können. Auch hier hängt alles von der Logik Ihres Expert Advisors ab.
Herzlichen Dank! Ich dachte, dass ich einen Operator verwenden könnte, aber sie gehen nicht durch Fälle mit "oder" für ein und dieselbe Aktion.
 
KoOr:

Können Sie mir sagen, wie ich einen Kaufauftrag eröffne? Bedingungen für Verkaufsaufträgeif(OrdersTotal()==0&& ma0<ma1 && ma1<ma2). Ich verstehe, dass wireinen Schalterbenutzen sollten. Was soll ich anstelle von(x,a,b)schreiben?

if(AufträgeSumme()==0)

switch(x)case'a':Fall'b':

Vielen Dank im Voraus!




if(OrdersTotal()==0)
 {
  if( ma0<ma1 && ma1<ma2) OrderSend(....,OP_SELL,.......);
  if( ma0>ma1 && ma1>ma2) OrderSend(....,OP_BUY,.......);
 }
Es wird nur ein Auftrag eröffnet, nicht mehr, weder zum Verkauf noch zum Kauf.
 

Ich habe den ganzen Tag damit zu kämpfen, zu verstehen, warum die Funktion -1 zurückgibt

int typ(string t, int m)
{  datetime z=0 ; int p=-1,i;
   int d=OrdersHistoryTotal();
   if ( t=="0") t=Symbol(); 
   for( i=0;i<=d;i++){
   if ( OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ) {                     
   if ( (OrderSymbol() == t || t=="0" ) && ( OrderMagicNumber() == m || m==-1 ) ){
   if ( OrderCloseTime()>z&&OrderType()<=1)  
   {
   z =OrderCloseTime(); 
   p =OrderType();
   }}}}
return(p);
} 

Der Aufruf geht folgendermaßen

Comment(typ("0",-1));

Alle Bestellungen sind in der Geschichte !

Worin kann der Fehler liegen?

 
VOLDEMAR:

Ich habe den ganzen Tag damit zu kämpfen, zu verstehen, warum die Funktion -1 zurückgibt

Der Aufruf geht folgendermaßen

Alle Bestellungen sind in der Geschichte !

Worin kann der Fehler liegen?



Comment(typ(Symbol(),-1));
Es gibt keine "0", es gibt "EURUSD", "AUDUSD" usw.
 
Sepulca:


Es gibt kein solches Symbol "0", es gibt "EURUSD", "AUDUSD" usw.

Wenn es kein solches Symbol gibt if ( t=="0") t=Symbol(); dann wird t gleich unserem Symbol, an das der EA angehängt ist;
 
aber wie kann es sein, dass die Bedingung if DayOfWeek( ) ==1 ... ...an einem Dienstag erfüllt werden würde?
 
VOLDEMAR:

Wenn es kein solches Symbol gibt if ( t=="0") t=Symbol(); dann wird t gleich unserem Symbol, an das der EA angehängt ist;

Tut mir leid, ich habe es nicht bemerkt... Dann ist es hier:

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

Die letzte Bestellnummer ist OrdersTotal()-1; Aber das ist nicht der Punkt. Ich habe es versucht, es stellt sich heraus, dass die Historie der geschlossenen Aufträge im Tester nicht sichtbar ist, auf dem Demokonto funktioniert Ihr Code.

 

Ich habe das, was Sie geschrieben haben, nicht in meinem Code.

Das tue ich.

int d=OrdersHistoryTotal();

und sie geht zuerst durch...

Nun, das macht nichts, ich habe das Problem an anderer Stelle im Code gefunden ....

Grund der Beschwerde: