[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 414

 
inoy:

アドバイザーは、そのシンボルでアドバイザー自身の注文よりも早い時間に開かれた他の注文がある場合、時間通りに注文を閉じることはできません。
の注文を受け付けています。他の人の注文が後で開かれている場合や、他の注文がない場合は、OrderClose関数が正しく動作します。エラーの発生箇所を教えてください。


インデックス0の注文を取るだけで、オープンオーダーの中から探さないのがミソです。
 
Roger:

このエラーは、未決済注文の中から探すのではなく、単にインデックス0の注文を取るというものです。

失礼ですが、that variantでも似たような状況です。
//---- закрытие позиции
if(OrdersTotal() > 0)
for(int i=OrdersTotal();i>=0;i--)
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol()&& OrderMagicNumber() == MagicNumber)
if ( iTime(Symbol(),0,0) >= OrderOpenTime()+SecondsClose )
if (OrderType() == OP_BUY)
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),NormalizeDouble((Ask - Bid) * Point,Digits), DodgerBlue);
お手数ですが、正しい解答をお願いします。
 
Avelox:

以下の式からインジケータでビープ音を出力する方法。

if (num1 == 9) {.
ObjectCreate(""+i, OBJ_TEXT, 0, Time[i+1],High[i+1]+10*Point ) を実行します。
ObjectSetText(""+i, ""+DoubleToStr(num1,0), 16, "Arial", RoyalBlue);

}

もし、「OBJ_SICICOCIを使って、MQL4のドキュメントで詳細を見れば、何でも載っていますよ!」 よりも詳しく教えていただけるのであれば、ぜひお願いします。

私はこの問題を自分で解決することができました。


ObjectCreate(""+i,OBJ_TEXT, 0, Time[i+1],High[i+1]+10*Point ) を実行します。
ObjectSetText(""+i, ""+DoubleToStr(num1,0), 18, "Arial", RoyalBlue);
PlaySound("havecall.wav"); }.
 
inoy:

失礼ですが、「THISシナリオ」でも同じような状況です。 どうか、きちんとした解決策を提示していただけないものでしょうか。

//---- закрытие позиции
if(OrdersTotal() > 0) 
{
  for(int i=OrdersTotal();i>=0;i--) 
  {
    OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
    if (OrderSymbol()==Symbol()&& OrderMagicNumber() == MagicNumber) 
    {
      if ( iTime(Symbol(),0,0) >= OrderOpenTime()+SecondsClose ) 
      {
         if (OrderType() == OP_BUY)
         {
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),NormalizeDouble((Ask - Bid) * Point,Digits), DodgerBlue);
         }
      }
   }
}
 

さて、また、交換

for(int i=OrdersTotal();i>=0;i--) 

まで

for(int i=OrdersTotal()-1;i>=0;i--) 


И еще, не понял, что за элемент в функции (подчеркнуто красным)?

OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),NormalizeDouble((Ask - Bid) * Point,Digits), DodgerBlue);

 
for ( Expression_1; ; Expression_2)// 条件なし{// 開始波括弧 演算子ブロック、 // ループ本体を構成する //... 複数の演算子で構成される}// 終了波括弧

このようなループを終了させる条件とは何か、教えてください。あるいは、次のようなループ

For ( ; ; )// 不在。式と条件{// 開始波括弧 演算子のブロック、 // ループ本体は、 // ... ループ本体を構成する複数の演算子からなることができる}// 終了波括弧
 
VladimirR:

このようなサイクルから抜け出すための条件を教えてください。またはこのうちの1つ


毀す
 

Vininさん、Rogerさん - ありがとうございます、助かりました。

NormalizeDouble((Ask - Bid) * Point,Digits) は、XAUUSD などのスプレッドが大きいシンボルに対するスリッページです。

 
inoy:

Vininさん、Rogerさん - ありがとうございます、助かりました。

NormalizeDouble((Ask - Bid) * Point,Digits) は、XAUUSD などのスプレッドが大きいシンボルに対するスリッページです。


では、それが0であることは想像できますか?第一に、スリッページは正の整数であること、第二に、差は乗算ではなく、Pointで 割ることです。
 
皆さん、夜間取引しないようにEAを「訓練」するにはどうしたらよいでしょうか? 端末の時刻が23時から02時(GMT)の間にある... Hour()>=2&Hour()<=23でもダメでした...。