Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1560

 
Mikhail Tkachev:

Ich bitte um die Hilfe der Gemeinschaft...
Wie deklariert und erstellt man globale MQL5-Objekte richtig?

Die globalen Angaben werden hier gemacht

//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- 
int      Global_1;
double   Global_2;
string   Global_3;
long     Global_4;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
 
Alexey Viktorov:

Ich weiß nicht, wie ich Ihnen sagen soll, dass Sie die Dokumentation lesen sollen. Wenn Sie ihn gelesen haben und die Standardfunktion aus irgendeinem Grund nicht geeignet ist, hätten Sie das gleich sagen sollen...

Nun, was das "Senden" angeht, lassen Sie die Moderatoren entscheiden, an wen und wohin es gesendet werden soll...! Ban, zum Beispiel... Raten Sie mal, wer. Was die regulären Funktionen anbelangt, so habe ich in der Dokumentation nichts über das Parsen und Speichern/Schreiben von json-Dateien gefunden. Aber wie immer kennen Sie einen geheimen Abschnitt in der Dokumentation, in dem alles zu finden ist... Und ich wusste nicht, dass... Heilige Scheiße. Schande über mich. Ich werde gleich von Alexej zum Schweigen gebracht... :)

 

Hilfe Leute, gehen, umein Maximum von 2 Aufträgen zur gleichen Zeit zu öffnen, habe ich so nicht öffnen, ohne pos_total öffnet ein


void OPENORDER(string ord)

  {
    int pos_total=PositionsTotal();
    double priceL=m_symbol.Ask();
   if (pos_total>=2)
   {
   if(ord=="Sell")      
   
        //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,my_lot,priceL)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());                     // Если sell, то не открываемся
     double priceS=m_symbol.Bid();
   if(ord=="Buy")  
         //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,my_lot,priceS)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
 
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());
   return;
 }
}


Was mache ich falsch?

 
Eugen8519:

Hilfe Leute, gehen, umein Maximum von 2 Aufträgen zur gleichen Zeit zu öffnen, habe ich so nicht öffnen, ohne pos_total öffnet ein



Was mache ich falsch?

Sie haben geschrieben, dass Sie öffnen, wenn Sie bereits 2 oder mehr Positionen haben
if (pos_total<=2)
 
Alexey Viktorov:

Makar, früher hast du das Richtige getan und jetzt willst du das Dumme tun...

Erinnern Sie sich an Ihre Mathearbeit in der 5. Wie viel ist (-3)-(-7) und wie viel ist (-3)+(-7)?

Das ist mit einem Taschenrechner schwer zu überprüfen, Excell hilft Ihnen dabei.


Alexey kann Mathematik ab der 5. Klasse. Bravo, Alexey. Nur Captain Hindsight. :)

 
Mihail Matkovskij:

Alexej kann Mathe schon seit der 5. Klasse. Bravo, Alexej.

In diesem Fall liegst du falsch.
 
MakarFX:

Ja, ich danke Ihnen. Ich habe voreilige Schlüsse gezogen. Ich habe es richtig gemacht)

Die Frage war nicht, dass die Funktion negative Werte haben kann, sondern warum Swap und Provision zum Gewinn hinzugerechnet werden. Sie und Alexej haben das wahrscheinlich nicht verstanden.

Tsaryoff5614 wollte den Auftragsgewinn in der Historie berechnen und die Funktion hieß lastloss (wenn Sie Englisch sprechen).

https://www.mql5.com/ru/forum/160683/page1559#comment_23786144

Er hat sich und mich verwechselt. Und dann du und Alexey... Dummkopf...

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.08.02
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
MakarFX:
In diesem Fall liegen Sie falsch.

Danke für den Tipp, aber er filtert überhaupt nicht, sondern öffnet bis zu fünf Positionen

   if(InpTrailingOrderLimit==0)
        return;
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
           {
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               if(m_position.PriceCurrent()-m_position.PriceOpen()>ExtTrailingOrderLimit+ExtTrailingOrderStep)
                  if(m_position.StopLoss()<m_position.PriceCurrent()-(ExtTrailingOrderLimit+ExtTrailingOrderStep))        
                       OPENORDER("Buy");
              
                  
              }
            else
              {
               if(m_position.PriceOpen()-m_position.PriceCurrent()>ExtTrailingOrderLimit+ExtTrailingOrderStep)
                  if((m_position.StopLoss()>(m_position.PriceCurrent()+(ExtTrailingOrderLimit+ExtTrailingOrderStep))))
                        OPENORDER("Sell");


er sagt ihm, dass er Positionen öffnen soll, egal wo ich pos_total eingebe, es funktioniert nicht

 
Eugen8519:

Danke für den Tipp, aber er filtert überhaupt nicht, sondern öffnet bis zu fünf Positionen


Es sagt ihm, dass er eine Position eröffnen soll, aber egal wo ich pos_total eingebe, es funktioniert nicht.


muss nicht entfernt werden.
if (pos_total<=2)

Ich muss das Zeichen ändern, wie ich geschrieben habe.

 
Mihail Matkovskij:

Die Frage war nicht, dass die Funktion negative Werte haben kann, sondern warum man Swap und Provision zum Gewinn hinzurechnet. Sie und Alexey haben das wahrscheinlich nicht verstanden.

Tsaryoff5614 wollte den Gewinn berechnen, aber seine Funktion hieß lastloss. Er hat sich und mich verwechselt. Und jetzt du und Alexey... Dummkopf...

Deshalb addieren wir sie, damit wir den gesamten Gewinn für den Zeitraum berechnen können.