编码帮助 - 页 389

 
triip:
我已经找到了很好的剥头皮系统和模板,但在安装这个系统后,它运行得很慢。也许有人能看一下,检测一下是什么原因造成的。

模板和指标。

1m_alf_scalp.zip

看起来蜡烛颜色指标(IT_Candles)是问题所在。谁能理解那段代码有什么问题,导致MT4运行缓慢?

//+------------------------------------------------------------------+//| IT_Candles.mq4

//+------------------------------------------------------------------+

#property indicator_chart_window

#include

#property indicator_buffers 2

extern color UpColor = LimeGreen;

extern color DnColor = Red;

extern int Width = 5;

extern double alpha = 0.09;

double ev=EMPTY_VALUE,Trend,Trigger,ALF;

double Up[];

double Dn[];

int init()

{

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_HISTOGRAM,0,Width,UpColor);

SetIndexBuffer(0,Up);

SetIndexStyle(1,DRAW_HISTOGRAM,0,Width,DnColor);

SetIndexBuffer(1,Dn);

return(0);

}

int deinit()

{

return(0);

}

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1); //---- check for possible errors

if(counted_bars>0) counted_bars--; //---- last counted bar will be recounted

int limit = Bars-counted_bars;

for (int i=limit;i>=0;i--)

{

Up = ev;

Dn = ev;

Trend = iCustom(NULL,0,"Instant_Trendline",alpha,0,i);

Trigger = iCustom(NULL,0,"Instant_Trendline",alpha,1,i);

ALF = iCustom(NULL,0,"ALF",0,i+1);

if (Trigger > Trend && Close > Open && Close > ALF)

{

Up = MathMax(Open,Close);

Dn = MathMin(Open,Close);

}

if (Trigger < Trend && Close < Open && Close < ALF)

{

Dn = MathMax(Open,Close);

Up = MathMin(Open,Close);

}

}

}

 
triip:
看起来蜡烛颜色指标(IT_Candles)是问题所在。有谁知道那段代码有什么问题,导致MT4运行缓慢?
//+------------------------------------------------------------------+//| IT_Candles.mq4

//+------------------------------------------------------------------+

#property indicator_chart_window

#include

#property indicator_buffers 2

extern color UpColor = LimeGreen;

extern color DnColor = Red;

extern int Width = 5;

extern double alpha = 0.09;

double ev=EMPTY_VALUE,Trend,Trigger,ALF;

double Up[];

double Dn[];

int init()

{

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_HISTOGRAM,0,Width,UpColor);

SetIndexBuffer(0,Up);

SetIndexStyle(1,DRAW_HISTOGRAM,0,Width,DnColor);

SetIndexBuffer(1,Dn);

return(0);

}

int deinit()

{

return(0);

}

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1); //---- check for possible errors

if(counted_bars>0) counted_bars--; //---- last counted bar will be recounted

int limit = Bars-counted_bars;

for (int i=limit;i>=0;i--)

{

Up = ev;

Dn = ev;

Trend = iCustom(NULL,0,"Instant_Trendline",alpha,0,i);

Trigger = iCustom(NULL,0,"Instant_Trendline",alpha,1,i);

ALF = iCustom(NULL,0,"ALF",0,i+1);

if (Trigger > Trend && Close > Open && Close > ALF)

{

Up = MathMax(Open,Close);

Dn = MathMin(Open,Close);

}

if (Trigger < Trend && Close < Open && Close < ALF)

{

Dn = MathMax(Open,Close);

Up = MathMin(Open,Close);

}

}

}

triip

检查 你的指标文件夹中是否也有 "Instant_Trendline "和 "ALF "指标(这两个指标都是该指标正常工作所需的)。如果你没有这两个指标,从那个压缩包中提取ex4文件,该指标就可以正常工作了(如果你没有这两个指标,它将会非常慢)。

附加的文件:
it.gif  75 kb
 
mladen:
triip 检查你的指标文件夹中是否有 "Instant_Trendline "和 "ALF "指标(该指标需要这两个指标才能正确工作)。如果你没有这两个指标,从那个压缩包中提取ex4文件,指标就可以正常工作了(如果你没有这两个指标,就会很慢)。

