ПОМОГИТЕ !!!! переделать индиктор с MT4 под MT5.(бесплатно) - страница 4

 
George Merts:

Да, вот представьте, то, что вы предлагаете - стоит определенных усилий, а значит, и денег.

Все прекрасно понимают русский язык, но возиться "за спасибо" мало кому интересно.

Вот если бы у вас был успешный опыт торговли, в которой вам бы был нужен индикатор, тогда бы вам, возможно кто-то согласился бы что-то сделать без денег взамен на прибыльную торговую идею. А так - чисто ради "доброго имени" - боюсь, желающих будет мало...

Мой личный опыт здесь не причем. 

т.е. легендарный Ишимоку Вам неззнаком? Он за многие годы не зарекомендовал себя?

Вопрос то не торговом роботе, который сольет или не сольет депо.

Это традиционный Ишимоку к которому привинтили алерт. Решение принимает трейдер.

Вот и получилось не понимание русского языка - Вы даже не прочитали мой пост   . 

Я там даже выложил индикатор IchimokuAlert_v3.mq4  для мт4 и написал что использую его.

Вот для мт4 код индикатора  IchimokuAlert_v3.mq4 для тех кто не может скачать

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

 
Ваня:

Мой личный опыт здесь не причем. 

т.е. легендарный Ишимоку Вам неззнаком? Он за многие годы не зарекомендовал себя?

Вопрос то не торговом роботе, который сольет или не сольет депо.

Это традиционный Ишимоку к которому привинтили алерт. Решение принимает трейдер.

А в чем у вас вопрос ?

Вы хотите, чтобы вам что-то доработали. Если доработка несложная - ее могут сделать и "за спасибо". Но, раз вам рекомендуют Фриланс - значит, доработка не такая уж и мелкая.

А крупные доработки делаются только на двух основах. Либо трейдер оплачивает работу, либо предоставляет реально рабочую ТС.

Вы предлагаете индикатор ишимоку - но индикатор - это не система. Соответственно - никому особо возиться не хочется.

 

Ну, дык все верно пишет вам ошибки.

Вы же сами поглядите - когда управление придет к оператору if ?

В обоих случаях у вас этот оператор просто "висит в воздухе" - о чем вас и предупреждает компилятор. "Выражение не допускается на глобальном уровне".

Оператор if должен стоять в точке, где у вас должен будет вызван алерт, а не "висеть в воздухе".

И, тут нет разницы, МТ4 или МТ5 - в обоих случаях так делать нельзя. Оператор if передает управление одной из ветвей, он не может "просто висеть в воздухе".

"В воздухе" могут висеть только ваши процедуры и функции, которые будут вызваны либо терминалом при обработке событий  - OnCalculte(), либо вами самостоятельно - DoAlerts().  

 
George Merts:

Ну, дык все верно пишет вам ошибки.

Вы же сами поглядите - когда управление придет к оператору if ?

В обоих случаях у вас этот оператор просто "висит в воздухе" - о чем вас и предупреждает компилятор. "Выражение не допускается на глобальном уровне".

Оператор if должен стоять в точке, где у вас должен будет вызван алерт, а не "висеть в воздухе".

И, тут нет разницы, МТ4 или МТ5 - в обоих случаях так делать нельзя. Оператор if передает управление одной из ветвей, он не может "просто висеть в воздухе".

"В воздухе" могут висеть только ваши процедуры и функции, которые будут вызваны либо терминалом при обработке событий  - OnCalculte(), либо вами самостоятельно - DoAlerts().  

я не программист 

для меня это темный лес 

 
Ваня:

я не программист 

для меня это темный лес 

Ну дык вам и указали на сервис Фриланс. Там - обитают программисты, которые без проблем сформируют ТЗ по согласованию с вами, и выполнят его по сходной цене.

Здесь же форум, где новичкам могут помочь, но именно помочь - тем, кто направляет усилия на то, чтобы расти, как программист.  Достаточно многим трейдерам это неинтересно - и Фриланс для них очень даже разумное решение.

 
George Merts:

Ну дык вам и указали на сервис Фриланс. Там - обитают программисты, которые без проблем сформируют ТЗ по согласованию с вами, и выполнят его по сходной цене.

Здесь же форум, где новичкам могут помочь, но именно помочь - тем, кто направляет усилия на то, чтобы расти, как программист.  Достаточно многим трейдерам это неинтересно - и Фриланс для них очень даже разумное решение.

Я всего лишь хотел потестировать мт5.

На мт4 все индикаторы есть. Работают.

Раз невозможно комфортно даже потестировать...

Теперь понял что мт5 тот еще геморрой.

 
Ваня:

Я всего лишь хотел потестировать мт5.

На мт4 все индикаторы есть. Работают.

Раз невозможно комфортно даже потестировать...

Теперь понял что мт5 тот еще геморрой.

Mt5 так-же как и mql5 совсем не геморрой.

Только я не тестировал индикатор. Если будут проблемы, пиши, тогда буду сам тестировать и искать проблему.
 
Alexey Viktorov:
Mt5 так-же как и mql5 совсем не геморрой.

Только я не тестировал индикатор. Если будут проблемы, пиши, тогда буду сам тестировать и искать проблему.
ArraySetAsSeries забыли
 
o_O:
ArraySetAsSeries забыли
Ага... Я уже исправляю.



Теперь исправлено, проверено. Алерты есть, но не знаю правильно-ли.

Ваня после проверки сообщи пожалуйста правильно-ли алерты. Индикатор будет в СodeBase.
Файлы:
 
Alexey Viktorov:
Ага... Я уже исправляю.



Теперь исправлено, проверено. Алерты есть, но не знаю правильно-ли.

Ваня после проверки сообщи пожалуйста правильно-ли алерты. Индикатор будет в СodeBase.

Спасибо! Добрый человек! Да прибудет вам ЗДОРОВЬЯ и профит на всю оставшуюся вечность!

Буду тестировать. 

Причина обращения: