MQL4 リアルタイムクロック(秒単位) - ページ 5

 
7bit:

mql4でほんの一行です(もちろん、Windows APIを呼び出すために許可されたDLLコールが必要ですが、何もインストールする必要はありません)。

私はこのスクリプトをお気に入りに入れて、ティックが必要なときにチャートにドラッグするだけです。


また、このスクリプトのバリエーションとして、1回だけティックを送信して終了するループなしのものがあり、これ(one_tick.mq4)をホットキーALT+Tにバインドして、ALT-Tを押すだけでアクティブなチャートにティックを送信できるようにしました。週末に実験している私のstat-arb EAのいくつかで、start()を強制して計算とグラフのプロットを行うためにこれが必要です(私はチャート上で線を動かして間隔を変更でき、それから彼らの計算を更新するために新しいティックが必要なのです)。


7 dllインポートを使用したことがないので、以下の説明をお願いします。

+Meta Trader ClientのフォルダにDLLファイルをインクルードする必要があるのでしょうか?

+ MTクライアントからこのEAを有効にするにはどうしたらよいでしょうか。

ちょうど私達にメタトレーダーでDLLインポートのいくつかの例を教えてください。

 
spidermagos:


7 dllインポートを使ったことがないので、以下の説明をお願いします。

+ Meta Trader ClientのフォルダにDLLファイルを入れる必要があるのでしょうか?

+ MTクライアントからこのEAを有効にするにはどうしたらいいのでしょうか?

Meta TraderでDLLをインポートした例だけでも教えてください。

140文字以上の文章を 読む技術を身につけないと、全く活用できない(というか、どんな用途に使えるのか理解できない)ので、申し訳ないのですが、ご了承ください。

まずは、前回の投稿で引用した文章から意味を抜き出してみてはいかがでしょうか。そうすれば、私がEAとしてではなくスクリプトとして記述していることがわかり、さらに、驚くことに、DLLをインストールする必要がないと書いていることがわかり、さらに、どのように使用することになっているかを説明した文章の一部を見つけることができるかもしれません。

 
7bit:

140文字以上の文章を読む 技術を身につけない限り、それを活用する(あるいはどんな目的で使えるのか理解する)ことは全く不可能であることを、申し訳ありませんがお知らせします。

手始めに、前回の投稿で引用した文章から意味を抜き出してみてはどうでしょう。そして、私がEAとしてではなくスクリプトとして記述していることが分かるでしょう。さらに、驚くことに、DLLをインストールする必要がないと書いていることが分かり、どのように使用するかを説明した文章の一部も見つけることができるかもしれません。

私はあなたの傲慢さと英語力、そしておそらくあなたのコーディング例には感心しています。

しかし、解決策を示さずに問題を解決することは、問題を避けているに過ぎません。

私の読解力やテクニックを疑うより、プログラムを全部書いて自己証明したらどうですか。

この時計はチャートの中にあるべきものなのでしょうか?

 

と2を足すだけです。

7bitのコードを使って偽のティックを生成し、私が投稿したコードと組み合わせれば、必要なものはすべて揃います。

7bitはこのフォーラムに参加しているトッププログラマーの一人です。

//z

 

spidermagos:

私はあなたの傲慢さを賞賛する

ありがとうございました。


スパイダーマゴス

哲学的なことを言うより、プログラムを全部書いて、自分の力を証明したらどうですか?

スクリプトは完全なもので、スタンドアロンで動作します。

私は、インジケータがsleep()のようなブロッキングコールを使用することができないという問題を解決するための提案として、このスクリプトを投稿しました。このクロックの問題は、このスレッドで直前に言及されたもので、この問題だけで、他には何も言及されていません。これはそれ自体で完全に独立した問題として扱うことができ、私のスクリプトはそれに対する一般的な(そして完全に独立した)解決策であり、多くの同様のシナリオに適用することができ、さらに私は別の使用例について例を示しました。

もしあなたがコードを書きたいのなら、問題を分解する 技術を身につけなければならないし、解決策や部分的な解決策を偶然見つけたときに、すぐにそれを見分けることができなければならない。

 
//< This is EA : Compile and run in folder "/experts" >
 
 
int start()
{
static int iClockPeriod = 1000 ;
 
static int iTimeStamp          ;
static int iRunTime            ;
 
while  ( ! IsStopped () )
       {
           iTimeStamp = GetTickCount ()                             ;
           Comment    ( TimeToStr ( TimeLocal () , TIME_SECONDS ) ) ;
           iRunTime   = GetTickCount () - iTimeStamp                ;
           Sleep      ( iClockPeriod    - iRunTime                ) ;
       }
}
//</This is EA : Compile and run in folder "/experts" > 

//< This is Indicator : Compile and run in folder "/experts/indicators" >
#property  indicator_chart_window
 
int start()
{
static int iClockPeriod = 1000 ;
 
static int iTimeStamp          ;
  
  
if     ( ( GetTickCount () - iTimeStamp ) < iClockPeriod )   return ;
       {
           iTimeStamp = GetTickCount ()                             ;
           Comment    ( TimeToStr ( TimeLocal () , TIME_SECONDS ) ) ;
  
 
       }
}
//</This is Indicator : Compile and run in folder "/experts/indicators" > 

これらのプログラムを異なるチャートで実行します。

 
Ais:

これらのプログラムを異なるチャートで実行します。


Ais ; 7bit の言うとおりこれはうまくいきません!スタート機能は tick by tickです。

この問題を解決するには、DLLをインポートする必要があります。...

インジケータからスクリプトを呼び出す場合

 
7bit:

ありがとうございます。


スクリプトは完全なもので、スタンドアロンで動作し、私が与えた仕様の範囲内です。

私は、インジケータがsleep()のようなブロッキングコールを使用することができないという問題を解決するための提案として、これを投稿したのですが、インジケータ自体からタイマーイベントを生成する他の方法は存在しません。このクロックの問題は、このスレッドで直前に言及されたもので、この問題だけで、他には何も言及されていません。これはそれ自体で完全に独立した問題として扱うことができ、私のスクリプトはそれに対する一般的な(そして完全に独立した)解決策であり、多くの同様のシナリオに適用することができ、さらに私は別の使用例について例を示しました。

コードを書きたいなら、問題を分解する技術を身につけなければならないし、解決策や部分的な解決策につまずいたときに、すぐにそれを見分けられるようにならなければならないのです。



7bit - インジケータからスクリプトを呼び出すには?

具体的な例を教えてください。

 
spidermagos:

Start()関数がtick by tickで動作するのは私の理解です。

コンピュータの時計からリアルタイムのデータを使用し、1秒ごとに更新する方法はありますか?tick by tickではなく、毎秒の更新ですか?

もしそうなら、私にいくつかの助けを与えてください。

感謝

こんにちは、あなたはスクリプトの代わりに別のティックセンダーアプリケーションを使用することができます(いくつかのフリーウェアのものがあります。そして、PCの時計を頻繁に同期させ、TimeCurrent() の代わりにTimeLocal() + hour_difference_between_yourtimezone_and_servertimezone * 3600 を使用します。生成ティックでは Start() を実行させる「だけ」なので、TimeCurrent () はティックがあなたのブローカーから来ない限り更新されません。これは指標とEAの両方で動作します。面白いことに、サーバーが時間同期していないブローカーがいくつかあり、彼らは数秒遅れていますが、タイムスタンプのみで、残念ながら価格ではなく、異なるキャンドル、勢いが あるときに時々完全に異なるM1があります(笑)。
 

まず、startにあるロジックを関数にまとめます。

次にinit()の中でwhileループを作り、sleepを設定し、そこから関数を呼び出します。 sleepの単位はミリ秒です。

こうすることで、値動きを待つのではなく、タイミングをコントロールすることができます。

プログラムのロジックに問題がなければ、完璧に動作します。唯一の問題は、バックテスターで これを実行できないことです。まずStart()を使ってテストを行い、その後init()に切り替えてください。