初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1178

 
Aleksey Vyazmikin:

所以说明书中没有提到这个功能的风扇

由于一个价格坐标中的对象可以有几个值,所以必须指定一个行号。这个功能只适用于以下对象。

  • 趋势线 (OBJ_TREND)
  • 角度的 趋势线(OBJ_TRENDBYANGLE)
  • 江恩线(OBJ_GANNLINE)。
  • 等距通道 (OBJ_CHANNEL) - 2行
  • 线性回归通道 (OBJ_REGRESSION) - 3行
  • 标准偏差通道(OBJ_STDDEVCHANNEL) - 3行
  • 带箭头的线(OBJ_ARROWED_LINE)。

风扇在任何时候都有两个点。在其上添加一条平行趋势线并进行计算。始终可以找到输出。

 
Uladzimir Izerski:

ObjectGetValueByTime价格 计算,找出风扇的任何百分比

它在测试器中工作。我还没有测试过。

你能以代码形式显示吗?

 
Aleksey Vyazmikin:

你能以代码形式显示吗?

刚刚在代码中检查了一下。它在频道上起作用。它在风扇上也能检测到。

 F_Draw_Object("FAN",OBJ_FIBOFAN,Time[20],High[20],Time[5],Low[5],0,0,0,2,C'00,00,200',OBJPROP_FILL,false);
 PriseCLv=ObjectGetValueByTime(0,"FAN",Time[10],0);

你可以把趋势线绑定到扇形上,你也可以检测它。但它的工作原理是这样的。

 
Uladzimir Izerski:

刚刚在代码中检查了一下。它在频道上起作用。它在风扇上也能检测到。

你可以将趋势线与风扇绑定,你也可以检测它。但它的工作原理是这样的。

它是如何为你工作的?

它对我不起作用,至少在视觉测试器中不起作用......

bool fiboFanCreate(string ffname, datetime tm1, double pr1, datetime tm2, double pr2)
{
   Print(__FUNCSIG__);
   
   //if(!ObjectCreate(0,ffname,OBJ_FIBOFAN,0,tm1,pr1,tm2,pr2))
   if(!ObjectCreate(0,ffname,OBJ_FIBOFAN,0,tm1,pr1,tm2,pr2,0,0,0,2,C'00,00,200',OBJPROP_FILL,false))
   {
      Print(__FUNCSIG__,
            ": не удалось создать \"Веер Фибоначчи\"! Код ошибки = ",GetLastError());
      return(false);
   }
   
   ChartRedraw();
   Sleep(1000);
   
   return(true);
}
//+------------------------------------------------------------------+
bool fiboFanLevelsSet(double  &values[],  // значения линий уровня
                      string  name)       // имя веера
{
   Print(__FUNCSIG__);
   
   levels = ArraySize(values);
   ArrayPrint(values);
   //--- установим количество уровней
   ObjectSetInteger(0,name,OBJPROP_LEVELS,levels);
   
   //--- установим свойства уровней в цикле
   for(int i=0;i<levels;i++)
   {
      //--- значение уровня
      ObjectSetDouble(0,name,OBJPROP_LEVELVALUE,i,values[i]);
      //--- описание уровня
      ObjectSetString(0,name,OBJPROP_LEVELTEXT,i,IntegerToString(i+1));
   }
   ChartRedraw();
   Sleep(1000);
   //--- успешное выполнение
   return(true);
}

检查

