[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 476

 
Wenn Sie es brauchen, werde ich auch die JMA posten. Name des Indikators in JMA[i] ändern
Dateien:
jmaxvib.mq4  11 kb
 
for(i = 0; i < limit; i++)
     {
       if(dBuffer[i+1]>80 && dBuffer[i]<80) DN[i] = 70; Fd=-1; Fu=0;               //пересекла 80   --> 1
       if(dBuffer[i+1]<20 && dBuffer[i]>20) UP[i] = 30; Fu=1;  Fd=0;               //пересекла 20   --> 1
       
       if(dBuffer[i+1]>rsi[i+1] && dBuffer[i]<rsi[i]) dn[i] = 60; fd=-1; fu=0;     //пересечение двух  -->  2
       if(dBuffer[i+1]<rsi[i+1] && dBuffer[i]>rsi[i]) up[i] = 40; fu=1;  fd=0;     //пересечение двух     -->  2
       
       if(Fd==-1 && fd==-1) dot[i]=90; Fd=0; Fu=0; fd=0; fu=0;
       if(Fu==1 && fu==1)   dot[i]=10; Fd=0; Fu=0; fd=0; fu=0;

Sie gehen durch die Balken von der aktuellen Zeit zur vergangenen Zeit.

Das Array wird bis zum letzten Eintrag durchsucht.

Daher geben alle Variablen Werte für den jüngsten Fall an (in diesem Fall - vor langer Zeit).

Daher müssen Sie einen Lookup von der Vergangenheit bis zur Gegenwart durchführen.

for(i = limit; i >= 0; i--)
Und die Variablen
int fd, fu,Fd, Fu;

auf der obersten Ebene deklarieren, d.h. vor Start und Init.

Und es ist nicht nötig, sie beim Start zu nullen. Lassen Sie die Nullstellung nur an der Stelle zu, an der Sie sie eingestellt haben.

if(Fd==-1 && fd==-1) dot[i]=90; Fd=0; Fu=0; fd=0; fu=0;
       if(Fu==1 && fu==1)   dot[i]=10; Fd=0; Fu=0; fd=0; fu=0;
 
rlx Danke, Vce funktioniert.
 
PapaYozh:


Erstens kommt OrderSend() dort 2 Mal vor, und beide Male außerhalb der von Ihnen angegebenen Bedingung.

Zweitens wird ein nicht normalisierter Preis an OrderSend() übergeben.

Drittens: Analysieren Sie das von der Funktion OrderSend() zurückgegebene Ergebnis, schreiben Sie im Falle von Fehlern beim Öffnen/Ändern/Schließen der Bestellung eine Meldung in das Protokoll und analysieren Sie das Protokoll.


Kann jemand die korrigierte Version von Experiment 1 veröffentlichen?
 

Guten Tag!

Vielen Dank für Ihre Antworten - Sie waren sehr hilfreich ))))

Leute! Der Expert Advisor schließt Geschäfte ab, wenn sich die beiden Muwings kreuzen. Und wenn sie sich wieder kreuzen, werden die Geschäfte geschlossen und in die entgegengesetzte Richtung eröffnet, wodurch Gewinne verloren gehen.

1. Wie schreibe ich, dass er Geschäfte abschließt, wenn die Linien gerade erst zusammenlaufen? Und es würde nicht ein neues Geschäft in der gleichen Richtung eröffnen, sondern würde warten, wenn sie in die entgegengesetzte Richtung kreuzen?

2. oder ein Geschäft zu schließen, wenn der r.c.i. bei einem Kauf die 80er-Marke nach unten und bei einem Verkauf die 20er-Marke nach unten kreuzt. Und wenn ein Geschäft geschlossen wird, wird, wenn die Bedingungen erfüllt sind, kein neues Geschäft in derselben Richtung eröffnet, sondern abgewartet, bis sie sich in der entgegengesetzten Richtung kreuzen?

Wenn es ähnliche Themen im Forum gibt, geben Sie mir bitte einen Link!

Vielen Dank im Voraus!

Viel Spaß beim Handeln!

Gewinnbringende Geschäfte!

 

Hallo zusammen!

Bitte sagen Sie mir, was das bedeutet:

Kaufauftrag ...... fehlgeschlagen [Zeitüberschreitung beim Handel]

Besonders interessiert mich, was diese Zeitüberschreitung ist

 
smartemiy:

Guten Tag!

Vielen Dank für Ihre Antworten - Sie waren sehr hilfreich ))))

Leute! Der Expert Advisor schließt Geschäfte ab, wenn sich die beiden Muwings kreuzen. Und wenn sie sich wieder kreuzen, werden die Geschäfte geschlossen und in die entgegengesetzte Richtung eröffnet, wodurch Gewinne verloren gehen.

