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

 
Tretyakov Rostyslav #:

如果发生关闭条件

//-------------------------------------------------------------------+  Команда на закрытие сетки ордеров
   if((CountTrade(0) > 1 && CalculiteProfit() >= 0 && OrderGroupCloseSignal()==0)||(CountTrade(1) > 1 && CalculiteProfit() >= 0 && OrderGroupCloseSignal()==1))
     {
      flag_close=1;
     }

这里的条件是 CalculiteProfit()>=0。在这种情况下,我们可以计算出这些头寸 的必要利润是多少,并 根据价格和头寸设置止盈或止损。 由于买入和卖出头寸是以不同的价格关闭的,这只适用于相同类型的头寸。

 
Andrey Sokolov #:

这里的条件CalculiteProfit()>=0,在这种情况下,你可以计算出这些头寸 的必要利润是多少,并 在那里设置一个获利。

不是我)

EVGENII SHELIPOV 是《条件》的作者。

 

问候。你能给我一个提示吗?

在mt5机器人中,我需要在图表上放一条类似移动平均线 的曲线。有没有比用物体雕刻更 "文明 "的方法,如果有,是什么?

 
Andrey Sokolov #:

问候。你能给我一个提示吗?

在mt5机器人中,我需要在图表上放一条类似移动平均线 的曲线。有没有比用物体雕刻更 "文明 "的方法,如果有,是什么?

是的--展示它
 
Artyom Trishkin #:
是的--自己输出

这里的关键词是 "喜欢"。那里有你自己的数据,而不是来自第三方指标。

 
Andrey Sokolov #:

问候。你能给我一个提示吗?

在mt5机器人中,我需要在图表上放一条类似移动平均线 的曲线。有没有一种比从物体上提取更 "文明 "的展示方式?

在CCanvas上绘制数值。

 
Andrey Sokolov #:

这里的关键词是 "喜欢"。那里有你自己的数据,而不是来自第三方指标。

制作一个指标并将其添加为 #资源
 

你好。你能给我一个提示吗?交易终端 有这样一个概念,即ALERT。也就是说,我们把它放在价格表,并为达到这个价格设定条件但事实证明,它是一次性的。交易机器人不是一次性的,当前的价格也不是固定的,也就是说,机器人不会改变其状态。

 
valentin104 交易终端 有这样一个概念,即ALERT。也就是说,我们把它放在价格表,并为达到这个价格设定条件但事实证明,它是一次性的。其顺序与警报相似,但它们是可重复使用的,也就是说,它们一直在工作,直到它们被停用。

// использовать алерт
input bool alert = true;
// уровень срабатывания
input double trigLv = 0.0;
// отклонение от trigLv в пунктах
input int deviation = 30; 


// функция взята из https://www.mql5.com/ru/docs/basis/types/double
bool EqualDoubles(double d1,double d2,double epsilon)
  {
   if(epsilon<0) 
      epsilon=-epsilon;
//---
   if(d1-d2>epsilon) 
      return false;
   if(d1-d2<-epsilon) 
      return false;
//---
   return true;
  }

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {
  return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[]
) {
  static bool triggered = false;
  static datetime time_ = 0;
  if (!alert)
    return rates_total;
  if (EqualDoubles(trigLv, close[0], deviation * SymbolInfoDouble(NULL, SYMBOL_POINT))) { // сравнение цены Close с trigLv
    if (time_ != time[rates_total - 1])
      time_ = time[rates_total - 1];
    else
      return rates_total;
    if (!triggered)
      Alert("Level ", NormalizeDouble(trigLv, (int)SymbolInfoInteger(NULL, SYMBOL_DIGITS)), " triggered!");
    triggered = true;
  }
  else
    triggered = false;
  
  return rates_total;
}

该代码是针对MQL5的。该功能是基于假设指标具有与MQL5中相同的功能,并且在MQL5中是基于与MQL5中相同的功能。

附加的文件:
Alert.mq5  5 kb