初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1374 1...136713681369137013711372137313741375137613771378137913801381...1504 新しいコメント leon_17 2021.11.15 18:50 #13731 Alexey Viktorov #:誰かの教えが悪いのか。変数_LastErrorには、次のエラーが発生するまでの値が格納 されます。 さて、見てみると、メインコードの冒頭で、次のようなエラーが発生しています。 err_invalid_datetime 4010 日付や時刻の値が正しくない そして、コードによってオブジェクトが生成され、_LastErrorは次のように書き換えられます。 err_object_not_found 4202 グラフィックオブジェクトが見つかりません いつものように_LastErrorの チェックがコードの最後にある場合、4202が表示されますが、そのまま無視 します。つまり、エラー4010は気づかれずに残ってしまうのです。どこが間違ってるんだろう? Alexey Viktorov(アレクセイ ビクトロフ) #: ブローカーの serverdc から執行エラーを受信しないことが市場の要件である。 ありがとうございます、知りませんでした、すべてのエラーは禁止されていると思っていました。 Alexey Viktorov 2021.11.15 19:12 #13732 leon_17 #:見てください、例えばメインコードの冒頭で、次のようなエラーが発生しています。 err_invalid_datetime 4010 日付や時刻の値が正しくない そして、コードによってオブジェクトが生成され、_LastErrorは次のように書き換えられます。 err_object_not_found 4202 グラフィックオブジェクトが見つかりません いつものように_LastErrorの チェックがコードの最後にある場合、4202が表示されますが、そのまま無視 します。つまり、エラー4010は気づか れずに残ってしまうのです。私はどこで間違っているのだろう? ありがとうございます、知らなかったです、すべてのエラーは禁止されていると思っていました。 その通りです。あなたは間違っていない... Mikhail Toptunov 2021.11.16 07:42 #13733 こんにちは、どなたかヒントを教えてください。 各バーの時間値を具体的に配列に書き込んでいます。チャート上のバーは3000本までという制限があります。 課題です。 - 新しい小節ごとに値の配列をシフトさせること。 void CNewBar::PriceHL2() { int start= 0; ArrayResize(this.m_tim_pr_hl2,this.m_rt); if(this.m_pc!=0) { start= this.m_pc; ArrayCopy(this.m_tim_pr_hl2, this.m_tim_pr_hl2, 0, this.m_rt-this.m_pc); } for(int b= start; b < this.m_rt; b++) { this.m_tim_pr_hl2[b]= iTime(this.m_symbol, this.m_timeframe, this.m_rt-b); } } 正常に動作するように調整できない。 (this.m_rt-this.m_pc)=1 のとき、新しいバーで配列をシフトさせるのは正しいですか? ArrayCopy(this.m_tim_pr_hl2, this.m_tim_pr_hl2, 0, this.m_rt-this.m_pc); // this.m_rt-this.m_pc=1 Alexey Viktorov 2021.11.16 08:03 #13734 Mikhail Toptunov #:こんにちは、どなたかヒントを教えてください。各バーの時間値を具体的に配列に書き込んでいます。チャート上のバーは3000本までという制限があります。課題です。- 新しい小節ごとに値の配列をシフトさせること。正常に動作するように調整できない。(this.m_rt-this.m_pc)=1 の場合、新しいバーで配列をシフトするのが正しいのでしょうか? つまり、配列のサイズはちょうど3000でなければならず、新しいバーの形成時には、まずゼロインデックスが上書きされ......最後に新しい値が書き込まれるのでしょうか。 私の理解が正しければ、ループは何のためにあるのでしょうか?配列自体を先頭から順にNULLインデックスにコピーし、最後のインデックスに新しい値を書き込むだけです。 leon_17 2021.11.16 09:04 #13735 Alexey Viktorov #:オブジェクトが見つからない場合は、オブジェクト検索エラーになります... err_object_not_found 4202 グラフィックオブジェクトが見つかりません アラーターする必要はない... いくつかのテストをしてみたところ...こんな感じです。MQL5では、オブジェクトの作成時にObjectFind()を使用する必要はありません。 オブジェクトの存在を事前に確認することなく(ObjectCreateを使用するだけ)、オブジェクトを作成することができます。 OnTick内部でも、このようなコードは_LastErrorエラーを発生させません。 MQL5のシステムコードの奥底でどのように実装されているかはわかりませんが、もしかしたら、まだオブジェクトが存在しない場合にのみオブジェクトを作成するというチェックがすでにアップロードされているのかもしれませんね。しかし、少なくともMQL5内部でオブジェクトを作成する場合には、ObjectFind()は 必要ないことが判明しました。そして、そのすべてのプロパティは、刻々と更新 されていく。 これはMQL4では言えません。既存のオブジェクトの上にオブジェクトを作成すると、4200("The object already exists")エラーが 発生します。その作成には、ObjectFind() の使用が義務付けられて いるということです。このため、_LastErrorエラーを発生させることなく、一定の更新からそのプロパティを閉じることができる簡単な可能性が残されています。 私の結論を確認してください。 Mikhail Toptunov 2021.11.16 09:52 #13736 Alexey Viktorov #:つまり、配列のサイズはちょうど3000で、新しいバーが形成されるとき、まずゼロインデックスが上書きされ......新しい値が最後に追加されるはずなのですが......?私の理解が正しければ、なぜループが必要なのでしょうか?単純に、配列そのものを最初のインデックスから順にNULLインデックスにコピーし、最後のインデックスに新しい値を追加する必要があります。 まあ、そうなんですが、例えば、遅れて、2小節が現れた、などの区切りがあれば、それを書いています。 ありがとうございます、了解しました。CopyTimeで試してみます。 Alexey Viktorov 2021.11.16 10:06 #13737 leon_17 #:いくつかのテストをしてみたところ...こんな感じです。MQL5では、オブジェクトの作成時にObjectFind()を使用する必要はありません。 オブジェクトの存在を事前に確認することなく(ObjectCreateを使用するだけ)、オブジェクトを作成できます。 OnTickコードの内部でも、このコードは_LastErrorエラーを発生させません。 MQL5のシステムコードの奥底でどのように実装されているかはわかりませんが、もしかしたら、まだオブジェクトが存在しない場合にのみオブジェクトを作成するというチェックがすでにアップロードされているのかもしれませんね。しかし、少なくともMQL5内部でオブジェクトを作成する場合には、ObjectFind() は必要ないことが判明しました。そして、そのすべてのプロパティは、刻々と更新 されていく。これはMQL4では言えません。既存のオブジェクトの上にオブジェクトを作成すると、4200("The object already exists")エラーが 発生します。その作成には、ObjectFind() の使用が義務付けられて いるということです。このため、_LastErrorエラーを発生させることなく、一定の更新からそのプロパティを閉じることができる簡単な可能性が残されています。 私の結論を確認してください。 エラーは全く関係ありません。ポイントは、オブジェクトが作成されると、特定のプロパティが割り当てられ、なぜ変更を加えずにプロパティを再定義するためにマシンの時間とリソースを浪費するのかということです。オブジェクトが存在するかどうかを確認し、変更が必要なものだけに新しいプロパティを割り当てる方が、はるかに安上がりです。例えば、テキストラベルやLableなど、これらのオブジェクトのテキストのみを変更することがよくあります。その他の物件は現状のまま... Alexey Viktorov 2021.11.16 10:08 #13738 Mikhail Toptunov #:そうですね......クリアに見えますが、ディレイや2小節の出現など、区切りがある場合は、それを書き込んでいます。ありがとうございます、了解しました。CopyTimeから試してみます。 まあ、CopyTime経由でやれば、まったく問題ないんですけどね。現在の3000本のバーからコピーすればいいだけです。 retired 2021.11.16 13:03 #13739 保留中の注文を 出すとき、またはマーケットからポジションを開くとき、プログラムコードで通常のトレーリングストップのレベルをどのように設定すればよいですか? これをどのように手動で行うかは明確である。非標準のトレーリングストップのためのプログラムは面白くない。 よろしくお願いします。 Ivan Butko 2021.11.17 09:24 #13740 for (int symbols; symbols < SymbolsTotal(true); symbols++) { Print(SymbolName(symbols ,true)); } なぜ、このようなデザインがうまくいかないのでしょうか?どこがエラーなのか・・・。(ログは空です) そして、ログは空っぽです。 enum c_mode { Auto, Manual, }; input c_mode MODE = Auto; if (MODE==Auto) { Print("MODE=Auto"); } 1...136713681369137013711372137313741375137613771378137913801381...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
誰かの教えが悪いのか。変数_LastErrorには、次のエラーが発生するまでの値が格納 されます。
さて、見てみると、メインコードの冒頭で、次のようなエラーが発生しています。
err_invalid_datetime
4010
日付や時刻の値が正しくない
そして、コードによってオブジェクトが生成され、_LastErrorは次のように書き換えられます。
err_object_not_found
4202
グラフィックオブジェクトが見つかりません
いつものように_LastErrorの チェックがコードの最後にある場合、4202が表示されますが、そのまま無視 します。つまり、エラー4010は気づかれずに残ってしまうのです。どこが間違ってるんだろう?
ブローカーの serverdc から執行エラーを受信しないことが市場の要件である。
ありがとうございます、知りませんでした、すべてのエラーは禁止されていると思っていました。
見てください、例えばメインコードの冒頭で、次のようなエラーが発生しています。
err_invalid_datetime
4010
日付や時刻の値が正しくない
そして、コードによってオブジェクトが生成され、_LastErrorは次のように書き換えられます。
err_object_not_found
4202
グラフィックオブジェクトが見つかりません
いつものように_LastErrorの チェックがコードの最後にある場合、4202が表示されますが、そのまま無視 します。つまり、エラー4010は気づか れずに残ってしまうのです。私はどこで間違っているのだろう?
ありがとうございます、知らなかったです、すべてのエラーは禁止されていると思っていました。
その通りです。あなたは間違っていない...
こんにちは、どなたかヒントを教えてください。
各バーの時間値を具体的に配列に書き込んでいます。チャート上のバーは3000本までという制限があります。
課題です。
- 新しい小節ごとに値の配列をシフトさせること。
正常に動作するように調整できない。
(this.m_rt-this.m_pc)=1 のとき、新しいバーで配列をシフトさせるのは正しいですか?
こんにちは、どなたかヒントを教えてください。
各バーの時間値を具体的に配列に書き込んでいます。チャート上のバーは3000本までという制限があります。
課題です。
- 新しい小節ごとに値の配列をシフトさせること。
正常に動作するように調整できない。
(this.m_rt-this.m_pc)=1 の場合、新しいバーで配列をシフトするのが正しいのでしょうか?
つまり、配列のサイズはちょうど3000でなければならず、新しいバーの形成時には、まずゼロインデックスが上書きされ......最後に新しい値が書き込まれるのでしょうか。
私の理解が正しければ、ループは何のためにあるのでしょうか?配列自体を先頭から順にNULLインデックスにコピーし、最後のインデックスに新しい値を書き込むだけです。
オブジェクトが見つからない場合は、オブジェクト検索エラーになります...
err_object_not_found
4202
グラフィックオブジェクトが見つかりません
アラーターする必要はない...
いくつかのテストをしてみたところ...こんな感じです。MQL5では、オブジェクトの作成時にObjectFind()を使用する必要はありません。
オブジェクトの存在を事前に確認することなく(ObjectCreateを使用するだけ)、オブジェクトを作成することができます。 OnTick内部でも、このようなコードは_LastErrorエラーを発生させません。
MQL5のシステムコードの奥底でどのように実装されているかはわかりませんが、もしかしたら、まだオブジェクトが存在しない場合にのみオブジェクトを作成するというチェックがすでにアップロードされているのかもしれませんね。しかし、少なくともMQL5内部でオブジェクトを作成する場合には、ObjectFind()は 必要ないことが判明しました。そして、そのすべてのプロパティは、刻々と更新 されていく。
これはMQL4では言えません。既存のオブジェクトの上にオブジェクトを作成すると、4200("The object already exists")エラーが 発生します。その作成には、ObjectFind() の使用が義務付けられて いるということです。このため、_LastErrorエラーを発生させることなく、一定の更新からそのプロパティを閉じることができる簡単な可能性が残されています。
私の結論を確認してください。
つまり、配列のサイズはちょうど3000で、新しいバーが形成されるとき、まずゼロインデックスが上書きされ......新しい値が最後に追加されるはずなのですが......?
私の理解が正しければ、なぜループが必要なのでしょうか?単純に、配列そのものを最初のインデックスから順にNULLインデックスにコピーし、最後のインデックスに新しい値を追加する必要があります。
まあ、そうなんですが、例えば、遅れて、2小節が現れた、などの区切りがあれば、それを書いています。
ありがとうございます、了解しました。CopyTimeで試してみます。
いくつかのテストをしてみたところ...こんな感じです。MQL5では、オブジェクトの作成時にObjectFind()を使用する必要はありません。
オブジェクトの存在を事前に確認することなく(ObjectCreateを使用するだけ)、オブジェクトを作成できます。 OnTickコードの内部でも、このコードは_LastErrorエラーを発生させません。
MQL5のシステムコードの奥底でどのように実装されているかはわかりませんが、もしかしたら、まだオブジェクトが存在しない場合にのみオブジェクトを作成するというチェックがすでにアップロードされているのかもしれませんね。しかし、少なくともMQL5内部でオブジェクトを作成する場合には、ObjectFind() は必要ないことが判明しました。そして、そのすべてのプロパティは、刻々と更新 されていく。
これはMQL4では言えません。既存のオブジェクトの上にオブジェクトを作成すると、4200("The object already exists")エラーが 発生します。その作成には、ObjectFind() の使用が義務付けられて いるということです。このため、_LastErrorエラーを発生させることなく、一定の更新からそのプロパティを閉じることができる簡単な可能性が残されています。
私の結論を確認してください。
そうですね......クリアに見えますが、ディレイや2小節の出現など、区切りがある場合は、それを書き込んでいます。
ありがとうございます、了解しました。CopyTimeから試してみます。
まあ、CopyTime経由でやれば、まったく問題ないんですけどね。現在の3000本のバーからコピーすればいいだけです。
保留中の注文を 出すとき、またはマーケットからポジションを開くとき、プログラムコードで通常のトレーリングストップのレベルをどのように設定すればよいですか?
これをどのように手動で行うかは明確である。非標準のトレーリングストップのためのプログラムは面白くない。
よろしくお願いします。
なぜ、このようなデザインがうまくいかないのでしょうか?どこがエラーなのか・・・。(ログは空です)
そして、ログは空っぽです。