编码帮助 - 页 239

 

你好。

我已经把标准的stepMA 9指标修改成了这个单独窗口的柱状图,但我不知道为什么买入信号与标准指标不同步(卖出信号同步)。在新的指标中,它们比原来的指标退后一格。为什么?我只修改了决定指标图形方面的部分代码。

stepma_9_histo_mtf.mq4

stepma_9.0.mq4

附加的文件:
 
thefxpros:
你好。

我已经把标准的stepMA 9指标修改为这个单独窗口的柱状图,但我不知道为什么买入信号与标准指标不同步(卖出信号是同步的)。在新的指标中,它们比原来的指标退后一格。为什么?我只修改了决定指标图形方面的部分代码。

stepma_9_histo_mtf.mq4

stepma_9.0.mq4

术语 "thefxpros

这是线的绘制方式的结果。

当你画一条线时,你必须从1个柱子后开始画,以使其可见(否则它将是一个点,它在图表上根本不可见)。试试这两个,并比较一下

附加的文件:
 

你好。

我一直在寻找一种能够以类似于追踪止损的方式进行交易的EA。

比方说,我在等待一个工具的回撤。我想尽可能在价格的高点(或低点)开启我的交易。因此,有了这样一个EA,我就可以设置我的交易参数,这个EA将以类似于拖曳式止损的方式持续跟踪价格。当出现反转时,交易被击中并打开。

你见过这样的EA吗?

谢谢

 

大家好

我试着编写了代码,但为什么不能打开交易?

int varCurrentTime = TimeCurrent();

for (int iTS = 0; iTS < 2000; iTS++) {

int varZonStart = StrToTime(TimeToStr(varCurrentTime, TIME_DATE) + " " + "00:00");

int varZonEnd = StrToTime(TimeToStr(varCurrentTime, TIME_DATE) + " " + "10:00");

int JamStart=TimeHour(varZonStart);

int JamEnd=TimeHour(varZonEnd);

if (JamStart>JamEnd) {

varCurrentTime = decDateTradeDay(varCurrentTime);

//if (TimeDayOfWeek(varCurTime) < 1) varCurTime = decDateTradeDay(varCurTime);

if (TimeDayOfWeek(varCurrentTime) > 5) varCurrentTime = decDateTradeDay(varCurrentTime);

}

varZonStart = StrToTime(TimeToStr(varCurrentTime, TIME_DATE) + " " + "00:00");

int varShiftStart = iBarShift(NULL, 0, varZonStart - 60 * Period());

int varShiftEnd = iBarShift(NULL, 0, varZonEnd);

varHighest = High;

varLowest = Low;

varCurrentTime = decDateTradeDay(varCurrentTime); //set 1 hari kebelakang

if (TimeDayOfWeek(varCurrentTime) < 1) varCurrentTime = decDateTradeDay(varCurrentTime); //jika minggu mundur lagi

if (TimeDayOfWeek(varCurrentTime) > 5) varCurrentTime = decDateTradeDay(varCurrentTime); //jika sabtu mundur lagi

}

for (int iTSh = 0; iTSh < 2000; iTSh++) {

for (int iTSl = 0; iTSl < 2000; iTSl++) {

if(((varHighest-varLowest)/Pip)<=5) varHL=(varHighest+varLowest)/2;

}

}

double isg10a = iOpen(Symbol(),PERIOD_M15,1);

double isg10b = iClose(Symbol(),PERIOD_M15,1);

int static isg10c = -1;

for (iTS = 0; iTS < 2000; iTS++) {

if(isg10avarHL)isg10c =0;

if(isg10a>varHL&&isg10b<varHL)isg10c =1;

}

if (isg10c==0) To code Buy

else if (isg10c==1) To code Sel

else no trade

 
mladen:
吉姆 与其重写整个事情,不如添加一个限制来计算条形,然后所有这些条形被重新计算。这应该可以解决刷新的问题(只要把BarsTocalculate保持在某个合理的位置--不要太大,也不要太小。我使用了1000作为默认值,这样做似乎是可以的)。试试吧

