AIDE ! !!! convertir un indicateur de MT4 à MT5. - page 4

 
George Merts:

Oui, imaginez, ce que vous proposez coûte un certain nombre d'efforts, et donc de l'argent.

Tout le monde comprend parfaitement le russe, mais très peu de personnes sont intéressées à faire cela "pour un remerciement".

Mais si vous avez eu une expérience commerciale réussie, dans laquelle vous auriez besoin d'un indicateur, peut-être quelqu'un accepterait-il de faire quelque chose sans argent en échange d'une idée commerciale rentable. Dans l'intervalle - par souci de "bonne réputation" - je crains qu'il n'y ait pas beaucoup de personnes prêtes à le faire...

Mon expérience personnelle n'a rien à voir avec cela.

Donc le légendaire Ishimoku ne vous est pas familier ? N'a-t-elle pas fait ses preuves depuis de nombreuses années ?

Il ne s'agit pas d'un robot de trading qui va ou non perdre un dépôt.

C'est un Ishimoku traditionnel avec une alerte vissée dessus. La décision appartient à l'opérateur.

C'est de là que vient votre incompréhension de la langue russe - vous n'avez même pas lu mon post.

J'ai même ajouté l'indicateurIchimokuAlert_v3.mq4 pour mt4 et écrit que je l'utilise.

Voici le code de l'indicateur mt4IchimokuAlert_v3.mq4 pour ceux qui ne peuvent pas le télécharger.

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

 
Ваня:

Mon expérience personnelle n'a rien à voir avec cela.

Alors le légendaire Ishimoku ne vous est pas familier ? N'a-t-elle pas fait ses preuves au fil des ans ?

Il ne s'agit pas d'un robot de trading qui va ou non perdre un dépôt.

C'est un Ishimoku traditionnel avec une alerte vissée dessus. La décision appartient à l'opérateur.

Quelle est votre question ?

Vous voulez être retravaillé. Si l'amélioration n'est pas trop difficile, elle peut être réalisée contre rémunération. Mais s'ils vous recommandent d'aller sur Freelancer, cela signifie que vos améliorations ne sont pas si minimes.

Et il n'y a que deux bases pour effectuer des révisions majeures. Soit le commerçant paie pour le travail, soit il fournit un TS qui fonctionne vraiment.

Vous proposez un indicateur ishimoku - mais l'indicateur n'est pas un système. Par conséquent, personne ne veut s'en préoccuper.

 

Eh bien, c'est vrai, il vous indique des erreurs.

Regardez par vous-même - lorsque le contrôle s'applique à l'instruction if ?

Dans les deux cas, cet opérateur reste simplement "en suspens" - c'est ce contre quoi le compilateur vous met en garde. "L'expression n'est pas autorisée au niveau mondial".

L'instruction if doit se trouver à l'endroit où vous voulez que l'alerte soit déclenchée, et non pas "en suspens".

Et, peu importe qu'il s'agisse de MT4 ou de MT5 - vous ne pouvez pas le faire dans les deux cas. L'instruction if transmet le contrôle à l'une des branches, elle ne peut pas "rester en l'air".

Seules vos procédures et fonctions peuvent être "suspendues en l'air" et être appelées soit par le terminal lors du traitement des événements- OnCalculte(), soit par vous-même - DoAlerts().

 
George Merts:

Eh bien, c'est vrai, il vous indique des erreurs.

Regardez par vous-même - lorsque le contrôle s'applique à l'instruction if ?

Dans les deux cas, cet opérateur reste simplement "en suspens" - c'est ce contre quoi le compilateur vous met en garde. "L'expression n'est pas autorisée au niveau mondial".

L'instruction if doit se trouver à l'endroit où vous voulez que l'alerte soit déclenchée, et non pas "en suspens".

Et, peu importe qu'il s'agisse de MT4 ou de MT5 - vous ne pouvez pas le faire dans les deux cas. L'instruction if transmet le contrôle à l'une des branches, elle ne peut pas "rester en l'air".

Seules vos procédures et fonctions peuvent être "suspendues en l'air", qui seront appelées soit par le terminal lors du traitement des événements- OnCalculte(), soit par vous-même - DoAlerts().

Je ne suis pas un programmeur

Pour moi, c'est une forêt sombre.

 
Ваня:

Je ne suis pas un programmeur.

c'est une forêt sombre pour moi.

Eh bien, on vous a orienté vers le service Freelance. Il y a des programmeurs en chair et en os qui n'ont aucun problème à former le RPT en concertation avec vous, et à le réaliser à un prix similaire.

Il existe un forum où ils peuvent aider les débutants, mais ils aident vraiment ceux qui essaient de se développer en tant que programmeur. Beaucoup de traders ne sont pas intéressés par cela - et le freelance est pour eux une solution très raisonnable.

 
George Merts:

Eh bien, on vous a orienté vers le service Freelance. Il existe des programmeurs qui peuvent facilement créer le RPT en concertation avec vous et l'exécuter à un prix raisonnable.

J'ai compris que mt5 est un vrai bordel. Mais c'est un forum où ils peuvent aider les débutants, mais pour aider ceux qui essaient de se développer en tant que programmeur. Pas mal de traders ne sont pas intéressés par cela, et Freelance est une solution très raisonnable pour eux.

Je voulais juste tester mt5.

J'ai tous les indicateurs sur mt4. Ils fonctionnent.

Comme je ne peux même pas le tester confortablement...

Je comprends maintenant que mt5 est un vrai casse-tête.

 
Ваня:

Je voulais juste tester le mt5.

Sur mt4 tous les indicateurs sont là. Ils fonctionnent.

Puisqu'il est impossible de le tester confortablement...

Je comprends maintenant que mt5 est un vrai casse-tête.

Mt5 n'est pas un casse-tête, mql5 non plus.

Je n'ai cependant pas testé l'indicateur. Si vous avez des problèmes, dites-le moi, je le testerai moi-même et chercherai des problèmes.
 
Alexey Viktorov:
Mt5 ainsi que mql5 n'est pas une douleur dans le cul.

Seulement, je n'ai pas testé l'indicateur. Si vous rencontrez des problèmes, faites-le moi savoir et je le testerai moi-même.
ArraySetAsSeries a été oublié.
 
o_O:
ArraySetAsSeries oublié
Ouais... Je suis déjà en train de le réparer.



C'est réparé maintenant, vérifié. Les alertes sont là, mais je ne sais pas si c'est correct.

Vanya, veuillez me faire savoir si les alertes sont correctes après les avoir vérifiées. L'indicateur sera dans CodeBase.
Dossiers :
 
Alexey Viktorov:
Ouais... Je suis déjà en train de le réparer.



C'est corrigé maintenant, testé. Les alertes sont là, mais je ne sais pas si c'est correct.

Vanya, veuillez me faire savoir si les alertes sont correctes après vérification. L'indicateur sera dans CodeBase.

Merci ! C'est bien ! Puissiez-vous être en SANTÉ et rentable pour le reste de l'éternité !

Je vais faire des tests.

Raison: