MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 896

 
ruslan:

OPENCL の cl_ インラインに定数があり、それは #define CL_DBL_MAX と同じです。 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 1024の2の次数の再確認ができました。2^1024 = 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216 そして、その下にはπの数

#define CL_M_PI 3.1415926535893115998

3.141592653589793238462643383279502884197169

なぜなんだ?

https://ru.wikipedia.org/wiki/Число_двойной_точности

Число двойной точности — Википедия
  • ru.wikipedia.org
Числа с плавающей запятой (двойной/одинарной/четверной точности) поддерживаются сопроцессором (до 80486SX, включительно, выполнен как отдельный модуль-0х87/0х287/0х387/0х487, начиная с 80486DX является встроенным в главный процессор. Сопроцессор, хотя он сейчас и является частью главного процессора, принято называть FPU — Floating Point Unit...
 
mcl4で以前のバーの残高値を取得することは可能ですか?コードにどう書けばいいのでしょうか?
 
私のインジケーターは、ボタンを押してから±1秒の遅延があります。MQL5

パネルの操作と更新のために、以下のイベントハンドラを追加しています。
- ボタンクリックを処理するOnChartEvent
- パネルデータ更新のためのOnTimer

コード全体は750行以上ですが、いくつかのループがあるだけで、1つはインジケータウィンドウの更新用、他の3つはパスの数が少ないです(最大10 * 4)

OnChartEvent if(id ==CHARTEVENT_OBJECT_CLICK) の後のコードのこの部分は、著しく遅いです。
if(go == "E")
     {
      if(ObjectGetInteger(ChartID(),no,OBJPROP_STATE) == true)
        {
         ObjectSetInteger(ChartID(),no,OBJPROP_COLOR,cpanel);
         ObjectSetInteger(ChartID(),no,OBJPROP_BGCOLOR,ctext);
        }
      else
        {
         ObjectSetInteger(ChartID(),no,OBJPROP_COLOR,ctext);
         ObjectSetInteger(ChartID(),no,OBJPROP_BGCOLOR,cpanel);
        };
      for(int i = 0; i < limit_x; i++)
        {
         vname = i + 1;
         if("MCC B№"+(string)vname != no)
           {
            ObjectSetInteger(ChartID(),"MCC B№"+(string)vname,OBJPROP_STATE,false);
            ObjectSetInteger(ChartID(),"MCC B№"+(string)vname,OBJPROP_COLOR,ctext);
            ObjectSetInteger(ChartID(),"MCC B№"+(string)vname,OBJPROP_BGCOLOR,cpanel);
           };
        };
     };
 
Alexandr Sokolov:
私のインジケーターは、ボタンを押してから±1秒の遅延があります。MQL5

パネルの操作と更新のために、以下のイベントハンドラを追加しています。
- ボタンクリックを処理するOnChartEvent
- パネルデータ更新のためのOnTimer

コード全体は750行以上ですが、いくつかのループがあるだけで、1つはインジケータウィンドウの更新用、他の3つはパスの数が少ないです(最大10 * 4)

OnChartEvent if(id ==CHARTEVENT_OBJECT_CLICK) の後のコードのこの部分は、著しく遅いです。

ChartRedraw()は、ボタン操作によってプロパティが変更されるすべてのオブジェクトに、すべての変更が行われた後に必要となります。

 
Artyom Trishkin:

ChartRedraw()は、ボタン操作でプロパティが変更されるすべてのオブジェクトの変更を行った後に必要です。

確かに!?それは思いつきませんでした。ありがとうございました。


OnChartEventにアラートを入れて いたif(id ==CHARTEVENT_OBJECT_CLICK) - アラートはあったが、更新は なかった。ということが理解できなかったのです。

 
novichok2018:
mcl4で以前のバーの残高値を取得することは可能ですか?コードにどう書けばいいのでしょうか?

専門家の皆さん、こんにちは。誰も知らないのか!?信じられません。

 
novichok2018:

専門家の皆さん、こんにちは。誰も知らないのか!?信じられません。

1ティックの価格はこちら

SymbolInfo Double(_Symbol,SYMBOL_TRADE_TICK_VALUE) * ボリューム

次に、注文の開始価格と必要なバーの終値(またはその他の価格)の差をティック数で乗算します。しかし、標準的な方法では、その時点のスプレッドがどうであったかを知ることができないことを考慮に入れてください。

 
novichok2018:

専門家の皆さん、こんにちは。誰も知らないのか!?信じられません。

残高はポジションの決済に 依存する - 何も決済されなかった場合、残高は変化しない

 
回答がオフトピックになっているので、私の質問の仕方が悪かったのでしょう。ポジションがクローズしたかどうかは気にしないし、ティックの値にも確かに興味はない。比較のために、あるシンボルの1本、2本、3本のバーを閉じた時の口座残高を 知りたいのですが。これらのバーのポジションは、他のシンボルのポジションを含め、開かれ、閉じられました:いくつかのケースでは、ポジションは、他のケースでは、負の正で閉じていた - まだ閉じていない、それはバランスが変更されたことを意味します。具体的な数値を知りたい。ありがとうございます。
 
novichok2018:
回答がオフトピックになっているので、私の質問の仕方が悪かったのでしょう。ポジションがクローズしたかどうかは気にしないし、ティックのコストにも興味はない。 比較のために1,2,3のバーを閉じた時の口座残高を 知りたいのですが。このバーでポジションを建てたり閉じたりしていたため、残高が変化していたのです。具体的な値を知る必要がある。ありがとうございます。

- 最後のバーの時刻に注目する
- このバーで閉店したものを全部足すと
- 差し引く

というように、すべてのバーが順番に