[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 52

 
first_may:
日付を扱う関数、つまり、2つの日付の差は0より大きいかどうかを判断する関数の例はありますか?

また、あなたの理解やMQLの理解では、日付とは何ですか?
 

みんな、コードを理解するのを手伝ってくれ。主なタスクは、あるレベルに達したときに保留中の注文を削除 することです。

if (OrdersTotal()!=0 && Bid == Delete_Level)
   {
   for (int i=1; i<=OrdersTotal(); i++) //Cycle for all orders..
      { 
         if(OrderSelect(i-1,SELECT_BY_POS)==true)//If there is the next one
            { 
               if(OrderType()>1) 
                  {
                  if(OrderDelete(OrderTicket())==true)
                  {
                  Alert ("Ордера удалены");
                  }
                  }
            } 
      }
   }

Delete_Levelは、現在までの3本のバーにおけるMA30の位置で決定されます。

double MA3 = iMA(NULL, 0, MA_Period_2, 0, MODE_SMA, PRICE_CLOSE, 2); //определение уровня MA

double Delete_Level = MA3;// Определение значения переменной

しかし、このDelete_Levelでは注文は削除されない。何が私の誤りなのか理解するのを助けてください。

 
アルゴリズムはどこに到達するのか?コードをプリントして 確認する。
 
"アルゴリズムの行き先 "とは?
 
vovan-gogan:
"アルゴリズムの行き先 "とは?

削除されないと言うことは、OrderDeleteに行かないということですよね。

では、どこに行くのか、どのような条件でブロックしているのかが問題です。

 
sergeev:

削除されないと言うことは、OrderDeleteに至らないということですよね。

問題は、それがどこに届くのか、どのような条件でブロックされるのか、ということです。


その理屈はよくわかります。これから直してみようと思います。
 

何かがクリアになった。でも、まだ解決方法がわからない。Alert を使ってみると、条件

if (OrdersTotal()!=0 && Bid == Delete_Level)

が満たされない。if(OrdersTotal()!=0)" だけは別途可能だが、"Bid == Delete_Level" と一緒にしてはいけない。その理由は何でしょうか。Delete_Level に達したときに、保留中の注文が 削除されない理由。保留中の注文がDelete_Levelに達したときに削除するために、何か提案や代替策をお願いします。

 
vovan-gogan:

何かがクリアになった。でも、どうすれば解決できるのか、まだわからないんです。Alert を使ってみると、条件

が満たされない。if(OrdersTotal()!=0)" だけは別途可能だが、"Bid == Delete_Level" と一緒にしてはいけない。その理由は何でしょうか。Delete_Level に達したときに、保留中の注文が削除されない理由。保留中の注文がDelete_Levelに達したときに削除するために、何か提案や代替策をお願いします。


これらの変数を正規化し、「共通分母に還元」します。たとえば、Delete_Level 変数の値に何らかの許容範囲(±)を使用します。
 
vovan-gogan:

何かがクリアになった。でも、どうすれば解決できるのか、まだわからないんです。Alert を使ってみると、条件

が満たされない。if(OrdersTotal()!=0)" だけは別途可能だが、"Bid == Delete_Level" と一緒にしてはいけない。その理由は何でしょうか。Delete_Level に達したときに、保留中の注文が削除されない理由。保留中の注文がDelete_Levelに達したときに削除するために、何か提案や代替策をお願いします。


例えば、こんな感じです。
if(Bid-MarketInfo(Symbol(),MODE_SPREAD)*Point< Delete_Level && Bid+MarketInfo(Symbol(),MODE_SPREAD)*Point > Delete_Level) - считать за 
if( Bid == Delete_Level )  
 

申し訳ありませんが、お手柔らかにお願いします) のエラーについて教えてください。

Bid == Delete_Level
理由: