Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1515

 

Господа, я выявил причину. Дело в подсчете баланса, который нужен для допуска дневного выторга, вот эта формула хоть не выдает ошибок, но не работает.

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

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


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

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

                                }

если ставить ради прикола, то работает

AccountBalance()>0

если ставить, то нет

sb1>0

double sb1; - объявлена если что... 


Вопрос решите с 

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

Господа, я выявил причину. Дело в подсчете баланса, который нужен для допуска дневного выторга, вот эта формула хоть не выдает ошибок, но не работает.

если ставить ради прикола, то работает

если ставить, то нет

double sb1; - объявлена если что... 


Вопрос решите с 

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

   if(TimeCurrent()==TimeCheck_sb)

не обязано срабатывать каждый день...более того, странно если оно вообще будет срабатывать регулярно

 
Maxim Kuznetsov:

не обязано срабатывать каждый день...более того, странно если оно вообще будет срабатывать регулярно

и как мне на начало дня зафиксировать значение баланса тогда?

 

извините, но всё таки не догоняю - как назначить KEY_TILDE на два события - Выделить и Отменить выделение. У меня получается или одновременное срабатывания и вывод сообщения в терминале или только вот такой дефолтный вариант. Объясните безмозглому как это сделать?

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:

извините, но всё таки не догоняю - как назначить KEY_TILDE на два события - Выделить и Отменить выделение. У меня получается или одновременное срабатывания и вывод сообщения в терминале или только вот такой дефолтный вариант. Объясните безмозглому как это сделать?

Отловил событие — проверил состояние… Если выделено — снять выделение. В противном случае выделить.

 
DYM:

извините, но всё таки не догоняю - как назначить KEY_TILDE на два события - Выделить и Отменить выделение. У меня получается или одновременное срабатывания и вывод сообщения в терминале или только вот такой дефолтный вариант. Объясните безмозглому как это сделать?


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

и как мне на начало дня зафиксировать значение баланса тогда?

у кого-то мысли есть?

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

у кого-то мысли есть?

   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:


не знаю как и отблагодарить...Разве что сказать - Огромное спасибо за помощь. Постараюсь больше не надоедать :)
 
Порт-моне тв:

у кого-то мысли есть?

ловить смену дня и рассчитывать значение баланса на этот момент.

не зря-же говорили что "возьмите подходящий индикатор" - это не уложится в пару строчек кода. Там довольно ёмкий алгоритм.

поймать смену дня легко, "известный номер дня сейчас не равен номеру дня ранее", а вот дальше сложности

Причина обращения: