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

 

しかし、これはリアルタイムのソリューションではありません。
sleep()の場合は可能です。

 

ですから、ティックバイティックとスリープを組み合わせれば、リアルタイムの時計になります。)

 

もしこのソリューションがEAに実装されるなら、TimeCurrent()はもう必要なく、ループはSleep(Interval-Runtime)(単位:ms)によって制御されます。

ほとんどのコードは同じで、redraw()はもう必要ありません。また、コードの速度を上げる必要がある場合は、回転ゼロ点を持つ配列を使用することで、シフトループをなくすことができます。

この方法(または類似の方法)は、純粋なMQLのインジケータでできる最良の解決策です。DLLを使用し、外部プログラムに計算をエクスポート する場合、より良いソリューションがあることは確かです。

 
spidermagos:

ですから、ティックバイティックとスリープを組み合わせれば、リアルタイムの時計になります。)

はい、しかし、スリープはIndicatorsで可能ではありません、それはこのスレッドの初めからのあなたの問題です。
 
zzuegg:
はい、しかし、スリープは、このスレッドの初めからあなたの問題である、インディケータで可能ではありません。

EAがインジケータを呼び出すことができますか?
 
はい、しかし、あなたの問題を解決することはできませんicustomを介してのみ。
 
チャートに1秒ごとにフェイクティックを送信するスクリプトを添付することができます。これは、マルチペアインジケーターやEAを一定間隔で更新するために、私が通常行っていることです。
 
7bit:
チャートに1秒ごとにフェイクティックを送信するスクリプトを添付することができます。これは、マルチペアインジケーターやEAを一定間隔で更新するために、私が通常行っていることです。
そのためにDLLが必要なのか、それともなくても可能なのか?
 
zzuegg:
あなたはそのためのDLLが必要ですか、これはなしで可能ですか?

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

/**
* MT4/experts/scripts/ticks.mq4
* send a fake tick every 1000ms to the chart and
* all its indicators and EA until this script is removed.
*/

#property copyright "© Bernd Kreuss"

#import "user32.dll"
   int PostMessageA(int hWnd, int Msg, int wParam, int lParam);
   int RegisterWindowMessageA(string lpString);
#import

int start(){
   int hwnd = WindowHandle(Symbol(), Period());
   int msg = RegisterWindowMessageA("MetaTrader4_Internal_Message");
   while(!IsStopped()){
      PostMessageA(hwnd, msg, 2, 1);
      Sleep(1000);
   }
}

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


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

 

いいね、教えてくれてありがとう