是的,我也把其他指标放在图表上,但我一加入IT_Candles,MT4就变慢了,特别是切换时间段变慢。

 
triip:
是的,我也把其他指标放在图表上,但我一加入IT_Candles,MT4就变慢了,特别是切换时间段变慢了。

triip

它们不需要出现在图表上。但它们必须存在于指标文件夹中(使用这些确切的名称)。检查 的最简单方法是进入终端的专家选项卡,看看那里是否有一些错误(就像图片上的那个)。

附加的文件:
error_2.gif  98 kb
 
mladen:
triip 它们不需要出现在图表上。但它们必须存在于指标文件夹中(使用这些确切的名称)。最简单的检查方法是进入终端的专家选项卡,看看那里是否有一些错误(就像图片上的那个)。

那里没有错误。

但我注意到,ALF.ex4的速度并不慢,但ALF-MTF.ex4却完全变慢了。我在指标文件夹里有一个子文件夹,所有这些提到的指标都放在那里。也许我应该重新安装干净的MT4。

附加的文件:
errors.png  27 kb
 
triip:
那里没有错误。

但我注意到,ALF.ex4的速度并不慢,但ALF-MTF.ex4却完全变慢了。我在指标文件夹里有一个子文件夹,里面存放着所有这些提到的指标。也许我应该重新安装干净的MT4。

把它们从子文件夹移到主指标文件夹,然后试试

 
mladen:
把它们从子文件夹中移到主指标文件夹中,然后试一下

好多了,工作得很顺利 谢谢你mladen!

 
sunshineh:
你好。

我在图表中的条形图上书写文本对象时总是遇到问题。

比如说

ObjectCreate ("Xh", OBJ_TEXT,0,Time[0],High[0]+1*pips2dbl);

ObjectSetText("Xh","1",10,"Tahoma",Orange);

ObjectCreate ("X", OBJ_TEXT,0,Time[0],Low[0]-1*pips2dbl);

ObjectSetText("Xl","1",10,"Tahoma",Orange);

在我的条形图下面的文本对象工作得很好,因为我的字体对象被固定在我的文本的 "头部 "上。

但是,如果我想在条形图上面写一些文字,我现在不知道我的字体大小为10的文字是怎样的,所以它被写进了条形图。

当我在更大的时间段写文本时也有问题,例如 "H1"、"D1 "或 "W1",因为我不得不改变我的字体距离为高或低值。

我知道我可以将我的文本旋转90°,但我不想这么做。

那么你知道解决这个问题的方法吗?

首先尝试使用ATR而不是1*pips2dbl(这样它就会根据不同的时间框架和符号进行自我调整)。

还可以尝试将文本的锚点(OBJPROP_ANCHOR)调整为ANCHOR_LOWER,以显示在高点之上的文本对象。

 
madopter:
可调整的部分应该是手数,以及手数所适用的账户余额。例如,参数可能是A=0.01,B=5000美元,或者,A=1.00,B=10000美元。

在这种情况下,你必须有多个可用于比较的参数值

你可以这样定义参数:extern double accountBalanceA = 5000; 然后在没有参数的情况下,使用这些参数进行比较。

 
mladen:
jbozman

macd指标不需要任何改变(在99.99%的情况下,它只计算1或2个柱子)。

hilo指标以一种非常复杂的方式寻找数值。最好使用一些其他的指标,以更简单的方式完成这项任务(没必要把它弄得这么复杂)。

嗨,mladen。我搜索了一下,没有找到一个集前一天、一周和一个月于一体的高/低点,它可以画出简单的线段,而且不会把图表搞得一团糟。

我知道你说过要试着找另一种;但是,我真的找了,却没有找到。我也在mql4论坛发了一个请求。还没有收到回复。

很简单,我愿意付钱给某人(你)来修改这个指标。

我想增加 "天数",因为这个指标绘制的是以前的每一天。在欧元/美元和英镑/美元上,我的图表历史可以追溯到1996年或更早,所以它占用了太多的内存与所有这些线条。

如果你不打算雇用我(也许有人会雇用我),在目前这个图表上增加 "天数 "是不是太复杂了?我可以继续使用它,直到我找到另一个或找到愿意修改的人。如果这是个耗时的要求,我完全理解,并感谢你对一切的帮助。

jbozman

附加的文件:
原因: