MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1041 1...103410351036103710381039104010411042104310441045104610471048...1953 新しいコメント 削除済み 2020.01.16 10:42 #10401 Igor Makanu: 質問が明確でない可能性があるので、質問を変えてみてください。 説明してみる。しかし、私は実質的にプログラマーではないことを心に留めておいてください。 入札値でカーブを構築するティックインジケーターがあります。 #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Aqua double x[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(1); SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,x); SetIndexDrawBegin(0,0); SetIndexLabel(0,"x"); SetIndexShift(0,0); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double b=MarketInfo(Symbol(),MODE_BID); x[0]=b; for(int j=ArraySize(x)-1;j>=1;j--){x[j]=x[j-1];} return(0); } //+------------------------------------------------------------------+ 今、私がやりたいこと。 インジケータをチャートに 貼り付けます。bid1の最初の値を最初のティックで取得します。それを覚えておいてください(私はそうしました - 2番目のバッファy[0]を入力し、init()でその値を記録します)。 2回目のティックでは、bid2の2回目の値を取得します。 それから、点差をつけることです。delta=bid1-bid2(私はこうしました:delta=x[0]-x[1])です。 ここで、y[0]にデルタを加え、y[1]の値を求めると、実際にはbid2の値に相当する。 指標となる曲線は、求めているものと同じはずですが、入札差の計算値を使ってプロットされています。 この指標は、さらなる計算のためのテンプレートとして必要です。 石を投げてはいけない。私はできる限り説明した。 ありがとうございます。 Igor Makanu 2020.01.16 11:01 #10402 Oleg Bondarev: 説明してみる。しかし、私は実質的に素人のプログラマーであることを念頭に置いてください。 入札値でカーブを構築するティックインジケーターを搭載しています。 今、私がやりたいこと。 チャート上にインジケータを 固定する。bid1の最初の値を最初のティックで取得します。それを覚えておいてください(私はそうしました:2番目のバッファy[0]を入力し、init()でその値を規定しました)。 2回目のティックでは、bid2の2回目の値を取得します。 それから、点差をつけることです。delta=bid1-bid2(私はこのようにしました:delta=x[0]-x[1])。 ここで、y[0]にデルタを加え、実際にbid2の値に対応するy[1]の値を求めます。 指標となる曲線は、求めているものと同じはずですが、入札差の計算値を使ってプロットされています。 この指標は、さらなる計算のためのテンプレートとして必要です。 石を投げてはいけない。私はできる限り説明しようとした。 ありがとうございます。 何をしたいのかが明確でない 一般的な問題点として、ティック(Bid)を格納する配列としてインジケータバッファを使用し、インジケータバッファのサイズはターミナル自体を変更し、さらに、ターミナルは新しいバーの出現時にインジケータバッファ自体をシフトさせることです。 ティックの格納には配列を使用し、描画にはインジケーターバッファを使用する必要があります。 私はあなたのコードと同じようなコードを作成しました、私は配列に刻みを保存する #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 //--- plot Label1 #property indicator_label1 "Label1" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- input parameters input int TickCount=10; //Размер массива тиков //--- indicator buffers double Label1Buffer[]; double TickArr[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA); ArrayResize(TickArr,TickCount); //изменим размер массива ArrayInitialize(TickArr,SymbolInfoDouble(_Symbol,SYMBOL_BID)); // проинициализируем массив значением текущего Bid //--- 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[]) { for(int i=ArraySize(TickArr)-1;i>0;i--) { TickArr[i] = TickArr[i-1]; // сдвинули массив } TickArr[0] = SymbolInfoDouble(_Symbol,SYMBOL_BID); // в 0-й элемент массива запомнили новый Bid //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ このコードに計算を追加し、あなたのアイデア通りにインジケータバッファ Label1Buffer を使って描画する必要があります。 Yevhenii Levchenko 2020.01.16 13:28 #10403 他のインジケーターのプロパティをプログラムで変更できる機能を追加してもらえるとうれしいです。大雑把に言うと、(プログラムで)別のインジケータをチャートに追加した後、その色、スタイル、線の太 さを設定することができます。 削除済み 2020.01.16 13:44 #10404 Igor Makanu: なにがしたいのかがわからない インジケータバッファをティック(Bid)を格納する配列として使用し、インジケータバッファのサイズはターミナル自体を変更し、さらに、新しいバーが表示されるとターミナルはインジケータバッファ自体をシフトさせるというものです。 ティックの格納には配列を使用し、描画にはインジケーターバッファを使用する必要があります。 私はあなたのコードと同じようなコードを作成しました、私は配列に刻みを保存する このコードに計算を追加し、インジケータバッファ Label1Buffer を使って描画する必要があります。 ご返信ありがとうございます。もうちょっと拷問してやる。 ここで計算を足せばいいのか? int OnCalculate() 以下は私の計算です。 if(TickArr[0]>TickArr[1]) { Label1Buffer[0]=Label1Buffer[1]+(TickArr[0]-TickArr[1]); } if(TickArr[0]<TickArr[1]) { Label1Buffer[0]=Label1Buffer[1]-(TickArr[0]-TickArr[1]); } if(TickArr[0]==TickArr[1]) { Label1Buffer[0]=Label1Buffer[1]; } 追加しても何もない。 Alexey Viktorov 2020.01.16 13:45 #10405 Yevhenii Levchenko: 他のインジケーターのプロパティをプログラムで変更できる機能を追加してもらえるとうれしいです。大雑把に言うと、チャートに別のインジケータを(プログラムで)追加した後、線の 色、スタイル、太 さを設定することができます。 キャンバスを使い、マンガを描く。 削除済み 2020.01.16 15:40 #10406 もっと写真を添付します。 Igor Makanu 2020.01.16 16:06 #10407 Oleg Bondarev: 追加され、何もない。 そういうわけにもいかないし )))) MQLでインジケータ・バッファを使って 描画するには、インジケータ・バッファに値を入れることを意味します - 私の例では、それはLabel1Buffer(値を代入する)です。 この例では、条件を満たしたときのみ値を割り当て、条件を満たさないときは値を割り当てないのですか?- だから、何も印刷されない。 また、TickArrという配列にはBidの値が含まれていますが、あなたの条件では、インジケータバッファの前の値を使用しています - そして、誰がこれらのバッファにどの値を入れたのですか? インジケーターのバッファに線を引いてみて、ティックを比較してみてください。 Alexey Viktorov 2020.01.16 16:49 #10408 Oleg Bondarev: もっと写真を添付します。 角度が逆になったら?どのように計算するのでしょうか? Aleksey Mavrin 2020.01.16 16:55 #10409 Oleg Bondarev:もっと写真を添付します。 プログラミングが実質0点だと言うのなら、なぜそんな規格外の仕事を引き受けるのか、簡単なものから始めたらいいのでは?それとも、基礎知識を高めるため?やってもらうと楽ですね、はい。 削除済み 2020.01.16 18:53 #10410 Igor Makanu: それはダメだ )))) MQLでインジケーターバッファを使って 描画するには、インジケーターバッファに値を入れる(代入する)ことを意味します - 私の例では、Label1Buffer この例では、条件を満たしたときのみ値を割り当て、条件を満たさないときは値を割り当てないのですか?- だから、何も印刷されない。 また、TickArrという配列にはBidの値が含まれていますが、あなたの条件では、インジケータバッファの前の値を使用しています - そして、誰がこれらのバッファにどの値を入れたのですか? インジケーターのバッファで線を引いてみて、ティックを比較します。 ハッカーであることを警告した) そんな感じでやってました。 #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 //--- plot Label1 #property indicator_label1 "Label1" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- input parameters input int TickCount=100000; //Размер массива тиков input int TickCountb=100000; //--- indicator buffers double Label1Buffer[]; double TickArr[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,Label1Buffer); ArrayResize(TickArr,TickCount); ArrayResize(Label1Buffer,TickCountb); //изменим размер массива ArrayInitialize(TickArr,MarketInfo(Symbol(),MODE_BID)); // проинициализируем массив значением текущего Bid //--- 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[]) { for(int i=ArraySize(TickArr)-1;i>0;i--) { TickArr[i] = TickArr[i-1]; // сдвинули массив } TickArr[0] = MarketInfo(Symbol(),MODE_BID); // в 0-й элемент массива запомнили новый Bid for(int j=ArraySize(TickArr)-1;j>0;j--) { Label1Buffer[j] = Label1Buffer[j-1]; // сдвинули массив } Label1Buffer[0]= TickArr[0]; //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ これでティックチャートが描画されましたが、一部改行があります。 4をやってます。 1...103410351036103710381039104010411042104310441045104610471048...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
質問が明確でない可能性があるので、質問を変えてみてください。
説明してみる。しかし、私は実質的にプログラマーではないことを心に留めておいてください。
入札値でカーブを構築するティックインジケーターがあります。
今、私がやりたいこと。
インジケータをチャートに 貼り付けます。bid1の最初の値を最初のティックで取得します。それを覚えておいてください(私はそうしました - 2番目のバッファy[0]を入力し、init()でその値を記録します)。
2回目のティックでは、bid2の2回目の値を取得します。
それから、点差をつけることです。delta=bid1-bid2(私はこうしました:delta=x[0]-x[1])です。
ここで、y[0]にデルタを加え、y[1]の値を求めると、実際にはbid2の値に相当する。
指標となる曲線は、求めているものと同じはずですが、入札差の計算値を使ってプロットされています。
この指標は、さらなる計算のためのテンプレートとして必要です。
石を投げてはいけない。私はできる限り説明した。
ありがとうございます。
説明してみる。しかし、私は実質的に素人のプログラマーであることを念頭に置いてください。
入札値でカーブを構築するティックインジケーターを搭載しています。
今、私がやりたいこと。
チャート上にインジケータを 固定する。bid1の最初の値を最初のティックで取得します。それを覚えておいてください(私はそうしました:2番目のバッファy[0]を入力し、init()でその値を規定しました)。
2回目のティックでは、bid2の2回目の値を取得します。
それから、点差をつけることです。delta=bid1-bid2(私はこのようにしました:delta=x[0]-x[1])。
ここで、y[0]にデルタを加え、実際にbid2の値に対応するy[1]の値を求めます。
指標となる曲線は、求めているものと同じはずですが、入札差の計算値を使ってプロットされています。
この指標は、さらなる計算のためのテンプレートとして必要です。
石を投げてはいけない。私はできる限り説明しようとした。
ありがとうございます。
何をしたいのかが明確でない
一般的な問題点として、ティック(Bid)を格納する配列としてインジケータバッファを使用し、インジケータバッファのサイズはターミナル自体を変更し、さらに、ターミナルは新しいバーの出現時にインジケータバッファ自体をシフトさせることです。
ティックの格納には配列を使用し、描画にはインジケーターバッファを使用する必要があります。
私はあなたのコードと同じようなコードを作成しました、私は配列に刻みを保存する
このコードに計算を追加し、あなたのアイデア通りにインジケータバッファ Label1Buffer を使って描画する必要があります。
なにがしたいのかがわからない
インジケータバッファをティック(Bid)を格納する配列として使用し、インジケータバッファのサイズはターミナル自体を変更し、さらに、新しいバーが表示されるとターミナルはインジケータバッファ自体をシフトさせるというものです。
ティックの格納には配列を使用し、描画にはインジケーターバッファを使用する必要があります。
私はあなたのコードと同じようなコードを作成しました、私は配列に刻みを保存する
このコードに計算を追加し、インジケータバッファ Label1Buffer を使って描画する必要があります。
ご返信ありがとうございます。もうちょっと拷問してやる。
ここで計算を足せばいいのか?
以下は私の計算です。
追加しても何もない。
他のインジケーターのプロパティをプログラムで変更できる機能を追加してもらえるとうれしいです。大雑把に言うと、チャートに別のインジケータを(プログラムで)追加した後、線の 色、スタイル、太 さを設定することができます。
キャンバスを使い、マンガを描く。
もっと写真を添付します。
追加され、何もない。
そういうわけにもいかないし ))))
MQLでインジケータ・バッファを使って 描画するには、インジケータ・バッファに値を入れることを意味します - 私の例では、それはLabel1Buffer(値を代入する)です。
この例では、条件を満たしたときのみ値を割り当て、条件を満たさないときは値を割り当てないのですか?- だから、何も印刷されない。
また、TickArrという配列にはBidの値が含まれていますが、あなたの条件では、インジケータバッファの前の値を使用しています - そして、誰がこれらのバッファにどの値を入れたのですか?
インジケーターのバッファに線を引いてみて、ティックを比較してみてください。
もっと写真を添付します。
角度が逆になったら?どのように計算するのでしょうか?
もっと写真を添付します。
それはダメだ ))))
MQLでインジケーターバッファを使って 描画するには、インジケーターバッファに値を入れる(代入する)ことを意味します - 私の例では、Label1Buffer
この例では、条件を満たしたときのみ値を割り当て、条件を満たさないときは値を割り当てないのですか?- だから、何も印刷されない。
また、TickArrという配列にはBidの値が含まれていますが、あなたの条件では、インジケータバッファの前の値を使用しています - そして、誰がこれらのバッファにどの値を入れたのですか?
インジケーターのバッファで線を引いてみて、ティックを比較します。
ハッカーであることを警告した)
そんな感じでやってました。
これでティックチャートが描画されましたが、一部改行があります。
4をやってます。