1. Wie schreibe ich, dass er Geschäfte abschließt, wenn die Linien gerade erst zusammenlaufen? Und es würde nicht ein neues Geschäft in der gleichen Richtung zu öffnen, sondern wartete, bis sie in die entgegengesetzte Richtung kreuzen?

2. oder ein Geschäft zu schließen, wenn der r.c.i. bei einem Kauf die 80er-Marke nach unten und bei einem Verkauf die 20er-Marke nach unten kreuzt. Und wenn ein Geschäft geschlossen wird, wird, wenn die Bedingungen erfüllt sind, kein neues Geschäft in derselben Richtung eröffnet, sondern abgewartet, bis sie sich in der entgegengesetzten Richtung kreuzen?

Wenn es ähnliche Themen im Forum gibt, geben Sie mir bitte einen Link!

Vielen Dank im Voraus!

Viel Spaß beim Handeln!

Gewinnbringende Geschäfte!


https://www.mql5.com/ru/code hat ein ganzes Lager voller ähnlicher Exemplare.
 
Eine weitere Frage: Mit welcher Funktion lassen sich die Kosten pro Werkzeugpunkt ermitteln?
 
PapaYozh:


Erstens kommt OrderSend() dort 2 Mal vor und beide Male außerhalb der von Ihnen angegebenen Bedingung.

Ich will aber keine Nervensäge sein.

if(OrdersTotal()>0&&tral>0&&OrderMagicNumber()==MAGIC&&(OrderType()==OP_SELL||OrderType()==OP_BUY)){
     if(ObjectFind(NamePrice)==-1)
      {
        ObjectCreate(NamePrice,OBJ_HLINE,0,0,Ask);
        ObjectSet(NamePrice,OBJPROP_COLOR,LineColor);
      }
      double n= ObjectGet( NamePrice, OBJPROP_PRICE1); 
      double p1= ObjectGet( NamePrice1, OBJPROP_PRICE1);
      double p2= ObjectGet( NamePrice2, OBJPROP_PRICE1);
//....................................................................... 
      double d= AccountEquity()-AccountBalance();                 
       if(ObjectFind(NamePrice1)==-1&&d>0)
      {       
        ObjectCreate(NamePrice1,OBJ_HLINE,0,0,n+d*Point*10);
        ObjectSet(NamePrice1,OBJPROP_COLOR,LineColor1);
      }
      if(n+d*Point*10>p1)ObjectSet(NamePrice1,OBJPROP_PRICE1,n+d*Point*10);
      if(ObjectFind(NamePrice2)==-1&&n+d*Point*10<p1)
      {       
        ObjectCreate(NamePrice2,OBJ_HLINE,0,0,n+d*Point*10);
        ObjectSet(NamePrice2,OBJPROP_COLOR,LineColor2);
      } 
      if(p2!=n+d*Point*10)ObjectSet(NamePrice2,OBJPROP_PRICE1,n+d*Point*10);  
      if(nb+ns==2&&tral<20&&p1-p2>=(p1-n)/tral&&p2>n&&p2-n>dohod*Point/10)CloseALL(); 
      if(nb+ns==2&&tral>20&&p1-p2>=tral*Point&&p2>n)CloseALL();  
      }
//..........................................................................
    if(ob==0||OrderOpenTime()<iTime(Symbol(),TF,0))
       { 
     
      if( R==1&&zb==0&&C1>O1&&iVolume(Symbol(),TF,0)<2)
         {
         if(ob==0||OrderOpenTime()<iTime(Symbol(),TF,0))
         {
         OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+dist*Point,3,0,0,"ko",MAGIC,TimeCurrent()+60*experation,Green);
         }
         }
      
      }
    if(os==0||OrderOpenTime()<iTime(Symbol(),TF,0))
        {      
      if(R==1&&zs==0&&C1<O1&&iVolume(Symbol(),TF,0)<2)
        {        
         if(os==0||OrderOpenTime()<iTime(Symbol(),TF,0))
         {
         OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-dist*Point,3,0,0,"ko",MAGIC,TimeCurrent()+60*experation,Red);
         }
         }
      return(0);
     }
   

   
  }

Erklären Sie mir, wie ein Auftrag geöffnet wird, wenn OrderTotal() Null ist.

Ich danke Ihnen.

 

Bitte sagen Sie mir, welcher Code in den EA geschrieben werden sollte, damit der EA nur einmal pro Stunde handelt

Zum Beispiel hat der EA ausgelöst, eine Bestellung geöffnet ist (nicht daran interessiert, weiter), möchte ich die Bestellung nicht auf dem aktuellen Bar auf eine Stunde Zeitrahmen öffnen

alles sieht in etwa so aus

int hh;
int CurrentHour;
CurrentHour=TimeHour(TimeCurrent());
if (CurrentHour!=hh)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-3*Point,Bid+3*Point);
hh=TimeHour(TimeCurrent());
}

aber ich habe unzählige Aufträge offen

Grund der Beschwerde: