错误、漏洞、问题 - 页 1521

 
Ilya Malev:
将该文本插入在编辑器中创建的默认指标的OnCalculate中。把它放在任何图表上。你将在图表窗口的左上角看到该指标的操作情况。从指标列表中选择 "删除 "后,它不会停止工作,你会在左上角 看到它。即使在窗口关闭后,它也会继续。打开一个新窗口后,将在新窗口中继续进行。这个窗口的符号不一定与你一开始的那个相同 :)
只有当终端关闭时,指示器的工作才会停止。而且我不知道它是否停止--我只是不得不通过任务管理器手动删除终端来重新启动它......

同时,IsStopped函数的帮助说,如果有终止mql-program的命令,程序操作会在3秒后强行终止。

而如果while(true)被替换为 while(!IsStopped()),那么当从图表中删除时,指标会成功完成。

一切都很清楚。我们对正常的删除做了宽容处理。

当终端关闭时,它将是硬的。不超过3秒。

而且我不确定我们是否会在文档中写上这一点,1.这样就不会沉迷于写这种鲁莽的指标(你写这个是为了检查吗)2。既然松开了,那就收紧了。

 
Alexandre:

内部编译器错误的一个有趣原因(指标中使用的函数)。

...

治疗方法很明显,但同意--非常有趣的故障。:)))

谢谢你的帖子!

给你写了一条私人信息
 
你好。我无法编写代码,在前一个仓位开仓后,在n-numberof bars 开仓。尝试使用Time[i]、iBarShift、iTime。我对这一切都没有运气。我是编程方面的新手。搜索没有任何结果。
 

Dmitri Custurov:
Здравствуйте. Не получается написать код, который открывал бы позицию через n-количество баров после открытия предыдущей позиции. Пробовал использовать Time[i], iBarShift, iTime. Все безуспешно. В программировании новичок. Поиск ничего не дал.

问候,为了让你得到帮助找到错误 - 你至少需要附上代码。这里没有人会帮你写--这里的习惯是帮助你找到错误,并通过建议来纠正它。或者--联系一个自由职业者。
 

以下是代码。

如果((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))
{int send1=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 1, 0, Red);
z=1;

Timer=Time[0];}

TimerNull=iBarShift(NULL,0,Timer,false)。

如果((TimerNull>=n)&&(z==1))

{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);

z=2;}

我也试过这种方式。

如果((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))
{int send1=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 1, 0, Red);
z=1;

Timer=Time[0];}

TimerNull=Time[0];

if ((TimerNull>=(Timer+2700))&&(z==1))//作为一个例子在这里我把2700秒而不是n,在测试中意味着3个15分钟的蜡烛){int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);

z=2;}

而且还像这样。

如果((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))
{int send1=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 1, 0, Red);
z=1;

Timer=Time[0];}

TimerNull=Time[0];

如果((CurrentTime()>=(Timer+2700))&&(z==1))

{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red); //在这种情况下,当我删除2700时,第二笔交易紧接着第一笔交易在同一个柱子里打开,这很合理。甚至当我把任何价值提高到600而不是2700的时候,第二笔交易也在同一个酒吧里打开。在价值高于600的情况下,第二笔交易从未开启。我无法理解问题出在哪里。我将非常感谢您的帮助。

Timer和TimerNull参数是日期时间格式。


 

在你的例子中,并没有列举出例如位置

如果((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))

因此它总是选择位置0。

 
我还在写一个粗略的草稿,以使基本的逻辑运作。之后,我将对其进行完善。在这种情况下,我可能是错的,问题出在代码的第二部分。
 
Slawa:

这一切都很有意义。为正常的删除做了一个纵容。

当你关闭终端时,会很难。不超过3秒。

而且我不确定我们是否会在文档中写上这一点,1.这样就不会沉迷于写这种鲁莽的指标(你写这个是为了检查吗)2。既然我们已经松开了,那么就把它收紧。

因此,已经收紧了,或者修正了参考。纵容不纵容不是一个严肃的对话。程序员期望从你那里得到的不是 "溺爱",而是清晰的、有记录的软件。

当然,这段代码除了演示之外没有其他目的,这是你自己要求的。而且它是相当无害的,无害的将工作,如果睡眠被删除,评论被打印取代。在Quartet或Quartet 5中,没有任何保护措施可以防止将数千兆字节的打印内容加入日志。

 
Dmitri Custurov:

以下是代码。

如果((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))
{int send1=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 1, 0, Red);
z=1;

Timer=Time[0];}

TimerNull=iBarShift(NULL,0,Timer,false)。

如果((TimerNull>=n)&&(z==1))

{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);

z=2;}

我也试过这种方式。

如果((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))
{int send1=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 1, 0, Red);
z=1;

Timer=Time[0];}

TimerNull=Time[0];

if ((TimerNull>=(Timer+2700))&&(z==1))//作为一个例子在这里我把2700秒而不是n,在测试中意味着3个15分钟的蜡烛){int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);

z=2;}

而且还像这样。

如果((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))
{int send1=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 1, 0, Red);
z=1;

Timer=Time[0];}

TimerNull=Time[0];

如果((CurrentTime()>=(Timer+2700))&&(z==1))

{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red); //在这种情况下,当我删除2700时,第二笔交易紧接着第一笔交易在同一个柱子里打开,这很合理。甚至当我把任何价值提高到600而不是2700的时候,第二笔交易也在同一个酒吧里打开。在价值高于600的情况下,第二笔交易从未开启。我无法理解问题出在哪里。我将非常感谢您的帮助。

Timer和TimerNull参数是日期时间格式。


这是可能的实现方式之一。 该EA应该在指定的条数 后开出订单。并学习如何正确插入EA代码,信息栏上的SRC按钮。

//+------------------------------------------------------------------+
//|                                                          111.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

input int nymber_bar=10;
input double Volume_=0.01;
int send1;
int send2;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Total_orders(_Symbol,OP_SELL)==0 && send1<=0)
     {
      send1=OrderSend(Symbol(),OP_SELL,Volume_,Bid,0,0,0,NULL,1,0,Red);
     }

   if(OrderSelect(send1,SELECT_BY_TICKET))
     {
      if(iBarShift(NULL,0,OrderOpenTime())>=nymber_bar)
        {
         send1=OrderSend(Symbol(),OP_SELL,Volume_,Bid,0,0,0,NULL,1,0,Red);
        }
     }

  }
//+------------------------------------------------------------------+
int Total_orders(string symbol,int type)
  {
   int n=0;
   int total=OrdersTotal();

   for(int i=0; i<total; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         if(OrderType()!=type)continue;
         //if(OrderMagicNumber()!=Magic)continue;
         if(OrderSymbol()!=symbol)continue;
         n++;
        }
     }
   return(n);
  }
//+------------------------------------------------------------------+

111

 

这个问题可能是针对网站开发人员或自由职业者的。

---

曾经是:完成568项工作,75%为个人工作

增加了13项工作(都是个人的),成为:完成581项,75%是个人的。

---

因此,问题是:请解读一下,75%是什么意思?