周末晚上 - 页 9

 
Aleksey Panfilov:

一个指标在三个时间段有六个把手。

而要取的价值的偏移,已经被规定了。我每次都从他们那里抄袭一个价值。

我在三个时间段使用一个指标的三个手柄,并从中复制可能的偏移区间,这让我感到困惑。

如果你需要一次从一个以上的条形图中获取指标值,你应该把这些值复制到一个数组中。以iATR为例。

//+------------------------------------------------------------------+
//| Get value of buffers for the iATR                                |
//+------------------------------------------------------------------+
double iATRGet(const int index)
  {
   double ATR[1];
//--- reset error code 
   ResetLastError();
//--- fill a part of the iATR array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle_iATR,0,index,1,ATR)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iATR indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(ATR[0]);
  }
//+------------------------------------------------------------------+
//| Get value of buffers for the iATR in the array                   |
//+------------------------------------------------------------------+
bool iATRGetArray(const int start_pos,const int count,double &arr_buffer[])
  {
   bool result=true;
   if(!ArrayIsDynamic(arr_buffer))
     {
      Print("This a no dynamic array!");
      return(false);
     }
   ArrayFree(arr_buffer);
   int       buffer_num=0;          // indicator buffer number 
//--- reset error code 
   ResetLastError();
//--- fill a part of the iATRBuffer array with values from the indicator buffer that has 0 index 
   int copied=CopyBuffer(handle_iATR,buffer_num,start_pos,count,arr_buffer);
   if(copied!=count)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iATR indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(false);
     }
//---
   return(result);
  }
 
Vladimir Karputov:

如果你想一次从多个条形图中接收一个指标值,你需要将这些值复制到一个数组中。以iATR为例。

是的,看来把我复制到的数组留作动态是个错误。:(

将检查。

 
Aleksey Panfilov:

是的,把我复制进来的数组作为动态数组似乎是个错误。:(

我会检查的。

我只复制到动态数组!而且,在复制之前,我强行让ArrayFree。我在静态数组方面遇到了问题。从那时起,只有动态的。

 
Vladimir Karputov:

我只复制到动态 数组!而在复制之前,我强制ArrayFree。静态数组存在问题。从那时起,只有动态的。

明白了。错误不在这里。

这里是没有去的专家顾问。

附加的文件:
 
Aleksey Panfilov:

明白了。错误不在这里。

这里是没有去的专家。

错误:你复制的是一个值还是两个 值?

   //---  Используя функцию CopyBuffer, мы копируем по 1 последних новых значения индикаторов в динамические массивы

   if(CopyBuffer(Handle_4P72_L0_1,0,0,200,line1_L0)<0  // || CopyBuffer(Handle_4P72_L0_2,0,0,1,line2_L0)<0   || CopyBuffer(SMA_Handle_00,0,0,1,SMA_L0)<0
   || CopyBuffer(Handle_4P72_L1_1,0,0,200,line1_L1)<0  // || CopyBuffer(Handle_4P72_L1_2,0,0,1,line2_L1)<0   || CopyBuffer(SMA_Handle_01,0,0,1,SMA_L1)<0
   || CopyBuffer(Handle_4P72_L2_1,0,0,200,line1_L2)<0  // || CopyBuffer(Handle_4P72_L2_2,0,0,1,line2_L2)<0   || CopyBuffer(SMA_Handle_02,0,0,1,SMA_L2)<0
   ||  CopyTime(_Symbol,_Period,0,1,New_Time)<0)
 
Vladimir Karputov:

错误:你复制的是一个值还是两个 值?

在这个EA中(它的日期不同),我尝试了三个手势和两百个数值。

 

如果你准备为MT5制作机器人,我可以开始给你出主意。我在TS-Lab中模拟条件,但我想在MT5上以自动模式交易。

如果测试没有问题,我将描述交易逻辑。第一个可能会是这个。

附加的文件:
 
Vladimir Karputov:

我先从小份量开始。

只要在当前蜡烛关闭前有"关闭信号蜡烛前的秒数",我们就计算"计算平均蜡烛尺寸的蜡烛数"的平均尺寸。如果当前烛光超过平均尺寸的"当前烛光:超体尺寸, 百分比"--我们以成交量"手"开立头寸,并以成交量"手"*开盘价的"乘法系数"在"待定限价水平:当前烛光高度的百分比"的距离,以信号烛光高度的百分比放置待定限价单。

这是否正确?


我需要时间来记住我在那里做了什么 :)因为通风,我得了感冒。既生气又好笑:在夏天发烧,还得了感冒:)

 
Vladimir Karputov:

这需要时间来记住我一直在做的事情 :)然后,仿佛是故意的,出现了气流,结果就是感冒了。这既有趣又愤怒:在夏天发烧和感冒:)

感觉更好。

 
Vladimir Karputov:

我只复制到动态 数组!而在复制之前,我强制ArrayFree。静态数组存在问题。从那时起,只有动态的。

哦,来吧...我对静态的也没有问题。不过,这取决于我们正在谈论的内容。在指数中,是的,动态的更好,如果没有管理缓冲区和捕捉错误的愿望。但在猫头鹰身上,其实没有任何区别。