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

 
Zhunko:
機能はありませんが、MQL4+WinAPIで作ることができます。

//+------------------------------------------------------------------+
//|          Function  : int GetChartScale()[1,2,4,6,13]             |
//|          Copyright © 2012, XrustSolution.  mail:xrustx@gmail.com |
//|          https://www.youtube.com/user/opmlv http://forexrust.info |
//+------------------------------------------------------------------+
//|          Description: Возвращает ширину свечи по масштабу чарта  |
//+------------------------------------------------------------------+
#import "user32.dll"
  bool GetWindowRect(int h, int& pos[4]);
#import
//+------------------------------------------------------------------+
int GetChartScale(){
        int h = WindowHandle(Symbol(), Period());
        int rect[4];
        if(h==0) return(1);
        GetWindowRect(h, rect);
        int wW  = rect[2] - rect[0]; // ширина окна
        int bpc = WindowBarsPerChart();
        if(bpc==0) return(1);
        int scale = MathFloor((wW-48)/bpc);
        switch(scale){
                case  1 :       return(0);
                case  2 :       return(1);
                case  4 :       return(2);
                case  8 :       return(3);
                case 16 :       return(6);
                case 32 :       return(13);
                default :   return(1);
        }
        return(1);
}
//+------------------------------------------------------------------+
 

こんにちは。コードは初歩的で複雑なものはないようですが、なぜインジケータラインが 表示されないのか、教えていただけませんか?Print (T_V) で確認したところ、値は出るのですが、なぜか行が表示されない?

質問を追加 します。 インジケーターを削除し、再度チャートに貼り付けたところ、線が表示されるようになりました。コンパイル時にインジケータが再計算されないのはなぜですか?

#property indicator_separate_window
#property indicator_minimum -3
#property indicator_maximum 3
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_level1 0.0         //горизонтальный уровень N в отдельном окне индикатора, где N от 1 до 8 
#property indicator_levelcolor Black   // цвет горизонтальных уровней индикатора е 
#property indicator_levelwidth 1       //толщина горизонтальных уровней индикатора
double T_Vol[];

int init()
  {  SetIndexBuffer (0, T_Vol); 
     SetIndexStyle  (0, DRAW_HISTOGRAM, STYLE_SOLID, 1); 
     IndicatorDigits(Digits);
   return(0); }
int start(){
   int limit;
   int сounted_bars=IndicatorCounted();
   if (сounted_bars==0) limit=Bars-1;
   if (сounted_bars>0) limit=Bars-сounted_bars-1;
   for(int i=limit;i>=0;i--){
       int T_V=0; 
       if (Volume[i]>Volume[i+1])T_V=1;
       if (Volume[i]<Volume[i+1])T_V=-1;
       T_Vol[i]=T_V;
   }
   return(0);
}
 
PapaYozh:


1.

変数 "SignalBar "の値は何ですか?また、インジケータはこのバーで計算されますか?

おそらくSignalBar=0で、インジケータが0本目のバーを計算しないのでしょう。

2.

はい、ビジュアルテスト中は、テストが完了するか中断されるまで、インジケーターバッファは表示されません。しかし、指標は重要です。

ご指摘ありがとうございます。しかし、今のところ何の役にも立っていない :(

そこで、現在、Expert Advisorへのインジケータの移管を 勉強しています。何かアドバイスがあれば、お断りしませんよ。:)

 

皆さん、こんにちは。

素人ながらプログラミングを勉強していた、久しぶりにプログラミングをしたいので質問させてください。

ブレークポイントを設定してもコンパイル時に何も起こらないのに、なぜMQL4でブレークポイントが必要なのですか?以前、C#でよくプログラミングをしていたのですが、プログラムの実行 中に一時停止があり、変数の値やどの関数が呼ばれたか、エラーがリストアップされるなど、その様子を確認することができました。しかし、ここではCompileを押しても何も起こりません。あるいは、どうにかしてDebugを有効にすることもできますが、方法がわかりません。

 

doubleMathRound( double value)" という関数がありますが、より大きな小数への丸めが必要で、整数やすでに小数である場合はそのままにしておきます。

例えば、こんな感じです。1) 0.744は0.8へ、1.233は1.3へ丸められます。

2) 0.9、3、1.5 は触れない。



どなたか助けてください。
 

言語の完全かつ詳細なDocumentationが あることすらご存知なのでしょうか。

NormalizeDouble

 
FAQ:

言語の完全かつ詳細なDocumentationが あることすらご存知なのでしょうか。

NormalizeDouble

上へ上へ、楽勝だねぇ...。
 
okvseok:
上へ上へ、ちょっと単純ですね......?

数値を文字 列に変換し、この文字列の文字を処理する関数を書くことができます。小数点以下の数字が2桁以上ある場合だけ切り上げるのです。
 
drknn:

数値を文字列に変換し、その文字列の中の文字を処理する関数を書くことができます。小数点以下の桁が2つ以上ある場合のみ丸めるのです。
OK、本当にやってみます。 アイデアをどうもありがとうございました
 
okvseok:

double MathRound( double value)" という関数がありますが、より大きな小数への丸めが必要で、整数やすでに小数である場合はそのままにしておきます。

例えば、こんな感じです。1) 0.744は0.8へ、1.233は1.3へ丸められます。

2) 0.9、3、1.5 は触れない。

double MathRoundDec(double dValue) 
 {
  if (dValue == NormalizeDouble(dValue, 1)) return(dValue);
  return(MathRound(10 * dValue) / 10);  
 }
確認はしていませんが、そんな感じです。