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

 
Valeriy Yastremskiy #:

アルゴリズムは正確でなければならず、その適用条件を理解していなければならない。そうでなければコードを書くことは不可能だ。コードは1つの動作のアルゴリズムを実現したものであり、不正確であってはならない。

そしてここでは、まず自分で書いたほうがいい。

あなたは等号を理解している。

こんにちは、ヴァレリー!まったく同感です。正しいコードを書くには、ポジションをオープンするための正確な条件が必要です。このコードも機能します:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//ВХОДНОЙ ПАРАМЕТР
input ushort Constanta=50; //Константа
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Tick function                                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double open_0=iOpen(_Symbol,PERIOD_CURRENT,0);
   if(open_0-SymbolInfoDouble(_Symbol,SYMBOL_BID)>Constanta*_Point)
      Print("Цена прошла вниз расстояние больше чем Константа, поэтому нужно открыть позицию SELL!");
   if(SymbolInfoDouble(_Symbol,SYMBOL_BID)-open_0>Constanta*_Point)
      Print("Цена прошла вверх расстояние больше чем Константа, поэтому нужно открыть позицию BUY!");
   Sleep(20000);
  }
//+------------------------------------------------------------------+

しかし、問題はVitalyが意図したとおりに動くかどうかです。率直に言って、なぜ20秒に1回(あるいは10秒、5秒、1秒に1回)価格差をチェックする必要があるのか、私にはよく理解できません。それによって、今後の値動きの方向性を判断することができるのでしょうか?

よろしく、ウラジミール。

 
MrBrooklin #:

こんにちは、ヴァレリー!まったく同感です。正しいコードを書くには、ポジションを建てるための正確な条件が必要です。このコードも機能します:

しかし、問題はVitalyが意図したとおりに動くかどうかです。率直に言って、なぜ20秒に1回(あるいは10秒、5秒、1秒に1回)価格差をチェックする必要があるのか、私にはよく理解できません。今後の値動きの方向性を決めるという点で、それは何の役に立つのだろうか?

ウラジミールさん、よろしくお願いします。

MrBrooklin#:

こんにちは、ヴァレリー!全く同感です。正しいコードを書くには、ポジションをオープンするための正確な条件が必要です。このコードも機能します:

しかし、問題はVitalyが意図したとおりに動くかどうかです。率直に言って、なぜ20秒に1回(あるいは10秒、5秒、1秒に1回)価格差をチェックする必要があるのか、私にはよく理解できません。今後の値動きの方向性を決めるという点で、それは何の役に立つのだろうか?

ウラジミールさん、よろしくお願いします。

タスクの説明が間違っています!20秒に1回」ではなく、時間が経過した指標を1秒ごとにチェックするのです。なぜ」については、この議論には関係ない。(20秒というのはあくまで例です)。

これは移動平均のようなもので、最初のローソク足と2本目のローソク足を比較します。ただ、私は現在(ゼロ)分のローソク足の内側ですべてを計算する必要があります。 またはさらに良い - - 折れ線グラフ上。結局、20秒は最初のローソク足に流れることができます)。

 
vitaliy zamkovoy #:
タスクを正しく説明していない!20秒に1回」ではなく、「1秒に1回」時間を経過した値をチェックするのだ。なぜ」については、この議論のための質問ではない。(また、20秒というのはほんの一例です)。

はい、私のミスです。あなたが何をしたいのか、何をチェックしたいのかを十分に理解していませんでした。

ありがとう、ウラジミール。

 

しかし、もしあなたの定数に等しい距離を偶数秒ではなく、例えば10.964秒や11.283秒で移動したとしたら、どうなるだろうか?条件は満たされるのでしょうか、満たされないのでしょうか?

よろしく、ウラジミール。

 
MrBrooklin #:

しかし、もしあなたの定数に等しい距離を偶数秒ではなく、例えば10.964秒や11.283秒で移動したとしたら、どうなるだろうか?条件は満たされるのか、満たされないのか。

よろしく、ウラジミール。

定数との比較」とは、等しいという意味ではなく、「より多く」「より少なく」という意味です。正の差の場合、+記号の定数と比較し、負の差の場合、-記号の定数と比較する。前者の場合、定数を上回れば買い。2番目のケースでは、値が小さい場合 - 販売。
 
vitaliy zamkovoy #:
定数との比較」というのは、等しいという意味ではなく、「より多く」「より少なく」という意味である。

これですべてが明確になった。

ありがとう、ウラジミール。

 
MrBrooklin #:

これですべてが理解できる。

ありがとう、ウラジーミル

メッセージを更新しました。再読してください。
 

結局のところ、コードはたった4行で、議論は3ページもある。

  MqlTick mqlTick[], symbTick; // объявили переменные
  SymbolInfoTick(_Symbol, symbTick); // это последний тик
  CopyTicksRange(_Symbol, mqlTick, COPY_TICKS_ALL, symbTick.time_msc, symbTick.time_msc-20000); // Получили все тики за последние 20 секунд
  double delta = NormalizeDouble(mqlTick[ArraySize(mqlTick)-1].bid-mqlTick[0].bid, _Digits); // получили разницу крайних значений массива

20,000 ミリ秒は20秒だ。

次に、デルタ変数のサイズに条件をつける。

 
MrBrooklin #:

これですべてが理解できる。

ありがとう、ウラジミール

MrBrooklin#:

これですべてが理解できた。

ありがとう、ウラジミール。

vitaliy zamkovoy#:
メッセージを更新しました。再読してください。
アレクセイ・ヴィクトロフは俗物ですが、すぐにトリックに気づきました。😆
 
vitaliy zamkovoy #:
定数との比較」とは、等しいという意味ではなく、「より多く」「より少なく」という意味である。差がプラスなら+記号の定数と比較し、差がマイナスなら-記号の定数と比較する。最初の場合、定数を上回れば買う。2番目のケースでは、値が小さい場合 - 販売。

これですべてが明確になりました。

ありがとう、ウラジミール。

追伸:私がお勧めできる唯一のことは、興味のためにここで 私のメッセージを見ていただくことです。 そして、このメッセージの後の価格の動きを見てください。0.98000まで、より正確には0.9806までロールバックし、その後再び上昇した。この推奨はあくまで参考である。

理由: