Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1515

 

Señores, he identificado la causa. El problema está en el cálculo del saldo, que es necesario para permitir la salida de un día, y aunque esta fórmula no produce errores, no funciona.

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

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


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

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

                                }

Si lo haces por diversión, funciona.

AccountBalance()>0

si lo haces por diversión, no funciona.

sb1>0

double sb1; - declarado si algo...


La cuestión debería resolverse con

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

Señores, he identificado la causa. El problema está en el cálculo del saldo, que es necesario para permitir la salida de un día, y aunque esta fórmula no produce errores, no funciona.

Si lo haces por diversión, funciona.

si lo haces, no lo hace

double sb1; - se declara si algo...


Resolver el problema con

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

   if(TimeCurrent()==TimeCheck_sb)

no tiene que funcionar todos los días... es más, es extraño que funcione regularmente

 
Maxim Kuznetsov:

no tiene que activarse todos los días... de hecho, sería extraño que se activara regularmente

¿y cómo se arregla el saldo al principio del día?

 

Lo siento, pero todavía no lo entiendo - cómo establecer KEY_TILDE a dos eventos - Highlight y Unselect. Obtengo el disparo simultáneo y la visualización de un mensaje en el terminal o sólo esta opción por defecto. ¿Cómo puede un tonto explicar cómo hacerlo?

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:

Lo siento, pero todavía no lo entiendo - cómo establecer KEY_TILDE a dos eventos - Highlight y Unselect. Obtengo el disparo simultáneo y la visualización de un mensaje en el terminal o sólo esta opción por defecto. ¿Cómo puede un descerebrado explicar cómo hacerlo?

Evento detectado - comprobar el estado... Si está seleccionado - anular la selección. En caso contrario, se selecciona.

 
DYM:

Lo siento, pero todavía no lo entiendo - cómo establecer KEY_TILDE a dos eventos - Highlight y Unselect. Obtengo el disparo simultáneo y la visualización de un mensaje en el terminal o sólo esta opción por defecto. ¿Cómo puede un tonto explicar cómo hacerlo?


//+------------------------------------------------------------------+
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("Отменить выделение!");
     }
  }
 
Порт-моне тв:

¿y cómo puedo fijar el valor del saldo al principio del día entonces?

¿alguien tiene alguna idea?

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

¿Alguien tiene alguna idea?

   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:


No sé cómo agradecérselo... salvo decir que muchas gracias por su ayuda. Intentaré no molestarte más :)
 
Порт-моне тв:

¿alguien tiene alguna idea?

captar el cambio del día y calcular el valor del saldo en ese momento.

No en vano han dicho "tomar el indicador adecuado" - no cabe en un par de líneas de código. Es un algoritmo de gran capacidad.

atrapar el cambio de día es fácil, "el número de día conocido ahora no es igual al número de día anterior", pero además es difícil

Razón de la queja: