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

 
Da ich aus einem anderen Thread rausgeschmissen wurde, versuche ich es hier zu fragen, weil ich keine ähnliche Frage gefunden habe:

Ich handle einen EA auf MT-4. Bis zu diesem Beitrag war alles in Ordnung. Heute beschloss ich, den EA zu deaktivieren, ich drückte die entsprechende Schaltfläche in der Symbolleiste und anstelle des Smileys war ein Kreuz auf dem Chart zu sehen. Und dann wurde plötzlich ein Geschäft eröffnet. Eins, zwei... mehr und mehr. Ich habe die Einstellungen des Expert Advisors geöffnet und OnlyBuy im entsprechenden Fenster aktiviert (EA ist immer noch deaktiviert). Das Geschäft wurde wieder abgeschlossen, und es war ein umgekehrter Verkauf! Dann öffne ich die Einstellungen erneut und deaktiviere die Handelsfunktion (ohne Häkchen). Auch das funktioniert nicht. Der Expert Advisor führt gewissermaßen ein Eigenleben. Ich wende mich an den Support und erhalte folgende Antwort: " Dies ist höchstwahrscheinlich ein Problem mit Ihrem Expert Advisor. Bitte löschen Sie Ihr Terminal und installieren Sie ein neues Terminal von unserer Website , ohne andere EAs zu installieren.
Liebe Expert Advisors, könnten Sie uns bitte Ihre Meinung zu diesem Thema mitteilen, insbesondere zu dem hervorgehobenen Teil. Besonders gut gefällt mir die klare Formulierung "höchstwahrscheinlich". Wie kann das möglich sein und wo liegt das Problem?
 
Alex007:
Da Sie aus einem anderen Thread rausgeschmissen wurden, versuche ich, Sie hier zu fragen, weil ich keine ähnliche Frage gefunden habe:

Ich handle meinen Expert Advisor auf MT4. Vor diesem Beitrag war alles in Ordnung. Heute beschloss ich, den EA zu deaktivieren, ich drückte die entsprechende Schaltfläche in der Symbolleiste und anstelle des Smileys war ein Kreuz auf dem Chart zu sehen. Und dann wurde plötzlich ein Geschäft eröffnet. Eins, zwei... mehr und mehr. Ich habe die Einstellungen des Expert Advisors geöffnet und OnlyBuy im entsprechenden Fenster aktiviert (EA ist immer noch deaktiviert). Das Geschäft wurde wieder abgeschlossen, und es war ein umgekehrter Verkauf! Dann öffne ich die Einstellungen erneut und deaktiviere die Handelsfunktion (ohne Häkchen). Auch das funktioniert nicht. Der Expert Advisor führt gewissermaßen ein Eigenleben. Ich wende mich an den Support und erhalte folgende Antwort: " Dies ist höchstwahrscheinlich ein Problem mit Ihrem Expert Advisor. Bitte löschen Sie Ihr Terminal und installieren Sie ein neues Terminal von unserer Website , ohne andere EAs zu installieren.
Liebe Expert Advisors, könnten Sie uns bitte Ihre Meinung zu diesem Thema mitteilen, insbesondere zu dem hervorgehobenen Teil. Besonders gut gefällt mir die klare Formulierung "höchstwahrscheinlich". Wie kann das sein und wo liegt das Problem?

Sie wurden nicht rausgeschmissen, ich habe nur vorsichtig angedeutet, dass die Daten unzureichend sind.

"Mein Auto springt nicht an. Ich habe den Händler angerufen, bei dem ich ihn gekauft habe, und man sagte mir, ich solle den Hersteller anrufen" - das klingt gut.

 
Alex007:
Da ich aus einem anderen Thread rausgeschmissen wurde, werde ich versuchen, sie hier zu stellen, da ich keine ähnliche Frage gefunden habe:

Ich handle meinen Expert Advisor auf MT4. Vor diesem Beitrag war alles in Ordnung. Heute beschloss ich, den EA zu deaktivieren, ich drückte auf die EA-Schaltfläche in meiner Symbolleiste und anstelle eines Smileys erschien ein Kreuz auf meinem Chart. Und dann wurde plötzlich ein Geschäft eröffnet. Eins, zwei... mehr und mehr. Ich habe die Einstellungen des Expert Advisors geöffnet und OnlyBuy im entsprechenden Fenster aktiviert (EA ist immer noch deaktiviert). Das Geschäft wurde wieder abgeschlossen, und es war ein umgekehrter Verkauf! Dann öffne ich die Einstellungen erneut und deaktiviere die Handelsfunktion (ohne Häkchen). Auch das funktioniert nicht. Der Expert Advisor führt gewissermaßen ein Eigenleben. Ich wende mich an den Support und erhalte folgende Antwort: " Dies ist höchstwahrscheinlich ein Problem mit Ihrem Expert Advisor. Bitte löschen Sie Ihr Terminal und installieren Sie ein neues Terminal von unserer Website , ohne andere EAs zu installieren.
Liebe Expert Advisors, könnten Sie uns bitte Ihre Meinung zu diesem Thema mitteilen, insbesondere zu dem hervorgehobenen Teil. Besonders gut gefällt mir die klare Formulierung "höchstwahrscheinlich". Wie kann das sein und was ist das Problem?
Man kann nicht sagen, was falsch ist, ohne den Code zu überprüfen. Als erstes fällt mir ein, dass deinit() eine Bedingung hat, um einen Handel zu öffnen, nachdem das Programm beendet wurde. Woher haben Sie einen solchen EA?
 
