初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 740

 

ここに重複して質問しているだけで、誰もインジケータで答えていない...。

MQL5の勉強を始めました。私はプログラミングの経験がないため、いくつかの質問や疑問があります。事例を分析したり、一部「勘」で解決できるものもありますが、すぐには理解しにくい面もあります。メインチャートのウィンドウに2つのトゥーラインを表示させるという簡単なことから研究を始めました。現在のタイムフレームのCloseと追加(関連、注釈は後述)のインストゥルメントを1000本分遡って描画します。関連する商品は次のシリーズの先物で、流動性が低く、常にデータにギャップがある、つまり取引回数がメインの先物シリーズほど頻繁ではない。タスクは達成されたように見えるが、エラーが発生している。平滑化が有効かどうかはわからないので、必要であれば手直しなしで平滑化できるように、ピリオド1のiMAを使用しました。

以下、質問です。

1.コンパイル時に、iMAバッファを配列にコピーすると、「型変換によりデータが失われる可能性があります」という警告が表示されます。これは何なのか、なぜなのか、どのようなタイプ変換なのか。線は正常に引かれており、何も欠けていないようです。

2. インジケータが動作し、2つの機器のラインがメインチャートウィンドウに表示された後、私はそれらが同期されていないことを確認します。つまり、最初のインストゥルメントは通常のもので、メインウィンドウのローソク足チャートに対応するものです。 2番目(液体の少ない方)には隙間があるため、徐々に「しぼんで」いき、脱同期が起こります。どうにかして時間的に同期させたいんです。これは、私の能力をはるかに超えています。視覚的に見ないと、何が足りないのかがわからない。

以下は、そのスクリーンショットです。黄色の線は、緑の線に対して同期が必要なものです。だから、日付のずれがある黄色い線は、日付のずれがあるスクイーズではなく、前の値と次の値を「つないだだけ」なのです。コードは添付ファイルにあります。

ファイル:
 
ottenand:

ここに重複して質問しているだけで、誰もインジケータで答えていない...。

MQL5の勉強を始めました。私はプログラミングの経験がないため、いくつかの質問や疑問があります。事例を分析したり、一部「勘」で解決できるものもありますが、すぐには理解しにくい面もあります。メインチャートのウィンドウに2つのトゥーラインを表示させるという簡単なことから研究を始めました。現在のタイムフレームのCloseと追加(関連、注釈は後述)のインストゥルメントを1000本分遡って描画します。関連する商品は次のシリーズの先物で、流動性が低く、常にデータにギャップがある、つまり取引回数がメインの先物シリーズほど頻繁ではない。タスクは達成されたように見えるが、エラーが発生している。スムージングが有効かどうかはわからないので、必要であれば手直しせずにスムージングできるように、ピリオド1のiMAを使用しました。

以下、質問です。

1.コンパイル時に、iMAバッファを配列にコピーすると、「型変換によりデータが失われる可能性があります」という警告が表示されます。これは何なのか、なぜなのか、どのようなタイプ変換なのか。線は正常に引かれており、何も欠けていないようです。

2. インジケータが動作し、2つの機器のラインがメインチャートウィンドウに表示された後、私はそれらが同期されていないことを確認します。つまり、最初のインストゥルメントは通常のもので、メインウィンドウのローソク足チャートに対応するものです。 2番目(液体の少ない方)には隙間があるため、徐々に「しぼんで」いき、脱同期が起こります。どうにかして時間的に同期させたいんです。これは私の手には余るものです。視覚的に見ないと、何が足りないのかがわからない。

以下は、そのスクリーンショットです。黄色の線は、緑の線に対して同期が必要なものです。だから、日付のずれがある黄色い線は、日付のずれがあるスクイーズではなく、前の値と次の値を「つないだだけ」なのです。コードは添付ファイルにあります。


インジケータ・ハンドルはint型でなければならない。例はこちらをご覧ください:CopyBuffer

int  CopyBuffer( 
   int       indicator_handle,     // handle индикатора 
   int       buffer_num,           // номер буфера индикатора 
   int       start_pos,            // откуда начнем  
   int       count,                // сколько копируем 
   double    buffer[]              // массив, куда будут скопированы данные 
   );
 
Vladimir Karputov:


インジケータ・ハンドルはint型でなければならない。例はこちらをご覧ください:CopyBuffer

そうなんですね、その点を見落としていました、コンパイルエラーはなくなりました、ありがとうございます

しかし、現時点での一番の問題はタイミングの差で、やはり関係します。これを解かないと、ツール間の数学的な演算ができないので、テストする予定です。

 
ottenand:

そうでしたか、その点を見落としていました、コンパイル時のエラーはなくなりました、ありがとうございます。

しかし、現時点での一番の問題点であるタイミングの問題は、やはり関係しています。これを解かないと、例えば、私が検証を予定している機器間の数学的演算ができないのです。


もし私があなただったら、きちんとしたコーディングから始めますね。今のあなたのスタイルは無謀な「四則演算」、つまりチェックがなく、すべてがランダムなんです。

OnInit()の固定を開始する。

  1. ハンドルを取得した後、正しいかどうかチェックする必要があります。
  2. 全てに問題がなければ、"0 "ではなく、"INIT_SUCCEED "を返します。
すべてiMAの 例です。そうして初めて、前に進むことができるのです。

 
Vladimir Karputov:


私があなたなら、まずコードを正しく書くことから始めます。問題は、あなたのスタイルが無謀な「四分法」、つまりチェックもせず、すべてを気まぐれに行うものになってしまっていることです。

OnInit()の修正に着手。

  1. ハンドルを取得した後、正しいかどうかチェックする必要があります。
  2. OKの場合、"0 "ではなく、"INIT_SUCCEED "を返す。
すべてiMAの 例です。そうして初めて、前に進むことができるのです。

5のホッチキスがダメで、4の字が美しいなんて、誰が言った?

PLATFORMがどうのこうのではなく、特定の書記の頭がどうのこうの...。

プレオブラジェンスキー教授が「クローゼットの中ではなく、頭の中にある」と言ったのは正しい......。


 
Vladimir Karputov:


私があなただったら、まずきちんとしたコードを書くことから始めますね。今のあなたのスタイルは、無謀な「四分法」、つまり、チェックがなく、すべてが偶然の産物になっているということです。

OnInit()の修正に着手。

  1. ハンドルを取得した後、正しいかどうかチェックする必要があります。
  2. OKの場合、"0 "ではなく、"INIT_SUCCEED "を返す。
全てはiMAの 例の中にあります。そうして初めて、前に進むことができるのです。

まあ、これで自分のスタイルが何と呼ばれているのかわかるでしょう)本当です、私はバージョン5からすぐにゼロから始めています)。

1と2を修正しました。 すべての問題は、計算ブロックにあります。2つの楽器の小節の位置を、時間に応じてどのように規定するかを考えてみる。そうでない場合は、ラグが発生し、同じ警告#4806が表示されます。

ファイル:
 
ottenand:

まあ、これで自分のスタイルが何と呼ばれているのかわかるでしょう)本当に、バージョン5からゼロから始めているのです)

ありがとうございます。2つの楽器のバーの位置を時間によって規定 する方法を考えてみる。それ以外の場合はラグが発生し、同じ警告#4806が表示されます。

そうなんだ!例えば、先物「A」のM1には、13分、14分、15分のバーがあるわけです。しかし、先物「B」は13分と15分だけにバーがある、つまりギャップがある。どこかに記事がありましたので、「穴」で検索してみてください。
 
Vladimir Karputov:
そうなんだ!なぜなら、例えばM1先物「A」は13分、14分、15分にバーがあります。しかし、先物「B」は13分と15分だけにバーがある、つまりギャップがある。どこかに記事がありました。"穴 "で検索してみてください。
そういうことです)Error #4806が原因のようです。わかりました、探してみます)
 

こんにちは。

現在のバーのトレンドラインの価格を求める方法を教えてください。ObjectGetDouble 経由で試しましたが、期待通りの結果が得られません。コード例

   ObjectCreate(0,"O_Resistance",OBJ_TREND,0,UpTime_2[0],UpFractal_2,UpTime_1[0],UpFractal_1);
   ObjectMove(0,"O_Resistance",0,UpTime_2[0],UpFractal_2);
   ObjectMove(0,"O_Resistance",1,UpTime_1[0],UpFractal_1);
   ObjectSetInteger(0,"O_Resistance",OBJPROP_RAY_RIGHT,true);
   ObjectSetInteger(0,"O_Resistance",OBJPROP_COLOR,O_Resistance_Color);
   ObjectSetInteger(0,"O_Resistance",OBJPROP_STYLE,O_Resistance_Style);
   ObjectSetInteger(0,"O_Resistance",OBJPROP_WIDTH,O_Resistance_Width);


double O_ResistancePrice = ObjectGetDouble(0,"O_Resistance",OBJPROP_PRICE,0); // при любом баре дает координату изначальной точки луча, а нужна цена
                                                                              // соответствующая текущему бару или первому
 
MaksGroup:

こんにちは。

現在のバーのトレンドラインの価格を求める方法を教えてください。ObjectGetDouble経由で試しましたが、期待通りの結果が得られません。コード例

ObjectGetValueByShift() (MT4のみ),ObjectGetValueByTime()(MT4、MT5)
理由: