Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 125

 
progeon:
Pode dizer-me como exibir uma matriz bidimensional como uma constante, ou seja, definir todos os parâmetros manualmente?
double Variable[][3]={{1, 2, 3},{ 4, 5, 6},{7, 8, 9}};

https://www.mql5.com/ru/articles/567

Основы программирования на MQL5 - Массивы
Основы программирования на MQL5 - Массивы
  • 2012.11.03
  • Dmitry Fedoseev
  • www.mql5.com
Наряду с переменными и функциями, массивы являются практически неотъемлемой частью любого языка программирования. Статья должна быть интересна в первую очередь новичкам, приступившим к изучению программирования на MQL5. Опытным программистам представляется хорошая возможность подытожить, обобщить и систематизировать свои знания.
 

Pode dizer-me, por favor, como estabelecer a negociação num determinado dia e numa determinada hora?

Pesquisei no fórum e li o básico de Programação em MQL5 - Tempo, mas ainda não percebi como encaixar tudo no algoritmo?

Por exemplo, preciso de abrir um negócio na quarta-feira após a primeira vela das 4 horas.

Tiro tudo sobre negociação num determinado dia do meu artigo:

input bool Sunday   =true; // Воскресенье
input bool Monday   =true; // Понедельник
input bool Tuesday  =true; // Вторник 
input bool Wednesday=true; // Среда
input bool Thursday =true; // Четверг
input bool Friday   =true; // Пятница
input bool Saturday =true; // Суббота

bool WeekDays[7];
void WeekDays_Init()
  {
   WeekDays[0]=Sunday;
   WeekDays[1]=Monday;
   WeekDays[2]=Tuesday;
   WeekDays[3]=Wednesday;
   WeekDays[4]=Thursday;
   WeekDays[5]=Friday;
   WeekDays[6]=Saturday;
  }
bool WeekDays_Check(datetime aTime)
  {
   MqlDateTime stm;
   TimeToStruct(aTime,stm);
   return(WeekDays[stm.day_of_week]);
  }

Como é que o aplico? Tento adicionar chamada de função em OnTimer() e colocar a condição de que se WeekDays_Check(3)==verdadeiro e tempo desde o início de quarta-feira dentro de segundos>14300 && segundos <14800, então a troca será aberta.

void OnTimer()
  {
   S_Time=TimeCurrent();
   if(WeekDays_Check(3)==true)
     {
      Print("Среда");
      long seconds=S_Time%86400;
      if (seconds>14300 && seconds <14800)
      {
      double Open_1=S_Open(NULL,PERIOD_CURRENT,1);
      double Close_1=S_Close(NULL,PERIOD_CURRENT,1);
      double High_1=S_High(NULL,PERIOD_CURRENT,1);
      double Low_1=S_Low(NULL,PERIOD_CURRENT,1);
      bool S_CriBuy=0,S_CriSell=0;
      double S_Lot;
      S_CriBuy=S_TailBar_Buy(Open_1,Close_1,High_1,Low_1);
      S_CriSell=S_TailBar_Sell(Open_1,Close_1,High_1,Low_1);
      Print("Прошлый бар",High_1);
      if(S_CriBuy==1)
        {
         double S_Price=Low_1;
         double S_SL=Low_1+SL*Point();
         double S_TP=Low_1-TP*Point();
         S_Lot=countLot(Lot,HandLot);
         S_Trade.SellStop(S_Lot,S_Price,NULL,S_SL,S_TP);
        }
      if(S_CriSell==1)
        {
         double S_Price=High_1;
         double S_SL=High_1-SL*Point();
         double S_TP=High_1+TP*Point();
         S_Lot=countLot(Lot,HandLot);
         S_Trade.BuyStop(S_Lot,S_Price,NULL,S_SL,S_TP);
        }
        }
     }
  }

Não funciona assim( Abre em qualquer dia. Explicar como fazer uma troca pelo menos num dia específico?

Obrigado de antemão. Se o código é infantil - lamento, só aprendi)

 
DenisSavenko:

Pode dizer-me, por favor, como estabelecer a negociação num determinado dia e numa determinada hora?

Pesquisei no fórum e li o básico de Programação em MQL5 - Tempo, mas ainda não percebi como encaixar tudo no algoritmo?

Por exemplo, preciso de abrir um negócio na quarta-feira após a primeira vela das 4 horas.

Tiro tudo sobre negociação num determinado dia do meu artigo:

Como é que o aplico? Tento adicionar chamada de função em OnTimer() e colocar a condição de que se WeekDays_Check(3)==verdadeiro e tempo desde o início de quarta-feira dentro de segundos>14300 && segundos <14800, então a troca será aberta.

Não funciona assim( Abre em qualquer dia. Explicar como fazer uma troca pelo menos num dia específico?

Obrigado de antemão. Se o código é infantil - lamento, só aprendi)

M.B.
   if(WeekDays_Check(TimeCurrent())==true)
?
 
uncleVic:
Talvez.
?

Sim, funcionou! Muito obrigado. Claro que ainda há alguns erros nas compensações diárias, mas essa já é a minha parte do problema do código, mas tal como está, tudo funciona. Se se colocar a falsidade em dias desnecessários, na verdade o comércio vai - é isso que é necessário.

Mais uma vez obrigado

 
Registei-me novamente na Insta Trader e liguei uma conta real, no MQ5 inscrevi-me com sucesso num sinal em /***/ subscrição, depois abri a Insta Trader e entrei nas definições do sistema para activar o sinal mas o sinal Atam escreve não está ligado, como é que ligo o sinal e o corro no trabalho com dinheiro real [Conta de negociação #5216372].
 
752360:
Registei-me novamente na Insta Trader, liguei uma conta real, inscrevi-me para o sinal no MQ5 / ***/ subscrição foi bem sucedida, depois abri a Insta Trader e entrei nas configurações do sistema para activar o sinal mas o sinal Atam escreve não está ligado, como é que ligo o sinal e o ponho em prática com dinheiro real [Conta de Negociação #5216372].
O mesmo que com dinheiro irreal, ou seja, entre na sua conta real e inscreva-se para o sinal.
 
onde iniciar sessão exactamente
 
752360:
onde iniciar sessão exactamente

No terminal comercial.

Subscrever um sinal

 

Olá.

Pode dizer-me como fixar a data de expiração da encomenda pendente (EXPIRATION) na classe CTrade? Tentei adicionar esta posição ao enviar CTrade.SellStop(Lot,Price,NULL,SL,TP,expiration); diz sempre "não pode converter enum". A única coisa que encontrei na documentação do CTrade é como descobrir o tempo de vida útil do PedidoExpiração pendente de encomenda, mas não sei como defini-la.

Pode o CTrade definir o tempo de expiração? Ou talvez seja necessário utilizar o pedido completo MqlTradeRequest através de OrderSend()? Os artigos em todos os artigos apontam para o CTrade.

 
DenisSavenko:

Olá.

Pode dizer-me como fixar a data de expiração da encomenda pendente (EXPIRATION) na classe CTrade? Tentei adicionar esta posição ao enviar CTrade.SellStop(Lot,Price,NULL,SL,TP,expiration); diz sempre "não pode converter enum". A única coisa que encontrei na documentação do CTrade é como descobrir o tempo de vida útil do PedidoExpiração pendente de encomenda, mas não sei como defini-la.

Pode o CTrade definir o tempo de expiração? Ou talvez seja necessário utilizar o pedido completo MqlTradeRequest através de OrderSend()? Não compreendo bem como utilizá-lo, porque o CTrade é mencionado em todos os artigos.

   bool              SellStop(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,
                              const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment="");
parâmetros perdidos