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

 
rapid_minus:

Bitte klären Sie mich auf, ich bin völlig verwirrt:

Ich habe ein Skript gefunden, das Aufträge mit Gewinn oder mit Minus schließt, aber ich verstehe die Logik nicht - in externen Variablen wird bool close_only_profit_orders=false gesetzt, und dann wird es in f-i start durch Negation geprüft: if(OrderType()==OP_BUY && (!close_only_profit_orders || order_prof>0). Das heißt, wenn sie nicht falsch ist oder es Aufträge mit Gewinn gibt, dann folgt die Funktion OrderClose(). Aber nirgendwo im Code gibt es eine Bedingung dafür, dass die Variable close_only_profit_orders wahr wird. Wozu ist es dann gut?


Mit dieser Variable ist nichts zu finden. Dies ist ein Hirngespinst des Programmierers; nur der Entwickler weiß, was in Ihrem EA ist. Ich kann nur spekulieren, aus welchem Grund dies geschehen kann und wie man es überprüfen kann. Ich habe gerade einen EA kennengelernt, der dummerweise alle Aufträge für alle Paare geschlossen hat, bevor er zu arbeiten begann. Nun, das ist ein Hirngespinst des Programmierers. Wenn Ihr Expert Advisor also so funktioniert, wie er sollte, müssen wir nachsehen, wo er geschrieben wurde, um Aufträge zu schließen und aus welchem Grund. Vielleicht helfen verschiedene Magier.
 

Bitte helfen Sie, das Problem zu lösen.

int n1=.....;

int n2=.....;

M1[i]=iMA(NULL,0,n1,n2,MODE_SMA,PRICE_CLOSE,i);

Ich zeige die Werte von n1 und n2 im Kommentar an, die Werte sind korrekt, aber die Maus wird nicht korrekt gezeichnet, nicht auf dem gesamten Diagramm. Wenn ich jedoch die Werte von n1 und n2 von Hand anstelle dieser Variablen eingebe, wird alles so gezeichnet, wie es sein sollte. Ich verstehe nicht, wie das möglich ist, wenn die Werte der Variablen korrekt sind? Wie kann ich erreichen, dass das Diagramm mit einem Versatz nach rechts gezeichnet wird? Jetzt wird sie nur noch bis zum Null-Balken, d.h. dem aktuellen, gezeichnet.

 
Alexandr24:

Bitte helfen Sie, das Problem zu lösen.

int n1=.....;

int n2=.....;

M1[i]=iMA(NULL,0,n1,n2,MODE_SMA,PRICE_CLOSE,i);

Ich zeige die Werte von n1 und n2 im Kommentar an, die Werte sind korrekt, aber die Maus wird nicht korrekt gezeichnet, nicht auf dem gesamten Diagramm. Wenn ich jedoch die Werte von n1 und n2 von Hand anstelle dieser Variablen eingebe, wird alles so gezeichnet, wie es sein sollte. Ich verstehe nicht, wie das möglich ist, wenn die Werte der Variablen korrekt sind? Wie kann ich erreichen, dass das Diagramm mit einem Versatz nach rechts gezeichnet wird? Jetzt wird sie nur noch bis zum Null-Balken, d.h. dem aktuellen, gezeichnet.

Wenn n1 nicht gleich dem Wert der TF ist, verstehe ich, warum sie nicht richtig gezeichnet wird. Aber eine Verschiebung nach rechts ergibt n2 plus! Geprüft!
 
borilunad:
Wenn n1 nicht gleich dem TF-Wert ist, dann verstehe ich, warum es nicht richtig gezeichnet wird. Und die Verschiebung nach rechts ergibt n2 mit Minus.

Ich verstehe nicht, was TF damit zu tun hat, n1 ist der Mittelungszeitraum für die Berechnung des Indikators. Ich habe eine gute Idee, was ich damit machen soll, ich bin nicht sicher, was ich damit machen soll, aber ich bin nicht sicher, was ich damit machen soll.

UPD. Ich habe 0 anstelle von n2 gesetzt und die Verschiebung wird gut wiedergegeben, aber n1 ist ein bisschen seltsam :(

 
double  iMA(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   int          ma_period,        // период - n1    
   int          ma_shift,         // сдвиг средней - n2
   int          ma_method,        // метод усреднения
   int          applied_price,    // тип цены
   int          shift             // сдвиг
   );

Das ist richtig! Ich bin derjenige, der es falsch gemacht hat, aber warum sollte es nicht funktionieren, wenn man es richtig macht?!

 
borilunad:

Das ist richtig! Ich bin derjenige, der im Unrecht ist, aber warum sollte es nicht funktionieren, wenn man es richtig macht?!

Ja, dieses Paradoxon verwirrt mich auch. Wenn ich das Terminal neu starte, wird der Wagen so gerendert, wie er sein sollte, aber jedes Mal neu zu starten ist lästig.

UPD Ich habe das Problem gelöst, indem ich die rechte Taste drücke und "Aktualisieren" aus dem Menü auswähle, aber wenn ich im Code auf "Kompilieren" drücke, ist die Zeichnung nicht perfekt... aber das ist eine Kleinigkeit, ich werde einfach aktualisieren :))

 
Alexandr24:

Dieses Paradoxon verwirrt mich auch. Wenn ich das Terminal neu starte, wird der Wagen so gezeichnet, wie er sein sollte, aber es ist lästig, ihn jedes Mal neu zu starten.

UPD Das Problem wurde gelöst, indem ich mit der rechten Maustaste klickte und "Aktualisieren" im Menü auswählte, aber wenn ich im Code auf "Kompilieren" drücke, wird der Wagen falsch gezeichnet... aber das ist ein kleines Problem, ich werde einfach aktualisieren :))

Zeigen Sie mir den Code, nicht nur Bruchstücke
 

Ich habe es selbst herausgefunden, danke für Ihren Beitrag :)

 
Grüße an ALLE!
Ich habe im Forum und im Internet gesucht - ich konnte es nicht finden. Deshalb habe ich eine Frage an Sie:

1. Ein EA eröffnet (basierend auf dem Crossover mit dem MA) mehrere (3) Marktaufträge zum gleichen Preis (z.B. BUY bei 1,1180).

Vor dem Überschreiten des MA handelte es sich bei den Aufträgen um Kauf-Stopp-Aufträge.

2. Dann sollte der Expert Advisor diese drei Takeprofit-Aufträge auf unterschiedliche Niveaus setzen (sie werden nur bestimmt, wenn sie den MA schneiden, gemäß dem Standard-Fibo-Indikator)

Gehen wir davon aus, dass diese Ebenen wie folgt sind:
Ur1 = 1.1200
Ur2 = 1,1220
Ur3 = 1,1240

Und nun eine Frage:
Wie kann man diese definierten Ebenen für die offenen Aufträge festlegen?

Ich habe eine solche Konstruktion im Forum gefunden (siehe unten), aber mir fällt nichts weiter ein. Wenn ich mir nicht sicher bin, wonach ich suche, hätte ich gerne ein paar Tipps, wie ich das machen kann.
Ich brauche einen weiteren Zähler? Aber wie? Oder muss ich Arrays, Majicies oder ... verwenden? ????

double Ur1 = 1.1200
double Ur2 = 1.1220  
double Ur3 = 1.1240
for(int i=OrdersTotal()-1;i>=0;i--) 
{
   if(OrderSelect(i, SELECT_BY_TICKET, MODE_TRADES)==false) continue;
   if(OrderSymbol()!=Symbol()) continue;
      if(OrderType()!=0) continue;
                   
   // вот тут мы можем работать с нашим ордером
   
   if (OrderTicket() = ???? );
 
 bool mod_Buy1 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur1,0,clrNONE);
 bool mod_Buy2 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur2,0,clrNONE);
 bool mod_Buy3 = OrderModify (OrderTicket(???),OrderOpenPrice (), NULL,Ur3,0,clrNONE);


}  

 
vadimvborisov:
Wie platzieren Sie die offenen drei Aufträge auf diesen gegebenen Niveaus?

1. Was hindert Sie daran, die entsprechenden TPs für die Aufträge zu setzen, wenn sie geöffnet werden?
2. Was ist dieses mod_Buy1/2/3? - Verstehen Sie den Zweck des oben genannten For-Zyklus?