[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 72

 

http://www.soft-sib.ru/articles/programs/10/

与文件服务器方法相比,使用DBMS和客户-服务器架构的另一个优势是可以使用事务性数据操作机制。这项服务由数据服务器提供,允许将几个数据修改动作合并为一个不可分割的操作 (事务)。交易的使用确保了对信息的可靠保护,使IS的客户端和服务器端都不会出现硬件和软件故障。

 
是的,要么我是隐形人,要么没有人愿意帮助或可以帮助()
 
PerlOF:


手册和教程指出了连接到服务器的必要性(为EA、脚本、指标)。

是否可以在不连接服务器的情况下调用特殊功能(原则上)?


是的,它是。事实上,服务器是需要接收启动start()函数的tick。

start()- 主函数。它是在收到下一个tick后的专家处被调用。对于自定义指标,在将指标附加到图表上后的重新计算过程中,在客户终端打开时(如果指标附加到图表上),以及在下一个tick出现后,都会调用该指标。在脚本中,它在附加到图表和初始化后立即执行。如果模块中没有start()函数,这个模块(专家顾问、脚本或自定义指标)就不能被启动

脚本可以无限循环运行,因此它不需要刻度,指标和专家顾问需要刻度(在标准配置中(因为专家顾问也可以无限循环运行))。

但虱子可以是人为造成的--用VINAPI。此外,还有策略测试器 这样的标准功能(也能生成ticks)。

你只需要动动脑子,在网站(论坛)上搜索。

而不是把文件服务器技术的优点或缺点带进来。

 
MXDEEM:

你好,我有这样的代码,检查是否有订单,如果我有一个未结订单,那么再检查一次,以此类推,直到订单达到0。 但专家显然忽略了这个代码,开出了无限多的订单,请告知错误在哪里?

int FunctionBUYnext()
{
int b=OrdersTotal()。
如果(b>0)
{FunctionBUYnext();}
否则 {FunctionSell();}
}



MQL4社区论坛导航器
规则搜索如何发布论坛管理报告滥用情况心灵感应俱乐部
你不应该问的问题
如何提出正确的问题
有用的文献有用的软件寻找一个指标(专家顾问或脚本)。
 

有必要使用iCustom函数在交易专家顾问中画一条线。
我用ZigZag作为测试。

for(int cnt=0; cnt<10000; cnt++) {
   double zigzag1=iCustom(NULL,0,"ZigZag",15,0,3,  0,cnt+1);
   if( zigzag1!=0 ) 
      break;
}


由于iCustom在我的案例中的目的只是为了画一条线
指标 数据不用于专家顾问),我决定将代码放在deinit()中。但它在那里不起作用,什么也没画出来。
在start()中,一切都很正常。
1.为什么它在deinit()中不起作用?
2.在测试和优化
,你需要避免无意义地运行上述代码(避免浪费CPU时间),只让它在被测试的历史记录的最后一栏上运行。
- 如何实现这一目标?
谢谢你!
 
Roll:

代码是荒谬的。

为什么?所有的教诲
 
MXDEEM:

为什么?所有为什么?

这很奇怪,你是如何被教导...

你的 "代码 "主体中的函数在哪里被调用?

这个 "代码 "本身也很有趣...

int FunctionBUYnext()
{
int b=OrdersTotal();
if (b>0)
{FunctionBUYnext();}
else {FunctionSELL();}
} 

使用对自己的调用...为什么不在没有订单时直接退出FunctionBUYnext()?

更进一步--没有检查订单类型,没有检查符号和魔法。

我想把你的 "老师 "送到架子上......。

 

面对一个问题...

该脚本与MessageBox()函数以这种形式工作

//+------------------------------------------------------------------+

#include <WinUser32.mqh>
#import "user32.dll"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   int result = MessageBox("Are you ok?", "Caption",MB_YESNO|MB_ICONQUESTION);
   if(result != IDYES) Alert("Кнопка да не нажата");
//----
   return(0);
  }
//+------------------------------------------------------------------+

但在使用无文件记录的MessageBoxTimeoutA() 函数时,它完全失败。

//+------------------------------------------------------------------+

#include <WinUser32.mqh>
#import "user32.dll"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   int result = MessageBoxTimeoutA(0, "Are you ok?", "Caption",MB_YESNO|MB_ICONQUESTION, 0, 10000);
   if(result != IDYES) Alert("Кнопка да не нажата");
//----
   return(0);
  }
//+------------------------------------------------------------------+

即使是带有是/否按钮的信息窗口也不会出现。

谁遇到的--告诉我狗被埋在哪里?

 
artmedia70:

这很奇怪,你是如何被教导...

你的 "代码 "主体中的函数在哪里被调用?

这个 "代码 "本身也很有趣...

使用对自己的调用...为什么不在没有订单时直接退出FunctionBUYnext()?

更进一步--没有检查订单类型,没有检查符号和魔力。

我想把你的 "老师 "送到架子上......。

我解释的意思,调用本身,因为你需要在这部分的检查,如果你做一个提款,它会再次返回到执行开始,我不需要它,符号和魔术师不考虑,我的老师互联网))))。如果不难,请给我发一些类似的东西,但要有效果,主要的想法是--不要让人知道是否有订单,如果没有就跳到一个特定的功能

 
MXDEEM:

我解释的意思,调用本身,因为我们需要一个检查在这一部分,如果你退出它将再次返回到执行开始,我不需要它,符号和魔术师不考虑,我的老师互联网)))。如果你不介意发送类似的东西,但工作,主要的想法 - 不让如果订单,如果没有,然后跳到一个特定的功能。

哦,不要大喊大叫......。我认为你有CapsLock卡住了...字体大小 应该增加一倍,而且要加粗...

这只是一个...一个旁证。

现在让我向你解释一下。

我将解释一下这个问题。通过递归调用,你让你的EA准确地循环到这个部分......也就是说,如果有任何订单或市场头寸,EA应该挂起,什么也不做(只是挂起),直到你手动删除所有订单和关闭头寸?那么这样的自动交易有什么意义呢,如果EA没有你的干预就会挂在那里?

重新考虑你对EA逻辑的做法