亲爱的mladen,

非常感谢你的努力和你非常迅速的帮助。

我将试一试。

来自慕尼黑的美好祝愿

 

请帮助我升级这个成交量指标,使之附在我的MT4上

大师们好,请帮助我解决这个成交量指标的错误。我最近才注意到它无法连接到我的MT4图表。我已经做了一切可能的工作来修复文件中的错误,但无济于事。我怀疑这是因为mt4的巨大升级。我的mt4文件夹中的每一个其他指标,包括旧的/新的版本,都工作正常。它在我最后一次使用它的一年前还在工作。我还不是一个程序员。

请看所附文件

附加的文件:
 

嗨,MLaden和Mrtools。

我希望你们都很好

我需要你们确认一下RSX的问题

我看到你用一个更简单的公式来计算RSX。

__________________________

双重公斤=(3.0)/(2.0+长度)。

双重Hg = 1.0-Kg。

如果(slope[limit]==-1) CleanPoint(limit,rsxDa,rsxDb)。

如果(ArrayRange(wkBuffer,0) != Bars) ArrayResize(wkBuffer,Bars);

for(i=limit, r=Bars-i-1; i>=0; i--, r++)

{

wrkBuffer[r][12] = iMA(NULL,0,1,0,MODE_SMA,Price,i) 。

if (i==(Bars-1)) { for (int c=0; c<12; c++) wrkBuffer[r][c] = 0; continue; }

//

//

//

//

//

double mom = wrkBuffer[r][12]-wrkBuffer[r-1][12]。

double moa = MathAbs(mom);

for (int k=0; k<3; k++)

{

int kk = k*2;

wrkBuffer[r][kk+0] = Kg*mom + Hg*wrkBuffer[r-1][kk+0] 。

wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]; mom = 1.5*wrkBuffer[r][kk+0] - 0.5 * wrkBuffer[r][kk+1] 。

wrkBuffer[r][kk+6] = Kg*moa + Hg*wrkBuffer[r-1][kk+6] 。

wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7]; moa = 1.5*wrkBuffer[r][kk+6] - 0.5 * wrkBuffer[r][kk+7] 。

}

如果(moa != 0)

rsx = MathMax(MathMin((mom/moa+1.0)*50.0,100.00), 0.00)。

否则 rsx = 50。

____________________________________

为了确保理解RSX是如何用这个公式计算的

首先用行。

mom = wrkBuffer[r][12]-wrkBuffer[r-1][12]。

事实上,wrkBuffer[r][12]是价格的简单移动平均线,注意这个价格与通常的RSI一样?

对吗?但我不明白这个SMA的周期是什么(可能不是长度)?

之后,如果我对这些线条有很好的理解。

for (int k=0; k<3; k++)

{

int kk = k*2;

wrkBuffer[r][kk+0] = Kg*mom + Hg*wrkBuffer[r-1][kk+0] 。

wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]。

mom = 1.5*wrkBuffer[r][kk+0] - 0.5 * wrkBuffer[r][kk+1] 。

事实上,它计算了3次妈妈(一个接一个),上面的第一个妈妈(妈妈=wrkBuffer[r][12]-wrkBuffer[r-1][12];)。

这样做对吗?

在这之后是 "经典",RSX=((mom/moa)+1)*50

谢谢你接下来的回答,作为一个程序员(在另一个平台上),你知道我喜欢了解代码的工作原理。

祝你有一个美好的一天

Zilliq

 
zilliq:
嗨,MLaden和Mrtools。

我希望你很好

我需要你确认一下RSX的问题

我看到你用一个更简单的公式来计算RSX。

__________________________

double Kg = (3.0)/(2.0+Length);

双重Hg = 1.0-Kg。

如果(slope[limit]==-1) CleanPoint(limit,rsxDa,rsxDb)。

如果(ArrayRange(wkBuffer,0) != Bars) ArrayResize(wkBuffer,Bars);

for(i=limit, r=Bars-i-1; i>=0; i--, r++)

