HELP !!!! converter um indicador do MT4 para MT5. - página 4

 
George Merts:

Sim, imagine, o que você está propondo custa uma certa quantidade de esforço e, portanto, dinheiro.

Todos entendem russo perfeitamente bem, mas muito poucas pessoas estão interessadas em fazer isso "por um agradecimento".

Mas se você tivesse uma experiência de sucesso na negociação, na qual você precisaria de um indicador, talvez alguém concordasse em fazer algo sem dinheiro em troca de uma idéia de negociação lucrativa. Enquanto isso - puramente pelo "bom nome" - temo que não haverá muitas pessoas dispostas a fazê-lo...

Minha experiência pessoal não tem nada a ver com isso.

Então o lendário Ishimoku não é familiar a você? Não tem sido comprovado ao longo de muitos anos?

Não é uma questão de um robô comercial que perderá ou não um depósito.

É um Ishimoku tradicional com um alerta aparafusado. A decisão cabe ao comerciante.

Foi assim que você ficou com o mal-entendido da língua russa - você ainda nem leu meu post.

Eu até adicionei o indicadorIchimokuAlert_v3.mq4 para mt4 e escrevi que o utilizo.

Aqui está o código para o indicadorIchimokuAlert_v3.mq4 do mt4 para aqueles que não podem baixar

//+------------------------------------------------------------------+
//|                                             IchimokuAlert_v2.mq4 |
//|                                  Copyright © 2006, Forex-TSD.com |
//|                         Written by IgorAD,igorad2003@yahoo.co.uk |
//|                           Adapted and improved by Snowski © 2009 |  
//+------------------------------------------------------------------+

#property copyright "Copyright © 2006, Forex-TSD.com "
#property link      "http://www.forex-tsd.com/"

#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 SandyBrown
#property indicator_color4 Thistle
#property indicator_color5 Lime
#property indicator_color6 SandyBrown
#property indicator_color7 Thistle

//---- input parameters
extern int Tenkan             = 9;
extern int Kijun              = 26;
extern int Senkou             = 52;
extern bool UseAlerts         = true;
extern bool MsgAlerts         = true;
extern bool SoundAlerts       = true;
extern bool eMailAlerts       = false;
extern int AlertType          = 1;
extern string Alert_Setting   = "--- Alert Type:---";
extern string A_S0            = "0 = no alert";
extern string A_S1            = "1 = Tenkan crosses Kjiun";
extern string A_S2            = "2 = Kijun crosses Price";
extern string A_S3            = "3 = both";
extern bool Show_Tenkan       = true;
extern bool Show_Kijun        = true;
extern bool Show_Senkou       = true;
extern bool Show_Kumo         = true;
//---- buffers
double Tenkan_Buffer[];
double Kijun_Buffer[];
double SpanA_Buffer[];
double SpanB_Buffer[];
double Chinkou_Buffer[];
double SpanA2_Buffer[];
double SpanB2_Buffer[];
//----
int a_begin;
bool UptrendAlert1,DntrendAlert1,UptrendAlert2,DntrendAlert2;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//----
   if(Show_Tenkan==true){
      SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
      SetIndexBuffer(0,Tenkan_Buffer);
      SetIndexDrawBegin(0,Tenkan-1);
      SetIndexLabel(0,"Tenkan Sen");
   }  
//----
   if(Show_Kijun==true){
      SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
      SetIndexBuffer(1,Kijun_Buffer);
      SetIndexDrawBegin(1,Kijun-1);
      SetIndexLabel(1,"Kijun Sen");
      }
//----
   if(Show_Kumo==true){
      a_begin=Kijun; if(a_begin<Tenkan) a_begin=Tenkan;
      SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_DOT);
      SetIndexBuffer(2,SpanA_Buffer);
      SetIndexDrawBegin(2,Kijun+a_begin-1);
      SetIndexShift(2,Kijun);
      SetIndexLabel(2,NULL);
      SetIndexStyle(5,DRAW_LINE,STYLE_SOLID);
      SetIndexBuffer(5,SpanA2_Buffer);
      SetIndexDrawBegin(5,Kijun+a_begin-1);
      SetIndexShift(5,Kijun);
      SetIndexLabel(5,"Senkou Span A");
   }
//----
   if(Show_Kumo==true){
      SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_DOT);
      SetIndexBuffer(3,SpanB_Buffer);
      SetIndexDrawBegin(3,Kijun+Senkou-1);
      SetIndexShift(3,Kijun);
      SetIndexLabel(3,NULL);
      SetIndexStyle(6,DRAW_LINE,STYLE_SOLID);
      SetIndexBuffer(6,SpanB2_Buffer);
      SetIndexDrawBegin(6,Kijun+Senkou-1);
      SetIndexShift(6,Kijun);
      SetIndexLabel(6,"Senkou Span B");
   }
//----
   if(Show_Senkou==true){
      SetIndexStyle(4,DRAW_LINE);
      SetIndexBuffer(4,Chinkou_Buffer);
      SetIndexShift(4,-Kijun);
      SetIndexLabel(4,"Chinkou Span");
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Ichimoku Kinko Hyo                                               |
//+------------------------------------------------------------------+
int start()
{
   int    i,k;
   int    counted_bars=IndicatorCounted();
   double high,low,price;
//----
   if(Bars<=Tenkan || Bars<=Kijun || Bars<=Senkou) return(0);
//---- initial zero
   if(counted_bars<1)
     {
      for(i=1;i<=Tenkan;i++)    Tenkan_Buffer[Bars-i]=0;
      for(i=1;i<=Kijun;i++)     Kijun_Buffer[Bars-i]=0;
      for(i=1;i<=a_begin;i++) { SpanA_Buffer[Bars-i]=0; SpanA2_Buffer[Bars-i]=0; }
      for(i=1;i<=Senkou;i++)  { SpanB_Buffer[Bars-i]=0; SpanB2_Buffer[Bars-i]=0; }
     }
//---- Tenkan Sen
      i=Bars-Tenkan;
      if(counted_bars>Tenkan) i=Bars-counted_bars-1;
         while(i>=0)
            {
            high=High[i]; low=Low[i]; k=i-1+Tenkan;
         while(k>=i)
            {
            price=High[k];
            if(high<price) high=price;
            price=Low[k];
            if(low>price)  low=price;
            k--;
           }
         Tenkan_Buffer[i]=(high+low)/2;
         i--;
      }
//---- Kijun Sen
   i=Bars-Kijun;
   if(counted_bars>Kijun) i=Bars-counted_bars-1;
   while(i>=0)
     {
      high=High[i]; low=Low[i]; k=i-1+Kijun;
      while(k>=i)
        {
         price=High[k];
         if(high<price) high=price;
         price=Low[k];
         if(low>price)  low=price;
         k--;
        }
      Kijun_Buffer[i]=(high+low)/2;
      i--;
     }
//---- Senkou Span A
   i=Bars-a_begin+1;
   if(counted_bars>a_begin-1) i=Bars-counted_bars-1;
   while(i>=0)
     {
      price=(Kijun_Buffer[i]+Tenkan_Buffer[i])/2;
      SpanA_Buffer[i]=price;
      SpanA2_Buffer[i]=price;
      i--;
     }
//---- Senkou Span B
   i=Bars-Senkou;
   if(counted_bars>Senkou) i=Bars-counted_bars-1;
   while(i>=0)
     {
      high=High[i]; low=Low[i]; k=i-1+Senkou;
      while(k>=i)
        {
         price=High[k];
         if(high<price) high=price;
         price=Low[k];
         if(low>price)  low=price;
         k--;
        }
      price=(high+low)/2;
      SpanB_Buffer[i]=price;
      SpanB2_Buffer[i]=price;
      i--;
     }
//---- Chinkou Span
   i=Bars-1;
   if(counted_bars>1) i=Bars-counted_bars-1;
   while(i>=0) { Chinkou_Buffer[i]=Close[i]; i--; }
  
//----
   string Msg,Subj;
  
   if (AlertType == 1 || AlertType == 3)
   {
      if (Tenkan_Buffer[1]>Kijun_Buffer[1] && Tenkan_Buffer[2]<Kijun_Buffer[2] && !UptrendAlert1)
      {
         Subj = "Tenkan crosses Kijun: "+Symbol()+" on M"+Period();
         Msg = "BUY Signal --- : "+Subj+ " @ "+DoubleToStr(Close[1],Digits) + ", @ " + TimeToStr(TimeLocal(),TIME_SECONDS);
         UptrendAlert1 = true;
         DntrendAlert1 = false;
         DoAlerts(Msg,Subj);
      }
      if ( Tenkan_Buffer[1]<Kijun_Buffer[1] && Tenkan_Buffer[2]>Kijun_Buffer[2] && !DntrendAlert1)
      {  
         Subj = "Tenkan crosses Kijun: "+Symbol()+" on M"+Period();
         Msg = "SELL Signal --- : "+Subj+ " @ "+DoubleToStr(Close[1],Digits) + ", @ " + TimeToStr(TimeLocal(),TIME_SECONDS);
         UptrendAlert1 = false;
         DntrendAlert1 = true;
         DoAlerts(Msg,Subj);
      }
   }
  
   if (AlertType == 2 || AlertType == 3)
   {
      if (Close[1]>Close[1+Kijun] && Close[2]<Close[2+Kijun] && !UptrendAlert2)
      {
         Subj = "Kijun crossed Price: "+Symbol()+" on M"+Period();
         Msg = "BUY Signal --- : "+Subj+ " @ "+DoubleToStr(Close[1],Digits) + ", @ " + TimeToStr(TimeLocal(),TIME_SECONDS);
         DntrendAlert2 = false;
         UptrendAlert2 = true;
         DoAlerts(Msg,Subj);
      }
      if (Close[1]<Close[1+Kijun] && Close[2]>Close[2+Kijun] && !DntrendAlert2)
      {
         Subj = "Kijun crossed Price: "+Symbol()+" on M"+Period();
         Msg = "SELL Signal --- : "+Subj+ " @ "+DoubleToStr(Close[1],Digits) + ", @ " + TimeToStr(TimeLocal(),TIME_SECONDS);
         DntrendAlert2 = true;
         UptrendAlert2 = false;
         DoAlerts(Msg,Subj);
      }
   }
   return(0);
}

void DoAlerts(string msgText, string eMailSub)
{
   if (MsgAlerts) Alert(msgText);
   if (eMailAlerts) SendMail(eMailSub, msgText);
}
//+------------------------------------------------------------------+

 
Ваня:

Minha experiência pessoal não tem nada a ver com isso.

Então o lendário Ishimoku não lhe é familiar? Isso não tem se provado ao longo dos anos?

Não é uma questão de um robô comercial que perderá ou não um depósito.

É um Ishimoku tradicional com um alerta aparafusado. A decisão cabe ao comerciante.

Qual é a sua pergunta?

Você quer ser retrabalhado. Se a melhoria não for muito difícil, ela pode ser feita mediante o pagamento de uma taxa. Mas se eles recomendam que você vá à Freelancer, isso significa que suas melhorias não são tão pequenas.

E há apenas duas bases para fazer grandes revisões. Ou o comerciante paga pelo trabalho, ou fornece um TS realmente funcional.

Você está oferecendo um indicador ishimoku - mas o indicador não é um sistema. Portanto, ninguém quer se preocupar com isso.

 

Bem, é isso mesmo, é dizer-lhe erros.

Procure por si mesmo - quando o controle chegar à declaração do se?

Em ambos os casos, este operador apenas "fica pendurado no ar" - é sobre isso que o compilador o adverte. "A expressão não é permitida em nível global".

A declaração deve ficar no ponto em que você quer que o alerta seja chamado, e não "pendurado no ar".

E, não faz diferença se é MT4 ou MT5 - você não pode fazer isso em ambos os casos. Se a declaração passa o controle para um dos galhos, ela não pode "ficar no ar".

Somente seus procedimentos e funções podem "ficar no ar" e ser chamados ou pelo terminal ao lidar com eventos- OnCalculte(), ou por você mesmo - DoAlerts().

 
George Merts:

Bem, é isso mesmo, é dizer-lhe erros.

Procure por si mesmo - quando o controle chegar à declaração do se?

Em ambos os casos, este operador apenas "fica pendurado no ar" - é sobre isso que o compilador o adverte. "A expressão não é permitida em nível global".

A declaração deve ficar no ponto em que você quer que o alerta seja chamado, e não "pendurado no ar".

E, não faz diferença se é MT4 ou MT5 - você não pode fazer isso em ambos os casos. Se a declaração passa o controle para um dos galhos, ela não pode "ficar no ar".

Somente seus procedimentos e funções podem "ficar no ar", que será chamado ou pelo terminal ao processar eventos- OnCalculte(), ou por você mesmo - DoAlerts().

Eu não sou um programador

Para mim, é uma floresta escura.

 
Ваня:

Eu não sou um programador.

é uma floresta escura para mim.

Bem, você foi apontado para o serviço Freelance. Lá - programadores ao vivo que não têm problemas para formar o TOR em consulta com você, e realizá-lo a um preço semelhante.

Há um fórum onde eles podem ajudar os novatos, mas realmente ajudar aqueles que estão tentando crescer como programadores. Muitos comerciantes não estão interessados nisso - e para eles o freelance é uma solução muito razoável.

 
George Merts:

Bem, você foi apontado para o serviço Freelance. Há programadores lá, que facilmente formarão o TOR em consulta com você, e o executarão a um preço razoável.

Entendi que o mt5 é uma verdadeira confusão. Mas este é um fórum onde eles podem ajudar os iniciantes, mas para ajudar aqueles que estão tentando crescer como programadores. Muitos comerciantes não estão interessados nele, e o Freelance é uma solução muito razoável para eles.

Eu só queria testar o mt5.

Eu tenho todos os indicadores no mt4. Eles funcionam.

Como não posso nem mesmo testá-lo confortavelmente...

Agora eu entendo que o mt5 é um verdadeiro chato.

 
Ваня:

Eu só queria testar o mt5.

No mt4 todos os indicadores estão lá. Eles funcionam.

Uma vez que é impossível até testá-lo confortavelmente.

Agora eu entendo que o mt5 é um verdadeiro chato.

O Mt5 não é um chato, nem o mql5.

No entanto, não testei o indicador. Se você tiver algum problema, me diga, eu mesmo o testarei e procurarei por problemas.
 
Alexey Viktorov:
O Mt5, assim como o mql5, não é uma dor de cabeça.

Só que eu não testei o indicador. Se você tiver algum problema, me avise e eu mesmo o testarei.
O ArraySetAsSeries foi esquecido.
 
o_O:
ArraySetAsSeries esquecido
Sim... Eu já estou consertando.



Está consertado agora, verificado. Os alertas estão lá, mas não sei se estão corretos.

Vanya, por favor me informe a exatidão dos alertas após verificá-los. O indicador estará em CodeBase.
Arquivos anexados:
 
Alexey Viktorov:
Sim... Eu já estou consertando.



Está corrigido agora, testado. Os alertas estão lá, mas não sei se estão corretos.

Vanya, por favor me avise se os alertas estão corretos após verificação. O indicador estará em CodeBase.

Obrigado! Bom homem! Que você seja SAUDÁVEL e lucrativo para o resto da eternidade!

Estarei testando.