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

 
Aleksei Stepanenko #:

Não sei por que é feito dessa maneira, é essencialmente uma função booleana.

É mais ou menos assim:

Em enumeração, os elementos começam com zero, portanto Ok=0 , AllocError=1

ou seja, GetRepeat retorna 0 ou 1

respectivamente ! GetRepeat é uma negação do valor de retorno

0 é falso, 1 é verdadeiro.


É fácil quebrar sua cabeça

Exatamente!)) Obrigado, Alexey!

 
De nada :)
 

Bom dia!!!

Aqui está uma função para calcular o preço médio de uma grade de ordens e exibi-la em um gráfico. Após o fechamento da grade, as linhas horizontais que mostram a linha média não são apagadas.

Ajude-nos a escrever uma função que estas linhas serão apagadas após o fechamento da grade de pedidos. Obrigado!!!

//+----------------------------------------------------------------------------+
//| Расчет среденй цены (0)-buy (1)-sell ()-all                                |
//+----------------------------------------------------------------------------+
double GetAveragePrice(int ot=-1)
  {
   double order_lots = 0, order_price = 0, avg_price = 0;
     {
      for(int i = OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType()==ot||ot<0)
                 {
                  order_lots += OrderLots();
                  order_price += OrderOpenPrice() * OrderLots();
                 }
              }
           }
        }
     }
   avg_price = NormalizeDouble(order_price / order_lots, Digits);

   if(ObjectFind(0,"AveragePriceLine"+IntegerToString(ot))!=0)
      ObjectCreate(0,"AveragePriceLine"+IntegerToString(ot),OBJ_HLINE, 0, 0, avg_price);
   else
      ObjectSetDouble(0,"AveragePriceLine"+IntegerToString(ot),OBJPROP_PRICE,avg_price);
   if(ot==0)
      ObjectSet("AveragePriceLine"+IntegerToString(ot),OBJPROP_COLOR, clrLime);
   if(ot==1)
      ObjectSet("AveragePriceLine"+IntegerToString(ot),OBJPROP_COLOR, clrMagenta);
   return(avg_price);
  }

 
EVGENII SHELIPOV #:

Bom dia!!!

Aqui está uma função para calcular o preço médio de uma grade de ordens e exibi-la em um gráfico. Após o fechamento da grade, as linhas horizontais que mostram a linha média não são apagadas.

Ajude-nos a escrever uma função que estas linhas serão apagadas após o fechamento da grade de pedidos. Obrigado!!!

Este não é o lugar para se fazer isso.

void OnTick()
  {
//---
   if(ObjectFind(0,"AveragePriceLine"+0)==0&&CountTrade(0)<1)//для бай
     {ObjectDelete(0,"AveragePriceLine"+0);}
   if(ObjectFind(0,"AveragePriceLine"+1)==0&&CountTrade(1)<1)//для селл
     {ObjectDelete(0,"AveragePriceLine"+1);}

   .....

  }
 
MakarFX #:

Este não é o lugar para se fazer isso.

Makar, como você liga isso no vazio OnTick()

 
MakarFX #:

Este não é o lugar para se fazer isso.

Obrigado, Makar, um pequeno trabalho de arquivo e está tudo bem.

 

Por favor, informe.

O Expert Advisor define o tempo de início e fim das ordens de abertura. Eu gostaria de ter este tempo exibido no gráfico. Ainda não fui capaz de fazer isso. Aqui está o código. Gostaria de lhe pedir ajuda!

//-------------------------------------------------------------------+  Команда на открытие первых ордеров в сетке
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
   ObjectCreate(0, "Начало торговли", OBJ_VLINE,0,0, StartTime);
   ObjectSetInteger(0, "Начало торговли",OBJPROP_COLOR, clrBlue);
   ObjectCreate(0,"Окончание торговли", OBJ_VLINE, 0, 0, StopTime);
   ObjectSetInteger(0, "Окончание торговли", OBJPROP_COLOR, clrBlue);
     {
      if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0)
         SendFirsOrder(0);
      if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1)
         SendFirsOrder(1);
     }
 
EVGENII SHELIPOV #:

Por favor, informe.

O Expert Advisor define o tempo de início e fim das ordens de abertura. Eu gostaria de ter este tempo exibido no gráfico. Ainda não fui capaz de fazer isso. Aqui está o código. Gostaria de lhe pedir ajuda!

Mostrar variáveis StartTime e StopTime
 
MakarFX #:
Mostrar as variáveis StartTime e StopTime
extern string               TIME                           = "Настройки времени";
extern int                  UseHour                        = 1;         // Торговля в установленное время "0"-ВЫКЛ, "1"-ВКЛ
extern int                  StartTime                      = 1;         // Начало торговли
extern int                  StopTime                       = 19;        // Окончание торговли
 
EVGENII SHELIPOV #:
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
     {
      if(ObjectFind(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE))!=0)
        {
         ObjectCreate(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StartTime*3600),0);
         ObjectSetInteger(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
         ObjectCreate(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StopTime*3600),0);
         ObjectSetInteger(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
        }
      if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0)
         SendFirsOrder(0);
      if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1)
         SendFirsOrder(1);
     }
Razão: