摩尔斯电码

 

EA的本质是设置某些蜡烛的组合。规则是:一根看涨的蜡烛意味着 "1",一根看跌的蜡烛意味着 "0"。因此,只需指定 "101",就可以搜索到这样的烛台组合。

摩尔斯电码

到目前为止,问题出在组合的编码表示上--你不能在输入参数中以二进制形式指定一个数字。

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

摩尔斯电码

Vladimir Karputov, 2017.04.06 10:25

到目前为止,莫尔斯码版本 "1.003":你可以手动设置模式的字符串描述,甚至在测试器中运行单次通过。

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

摩尔斯电码

Vladimir Karputov, 2017.04.07 08:42

莫尔斯码版本 "1.005"

...

解决了两个问题。

1).用户在输入参数中看到的图案是 "0101"。

方便地查看输入参数

2).输入参数在测试器中得到了完美的优化。



 
Vladimir Karputov:

EA的本质是设置某些蜡烛的组合。规则是:一根看涨的蜡烛意味着 "1",一根看跌的蜡烛意味着 "0"。因此,只需指定 "101",就可以搜索到这样的烛台组合。

虽然问题出在组合的编码表示上--在输入参数中,我们不能以二进制形式指定数字。


你可以通过文本,然后解析字符串....
 

(这很酷)。

在输入参数中,你可以指定小数形式的数字。而且它还可以转换为二进制,或者已经作为二进制符号的序列,通过单独拉出每个位来使用。就这么简单))。


 
Vladimir Pastushak:

你可以发短信,然后取消配对,....。

作为一个粗略的草案,我是这样做的,再加上各种检查--对字符串的长度和确保只有字符'0'和'1'在字符串中。但是有一个新的问题:这样的字符串不能在优化模式 的测试器中运行:)。
 
Aliaksandr Hryshyn:

(这很酷)。

在输入参数中,你可以指定小数形式的数字。而且它还可以转换为二进制,或者已经作为二进制符号的序列,通过单独拉出每个位来使用。这很简单))。



可以将其设置为二进制参数,但不可能在输入参数中以二进制的形式呈现。

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

二进制形式的输入参数

Vladimir Karputov, 2017.04.05 09:24

例子来自帮助char、short、int和long类型

... 对于整数变量,可以使用B前缀以二进制形式指定数值。例如,你可以将一个交易时段的工作时间编码为一个int类型的变量,并根据所需的算法使用相关信息。

//--- для рабочих часов ставим 1, для нерабочих указываем 0 
   int AsianSession   =B'111111111'; // азиатская сессия с 0:00 часов до 9:00 
   int EuropeanSession=B'111111111000000000'; // европейская сессия  9:00 - 18:00 
   int AmericanSession =B'111111110000000000000011'; // американская 16:00 - 02:00 


但是,以二进制形式指定输入参数(正好是11111111000000000 的形式)。

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                                      Copyright 2017, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property script_show_inputs
//--- для рабочих часов ставим 1, для нерабочих указываем 0 
input int AsianSession=B'111111111'; // азиатская сессия с 0:00 часов до 9:00 
input int EuropeanSession=B'111111111000000000'; // европейская сессия  9:00 - 18:00 
input int AmericanSession=B'111111110000000000000011'; // американская 16:00 - 02:00 
//---
string text="10";
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
//---

  }
//+------------------------------------------------------------------+

将不会起作用--在输入参数中,数字的二进制表示法被转换为普通数字。

输入参数


问题:有没有办法将输入参数中的值精确地设置为二进制形式(这样用户就不会看到一个数字,而只是一个二进制表示,如1111111111000000000)?


 
对于收盘==开盘的蜡烛,情况似乎不是很可靠
并建议选择-1 0 1
其中0适用于任何方向
 
Vladimir Karputov:

我是这样做的,作为草稿,加上各种检查--检查字符串的长度,并确保字符串中只有字符'0'和'1'。但是有一个新的问题:这样的字符串不能在优化模式的 测试器中运行:)。


使输入参数为int类型,然后将int类型改为字符串并解析....。

 
Sergey Dzyublik:
对于收盘==开盘的蜡烛,情况似乎不是很可靠
并建议选择-1 0 1
其中0对任何方向都好

我拒绝了Close == Open的变体,因为它不可靠--这样的蜡烛没有方向。
 
什么是INT?
它只通过字符串或数组。
 
Vladimir Karputov:

你可以把它设置为二进制形式的参数,但你不能用二进制形式的输入参数来表示它。


我写道,你可以把它设置成十进制的形式,作为一个普通的整数,然后从中抽取个别的比特。
 
Vladimir Karputov:

我已经放弃了 "收盘==开盘 "的选项,因为它不可靠--这样的蜡烛没有方向。

那么,我们就需要通过流体图来 考虑所有的变体。
因为被抛出的那个可以在-30秒的时间范围内给出一个完整的方向