インジケーターに関する雑多な質問 - ページ 12 1...5678910111213141516 新しいコメント honest_knave 2017.04.08 01:35 #111 そのprintステートメントが何かを生成しない理由はないでしょう。新しいチャートにインジケータを追加した場合、(タイムフレームを変更することなく)印刷されますか?もしそうなら、すでにチャート上にインジケータがあり、その変更を期待して再コンパイルしていることが問題なのかもしれません。 Max Enrik 2017.04.08 01:41 #112 honest_knave:そのprintステートメントが何かを生成しない理由はないでしょう。新しいチャートにインジケータを追加した場合、(タイムフレームを変更することなく)印刷されますか?もしそうなら、すでにチャート上にインジケータがあり、その変更を期待して再コンパイルしたことが問題なのかもしれません。 早速のコメント、ありがとうございます。そうなんです!Load TemplateかAdd Indicatorのどちらかのメッセージの下に表示されます。20... ... EURUSD,M1: This Year1900しかし、あなたが知っているように、そのコードは私に" 2017 "を与える可能性があります。//--- 2回目の編集私は再コンパイルするとき、それは正しい結果を示しています。しかし、インジケータの追加やテンプレートのロードをしようとすると、再コンパイルしたMetaEditorを開くことができません...。私の言っていることが理解できるといいのですが。 honest_knave 2017.04.08 02:16 #113 Max Enrik: 早速のコメント、ありがとうございます。そうなんです。テンプレートを読み込むか、インジケータを追加するかで、下のメッセージが表示されます。しかし、あなたが知っているように、このコードは私に" 2017 "を与える可能性があります。//--- 2回目の編集再コンパイルすると、正しい結果が表示されます。しかし、インジケータの追加やテンプレートのロードをしようとすると、再コンパイルしたMetaEditorを開くことができません...。ということなのですが、ご理解いただけましたでしょうか? おそらく、間違った年を表示する理由は、ブローカーに接続する前にOnInit()が実行されているからでしょう。 Year() はサーバーの時刻に 基づくもので、接続がなければ年を知ることはできません。と比較してみてください。TimeYear(TimeLocal()) Max Enrik 2017.04.08 02:47 #114 honest_knave: おそらく、ブローカーに接続する前に OnInit() が実行されたために、「間違った」年が表示されたのだと思われます。 Year() はサーバーの時刻を基準にしているので、接続がなければ年を知ることはできません。と比較してみてください。 OnInit()とOnCalculate(...)は異なるコードスタイルが必要 なことは確かです...。 私のインジケータをもう一度書き直してみます。(あきらめる可能性もありますが。)コメントありがとうございます。 Max Enrik 2017.04.10 11:35 #115 まず、すべてのインジケータオブジェクトを削除してから、書き換えるようなコードを書けばいいと思います。 以下のようなコードで試してみました。しかし、この方法には疑問があります。Q: インジケーターのオブジェクトをすべて削除するには、その方法で十分でしょうか?何かアドバイスがあればお願いします。int OnInit() { ObjectsDeleteAll( 0, prefix ); // then all my indicator code here... } honest_knave 2017.04.10 12:04 #116 Max Enrik:まず、すべてのインジケータオブジェクトを削除してから、書き換えるようなコードを書けばいいと思います。 以下のようなコードで試してみました。しかし、この方法には疑問があります。Q: インジケーターのオブジェクトをすべて削除するには、その方法で十分でしょうか?何かアドバイスがあればお願いします。 現在のチャートから'prefix'で始まるオブジェクトをすべて削除するには、この方法が正しいのでしょうか? Max Enrik 2017.04.10 12:29 #117 honest_knave: これが、現在のチャートから 'prefix' で始まるオブジェクトをすべて削除する正しい方法です。かっこいいですねー。ご返答ありがとうございます。 さて、次の日に私のインジケータがどのように動作するか確認する必要があります。( p.s. 私はTesterで自分のインジケータをテストするのは好きではありません ) Max Enrik 2017.04.10 13:15 #118 ( 一度だけ言ったことがあります )私はいくつかの指標に以下のメソッドコードを使用しています。その指標は何の問題もありませんが、私がMT4プラットフォームを起動するときに、その指標は正しい値のために更新するプラットフォームを再起動する必要があるという問題を持っています。毎日一度だけこの問題に直面します。Q: 下記のコードの一部が正しい値を更新できない問題を引き起こす可能性があるのでしょうか?よろしくお願いします。int OnInit() { //--- datetime a = iTime( Symbol(), 0, 0 ); int b = iBarShift( Symbol(), 0, a ); datetime c = iOpen( Symbol(), 0, b ); //--- return(0); } honest_knave 2017.04.10 13:23 #119 OnInit()内のコードは一度だけ実行されます。端末を再起動すると、ブローカーに接続する前に OnInit() が終了してしまうことがあります。ブローカーに接続していない状態では、時刻がおかしくなってしまいます。コードを OnInit() の外に出すか、少なくとも IsConnected() をチェック することをお勧めします。 Max Enrik 2017.04.10 14:16 #120 honest_knave:OnInit()の外にコードを移動するか、少なくともIsConnected()をチェックすることをお勧めします。このIsConnected()は絶対に使わないでください、それについて研究します。ありがとうございました。 1...5678910111213141516 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
そのprintステートメントが何かを生成しない理由はないでしょう。
新しいチャートにインジケータを追加した場合、(タイムフレームを変更することなく)印刷されますか?
もしそうなら、すでにチャート上にインジケータがあり、その変更を期待して再コンパイルしていることが問題なのかもしれません。
そのprintステートメントが何かを生成しない理由はないでしょう。
新しいチャートにインジケータを追加した場合、(タイムフレームを変更することなく)印刷されますか?
もしそうなら、すでにチャート上にインジケータがあり、その変更を期待して再コンパイルしたことが問題なのかもしれません。
早速のコメント、ありがとうございます。
そうなんです!Load TemplateかAdd Indicatorのどちらかのメッセージの下に表示されます。
20... ... EURUSD,M1: This Year1900
しかし、あなたが知っているように、そのコードは私に" 2017 "を与える可能性があります。
//--- 2回目の編集
私は再コンパイルするとき、それは正しい結果を示しています。
しかし、インジケータの追加やテンプレートのロードをしようとすると、再コンパイルしたMetaEditorを開くことができません...。私の言っていることが理解できるといいのですが。
早速のコメント、ありがとうございます。
そうなんです。テンプレートを読み込むか、インジケータを追加するかで、下のメッセージが表示されます。
しかし、あなたが知っているように、このコードは私に" 2017 "を与える可能性があります。
//--- 2回目の編集
再コンパイルすると、正しい結果が表示されます。
しかし、インジケータの追加やテンプレートのロードをしようとすると、再コンパイルしたMetaEditorを開くことができません...。ということなのですが、ご理解いただけましたでしょうか?
おそらく、間違った年を表示する理由は、ブローカーに接続する前にOnInit()が実行されているからでしょう。
Year() はサーバーの時刻に 基づくもので、接続がなければ年を知ることはできません。
と比較してみてください。
おそらく、ブローカーに接続する前に OnInit() が実行されたために、「間違った」年が表示されたのだと思われます。
Year() はサーバーの時刻を基準にしているので、接続がなければ年を知ることはできません。
と比較してみてください。
OnInit()とOnCalculate(...)は異なるコードスタイルが必要 なことは確かです...。
私のインジケータをもう一度書き直してみます。
(あきらめる可能性もありますが。)
コメントありがとうございます。
まず、すべてのインジケータオブジェクトを削除してから、書き換えるようなコードを書けばいいと思います。
以下のようなコードで試してみました。しかし、この方法には疑問があります。
Q: インジケーターのオブジェクトをすべて削除するには、その方法で十分でしょうか?
何かアドバイスがあればお願いします。
まず、すべてのインジケータオブジェクトを削除してから、書き換えるようなコードを書けばいいと思います。
以下のようなコードで試してみました。しかし、この方法には疑問があります。
Q: インジケーターのオブジェクトをすべて削除するには、その方法で十分でしょうか?
何かアドバイスがあればお願いします。
現在のチャートから'prefix'で始まるオブジェクトをすべて削除するには、この方法が正しいのでしょうか?
これが、現在のチャートから 'prefix' で始まるオブジェクトをすべて削除する正しい方法です。
かっこいいですねー。ご返答ありがとうございます。
さて、次の日に私のインジケータがどのように動作するか確認する必要があります。
( p.s. 私はTesterで自分のインジケータをテストするのは好きではありません )
( 一度だけ言ったことがあります )
私はいくつかの指標に以下のメソッドコードを使用しています。その指標は何の問題もありませんが、私がMT4プラットフォームを起動するときに、その指標は正しい値のために更新するプラットフォームを再起動する必要があるという問題を持っています。毎日一度だけこの問題に直面します。
Q: 下記のコードの一部が正しい値を更新できない問題を引き起こす可能性があるのでしょうか?
よろしくお願いします。
OnInit()内のコードは一度だけ実行されます。
端末を再起動すると、ブローカーに接続する前に OnInit() が終了してしまうことがあります。
ブローカーに接続していない状態では、時刻がおかしくなってしまいます。
コードを OnInit() の外に出すか、少なくとも IsConnected() をチェック することをお勧めします。
OnInit()の外にコードを移動するか、少なくともIsConnected()をチェックすることをお勧めします。
このIsConnected()は絶対に使わないでください、それについて研究します。
ありがとうございました。