结构规则。 学习如何构建方案,探索可能性、错误、解决方案等。 - 页 14

 
C-4:
在这种情况下,我们将不得不存储信号的历史,这是很昂贵的。让我们再次看看两条平均线的交叉情况。假设我们重新启动了EA。没有新的交叉点可以进入,EA将以某种方式需要恢复其交易历史,并理解有一个交叉点,现在应该处于买入状态,并且这个信号已经被处理,我们不应该开立新的头寸,但我们需要找到旧的头寸,但不容易找到,因为当前的头寸不一定只属于一个EA ...总而言之,这是一场恶梦。这就是hrenfx建议的荆棘之路:在每个机器人中写一个历史测试器,它将收集历史信号,计算它们是否有效,然后存储策略的数量,等等。因此,开发的复杂性增加了一个数量级,而仍然没有可靠的解决方案。

信号历史是一个指标,指标是为此目的而设计的,用来进行计算,产生信号并将其上传到专家顾问。

也不要说指标是重画的,写出不重画的指标,你就会很高兴。


没有人可以把我们引入歧途,我们根本不在乎我们要去哪里 :)

 
C-4:

这怎么可能不重要呢!?任何策略,在其逻辑层面上,总是知道它的当前状态!

这里是基本问题。我对它很熟悉,我经历了这里所有的角落和缝隙。 而且它是错误的。

该战略不需要知道它的历史。该战略应向前看,而不是向后看。发生的事情已经成为过去,不可能再回头了。

以一个简单的交叉策略为例:它只有两种状态,不是买入就是卖出。在不记忆其位置的情况下,每次看到快速平均线高于慢速平均线时,它就会开出多头。那么,同步器要做什么?你告诉他:"不,你已经有一个多头头寸了,我不会再给你一个"。

:)

我已经写过了,你在解决一个不存在的问题。 只有在 "秩序 "思维下,问题才显得真实。有了网状思维就不存在了。

我不是在说你或我的思维,我是在说程序(战略)的思维。

在基于订单的系统中,该策略是离散的买入/卖出/平仓信号的生产者。 在基于净值的系统中,该策略输出一个数字(双倍)--建议的市场位置。

让我们用两辆马车的例子来说明,比如说,在交易恒定手数时,滚动净值TC将如何产生其产品(伪代码)。

 Pos = Sign(MA(ShortPeriod) - MA(LongPeriod));

就这样了。

只要短线波动高于长线,该策略就会在输出上保持+1,而当短线波动低于长线时则保持-1。

关于在适当的时候为保持这些头寸而下什么订单/平仓的决定是由市场驱动力来做的。 策略不需要去管它,它的作用是比较贵族化的,它不关心那些商业化的东西。 驱动力取符号的建议头寸,用它减去实际头寸,然后显示差值。 如果差值等于零,它就不做什么。

我的解决方案是通用的,策略自己决定有多少订单,在哪个方向可以保持开放。

该策略是否需要担心订单的问题? 市场驱动力决定了这些问题。


如果你想买一个位置,卖两个位置,没问题。

这里有可能笑吗? 这正是问题所在--它被称为 "锁"。

在几个输入策略的总头寸提交给市场驱动力之前,我已经解开了所有潜在的锁。

  Pos=0;
  for (i=0; i<StrategyCount; i++)  Pos+= Strategy[i].GetPos();
  MarketDriver.Synhronize(Pos, Err);

基类拥有它所需要的所有信息来做决定。在终端层面,没有净头寸,而策略本身在舒适的多头模式下工作。

由我提议的模板创建的专家顾问将自动具有多专家的属性。我不需要添加或修改任何东西。不同的EA在一个符号上的头寸不会塌陷成网状,在这种模式下编制网格或储物柜和其他策略一样容易。换句话说,无论专家顾问的逻辑如何,都实现了程序执行的完全统一!这也是我们的目标。

呃...当你考虑到锁甚至不在其中出现时,我的解决方案甚至更加通用。 爱锁的人不跟我走,我跟他们走。
 
MetaDriver:

...

只要空头高于多头,该策略将在出场时保持+1,而当空头低于多头时则保持-1。

市场驱动力决定在适当的时候下什么单/平仓来维持这些头寸。 策略不需要去管它,它的作用更多的是贵族式的,它不关心这些商战的虚荣。

策略甚至需要担心某种订单吗? 市场驱动力为我决定这些小细节。

...

这当然很好,但对于那些当前的 "建议 "取决于先前所开仓位 的策略,又该怎么办呢?假设一个策略是积极的金字塔,它有这样一个条件(伪代码)。

