新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1385

 
Vitaly Muzichenko:

上面所有的代码都是这样做的,除了突出的黄色--我认为它是不必要的,也不太正确。我从未见过有人在不同的时间翻身,总是在同一时间--格林尼治标准时间22-00,尽管我可能是错的。

但经常看到不同期限的滚动,有的5分钟,有的1分钟多一点。

---

检查代码,也许会改变一些东西。

因此,并将一切与GMT时间联系起来。得到了本地时间 和服务器时间的差异,你就可以立即明白在多少个翻身。而5分钟或1分钟我认为没有明显的区别。全部用5分钟。

 
Alexey Viktorov:

因此,把一切都与GMT时间联系起来。获取本地时间 和服务器时间的差异,你就可以立即了解翻转的时间有多长。而5分钟或1分钟我不认为有太大的区别。全部用5分钟。

你的方案如何更好或更可靠?

如果你能做到,请给我看一下代码!
 
Vitaly Muzichenko:

你的如何更好,或更可靠?

也许根本就没有。我没有遵循你的代码。只是在发表我的意见。

 

Vitaly Muzichenko:

如果你能做到,请给我看一下代码!

你是在假装吗?

 
Alexey Viktorov:

也许这没什么。我没有关注你的代码。只是在发表我的意见。

这里的一切都在一个帖子里。

需要在翻转期间筛选出价差入口,以便EA不在扩展的价差上交易。

关于交易、自动交易系统和策略测试的论坛

新手对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论

Vitaly Muzichenko, 2021.02.11 14:04

我以前从未遇到过这样的代码。不知为何,我从未见过有人在不同的时间翻车,总是在同一时间--格林尼治标准时间22点,尽管我可能是错的。

但经常看到不同期限的滚动,有的5分钟,有的1分钟多一点。

---

检查代码,也许会改变一些东西。

//+------------------------------------------------------------------+
void OnTick(void)
{
   int sp = SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);
   static int ts=0;

   if(CheckSpr(sp)) {
      // Здесь код отправки
      Comment( sp,"=",ts++,"=",res );
   } else Comment( "false: ",sp,"=",ts++,"=",res );
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
MqlDateTime dt;
int res=0;
bool CheckSpr(int _sp)
{
  TimeGMT(dt);
  static int ts=0;
  static long tc=0;
   if(dt.hour==22) return(false); // ролловер
   tc++;
   ts += _sp;
   res =ts/tc;
   if(tc>LONG_MAX-1) {
      tc=0;
      ts=0;
   }
   // Comment( res,"=",tc );
   if(tc<500) return(false); // собираем спред на 500 тиках
   return(res>_sp?true:false);
}

 
Vitaly Muzichenko:

这里的一切都在一个信息中。

我们需要在翻转期间剔除点差的进入,这样EA就不会在扩展的点差上进行交易。


在整整一个小时内没有交易?

   if(dt.hour==22) return(false); // ролловер

还是你误解了什么?

 
Vitaly Muzichenko:

这里的一切都在一个信息中。

我们需要在翻转期间对点差的进入进行筛选,这样EA就不会在扩展的点差上进行交易。


我们是否只是假设性地禁止某种传播记录(文件、数据库)特别是在翻转中?

 
Alexey Viktorov:

整整一个小时没有交易?

还是你误解了什么?

没错,之后整整一个小时,价差都在扩大。而在5分钟后的翻车前,它在一些地方也被扩大了。

 
Alexey Viktorov:

整整一个小时没有交易?

还是我误解了什么?

然而,它可以这样写。

void OnTick(void)
{
   int sp = SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);

   if(CheckSpr(sp)) {
      // Здесь код отправки
      Comment( sp,"=",res );
   } else Comment( "false: ",sp,"=",res );
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
MqlDateTime dt;
int res=0;
bool CheckSpr(int _sp)
{
  static int ts=0;
  static long tc=0;
  TimeGMT(dt);
   if(dt.hour==22 && res<_sp) return(false); // Если 1 час после ролловера спред упадёт до нормального - торгуем
   tc++;
   ts += _sp;
   res =ts/tc;
   if(tc>LONG_MAX-1) {
      tc=0;
      ts=0;
   }
   if(tc<500) return(false);
   return(res>_sp?true:false);
}

这应该能正常工作。

 
Vitaly Muzichenko:

然而,你可以这样开处方。

这应该是可行的。

有趣的是)它不应该)。

如果是正常价差的交易,只需将其 "限额 "输入,如果价差高于限额,则忽略该交易。

价差可以通过莳萝来拉长,而不需要翻转。