初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 589

 
admoon:



インジケータを順次確認していくと、if {}の後ろのサブルーチンでバウンスしており、その中にWがないことが判明しました。ここでは、そのポイントを明確にするために、簡略化したコードを紹介します。

//--- 入力パラメータ

入力 int w=10;

//---

{

int i;

//---

int co=0;

for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}

//--- 次の呼び出しのために prev_calculated の値を返す

return(rates_total);

}

結果(arlets)。

2016.05.30 00:45:14.064 1 (ユーラスド,H1) 11

2016.05.30 01:10:35.972 1 (ユーラスド,H1) 10

2016.05.30 00:45:14.064 1 (ユーラスド,エイチワン) 1

ルール:括弧内の式が真であれば、演算子1が実行される。

コード中:operator1がALWAYSで実行される。

if()は括弧内の条件が真であるときに一度だけ動作するようにすればいいと思います。しかし、実際にはチェックごとに発生するため、{}内の式はすべて各ステップで実行され、マシンタイムを噛んでしまう。

質問:ループ中にCO変数が0から11に成長したのはなぜですか?なぜ、ステップごとにAlertが発動するのですか?

何度言えばわかるんだ?

Look: you have w equal to 10,
You check w for 10: "if(w==10){co++;Alert(co);}" この式は真だと思いますか?
では、なぜそのような質問をするのでしょうか?

 
admoon:



インジケータを順次確認していくと、if {}の後ろにあるサブルーチンで、Wがないバウンスを検出しました。ここでは、この問題を明確にするために、簡略化したコードを紹介します。

//--- 入力パラメータ

入力 int w=10;

//---

{

int i;

//---

int co=0;

for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}

//--- 次の呼び出しのために prev_calculated の値を返す

return(rates_total);

}

結果(arlet)。

2016.05.30 00:45:14.064 1 (ユーラスド,H1) 11

2016.05.30 01:10:35.972 1 (ユーラスド,H1) 10

2016.05.30 00:45:14.064 1 (ユーラスド,H1) 1

ルール:括弧内の式が真であれば、演算子1が実行される。

コード中:operator1がALWAYSで実行される。

if()は括弧内の条件が真であるときに一度だけ動作するようにすればいいと思います。しかし、実際にはチェックごとに発生するため、{}内の式はすべて各ステップで実行され、マシンタイムを噛んでしまう。

質問:ループ中にCO変数が0から11に成長したのはなぜですか?なぜ各ステップでAlertが発生するのですか?

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

アンドレイ・バリノフ さん 2016.05.30 10:38

どうやらコードにタイプミスがあるようで、このように書きたかったのでしょう。

int i;
//---
   int co=0;
   for(i=0;i<=w;i++)
     {
      if(i==10)
        {
         co++; 
         Alert(co);
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);

 
ハロー、ジェントルマン私はEAを書く のに小さな問題を抱えている((EAは保留中の注文をほとんど大丈夫を開きますが、時々私は非常に現在の価格に近い注文を開く必要があるので、どのように可能な限り近くに保留中の注文を開くだろう処方する?
 
barudkinarseniy:
ハロー、ジェントルマンEAを書くときに ちょっとした問題があります(( EAが保留注文を開くのはほとんど問題ないのですが、時々現在の価格に非常に近い注文を開く必要があるので、できるだけ近い保留注文を開くように処方するにはどうしたらいいですか?
私はそれを得たと思う)誰かが興味を持っている場合は、次のように動作します。
 double ilow = iLow(Symbol(),TimeFrames_3,1);
 double ihigh = iHigh(Symbol(),TimeFrames_3,1);
 
 double OpenPriceBuy = NormalizeDouble(MathMax(ihigh,Ask + Point*SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL)),Digits);
 double OpenPriceSell = NormalizeDouble(MathMin(ilow,Bid - Point*SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL)),Digits);
 
 int StepST = (int)MathMax(OpenPriceBuy - OpenPriceSell,SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL));
 double lots = LotsByRisk(StepST);
 
Artyom Trishkin:

何度言えばわかるんだ?

見てください。wが10に等しいとします。
wが10に等しいかどうかをチェックします。「if(w==10){co++; Alert(co);}」この式は正しいと思いますか?
では、なぜそのような質問をするのでしょうか?

くだらない質問で申し訳ありませんが、ご理解のほどよろしくお願いします。プローブを機械的に動かしてがっかりした if(w==10){Alert(I,"/",F); プログラムを通して、ステップのエラーを探した。自分の無知が原因で壁にぶつかることもありますが、しばらくその問題から離れれば、問題は解決するものです。あなたが「ジャリジャリする」と感じているものは、実はプログラムの別の部分からの説明不要の要求であることが判明したのです。ウラジミールさん、ありがとうございました。

 

こんにちは、数学のお手伝いをお願いします。

最初の位置のロットがわかっていて、新しい位置のロットが等差数列的に増加する場合、5番目の位置のロットはどうなるかを知る方法。

2つ目の選択肢は、ロットが幾何級数的に 増加することです。

 
mila.com:

こんにちは、数学のお手伝いをお願いします。

最初の位置のロットがわかっていて、新しい位置のロットが等差数列的に増加する場合、5番目の位置のロットはどうなるかを知る方法。

2つ目の選択肢は、ロットが幾何級数的に増加することです。

Googleから追放されたのですか?すみません、どうしてそんなに残酷なんですか?))

算術進行は数式で定義されます。

という式で表されます。

 

よくわからないのですが、理論的には最初のバリエーションは最初のロットを5倍すればいいのですが、スタートロットで増えた場合

2番目の選択肢:最初のポジションのロット*倍率*5 ...ただし

 
mila.com:

最初のオプションは、理論的には最初のロットを5倍すれば十分なのですが、よくわかりません。

2番目の選択肢の場合、最初の位置のロット×係数×5 ...ですが

大丈夫です、自分も学生時代から数学は忘れていました ))数学の本を引っ張り出してきて、算術の定義を打ち直し、進行していく。

-------------

2番目から順に、前の数列に定数dを加えて得られる数列で、算術数列の差分と呼ばれる。

第1項をa1とすると、長さnのarith.prog.は次のような形になります。

a1, a1+d, a1+2*d, ..., a1+n*d

MQLのコードはこんな感じです、簡単な例を作ってみました。

#define  LEN 5 // задали длину последовательности

int start()
{
    int d = 4;    // это разность, любое значение
    int a[LEN];   // тут храним ариф. посл.
    a[0] = 3;     // любое стартовое значение, задаете сами
    Print(0, "  ", a[0]);

    for (int n = 1; n < 4; n++)
    {
       a[n] = a[0] + (n*d);
       Print(n, "  ", a[n]);
    }
}

2016.05.31 23:08:52.433 ChangeTimeFrame EURUSD.e,M1: 3  15
2016.05.31 23:08:52.433 ChangeTimeFrame EURUSD.e,M1: 2  11
2016.05.31 23:08:52.433 ChangeTimeFrame EURUSD.e,M1: 1  7
2016.05.31 23:08:52.433 ChangeTimeFrame EURUSD.e,M1: 0  3
 
Alexey Volchanskiy:

大丈夫です、私自身、数学は学生時代から忘れていました ))

散歩に行ってから、ジオメトリプログラムの コードを書こうと思っています。
理由: