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

 
ifitstrue:

Pergunta sobre

Qual seria o índice da barra M1 inicial se eu traçasse uma linha de tendência sobre o passado H1?

E na hora de início e fim da linha não está claro como encontrá-la.

Desculpe, se eu não estou explicando claramente.

É difícil para mim.

Além dos índices também há tempo...

 
//---
   for(int j=0;j<OrdersTotal();j++)
     {
      if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGICZZ || OrderSymbol()!=Symbol()) continue;
   //--- check order type 
      if(OrderType()==OP_BUY)
        {
         //if(OrderProfit()>0.0)
           //{//Print("OrderProfitB()=",OrderProfit());
         if(iClose(NULL,PERIOD_CURRENT,1)-iOpen(NULL,PERIOD_CURRENT,1)>0.0)
           {if(iOpen(NULL,PERIOD_CURRENT,0)-iClose(NULL,PERIOD_CURRENT,0)>0.0)
              {Print("iCloseB()=",iClose(NULL,PERIOD_CURRENT,0));
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
                  Print("OrderClose error ",GetLastError());
              }  
           }
        }
      if(OrderType()==OP_SELL)
        {
         //if(OrderProfit()>0.0)
           //{//Print("OrderProfitS()=",OrderProfit());
         if(iOpen(NULL,PERIOD_CURRENT,1)-iClose(NULL,PERIOD_CURRENT,1)>0.0)
           {if(iClose(NULL,PERIOD_CURRENT,0)-iOpen(NULL,PERIOD_CURRENT,0)>0.0)
              {Print("iCloseS()=",iClose(NULL,PERIOD_CURRENT,0));
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
                  Print("OrderClose error ",GetLastError());
              }
           }
Olá! 2021.03.01_19:49 GMT+3. Queria melhorar os resultados do meu sistema comercial. Mas iOpen() e iClose() não pareciam funcionar. No testador de estratégia, eu verifiquei o Expert Advisor, entre 175 negócios, apenas 81 deles parecem estar fechados pelas condições descritas no código acima. Este código não funciona. O que podemos fazer para que funcione? Que tal perguntar aos programadores da MetaQuotes? Agora vou dar uma olhada nos registros do testador de estratégia e postar o quão raramente estas funções funcionam. Encontrei-a. 20210228.log . Tempo 13:53:02.192, aberto #155, iCloseB()=1,3434. Em anexo está o arquivo de registro. Agora espero que alguém possa me dizer o que fazer com estas funções iClose() e iOpen() para fazê-las funcionar. Porque o sistema comercial não é suficientemente eficiente. Isso é tudo por enquanto. 2021.03.01_20:12 GMT+3.
Arquivos anexados:
20210228.log  277 kb
 
Acontece no mt5 que em um certo período de tempo é hora de aparecer uma nova barra (e as citações parecem estar chegando), mas ainda não está lá. O que é isso? Especificidades de preços?
 
ifitstrue:

Pergunta sobre

Qual seria o índice da barra M1 inicial se eu traçasse uma linha de tendência sobre o H1 passado?

E na hora de início e fim da linha não está claro como encontrá-la.

Desculpe, se eu não estou explicando claramente.

É difícil para mim.

H1 tem um tempo de bar aberto - é iTime()

Para entender o índice de uma barra com este tempo em M1 há iBarShift()

Resta saber a barra mínima e máxima na M1 usando iHighest() e iLowest()

 
Olá novamente! 2021.03.01_20:24 GMT+3. Eu escrevi neste tópico do fórum na página 1304 que meu testador da versão 4 é lento. E Vitaly Muzichenko me entendeu mal. Estou escrevendo o momento em que terminei de escrever o comentário. E eu não estou apressando ninguém. Embora não houvesse respostas para minha pergunta, encontrei a resposta por acidente. O que estou fazendo com o testador de estratégia agora? Eu marquei a caixa de seleção "otimizar" antes de testar o Expert Advisor. Eu o otimizo. No entanto, não preciso de otimização no momento. Eu o otimizo em aproximadamente um segundo. Em seguida, limpei a caixa de seleção "otimizar". Eu verifico como funciona o Expert Advisor. Então o testador de estratégia trabalha rapidamente. Não é quarenta minutos ou uma hora. Eu me senti obrigado a escrever isto. Talvez seja útil para qualquer pessoa. Estou escrevendo meu Expert Advisor na quarta versão do terminal porque meu corretor tem contas de rublo na versão 4 do terminal e não na versão 5. Eu não quero mexer com o dólar americano: ele tem um enorme teto de dívida nacional e meu corretor traduz meus dólares em meus rublos a taxas que não são de mercado. 20:39 GMT+3.
 
Николай Никитюк:
Olá! 2021.03.01_19:49 GMT+3. Queria melhorar os resultados do meu sistema comercial. Mas parece que as funções iOpen() e iClose() não funcionam. No testador de estratégia, eu verifiquei o Expert Advisor, entre 175 negócios, apenas 81 deles parecem estar fechados pelas condições descritas no código acima. Este código não funciona. O que podemos fazer para que funcione? Que tal perguntar aos programadores da MetaQuotes? Agora vou dar uma olhada nos registros do testador de estratégia e postar o quão raramente estas funções funcionam. Encontrei-a. 20210228.log . Tempo 13:53:02.192, aberto #155, iCloseB()=1,3434. Em anexo está o arquivo de registro. Agora espero que alguém possa me dizer o que fazer com estas funções iClose() e iOpen() para fazê-las funcionar. Porque o sistema comercial não é suficientemente eficiente. Isso é tudo por enquanto. 2021.03.01_20:12 GMT+3.

O código parece bom, mas estou confuso com o escorregamento...muito pequeno, colocar mais escorregamento e verificar

 
Alexey Viktorov:
Meu Deus! Eu queria alguma coisa? Eu pedi alguma coisa? Quem você acha que eu sou?
Erro meu, desculpe. Pessoa errada, lugar errado. )
 
Николай Никитюк:
Olá! 2021.03.01_19:49 GMT+3. Queria melhorar os resultados do meu sistema comercial. Mas parece que as funções iOpen() e iClose() não funcionam. No testador de estratégias, testei o Expert Advisor, entre 175 profissões, apenas 81 delas parecem estar fechadas pelas condições descritas no código acima. Este código não funciona. O que podemos fazer para que funcione? Que tal perguntar aos programadores da MetaQuotes? Agora vou dar uma olhada nos registros do testador de estratégia e postar o quão raramente estas funções funcionam. Encontrei-a. 20210228.log . Tempo 13:53:02.192, aberto #155, iCloseB()=1,3434. Em anexo está o arquivo de registro. Agora espero que alguém possa me dizer o que fazer com estas funções iClose() e iOpen() para fazê-las funcionar. Porque o sistema comercial não é suficientemente eficiente. Isso é tudo por enquanto. 2021.03.01_20:12 GMT+3.

Tente reescrevê-lo dessa forma, porque é a mesma coisa.

         if(Close[1]-Open[1]>0.0)
           {
            if(Close[0]-Open[0]>0.0)

Ou, é assim que eu escrevo.

         if(Close[1]>Open[1])
           {
            if(Close[0]>Open[0])
              {
 
klub2003:

Olá a todos!

Aqui está o problema:
O preço cruza o MA para baixo ou para cima.
Preciso memorizá-lo para utilizá-lo mais tarde no cálculo do número de pontos cruzados.

É assim que eu entendo isto:

duplo FixPrice; // variável

bool Fix=falso; // marcador

se ( Fix===falso) {

se ( Close[0] > MA_lo ) FixPrice = Close[0];
} // medida até o preço cruzar o MA

se ( Close[0] < MA_lo ) Fix=verdadeiro;

se ( Fix===verdadeiro) FixPrice_L = FixPrice ;

E aqui está o próximo engate - o preço não é memorizado!

Eu ficaria muito grato por sua ajuda!
//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//---

double     FixPrice;        // переменная ТАК БУДЕТ ЗАПОМИНАТЬСЯ. ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ
bool       Fix = false;      // маркер
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Fix == false)
     {
      if(Close[0] > MA_lo)
         FixPrice = Close[0];
     }                                                                              // делаем замер пока цена не пересечет МА
   if(Close[0] < MA_lo)
      Fix = true;
   if(Fix == true)
      FixPrice_L = FixPrice ;
//+------------------------------------------------------------------+
  }
//+------------------------------------------------------------------+

É assim que você quer que seja memorizado.

Mas tenha em mente que na abertura de uma vela.

Close[0]=Open[0] 
и Close[0]=High [0] и Close[0]=Low[0]



Portanto, se você precisa de dados instantâneos e em tempo real, é melhor usar

double Bidd=NormalizeDouble(Bid,Digits); если цена сверху или
double Askk=NormalizeDouble(Askk,Digits); если цена снизу МА

double MA_lo=NormalizeDouble(MA_lo,Digits);

É melhor normalizar todos os preços, que serão comparados no estado, para que você não se surpreenda :)

 
MakarFX:

Чтобы перевернуть ФИБО поменяй местами  р1 и р2

С алертом я не помогу(

MakarFX
:

Para reverter FIBO, trocar p1 e p2

Eu não posso ajudar com os alertas(

Olá, obrigado, tenho duas soluções diferentes, a sua é a mais fácil....

Razão: