编码帮助 - 页 237

 

大家好。

我有一些简单的编码问题,我的MT4似乎已经迁移到了MQL5。

某些删除的代码块不再工作了。

在下面我得到错误信息。

'(' 对象指针预期。

//+----------------------------------------------------------------------------+//|关闭并删除 |

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

if(sell)if(oppositeclose)close(OP_BUY)。

if(buy)if(oppositeclose)close(OP_SELL);

如果(hidetp || hidesl){hideclose(OP_BUY);hideclose(OP_SELL); }

如果(usetimeout && onetime){closetime(OP_BUY);closetime(OP_SELL);}。

如果(onecancelother){如果(totalell>0){delete(OP_BUYSTOP);delete(OP_BUYLIMIT);}如果(totalbuy>0){delete(OP_SELLSTOP);delete(OP_SELLLIMIT);}}

在下面我得到了错误信息。'delete'-名字是预期的,而

'}'- 表达式在全局范围内是不允许的

void delete(int type){

如果(OrdersTotal()>0){

for(i=OrdersTotal();i>=0;i--){

OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。

如果(type!=6){

if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==type){

OrderDelete(OrderTicket())。

}

}

如果(type==6){

如果(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP

|| OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT){

OrderDelete(OrderTicket())。

}

}

}

}

}

谁能帮帮我?

请先谢谢您!

 

交易员/编剧朋友们,你们好!

我希望有人能在这里帮助我。

通过搜索和尝试周围的几个EA,我仍然没有找到我想要的东西。

也许我正在寻找一些很难找到的东西,或者我没有尽最大努力 :-)

我也通过画线和创建临时通道来交易SR系统。有什么东西可以在价格到达线时执行头寸吗?问题是,它需要能够在每次价格达到线时开仓。红线表示卖出,蓝线表示买入,黄线表示SL,绿线表示TP。所以不能只做一次交易或OCO。

谢谢。

附加的文件:
sr.png  34 kb
 
daytrade:
各位交易员/编剧朋友,你们好

我希望有人能在这里帮助我。

搜索和尝试周围的几个EA,我仍然没有找到我想要的东西。

也许是我在寻找难以找到的东西,或者是我没有尽力而为 :-)

我也通过画线和创建临时通道来交易SR系统。有什么东西可以在价格到达线时执行头寸吗?问题是,它需要能够在每次价格达到线时开仓。红线表示卖出,蓝线表示买入,黄线表示SL,绿线表示TP。所以不能只做一次交易或OCO。

提前感谢!!

你检查过这个主题中的EA吗:https://www.mql5.com/en/forum/176382

 

修改止损

大家好。

有谁知道为什么我的修改止损单不能正常工作?

当DonchianLowM5移动到OrderOpenPrice以上时,止损在DonchianLowM5和OrderOpenPrice之间快速跳动。

这是代码(抱歉我不知道如何正确粘贴它)。

//---- 止损的移动

如果(OrdersTotal() > 0)

{

for (int i = 0; i < OrdersTotal(); i++)

{

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderType() == OP_BUY)

{

如果(OrderStopLoss() < OrderOpenPrice()

{

如果(DonchianLowM5 > OrderStopLoss()

{

OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowM5, OrderTakeProfit(), OrderExpiration(), Green)。

}

}

如果(OrderStopLoss() > OrderOpenPrice() )

{

如果(DonchianLowH4 <= OrderOpenPrice())

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green);

}

}

如果(OrderStopLoss() >= OrderOpenPrice())

{

如果(DonchianLowH4 > OrderStopLoss()

{

OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowH4, OrderTakeProfit(), OrderExpiration(), Green)。

}

}

}

有些什么不解。

这段代码的目的是为了。

1.修改止损,以跟踪M5图表上的东契奇通道下限,直至OrderOpenPrice。止损不跟随M5图表上的东契奇通道超过OrderOpenPrice。它的移动是为了实现收支平衡。

2.2.有些时候,大蜡烛的收盘价会超过OrderOpenPrice,因此,代码的第二部分是将其拉回到收支平衡点。

3.3.一旦H4图表上的东契奇通道超过了OrderOpenPrice,止损将跟踪H4图表上的东契奇低点。

东契奇通道的编码如下。

DonchianLowM5 = iLow(NULL, TimingChart, iLowest(NULL, TimingChart, MODE_LOW, TimingDNCPeriod, TimingChartShift + 1))。

DonchianHighM5 = iHigh(NULL, TimingChart, iHighest(NULL, TimingChart, MODE_HIGH, TimingDNCPeriod, TimingChartShift + 1))。

我检查了日志,止损修改为完全的OrderOpenPrice(它不低于,甚至不低于零点,这将导致它跟踪M5图表上的Donchian Low。

有谁知道它是怎么做的吗?

 
crsnape@btinternet.com:
大家好。

有谁知道为什么我的修改止损单不能正常工作?

当DonchianLowM5移动到OrderOpenPrice以上时,止损在DonchianLowM5和OrderOpenPrice之间快速跳动。

这是代码(抱歉我不知道如何正确粘贴它)。

//---- 止损的移动

如果(OrdersTotal() > 0)

{

for (int i = 0; i < OrdersTotal(); i++)

{

如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderType() == OP_BUY)

{

如果(OrderStopLoss() < OrderOpenPrice()

{

如果(DonchianLowM5 > OrderStopLoss()

{

OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowM5, OrderTakeProfit(), OrderExpiration(), Green)。

}

}

如果(OrderStopLoss() > OrderOpenPrice() )

{

如果(DonchianLowH4 <= OrderOpenPrice())

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green);

}

}

如果(OrderStopLoss() >= OrderOpenPrice())

{

如果(DonchianLowH4 > OrderStopLoss()

{

OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowH4, OrderTakeProfit(), OrderExpiration(), Green)。

}

}

}

有些什么不解。

这段代码的目的是为了。

1.修改止损,以跟踪M5图表上的东契奇通道下限,直至OrderOpenPrice。止损不跟随M5图表上的东契奇通道超过OrderOpenPrice。它的移动是为了实现收支平衡。

2.2.有些时候,大蜡烛的收盘价会超过OrderOpenPrice,因此,代码的第二部分是将其拉回到收支平衡点。

3.3.一旦H4图表上的东契奇通道超过了OrderOpenPrice,止损将跟踪H4图表上的东契奇低点。

东契奇通道的编码如下。

DonchianLowM5 = iLow(NULL, TimingChart, iLowest(NULL, TimingChart, MODE_LOW, TimingDNCPeriod, TimingChartShift + 1))。

DonchianHighM5 = iHigh(NULL, TimingChart, iHighest(NULL, TimingChart, MODE_HIGH, TimingDNCPeriod, TimingChartShift + 1))。

我已经检查了日志,止损修改为正好是OrderOpenPrice(它不低于,甚至不低于零点,这将导致它跟踪M5图表上的Donchian Low。

有谁知道这是什么原因造成的吗?

你正在使用DonchianLowM5和DonchianLowH4(我假设这些是不同的值)。这可能导致你的问题

 

你好,姆拉登。

谢谢你的答复。

DonchianLowM5和DonchianLowH4是不同的数值,但它们各有各的用途。 DonchianLowM5是用来调整SL,以便在交易的早期阶段达到收支平衡。DonchianLowH4调整SL作为一个追踪止损机制。这应该只在DonchianLowH4超过OrderOpenPrice时才会生效。

我又研究了一下这个问题,可能已经找到了问题所在。我想确定OrderModify函数是否将SL重新定位为准确的OrderOpenPrice。 但它不是。在我的日志中,OrderOpenPrice被指出是1.12224,5位数的精度,然而下面的Print函数 指出OrderOpenPrice只有4位数。所以SL将使用这个4位数,而不是5位数。我需要它使用5位数。

我怎样才能让ordermodify将SL调整到5位数的orderopenprice呢?

这是我的代码。

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green)。

Print("SL修改为订单开盘价", OrderOpenPrice())。

}

我已经试过了,但它没有工作。

OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice(), 5), OrderTakeProfit(), OrderExpiration(), Green)。

Print("SL修改为Order Open Price", OrderOpenPrice())。

我的经纪人有5位数,因为日志确认了它的开仓价格是1.12224。

我希望我的解释有意义。有什么想法吗?

 
crsnape@btinternet.com:
你好,Mladen。

谢谢你的答复。

DonchianLowM5和DonchianLowH4是不同的值,但它们各有各的用途。 DonchianLowM5是用来调整SL,以便在交易的早期阶段实现收支平衡。DonchianLowH4调整SL作为一个追踪止损机制。这应该只在DonchianLowH4超过OrderOpenPrice时才会生效。

我又研究了一下这个问题,可能已经找到了问题所在。我想确定OrderModify函数是否将SL重新定位为准确的OrderOpenPrice。 但它不是。在我的日志中,OrderOpenPrice被指出是1.12224,5位数的精度,然而下面的Print函数指出OrderOpenPrice只有4位数。所以SL将使用这个4位数,而不是5位数。我需要它使用5位数。

我怎样才能让ordermodify将SL调整到5位数的orderopenprice呢?

这是我的代码。

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green)。

Print("SL修改为订单开盘价", OrderOpenPrice())。

}

我已经试过了,但它没有工作。

OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice(), 5), OrderTakeProfit(), OrderExpiration(), Green);

Print("SL修改为Order Open Price", OrderOpenPrice())。

我的经纪人有5位数字,因为日志确认了它在1.12224的开单价格。

我希望我的解释有意义。有什么想法吗?

事实上,你得到的价格是以4位数的精度打印的,这不是问题:只要使用这个Print(DoubleToStr(OrderOpenPrice(),Digits));你就会得到一个正确的打印结果。我认为,如果你与两个完全不同的价格进行比较,可能会导致这些问题。

 

哦,对了。

你这是什么意思?我的括号结构有问题吗?

代码应该是根据情况选择DonchianLowM5或DonchianLowH4。

可能是我的小括号在每个代码元素上的构建、构建是错误的。

 

试着简化一下代码。像附件中的那样

PS:检查一下 这是否是你心目中的逻辑

附加的文件:
 

你好,我这里有两个指标,一个是基于RSI的,另一个是基于强度指数的,但问题是要求我看RSI的曲线,这表明不是我想要的,如果你有解决方案,显然我可以把文件发给你,如果需要的话,谢谢你的帮助...对不起,我的英语 "google traductor"

原因: