[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 385

 
granit77:
维克多,你错了。感谢这个有点冗长的讨论,两个程序员同时回答了新人的问题,这对这个话题只有好处:)

嗯,我很喜欢读它。而且很能看出先进的态度(我不知道现在该怎么称呼你们这些程序员--我现在很迷惑:)。)- 我们这样说吧--专家,解决先进的问题。)))以及他们对看似简单任务的看法。我真诚地希望这是一次没有情绪的友好讨论,尽管有各种不同意见。不幸的是,我也仍然有分歧(未解决的)。但我在这里只是宣称一种哲学的方法。如果用这种方式解决一个问题的方法不明显,你必须找到另一种方法。但了解这个问题是非常有用的。

非常感谢您的讨论。令人遗憾的是,我们没有达成共识。(但是,目前还没有出现共识...(我想到了那首 "在遥远的地方,在地铁旁 "的歌曲))。

当然,很遗憾的是,我和阿尔勒的问题没有明显的答案。我认为这些问题不仅仅是针对他和我的,也是针对许多经验不足的专业人士的,他们发现很难建立自己的线程和I.T.,这就是为什么他们要求助于高级专业人士编写的程序和外壳。

好吧,这没关系。假以时日,我们也会解决这些问题。: ))非常感谢您的努力。各方最后都有一个积极的态度(尽管他们有不同的解决方式)。而且它很高兴。

顺便说一下,在我的教学研究中,我经常说:不是所有的问题都能解决,我们往往不知道所有的答案;因此,他们仍然可以...保持开放。(我正试图为讨论找到一个微妙的结局)再次感谢!
 
需要帮助 1 如何知道顶部开仓或挂单 卖出的价格 2 如何检查在我指定的价格上是否有开仓或挂单卖出的情况?
 

谢尔盖,哪些问题没有得到解决?如果这样。

Chiripaha:

也就是说,在回答Arles的 问题时,如果一个EA完成了订单的核算并 "打了个盹",这时另一个没有超过分配资金上限的EA(让我们假设80%的存款--两个EA都有这个规模)将下订单(在市场上进行交易)。而当第1位恢复工作时(而且资金管理终端已经在前一天计算过了),他/她也会开出超过专家顾问所设定的限额的交易?

如果这个系统(假设)被多个EA所乘,那么可能有一个,风险管理将在关键系统中?

我对这个多线程的理解正确吗?- 如果是这样,那么从财务角度来看,当然是一团糟。但由于小账户中的概率很小,所以这只是一种假设。而在较大的账户上,他们可能会自己写一些东西。但仍然是这样,结果是这样吗?

而我有一个问题--这是官方的立场,还是像我一样只是猜测和经验?

第378页上有一个代码。又来了。

#property show_inputs

extern int Pause = 1000;

int    hwndChart = NULL; // Уникальный идентификатор скрипта.
string sName = "Condition";

void init()
 {
  hwndChart = WindowHandle(Symbol(), 0);
  // Создаём глобальную переменную синхронизации скриптов.
  if (!GlobalVariableCheck(sName)) GlobalVariableSet(sName, 0);
 }
 
void deinit()
 {
  GlobalVariableDel(sName);
 }

void start()
 {
  while (!IsStopped())
   {// Начало блока синхронизации.
    GlobalVariableSetOnCondition(sName, hwndChart, 0);
    if (GlobalVariableGet(sName) == hwndChart)
     {
      Print("Start");
      Sleep(Pause); // Имитация работы.
      Print("End");
     }
    GlobalVariableSetOnCondition(sName, 0, hwndChart);
    // Завершение блока синхронизации.
    Sleep(200);
   }
 }
如果延迟是 "仿制作品",则插入对存款或其他资源的参考。

你可以把这个同步块变成一个函数,并把它放在库中。你将有一个从任何EA访问存款的同步功能。

 
用图表窗口的句柄替换索引
 
FAQ:
用图表窗口的句柄来代替索引

