编码帮助 - 页 237 1...230231232233234235236237238239240241242243244...786 新评论 tfi_markets 2014.03.01 23:01 #2361 大家好。 我有一些简单的编码问题,我的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())。 } } } } } 谁能帮帮我? 请先谢谢您! Boej 2014.03.02 05:07 #2362 交易员/编剧朋友们,你们好! 我希望有人能在这里帮助我。 通过搜索和尝试周围的几个EA,我仍然没有找到我想要的东西。 也许我正在寻找一些很难找到的东西,或者我没有尽最大努力 :-) 我也通过画线和创建临时通道来交易SR系统。有什么东西可以在价格到达线时执行头寸吗?问题是,它需要能够在每次价格达到线时开仓。红线表示卖出,蓝线表示买入,黄线表示SL,绿线表示TP。所以不能只做一次交易或OCO。 谢谢。 附加的文件: sr.png 34 kb Mladen Rakic 2014.03.02 06:06 #2363 daytrade: 各位交易员/编剧朋友,你们好我希望有人能在这里帮助我。 搜索和尝试周围的几个EA,我仍然没有找到我想要的东西。 也许是我在寻找难以找到的东西,或者是我没有尽力而为 :-) 我也通过画线和创建临时通道来交易SR系统。有什么东西可以在价格到达线时执行头寸吗?问题是,它需要能够在每次价格达到线时开仓。红线表示卖出,蓝线表示买入,黄线表示SL,绿线表示TP。所以不能只做一次交易或OCO。 提前感谢!! 你检查过这个主题中的EA吗:https://www.mql5.com/en/forum/176382? [删除] 2014.03.02 10:51 #2364 修改止损 大家好。 有谁知道为什么我的修改止损单不能正常工作? 当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。 有谁知道它是怎么做的吗? Coding help 任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. 初学者的问题 MQL4 MT4 MetaTrader Mladen Rakic 2014.03.02 14:28 #2365 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(我假设这些是不同的值)。这可能导致你的问题 [删除] 2014.03.02 14:54 #2366 你好,姆拉登。 谢谢你的答复。 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。 我希望我的解释有意义。有什么想法吗? Mladen Rakic 2014.03.02 15:01 #2367 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));你就会得到一个正确的打印结果。我认为,如果你与两个完全不同的价格进行比较,可能会导致这些问题。 [删除] 2014.03.02 15:22 #2368 哦,对了。 你这是什么意思?我的括号结构有问题吗? 代码应该是根据情况选择DonchianLowM5或DonchianLowH4。 可能是我的小括号在每个代码元素上的构建、构建是错误的。 Mladen Rakic 2014.03.02 15:46 #2369 试着简化一下代码。像附件中的那样 PS:检查一下 这是否是你心目中的逻辑 附加的文件: _sample_code.mq4 1 kb ccoulaud 2014.03.03 16:11 #2370 你好,我这里有两个指标,一个是基于RSI的,另一个是基于强度指数的,但问题是要求我看RSI的曲线,这表明不是我想要的,如果你有解决方案,显然我可以把文件发给你,如果需要的话,谢谢你的帮助...对不起,我的英语 "google traductor" 附加的文件: usdjpym30_rect_1_avec_force_index.png 115 kb usdjpym30_avec_force_index.png 84 kb 1...230231232233234235236237238239240241242243244...786 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
大家好。
我有一些简单的编码问题,我的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。
谢谢。
各位交易员/编剧朋友,你们好
我希望有人能在这里帮助我。
搜索和尝试周围的几个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。
有谁知道它是怎么做的吗?
大家好。
有谁知道为什么我的修改止损单不能正常工作?
当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。
我希望我的解释有意义。有什么想法吗?
你好,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"