[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 201

 

どなたか、開いているチャートウィンドウのうち、現在(ハイライトされている)シンボルを見つける方法を教えてください。添付のスクリプトやアドバイザーのあるものではなく、ターミナルで現在アクティブになっているものです(フォーカスにも書いてありますね)。

 
harbor:

どなたか、開いているチャートウィンドウのうち、現在(ハイライトされている)シンボルを見つける方法を教えてください。添付のスクリプトやアドバイザーのあるものではなく、ターミナルで現在アクティブになっているものです(フォーカスにも書いてありますね)。

チャートウィンドウの Z シーケンスの先頭のウィンドウディスクリプタを取得します。そして、それを元にヘッダーを取得し、パースする。
 
Zhunko:
チャートウィンドウの Z シーケンスの先頭のウィンドウディスクリプタを取得します。そして、それによってヘッダを取り、解析してください。


さて、mql4にはWindowHandleを 使った関数が1つしかないようです。

しかし、私はDLLを作っているのですが、何とかwinapiを通してこれを行うことはできないでしょうか?ハンドルでGetWindowTextという 関数があります。

ハンドルはどうすればいい?

 
harbor:


さて、mql4にはWindowHandleを 使った関数が1つしかないようです。

しかし、私はDLLを作っているのですが、何とかwinapiを通してこれを行うことはできないでしょうか?ハンドルでGetWindowTextという 関数があります。

ハンドルはどうすればいい?

さて、DLLでは、Zシーケンスの先頭にあるウィンドウのハンドルを取得する必要があります。MDIクライアントがある。グラフウィンドウの親となるものです。そこで、その描写力を発揮するのです。
 
EURJPYとUSDJPYを同ロットで取引した場合(同ロットでない場合)、どうなるのかご教示ください。もしかしたら経験者がいるかもしれない(計算のバリエーションが欲しい)。
 
YOUNGA:
EURJPYとUSDJPYを同ロットで取引した場合(同ロットでない場合)、どうなるのかご教示ください。もしかしたら経験者がいるかもしれない(計算のバリエーションが欲しい)。
何を計算するのですか?
 
YOUNGA:
EURJPYとUSDJPYを同じロットで異なる方向で取引した場合(あるいはしない場合)、どうなるのかご教示ください。もしかしたら、誰かが試したことがあるかもしれない(計算のバリエーションが欲しい)

ここではEURとUSDが基準通貨と なり、ロットはその通貨で計算されます。つまり、最初のペアは1ロットが100.000ユーロ、2番目は100.000米ドルで、どちらの場合も円で売買される。
 


EURJPYとUSDJPYのペアでそれぞれ1ロットずつ開設した場合、EURUSDのロットはEURUSDの価格が1ポイント変化するはずです。 この2つは相関しているので、合成EURJPY/USDJPYで何かが起こるはずです。



 

次のような考えでコーディングに挑戦しています。

時刻が01.00.00. または03.00.00の場合。

注文を上に開く。

それ以外の時は、ダウンオーダーを開く

問題 プログラムは 01:00:00 にコンパイルされ、買い注文を開くが、|| やそれ以降を読み込まない。

if(Hour( )==01 && Minute( )==00 && Seconds()==00||Hour( )==03 && Minute( )==00 && Seconds()==00 )

つまり 03.00.00にテスターは買いポジションではなく、売りポジションをオープン します。

それ以外の案件は、コードに従って開設されます。

  if(Hour( )==01 && Minute( )==00 && Seconds()==00||Hour( )==03 && Minute( )==00 && Seconds()==00 )
 
    
   {  
      if (Bid==Price  )
     
  int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );
  }
  else
  {
  SL=NormalizeDouble (Price+3000*Point, Digits);         
  TP=NormalizeDouble (Price-100*Point, Digits);
  Ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,SL,TP );
 }
 }
 }

Делал два заголовка if ...... вообще не открывает сделки

 if(Hour( )==01 && Minute( )==00 && Seconds()==00 )
  if(Hour( )==03 && Minute( )==00 && Seconds()==00)
    
   {  
      if (Bid==Price  )
     
  int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );
  }
  else
  {
  SL=NormalizeDouble (Price+3000*Point, Digits);         
  TP=NormalizeDouble (Price-100*Point, Digits);
  Ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,SL,TP );
 }
 }
 }
Подскажите - как сделать так что бы в 03.00.00. открывалась сделка на покупку? Спасибо
 
solnce600:

問題 プログラムがコンパイルされ、01.00.00で買い取引を開始 するが ||と その次の文字が読めない。

if(Hour( )==01 && Minute( )==00 && Seconds()==00||Hour( )==03 && Minute( )==00 && Seconds()==00 )

つまり 03.00.00にテスターは買いポジションではなく、売りポジションをオープン します。

それ以外の案件は、コードに従って開設されます。


まずは、必要な場所にブラケットを設置することに慣れることですね。そんな感じ。

if((Hour( )==01 && Minute( )==00 && Seconds()==00) || (Hour( )==03 && Minute( )==00 && Seconds()==00))
実際には、固定値ではなく、時間的な幅を持たせる必要があります。あなたの論理はまったく正しくありません。 1時間or3時間ではなく、1時間から3時間まで!?