对了!很难弄清楚什么是指数。

我已经重新做了。

===================

虽然,索引将允许正确地删除一个全局变量

我们应该在deinit中递减索引。并在索引等于零时删除全局变量。

但这种递减将不允许在删除后重新加载脚本。指数将被混在一起。

我们应该创建一个全局数组,包含所有访问该资源的模块的索引。嗯,并与之合作。

也可以做两个全局变量。一个是最后的索引,另一个是当前的模块数。指数只会增加。也许,这将是更容易的。

或者根本不需要使用全局变量。在第一次运行前手动删除。

 
这将工作得很好,直到第一次失败,当实验者不递减总计数器的时候。
 
我已经得到了它!我们也必须同步退出。在deinit中等待轮到你的时候,用全局变量 重置退出。如果资源被访问的时间很短,那么在deinit中就会没事。
 

1) 问题:每个脚本(EA)都必须知道所有其他脚本的存在。

2) 问题:如果出现了故障,来自故障的globals将被挂起未被占用,队列将被卡住。

3) 解决方案:

每个exp组织1个globalka,名称为--通用前缀+窗口手柄+符号。globalka的值是该仪器上最后一个刻度的时间。2个普通的全局,有自己的句柄(工作后,它将自己的句柄写入其中,如果它是最古老的,则将其清除)

队列按升序排列(手柄),最高级的将第二个globale设置为零

在每个exp中,我们创建了三个数组(因为缺乏结构)--符号/手柄/最后访问时间/最后打勾时间。

所有的EXP都会跟踪它们的(最后访问时间/最后勾选时间),一旦它们不同(其中一个EXP失败),失败的EXP的两个globals就会被删除,它被认为是不活跃的。

队列被恢复

这实际上是由EA站在最活跃的图表上完成的(频繁点击)。

当正常去初始化时,每个expo会自己清理。

最大限度地跳过--打一个勾。

ZS.而一般来说,最好是做一个多币种的

 
Zhunko:

谢尔盖,哪些问题没有得到解决?如果这样。

第378页上有一个代码。又来了。

在有延迟的 "模仿作品 "的地方,你要插入对存款或其他资源的参考。

你可以把这个同步块变成一个函数,并把它放在一个库中。你会得到一个同步的功能,即从任何专家顾问那里获取存款。

这是一个原子访问块,不存在同步问题。只适用于存款是没有意义的。对任何一个存款参数函数的调用都将本身是原子性的,没有任何提示。如果你以原子方式进行,专家顾问的所有工作。这就是你解决问题的方式--你认为你已经做了一些事情,但事实上这只是一个幻觉。

 
FAQ:

1) 问题:每个脚本(EA)必须知道所有其他脚本的存在。

2) 问题:如果出现了故障,来自故障的globals将被挂起未被占用,队列将被卡住。

3) 解决方案:

每个exp组织1个globalka,名称为--通用前缀+窗口手柄+符号。globalka的值是该仪器上最后一个刻度的时间。2个普通的全局,有自己的句柄(工作后,它将自己的句柄写入其中,如果它是最古老的,则将其清除)

队列按升序排列(手柄),最高级的将第二个globale设置为零

在每个exp中,我们创建了三个数组(因为缺乏结构)--符号/手柄/最后访问时间/最后打勾时间。

所有的EXP都会跟踪它们的(最后访问时间/最后勾选时间),一旦它们不同(其中一个EXP失败),失败的EXP的两个globals就会被删除,它被认为是不活跃的。

队列被恢复

这实际上是由EA站在最活跃的图表上完成的(频繁点击)。

当正常去初始化时,每个expo会自己清理。

最大限度地跳过--打一个勾。

ZS.而一般来说,最好是做一个多货币的


他不会明白,从上面看到的太糟糕了))))。我的这项任务大约是以这种风格解决的。有一个了解问题本质的人,这很好。只有我仍然有一个队列,在这个队列中,任务开始执行的顺序,并在一个圈子中进一步执行。