检查--我做错了什么? - 页 6

 
Nikolai Semko #:

是的,纳塔利娅--那只是一个 "当他们为一行代码付钱给你 "的备忘录。

这就是程序员的幽默感。


在你的情况下,你不需要一个函数。

你只需要形成变量Volume1 ...Volume10首先形成一个数组Volume[10]
,然后用索引n来指代它的项目volume[n]。
不要担心--几乎每个程序员都经历过这种情况。
最主要的是,你真的喜欢编程。我可以感觉到它。
所以你会走得很远。

告诉我怎样才能写得好。我不想重复数组的代码。
专家顾问使用2个指标。
和开单条件现在看起来是这样的。

if (Indicator1 > 0 && Indicator2 > 0)
{
OrderSend
}


但我想在设置中添加一个过滤器
使用或不使用1或2个指标
只是我不知道如何更正确地实现它。
它看起来会是这样的。

if (Indicator1 && Indicator1 > 0)
{
if (Indicator2 && Indicator2 > 0) || (Indicator2 == false)
{
///
}
}



if (Indicator2 && Indicator2 > 0)
{
if (Indicator1 && Indicator1 > 0) || (Indicator1 == false)
{
///
}
}
这样我就可以在设置中禁用1个指标或第二个指标。
想不出如何在不复制大量代码的情况下做到这一点,.....
 
Natalya Smirnova #:

请告知如何写得好。因此,为了不重复编码阵列。
专家顾问使用2个指标。
和开单条件现在看起来是这样的。


但我想添加过滤器
使用或不使用1或2个指标
只是我不知道如何更正确地实现它。
它将看起来像这样。

我可以在设置中关闭一个指标或其他指标。
想不出如何在不复制大量代码的情况下做到这一点,.....

我在这里写了一些关于它的内容:https://www.mql5.com/ru/forum/6343/page1384#comment_26447195

 
JRandomTrader #:

我在这里写过一些关于这个问题的文章:https://www.mql5.com/ru/forum/6343/page1384#comment_26447195

谢谢你,我去做一些研究了。
 

Natalya Smirnova #:

所以我可以在设置中禁用一个指标或第二个指标。
我想不出如何在不复制大量代码的情况下做到这一点.....。


input bool indicator_1 = true;
input bool indicator_2 = true;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool F_1()
    {
     if(!indicator_1)
          return true;
// выполнение условий

//---
     return false;
    }
bool F_2()
    {
     if(!indicator_2)
          return true;
// выполнение условий

//---
     return false;
    }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart(void)
    {
     if(F_1 && F2) /* работаем */ ;
    }

在函数中写出指标的条件,如果不应该被检查,那么条件就满足了。返回TRUE

 
Natalya Smirnova #:

请告知如何写得好。因此,为了不重复编码阵列。
专家顾问使用2个指标。
和开单条件现在看起来是这样的。


但我想添加过滤器
使用或不使用1或2个指标
只是我不知道如何更正确地实现它。
它将看起来像这样。

我可以在设置中禁用1个指标或第二个指标。
想不出如何在不复制大量代码的情况下做到这一点,.....

但使用条件的变量和指标输出值的变量应该是不同的变量。
而如果使用条件的变量将是ind_1和ind_2,那么,例如,你可以这样做。

ind_1 = !(ind_1 && !(Indicator1>0));
ind_2 = !(ind_2 && !(Indicator2>0));
if (ind_1 && ind_2) { OrderSend... };
以防万一:感叹号意味着bool值的反转
 
Nikolai Semko #:

不过,使用条件的变量和指标输出值的变量应该是不同的变量。
而如果使用条件的变量将是ind_1和ind_2,那么,例如,我们可以这样做。

ind_1 = !(ind_1 && !(Indicator1>0));

逻辑表达中大量的括号和反转表明,我们可以简化...

PS/从建筑学的角度看,它总体上是个渣滓。如果指标读数可以在没有任何交易因素的情况下进行分组(不管你在哪里开什么),那么它就是一个指标,与机器人的交易逻辑无关。它必须被呈现出来并可用于分析。

 
Maxim Kuznetsov #:

逻辑表达中大量的括号和反转表明它可以被简化。

也许。
逻辑学的选择有哪些?
0 0 = 1
0 1 = 1
1 0 = 0
1 1 = 1
除 !(a && !b)
谁能找到更短的逻辑...

 
Maxim Kuznetsov #:

PS/从建筑学上讲,它是一个渣滓。如果指标读数可以在没有任何交易因素的情况下被分组(不管你在哪里开什么),那么它就是一个指标,没有资格出现在机器人的交易逻辑中。它必须被呈现出来并可用于分析。

我不明白这一点。
只是回答了一个问题。不是更多。
 
Nikolai Semko #:
也许。
逻辑学的选择有哪些?
0 0 = 1
0 1 = 1
1 0 = 0
1 1 = 1
除 !(a && !b)
谁能找到一个更短的逻辑...

!a || b

:)

 
PapaYozh #:

!a || b

:)

对。
谢谢你:))
有趣的是。试图附加XOR,却忘记了OR。

因此,一个简短的版本:
ind_1 = !ind_1 || Indicator1>0;
ind_2 = !ind_2 || Indicator2>0;
if (ind_1 && ind_2) { OrderSend... };
或单行版本,保留原ind_1和ind_2

if ((!ind_1 || Indicator1>0) && (!ind_2 || Indicator2>0)) { OrderSend... };