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

 
first_may:


そうですね、発音を間違えてしまいました。ヘルプを読んで、こう書くことにしました。

// Expert Advisor はセッションの毎日注文が可能です。
// 10-45から18-30までの期間。
if (Hour()>=10 && Minute()>=45 && Hour()<=18 && Minute()<=30)
{
...
}

この状態で時刻を確認するのが正しいのでしょうか?


いいえ、Minute()>=45 && Minute()<=30は原理的に不可能なので、この条件では全く取引しません。

 
sergeev:

Minute()>=45 && Minute()<=30 は原理的に不可能なので、この条件では全くトレードできない。


では、時間と分を別々に比較することはできないのですか?つまり、例えば11-55は、11>=10 & 55>=45となり、最初の条件には対応するが、11<=18 & 55<=30となり、2番目の条件には対応しないのである。現実には、11-55はちょうど10-45から18-30までの時間帯の間であるが。
 
first_may:

時間と分を別々に比較できないことが判明?例えば、11-55は、11>=10かつ55>=45となり、最初の条件には合致するが、11<=18かつ55<=30となり、2番目の条件には合致しない。現実には、11-55はちょうど10-45から18-30までの時間帯にあたりますが。

開始時刻と終了時刻は StrToTime などで作成する必要があります。
 
sergeev:

は、開始時刻と終了時刻を自分で作成する必要があります。例:StrToTime


ここでは、最後の既知のサーバー時刻を 使用して、次のように記述します。
if (TimeCurrent()>=StrToTime("10:45") && TimeCurrent()<=StrToTime("18:30")))
{
...
}

これで11-55は10-45から18:30までの区間に入ることになるのか。

 
first_may:

11-55は、これから10-45と18-30の間に入るのでしょうか?

はい。
 
sergeev:
はい。


ありがとうございました。:)
 

人間、これだけグローバル変数とローカル変数があると、そろそろ裸足でスズメを吹きながら走り回りそうです。なんでこんな田舎で頭痛がするんだ!?

int Orders=0;                          // Объявление глобальной еременной суммы ордеров
int start()                            // Спец. функция start
  {
     if (MA2_2<MA1_2 && MA2_1>MA1_1)  //Сигнал на пересечении МА
        {
          if (OrdersTotal()>= 1) 
              return(0);               //Если ордеров больше 1, уходим.
   
          SL = 30;                     // Стоп лосс
          TP = 12;                     // Тейк профит
          S_Price = Low[1] - 1* Point; // Уровень установки SELLSTOP
          if (OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic)>0) // Установка
//ордера SELLSTOP. Если OrderSend возвращает больше 0, то выполняем следующее.
            {
               Orders++;               //Увеличить величину Orders на 1. 
               Alert ("Ордер выставлен.Orders = ",Orders ); //Вывод нового значения Orders.
            }
        }    
   return(0);                             // Выход из start()
  }
MQL4チュートリアルで知る限り、グローバル変数Ordersの 新しい値は1になるはずです。次のイテレーションは2、そして3であるべきだ。次に4.そして、EAが保留中の注文を置くまで、その状態が続きます。しかし、私はなぜEAが保留中の注文を配置しないのか理解できません!別のSELLSTOP注文を保留した後、毎回1つのメッセージだけが表示されます:Orders = 1!その理由は何でしょうか。MetaEditorのせいでしょうか?
 
vovan-gogan:

人間、これだけグローバル変数とローカル変数があると、そろそろ裸足でスズメを吹きながら走り回りそうです。まーた、こんな田舎に頭痛の種があるのかよ!!!!

MQL4チュートリアルで知る限り、グローバル変数Ordersの新しい値は1になるはずです。次のイテレーションは2、そして3であるべきだ。次に4.そして、Expert Advisorが保留中の注文を出すまで続きます。しかし、私はなぜEAが保留中の注文を配置しないのか理解できません!別のSELLSTOP注文を保留した後、毎回1つのメッセージだけが表示されます:Orders = 1!その理由は何でしょうか。MetaEditorのせいでしょうか?

この取引口座 では、より多くの成行注文が開設されているからです。
 
Roman.:

この取引口座では、より多くの成行注文を開いているためです。

一番悲しいのは、この現象がテスターで起こることです。
 
vovan-gogan:

一番悲しいのは、これがテスターで起こることです。 Expert Advisor は保留中の注文を置き、Orders は常に 1 になります。

質問の言い方が悪かったようですね。