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

 
Andrey Barinov:

É assim que ele se compila:


Obrigado. Eu ingenuamente pensei que a correção de uma dúzia de erros de compilação faria com que um código mql4 se transformasse em um indicador mql5)

Não quer mostrar o máximo, o mínimo de um dia. Qual é a distância em relação ao objetivo?

 
bij:

Obrigado. Eu ingenuamente pensei que a correção de uma dúzia de erros de compilação faria com que um código mql4 se transformasse em um indicador mql5)

Ele não quer mostrar um mínimo de um dia. Qual é a distância em relação ao objetivo?

Eu não sei :)

Tente expandir as matrizes de amortecedores no início da OnCalculate usando o ArraySetAsSeries

 
bij:

Obrigado. Eu ingenuamente pensei que a correção de uma dúzia de erros de compilação faria com que um código mql4 se transformasse em um indicador mql5)

Não quer mostrar o máximo, o mínimo de um dia. A que distância está do alvo?

Há uma quantidade tão grande de linhas de código, só para mostrar o alto e o baixo do dia?
 
Alexey Viktorov:
É uma quantidade tão grande de linhas de código só para mostrar os altos e baixos do dia????
Sim, há também o encerramento do dia, mas está na história, não apenas no dia anterior. Essa é a dificuldade.
 
bij:
Sim, também o encerramento do dia, mas está na história, não apenas no dia anterior. Essa é a parte complicada.

Este é o seu código? Ou foi escrito sob encomenda?

Você pode me mostrar um retrato de como fica no MT4?

 
Alexey Viktorov:

Este é o seu código? Ou foi escrito sob encomenda?

Você pode me mostrar um retrato de como fica no MT4?

O indicador é da rede. Eu não tenho o MT4 em mãos, vou lhe dizer por palavras. Linhas do início ao fim de cada dia, por preços altos, baixos e fechados do dia. Mas, em vez de uma linha apreço de fechamento do dia, quero colocar uma linha a preço de fechamento do bar às 21:00

Talvez realmente possa ser mais fácil do que se pode fazer.

 

Estou fechando 4 posições ao mesmo tempo, como posso contá-las como uma em uma fila na função de contagem de perdas?

Eles podem fechar, por causa do deslizamento, não pelo mesmo preço e o tempo pode ser diferente

Tente:

int CountLOS()
  {
  double priceold=0;
  datetime datold;
   int count=0;
   for(int trade=OrdersHistoryTotal()-1;trade>=0; trade--)
     {
      OrderSelect(trade,SELECT_BY_POS,MODE_HISTORY);
      if(OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            if(OrderMagicNumber()==_MagicNumber)
              {
               if(OrderProfit()<=0&&datold !=OrderCloseTime()) {count++; datold =OrderCloseTime();}
               //if(OrderProfit()<=0&&priceold !=OrderClosePrice()) {count++; priceold =OrderClosePrice();}
               else  break;
              }
           }
        }
     }
   return(count);
  }
 
lil_lil:

Estou fechando 4 posições ao mesmo tempo, como posso contá-las como uma em uma fila na função de contagem de perdas?

Eles podem não fechar pelo mesmo preço devido ao deslizamento e o momento pode ser diferente

O preço por causa do deslizamento é diferente e o tempo também; um fechou no final do segundo, enquanto o outro fechou no início do segundo seguinte. Tente registrar os tickers do pedido no momento do fechamento. Você pode registrá-los em um arquivo...

 
lil_lil:

Estou fechando 4 posições ao mesmo tempo, como posso contá-las como uma em uma fila na função de contagem de perdas?

Eles podem fechar, por causa do deslizamento, não pelo mesmo preço e o tempo pode ser diferente

Julgamento:

Eu passo pelos últimos fechados. Se o último fechado for negativo, então eu olho para todos os fechados por 120 segundos (2 minutos) e calculo o lucro total

 
lil_lil:

Estou fechando 4 posições ao mesmo tempo, como posso contá-las como uma em uma fila na função de contagem de perdas?

Eles podem fechar, por causa do deslizamento, não pelo mesmo preço e o tempo pode ser diferente

Eu tentei:

Algo parecido com isto:

 datetime _oct=0,time=0,_pt=0;
 int _cnt=0;
  for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
    if(OrderSymbol()==symb && OrderMagicNumber()==mg) {
     int OrdersType=OrderType();
     // BUY && SELL
     if(OrdersType<=1) {
       CopyTime(OrderSymbol(),PERIOD_D1,0,1,itime);
       if((OrderCloseTime()>=itime[0] && OrderCloseTime()<itime[0]+86400)) {
         _Get.Hist.BS._ProfitDaily+=OrderProfit()+OrderCommission()+OrderSwap(); // Profit за сегодня
       }
       // 120 секунд разницы между закрытием первой и последней в сетке
       _oct=OrderCloseTime();
       if(_cnt==0 && _oct!=0) time=_oct;
        if(_oct+120>=time) {
          _Get.Hist.BS._ProfitOldClose+=OrderProfit()+OrderSwap()+OrderCommission(); // Profit последнего трейда
          _cnt++;
        }
     }
  }}} 
Razão: