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

 
Boris:

所以...阅读文档(再次)。

问题。有什么问题吗?无论是CopyTicksRange还是CopyTicks,它都不算数。

你要越读越多,越读越多......读到你读到我亲自为你从文档中复制的内容,并以红色粗体字标注。

这是我们关于交易、自动交易系统和策略测试的论坛。

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

Alexey Viktorov, 2021.02.09 10:17

阅读文件!!!。

还是希望所有的文件都能分部分复制到这里?

真麻烦......没有引号粘在上面......我必须重复它们......。

from_msc

[in]申请抽签的日期。从1970年1月1日起,以毫秒为单位指定 。如果没有指定from_msc 参数 ,则从历史开始返回刻度时间大于等于from_msc的ticks被返回。

to_msc

[in] 日期,在此基础上要求打钩。从1970年1月1日起,以毫秒为单位指定 。时间<= to_msc的刻度将被返回。如果 没有指定 参数 to_msc ,则会给出直到历史结束的所有刻度


 
Boris:

所以...阅读文档(再次)。

问题。有什么问题吗?它不通过CopyTicksRange或CopyTicks来计算。

我的问题是,例如,我不太了解μl5,是Date这个词,而不是Time。并相应地提出了一个问题,在一个日期内,什么年龄会是?

而在一个暗示之后。如何获得 以毫秒为单位的时间

 
Valeriy Yastremskiy:

我的问题是,比如说,我对μl5不是很了解,是Date这个词,不是Time。而相应的问题是,在同一日期内,年龄是多少?

而在一个暗示之后。如何获得 以毫秒为单位的时间

1秒=1000毫秒。而 "Date "意味着 "Date and Time",因为其类型是datetime,而不仅仅是date。

 
Alexey Viktorov:

多读、多读、多读......读到你读完了我亲自为你从文档中复制的内容,并以红色粗体标出。

遗憾的是......引语没有坚持......我必须重复它们......。


哦,伙计...是的,嗯...它的工作!

 

关于mql4的问题。

在EA的代码中,有一个点差限制,EA被设定为几个图表。

在输入参数中输入一个货币对的平均点差是不太正确的,它在不同的交易台是不同的。

平均点差是5个百分点,但也有几分钟扩大到12个百分点的时候,而且不是翻倍。

我怎样才能使之自动化,以便计算平均价差,而不在扩大的价差上开仓

   MqlRates rates[]; 
   int copied=CopyRates(NULL,PERIOD_M1,0,100,rates); 
   if(copied>0) 
   for(int e = ArraySize(rates)-1; e >=0; e--) {
     Print(e,"=",rates[e].spread); // всегда "0"
   }
 

你好,是否可以以及如何在不使用任何指标的情况下,根据开仓和平仓的算法创建一个专家顾问?

比如说,拿两条线,一条趋势线是向上的,第二条也是向下的,把它们放在上面,两条线之间有一个交点,我们假设它在时间上是15-30,那么如何让订单在同一时间自动开启,向任何方向启动,如何让算法会找到这些点开仓?我希望得到澄清和你们的意见。

我们能在这样的T3基础上创建一个EA吗?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 
Vitaly Muzichenko:

关于mql4的问题。

在EA的代码中,有一个点差限制,EA被设定为几个图表。

在输入参数中输入一个货币对的平均点差是不太正确的,它在不同的交易台是不同的。

平均点差是5个百分点,但也有几分钟扩大到12个百分点的时候,而且不是翻倍。

如何实现自动化,以便计算平均价差,而不是在扩大的价差上建仓

一个好主意是在每一次打勾时观察价差。从其急剧增加到loos的言辞和交易员的问题来看。按照我的理解,问题不在于长期的大利差,这是最小的问题,而是急剧的大利差和短利差增加。

我会看看符号属性 中指定的那个,把它作为一个平均值,并在开单前合理地增加它。而且我们也会看一下价差,以关闭或修改它。或者,我将监测过去3到10个点的平均价差。

 
Valeriy Yastremskiy:

一个好主意是在每一次打勾时观察价差。从言论和交易员对其急剧增加到赔钱的问题来看。按照我的理解,问题不在于长期的大利差,那是较小的问题,而在于急剧的大利差和短线的增加。

我会看看符号属性 中指定的那个,把它作为一个平均值,并在开单前合理地增加它。而且我们也会看一下价差,以关闭或修改它。或者说,最后3到10个点 的价差将被平均监测。

昨天大约1分钟(而且不是10点),有~14个点的价差,平均正常价差为4个点。所以在扩大传播的时刻,机器人进去买了。

10点显然是不够的

 
Vitaly Muzichenko:

昨天大约1分钟(不是10个点),有~14个点差,平均正常点差为4个点。所以在扩大传播的时刻,机器人进去买了。

10支显然是不够的。

这里的任务是固定变化的开始和结束。 而固定应该在很短的时间间隔内进行。也就是说,传播的平均值应该通过一个浮动窗口从一秒到十秒固定下来。你应该观察每秒钟平均有多少个刻度,或者观察10秒钟的刻度并取平均值。我更喜欢第一个选项。

 
Valeriy Yastremskiy:

这里的任务是捕捉变化的开始和结束,以及单一变化的排放,而且捕捉必须是在很短的时间内。点差的平均值应该通过一个浮动窗口从一秒到十秒固定下来。你应该观察每秒钟平均有多少个刻度,或者观察10秒钟的刻度并取平均值。第一个变体离我比较近。

我已经用这种方式解决了问题。

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

   if(CheckSpr(sp)) {
     // Здесь код отправки
   }
}

//+------------------------------------------------------------------+
bool CheckSpr(int _sp)
{
  static int ts=0, res=0;
  static long tc=0;
   tc++;
   ts += _sp;
   res =ts/tc;
   if(tc>LONG_MAX-1) {
      tc=0;
      ts=0;
   }
   // Comment( res,"=",tc );
   if(tc<500) return(false);
   return(res>_sp?true:false);
}

问题是,它将在滚动中记录一个巨大的差额,并将与它一起工作。

我认为这个解决方案是无效的,我们需要以某种方式限制翻身时的录音,而不应用时间限制

原因: