新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 746

 

伙计们,我有一个函数OnTimer(),它应该在每天开始的时候执行,在执行的某个结果上,EA应该进入睡眠状态。如果我将函数OnTimer()的下一次执行时间设置为第二天的开始,之后EA将进入睡眠状态,直到同一时刻(例如-1秒),那么时间计数器仍在运行,函数将在1秒后从睡眠状态中出来后执行?


P.S.另一个稍微令人担忧的问题是,文档怎么会写得这么俗气?我的意思是代码空间和括号的分期,除了 "编程实验室的小学生 "和用Mql写作的人,我从来没有见过任何人产生这样的东西

for(int x=0;x<10;x++)

{

}


该网站在某种程度上纠正了自己的错误,关于小括号,我的意思是小括号是用表格来放置的,也就是说,我们无法从垂直方向上直观地追踪小括号的位置。

 
ukrop1203:

伙计们,我有一个函数OnTimer(),它应该在每天开始的时候执行,在执行的某个结果上,EA应该进入睡眠状态。如果我将函数OnTimer()的下一次执行时间设置为第二天的开始,之后EA将进入睡眠状态,直到同一时刻(例如-1秒),那么时间计数器仍在运行,函数将在1秒后从睡眠状态中出来后执行?


P.S.另一个稍微令人担忧的问题是,文档怎么会写得这么俗气?我的意思是代码空间和括号的分期,除了 "编程实验室的小学生 "和用Mql写作的人,我从来没有见过任何人产生这样的东西

for(int x=0;x<10;x++)

{

}


至于圆括号,我的意思是,圆括号是用表格来放置的,也就是说,不可能直观地按照圆括号的位置来垂直排列。

你不能垂直地追踪小括号的位置,所以你将无法看到它的位置。你可以让它休眠5分钟,每隔10秒把Print放入OnTimer。这将回答你的问题。如果你可以简单地在任何其他函数中改变决定主算法模式的键,为什么要去睡觉?

 

大家好!


关于MT5的问题。文本标记(数字)以灰色细条的形式出现。这些圆点是一个控制缓冲区,用于在我的脑海中可视化MT5的漏洞....。


OBJ_TEXT 的文档相比,似乎是一样的....。

//| Вывод текстовой метки с размером интервала "тела" свечи          |
//+------------------------------------------------------------------+
void LabText(const long  chart_ID=0,
             string      name="Text", 
             string      text="text", // ТЕКСТ ДЛЯ ВЫВОДА НА ГРАФИК
             datetime    time=0, 
             double      price=0,
             int         fontsizes=0,
             color       clr=0)
  {
  if(ObjectFind(chart_ID,name)!=0)
     {
   ObjectCreate(chart_ID,name,OBJ_TEXT,0,0,0);
   ObjectSetInteger(chart_ID,name,OBJPROP_TIME,time);
   ObjectSetDouble(chart_ID,name,OBJPROP_PRICE,price);
//--- установим угол наклона текста 
   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,0.0); 
//--- установим способ привязки 
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_LEFT); 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   ObjectSetString(chart_ID,name,OBJPROP_FONT,"Arial");
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,fontsizes);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,true);
     }
  }

********************** В КОДЕ *********************************
    

    double  LW=iLow(NULL,PERIOD_H1,i);  //   ЦИКЛ I

                        *********** 

   LabText(0,"NAME  ("+string(i)+")",DoubleToString(bbull[i],0),iTime(NULL,PERIOD_H1,i),
              LW-(8*_Point),12,clrWhite);
   ExtLineBuffer1[i]=iHigh(NULL,PERIOD_H1,i);


 
kopeyka2:

大家好!


关于MT5的问题。文本标记(数字)以灰色细条的形式出现。这些圆点是一个控制缓冲区,用于在我的脑海中可视化MT5的漏洞....。


OBJ_TEXT 的文档相比,似乎是一样的....。


看看你在fontsizes参数中传递了什么?

 
Artyom Trishkin:

看看你在fontsizes参数中传递了什么?

谢谢你!!!我已经从全局变量 中放入了字体大小。在无效的 LabText 函数中设置它。它成功了...


 

我想用脚本在图表上 添加和删除指标,因为应用模板会删除所有绘制的线条。


#property indicator_label1  "MA8"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrBlue
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1


int indicator_handle;

void OnStart()
  {

   indicator_handle = iMA(0,0,8,0,MODE_EMA,PRICE_CLOSE);

   Print(indicator_handle);

   //ChartIndicatorAdd(0,0,indicator_handle);

   
  }

我得到的答复是

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) 无法加载指标 "移动平均线" [4302]

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) -1


不过,代码编译时没有错误。


 
psyman:

我想用脚本在图表上 添加和删除指标,因为应用模板会删除所有绘制的线条。


我得到的答复是

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) 无法加载指标 "移动平均线" [4302]

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) -1


虽然代码编译时没有错误。


误选的市场

4302

在MarketWatch中没有选择符号


为什么你要用0代替符号名称?如果你想要当前的,你必须写NULL,或者它的名字,例如 "EURUSD"。

iMA

返回移动平均线指标手柄。只有一个缓冲区。

intiMA(
绳子 符号//符号名称
ENUM_TIMEFRAMESperiod, // period
䵮䵮 ma_period, // 平均周期
䵮䵮 ma_shift, // 指示器横移
ENUM_MA_METHODma_method, // 平滑化的类型
ENUM_APPLIED_PRICE applied_price // 价格类型或手柄
);

参数

标志

[in] 将用于计算指标的仪器的符号名称。NULL 表示当前符号。

时间

[in] 周期值可以是ENUM_TIMEFRAMES 枚举中的一个值,0表示当前的时间框架。

阶段

[in] 移动平均数计算的平均周期。

硕士班

[in] 指标相对于价格图表的移动。

硕士方法

[in] 平均法。可以是ENUM_MA_METHOD 中的任何一个值。

应用价格

[in] 使用的价格。可以是ENUM_APPLIED_PRICE的 任何一个价格常数或另一个指标的句柄。

返回的值

返回 指定技术指标的句柄, 如果 失败则返回 INVALID_HANDLE IndicatorRelease() 函数用于释放计算机内存中不再使用的指标。

 
你好,请你告诉我如何使MA柄数组返回正常的价格,我的意思是他们应该的方式,5位小数,而不是8位
int OnInit()
  {
 ima1_handle        = iMA (Symbol(),0,14,0,MODE_EMA,PRICE_CLOSE);
 ima2_handle        =  iMA (Symbol(),0,64,0,MODE_EMA,PRICE_CLOSE);               //хендл
 Stoch_handle       = iStochastic (Symbol(),0,20,15,15,MODE_EMA,STO_CLOSECLOSE);//хендл
 ATR_handle         = iATR        (Symbol(),0,21);                              //хендл

   if(Digits==3 || Digits==5)
     {
      Slippage*=10;
      TrailingStop *= 10;
      TrailingStep *= 10;
     }
   return(0);
  }
void OnDeinit(const int reason)
  {

  }

void OnTick()
  { 
    double ima1_massiv [];                                          //динамический массив для быстрой машки
    ArraySetAsSeries(ima1_massiv, true);   
    int ima_count1 = CopyBuffer(ima1_handle,0,0,2,ima1_massiv);    //скопировал данные из 2х буферов быстрой машки
    //double ima1_normal = NormalizeDouble(ima1_massiv[0], Digits);
    string ima1_massiv_str0 = DoubleToString (ima1_massiv[0]);
    string ima1_massiv_str1 = DoubleToString (ima1_massiv[1]);
    printf ("сегодня = "+ ima1_massiv_str0 + " вчера = "+ ima1_massiv_str1);  
    
  }    
mt5语言
 
Sergey Lobzankin:
你好,请你告诉我如何使一个数组的MA手柄返回正常的价格,我的意思是他们应该的方式,小数点后5位,而不是8位。
if(Digits==3 || Digits==5)
     {
      Slippage*=10;
      TrailingStop *= 10;
      TrailingStep *= 10;
     }
   return(0);

酷)。

double normalMA=NormalizeDouble(MA,_Digits);    
 

你好,请你告诉我如何使一个数组的MA手柄返回正常的价格,我的意思是他们应该的方式,小数点后5位,而不是8位。

mt5语言

在mt5中的DoubleToStr,没有DoubleToString();但这并没有帮助
DoubleToStr - Преобразование данных - Справочник MQL4
DoubleToStr - Преобразование данных - Справочник MQL4
  • docs.mql4.com
DoubleToStr - Преобразование данных - Справочник MQL4