{

wrkBuffer[r][12] = iMA(NULL,0,1,0,MODE_SMA,Price,i) 。

if (i==(Bars-1)) { for (int c=0; c<12; c++) wrkBuffer[r][c] = 0; continue; }

//

//

//

//

//

double mom = wrkBuffer[r][12]-wrkBuffer[r-1][12]。

double moa = MathAbs(mom);

for (int k=0; k<3; k++)

{

int kk = k*2;

wrkBuffer[r][kk+0] = Kg*mom + Hg*wrkBuffer[r-1][kk+0] 。

wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]; mom = 1.5*wrkBuffer[r][kk+0] - 0.5 * wrkBuffer[r][kk+1] 。

wrkBuffer[r][kk+6] = Kg*moa + Hg*wrkBuffer[r-1][kk+6] 。

wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7]; moa = 1.5*wrkBuffer[r][kk+6] - 0.5 * wrkBuffer[r][kk+7] 。

}

如果(moa != 0)

rsx = MathMax(MathMin((mom/moa+1.0)*50.0,100.00), 0.00)。

否则 rsx = 50。

____________________________________

为了确保理解RSX是如何用这个公式计算的

首先用行。

mom = wrkBuffer[r][12]-wrkBuffer[r-1][12]。

事实上,wrkBuffer[r][12]是价格的简单移动平均线,注意这个价格与通常的RSI一样?

对吗?但我不明白这个SMA的周期是什么(可能不是长度)?

之后,如果我对这些线条有很好的理解。

for (int k=0; k<3; k++)

{

int kk = k*2;

wrkBuffer[r][kk+0] = Kg*mom + Hg*wrkBuffer[r-1][kk+0] 。

wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]。

mom = 1.5*wrkBuffer[r][kk+0] - 0.5 * wrkBuffer[r][kk+1] 。

事实上,它计算了3次妈妈(一个接一个),上面的第一个妈妈(妈妈=wrkBuffer[r][12]-wrkBuffer[r-1][12];)。

这样做对吗?

在这之后是 "经典",RSX=((mom/moa)+1)*50

谢谢你接下来的回答,作为一个程序员(在另一个平台上),你知道我喜欢了解代码的工作原理。

祝你有个美好的一天

Zilliq

"事实上,wkBuffer[r][12]是价格的简单移动平均线,注意价格与通常的RSI一样?"

不是。该平均数的计算周期 是1,这意味着它等于所使用的 "平均数 "的价格。在metatader中,这是获得所需价格的最快方式(如果你尝试写 "案例 "结构做同样的事情,你会发现它比rsx代码中使用的方式慢得多)。

"事实上,它计算了3次妈妈(一个接一个),上面有第一个妈妈"

不,看看它在每一个新的迭代中使用什么值。在循环过程中,mom和moa不断被改变和重复使用(以改变的形式)。

 

非常感谢Mladen。

这很奇怪,如果我很好地理解wkBuffer[r][12]等于价格,但你用一个周期为1的移动平均线来加速计算。这真是太奇怪了...

对于第二件事,我想/假设这就是我想说的

它以价格的动量 来计算母体

它用千克和汞计算出另一个妈妈。它给了一个新妈妈,这个妈妈被用来创造一个新妈妈,以此类推,3次

一些 "更容易 "的东西(为了便于理解),比如说

妈妈

mom1=kg*mom

mom2=kg*mom1

mom3=kg*mom2

最后使用mom3和moa3。

我说的对吗?

 
zilliq:
非常感谢Mladen。

这很奇怪,如果我有很好的理解,wkBuffer[r][12]等于价格,但你用一个周期为1的移动平均线来加速计算。这真是太奇怪了...

对于第二件事,我想/假设这就是我想说的

它以价格的动量来计算母体

它用千克和汞计算出另一个妈妈。它给了一个新妈妈,这个妈妈被用来创造一个新妈妈,以此类推,3次

一些 "更容易 "的东西(为了便于理解),比如说

妈妈

mom1=kg*mom

mom2=kg*mom1

mom3=kg*mom2

最后用mom3,和moa3

我是对的?

Zilliq,

是的,就是这样做的