HELP !!!! convertire un indicatore da MT4 a MT5. - pagina 4

 
George Merts:

Sì, immaginate, quello che proponete costa una certa quantità di sforzo, e quindi di denaro.

Tutti capiscono perfettamente il russo, ma pochissime persone sono interessate a farlo "per ringraziamento".

Ma se tu avessi un'esperienza di trading di successo, in cui avresti bisogno di un indicatore, forse qualcuno accetterebbe di fare qualcosa senza soldi in cambio di un'idea di trading redditizia. Nel frattempo - puramente per il "buon nome" - temo che non ci saranno molte persone disposte a farlo...

La mia esperienza personale non c'entra niente.

Quindi il leggendario Ishimoku non ti è familiare? Non si è dimostrato per molti anni?

Non è una questione di un robot di trading che perderà o meno un deposito.

È un Ishimoku tradizionale con un allarme avvitato. La decisione spetta al commerciante.

Ecco come hai avuto il fraintendimento della lingua russa - non hai nemmeno letto il mio post.

Ho anche aggiunto l'indicatoreIchimokuAlert_v3.mq4 per mt4 e ho scritto che lo uso.

Ecco il codice dell'indicatore mt4IchimokuAlert_v3.mq4 per coloro che non possono scaricare

//+------------------------------------------------------------------+
//|                                             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);
}
//+------------------------------------------------------------------+

 
Ваня:

La mia esperienza personale non c'entra niente.

Quindi il leggendario Ishimoku non ti è familiare? Non ha dato prova di sé nel corso degli anni?

Non è una questione di un robot di trading che perderà o meno un deposito.

È un Ishimoku tradizionale con un allarme avvitato. La decisione spetta al commerciante.

Qual è la sua domanda?

Vuoi essere rielaborato. Se il miglioramento non è troppo difficile, può essere fatto a pagamento. Ma se ti raccomandano di andare su Freelancer, significa che i tuoi miglioramenti non sono così piccoli.

E ci sono solo due basi per fare grandi revisioni. O il commerciante paga il lavoro, o fornisce un TS realmente funzionante.

State offrendo un indicatore ishimoku - ma l'indicatore non è un sistema. Pertanto, nessuno vuole preoccuparsene.

 

Beh, è vero, ti dice degli errori.

Guardate voi stessi - quando il controllo arriva all'istruzione if?

In entrambi i casi questo operatore "rimane sospeso nell'aria" - questo è ciò di cui il compilatore ti avverte. "L'espressione non è consentita a livello globale".

L'istruzione if deve stare nel punto in cui volete che l'allarme sia chiamato, non "sospeso in aria".

E non fa differenza se si tratta di MT4 o MT5 - non è possibile farlo in entrambi i casi. L'istruzione if passa il controllo a uno dei rami, non può "rimanere in sospeso".

Solo le vostre procedure e funzioni possono essere "sospese in aria" ed essere chiamate o dal terminale quando si gestiscono eventi- OnCalculte(), o da voi stessi - DoAlerts().

 
George Merts:

Beh, è vero, ti dice degli errori.

Guardate voi stessi - quando il controllo arriva all'istruzione if?

In entrambi i casi questo operatore "rimane sospeso nell'aria" - questo è ciò di cui il compilatore ti avverte. "L'espressione non è consentita a livello globale".

L'istruzione if deve stare nel punto in cui volete che l'allarme sia chiamato, non "sospeso in aria".

E non fa differenza se si tratta di MT4 o MT5 - non è possibile farlo in entrambi i casi. L'istruzione if passa il controllo a uno dei rami, non può "rimanere in sospeso".

Solo le vostre procedure e funzioni possono essere "appese in aria", che saranno chiamate o dal terminale durante l'elaborazione degli eventi- OnCalculte(), o da voi stessi - DoAlerts().

Non sono un programmatore

Per me, è una foresta oscura.

 
Ваня:

Non sono un programmatore.

è una foresta oscura per me.

Bene, sei stato indirizzato al servizio Freelance. Lì - programmatori dal vivo che non hanno problemi a formare la TOR in consultazione con voi, e a realizzarla a un prezzo simile.

C'è un forum dove possono aiutare i neofiti, ma aiutare davvero chi sta cercando di crescere come programmatore. Un bel po' di commercianti non sono interessati - e Freelance per loro è una soluzione molto ragionevole.

 
George Merts:

Bene, sei stato indirizzato al servizio Freelance. Ci sono programmatori che formeranno facilmente la TOR in consultazione con voi, e la eseguiranno ad un prezzo ragionevole.

Ho capito che mt5 è un vero casino. Ma questo è un forum dove possono aiutare i principianti, ma per aiutare coloro che stanno cercando di crescere come programmatore. Molti trader non sono interessati, e Freelance è una soluzione molto ragionevole per loro.

Volevo solo testare mt5.

Ho tutti gli indicatori su mt4. Funzionano.

Dato che non posso nemmeno provarlo comodamente...

Ora capisco che mt5 è una vera spina nel fianco.

 
Ваня:

Volevo solo testare l'mt5.

Su mt4 tutti gli indicatori sono presenti. Funzionano.

Dato che è impossibile anche solo provarlo comodamente...

Ora capisco che mt5 è una vera spina nel fianco.

Mt5 non è una spina nel fianco, e nemmeno mql5.

Non ho però testato l'indicatore. Se avete qualche problema, ditemelo, lo testerò io stesso e cercherò i problemi.
 
Alexey Viktorov:
Mt5 così come mql5 non è una spina nel fianco.

Solo che non ho testato l'indicatore. Se avete problemi, fatemelo sapere e lo testerò io stesso.
ArraySetAsSeries è stato dimenticato.
 
o_O:
ArraySetAsSeries dimenticato
Già... Lo sto già sistemando.



Ora è riparato, controllato. Gli avvisi ci sono, ma non so se è corretto.

Vanya, fammi sapere la correttezza degli avvisi dopo averli controllati. L'indicatore sarà in CodeBase.
File:
 
Alexey Viktorov:
Già... Lo sto già sistemando.



Ora è risolto, testato. Gli avvisi ci sono, ma non so se è corretto.

Vanya, fammi sapere se gli avvisi sono corretti dopo il controllo. L'indicatore sarà in CodeBase.

Grazie! Bravo! Che tu possa essere sano e redditizio per il resto dell'eternità!

Farò dei test.

Motivazione: