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

 
webip:
Leute, bitte helft mir. Es ist jetzt 5 Tage her und ich kann es nicht herausfinden. Ich habe meinen EA so gestaltet, dass er die Stop-Loss-Order ändert, wenn die notwendigen Kriterien ausgelöst werden. Und Stop-Loss - das sollte gesetzt werden, Take-Profit der letzten geschlossenen Bestellung. Aber wenn die Änderung beginnt, setzt der Roboter immer einen Stop Loss von 1,0000. Ich verstehe nicht, was los ist. Ich habe mir bereits das Hirn zermartert. Hat jemand eine Variante, wie man den Take Profit der vorherigen Order nimmt und den Stop Loss der aktuellen Order setzt?

Na ja... sieht es so aus, als ob Sie es in einer Variablen des Typs int speichern, während Sie es als double haben wollen.

Der Take der aktuellen Order muss nicht unbedingt auf den Stop-Loss der vorherigen Order gesetzt werden. Es kann sich an einem Ort befinden, an dem es nicht sein sollte.

 
artmedia70:

Na ja... Es sieht so aus, als ob Sie ihn in einer Variablen vom Typ int speichern, während Sie ihn in double speichern sollten.

Und es ist nicht unbedingt so, dass man die aktuelle Aufnahme an die Stelle der vorherigen setzen kann... Es kann sich an einem Ort befinden, an dem es nicht sein sollte.


aber es ist der Ort, an dem Sie es ablegen können. Ich dachte auch zuerst, ich hätte mir die falsche Schriftart gemerkt, aber dann habe ich nachgesehen und es war in Ordnung.
 
webip:
aber es geht darum, wo man es unterbringen kann. Ich dachte auch zuerst, ich hätte mir die falsche Schriftart gemerkt, aber dann habe ich nachgesehen und es war in Ordnung.

Speichern Sie ihn in einer Double-Variablen. Wahrscheinlich speichern Sie den Preis in einer Int-Variablen, so dass die Nachkommastellen abgeschnitten werden.
 
artmedia70:
Speichern Sie ihn in einer Double-Variablen, wahrscheinlich speichern Sie den Preis in einer Int-Variablen, so dass die Nachkommastellen abgeschnitten werden.


Ich habe es noch einmal überprüft. Ich habe nichts verstanden, aber alle Variablen sind an ihrem Platz. Das einzige Problem ist nun, dass der Strategy Tester Chart einfach einfriert, wenn das Kriterium für die Änderung einer Order ausgelöst wird. Was sollte ich tun? Ich glaube, wir haben uns alles doppelt gemerkt.
 
webip:

Ich habe es noch einmal überprüft. Ich habe nichts verstanden, aber alle Variablen sind an ihrem Platz. Das einzige Problem ist nun, dass das Diagramm des Strategietesters einfach einfriert, wenn das Kriterium für die Änderung einer Order ausgelöst wird. Was sollte ich tun? Ich glaube, wir haben uns alles zu zweit gemerkt.

Vergessen, den Kühlschrank in der Küche abzuschließen :)

Nun, was kann ich Ihnen sonst noch an dieser Stelle sagen?

Etwa so? Oder sind Sie sicher, dass Sie die Preise in einer Variablen vom Typ double speichern?

 
artmedia70:

Sie haben vergessen, den Kühlschrank in der Küche abzuschließen :)

Nun, was kann ich Ihnen sonst noch über das Nötigste erzählen?



Nein. Der Kühlschrank ist geschlossen. :))

Ich weiß nicht, was das Problem ist. Ich habe alle Variablen korrekt eingegeben. Hier ist die Stelle, an der sie geändert wird. Vielleicht verstehen Sie dann, was das Problem ist.

int modify_2(int tip)
 {

 int ticket;  //номер ордера
 double 
 price,   //Цена открытия
 tp;     //Новое значение цены
 double ts;
 bool modify=false;
 double take;
 
  for(int n=1;n<=OrdersTotal();n++)
   {
    ticket=mas_ord[n][1];
    if(mas_ord[n][4]!=tip)
     continue;
    price=mas_ord[n][6];
    tp=mas_ord[n][2];                          
    
    switch(tip)
     {

      case 0:
     OrderSelect(1,SELECT_BY_POS,MODE_HISTORY);
      take=OrderTakeProfit();
       ts=take;
       modify=true;
       break;
      
      case 1:
       ts=Ask+Level_sell_138*Point;
       modify=true;        
     } 
    //--------------
    if(modify==false)
     continue;
    
    bool ans=OrderModify(ticket,price,ts,tp,0);
    
    if(ans==false)
     { 
      n--;
     }
     else ord_2=true;
   }
   return;
 }
 
webip:


Nein. Der Kühlschrank ist geschlossen. :))

Ich weiß nicht, was das Problem ist. Ich habe alle Variablen korrekt eingegeben. Hier ist der Teil, in dem die Änderungen vorgenommen werden. Vielleicht können Sie herausfinden, was das Problem ist.

Ist das aus einem Lehrbuch oder so?

for(int n=1;n<=OrdersTotal();n++)

Sie werden die Befehle wie folgt außer Kraft setzen:

for(int n=0;n<OrdersTotal();n++)

Dementsprechend wird der Rest der Arrays schweben...

Ich würde nach dem letzten abgeschlossenen Auftrag suchen, indem ich versuche, die Historie zu durchsuchen, nicht indem ich explizit auf 1 zeige

Und so weiter und so fort ... Ich kann nicht weiter suchen - erstens ist es ohne Code-Integrität unwahrscheinlich, dass es hilft, und zweitens ist es sieben Uhr morgens und ich bin noch nicht einmal ins Bett gegangen...

 
webip:


Nein. Der Kühlschrank ist geschlossen. :))

Ich weiß nicht, was das Problem ist. Ich habe alle Variablen korrekt eingegeben. Hier ist der Teil, in dem die Änderungen vorgenommen werden. Vielleicht können Sie herausfinden, was das Problem ist.

Versuchen Sie, das Doppelte zu erreichen! Das kann nicht schaden, könnte aber helfen, das Problem zu lösen.
 
artmedia70:

Ist das aus einem Lehrbuch?

Sie müssen die Aufträge auf diese Weise überlaufen:

Dementsprechend wird der Rest der Arrays schweben...

Ich würde nach dem letzten abgeschlossenen Auftrag suchen, indem ich versuche, die Historie zu durchsuchen, nicht indem ich explizit auf 1 zeige

Und so weiter ... Ich kann nicht weiter suchen - erstens würde es mir ohne Code-Integrität kaum helfen, und zweitens ist es 7 Uhr morgens und ich bin noch nicht einmal ins Bett gegangen...



Es hat auch mit dieser Überschreitung gut funktioniert. Und die letzte geschlossene Bestellung habe ich direkt darauf gerichtet, herauszufinden, ob das Programm überhaupt gut funktioniert (und es funktioniert wie Scheiße). Und da ich im Tester teste (und ich weiß, dass die Bestellung, für die ich mich interessiere, zuerst geöffnet wird), ist mein Code sehr lang, ich werde nicht in der Lage sein, ihn hier zu kopieren:)
 
webip:


Nein. Der Kühlschrank ist geschlossen. :))

Ich weiß nicht, was das Problem ist. Ich habe alle Variablen korrekt eingegeben. Hier ist der Teil, in dem die Änderungen vorgenommen werden. Vielleicht können Sie herausfinden, was das Problem ist.

Das Array

mas_ord

Welchen Typ haben Sie?

Welcher Art sind die Variablen Preis, tp, take? Warum sollten wir hier raten?