HELP!!MT4からMT5へインジケーターを変換する。 - ページ 3

 
10937:
あ、デルタ(差分)を見て、価格がどちらに傾いているかを推測するのに使いたいんですね ))))
まあ、それは男がそれを言及したときに最初に来る考えです
 

MT5を試しています。

MT4ではIchimokuAlert_v3インジケータを使用しています。

ここから先は私が担当しましたhttps://www.forex-tsd.com/forum/debates-discussions/1175-ichimoku-alert/page2#comment_418797

どなたか知識のある方がMT5用に変換してください。

ここから方法論で変換してみた http://metatrader5.blogspot.com/2009/10/rewrite-mql-4-to-mql-5-script.html

55のエラーでコンパイル

ファイル:
 
Ваня:

MT5を試しています。

MT4ではIchimokuAlert_v3インジケータを使用しています。

ここから先は私が担当しました https://www.forex-tsd.com/forum/debates-discussions/1175-ichimoku-alert/page2#comment_418797

どなたか知識のある方がMT5用に変換してください。

ここから方法論で変換してみた http://metatrader5.blogspot.com/2009/10/rewrite-mql-4-to-mql-5-script.html

コンパイル時に55個のエラーが発生します。

MT5配信からイシモクを開くことが容易になります。

そして、その中にアラートからのコードブロックをコピーしてください。

//----
   string Msg,Subj;
  
   if (AlertType == 1 || AlertType == 3)
   {
      if (Tenkan_Buffer[1]>Kijun_Buffer[1] && Tenkan_Buffer[2]<Kijun_Buffer[2] && !UptrendAlert1)
...
...
...
 
o_O:

mt5の配信からIshimokuを開くと楽です。

そして、その中にアラートからのコードブロックをコピーしてください。

//----
   string Msg,Subj;
  
   if (AlertType == 1 || AlertType == 3)
   {
      if (Tenkan_Buffer[1]>Kijun_Buffer[1] && Tenkan_Buffer[2]<Kijun_Buffer[2] && !UptrendAlert1)
...
...
...

ありがとうございました。いい人だ。

このコードブロックは、どの行の間に挿入すればよいか教えてください。

最後にブロックを入れました。6つのコンパイラーエラーが発生しました。

に非難しているのです。

136行目 if (AlertType == 1 || AlertType == 3)

156行目 if (AlertType == 2 || AlertType == 3)

175行目 return(rates_total)。

176 行目はブラケットに誓う }。

180 行目 if (MsgAlerts) Alert(msgText);

181行目 if (eMailAlerts)SendMail(eMailSub, msgtext);

//+------------------------------------------------------------------+
//|                                                     Ichimoku.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property description "Ichimoku Kinko Hyo"
//--- indicator settings
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots   4
#property indicator_type1   DRAW_LINE
#property indicator_type2   DRAW_LINE
#property indicator_type3   DRAW_FILLING
#property indicator_type4   DRAW_LINE
#property indicator_color1  Red
#property indicator_color2  Blue
#property indicator_color3  SandyBrown,Thistle
#property indicator_color4  Lime
#property indicator_label1  "Tenkan-sen"
#property indicator_label2  "Kijun-sen"
#property indicator_label3  "Senkou Span A;Senkou Span B"
#property indicator_label4  "Chikou Span"
//--- input parameters
input int InpTenkan=9;     // Tenkan-sen
input int InpKijun=26;     // Kijun-sen
input int InpSenkou=52;    // Senkou Span B
//--- indicator buffers
double    ExtTenkanBuffer[];
double    ExtKijunBuffer[];
double    ExtSpanABuffer[];
double    ExtSpanBBuffer[];
double    ExtChikouBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtTenkanBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtKijunBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,ExtSpanABuffer,INDICATOR_DATA);
   SetIndexBuffer(3,ExtSpanBBuffer,INDICATOR_DATA);
   SetIndexBuffer(4,ExtChikouBuffer,INDICATOR_DATA);
//---
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,InpTenkan);
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,InpKijun);
   PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,InpSenkou-1);
//--- lines shifts when drawing
   PlotIndexSetInteger(2,PLOT_SHIFT,InpKijun);
   PlotIndexSetInteger(3,PLOT_SHIFT,-InpKijun);
//--- change labels for DataWindow
   PlotIndexSetString(0,PLOT_LABEL,"Tenkan-sen("+string(InpTenkan)+")");
   PlotIndexSetString(1,PLOT_LABEL,"Kijun-sen("+string(InpKijun)+")");
   PlotIndexSetString(2,PLOT_LABEL,"Senkou Span A;Senkou Span B("+string(InpSenkou)+")");
//--- initialization done
  }
//+------------------------------------------------------------------+
//| get highest value for range                                      |
//+------------------------------------------------------------------+
double Highest(const double&array[],int range,int fromIndex)
  {
   double res=0;
//---
   res=array[fromIndex];
   for(int i=fromIndex;i>fromIndex-range && i>=0;i--)
     {
      if(res<array[i]) res=array[i];
     }
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| get lowest value for range                                       |
//+------------------------------------------------------------------+
double Lowest(const double&array[],int range,int fromIndex)
  {
   double res=0;
//---
   res=array[fromIndex];
   for(int i=fromIndex;i>fromIndex-range && i>=0;i--)
     {
      if(res>array[i]) res=array[i];
     }
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| Ichimoku Kinko Hyo                                               |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int limit;
//---
   if(prev_calculated==0) limit=0;
   else                   limit=prev_calculated-1;
//---
   for(int i=limit;i<rates_total && !IsStopped();i++)
     {
      ExtChikouBuffer[i]=close[i];
      //--- tenkan sen
      double _high=Highest(high,InpTenkan,i);
      double _low=Lowest(low,InpTenkan,i);
      ExtTenkanBuffer[i]=(_high+_low)/2.0;
      //--- kijun sen
      _high=Highest(high,InpKijun,i);
      _low=Lowest(low,InpKijun,i);
      ExtKijunBuffer[i]=(_high+_low)/2.0;
      //--- senkou span a
      ExtSpanABuffer[i]=(ExtTenkanBuffer[i]+ExtKijunBuffer[i])/2.0;
      //--- senkou span b
      _high=Highest(high,InpSenkou,i);
      _low=Lowest(low,InpSenkou,i);
      ExtSpanBBuffer[i]=(_high+_low)/2.0;
     }
//--- done
   return(rates_total);
  }
//+------------------------------------------------------------------+

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

void DoAlerts(string msgText, string eMailSub)
{
   if (MsgAlerts) Alert(msgText);
   if (eMailAlerts) SendMail(eMailSub, msgText);
}
//+------------------------------------------------------------------+
 
Ваня:

ありがとうございました。いい人だ。

このコードブロックはどの行の間に挿入されるべきか教えてください。

フリーランスに連絡すれば、適切な場所にコードの断片を挿入してくれる。
 
Evgeny Belyaev:
フリーランサーのところへ行けば、適切な場所にコードの断片を配置してくれる。
フリーランス」が何なのかもわからない。
 
Ваня:
フリーランス」が何なのかもわからない。
フリーランス です。
 
Ваня:
フリーランス」が何なのかもわからない。
今はどうですか?
 
Evgeny Belyaev:
今、あなたは知っていますか?

ああ、ロシア語のスレッドでは、国民がロシア語を理解しなくなる印象がありますね。

このスレッド 「HELP !!! MT4からMT5へインジケーターをコンバートするために。

どこに行けばいいのか、アドバイスしてください。

フリーランス」の条件。

II.ご注文の流れ

  1. 注文は、次のようなプロセスを経て行われます。
    1. 作業合意書
    2. TOR契約
    3. プロトタイプ/モデル
    4. デモの様子
    5. 作品の納品
    6. 支払方法
 
Ваня:

ああ、ロシア語のスレッドでは、国民がロシア語を理解しなくなる印象がありますね。

このスレッド 「HELP !!! MT4からMT5へインジケーターをコンバートするために。

どこに行けばいいのか、アドバイスしてください。

フリーランス」の条件。

    1. 支払方法

そうですね、想像してみてください。あなたが提案していることは、ある程度の努力とそれによるお金の価値があると思います。

ロシア語は誰でもわかるが、"有料 "でいじくり回すのはあまりおもしろくない。

しかし、もしあなたが取引で成功した経験があり、その際にインジケータが必要であれば、もしかしたら誰かが有益な取引のアイデアと引き換えに、お金なしで何かをすることに同意してくれるかもしれません。でも、その間は--純粋に「名目」のために、やってくれる人は少ないだろうなあ......。