[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 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.

是的,在视觉测试期间,指标缓冲区不显示,直到测试完成或中断。但指标确实很重要。

谢谢你指出来!但到目前为止没有任何帮助 :(

所以现在我正在研究专家顾问中的指标迁移。如果你有任何明智的建议,我不会拒绝的 !:)

 

大家好!

我一直以业余身份研究编程,我已经很久没有编程了,所以我有一个问题。

在MQL4中,如果设置了断点后在编译时没有发生任何事情,我为什么需要断点?我以前经常用C#编程,在程序执行过程 中会有一个暂停,你可以看到变量的值,哪些函数被调用以及列出的错误。但在这里,我按下了编译键,却没有任何反应。或者你可以以某种方式启用Debug,我只是不知道如何启用?

 

有一个函数 "doubleMathRound( double value)",但我需要四舍五入到一个更大的小数点,如果数字是整数或已经是小数,那就不要管它。

比如说。1) 0.744四舍五入为0.8;1.233四舍五入为1.3

2)0.9或3或1.5不要碰。



请问谁能帮忙?
 

我不知道你是否知道有一本完整而详细的《语言文献》

归一化的双数

 
FAQ:

我不知道你是否知道有一本完整而详细的《语言文献》

归一化的双数

向上,这对你来说有点容易,是吗?
 
okvseok:
向上,这有点简单,不是吗...?

你可以把一个数字翻译成一个字符串,并编写一个函数来处理这个字符串的字符。这里并不复杂--我们只在数字的小数点后有一个以上的数字时才进行四舍五入。
 
drknn:

你可以将一个数字转换为一个字符串,并编写一个函数来处理该字符串中的字符。这里并不复杂--我们只在一个数字的小数点后有一个以上的数字时进行四舍五入。
好的,我真的会试一试,非常感谢你的想法!"。
 
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);  
 }
我没有检查过,但大概就是这样。