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

 
Wie kann ich in den Codes meiner EAs vorschreiben, dass sie mit jedem meiner Währungspaare arbeiten? Ich kann nicht sagen, ob ich ein anderes Symbol oder ein anderes Währungspaar habe.
 
logut:
Wie kann ich in den Codes meiner EAs vorschreiben, dass sie mit jedem meiner Währungspaare arbeiten? Ich habe ein anderes Symbol, aber es funktioniert nicht.
Ich bin mir nicht sicher, ob ich ein einzelnes Symbol für ein anderes Währungspaar verwende, aber das gleiche Symbol reicht aus.
 
Hallo. Ich habe einen EA geschrieben, er zeigt gute Ergebnisse im Tester. Kompiliert ohne Fehler. Er ist an den Euro-Dollar gekoppelt.
Im realen Handel werden die Geschäfte nicht geöffnet, wenn die Bedingungen für die Eröffnung eines Geschäfts erscheinen, wird eine Meldung angezeigt:
2015.02.11 14:03:03.656 '1435109': Order buy 0.01 EURUSD opening at market sl: 1.12697 tp: 1.13747 failed [Invalid S/L or T/P]
So wie ich es verstehe, bedeutet dies, dass es sich nicht um eine gültige Anhaltung oder Mitnahme handelt. Ein Auftrag mit vorgegebenen Stopps und Takes wird manuell erteilt. Es gibt einen Abstand zwischen dem Preis und dem Stop
Der Abstand zwischen dem Preis und dem Punkt ist um ein Vielfaches größer. Alle Berechnungen des Anschlags und des Stroms sind normalisiert. Ich verstehe nicht, was der Grund dafür sein könnte, bitte helfen Sie mir zu verstehen.
Hier ist das Programm:
int start()
{
//------------------------------------------------------------------------------------------------

wenn (Auftragssumme()>0)
Rückkehr;
double monymax8=High[ArrayMaximum(High,3,0)];
if (ich habe die Bedingung selbst entfernt, weil sie nicht der Grund ist, da das Programm die OrderSend-Funktion erreicht)

{ double stop_sell8=monax8+Point;
double STOP_S8=NormalizeDouble(stop_sell8,Digits);
double profit_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid);
double PROFIT_S8=NormalizeDouble(profit_sell8,Digits);
double my_lot8=Kontostand()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
double LOT8=NormalizeDouble(my_lot8,2);
OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8);
}
//------------------------------------------------------------------------------------------------
Rückkehr;
}

 
Rogoza:
Hallo. Ich habe einen EA geschrieben, er zeigt gute Ergebnisse im Tester. Kompiliert ohne Fehler. Er ist an den Euro-Dollar gekoppelt.
Im realen Handel werden die Geschäfte nicht geöffnet, wenn die Bedingungen für die Eröffnung eines Geschäfts erscheinen, wird eine Meldung angezeigt:
2015.02.11 14:03:03.656 '1435109': Order buy 0.01 EURUSD opening at market sl: 1.12697 tp: 1.13747 failed [Invalid S/L or T/P]
So wie ich es verstehe, bedeutet dies, dass es sich nicht um eine gültige Anhaltung oder Mitnahme handelt. Ein Auftrag mit vorgegebenen Stopps und Takes wird manuell erteilt. Es gibt einen Abstand zwischen dem Preis und dem Stop
Der Abstand zwischen dem Preis und dem Punkt ist um ein Vielfaches größer. Alle Berechnungen des Anschlags und des Stroms sind normalisiert. Ich verstehe nicht, was der Grund dafür sein könnte, bitte helfen Sie mir zu verstehen.
Hier ist das Programm:
int start() 
 {
 
//------------------------------------------------------------------------------------------------
if (OrdersTotal()>0)
   return;
   
   double monymax8=High[ArrayMaximum(High,3,0)];
   
       
        if (само условие я убрал так как не в нём причина, раз программа доходит до функции  OrderSend)
        {   double stop_sell8=monymax8+Point;
            double STOP_S8=NormalizeDouble(stop_sell8,Digits);
            double profit_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid);
            double PROFIT_S8=NormalizeDouble(profit_sell8,Digits);
            double my_lot8=AccountBalance()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
            double LOT8=NormalizeDouble(my_lot8,2);
           
             
           OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8);
            
                   
        }
      
 //------------------------------------------------------------------------------------------------
   return;
 } 

Formatieren Sie Ihren Code wie folgt. Hierfür gibt es eine SRC-Taste.

Sie wird nicht geöffnet, weil bei diesen Kontotypen zuerst Aufträge ohne Stopps geöffnet werden und dann OrderModify()

 
evillive:
Die Magie wird nur benötigt, wenn es mehrere "Händler" auf demselben Symbol gibt, aber das reicht aus, um das Symbol zu überprüfen.
Ich verstehe. Was mir jetzt Sorgen macht, ist, wie man den EA mehrwährungsfähig macht?
 
AlexeyVik:

Formatieren Sie Ihren Code wie folgt. Zu diesem Zweck gibt es die Schaltfläche SRC.

Sie wird nicht geöffnet, weil bei diesen Kontotypen zuerst Aufträge ohne Stopps geöffnet werden und dann OrderModify()

Vielen Dank, ich werde den Code umschreiben.
 
logut:
Jetzt ist meine Frage, wie man den EA mehrwährungsfähig macht.
Öffnen Sie eine kodobase, finden Sie dort einen Mehrwährungs-EA und finden Sie heraus, wie er funktioniert.
 

Meistens bin ich bei etwas wirklich ratlos und weiß nicht, wie ich es machen soll.

Ich habe Variablen Zeile1, Zeile2, Zeile3 usw. Ich möchte den Wert für jede Variable durch die for-Schleifenanweisung zählen.

Wie macht man eine korrekte Aufzählung von Variablen? Ich habe versucht, es als "Zeile "+"i" zu machen, aber das ist natürlich Unsinn.

for(int i=1;i<=111111111111;i++)
        {
            if("line"+"i">0)counter++;
        }
 
Wahrscheinlich ist es besser, ein Array line[] zu erstellen und dann eine Schleife zu durchlaufen.
 

Warum wird das falsche Objekt angezeigt? Es sollteein nach links zeigendes Dreieck seinhttps://docs.mql4.com/ru/constants/objectconstants/arrows code 3, aber es erscheint ein nach oben zeigender Pfeil Wingdings code 241.

obj

Programmcode (ich habeObjectSet(objName, OBJPROP_ARROWCODE, 3);)

void f_ArrowClose(
                  datetime closeTime,
                  int action,          //íàïðàâëåíèå
                  double lots,
                  string symb,
                  double openPrice,
                  double closePrice,
                  double profit)
{
      color c;
      string op="";
      if(action==1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_BUY";
      }
      else if(action==-1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_SELL";
      }
      
      string objName = StringConcatenate("#", closeTime, " ", op, " ", lots, " ", symb, " at ", openPrice, " close at ", closePrice);
      ObjectCreate(objName, OBJ_ARROW, 0, closeTime, closePrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 3);
      //ObjectSetText(objName, StringConcatenate("Profit: ", profit));
}