Tick更新を待たずに定期的にEA を呼び出す。
コメントで質問があったので、書き留めておきます。
#include#import "user32.dll" int RegisterWindowMessageA(string lpString); #import int start() { if (!IsDllsAllowed()) { Alert("ERROR: [Allow DLL imports] NOT Checked."); return (0); } int hwnd = WindowHandle(Symbol(), Period()); int MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); while(!IsStopped()){ PostMessageA(hwnd,MT4InternalMsg,2,1); Sleep(1000); } return(0); }
こんなscript をチャートに貼り付けておくと、そのチャートで動くEA は1秒毎に Tickが更新されたと勘違いして実行されます。
…でも、わざわざscript で1秒毎に呼び出すようにしなくても、EA自身を1秒毎にループさせても良いですよね..。
int init() { start(); return(0); } int start() { while(!IsStopped()){ Comment(TimeToStr(TimeLocal(),TIME_SECONDS)+"\n\n"+ TimeToStr(TimeCurrent(),TIME_SECONDS)+"\n\n"+ DoubleToStr(Bid,Digits)+"\n\n"+ DoubleToStr(MarketInfo(Symbol(),MODE_BID),Digits) ); Sleep(1000); //RefreshRates(); } return(0); }
↑このような無限ループEAを作成しても、1秒毎に実行を実現できます。
ただ、このようなループEAでは、Bid と MarketInfo(Symbol(),MODE_BID) が異なるので注意してください。このままでは、Bid は最新の値に更新されません。最新の Bid が必要な時は、MarketInfo(Symbol(),MODE_BID) を使うか、RefreshRates();を実行してください。
閑話休題
明日こそ、ピボットを何とかしなくてわ...><;