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

 
freemovpalm #:

大家好,请帮助我在EA中加入马丁格尔,我需要在触发止损(获得损失)后,在新的信号(猫头鹰通过指标工作)时,以增加的手数(乘以系数)进入。我的理解是否正确,首先我需要写出事件--stoploop事件(我不知道在哪里和如何写),并在那里用很多做数学题(我需要额外的变量)?

例如,添加一个变量--连续亏损交易的计数器。在每次亏损的交易中--增加1,在每次盈利的交易中--重置为0。

并从这个计数器设置手数(例如--按这个计数器的比例将最小手数乘以2)。

但马丁格尔法不会使一个失败的策略变得有利可图。

 
JRandomTrader #:

例如,添加一个变量--连续亏损交易的计数器。在每次亏损的交易中,它都会增加1,在每次盈利的交易中,它都会重置为0。

并从这个计数器中设定手数(例如,将最小手数乘以2,达到这个计数器的范围)。

但马丁格尔法不会使一个失败的策略变得有利可图。

谢谢,该策略平均2次,最多连续亏损4次,这就是我想要一个马汀的原因。顺便问一下,谁有这样一个计数器或猫头鹰的例子,其工作原理与我描述的相同?我可以直接从那里复制必要的行。

 
string Button_TP = "Panel.String1.Button3";

Print(ObjectGetInteger(0, "Panel.String1.Button3", OBJPROP_STATE));
Print(ObjectGetInteger(0, Button_TP, OBJPROP_STATE));

你能告诉我为什么第一个选项有效而第二个选项无效吗?按钮的名称不能被设置为一个变量吗?

 

测试人员如何能自动通过几对?
例如,我需要通过20对。现在我重新启动每一对的测试器。
我搞不清楚如何制作一个 变量。

有什么解决办法吗?

 
Evgeny Dyuka #:

测试人员如何能自动通过几对?
例如,我需要通过20对。现在我重新启动每一对的测试器。
我搞不清楚如何制作一个 变量。

你有什么解决办法吗?

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

如何在Strategy Tester中接收选定的货币对进行市场审查?

Alexey Viktorov, 2022.04.14 17:11

你不能在策略测试器中使用MarketWatch终端。测试员从已从程序中请求属性的符号 中生成自己的MarketWatch因此,要形成一个MarketWatch,你需要请求所需符号的任何属性

sinput  string  Symb  = "GBPUSD,GBPAUD,GBPCAD,GBPJPY,EURUSD,EURGBP,EURAUD,EURCAD,EURJPY,AUDUSD,AUDNZD,AUDCAD,AUDJPY,NZDUSD,NZDCAD,USDCAD,USDJPY"
string s_arr[];
int OnInit()
{
  int i = 0, symbPos = 0;
  if(StringSplit(Symb, ',', s_arr) <= 0)
   {
    Print(__FUNCTION__ + " Error converting !");
    return(INIT_FAILED);
   }
  while(symbPos >= 0  && !IsStopped())
   {
    if(!SymbolInfoInteger(s_arr[i], SYMBOL_SELECT) || !SymbolInfoInteger(s_arr[i], SYMBOL_VISIBLE))
      SymbolSelect(s_arr[i], true);
    double price = SymbolInfoDouble(s_arr[i], SYMBOL_ASK);
    i++;
   }
 return(INIT_SUCCEEDED);
}/*******************************************************************/

我希望我在从我的程序中提取代码时没有犯错...


 
Evgeny Dyuka #:

测试人员如何能自动通过几对?
例如,我需要通过20对。现在我重新启动每一对的测试器。
我搞不清楚如何制作一个 变量。

有什么解决办法吗?

如果我们通过一个EA参数来定义一个配对,而这个参数在优化过程中可能会发生变化,那么我们只需通过这个参数来运行优化,就可以开始对几个配对进行传递。
这个参数不能是 "字符串 "类型,但可以是 "int "或 "enum "类型。
使用这个参数,在初始化EA时,我们把与该参数值相对应的所需符号的名称分配给另一个字符串变量。
在EA代码中,你将不得不用你自己的变量来代替Symbol()或_Symbol,并将其命名为对。

你了解这个原理吗,还是需要一个代码例子?

 
Evgeny Dyuka #:

测试人员如何能自动通过几对?
例如,我需要通过20对。现在我重新启动每一对的测试器。
我搞不清楚如何制作一个 变量。

有什么解决办法吗?

SaberMultitester 是一个解决方案,你可以通过工具和设置在那里设置通行证。

Библиотеки: MultiTester
Библиотеки: MultiTester
  • 2019.07.19
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: MultiTester
 
Yuriy Bykov #:

如果一个配对是由EA参数定义的,在优化过程中可以改变,那么为了运行一个多配对通道,我们只需通过这个参数运行优化。
这个参数不能是 "字符串 "类型,但可以是 "int "或 "enum "类型。
使用这个参数,在初始化EA时,我们把与该参数值相对应的所需符号的名称分配给另一个字符串变量。
在EA代码中,凡是使用Symbol()或_Symbol的地方,我们将不得不用我们自己的变量来代替它,并加上对的名称。

你了解这个原理吗,还是需要一个代码例子?

很好!我没有想到要通过优化器。

 
Yuriy Bykov #:

如果一个配对是由EA参数定义的,在优化过程中可以改变,那么为了运行一个多配对通道,我们只需通过这个参数运行优化。
这个参数不能是 "字符串 "类型,但可以是 "int "或 "enum "类型。
使用这个参数,在初始化EA时,我们把与该参数值相对应的所需符号的名称分配给另一个字符串变量。
在EA代码中,凡是使用Symbol()或_Symbol的地方,我们将不得不用我们自己的变量来代替它,并加上对的名称。

原理是否清楚,或者你需要一个示例代码?

那OnTick()呢?
我可以在任何地方替换我自己的符号,但OnTick()将总是从测试器运行的符号 中获取。
来自帮助:"
OnTick()事件的产生。当收到一个符号的新刻度线时专家顾问就会连接到该图表 上"。

这里不可能有冲突?例如,外汇在周末被止损,但加密货币却没有。

 
是的,这是个问题。我没有从事过加密货币的工作,所以我没有想过允许交易期的差异。但可以在测试器中把一些加密货币作为工作符号,并在专家顾问中添加(或保留)允许交易的检查。之后,主要问题是不同工具的tick到达时间的不一致。在这里,我们可以尝试选择有更多刻度线的仪器,以减少测试结果的误差。在附属于一个图表的多货币专家顾问系统中,情况将是一样的--OnTick()只针对主要符号被触发。为了正确跟踪不同符号的新条形图的事件,在这种情况下,我使用我的库新条形图事件
New Bar Event
New Bar Event
  • www.mql5.com
Позволяет определить наступление события нового бара в мультивалютном советнике. В вызове OnTick() можно многократно проверять, наступило ли на этом тике событие для нужного инструмента (symbol) и периода графика (timeframe).
原因: