[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 204

 
borilunad:
Allis さん、こんにちは。プリントは刻み読みがないところに規定が必要です!エラーがあればプリントに入れるし、開いたら開くので、一度だけログブックに規定されています

はい、あなたはウィザードです))ありがとうございました。
 
Allis:

あなたはマジシャンです))ありがとうございました。
その通りです。プログラミングでは、私は「ウィザード」には程遠く、ただ学んでいるだけですが、他の分野では、そうかもしれませんね!)ありがとうございました。
 

皆さんこんばんは。 バー番号0にその値(+1、0、-1)を描くインジケータ(図の上)がありますが、計算はバー番号1によって行われます。 私は+1と-1上のインジケータの別々の連続ブロックと全体の履歴(図の平均、バーの数に対応する単位での棒グラフの高さ)のバーの数を数えるようなインジケータを書きたいのです。インジケータを作ったのですが(図の下)、ウィンドウにインストールした瞬間だけ描画が始まります(青い縦線)。できる人は助けてください


コード

int start()
  {
    
    int i;
      
    for(i=1;i<Bars-34-1;i++)                                               
     {
      double AO_Sig_Sig_1 =iCustom(NULL,0,"AO_His_l-b_Signal-Signal_sploshnoy_PSR",0,i);                           
      double AO_Sig_Sig_2 = iCustom(NULL,0,"AO_His_l-b_Signal-Signal_sploshnoy_PSR",0,i+1);
      
                                  
      if((AO_Sig_Sig_1!=AO_Sig_Sig_2)) break;                                                                
     }
         
    i=i*(AO_Sig_Sig_1);         
               
    if(i>0)            
     {
      UpMapBuffer[0]=i;
     }
    else
     {
      UpMapBuffer[0]=0;
     } 
         
    if(i<0)         
     {
      DnMapBuffer[0]=i;
     }
    else
     {
      DnMapBuffer[0]=0;
     }          
                 
      
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
borilunad:

これが残部です!算盤のステップとプリンターの中を覗いてみてください

入れても、2つの結果が交互に表示されるだけです。

 int x = MathRand() % 2;
  Print("x =",x);


その理屈は理解できない。本の中で、私は読みました。

変数aを 変数bで割った余りを計算、その結果を変数ostatokに 書き込む場合、代入演算子は次のようになります。

ostatok = a % b;

この場合、MathRand()を2で割った とき、xの値は0か1でなければ ならないことが判明した。なぜ、いきなり0や1でなければならないのか?例えば、乱数9が表示されます。9 % 2 = 4.5. の余りは 4 になる。
 
hoz:


何か、理屈がわからない。本の中で、私は読みました。

この場合、MathRand()を2で割った とき、xの値は0か1になるはず であることがわかりました。なぜ、いきなり0や1でなければならないのか?例えば、乱数9が表示されます。9 % 2 = 4.5. の余りは 4 になる。

何か腑に落ちないことがあっても、数回のクリックで答えが 出る...。

P.S. ostatok = 9 % 2 = 1.

 
TarasBY:

何か腑に落ちないことがあっても、わずか数クリックで答えが 出る...。

P.S. ostatok = 9 % 2 = 1.


まあ、書いてあるんですけどね。

"余りのある除算modulo division,finding remainder of division,the remainder of division)は不完全な商と、数を他の整数で割った余りの2つの整数を 得る算術演算 である"

9 : 2 = 4.5 これらは二重の数字です。

端数部分を切り取ると4ですが、どこから1が出てきたのでしょうか?

 
hoz:


何かよくわからない理屈ですね。本の中で、私は読みました。

この場合、MathRand()を2で割った とき、xの値は0か1でなければ ならないことが判明した。なぜ、いきなり0や1が出てこなければならないのか?例えば、乱数9が表示されます。9 % 2 = 4.5. の余りは 4 になる。

Victorさん、intとdoubleを混同しないでくださいよ。つまり、int x =MathRand() %2; で、0か1が得られるのです!0.1や0.9を出すことはできませんし、1.1や1.9を出すこともできません。また、%記号は除算の余りを 意味し、除算記号ではありません。除算記号は /

あなたの例に9を付けてみると、ランダムがないので1という1つの結果が得られます。

  int x = 9 % 2;//MathRand()
  Print("x =",x);

と聞くんですね。

9 : 2 = 4.5 これらは二重の数字です。

端数部分を捨てると4となりますが、1はどこから出てきたのでしょうか?

I answer: だから、0.5は四捨五入して1になるんだ!

面白いのは、2に点と0(2.0)をつけると、コンパイラは「%は整数しか必要としない!」とエラーを出したことです。

だから、double x を入れても、整数の int が出てくる。ビクターさん、疑ってくれてありがとうございます。この2人とあなたのおかげで、私は興味深い研究をすることができ、数理変換の可能性を広げることができました。グラス(バーチャル)をお借りします!:))

 
hoz:


まあ、そういうことです。

"余りのある除算modulo division,finding remainder of division,remainder of division)は不完全な商と、整数を別の整数で割った余りの2つの整数を 得る算術演算 である"

9 : 2 = 4.5 これらは二重の数字です。

端数部分を切り取ると4ですが、どこから1が出てきたのでしょうか?

余りなく2で割り切れる9に最も近い整数は何でしょうか?そして、その数字を除数(9)から引きます。何を手に入れたの?

追伸:失敗した場合は、次のように結果を表示することができます:Print ("ostatok = ", 9 % 2);

 

ラベオサ 2013.03.07 21:15

Ordersend()のSymbol()を "EURUSD "に置き換える方法を教えてください。それとも何?

 
Mathemat:

ラベオサ 2013.03.07 21:15

Ordersend() で Symbol() を "EURUSD" に置き換える方法を教えてください。それとも何?

NULL