任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 836

 

谢谢你的提示。这就是我认为的信息,它看起来并不美好。值得一提的是。纠正信息。

//+------------------------------------------------------------------+
//|                                                    SimpleBars.mq4|
//|                                                  excelf@gmail.com|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Ivan Kornilov. All rights reserved."
#property link "excelf@gmail.com"

#property indicator_chart_window
#property indicator_buffers 4
#property  indicator_color1 Red
#property  indicator_color2 Green
#property  indicator_color3 Red
#property  indicator_color4 Green

#define  SIGNAL_NONE        0//Пустой сигнал
#define  SIGNAL_BUY         1//Сигнал на покупку 
#define  SIGNAL_SELL       -1//Сигнал на продажу 
#define  SIGNAL_TRADE_ALLOW 3//Сигнал разрешающий торговлю


extern int period = 6;
extern bool useClose = true;
extern int width = 1;

double bufferRed1[];
double bufferGreen1[];
double bufferRed2[];
double bufferGreen2[];
double trand[];

int init() {
    IndicatorBuffers(5);
 
    SetIndexBuffer(0, bufferRed1);
    SetIndexBuffer(1, bufferGreen1);
    SetIndexBuffer(2, bufferRed2);
    SetIndexBuffer(3, bufferGreen2);
    SetIndexBuffer(4, trand);
    
    IndicatorDigits(Digits+1);
    SetIndexStyle(0, DRAW_HISTOGRAM, 0, 1);
    SetIndexStyle(1, DRAW_HISTOGRAM, 0, 1);
    SetIndexStyle(2, DRAW_HISTOGRAM, 0, width);
    SetIndexStyle(3, DRAW_HISTOGRAM, 0, width);
}


int start() {
   int counted_bars=IndicatorCounted();

   if(counted_bars > 0) {
       counted_bars--;
   }
   int limit = Bars - counted_bars;

   int j;
   double buyPrice;
   double sellPrice;
   for(int i = limit - 1; i >= 0; i--) {
        if(useClose) {
            buyPrice = Close[i];
            sellPrice = Close[i];
        } else {
            buyPrice = Low[i];
            sellPrice = High[i];
        }
        if(trand[i + 1] == SIGNAL_NONE || trand[i + 1] == EMPTY_VALUE) {
            if(Close[i] > Open[i]) {
               trand[i] = SIGNAL_BUY;
           } else {
               trand[i] = SIGNAL_SELL;
           }
        } else {
            if(trand[i + 1] == SIGNAL_BUY) {
                if(buyPrice > Low[i + 1]) {
                   trand[i] = SIGNAL_BUY;
                } else {
                   for(j = 2; j <= period; j++) {
                        if(buyPrice > Low[i + j]) {
                           trand[i] = SIGNAL_BUY;
                        break;
                        } else {
                           trand[i] = SIGNAL_SELL;
                        }
                   }
                }
            } else if(trand[i + 1] == SIGNAL_SELL) {
                if(sellPrice < High[i + 1]) {
                   trand[i] = SIGNAL_SELL;
                } else {
                    for(j = 2; j <= period; j++) {
                        if(sellPrice < High[i + j]) {
                           trand[i] = SIGNAL_SELL;
                           break;
                        } else {
                           trand[i] = SIGNAL_BUY;
                        }
                   }
                }
            }   
        }

        if(trand[i] == SIGNAL_SELL) {//RED BAR 
            bufferRed1[i]  = High[i];
            bufferGreen1[i] = Low[i]; 
            bufferRed2[i]  = MathMax(Open[i], Close[i]); 
            bufferGreen2[i] = MathMin(Open[i], Close[i]);   
        } else if(trand[i] == SIGNAL_BUY)  {
            bufferRed1[i]  = Low[i];
            bufferGreen1[i] = High[i]; 
            bufferRed2[i]  = MathMin(Open[i], Close[i]);  
            bufferGreen2[i] = MathMax(Open[i], Close[i]);    
        } 
    }
}
 
Kirill875:

这就是你的意思吗。

还有这个Buff8[i]=iMA(NULL,60,Period1,sh 0,MODE_SMA,PRICE_CLOSE,sh)。

并使用代码粘贴

 
Roman_Bryansk:

谢谢你的提示。这就是我认为的信息,它看起来并不美好。值得一提的是。纠正信息。

在你的帖子下的右下方有神奇的 "删除 "和 "编辑 "选项,不需要在新的帖子中写同样的东西,你只需要在那里解决即可;)
 
evillive:
对于代码,在信息编辑面板的顶部有一个按钮,或者 Ctrl+Alt+M 的组合,代码变得很好,可读。关于损失,F函数SetIndexStyle()有一个颜色参数,使用它,请随意。

如果你不介意的话,你能给我一些更多的细节吗?我只需要颜色和宽度的设置是这样的。

# 颜色 宽度 样式

0.黑色 0 0

1.黑色 0 0

2.红色 2 0

3.绿色 2 0

宽度总是消失,也就是说,它好像总是回到默认设置。

不要评判,我只是似乎没有你拥有的东西。另外在编译2个这样的信息时:不是所有的控制路径都会返回一个值 SimpleBars.mq4 115 1。

 
明白了。我很抱歉。我把事情搞得一团糟。
 
Roman_Bryansk:

如果你不介意的话,你能给我一些更多的细节吗?我只需要颜色和宽度的设置是这样的。

# 颜色 宽度 样式

0.黑色 0 0

..

总是消失的宽度,也就是说,它好像总是回到默认设置。

不要过于苛责,我只是似乎没有你所拥有的。在编译时也有2条这样的信息:不是所有的控制路径都返回一个值 SimpleBars.mq4 115 1.


void  SetIndexStyle(
   int     index,       // номер линии
   int     type,        // тип
   int     style=EMPTY, // стиль линии
   int     width=EMPTY, // ширина линии
   color   clr=clrNONE  // цвет
   );

这是对你的情况下的第一次缓冲。

SetIndexStyle(0, DRAW_HISTOGRAM, EMPTY,width,Red);

如果设置没有被保存,你没有足够的权限写入终端数据目录。当你把它安装在系统分区并以正常模式运行时,就会发生这种情况。尝试在/portable模式下运行终端(键写在终端启动 快捷方式中)。

而且我一直建议并将继续建议所有用户在非系统分区上安装所有可以安装的程序。

 
Простите меня за наглость)
 
evillive:


也就是说,在你的情况下,对于第一个缓冲区。

如果设置没有被保存,可能是你对终端的数据目录没有足够的写入权限。当你把它安装到系统分区并在正常模式下运行时就会发生这种情况。尝试在/portable模式下运行终端(键写在终端启动快捷方式中)。

而且我一直建议并将继续建议所有用户在非系统分区上安装所有可以安装的程序。

你是一个巫师))。EMPTY 代替了,两个指示灯都正常 了。非常感谢你。关于"/portable":当我在对象字符串的设置中写入时,它显示错误的路径。
 
Roman_Bryansk:
你是一个魔术师))。EMPTY 代替了,两个指示灯一切正常非常感谢你。关于"/portable":当我在对象的设置中写下的字符串没有写下正确的路径。
我只是需要把钥匙放在引号后面。
 
Kirill875:
编译后终端挂起。你能不能给我一个例子,告诉我在哪里放。

这里是

附加的文件:
testmtf.mq4  4 kb