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

 
paladin80:

司会者の 言葉を引用すると、「この関数は、M15に新しいバーが表示されたときに真を返します。EAのみ使用".


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

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

paladin80 さん

司会者の 言葉を引用すると、「この関数は、M15に新しいバーが表示されたときに真を返します。EAのみ使用".


まだまだ勉強中です。また、この機能では、ローソクの始値をどのように判断すればよいのでしょうか。
 
rigonich:

ド素人からプロへの質問。

1. double 型の正規化された変数で何らかの演算を行った場合、int 型の変数と同様に動作する(結果は正規化された数値)、または

の場合、結果は正規化されるのでしょうか?

2.ヘルプに、「正規化されていない2つの浮動小数点数を、==や!正規化したものと正規化しないものを比較できますか?

の数は?演算の>=、<=は使えるのか?

どんな数字も>=と<=を使って比較することができる。NormalizeDouble が正規化された後、既に == や != として比較することが可能です。しかし、このように小数点以下10桁の数字を比較することに意味があるのかどうかを見なければ、等しいか不等号になるような状況を見つけることは現実的ではありません。
 
iruogl:


まだまだ勉強中です。また、この機能では、ローソクの始値をどのように判断するのでしょうか。

この機能は、キャンドルが表示されたときのみ検出されます。始値を調べるには、iOpenを 使用します。こんな感じ。

int init()
{ ...
}
//---
int start()
{ 
   if (CheckOpenM15())
   {  double BarOpenPrice=iOpen(NULL, PERIOD_M15, 0)
   }
...
}
//---
int deinit()
{ ...
}

// сама функция должна находиться отдельно
bool CheckOpenM15()
{
   static int PrevTime=0;
   if (PrevTime==iTime(NULL, PERIOD_M15,0)) return(false);
   PrevTime=iTime(NULL, PERIOD_M15,0);
   return(true);
}
 
iruogl:

私はビギナーです。

皆さん、ティックが変わるたびにロボットが起動するのはわかるので、アドバイスをお願いします。新しいローソク足が開いたとき、つまりローソク足の始値が表示されたときだけ起動するようにするにはどうしたらよいでしょうか。

皆さん、ヒントをありがとうございました。


私も初心者なのですが、グローバルレベルでdatetime型の変数(例えばdatetime TIME;)をinit()で宣言する必要があるように思います。で、start()の冒頭で、もしTIME== Time[0] ならば -- return(0); そうでなければ --TIME= Time[0]; とチェックします。この場合、エキスパートは新しいバーの開始時に一度だけstart()を 実行します。
 
paladin80:
どんな数字も>=と<=を使って比較することができる。NormalizeDouble が正規化された後、== や != として比較することができます。しかし、例えば小数点以下10桁の数字を比較することに意味があるのかどうか、等しいか不等であるかの状況を見つけることは非現実的であることを確認する必要があります。

回答ありがとうございました。正規化した 後、コンピュータのメモリ内の数値は 変わらず、その表現だけが変化するのか、それとも数値そのものが変化するのか?
 
rigonich:

ご回答ありがとうございました。正規化した後、コンピュータのメモリ内の数値はそのままで、その表現だけが変わるのか、それとも数値そのものが変わるのか、質問を明確にしたい。

正規化後は、例えば以下のように数値が 変化します。

double var1=0.12345 6789;
double var2=NormalizeDouble(var1,5); // var2=0.12346

もうひとつは、DoubleToStrで、プリントアウトするときです、例えば。

double var1=0.12345 6789;
Print("var1 = ",DoubleToStr(var1,5)); // Выход: var1=0.12345

そして、正規化後にプリントアウトすると、このようになります。

double var1=0.12345 6789;
double var2=NormalizeDouble(var1,5);  // var2=0.12346
Print("var2 = ",DoubleToStr(var2,5)); // Выход: var2=0.12346
 
paladin80:

この機能は、キャンドルが表示されたときのみ検出されます。始値を調べるには、iOpenを 使用します。こんな感じ。


ありがとうございます、とても助かりました
 
okvseok:

アドバイスお願いします

1枚印刷は可能ですが、ある日付からある日付までのシートを印刷開始するように設定するにはどうしたらよいですか?1枚ずつ印刷されないように。

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



無視)
 
こんにちは。あのね、私のスクリプに何か問題があるのよ。チャート上にドラッグしても、まったく何も起こりません。