Es tut mir leid - es gibt keine Wunder! Ich habe nicht bemerkt, wie zwei MTs geöffnet haben. Ich handelte mit einem von ihnen, und der andere handelte in Frieden. Es ist auch ein Pech für die alten Zeiten - ich scheine gut mit Computern umgehen zu können, und hier ist etwas wie dies ....
 
VladislavVG:

Hinweis: In MKL4 unterscheiden sich die Prioritäten geringfügig von denen in C, lesen Sie dazu bitte "common". Daher ist es besser, Klammern zu setzen.

Ich danke Ihnen! Jetzt verstehe ich, warum die Klammern.

Das ist eine alte Geschichte. Ich beendete den Roboter mit einem selbst komponierten Lied. Ich hoffe, es funktioniert. Und plötzlich '\Ende_des_Programms' - unausgewogene linke Klammer C:\TeleTRADE\experts\variantprogram.mq4 (365, 1)

Wie immer habe ich die Klammern durchgesehen und gepatcht. Ich scheine nichts zu sehen. Was kann das schon wieder sein?

int Profit=0;                                
    for (i=0; i<OrdersHistoryTotal(); i++)
   {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
   {
    if(OrderSymbol()!= Symbol()) continue;
    if(OrderType()>=2)continue;
    Profit+=OrderProfit();     }}
    
 
 
 if(Profit>AccountBalance()){  
   for(i=0;i<=OrdersTotal();i++){
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
 { if(OrderSymbol(!= Symbol()) continue;
   if (OrderMagicNumber() != 450) continue;
   if(OrderType()==OP_SELL) 
  OrderClose(OrderTicket(),OrderLots(),Ask,6,Red);
   if(OrderType()==OP_BUY)
  OrderClose(OrderTicket(),OrderLots(),Bid,6,Red);}}} 
//----
   return(0);
  }
//+------------------------------------------------------------------+

//------- :  Коды ошибок
string ErrorDescript(int error_code){string error_string;switch(error_code){
      //---- Коды ошибок, возвращаемые торговым сервером:
      case 0:   error_string="Нет ошибок";                               
 

Igitt! ! Ich denke, ich habe die zusätzlichen Klammern aus dem Weg geräumt.

 
Dimka-novitsek:

Vielen Dank! Jetzt verstehe ich, warum die Klammern.

...

Leute, könnt ihr mir sagen, ob das erlaubt ist, oder habe ich etwas übersehen?

if(OrderType()>=2)continue;
 
paladin80:

Leute, könnt ihr mir sagen, ob das erlaubt ist, oder habe ich etwas übersehen?


Warum nicht, es ist ein regelmäßiges int

Ein weiterer Punkt ist, dass sich in einem der nächsten Builds die Codes für BUY und SELL ändern können und der Code dann plötzlich nicht mehr funktioniert.

 
ilunga:

Warum nicht, es ist ein normaler int

Ein weiterer Punkt ist, dass sich in einem der nächsten Builds die Codes für BUY und SELL ändern können und der Code dann plötzlich nicht mehr funktioniert.

Ja, das ist logisch. Das ist schon besser:

if(OrderType()=OP_BUY || OrderType()=OP_SELL) continue;
Dimych, wenn der Compiler eine Stelle anzeigt, an der eine Klammer fehlt, bedeutet das nicht, dass dies die richtige Stelle ist. Wenn eine Klammer am Anfang des Codes falsch gesetzt ist (oder fehlt), wird der Fehler manchmal am Ende angezeigt. Sie können also in dem Kommentar /* ... */.
 
paladin80:

Ja, das macht Sinn. Es ist also besser so:

Dimy, wenn der Compiler eine Stelle anzeigt, an der er eine Klammer vermisst, bedeutet das nicht, dass wir dort nachsehen sollten. Wenn eine Klammer am Anfang des Codes falsch gesetzt ist (oder fehlt), wird der Fehler manchmal am Ende angezeigt. Suchen Sie also danach, indem Sie den Code kommentieren /* ... */.

Nur nicht so-) "=" ist keine Bedingung, sondern eine Zuweisungsoperation.

Dann sollte es so sein:

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL) continue;

oder noch besser so (damit Sie es nicht zweimal verwenden müssen)

int type = OrderType(); 
if(type!=OP_BUY && type!=OP_SELL) continue;
Grund der Beschwerde: