编码帮助 - 页 54

 

睡眠功能方面需要帮助

嗨,mladen

我的要求是,如果之前的交易碰到了止损,那么EA应该休眠24小时。能否请你帮助我编写代码?

 
mladen:
annbeea 关于你帖子的第一部分:是的,那个版本会重绘(这是由于T3的计算方式,它有一个错误,这就是为什么我说最好使用另一个版本)。

嗨,mladen,除了使用你提到的另一个,你能不能重新编码附件中的那部分指标,因为我喜欢它的穿越风格,这样它就不会重绘过去,并且有正确的警报代码?

非常感谢你的帮助

附加的文件:
 

图表上的交易标记,我怎样才能清除它们?

每次下单时,我的图表上都会出现这些红点,我怎样才能关闭或清除它们。 我不知道是什么原因造成的。

附加的文件:
dots.jpg  71 kb
 

你可以使用这样的函数

bool lastOrderStopLossHit(int magicNumber, string symbol, datetime& lastTime)

{

double lastClosePrice = -1;

double lastStopLoss = -1;

//

//

// reset the time of the last order

//

//

lastTime = -1;

//

//

// find the last order

//

//

for (int i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) continue;

if (OrderMagicNumber()!=magicNumber) continue;

if (OrderSymbol() !=symbol) continue;

if (OrderCloseTime()>lastTime)

{

lastTime = OrderCloseTime();

lastClosePrice = OrderClosePrice();

lastStopLoss = OrderStopLoss();

}

}

int digits = MarketInfo(symbol,MODE_DIGITS);

return (lastTime!=-1 && NormalizeDouble(lastClosePrice,digits)==NormalizeDouble(lastStopLoss,digits));

}[/PHP]

and then at the beginning of the start procedure place a code that could look like this :

[PHP] datetime lastClosedTime;

if (lastOrderStopLossHit(1,Symbol(),lastClosedTime) && (lastClosedTime+24*60*60)>TimeCurrent()) return(0);

如果你希望有一个不同于1天的暂停,把 "24*60*60 "改成你希望的那样。

PS: 我在通话中使用了 "1 "作为神奇的数字。用你真正的数字代替它。

uk_kara:
嗨 mladen 我的要求是,如果之前的交易触及止损,那么EA应该休眠24小时。能否请你帮助我编写代码?
 

你好,mladen。

你能不能帮我修改一下里面的代码,使它能(正常化)有垂直刻度:最小为0,最大为100,中间点为50,而不是现在的0,但仍然保持和以前一样的信号?非常感谢您的帮助。

附加的文件:
 

琥珀

你不能这样做。任何形式的归一化都会改变信号(它们不可能保持完全相同--尤其是你有3个值,更不可能保持信号在相同的地方)。

annbeea:
你好,mladen,你能不能帮我修改一下里面的代码,使它能(归一化)有垂直刻度:最小为0,最大为100,中间点为50,而不是现在的0,但仍然保持和以前一样的信号?非常感谢您的帮助。
 
mladen:
你可以使用这样一个函数:

.............................

如果你希望暂停时间不超过1天,请将 "24*60*60 "改为你所希望的。

PS:我在通话中使用了 "1 "作为神奇数字。用你真正的魔法数字代替它

谢谢Mladen。我将检查一下

 
mladen:
annbeea 你不能这么做。任何形式的归一化都会改变信号(它们不可能保持完全相同--尤其是你有3个值,保持信号在相同位置的机会就更少了)。

嗨 mladen

可能是我误用或误解了 "正常化 "这个词,是否有可能像通常出现的比例一样,将振荡试验的规模扩大,最小0,最大100,中间50?

我可以知道是T3还是RSI组件重绘还是两者都重绘吗?非常感谢你的帮助。

 

嗳呵

我们谈论的是同一件事:将数值转换为最小和最大,总是会使原始数值 "变形"。我们可以称其为规范化或标准化或任何我们想要的东西,但我们付出的代价是失去了原始值的关联性。而当它们被 "变形 "时,信号将发生在完全不同的地方。

就rsi试验指标而言:t3部分将重新绘制。这是由于以前的t3计算步骤是如何处理的。第一次计算(当你把它放在图表上,改变时间框架或符号时,......),它将计算OK。但在下一个tick上,当你计算下一个tick时,变量e1到e6将具有当前(第0个)bar的值,它们至少应该具有第一个bar的值(取决于 "限制 "变量)。这是一个错误,因为下一个刻度线的计算继承了前一步的计算值,这将导致每个新刻度线的误差越来越大,这就是为什么我建议你使用另一个指标作为基础,因为在那个指标中这些问题已经解决了。

annbeea:
嗨 mladen

可能是我误用或误解了 "正常化 "这个词,是否可以像通常出现的比例那样,将震荡试验的比例调整到最小0,最大100,中间50?

我可以知道是T3还是RSI组件重绘还是两者都重绘吗?非常感谢您的帮助。
 
uk_kara:
谢谢Mladen。我将检查它

像往常一样工作,谢谢Mladen,你是个明星。