任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 556

[删除]  

belck
:

приветствую!

помогите разобраться. пытаюсь сделать в советнике закрытие сделок в пятницу за пол часа до закрытия сессии.

пробовал по учебнику, то ничего у меня не получилось

может у кого уже готовый код есть.

код закрытия у меня есть. мне нужен сам сигнализирующий закрытие сессии за 30 минут.

这样吧。

extern datetime DateTime = D'2014.03.21 11:30';  // Дата и время закрытия



if (TimeCurrent()>=DateTime)
  {
  }
情况是,我不需要日期。 我需要它在每个星期五的会议结束前30分钟和结束前30分钟发出信号,然后我将把信号嵌入平仓单的代码中。
 
我有这个工作,没有发生故障。
//---закрыть все позиции в пятницу в 19-40 по серверному времени 
   if(DayOfWeek()==5 && Hour()==19 && Minute()>40){
      //Дать сигнал на закрытие всех позиций    
       
   } 
 
belck:

问候!

我试图让我的EA在周五收盘前半小时关闭交易。

我试了一下这个教程,但没有成功。

我可以问一下是否有人有现成的代码。

我有关闭代码。我需要它能够提前30分钟关闭一个会话。


这可能对任何经纪人来说都是比较普遍的。太糟糕了,经纪人的报价与UTC的报价还没有区别

void OnStart()
  {
//---
   int hrd=-3; // разница времени в часах котировок брокера с Гринвичем
   datetime tc=TimeCurrent();
   if(f_ts(tc,hrd)>0) Print("CloseAll()");
  }
//+------------------------------------------------------------------+


int f_ts(datetime ti, int hrd)
{
   if(TimeDayOfWeek(ti)!=5) return(-1); // если не пятница  выходим
   datetime t0d,te;
   int dtd=1440*60, res=-1;
   t0d=ti/dtd*dtd;        // начало торгового дня
   te=t0d+dtd-30*60+hrd*3600;     // 30 мин до конца сессии
   if (ti>te)  res=1;
   else        res=0;
   return(res);
[删除]  
granit77:
我有这个工作,没有发生故障。

这样试了一下,通过测试器测试了一下,然后这个功能就不工作了。
 

那么这在测试器中不应该工作。

if(DayOfWeek()==5 && Hour()==19 && Minute()>40)

这些函数是基于当前时间 的,我在上面写的东西会起作用,因为TimeCurrent()和TimeDayOfWeek()工作正常。你只需要添加切换到夏季和冬季时间的功能,即参数hrd。切换通常是根据美国夏令时的时间进行的(11月的第一个星期日,3月的第二个星期日),但有些经纪公司不进行切换,所以你应该使用你的

 
belck:

问候!

我试图让我的EA在周五收盘前半小时关闭交易。

我试了一下这个教程,但没有成功。

我可以问一下是否有人有现成的代码。

我有关闭代码,我需要它在会议结束前30分钟发出信号。

r772ra:

也许像这样。

完全不是这样的。

我们需要定义会话关闭时间 datenime SessionClose = .如果不是会话关闭,而是交易关闭,那么会话关闭=StrToTime("23:30")

定义一周的日子 TimeDayOfWeek()

如果是星期五,检查 TimeCurrent() >= SessionClose

[删除]  
AlexeyVik:

情况完全不是这样。

我们需要定义会话关闭时间 datenime SessionClose = ....如果不是会话关闭,而是交易关闭,那么会话关闭=StrToTime("23:30")

定义一周的日子TimeDayOfWeek()

如果是星期五,检查 TimeCurrent() >= SessionClose


你能更详细地描述一下这个代码吗?
 
AlexeyVik:

情况完全不是这样。

我们需要定义会话关闭时间 datenime SessionClose = ....如果不是会话关闭,而是交易,那么SessionClose =StrToTime("23:30")


会话结束时间 SessionClose = ... 和竞标... 无论你如何定义它,都不会在测试器中工作 :) 从三月初到今天的检查
 
belck:

你能更详细地描述一下这个代码吗?

是的,我可以。但这有悖于我的原则。


GSB
会话结束时间 datenime SessionClose = ... 和竞标... 无论你如何定义它,都不会在测试器中工作 :) 从三月初到今天的检查

这与测试器有什么关系?尽管在最新的更新之前,它在测试器中一直工作。我现在不会争论,没有测试过,也不会很快被迫打开测试器。
 
AlexeyVik:

我可以。但这有违我的原则。


测试员与此有什么关系?虽然在最新的更新之前,它确实在测试器中工作。现在我不会争辩,我没有测试,也不会很快被迫打开测试器。

对原则没有异议,但这个人想在测试器中运行EA,所以你的选项不适合他。

使用我的版本,它将在实际和测试器中工作,但直到他们做出一个功能,自动考虑到冬季夏季时间的过渡,定义今年的过渡时间,如

string data_1="2014.03.09"; string data_2="2013.11.03";
if(TimeCurrent() < StrToTime(data_1) && TimeCurrent() > StrToTime(data_2) ) hrd=-2; else hrd=-3;
从2013年3月到2014年11月将正常工作并测试正常。根据你的经纪人设置班次