关于落实议员的讨论。 - 页 6

 
Ivan_Invanov:
你好。你能告诉我这个EA的入市 信号是什么,它在代码中的位置?

你将自定义指标的信号模块连接到线路中的

//--- available signals
#include <Expert\Signal\SignalMA.mqh>


在这里,你可以检查这个指标的交易信号


此时有足够的信息,你需要消化它。我还建议你阅读以下文章

Документация по MQL5: Стандартная библиотека / Модули стратегий / Модули торговых сигналов / Сигналы индикатора Moving Average
Документация по MQL5: Стандартная библиотека / Модули стратегий / Модули торговых сигналов / Сигналы индикатора Moving Average
  • www.mql5.com
Цена пересекла индикатор сверху вниз(цена Open анализируемого бара выше линии индикатора, а цена Close - ниже), но индикатор растет (слабый сигнал на отбой от линии индикатора). Цена пересекла индикатор нижней тенью (цены Open и Close анализируемого бара выше линии индикатора, а цена Low ниже) и индикатор растет (сигнал на отбой от линии...
 

伙计们,这里有一个问题

什么是正确的方式来做参数优化约束,使它们不至于相互攀比,有太多不必要的过冲。

input  int                Profit_Lev1        = 5;           // |     1-я фиксация прибыли 
sinput string _p1="";//---
input  int                Profit_Lev2        = 7;           // |     2-я фиксация прибыли 
sinput string _p2="";//---
input  int                Profit_Lev3        = 10;          // |     3-я фиксация прибыли


我们有3个获利水平,第1个不应该高于第2和第3个,第2个不应该高于第3个。

//+------------------------------------------------------------------+
//| Проверяет внешние параметры                                      |
//+------------------------------------------------------------------+
bool CheckInputParameters()
  {
     if(Profit_Lev1 >= Profit_Lev2  || Profit_Lev1 >= Profit_Lev3 || Profit_Lev2 >= Profit_Lev3)
       {
         Print(_Symbol,
               ": 1-й уровень профита ("+IntegerToString(Profit_Lev1)+") "
               "должен быть больше 2-го и 3-го уровня профита ("+IntegerToString(Profit_Lev2)+"   "+IntegerToString(Profit_Lev3)+")!");
         return(false);
        }                     
//--- Параметры корректны
   return(true);
  }

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  { 


//--- Проверим внешние параметры
   if(!CheckInputParameters())
      return(INIT_PARAMETERS_INCORRECT);


//--- Инициализаия прошла успешно
   return(INIT_SUCCEEDED);
  }


我开始优化

日志开始出现很多错误,可能是有什么东西重置了机器人


但问题是,机器人优化了20分钟,优化就停止了,尽管如果我不指定一个限制,让事情顺其自然,第一种情况可以高于第二种情况,那么优化完全可以运行一天以上。

我不知道我现在在做什么。 我希望我的TP按顺序走,不要互相跳过,因为每一级TP的算法中还有一些逻辑,以CUE的形式,在这些级别上转移CUE。

 
Konstantin Seredkin:

伙计们,这里有一个问题

什么是正确的方式来做参数优化约束,使它们不至于相互攀比,太多不必要的过冲。


我们有3个级别的获利,第一级不应高于第二级和第三级,第二级不应高于第三级。

引入的不是三个 "利润水平",而是 "基本水平"、"基本水平之上的第二水平 "和 "第二水平之上的第三水平"。

就这样了。我们做了一个完全的过冲。

如果我们想让所有三个级别都适合于某个固定的范围,那么我们引入变量 "范围宽度 "和两个 "级别之间的边界",其中第一个边界是范围的一部分,第二个边界是范围的剩余部分(第一个边界之后)的一部分。

我想这样做...

 
Georgiy Merts:

引入的不是三个 "利润水平",而是 "基础水平"、"高于基础水平的第二水平 "和 "高于第二水平的第三水平"。

就这样了。我们做了一个完全的过冲。

如果我们想让所有三个级别都适合于某个固定的范围,那么我们引入变量 "范围宽度 "和两个 "级别之间的边界",其中第一个边界是范围的一部分,第二个边界是范围的剩余部分(第一个边界之后)的一部分。

我想这样做...

如果我用第二和第三层检查第一层,或者用第一和第二层检查第三层,有什么区别吗,因为意义是一样的。
 
Konstantin Seredkin:
所以从总和的位置变化来看,我将第一层与第二层、第三层检查的区别,即第三层与第一层、第二层检查的区别,其意义是一样的。

当第一层大于第二层时,你有无效的参数,等等,在建议的版本中,这些检查将消失,所有的集合将是正确的。

 
Konstantin Seredkin:
那么,如果我用第二和第三层来检查第一层,或者用第一和第二层来检查第三层,会不会有什么区别,意义是一样的。

这个问题有点像如何越过 "不重叠"。如果第一层是,例如,10%的范围--第二层是不可能爬上去的,因为它是在其余90%的范围内测量的。

 
Georgiy Merts:

这个问题有点像如何越过 "不重叠"。例如,如果第一级是范围的10%--那么第二级就不可能爬到里面去,因为它是在剩余的90%里测量的。

我还是不明白。

这不仅是静态变量,也是外部变量,我在其中设置了3个获利


机器人交易3手

在100点中,我想关闭1手=这是第一层的利润

200手以上=第二层利润

300手以上=第三层次的利润


但在第一层,机器人设置的止损是Breakeven。

在第二层,它将这个止损点转移到第一层的利润。

如果没有盈亏平衡,那么优化器如何选择这些级别就不重要了,即使第一个级别是300分,第二个是50分,第三个是150分。

但盈亏平衡法需要一个精确的顺序,所以我不希望优化器像这样挑选它们

300 50 150

50 300 150

等。

我只希望它能正常进行。

50 100 200

150 160 170

等。

检查输入参数的正确性

//+------------------------------------------------------------------+
//| Проверяет внешние параметры                                      |
//+------------------------------------------------------------------+
bool CheckInputParameters()
  {
     if(Profit_Lev1 >= Profit_Lev2  || Profit_Lev1 >= Profit_Lev3 || Profit_Lev2 >= Profit_Lev3)
       {
         Print(_Symbol,
               ": 1-й уровень профита ("+IntegerToString(Profit_Lev1)+") "
               "должен быть больше 2-го и 3-го уровня профита ("+IntegerToString(Profit_Lev2)+"   "+IntegerToString(Profit_Lev3)+")!");
         return(false);
        }                     
//--- Параметры корректны
   return(true);
  }

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  { 


//--- Проверим внешние параметры
   if(!CheckInputParameters())
      return(INIT_PARAMETERS_INCORRECT);


//--- Инициализаия прошла успешно
   return(INIT_SUCCEEDED);
  }

在优化时,有写到在一堆运行中出现了跳动,好在它重置了不能应用的设置,但优化器工作了几分钟后就关闭了。

我想这个支票必须以其他方式来玩。

如果没有你所说的例子,我无法弄清楚你的建议。

 
Konstantin Seredkin:

我还是不明白。

不仅仅是静态变量,还有外部变量,我设置了3个获利的 变量,进入了


机器人正在交易3手

在100点中,我想关闭1手=这是第一层的利润

200手以上=第二层利润

300手以上=第三层次的利润


但在第一层,机器人设置的止损是Breakeven。

在第二层,它将这个止损点转移到第一层的利润。

如果没有盈亏平衡,那么优化器如何选择这些水平就不重要了,即使第一个水平是300分,第二个是50分,第三个是150分。

但盈亏平衡法需要一个精确的顺序,所以我不希望优化器像这样挑选它们

300 50 150

50 300 150

等。

我只希望它能正常进行。

50 100 200

150 160 170

等。

检查输入参数的正确性

在优化时,有写到在一堆运行中出现了跳动,好在它重置了不能应用的设置,但优化器工作了几分钟后就关闭了。

我想这个支票必须以其他方式来玩。

如果不举例,我无法弄清你的建议。

在输入中,不要设置水平本身,而是设置它们之间的距离。

input uint firstLevel=20 ; // пунктов от цены до первого ТП

input uint secondDistance=30; // пунктов от первого ТП до второго

input uint thirdDistance=50; // пунктов от второго ТП до конечного

那么优化器在物理上将无法交换水平

 

下午好,有一些人在mt4上远程设置了一个EA,可以自动交易,在yandex云的vm机器上。如果我没有弄错的话,我将能够在我的硬盘上获得一份游戏的副本,并使其发挥作用。Cp

P.s 对不起,我的语言很晦涩,我不明白这些东西的术语和本质。

 

下午好!

我已经决定写一个EA。在这方面,有必要改变将被EA用来打开订单的信号。例如,指标DeMarker - 我希望我的专家顾问只在该指标从下到上越过0.3(买入)和从上到下越过0.7(卖出)时开出订单。我是否正确理解了我需要纠正 SignalDeMarker.mqh文件(带有 "投票 "的代码部分,价格将增长。和 "投票 "价格将下降。)?