void OnTick()
{
   new_bars    = current_chart.isNewBar();   // проверить появление нового бара
   
   if(new_bars > 0)
   {
      if(ObjectFind(0,ff_name) >= 0) Print(ff_name,"4 = ",NormalizeDouble(ObjectGetValueByTime(0,ff_name,TimeCurrent(),4),Digits()));

....

2020.01.19 19:38:50.208 2019.09.19 11:15:00   bool fiboFanCreate(string,datetime,double,datetime,double)
2020.01.19 19:38:50.208 2019.09.19 11:15:01   bool fiboFanLevelsSet(double&[],string)
2020.01.19 19:38:51.365 2019.09.19 11:30:00   FFan4 = 0.0
 

关于交易、自动交易系统和测试交易策略的论坛

2个问题 MT5

Sergey Tabolin, 2020.01.20 11:52

当从EA中调用指标 时,什么原因导致了错误?该指标通常是手动放置在图表上。

   ResetLastError();
   handle_ICTMP1 = iCustom(Symbol(),0,"my_used\\ICTMP_3.01",0,in_symb1,false,false,in_smoothing);
   if(handle_ICTMP1 == INVALID_HANDLE)                                                 // проверяем наличие хендла индикатора
   {
      Print("Не удалось получить хендл индикатора handle_ICTMP1...",GetLastError());   // если хендл не получен, то выводим сообщение в лог об ошибке
      return(INIT_FAILED);                                                             // завершаем работу с ошибкой
   }
   else
   {
      Print("Получен хендл индикатора handle_ICTMP1");
      if(!MQLInfoInteger(MQL_OPTIMIZATION))
      {
         if(!ChartIndicatorAdd(ChartID(),0,handle_ICTMP1)) Print("Ошибка подключения индикатора к графику"); // подключаем индикатор к графику
      }
   }
2020.01.20 13:42:09.390 Core 1  file Indicators\my_used\ICTMP_3.01 read error
2020.01.20 13:42:09.390 Core 1  loading of ICTMP_  EURGBP,M15 failed [557]
2020.01.20 13:42:09.390 Core 1  2019.09.19 00:00:00   cannot load custom indicator 'my_used\ICTMP_3.01' [4802]
2020.01.20 13:42:09.390 Core 1  2019.09.19 00:00:00   Не удалось получить хендл индикатора handle_ICTMP1...4802
2020.01.20 13:42:09.390 Core 1  tester stopped because OnInit returns non-zero code
P.S. 它在测试器中。

尽管该EA是在图表上实时运行的。它不渲染指标。(((

特别是,这是什么

 

亲爱的朋友们,难道就没有人提出什么建议吗?

分开来看,该指标在测试器和图表上都能工作。当我从测试器中的EA运行它时,我得到一个不明确的错误。带有该指标的专家顾问通常在图表上启动和工作。

我在哪里挖?

 
Сергей Таболин:

亲爱的朋友们,难道就没有人提出什么建议吗?

分开来看,该指标在测试器和图表上都能工作。当我从测试器中的EA运行它时,我得到一个不明确的错误。带有该指标的专家顾问通常在图表上启动和工作。

我在哪里挖?

也许是朝着测试器中的指示器 的路径?
 
Artyom Trishkin:
也许是朝着测试器中的指示器路径?

怎么说呢?

我通过这种方式拥有我需要的所有指标

handle_ICTMP1 = iCustom(Symbol(),0,"my_used\\ICTMP_3.01"
handle_HMA7C = iCustom(Symbol(),0,"my_used\\my_HMA7C_201",

这在以前从未发生过。另外,这是我第一次听说在测试器里 有一个单独的指标 路径,...

是否对其他指标有效,而对这个指标无效?

 

特别是事先添加了另一个指标。

   ResetLastError();
      handle_HMA7C = iCustom(Symbol(),0,"my_used\\my_HMA7C_201",45,9);
      if(handle_HMA7C == INVALID_HANDLE)                                                  // проверяем наличие хендла индикатора
      {
         Print("Не удалось получить хендл индикатора handle_HMA7C...",GetLastError());    // если хендл не получен, то выводим сообщение в лог об ошибке
         return(INIT_FAILED);                                                             // завершаем работу с ошибкой
      }
      else
      {
         Print("Получен хендл индикатора handle_HMA7C");
         if(!MQLInfoInteger(MQL_OPTIMIZATION))
         {
            if(!ChartIndicatorAdd(ChartID(),0,handle_HMA7C)) Print("Ошибка подключения индикатора к графику"); // подключаем индикатор к графику
         }
      }
   
   handle_ICTMP1 = iCustom(Symbol(),0,"my_used\\ICTMP_3.01",0,in_symb1,false,false,in_smoothing);
   if(handle_ICTMP1 == INVALID_HANDLE)                                                 // проверяем наличие хендла индикатора
   {
      Print("Не удалось получить хендл индикатора handle_ICTMP1...",GetLastError());   // если хендл не получен, то выводим сообщение в лог об ошибке
      return(INIT_FAILED);                                                             // завершаем работу с ошибкой
   }
   else
   {
      Print("Получен хендл индикатора handle_ICTMP1");
      if(!MQLInfoInteger(MQL_OPTIMIZATION))
      {
         if(!ChartIndicatorAdd(ChartID(),0,handle_ICTMP1)) Print("Ошибка подключения индикатора к графику"); // подключаем индикатор к графику
      }
   }
2020.01.20 20:15:34.713 program file added: Indicators\my_used\my_HMA7C_201.ex5. 41715 bytes loaded
2020.01.20 20:15:34.920 2019.09.19 00:00:00   Получен хендл индикатора handle_HMA7C
2020.01.20 20:15:34.921 file Indicators\my_used\ICTMP_3.01 read error
2020.01.20 20:15:34.921 loading of ICTMP_ EURGBP,M15 failed [557]
2020.01.20 20:15:34.921 2019.09.19 00:00:00   cannot load custom indicator 'my_used\ICTMP_3.01' [4802]
2020.01.20 20:15:34.921 2019.09.19 00:00:00   Не удалось получить хендл индикатора handle_ICTMP1...4802
2020.01.20 20:15:34.921 tester stopped because OnInit returns non-zero code

该EA仍然正常地放在图表上。所有的指标都被加载并工作....

 
Сергей Таболин:

亲爱的先生们,难道就没有人提出什么建议吗?

在哪里挖?

我可以假设你反复得到手柄,并逐渐溢出内存。现场图上的那个人做得很慢,没有时间填满所有的内存。测试者每秒做很多次,并迅速溢出内存。