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

 
Artyom Trishkin:

A partir deste momento[i] uma hora deve ser extraída.

Ainda imprime o horário 10:05:00 e 22:10:00 e outros fora do horário permitido.

Não deve ser impresso das 17:00 às 11:00, mas imprime.

 for(int i=limit-2; i>0; i--) 
     {
    if(TimeHour(time[i])>=17&&TimeHour(time[i])<=11)continue;
      if(i%2==0) 
        {
         if(open[i]<close[i] && open[i+1]>close[i+1]) 
           {
            k1++;
            if(k1>max) {max=k1; dat_max=time[i];}
            if(k1>=4)Print("Num: ",k1,"dat_max ",time[i]);
            SetText("Obj_"+(string)time[i],(string)k1,time[i],high[i],Arr);
           }
         else k1=0;
         
           } else {
         if(open[i]<close[i] && open[i+1]>close[i+1]) 
           {
            k2++;
            if(k2>max){ max=k2; dat_max=time[i];}
            if(k2>=4)Print("Num: ",k2,"dat_max ",time[i]);
            SetText("Obj_"+(string)time[i],(string)k2,time[i],high[i],Arr);
           }
         else k2=0;
         
        }
      
     }

   Comment("Max: ",max,"dat_max ",dat_max," rates_total ",rates_total);

 
if(TimeHour(time[i])>=17 || TimeHour(time[i])<=11)continue;
 
Taras Slobodyanik:

Obrigado.

 
k_chens:

Boa tarde! Por favor, ajudem! Estou tentando escrever muito controle de contagem. Se minha conta tem +10% de lucro, então o lote é duplicado. Se +20%, então lote*4. Se em minha conta diminui, então, respectivamente, diminui o tamanho do lote. Eu não entendo como fazer com que Lotes_Novos assumam um novo valor a cada novo comércio.

Esta é uma tarefa longe de ser trivial para uma pessoa que está apenas começando a aprender programação. Afinal, para resolvê-lo, é preciso pensar em um mecanismo para armazenar o próximo valor de equilíbrio. Além disso, precisamos descobrir onde armazenar este valor. As variáveis nos programas não são adequadas para este fim. Por exemplo, você pode usar variáveis globais do terminal ou escrevê-las em um arquivo. Tudo depende de onde e como você planeja usar o programa.

A solução mais universal (se o programa for planejado para ser usado em computadores diferentes sem a possibilidade de transferir os dados entre as cópias do programa) é digitalizar o histórico da conta para calcular o lucro/perda, obtido como resultado do trabalho do programa. Mas há também a questão de escolher um ponto de referência (onde obter o valor de equilíbrio a partir do qual contar para cima).

 
Olá, você pode explicar as linhas para a seleção de um medico :

Encomendas externas = verdadeiro ;
Número_mágico_interno externo =777;
//first line
((OrderMagicNumber()==Magic_Number && hand_orders===false) ||| (OrderMagicNumber()==0 && hand_orders===true))

//segunda linha
(OrderMagicNumber()==Magic_Number ||| (OrderMagicNumber()==0 && hand_orders===true)))


Que tipo de valores trágicos eles estão faltando? Por favor, escreva
 
Tigerfreerun:
Olá, por favor, explique as linhas para a seleção de um medjic :

Encomendas externas = verdadeiro ;
Número_mágico_interno externo =777;
//first line
((OrderMagicNumber()==Magic_Number && hand_orders===false) ||| (OrderMagicNumber()==0 && hand_orders===true))

//segunda linha
(OrderMagicNumber()==Magic_Number ||| (OrderMagicNumber()==0 && hand_orders===true)))


Que tipo de valores trágicos eles estão faltando? Por favor, escreva

substituir em suas expressões - && por "AND AT THE SAME TIME", e substituir ||| por "OR".

você deve ser capaz de ler isso e ver como funciona.


a primeira linha funcionará com magia =777 (quando hand_orders=false) ou magia = 0 (quando hand_orders=true)

a segunda linha SEMPRE funciona com majic=777, e se hand_orders=true, funciona ADICIONALMENTE com majic=0

 

Como calcular, em uma função, o lucro em pips para dois instrumentos?

Laminação

double Punkts_B(string Sy_1="",string Sy_2="",int _Mag=-1)
  {
   double xxx=0;
   bool bw;
   for(int t=0;t<=OrdersTotal();t++)
     {
      bw=OrderSelect(t,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Sy_1 || OrderSymbol()==Sy_2
         && OrderMagicNumber()==_Mag
         && (OrderType()==OP_BUY || OrderType()==OP_SELL))
         xxx=OrderClosePrice()-OrderOpenPrice();
      RefreshRates();
     }
   return(xxx);
  }
 
PolarSeaman:

Como calcular, em uma função, o lucro em pips para dois instrumentos?

Laminação

int Punkts_B(string Sy_1="",string Sy_2="",int _Mag=-1)
  {
   int xxx = 0;
   double tickValue_1 = SymbolInfoDouble(Sy_1, SYMBOL_TRADE_TICK_VALUE),
          tickValue_2 = SymbolInfoDouble(Sy_2, SYMBOL_TRADE_TICK_VALUE);
   for(int t=0;t<OrdersTotal();t++)
     {
      if( !OrderSelect(t,SELECT_BY_POS,MODE_TRADES) )  continue;
      if( OrderSymbol()!=Sy_1 && OrderSymbol()!=Sy_2 ) continue;
      if( OrderMagicNumber()!=_Mag )                   continue;
      if( OrderType()!=OP_BUY && OrderType()!=OP_SELL) continue;
      xxx+=(int)((OrderProfit()+OrderSwap()+OrderCommission())/(OrderSymbol()==Sy_1 ? tickValue_1 : tickValue_2));
     }
   return(xxx);
  }
 
Konstantin Nikitin:
pontos de dois instrumentos diferentes não podem ser empilhados.
 
Maxim Kuznetsov:
pontos de dois instrumentos diferentes não podem ser somados.

Ele perguntou, em pontos, aqui está ele em pontos. Deixe-o pensar =)

Razão: