Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1515

 

Cavalheiros, identifiquei a causa. O problema está no cálculo do saldo, que é necessário para permitir um dia de produção, e embora esta fórmula não produza erros, ela não funciona.

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

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


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

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

                                }

Se você faz isso por diversão, funciona.

AccountBalance()>0

se você o faz por diversão, não funciona.

sb1>0

é declarado se alguma coisa...


A questão deve ser resolvida com

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

Cavalheiros, identifiquei a causa. O problema está no cálculo do saldo, que é necessário para permitir um dia de produção, e embora esta fórmula não produza erros, ela não funciona.

Se você faz isso por diversão, funciona.

se você faz isso por diversão, não funciona

declarar se algo...


Resolva a questão com

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

   if(TimeCurrent()==TimeCheck_sb)

não tem que trabalhar todos os dias... além disso, é estranho que funcione regularmente

 
Maxim Kuznetsov:

não precisa ser acionado todos os dias...na verdade, seria estranho se fosse acionado regularmente

e como eu conserto o equilíbrio no início do dia?

 

Desculpe, mas ainda não entendi - como definir a KEY_TILDE para dois eventos - Highlight e Unselect. Eu recebo o acionamento e exibição simultânea de uma mensagem no terminal ou apenas esta opção padrão. Como um idiota pode explicar como fazer isso?

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:

Desculpe, mas ainda não entendi - como definir a KEY_TILDE para dois eventos - Highlight e Unselect. Eu recebo o acionamento e exibição simultânea de uma mensagem no terminal ou apenas esta opção padrão. Como uma pessoa sem cérebro pode explicar como fazer isso?

Evento detectado - verificar status... Se for selecionado - desmarcar. Caso contrário, ele é selecionado.

 
DYM:

Desculpe, mas ainda não entendi - como definir a KEY_TILDE para dois eventos - Highlight e Unselect. Eu recebo o acionamento e exibição simultânea de uma mensagem no terminal ou apenas esta opção padrão. Como um idiota pode explicar como fazer isso?


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

e como consertar o valor de equilíbrio no início do dia, então?

alguém tem alguma idéia?

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

Alguém tem alguma idéia?

   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:


Não sei como lhe agradecer... a não ser para dizer muito obrigado por sua ajuda. Vou tentar não incomodá-lo mais :)
 
Порт-моне тв:

alguém tem alguma idéia?

pegar a mudança do dia e calcular o valor do saldo naquele momento.

Não é por nada que eles disseram "pegue o indicador certo" - não caberá em algumas linhas de código. É um algoritmo bastante capcioso.

pegar a mudança do dia é fácil, "o número conhecido do dia agora não é igual ao número do dia anterior", mas além disso é difícil

Razão: