初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 918 1...911912913914915916917918919920921922923924925...1503 新しいコメント fxsaber 2018.09.04 05:52 #9171 Tango_X:ありがとうございました。クラスを参照することは、クラスへのポインタだとばかり思っていました。でも、ここでは単なる宣言に過ぎない...それがどうした?以上がOOPの基本ですが、ヘルプを少し見てみてください。例えば、new/delete演算子 などです。 Tango_X 2018.09.04 06:00 #9172 Tango_X:ありがとうございました。クラスを参照することは、クラスへのポインタだとばかり思っていました。でも、ここでは単なる宣言に過ぎない...それがどうした?調べてみます、ありがとうございます!!! ISL 2018.09.04 08:36 #9173 Seric29:MT5でシンボルを作成する場合、どのメタトレーダーで作成しますか?はい、MT5で ISL 2018.09.04 08:39 #9174 fxsaber:無理でしょう。それは残念なことです。 エクセルにアップロードした後に行うのですが、そこにも欠点があります。そのような機能が搭載されていないのは残念です。 でも、どうにかしてプログラムで実装できそうな予感がする) Seric29 2018.09.04 17:59 #9175 ISL:はい、MT5で。MT4ではシンボルを作成 することができず、値の変更はできても作成できないのが残念です。 Igor Makanu 2018.09.04 19:36 #9176 ArraySetAsSeries()を削除する方法を教えてください。 ここで、MT4用の既知のインジケータ(Perfect trend line)の一部を書き直したところ、すべてがMT4と同様に動作するようになりました。しかし、私が書いた強制的なArraySetAsSeries()を取り除くことができません - さもなければ、インジケータは正しくカウントされません。ArraySetAsSeries()が配列内のインデックスの方向を 変更することは分かっていますが、2日間それを自分で行うことができませんでした! #property indicator_chart_window #property indicator_buffers 7 #property indicator_plots 1 //--- plot BufBars #property indicator_label1 "BufBars" #property indicator_type1 DRAW_COLOR_BARS #property indicator_color1 clrRed,clrAqua,clrNONE #property indicator_style1 STYLE_SOLID #property indicator_width1 3 //--- input parameters input int SlowLength = 7; //Slow length input int SlowPipDisplace = 0; //Slow pip displace input int FastLength = 3; //Fast length input int FastPipDisplace = 0; //Fast pip displace //--- indicator buffers double BufBarsBuffer1[]; double BufBarsBuffer2[]; double BufBarsBuffer3[]; double BufBarsBuffer4[]; double BufBarsColors[]; double BufLSELLBuffer[]; double BufLBUYBuffer[]; static int trend=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,BufBarsBuffer1,INDICATOR_DATA); SetIndexBuffer(1,BufBarsBuffer2,INDICATOR_DATA); SetIndexBuffer(2,BufBarsBuffer3,INDICATOR_DATA); SetIndexBuffer(3,BufBarsBuffer4,INDICATOR_DATA); SetIndexBuffer(4,BufBarsColors,INDICATOR_COLOR_INDEX); SetIndexBuffer(5,BufLSELLBuffer,INDICATOR_DATA); SetIndexBuffer(6,BufLBUYBuffer,INDICATOR_DATA); for(int i=0;i<7;i++) { PlotIndexSetInteger(i,PLOT_DRAW_BEGIN,FastLength+1); PlotIndexSetDouble(i,PLOT_EMPTY_VALUE,0.0); } ArraySetAsSeries(BufBarsBuffer1,true); ArraySetAsSeries(BufBarsBuffer2,true); ArraySetAsSeries(BufBarsBuffer3,true); ArraySetAsSeries(BufBarsBuffer4,true); ArraySetAsSeries(BufBarsColors,true); ArraySetAsSeries(BufLBUYBuffer,true); ArraySetAsSeries(BufLSELLBuffer,true); //--- setting a code from the Wingdings charset as the property of PLOT_ARROW trend=0; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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 i,limit; double thigh1,tlow1,thigh2,tlow2,trendUp,trendDn; ArraySetAsSeries(open,true); ArraySetAsSeries(high,true); ArraySetAsSeries(low,true); ArraySetAsSeries(close,true); if(prev_calculated==0) { limit=rates_total-1; BufLSELLBuffer[limit]=high[limit]; BufLBUYBuffer[limit]=low[limit]; limit--; } else limit=rates_total-prev_calculated+1; for(i=limit;i>=0;i--) { thigh1= high[iHighest(NULL,0,MODE_HIGH,SlowLength,i)]+SlowPipDisplace * _Point; tlow1 = low[iLowest(NULL,0,MODE_LOW,SlowLength,i)]-SlowPipDisplace * _Point; thigh2= high[iHighest(NULL,0,MODE_HIGH,FastLength,i)]+FastPipDisplace * _Point; tlow2 = low[iLowest(NULL,0,MODE_LOW,FastLength,i)]-FastPipDisplace * _Point; if(close[i]>BufLBUYBuffer[i+1]) trendUp=tlow1; else trendUp=thigh1; if(close[i]>BufLSELLBuffer[i+1]) trendDn=tlow2; else trendDn=thigh2; BufLSELLBuffer[i]= trendDn; BufLBUYBuffer[i] = trendUp; BufBarsBuffer1[i] = 0.0; BufBarsBuffer2[i] = 0.0; BufBarsBuffer3[i] = 0.0; BufBarsBuffer4[i] = 0.0; BufBarsColors[i] = 2; if(close[i]<trendUp && close[i]<trendDn) { BufBarsBuffer1[i] = open[i]; BufBarsBuffer2[i] = high[i]; BufBarsBuffer3[i] = low[i]; BufBarsBuffer4[i] = close[i]; BufBarsColors[i] = 0; } if(close[i]>trendUp && close[i]>trendDn) { BufBarsBuffer1[i] = open[i]; BufBarsBuffer2[i] = high[i]; BufBarsBuffer3[i] = low[i]; BufBarsBuffer4[i] = close[i]; BufBarsColors[i] = 1; } } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ Vitaly Muzichenko 2018.09.04 19:38 #9177 Igor Makanu:ArraySetAsSeries()を削除する方法を教えてください。 ここで、MT4用の既知のインジケータ(Perfect trend line)の一部を書き直したところ、すべてがMT4と同様に動作するようになりました。ArraySetAsSeries()で配列のインデックスの向きを変えることは分かっているのですが、2日間、自分で管理できていません 以下のことができます。 #ifdef __MQL5__ ArraySetAsSeries(BufBarsBuffer1,true); ArraySetAsSeries(BufBarsBuffer2,true); ArraySetAsSeries(BufBarsBuffer3,true); ArraySetAsSeries(BufBarsBuffer4,true); ArraySetAsSeries(BufBarsColors,true); ArraySetAsSeries(BufLBUYBuffer,true); ArraySetAsSeries(BufLSELLBuffer,true); #endif Igor Makanu 2018.09.04 19:50 #9178 Vitaly Muzichenko:こんな風にできる ArraySetAsSeries()を使わずにインジケータの値を計算できることは知っていますが、何が間違っているのかわかりません。 kodobaseで簡単な例を探してみましたが、残念ながら、すべてのインジケータは異なる方法で書かれているため、わかりません(( SZY: クロスプラットフォームインジケータは必要ない、デフォルトの配列インデックスを 処理したい、すでにArrayGetAsSeries()を使用している - 理解できない Artyom Trishkin 2018.09.04 19:55 #9179 Igor Makanu:ArraySetAsSeries()を使わずにインジケータの値を計算できることは知っていますが、何が間違っているのかわかりません。 kodobaseで簡単な例を探してみましたが、残念ながら、すべてのインジケータは異なる方法で書かれていて、理解することができません((指標の計算は、最初から最後まで(直近の過去データから直近の~現在のものまで)行います。そして、これは時系列のようなインデックスを示す。ですから、配列にはそれなりのインデックスを付ける必要があり、それがあなたの持っているものです。 では、何が問題なのか? Konstantin Nikitin 2018.09.04 19:57 #9180 Igor Makanu:ArraySetAsSeries()を使わずにインジケータの値を計算できることはわかったのですが、何が間違っているのかわかりません。 kodobaseで簡単な例を探してみましたが、残念ながら、すべてのインジケータは異なる方法で書かれているため、わかりません(( SZZ: クロスプラットフォームインジケータは必要ない、デフォルトの配列インデックスを 処理したい、すでにArrayGetAsSeries()を使用している - 理解できないArraySetAsSeries を 使用しなくても、Print やComment を使用して、配列の 0 番目のインデックス、例えば open[0] が出力されることを明確にするだけで、実行できます。ここから先は、自分で判断してください。何が何なのかを把握することができるようになります。 1...911912913914915916917918919920921922923924925...1503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ありがとうございました。クラスを参照することは、クラスへのポインタだとばかり思っていました。でも、ここでは単なる宣言に過ぎない...それがどうした?
以上がOOPの基本ですが、ヘルプを少し見てみてください。例えば、new/delete演算子 などです。
ありがとうございました。クラスを参照することは、クラスへのポインタだとばかり思っていました。でも、ここでは単なる宣言に過ぎない...それがどうした?
調べてみます、ありがとうございます!!!
MT5でシンボルを作成する場合、どのメタトレーダーで作成しますか?
はい、MT5で
無理でしょう。
それは残念なことです。
エクセルにアップロードした後に行うのですが、そこにも欠点があります。そのような機能が搭載されていないのは残念です。
でも、どうにかしてプログラムで実装できそうな予感がする)
はい、MT5で。
MT4ではシンボルを作成 することができず、値の変更はできても作成できないのが残念です。
ArraySetAsSeries()を削除する方法を教えてください。
ここで、MT4用の既知のインジケータ(Perfect trend line)の一部を書き直したところ、すべてがMT4と同様に動作するようになりました。しかし、私が書いた強制的なArraySetAsSeries()を取り除くことができません - さもなければ、インジケータは正しくカウントされません。ArraySetAsSeries()が配列内のインデックスの方向を 変更することは分かっていますが、2日間それを自分で行うことができませんでした!
ArraySetAsSeries()を削除する方法を教えてください。
ここで、MT4用の既知のインジケータ(Perfect trend line)の一部を書き直したところ、すべてがMT4と同様に動作するようになりました。ArraySetAsSeries()で配列のインデックスの向きを変えることは分かっているのですが、2日間、自分で管理できていません
以下のことができます。
こんな風にできる
ArraySetAsSeries()を使わずにインジケータの値を計算できることは知っていますが、何が間違っているのかわかりません。 kodobaseで簡単な例を探してみましたが、残念ながら、すべてのインジケータは異なる方法で書かれているため、わかりません((
SZY: クロスプラットフォームインジケータは必要ない、デフォルトの配列インデックスを 処理したい、すでにArrayGetAsSeries()を使用している - 理解できない
ArraySetAsSeries()を使わずにインジケータの値を計算できることは知っていますが、何が間違っているのかわかりません。 kodobaseで簡単な例を探してみましたが、残念ながら、すべてのインジケータは異なる方法で書かれていて、理解することができません((
指標の計算は、最初から最後まで(直近の過去データから直近の~現在のものまで)行います。そして、これは時系列のようなインデックスを示す。ですから、配列にはそれなりのインデックスを付ける必要があり、それがあなたの持っているものです。
では、何が問題なのか?
ArraySetAsSeries()を使わずにインジケータの値を計算できることはわかったのですが、何が間違っているのかわかりません。 kodobaseで簡単な例を探してみましたが、残念ながら、すべてのインジケータは異なる方法で書かれているため、わかりません((
SZZ: クロスプラットフォームインジケータは必要ない、デフォルトの配列インデックスを 処理したい、すでにArrayGetAsSeries()を使用している - 理解できない
ArraySetAsSeries を 使用しなくても、Print やComment を使用して、配列の 0 番目のインデックス、例えば open[0] が出力されることを明確にするだけで、実行できます。ここから先は、自分で判断してください。何が何なのかを把握することができるようになります。