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

 

Meine Herren, ich habe die Ursache gefunden. Das Problem liegt in der Berechnung des Saldos, der benötigt wird, um die Tagesproduktion zu berücksichtigen, und obwohl diese Formel keine Fehler produziert, funktioniert sie nicht.

   datetime TimeCheck_sb = StrToTime("1:00");

   if(TimeCurrent()==TimeCheck_sb)
     {
       sb1 = AccountBalance();
     }
// и это мне вы тут насоветовали на форуме!!!!!!


   далее там условие такое if(sb1 + sb1/100*LotRisk*(DayMultiplicatorProfit/100) > AccountBalance())
                               {

                                условие открытия ордера...

                                }

Wenn man es zum Spaß macht, funktioniert es.

AccountBalance()>0

wenn man es zum Spaß macht, funktioniert es nicht

sb1>0

double sb1; - erklärt, ob etwas...


Die Frage sollte gelöst werden mit

 sb1 = AccountBalance();
 
Порт-моне тв:

Meine Herren, ich habe die Ursache gefunden. Das Problem liegt in der Berechnung des Saldos, der benötigt wird, um die Tagesproduktion zu berücksichtigen, und obwohl diese Formel keine Fehler produziert, funktioniert sie nicht.

Wenn man es zum Spaß macht, funktioniert es.

wenn man es tut, tut es nicht

double sb1; - wird deklariert, wenn etwas...


Lösen Sie das Problem mit

   datetime TimeCheck_sb = StrToTime("1:00");

   if(TimeCurrent()==TimeCheck_sb)

es muss nicht jeden Tag funktionieren... außerdem ist es seltsam, wenn es überhaupt regelmäßig funktioniert

 
Maxim Kuznetsov:

es muss nicht jeden Tag ausgelöst werden... es wäre sogar seltsam, wenn es überhaupt regelmäßig ausgelöst würde

und wie stelle ich den Saldo zu Beginn des Tages fest?

 

Sorry, aber ich verstehe immer noch nicht, wie man KEY_TILDE auf zwei Ereignisse setzen kann - Highlight und Unselect. Ich erhalte entweder die gleichzeitige Auslösung und die Anzeige einer Meldung im Terminal oder nur diese Standardoption. Wie kann ein Dummkopf erklären, wie man das macht?

if(id==CHARTEVENT_KEYDOWN)
     {
      switch(int(lparam))
        {
         case KEY_TILDE:
            ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,true);
            ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTED,true);
            Print("Выделить!");
            break;
            
            default:
            ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,false);
            ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTED,false);
            Print("Отменить выделение!");
            break;
        }
        
     }
 
DYM:

Sorry, aber ich verstehe immer noch nicht, wie man KEY_TILDE auf zwei Ereignisse setzen kann - Highlight und Unselect. Ich erhalte entweder die gleichzeitige Auslösung und die Anzeige einer Meldung im Terminal oder nur diese Standardoption. Wie kann eine hirnlose Person erklären, wie man das macht?

Erkanntes Ereignis - Status prüfen... Wenn es ausgewählt ist - Auswahl aufheben. Andernfalls wird sie ausgewählt.

 
DYM:

Sorry, aber ich verstehe immer noch nicht, wie man KEY_TILDE auf zwei Ereignisse setzen kann - Highlight und Unselect. Ich erhalte entweder die gleichzeitige Auslösung und die Anzeige einer Meldung im Terminal oder nur diese Standardoption. Wie kann ein Dummkopf erklären, wie man das macht?


//+------------------------------------------------------------------+
if(id==CHARTEVENT_KEYDOWN)
     {
      switch(int(lparam))
        {
         case KEY_TILDE: 
         TILDE(); 
         break;
        }
     }
//+------------------------------------------------------------------+
void TILDE()
  {
   if(ObjectGetInteger(0,"RectLabel",OBJPROP_SELECTABLE)==false)
     {
      ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,true);
      ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTED,true);
      Print("Выделить!");
     }
   else
     {
      ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,"RectLabel",OBJPROP_SELECTED,false);
      Print("Отменить выделение!");
     }
  }
 
Порт-моне тв:

Und wie kann ich den Saldowert zu Beginn des Tages festlegen?

Hat jemand eine Idee?

 
Порт-моне тв:

Hat jemand eine Idee?

   if(AccountBalance()>0)
     {
      sb1 = AccountBalance()-DayProfit();
     }
................

//+--------------------------------------------------------------------------------------------------------------------+
//|  Суммарный профит в валюте депозита закрытых с определённой даты позиций                                           |
//+--------------------------------------------------------------------------------------------------------------------+
double DayProfit()
  { double p = 0; datetime st=StrToTime("1:00");
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderCloseTime()>=st){p+=OrderProfit()+OrderSwap()+OrderCommission();}
        }
     }
   return(p);
  }
//+--------------------------------------------------------------------------------------------------------------------+
 
MakarFX:


Ich weiß nicht, wie ich Ihnen danken soll... außer, dass ich Ihnen für Ihre Hilfe danke. Ich werde versuchen, Sie nicht mehr zu belästigen :)
 
Порт-моне тв:

Hat jemand eine Idee?

den Tageswechsel erfassen und den Saldowert zu diesem Zeitpunkt berechnen.

Nicht umsonst heißt es: "Nehmen Sie den richtigen Indikator" - das lässt sich nicht in ein paar Zeilen Code unterbringen. Es ist ein ziemlich umfangreicher Algorithmus.

den Tageswechsel zu erfassen ist einfach, "die bekannte Tageszahl ist jetzt nicht gleich der Tageszahl vorher", aber weiter ist es schwierig