[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 96

 

我一定是错过了什么。

extern double LotsStep = 0.1;
       double Lots;
...

int start()
{
   ...
   
   if (NewOrder)
   { 
      if (OrdersTotal() == 0)
         Lots = LotsStep;
      else
         Lots += LotsStep;
      
      Lots = TrueLots(Lots);
      if (Lots < 0)
      {
         Alert("Не хватает денег на ", DoubleToStr(-Lots, 2), " лотов!");
         Lots = 0;
         Buy  = False;
         Sell = False;
      }
      
      NewOrder = False;
   }
      
   //Блок открытия на бай
   
   ...
}

double TrueLots(double Lots)
{
   double Free    = AccountFreeMargin();
   double One_Lot = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
   
   if (Lots > Max_Lot)
   {
      Alert("...");
      Lots = Max_Lot;
   }

   if (Lots*One_Lot > Free)
      return(-Lots);
   
   return(Lots);
}

 

还有一个问题,我有一个错误'('函数 定义意外,我把这个函数" double LotSize()
"。我
增加 后续每手的开仓量,但我希望只有在出现一系列买入信号时才开仓,而当相反的信号出现时,计数器归零,新的金字塔开始建立,如果可能的话,这就是为什么我采用这个代码片段,因为我认为它负责这一步,但结果并非如此。..

 
MaxZ:

我一定是错过了什么。


谢谢你,我现在就去试试。
 
SeALALex:
你去吧。


看看预告片--自己纠正一下。

附加的文件:
b-lots.mqh  3 kb
 
SeALALex:

谢谢,我现在就去试试。

我还添加了一个检查,以确保可以打开一定数量的Lots。即兴发挥,你就会很幸运!:))


其逻辑如下。

如果市场上没有订单(在这里,我排除了挂单),那么我们将初始值分配给Lots变量(在这种情况下,是非常步骤)。

如果市场上已经有订单,那么,在每次开盘时,Lots参数将增加LotsStep的值。

我不知道你的具体任务是什么,这就是为什么我写了 "即兴发挥"。


罗马人。:


看看预告片--自己纠正一下。

你最好用自己的双手掌握一切,同时,你将学会如何编码!:D

 
MaxZ:

我一定是错过了什么。


马克西姆,如果你有时间,请看一下 这个 主题...:-)))

我无法一下子为所有的EA想出一个 "共同标准"(一个通用的选项)...:-(((

在我的EA代码中 - 它说的是 "dabble "溢出...

我将在该主题中提出一个详细的问题,并附上截图 ...

P.S. 对于某些版本的猫头鹰--工作正常,对于其他版本的猫头鹰则不正常...现在只是照本宣科了,包括乘法。他的产品也需要被分解为普遍的方法,变成乘法。我按照你的建议为TWR变量做了一个数组,但到目前为止,它并不适合所有的EA,对于一些EA来说,在计算最优F的时候,历史上高达1000个单位的交易仍然充斥着 "双倍 "数据类型...。

 
MaxZ:

我一定是错过了什么。


我很抱歉,我并不总是能抓住它。


NewOrder 错误 -'NewOrder' - 未定义变量,我应该先在哪里命名?

 
Roman.:


马克西姆,如果你有时间,请看一下 这个 主题...:-)))

我应该在ProCapital论坛主题中看到什么?:))


罗马人。:


我无法一下子为所有的EA得出一个 "共同标准"(一个通用的选项)...:-(((

在我的专家顾问代码中--它说的是 "dabble "溢出。

我将在该主题中提出一个详细的问题,并附上截图 ...

P.S. 对于某些版本的猫头鹰--工作正常,对于其他版本的猫头鹰则不正常...现在只是按书做,包括乘法......它的产品也需要分解为通用的方法,变成乘法。我按照你的建议为TWR变量做了一个数组,但到目前为止,它并不适合所有的EA,对于一些EA来说,在计算最优F的时候,历史上1000个单位以下的交易仍然充斥着 "双倍 "数据类型...。

在ProCapital分公司?为什么在那里?贴出来,我看看截图,我会考虑的。
 
MaxZ:

我应该在ProCapital论坛主题中看到什么?:))


在ProCapital的分支机构?为什么在那里?贴出来,我看看截图,我会考虑的。


对不起,缓冲区里有一个错误的链接--一个旧的链接...:-)))

在这里。

现在我自己在工作--详细的问题与截图--将在今晚或明天在同一个主题中发布。:-)))

 
SeALALex:

我很抱歉,我并不总是能随手抓住它。


NewOrder 错误 -'NewOrder' - 变量未定义,我应该先在哪里调用它?

有了经验就会有教训!;)


NewOrder是一个bool类型的变量。它必须在Start()函数的开头声明,例如。一切都取决于你的代码的结构。

当我们想打开一个订单时,我们将变量NewOrder设置为True。

例如,我们的EA将与开盘价和移动平均线指标 一起工作。

if ((Close[2] <= MA2 && Close[1] > MA1) || (Close[2] < MA2 && Close[1] >= MA1))
{
   NewOrder = True;
   Buy = True;
}