[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 203 1...196197198199200201202203204205206207208209210...432 新评论 [Deleted] 2013.03.07 01:20 #2021 你好,请你给我一个命令(如果有的话)来随机选择一个数字,要么是0,要么是1,提前谢谢你。 ANDREY 2013.03.07 02:46 #2022 hoz: 好吧,首先,要习惯于把支架放在你需要的地方。像这样。 事实上,你应该有一个时间范围,而不是一个固定值。你的逻辑一点也不正确。 不是1小时或3小时,而是1小时到3小时!!。 谢谢你,我搞错了。 Alexander 2013.03.07 05:13 #2023 stater: 你好,请你给我一个命令(如果有的话)来随机选择一个0或1的数字,提前感谢。 int x =MathRand() % 2; vlad-755 2013.03.07 05:57 #2024 在测试专家顾问的过程中,我发现了代码执行的错误。- for(i=0;i<OrdersTotal();i++)循环的执行随着下一个刻度的出现而中断(下面是黑体字)。- 买入订单是按任何顺序选择和关闭的。你能告诉我如何找到原因并解决它吗? 下面是程序的代码和来自测试员日志的报告。方案代码。//+------------------------------------------------------------------+//|Poligon1.ǞǞǞ//| Copyright 2012, MetaQuotes Software Corp.//| 测试循环运算符。|//+------------------------------------------------------------------+#property copyright"Copyright 2012, MetaQuotes Software Corp."#属性链接""//+------------------------------------------------------------------+//申报的变量|//+------------------------------------------------------------------+ int Mn=357;//魔法数字 int i;//迭代计数器索引 双PriTP;//TP系列 int Tick;//Tick计数器//+------------------------------------------------------------------+//|专家初始化功能|//+------------------------------------------------------------------+ int init(){//---- 设置订单 OrderSend(Symbol(),OP_BUY,0.5,Ask,0,Bid-350*Point, Ask+350*Point, NULL,Mn,0,CLR_NONE);// OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-250*Point,Ask+250*Point,NULL,Mn,0,CLR_NONE) ;// OrderSend(Symbol(),OP_BUY,1.5,Ask,0,Bid-150*Point, Ask+150*Point, NULL,Mn,0,CLR_NONE);// OrderSend(Symbol(),OP_BUY,2.5,Ask,0,Bid-150*Point, Ask+150*Point, NULL,Mn,0,CLR_NONE);// OrderSend(Symbol(),OP_BUY,3.5,Ask,0,Bid-150*Point, Ask+150*Point, NULL,Mn,0,CLR_NONE);// OrderSend(Symbol(),OP_BUYLIMIT,1,Ask-150*Point,0,Bid-400*Point, Ask+250*Point,NULL,Mn,0,CLR_NONE);// OrderSend(Symbol(),OP_SELLSTOP,3,Ask-300*Point,0,Bid+150*Point, Ask-750*Point,NULL,Mn,0,CLR_NONE);////---- PriTP=Bid;//PriTP Print("Kc0:",OrdersTotal=",OrdersTotal()); ////---- return(0);}//+------------------------------------------------------------------+//|专家去初始化功能|//+------------------------------------------------------------------+ int deinit(){//----//---- return(0);}//+------------------------------------------------------------------+//|专家启动功能|//+------------------------------------------------------------------+ int start(){//----Tick计数器 Tick++;//Tick//----Close 买入订单 for(i=0;i<OrdersTotal();i++)//初始化循环。{ Print("Kc1:"," Tick=",Tick," i=",i);//消息 如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)//选择订单i{ 如果(OrderSymbol()==Symbol())//Symbol{ 如果(OrderMagicNumber()==Mn)//识别号码{ if(OrderType()==OP_BUY &&OrderTakeProfit()>PriTP)//当前所选订单的交易类型。{ OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);//平仓。}/关闭 如果(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)}// 关闭 if(OrderMagicNumber()==Mn)}//关闭 if(OrderSymbol()==Symbol()}//关闭 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)}//关闭 for(i=0;i<OrdersTotal();i++)//---- return(0);}测试者日志中的条目。2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=5 i=1 2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=5 i=0 2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=4 i=1 2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=4 i=0 2013.03.01 12:12:03 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=3 i=1 2013.03.01 12:12:03 2012.09.03 00:00 Poligon1 EURUSD,M15: close #4 buy 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at 1.25770 2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=3 i=0 2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=2 i=2 2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=2 i=1 2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: close #2 buy 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 at price 1.25768 2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=2 i=0 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=3 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #5 buy 3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at 1.25766 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=2 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #3 buy 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at 1.25766 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=1 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #1 buy 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 at 1.25766 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=1 i=0 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc0: OrdersTotal=7 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #7 sell stop 3.00 EURUSD at 1.25473 sl: 1.25916 tp: 1.25023 ok 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #6 buy limit 1.00 EURUSD at 1.25623 sl: 1.25366 tp: 1.26023 ok 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #5 buy 3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #4 buy 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #3 buy 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #2 buy 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 ok 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #1 buy 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 ok 2013.03.01 12:11:21 PM Poligon1测试开始 2013.03.01 12:11:21 18 18:30 Poligon1 EURUSD, M15:加载成功注意到。舒尔金 [ARCHIVE]Any rookie question, so [存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. ~~~~~~~~HELP・HELP・HELP for MQL4~~~~~~~~~~~~~~~~ Alexander 2013.03.07 06:05 #2025 Shurkin:在测试专家顾问时,我们发现代码中有一些错误。- 循环运算符for(i=0;i<OrdersTotal();i++)的执行会被下一个刻度线打断(如下图粗体所示)。- 买入订单的选择和关闭顺序是随机的。注意到。舒尔金 1.订单不能在init()函数中打开(在策略测试器中,但在演示中无法使用)。2.当你关闭订单时,要从末尾算到开头,而不是像你那样反过来。 Artyom Trishkin 2013.03.07 06:19 #2026 Shurkin:在测试Expert Advisor时,发现了代码执行错误:- 循环语句for(i=0;i<OrdersTotal();i++)的执行被下一个tick打断(下面用黑体字强调),- 买入订单以随机顺序选择和关闭。你能告诉我如何找到原因并解决它吗? 下面是程序的代码和测试者日记的报告。程序的代码。//+------------------------------------------------------------------+//|Poligon1.mq4 |//| Copyright 2012, MetaQuotes Software Corp.|//| 循环运算器测试。|//+------------------------------------------------------------------+#版权所有 "Copyright 2012, MetaQuotes Software Corp."#属性链接 ""//+------------------------------------------------------------------+//|声明的变量|//+------------------------------------------------------------------+ int Mn=357;//魔法数字 int i;//迭代计数器 double PriTP;//TP系列 int Tick;//Tick计数器//+------------------------------------------------------------------+//|专家初始化函数|//+------------------------------------------------------------------+ int init(){//----Set orders OrderSend(Symbol(),OP_BUY,0. 5,Ask,0,Bid-350*Point,Ask+350*Point,NULL,Mn,0,CLR_NONE);// OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-250*Point,Ask+250*Point,NULL,Mn,0,CLR_NONE) 5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);// OrderSend(Symbol(),OP_BUY,2.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE)5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);// OrderSend(Symbol(),OP_BUYLIMIT,1,Ask-150*Point,0,Bid-400*Point,Point, Ask+250*Point,NULL,Mn,0,CLR_NONE) 。// OrderSend(Symbol(,OP_SELLSTOP,3,Ask-300*Point,0,Bid+150*Point,Point, Ask-750*Point,NULL,Mn,0,CLR_NONE);////---- PriTP=Bid;//PriTP Print("Kc0:"," OrdersTotal=",OrdersTotal());//PriTP//---- return(0);}//+------------------------------------------------------------------+//| expert deinitialization function|//+------------------------------------------------------------------+ int deinit(){//---- //---- return(0);}//+------------------------------------------------------------------+//| expert start function|//+------------------------------------------------------------------+ int start(){//----Counter Tick Tick++;//Tick//----Close BUY Orders for(i=0;i<OrdersTotal();i++)//initialise loop{ Print("Kc1:"," Tick=",Tick," i=",i);//发送消息 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)//选择订单i{ if(OrderSymbol()==Symbol())//Symbol{ if(OrderMagicNumber()==Mn)//标识号{ if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)//当前选定订单的操作类型{ OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);//平仓}/关闭 如果(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)}/关闭 如果(OrderMagicNumber()==Mn)}//关闭 if(OrderSymbol()==Symbol()}//关闭 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ==true)}//关闭 for(i=0;i<OrdersTotal();i++)//---- return(0);}测试员日志条目。2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=5 i=1 2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=5 i=0 2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=4 i=1 2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=4 i=0 2013.03.01 12:12:09 2012。03 03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=3 i=1 2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: close #4 buy 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at price 1.25770 2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=3 i=0 2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=2 i=2 2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=2 i=1 2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: close #2 buy 1。00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 at price 1.25768 2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=2 i=0 2013.03.01 12:11:21 2012.09.03 03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=3 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #5 buy 3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at price 1.25766 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=2 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #3 buy 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at price 1.25766 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=1 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #1 buy 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 at 1.25766 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=1 i=0 2013。03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc0: OrdersTotal=7 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #7 sell stop 3.00 EURUSD at 1.25473 sl: 1.25916 tp: 1.25023 ok 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #6 buy limit 1.00 EURUSD at 1.25623 sl: 1.25366 tp: 1.26023 ok 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 开盘#5买入3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 开盘#4买入 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #3 buy 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok 2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #2 buy 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 ok 2013.03.01 12:11:21 2012.09.03 00:00:00 Poligon1 EURUSD,M15: open #1 buy 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 ok 2013.03.01 12:11:21 Poligon1 test started 2013.03.01 12:11:21 Poligon1 EURUSD,M15: loaded successfully注意到。舒尔金 我还没有看完你的整个乱七八糟的东西(你必须使用输入栏上方的SRC按钮来附加它)--在页面上到处乱划的代码并不令人愉快,但首先引起我注意的是一行 for(i=0; i<OrdersTotal() ; i++) .要关闭它,使用反向循环: for(i=OrdersTotal()-1; i>=0; i-- ) Viktar Dzemikhau 2013.03.07 10:26 #2027 Roger: int x =MathRand() % 2; 为什么它会返回0或1而不是另一个数字?根据帮助,MathRand()返回一个0到32767之间的伪随机整数 Boris 2013.03.07 11:43 #2028 hoz: 为什么会返回0或1而不是另一个数字?毕竟,根据MathRand() 返回一个0到32767范围内的伪随机整数。 这是该部门的剩余 部分!在算术步骤中和你的打印机中找找看! 把它放进去,你只会看到两个结果交替出现。 int x =MathRand() % 2; Print("x =",x); Allis 2013.03.07 12:43 #2029 向大家问好!我想知道如何阻止专家顾问,当进入市场 的条件得到满足时,它开始在日志文件中写 "订单被触发!"并且每分钟写几十次,结果日志文件变得非常巨大。我怎样才能让它只写一次,而不是在平仓前写,因为它可能会挂起几个小时......。 Boris 2013.03.07 12:54 #2030 Allis: 向大家问好!我想知道如何阻止专家顾问,当进入市场的条件出现时,它开始在日志文件中写 "订单被触发!"并且每分钟写几十次,结果日志文件变得非常巨大。我怎样才能使它只写一次,而不是在平仓前写,因为它可能会挂几个小时... 你好,Allis! 打印应该是规定的,在那里没有阅读的虱子!我把在打印,如果有一个错误,如果它打开,所以将写在杂志上,打开,只有一次!"。 1...196197198199200201202203204205206207208209210...432 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
事实上,你应该有一个时间范围,而不是一个固定值。你的逻辑一点也不正确。 不是1小时或3小时,而是1小时到3小时!!。好吧,首先,要习惯于把支架放在你需要的地方。像这样。
你好,请你给我一个命令(如果有的话)来随机选择一个0或1的数字,提前感谢。
在测试专家顾问的过程中,我发现了代码执行的错误。
- for(i=0;i<OrdersTotal();i++)循环的执行随着下一个刻度的出现而中断(下面是黑体字)。
- 买入订单是按任何顺序选择和关闭的。
你能告诉我如何找到原因并解决它吗?
下面是程序的代码和来自测试员日志的报告。
方案代码。
//+------------------------------------------------------------------+
//|Poligon1.ǞǞǞ
//| Copyright 2012, MetaQuotes Software Corp.
//| 测试循环运算符。|
//+------------------------------------------------------------------+
#property copyright"Copyright 2012, MetaQuotes Software Corp."
#属性链接""
//+------------------------------------------------------------------+
//申报的变量|
//+------------------------------------------------------------------+
int Mn=357;//魔法数字
int i;//迭代计数器索引
双PriTP;//TP系列
int Tick;//Tick计数器
//+------------------------------------------------------------------+
//|专家初始化功能|
//+------------------------------------------------------------------+
int init()
{
//---- 设置订单
OrderSend(Symbol(),OP_BUY,0.5,Ask,0,Bid-350*Point, Ask+350*Point, NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-250*Point,Ask+250*Point,NULL,Mn,0,CLR_NONE) ;//
OrderSend(Symbol(),OP_BUY,1.5,Ask,0,Bid-150*Point, Ask+150*Point, NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,2.5,Ask,0,Bid-150*Point, Ask+150*Point, NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,3.5,Ask,0,Bid-150*Point, Ask+150*Point, NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUYLIMIT,1,Ask-150*Point,0,Bid-400*Point,
Ask+250*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_SELLSTOP,3,Ask-300*Point,0,Bid+150*Point,
Ask-750*Point,NULL,Mn,0,CLR_NONE);//
//----
PriTP=Bid;//PriTP
Print("Kc0:",OrdersTotal=",OrdersTotal()); //
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
//----Tick计数器
Tick++;//Tick
//----Close 买入订单
for(i=0;i<OrdersTotal();i++)//初始化循环。
{
Print("Kc1:"," Tick=",Tick," i=",i);//消息
如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)//选择订单i
{
如果(OrderSymbol()==Symbol())//Symbol
{
如果(OrderMagicNumber()==Mn)//识别号码
{
if(OrderType()==OP_BUY &&OrderTakeProfit()>PriTP)//当前所选订单的交易类型。
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);//平仓。
}/关闭 如果(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)
}// 关闭 if(OrderMagicNumber()==Mn)
}//关闭 if(OrderSymbol()==Symbol()
}//关闭 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
}//关闭 for(i=0;i<OrdersTotal();i++)
//----
return(0);
}
测试者日志中的条目。
2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=5 i=1
2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=5 i=0
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=4 i=1
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=4 i=0
2013.03.01 12:12:03 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=3 i=1
2013.03.01 12:12:03 2012.09.03 00:00 Poligon1 EURUSD,M15: close #4 buy 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at 1.25770
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=3 i=0
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=2 i=2
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=2 i=1
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: close #2 buy 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 at price 1.25768
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=2 i=0
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=3
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #5 buy 3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at 1.25766
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=2
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #3 buy 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at 1.25766
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=1
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #1 buy 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 at 1.25766
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=1 i=0
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc0: OrdersTotal=7
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #7 sell stop 3.00 EURUSD at 1.25473 sl: 1.25916 tp: 1.25023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #6 buy limit 1.00 EURUSD at 1.25623 sl: 1.25366 tp: 1.26023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #5 buy 3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #4 buy 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #3 buy 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #2 buy 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #1 buy 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 ok
2013.03.01 12:11:21 PM Poligon1测试开始
2013.03.01 12:11:21 18 18:30 Poligon1 EURUSD, M15:加载成功
注意到。舒尔金
在测试专家顾问时,我们发现代码中有一些错误。
- 循环运算符for(i=0;i<OrdersTotal();i++)的执行会被下一个刻度线打断(如下图粗体所示)。
- 买入订单的选择和关闭顺序是随机的。
注意到。舒尔金
1.订单不能在init()函数中打开(在策略测试器中,但在演示中无法使用)。
2.当你关闭订单时,要从末尾算到开头,而不是像你那样反过来。
在测试Expert Advisor时,发现了代码执行错误:
- 循环语句for(i=0;i<OrdersTotal();i++)的执行被下一个tick打断(下面用黑体字强调),
- 买入订单以随机顺序选择和关闭。
你能告诉我如何找到原因并解决它吗?
下面是程序的代码和测试者日记的报告。
程序的代码。
//+------------------------------------------------------------------+
//|Poligon1.mq4 |
//| Copyright 2012, MetaQuotes Software Corp.|
//| 循环运算器测试。|
//+------------------------------------------------------------------+
#版权所有 "Copyright 2012, MetaQuotes Software Corp."
#属性链接 ""
//+------------------------------------------------------------------+
//|声明的变量|
//+------------------------------------------------------------------+
int Mn=357;//魔法数字
int i;//迭代计数器
double PriTP;//TP系列
int Tick;//Tick计数器
//+------------------------------------------------------------------+
//|专家初始化函数|
//+------------------------------------------------------------------+
int init()
{
//----Set orders
OrderSend(Symbol(),OP_BUY,0.
5,Ask,0,Bid-350*Point,Ask+350*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-250*Point,Ask+250*Point,NULL,Mn,0,CLR_NONE)
5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,2.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE)5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUYLIMIT,1,Ask-150*Point,0,Bid-400*Point,Point,
Ask+250*Point,NULL,Mn,0,CLR_NONE) 。//
OrderSend(Symbol(,OP_SELLSTOP,3,Ask-300*Point,0,Bid+150*Point,Point,
Ask-750*Point,NULL,Mn,0,CLR_NONE);//
//----
PriTP=Bid;//PriTP
Print("Kc0:"," OrdersTotal=",OrdersTotal());//PriTP
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function|
//+------------------------------------------------------------------+
int start()
{
//----Counter Tick
Tick++;//Tick
//----Close BUY Orders
for(i=0;i<OrdersTotal();i++)//initialise loop
{
Print("Kc1:"," Tick=",Tick," i=",i);//发送消息
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)//选择订单i
{
if(OrderSymbol()==Symbol())//Symbol
{
if(OrderMagicNumber()==Mn)//标识号
{
if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)//当前选定订单的操作类型
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);//平仓
}/关闭 如果(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)
}/关闭 如果(OrderMagicNumber()==Mn)
}//关闭 if(OrderSymbol()==Symbol()
}//关闭 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ==true)
}//关闭 for(i=0;i<OrdersTotal();i++)
//----
return(0);
}
测试员日志条目。
2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=5 i=1
2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=5 i=0
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=4 i=1
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=4 i=0
2013.03.01 12:12:09 2012。03 03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=3 i=1
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: close #4 buy 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at price 1.25770
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=3 i=0
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=2 i=2
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=2 i=1
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: close #2 buy 1。00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 at price 1.25768
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=2 i=0
2013.03.01 12:11:21 2012.09.03 03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=3
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #5 buy 3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at price 1.25766
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=2
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #3 buy 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at price 1.25766
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=1
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #1 buy 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 at 1.25766
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=1 i=0
2013。03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc0: OrdersTotal=7
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #7 sell stop 3.00 EURUSD at 1.25473 sl: 1.25916 tp: 1.25023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #6 buy limit 1.00 EURUSD at 1.25623 sl: 1.25366 tp: 1.26023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 开盘#5买入3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 开盘#4买入 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #3 buy 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Open #2 buy 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 ok
2013.03.01 12:11:21 2012.09.03 00:00:00 Poligon1 EURUSD,M15: open #1 buy 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 ok
2013.03.01 12:11:21 Poligon1 test started
2013.03.01 12:11:21 Poligon1 EURUSD,M15: loaded successfully
注意到。舒尔金
int x =MathRand() % 2;
为什么它会返回0或1而不是另一个数字?根据帮助,MathRand()返回一个0到32767之间的伪随机整数
为什么会返回0或1而不是另一个数字?毕竟,根据MathRand() 返回一个0到32767范围内的伪随机整数。
这是该部门的剩余 部分!在算术步骤中和你的打印机中找找看!
把它放进去,你只会看到两个结果交替出现。
向大家问好!我想知道如何阻止专家顾问,当进入市场的条件出现时,它开始在日志文件中写 "订单被触发!"并且每分钟写几十次,结果日志文件变得非常巨大。我怎样才能使它只写一次,而不是在平仓前写,因为它可能会挂几个小时...