MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 452

 

こんにちは。実行遅延の整理の仕方を教えてください。そのため、新しいロウソクの 後、更新が行われるまでに10秒が経過するようにしました。

#define   WM_COMMAND                    0x0111
#property indicator_chart_window
#import "user32.dll"
int RegisterWindowMessageA(string lpstring);
int PostMessageA(int  hWnd,int  Msg,int  wParam,string lParam);
int New_Bar;
datetime Time_0;
#import
int start()
 {
     New_Bar=0;                   // Для начала обнулимся
  if (Time_0 != Time[0])          // Если уже другое время начала бара
      {
      New_Bar= 1;                 // А вот и новый бар
      Time_0 = Time[0];           // Запомним время начала нового бара
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      } 
 return(0);
 }
 
こんにちは、チャートから1つのオブジェクトを削除すると、残りのオブジェクト(選択肢)が削除されるという条件でコードを書いてください

1つのオブジェクトに他のオブジェクトをくっつけていて、このオブジェクトを削除すると、残りはチャートにぶら下がるだけです
 
Dmitry Ivkin:
こんにちは、チャートから1つのオブジェクトを削除すると、残りの(あなたが選んだ)オブジェクトも削除されるという条件でコードを書いて欲しいのです 1つのオブジェクトに他のオブジェクトがくっ付いていて、このオブジェクトを削除すると、残りのオブジェクトはチャートにぶら下がるだけなのです

オブジェクトを作成する 際、私はプレフィックス、つまり名前で始まるものを使っています。例:ObjectCreate("777_a" ...)ObjectCreate("777_z")して、グループを削除する ObjectsDelete(0, "777_")
 
werter:

こんにちは。実行遅延の整理の仕方を教えてください。新しいローソク足が 出た後、10秒待ってから更新を実行したいのですが。

一番簡単なのは、Time_0 = Time[0]; の後にSleep(10000); を追加して、下の #import 命令は2行上に上げると良いと思います。

 
STARIJ:

一番簡単なのは、Time_0 = Time[0]; の後に Sleep(10000); を入れることで、下の #import 命令は2行上に上げると良いと思います。

はい、それはExpert Advisorになりますね...。Sleep インジケータでは、残念ながらできません。
 
STARIJ:
オブジェクトの作成 時には、プレフィックス、つまり名前の先頭を使うようにしています。例:ObjectCreate("777_a" ...)ObjectCreate("777_z")で、グループを削除します ObjectsDelete(0, "777_")

ご返信ありがとうございます。いいえ、あなたは理解していません、私はオブジェクトに接続されている他のオブジェクトを持っており、あなたがインジケータを削除した場合、すべてが正常であるが、右クリックして削除すると、正確に1オブジェクトを削除し、すべての添付が必要です、私はあなたが理解することを願っています)。

 
Dmitry Ivkin:

しかし、右クリックして削除すると、1つのオブジェクトが削除され、私はすべての添付ファイルを必要とします。)

定期的(tick毎?)にメインオブジェクトの存在を確認し、存在しない場合はプレフィックスで子オブジェクトを削除する。
 
werter ええ、まあ、専門家なら...。スリープインジケーターでは、残念ながら無理です。
datetime Time_0=0;

void ...
{
   if (Time_0 < TimeCurrent())
   {
      Alert(TimeCurrent());
      Time_0 = Time[0]+PeriodSeconds()+10; 
   }
 

久しぶりにMQL4で書いたEAを今度はMQL5から書き直さないといけない。EAが設置されているシンボルで1トレードを開くべきコードは正しいですか?

Strategy Testerで、何らかの理由で2つの取引が開始される。

...
if(!Orderex(_Symbol))
{
   OrderSend(NULL,OP_SELL,lot,Bid,30,Bid+stop*Point,Bid-take*Point,NULL,magicf,0,clrRed);
}
...
bool Orderex(string symbol)
{
   for(int i=OrdersTotal(); i>0; i--)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==symbol && OrderMagicNumber()==magicf) return true;
      
      
      
      }


   return false;
}
 

今まで考えもしなかった別のニュアンスに出会いました。

1)多くのExpert Advisorがインストールされているペアがあります。

2) Expert Advisorが独自の設定で注文を出す場合(例えば0.1や0.5を出すEAもある)、このレコードはEAsの行に表示されます。

3) "Experts "の行を読み、xロット以上のオープンポジション がある場合、他のロボットが自分自身を削除します。


問題は、ログファイルに含まれていないそれをどのように読み、処理するかである。