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

 
Но возникла другая проблема. Функция через раз срабатывала
   TrendByAngleCreate("Trend_Angle",tme1,prc1,tme2,0,45,clrRed,STYLE_SOLID);
   ChartRedraw(0);
   datetime time_trend = (datetime)ObjectGetInteger(0,"Trend_Angle",OBJPROP_TIME,1);
   //Print(time_trend);   
   double price_angle = ObjectGetDouble(0,"Trend_Angle",OBJPROP_PRICE,1);
   Print(DoubleToString(price_angle,_Digits));


Еще интересный момент, если убрать все лишнее, то функция вообще всегда 0 возвращает 
Код:
   TrendByAngleCreate("Trend_Angle",tme1,prc1,tme2,0,45,clrRed,STYLE_SOLID);
   ChartRedraw(0);
   double price_angle = ObjectGetDouble(0,"Trend_Angle",OBJPROP_PRICE,1);
   Print(DoubleToString(price_angle,_Digits));
 
Подскажите, пожалуйста, как избавиться от этих назойливых значков модификации ордера м mql4



Пробовал CLR_NONE в конце функции модификации ставить, а они всё равно лезут
 
Приходит на ум, после модификации ордера искать в имени объектов номер тикета и удалять их.
 
Aleksei Stepanenko #:
Приходит на ум, после модификации ордера искать в имени объектов номер тикета и удалять их.

Да, ещё момент: это в тестере. 

Может в тестере игнорируются всякие CLR_NONE 

 

Я не помню, или забыл, что не знал)

Если это тестер, тогда лучше поиск и удаление завернуть в условие

if(MQLInfoInteger(MQL_TESTER)==1 && MQLInfoInteger(MQL_OPTIMIZATION)==0)
   {      
   if(finded_arrow(ticket)) delete_arrow(ticket);
   }
 
Vladimir #:
Но возникла другая проблема. Функция через раз срабатывала


Еще интересный момент, если убрать все лишнее, то функция вообще всегда 0 возвращает 
Код:

Должно быть не успевает пройти перерисовка. 

1) Попробуйте, добавить Sleep(100) после ChartRedraw(0) .



2) Так понял, что время tme2 всегда одинаково, для обоих линий. Тогда, можно изменить TrendByAngelCreate(), пусть возвращает нужное значение, чтобы не считывать его с графика.

    

   double price_angle = TrendByAngleCreate("Trend_Angle",tme1,prc1,tme2,0,45,clrRed,STYLE_SOLID);
   ChartRedraw(0);
   datetime time_trend = (datetime)ObjectGetInteger(0,"Trend_Angle",OBJPROP_TIME,1);
   //Print(time_trend);   
   //double price_angle = ObjectGetDouble(0,"Trend_Angle",OBJPROP_PRICE,1);
   Print(DoubleToString(price_angle,_Digits));
 

Здравствуйте. Подскажите, пж, почему пишет про несовпадение знаков?

ENUM_DEAL_TYPE TypeLastPos()
{
        HistorySelect(time_start, TimeCurrent());
        
        ENUM_DEAL_TYPE type = DEAL_TAX;
        ulong time = 0;
        
        for(int i = HistoryDealsTotal() - 1; i >= 0; i--)
        {
                ulong  deal_ticket = HistoryDealGetTicket(i);
                
                if(HistoryDealGetInteger(deal_ticket, DEAL_ENTRY) == DEAL_ENTRY_IN
                && HistoryDealGetInteger(deal_ticket, DEAL_TIME) > time
                && HistoryDealGetInteger(deal_ticket, DEAL_MAGIC) == Magic
                && HistoryDealGetString(deal_ticket, DEAL_SYMBOL) == Symbol()
                ){
                        time = HistoryDealGetInteger(deal_ticket, DEAL_TIME);
                        type = (ENUM_DEAL_TYPE)HistoryDealGetInteger(deal_ticket, DEAL_TYPE);
                        break;
                }
        }
        return type;
}   
 
Aleksei Stepanenko #:

Я не помню, или забыл, что не знал)

Если это тестер, тогда лучше поиск и удаление завернуть в условие

Благодарю за ответ

 
Andrei Sokolov #:

Здравствуйте. Подскажите, пж, почему пишет про несовпадение знаков?

очевидно потому-что они не совпадают.. слева signed справа unsigned

 
Andrei Sokolov #:

Здравствуйте. Подскажите, пж, почему пишет про несовпадение знаков?

ulong time = 0;
long  HistoryDealGetInteger(...