if(LastPosition.NetProfit > 400 && LastPosition.PositionType == Long)
{
   double volume = LastPosition.Volume + 1;
   BuyAtMarket(volume, "Entry long by strengthening");
}

另一个例子是推荐系统如何处理这样一个简单的条件(伪代码)。

if(LastPosition.NetProfit < -400)
{
    CloseAtMarket(LastPosition, "Exit position by stop-loss");
    if(LastPosition.PositionType == Long)
       ShortAtMarket(volume, "Entry long by revers")
    else
       BuyAtMarket(volume, "Entry short by revers")
}
在现实中,可能有很多这样的情况。
 
MetaDriver:
这就是基本的模糊的东西。我对它非常熟悉,我搜遍了这里的每一个角落。 而且它是错误的。

战略没有必要了解其历史。战略应该向前看,而不是向后看。已经发生的事情在过去已经发生了,不可能再回头。

你为什么要大喊大叫:)他不是这么说的。


任何策略,在其逻辑层面上,总是知道它的当前状态!

这是关于当前的状态,而不是历史。
 
C-4:

这当然很好,但对于那些当前的 "建议 "取决于先前所开仓位 的策略,又该如何处理?假设该策略是积极的金字塔,它有这个条件(伪代码)。

这些策略肯定需要在交易哲学层面上进行治疗,也就是说,应该治疗头上的这个特别的洞:"当前的建议取决于以前开的头寸"。

当前推荐的头寸绝不应取决于以前在市场上采取的行动。

 
sergeev:

你为什么要大喊大叫:)他不是这么说的。

它说的是当前状态,而不是历史。

我不是在和他说的沟通,我是在和他的意思沟通。 他指的是以前的现状。

:)

 

:)

事实上,对于我的方案来说,创建考虑到过去交易的策略并没有什么主要障碍。

用更多的学术术语来说:一个没有内存的系统可以很容易地模拟一个有内存的系统。 要做到这一点,内存只是被移到系统之外--它成为另一个输入指标。 这就足够了。 策略本身仍然是一个 "没有内存的系统",这很好,也很正确。

 
MetaDriver:

当前推荐的头寸绝不应取决于市场上早先进行的行动。

那些 "发布自己的建议 "的机器人,其信号只有一句话,怎么办?机器人看到一个大的上升蜡烛--一个买入信号。下一个柱子是一个正常的柱子,没有信号。如果机器人不记得自己的状态,那么它在这个柱子上的建议已经是空的,而记得的机器人则不是空的,而是有一个多头头寸。但这是两个相同的机器人。

MetaDriver

我不是在与他说的话交流,而是与他的意思交流。 他指的是以前的现状。

啊,原来这才是我真正的意思!我就知道:)
 
C-4:...这当然很好,但对于那些当前的 "建议 "取决于先前所开仓位 的策略,又该怎么办呢?假设一个策略是积极的金字塔......。

关键是,顶级创业者很可能有一个价格预测器,而不是一个战略。

MetaDriver: ...策略的任务是预测 市场在下一个时间点是上涨还是下跌,以及有多大概率。 建议的市场位置取决于此。过去有什么,是否有开放的(任何方向的)位置--这绝对不重要......。
而你(C-4)所说的是资金管理模块的工作,它把预测器读数和过去的交易结果都作为输入(某种函数)。如果没有MM,那么最终的交易算法,实际上是把一个虚拟的预测者头寸(不关心过去的交易结果)变成一个真实的头寸,未来的市场方向是推荐头寸的标志,信心/可能性与同一头寸的交易量成正比。

MM模块是预测者和驱动者之间的一层,结果可以是任何东西,从资本化和风险限制(在X...小时/交易/点的相对缩减)到预测者建议的仓位的彻底逆转。

 
C-4:

那些 "发布自己的建议 "的机器人,其信号只有一句话,怎么办?机器人看到一个大的上升蜡烛--一个买入信号。下一个柱子是一个正常的柱子,没有信号。如果机器人不记得自己的状态,那么它在这个柱子上的建议已经是空的,而记得的机器人则不是空的,而是有一个多头头寸。而这是两个相同的机器人。

这些机器人肯定应该得到治疗。 治疗可能非常简单。 你所需要的只是动力。这是最主要的事情。

而为了激励他们,他们需要看到并欣赏网状思维比秩序思维的巨大优越性。 只要他们生病,我就不会让他们接近健康人群--让他们坐在隔离区里......

:)

啊,原来这才是我真正的意思!很高兴知道:)
为什么不呢? 我需要道歉吗? 或者我猜对了吗?)