[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 536

 
如果你删除了指标文件夹中所有扩展名为*.ex4的文件
- 然后我可以一次性编译所有可用的*.mq4文件吗?
(即,不是每个人单独,而是所有的人一起)
谢谢你!
 
chief2000:
如果你删除了指标文件夹中所有扩展名为*.ex4的文件
- 然后我可以一次性编译所有可用的*.mq4文件吗?
(即,不是每个人单独,而是所有的人一起)
谢谢你!

关闭终端,然后打开它,它们都会自己编译。
 
fore-x:
关闭终端,然后打开它,它就会自己编译。

这就是我所指望的,但只编制了几个指标,其他什么都没有。

 

下午好,如何为另一个时间框架写一个标准的顾问。即把这个指标放在1小时图上,它将显示4小时的指标。

пытался //+------------------------------------------------------------------+
//|在4点钟方向.mq4 ||
//| Copyright © 2012, MetaQuotes Software Corp.
//|https://www.metaquotes.net/|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#属性链接"https://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LightSeaGreen
#property indicator_color2 LightSeaGreen
#属性 indicator_color3 LightSeaGreen
//---- 指标参数
外部int BandsPeriod=20。
外部的inttern BandsShift=0。
外置双倍BandsDeviations=2.0。
//---- 缓冲区
双重MovingBuffer[]。
双倍UpperBuffer[]。
double LowerBuffer[];
//+------------------------------------------------------------------+
//|自定义指标初始化功能
//+------------------------------------------------------------------+
int init()
{
//---- 指标
SetIndexStyle(0,DRAW_LINE)。
SetIndexBuffer(0,MovingBuffer)。
SetIndexStyle(1,DRAW_LINE)。
SetIndexBuffer(1,UpperBuffer)。
SetIndexStyle(2,DRAW_LINE)。
SetIndexBuffer(2,LowerBuffer)。
//----
SetIndexDrawBegin(0,BandsPeriod+BandsShift)。
SetIndexDrawBegin(1,BandsPeriod+BandsShift)。
SetIndexDrawBegin(2,BandsPeriod+BandsShift)。
//----
return(0);
}
//+------------------------------------------------------------------+
//|布林线 |
//+------------------------------------------------------------------+
int start()
{
int i,k,counted_bars=IndicatorCounted()。
双重偏离。
double sum,oldval,newres;
int B=iBars( NULL,PERIOD_H4)。
double C=iClose(NULL,PERIOD_H4,0)。
//----
如果(B <=BandsPeriod) 返回(0)。
//---- 初始零点
如果(counted_bars<1)
for(i=1;i<=BandsPeriod;i++)
{
MovingBuffer[B-i]=EMPTY_VALUE。
UpperBuffer[B-i]=EMPTY_VALUE。
LowerBuffer[B-i]=EMPTY_VALUE。
}
//----
int limit=B-counted_bars。
如果(counted_bars>0) limit++;
for(i=0; i<limit; i++)
MovingBuffer[i]=iMA(NULL,PERIOD_H4,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i) 。
//----
i=B-BandsPeriod+1。
如果(counted_bars>BandsPeriod-1) i=B-counted_bars-1。
while(i>=0)
{
sum=0.0。
k=i+BandsPeriod-1。
oldval=MovingBuffer[i];
while(k>=i)
{
newres=C[k]-oldval。
sum+=newres*newres。
k--;
}
偏差=BandsDeviations*MathSqrt(sum/BandsPeriod)。
UpperBuffer[i]=oldval+deviation。
LowerBuffer[i]=oldval-deviation。
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+

不起作用

这边newres=C[k]-oldval;- '[' - 意外标记

布林线指标。

 
我试着用教程根据时间进行操作,一切似乎都是正确的,但专家顾问并不活跃,例如,我需要在12.00运行该函数

外部双倍的Time_Cls=12.00。

int start()
{
int Cur_Hour=Hour()。
double Cur_Min =Minute()。
double Cur_time=Cur_Hour + Cur_Min100。
如果(Cur_time==Time_Cls)
//my function
返回。
}
 
audiomoroz:

我正试图按照教程做一个基于时间的操作,一切似乎都是正确的,但专家顾问并不活跃,例如,该功能应该在12.00运行。


如果(Cur_time==Time_Cls)
//my function
返回。
}
因为通过定时器触发算法的执行或以毫秒级的精度捕捉刻度的到来是不同的概念。
 

同志们。

我的策略测试仪 在相同的时间间隔(2011年5月1日-2012年1月27日),货币对欧元兑美元,以小时为单位(H1),从一个经纪公司(Alpari)和相同的专家顾问,但在不同的电脑(笔记本电脑,台式机)上显示了相反的结果在PC上--2000美元,在笔记本电脑上+3000美元。在那里,在那里测试了2-3次。

请告诉我原因和该怎么做,以及/或给我一个可以阅读该主题的链接。

 
chief2000:

这是我所希望的,但它只汇编了几个指标,没有其他。

有必要事先从带有指标的文件夹中删除mqlcache.dat 文件
 
Zhunko:
你必须事先从装有指标的文件夹中删除mqlcache.dat 文件。

你的解决方案奏效了!

非常感谢您!

 

我有一个问题 -
是否可以从自定义指标的 代码中知道它所运行的窗口目前是否处于活动状态?
例如,同一个指标在两个窗口中运行--你需要它只在图表处于活动状态的窗口中工作,而在第二个窗口中不活动。

谢谢你!