チェック - 何がいけなかったのか? - ページ 6

 
Nikolai Semko #:

はい、ナタリア - それはちょうど「コードの行のために彼らがあなたにお金を払うとき」ミームでした。

プログラマーには、そういうユーモアがあるんです。


あなたの場合、ファンクションは必要ありません。

変数 Volume1 ... を作成するだけです。Volume10 最初に配列 Volume[10]
を作成し、インデックス n を使ってその項目 Volume[n] を参照する。
心配しないでください。ほとんどすべてのプログラマがこのような経験をし ています。
要は、プログラミングが本当に好きかどうかということです。感じることができます。
だから、遠くまで行けるんですね。

きれいな書き方を教えてください。配列のコードを重複させたくない。
Expert Advisorは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つのインジケータまたは2つ目のインジケータを無効にできるようにしました。
大量のコードをコピーせずに行う方法がわからない......。
 
Natalya Smirnova #:

どうすればきれいに書けるか、アドバイスをお願いします。コードの配列が重複しないように。
Expert Advisorは2つの指標を使用しています。
、注文開始の条件は現在このようになっています。


しかし、私はフィルタ
1つまたは2つの指標を使用するかしないかを追加したいと思います
ただ、私はより正しくそれを実装する方法を知りません。
こんな感じでしょうか。

設定で1つのインジケーターか他のインジケーターをオフにできること。
大量のコードをコピーせずに行う方法がわからない......。

こちらにも少し書いています:https://www.mql5.com/ru/forum/6343/page1384#comment_26447195

 
JRandomTrader #:

このテーマについては、こちらにも少し書いています: https://www.mql5.com/ru/forum/6343/page1384#comment_26447195

ありがとうございます、ちょっと調べてきます。
 

Natalya Smirnova #:

ので、設定で1つのインジケータまたは2つ目のインジケータを無効化することができます。
大量のコードをコピーしないと、どうすればいいのかわからない......。


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 #:

どうすればきれいに書けるか、アドバイスをお願いします。コードの配列が重複しないように。
Expert Advisorは2つの指標を使用しています。
、注文開始の条件は現在このようになっています。


しかし、私はフィルタ
1つまたは2つの指標を使用するかしないかを追加したいと思います
ただ、私はより正しくそれを実装する方法を知りません。
こんな感じでしょうか。

設定で1つのインジケーターまたは2つ目のインジケーターを無効化できたこと。
大量のコードをコピーせずに行う方法がわからない......。

ただし、使用条件の変数と指標の出力値の変数は別の変数にする。
そして、使用条件の変数が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 #:

追記/建築的にはスラッグです。もし、インジケーターの読みが取引要素なしにグループ化されるなら(どこで何を開いたかは関係なく)、それはインジケーターであり、ロボットの取引ロジックにはふさわしくないのです。レンダリングして解析できるようにしなければならない。

私には理解できなかった。
質問に答えるだけ。それ以上ではありません。
 
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... };