Ajuda na codificação - página 658

 

Caro mladen

Se eu quiser saber o último tipo de pedido fechado e se ele teve lucro em uma EA, a seguinte função pode fazer o trabalho:

int OrdersProfit()
  {
   int Profit;
   for (int i=OrdersHistoryTotal(); i>=0; i--)
     {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
      if (OrderType()==OP_BUY  && OrderProfit()> 0) Profit ="1" ;
      if (OrderType()==OP_SELL && OrderProfit()> 0) Profit ="2" ;
     }    
   return(Profit);
  }


Melhor,

 
IXI:

Caro mladen

Se eu quiser saber o último tipo de pedido fechado e se ele teve lucro em uma EA, a seguinte função pode fazer o trabalho:


O melhor,

Não, não é (simplesmente porque as ordens fechadas não são ordenadas por tempo de fechamento - pelo menos é isso que o manual nos diz: nenhuma garantia de que as ordens sejam ordenadas por tempo de fechamento). Tem que ser feito algo como isto :

int OrdersProfit()
{
   int      profit    = 0;
   datetime CloseTime = 0;
       for(int i=OrdersHistoryTotal()-1;i>=0;i--)
       {
           if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
           if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime)
           {
              CloseTime = OrderCloseTime();
              if (OrderType()==OP_BUY  && OrderProfit()> 0) Profit =1 ;
              if (OrderType()==OP_SELL && OrderProfit()> 0) Profit =2 ;
           } 
       }
       return(Profit);
}  
 

Caro mladen

Muito obrigado por sua resposta perfeita.

Muito obrigado por sua resposta perfeita,

 

Caros amigos,

Você pode atualizar os indicadores anexos para o último build mt4, por favor?

Especialmente, o "123PatternsV6" congela o mt4 e não funciona!

Arquivos anexados:
 
oguz:

Caros amigos,

Você pode atualizar os indicadores anexos para o último build mt4, por favor?

Especialmente, o "123PatternsV6" congela o mt4 e não funciona!

Acho que 123 precisa de um indicador ziguezague para trabalhar com o terminal de congelamento.
 
mntiwana:
Acho que o 123 precisa do indicador ziguezague para trabalhar com o terminal de congelamento.

Oindicador ziguezague já está disponível em mt4.

 
oguz:

O indicador ziguezague já está disponível em mt4.

O novo ziguezague não funciona como as versões anteriores. Ele pendurará o terminal se alguns parâmetros forem utilizados a partir de chamadas iCustom()
 

Hi.

Recentemente comecei a programar a MQL4 para ganhar experiência para que eu pudesse codificar minhas próprias idéias para testá-las de antemão.

Agora estou me debatendo com o momento da pintura.

Digamos que eu tenho um estatuto para alguns estochásticos e quero esperar até que o MA vá acima ou abaixo do preço antes de pintar, como posso fazer isso?

O que eu tentei e a única coisa que me veio à mente:

if(iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i) > 80
      && iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i+1) < 80

 while High[i] > iMA(NULL, PERIOD_CURRENT, MAfilter, 0, MODE_EMA, PRICE_CLOSE, i+1) //Candlestick High < Moving Average
            (
               1+1
            )
       
      )

{
         Buffer1[i] = High[i]; //Set indicator value at Candlestick High
         if(i == 0 && Time[0] != time_alert) { myAlert("indicator", "Selling opportunity"); time_alert = Time[0]; } //Instant alert, only once per bar
        }
      else
        {
         Buffer1[i] = 0;

o 1+1 só para preencher o loop while, o que estou tentando fazer é esperar para pintar a flecha até que o alto do preço esteja abaixo do MA, mas ainda assim eu não quero que isso seja e declaração desde que a cruz aconteceu eu só quero esperar utilizando tinta .

no entanto, isso não foi um sucesso, por isso peço aos programadores profissionais da comunidade

 
NWFstudent:

Hi.

Recentemente comecei a programar a MQL4 para ganhar experiência para que eu pudesse codificar minhas próprias idéias para testá-las de antemão.

Agora estou me debatendo com o momento da pintura.

Digamos que eu tenho um estatuto para alguns estochásticos e quero esperar até que o MA vá acima ou abaixo do preço antes de pintar, como posso fazer isso?

O que eu tentei e a única coisa que me veio à mente:

o 1+1 só para preencher o loop while, o que estou tentando fazer é esperar para pintar a flecha até que o alto do preço esteja abaixo do MA, mas ainda assim eu não quero que isso seja e declaração desde que a cruz aconteceu eu só quero esperar utilizando tinta .

no entanto, isso não foi um sucesso, por isso peço aos programadores profissionais da comunidade

Tente assim :

Buffer1[i] = 0;
if(   iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i)   > 80
   && iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i+1) < 80 
   && High[i] > iMA(NULL, PERIOD_CURRENT, MAfilter, 0, MODE_EMA, PRICE_CLOSE, i+1)) //Candlestick High < Moving Average
         Buffer1[i] = High[i]; //Set indicator value at Candlestick High

if(i == 0 && Time[0] != time_alert && Buffer1[i]!=0) { myAlert("indicator", "Selling opportunity"); time_alert = Time[0]; } //Instant alert, only once per bar
 
mladen:

Tente assim :

Isto me dará o "sinal somente quando o cruzamento ocorrer sobre o MA, eu o quero sob o MA, mas também quero o sinal se eu tiver um cruzamento acima do MA e algumas barras mais tarde o preço se move abaixo do MA".

Foi o que eu tentei com o loop do while, de modo que o código looparia até que o argumento se tornasse falso e se tornasse real para pintar o sinal.

Eu fiz um desenho esquemático, talvez você entenda melhor.

Obrigado por sua resposta de qualquer forma

Arquivos anexados:
illust.png  24 kb
Razão: