EventSetMillisecondTimer( 10 ); // 1st will read in 10 EventSetMillisecondTimer( 250 ); // 2nd will read in 250 EventSetMillisecondTimer( 1250 ); // 3rd will read in 1250
EventSetMillisecondTimer( 10 ); // 1st will read in 10 EventSetMillisecondTimer( 250 ); // 2nd will read in 250 EventSetMillisecondTimer( 1250 ); // 3rd will read in 1250
しかし、私は助けを必要とします、お願いします。
それは私が望むように、動作しません。
もし誰かが私の心配を理解したら、私にアドバイスや助けを与えてください。
ありがとうございました。
いいえ、それはあなたが1つのタイマーと1つのタイマーを使用するように動作しません。
しかし、単純なカウンターを使用することで、時間間隔を分割または分割することができます。
int clock;
OnTimer() { clock++;
switch(clock) { case500: //Do something... break;
case1000: //Do something... clock=0; // reset counter if need be. break;
voidOnTimer() { //--- _clock++; //--- switch ( _clock ) { case500 : if ( // will be same thing in here? ) ) { ... _CreateLines_M5(); } //---if Close break;
case1000: if ( // will be same thing in here? ) ) { ... _CreateLines_M5(); } //---if Close
voidOnTimer() { //--- _clock++; //--- switch ( _clock ) { case500 : if ( // will be same thing in here? ) ) { ... _CreateLines_M5(); } //---if Close break;
case1000: if ( // will be same thing in here? ) ) { ... _CreateLines_M5(); } //---if Close
switch 演算子を使うことができます。
{
case 0:
// Do Something...
break;
case 1:
// Do Something...
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
// etc...
}
あるいは、単純な二重の if 文を使う。
{
// Do Something...
}
もし時間帯が > 0 よりも上であり、かつ && < 22 よりも下である場合など。
または、使用することができます。
{
// Do Something...
}
もし時間が0より上か==等しく、かつ&&以下<か==22に等しい場合など。
前の例では >0 は 0 と等しいので 0 自体を除外するのに対し、これは等しいときに時間を含むので少し違います。
#月線 - 私にとってはクローズドです。
ストラテジーテスターで テストしたところ、今の ところ完璧に 動作しています。
皆さんのコメントから多くのことを学び、私のこのインジケータをとても良いものにすることができました。
Marco氏 、 William 氏に感謝します。
以下のコードは私にとってはうまくいく のですが、時々無関係に 長い時間 (1250) かかることがあります。
// which is good?
EventSetTimer( 1 );
さらに、私はそのための'スイッチ'関数を 使用することができますか?
//--- 2回目の編集
私はstart()関数を使いたく ありません。実際には、私は以下のように設定する必要があります。
EventSetMillisecondTimer( 250 ); // 2nd will read in 250
EventSetMillisecondTimer( 1250 ); // 3rd will read in 1250
しかし、私は助けを必要とする、お願いします。
//--- 3回目の編集
{
case 1 : EventSetMillisecondTimer( 100 );
case 2 : EventSetMillisecondTimer( 250 );
case 3 : EventSetMillisecondTimer( 1250 );
default : EventSetMillisecondTimer( 10 ); break;
} //---switch Close
それは私が望むように、動作しません。
誰かが私の懸念を理解する場合は、私にアドバイスやヘルプを与えてください。
事前にありがとうございます。
start()関 数は使いたく ありません。実際には、以下のように設定する必要があります。
EventSetMillisecondTimer( 250 ); // 2nd will read in 250
EventSetMillisecondTimer( 1250 ); // 3rd will read in 1250
しかし、私は助けを必要とします、お願いします。
それは私が望むように、動作しません。
もし誰かが私の心配を理解したら、私にアドバイスや助けを与えてください。
ありがとうございました。
いいえ、それはあなたが1つのタイマーと1つのタイマーを使用するように動作しません。
しかし、単純なカウンターを使用することで、時間間隔を分割または分割することができます。
{
clock++;
switch(clock)
{
case 500:
//Do something...
break;
case 1000:
//Do something...
clock=0; // reset counter if need be.
break;
// Etc...
}
}
イベントハンドリング関数' を2回ほど 読んで みた のですが、(もしかしたら、そのページのすべてを明確に理解していなかったかもしれません - また、私は'OnTimer'関数を使って います)そのページは、私を別の方法で 引っ張るだろう、しかし、私のこのインジケータはほとんど完了して います。
でも、「EventSetMillisecondTimer( 1250 );」だけ で、「関係ない」 時間がかかることがあるようですね。
しかし、単純なカウンタを使えば、時間間隔を分割したり、つなげたりすることができます。
このコードでいいのでしょうか?
{
//---
_clock++;
//---
switch ( _clock )
{
case 500 :
if ( // will be same thing in here? ) )
{
...
_CreateLines_M5();
} //---if Close
break;
case 1000:
if ( // will be same thing in here? ) )
{
...
_CreateLines_M5();
} //---if Close
_clock = 0;
break;
} //---switch Close
}
しかし、それは私のために動作しません。
ありがとうございます。
{
//---
_clock++;
//---
switch ( _clock )
{
case 500 :
if ( // will be same thing in here? ) )
{
...
_CreateLines_M5();
} //---if Close
break;
case 1000:
if ( // will be same thing in here? ) )
{
...
_CreateLines_M5();
} //---if Close
_clock = 0;
break;
} //---switch Close
}
しかし、私にはうまくいきません。
{
if(++_clock % 500 == 0)_CreateLines_M5();
}
{
if(++_clock % 500 == 0)_CreateLines_M5();
}
大感謝です。
試してみたところ、PERIOD_M5を 選択しても 1分以内に更新 され続けています。
また、PERIOD_M 1と PERIOD_M5を 使用する必要があるかどうかを知りたいのですが、以下のように使用することができますか?
if(++_clock % 500 == 0)_CreateLines_M5();
また、 以下の方法は正しい のでしょうか?
{
_dt_Prd_M5 = iTime( Symbol(), _prd_M5, 0 );
_CreateLines_M5();
}
よろしくお願いします。
大感謝です。
試してみたところ、PERIOD_M5を 選択しても 1分以内に更新 され続けています。
また、PERIOD_M 1と PERIOD_M5を 使用する必要があるかどうかを知りたいのですが、以下のように使用することができますか?
if(++_clock % 500 == 0)_CreateLines_M5();
また、 以下の方法は正しい のでしょうか?
{
_dt_Prd_M5 = iTime( Symbol(), _prd_M5, 0 );
_CreateLines_M5();
}
よろしくお願いします。