Perguntas de um "boneco" - página 147

 
alph:

Se o preço fechar abaixo da média móvel e o Momentum estiver abaixo da média, abrir um comércio de venda. Num comércio de compra, é o contrário.

Acontece que se a condição não for cumprida, então não é necessária qualquer acção. Se assim for, então na última linha da função escreva return(false) e veja se vai satisfazer a sua táctica passo a passo.
 
Yedelkin:
Então, se a condição não for preenchida, não precisa de fazer nada? Se assim for, então na última linha da função escreva return(false) e veja se vai satisfazer a sua táctica passo a passo.
Está nulo OnTick() ?
 
alph:
Está nulo OnTick() ?

Era mais ou menos tempoOntrade aparentemente.

Mas estou pessoalmente confuso com o resultado não retornável, que pode ser convertido para a forma desejada mais cedo ou mais tarde.

O que me confunde é isto

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
 
alph:
Isto é nulo OnTick() ?

Aqui mesmo:

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) return(true);
   return(false);
   }

Tente colocar falso na última linha e veja se esta abordagem é consistente com a táctica que escolheu. Isto é, "rolar" o trabalho do Consultor Especialista com esta mudança em mente.

 
Interesting:
Estava a falar de tempoOntrade aparentemente.
Em timontrade apenas falso no final não dará o resultado desejado, mas na minha variante abre realmente negócios pelo relógio, testado. A minha versão de código com relógio nesta forma que tenho aqui no fórum, funciona depois de o ter aparafusado. Apenas os minutos que consegui aparafusar via timontrade dois. Tenho a certeza que o código completo deve ser pelo menos um terço mais curto.
 
alph:
No tempoOntrade apenas falso no final não dará o resultado desejado, mas na minha variante abre negócios por hora é real, testado.
O que acontece se o timeOntrade.hour = 5?
 
Interesting:
O que acontece se o timeOntrade.hour = 5?

O acordo certamente não será feito, porque em...

//Base para mudar para Aberto

MqlRates rt[1];
if(CopyRates(Symbol(),MyTframe,0,1,rt)<0) retorna;
if(rt[0].tick_volume>1) return;

if(!PositionSelect(_Symbol)&& (timeOntrade(4) ||| ((timeOntrade(15) ||| timeOntrade(16))&& timeOntrade2(0)))) Aberto();//

...enviar para abrir apenas em horário especificado

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 
alph:
Em timontrade, é exactamente falso no final que não produzirá o resultado desejado...
Bem, veja você mesmo o seu código. A condição if(timeOntrade.hour===4 || timeOntrade.hour===15 || timeOntrade.hour===16) é inútil na sua forma actual. Porque independentemente do resultado que produza, a sua função bool timeOntrade() voltará sempre a ser verdadeira.
 

alph, é disto que Yedelkin está a falar.

Estas variantes da função são idênticas na nossa mente

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) return(true);
   return(true);
   }

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   return(true);
   }
 
Interesting:

A propósito, nesta variante o resultado do testador por lucro é pequeno, mas a relação parece-me ser boa.

Agora estou a testar em prazos maiores sem referência temporal, talvez o resultado seja melhor.

Razão: