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

 
vladzeit:

***

1.現在の楽器の価格を要求する。

***

2.1 現在の価格がPoint >= 100 pipsの場合、ポジションを建てる。

***

隙間を狙うか?

 
Vladimir Karputov:

隙間を狙うか?

ウラジミール、 恥ずかしながら ギャップの意味を理解できていない)

価格が何ポイント変動したら、市場に参入して売買する、というような簡単なアルゴリズムを実装したいのですが...。は関係ありません。

その結果、シンボルの現在の価格を 取得し、ローカル変数またはグローバル変数に保存し、イベント発生時にそこから取得し、ゼロにリセットする方法を学びたいのです。

主に相場へのエントリーポイントを探すのに使いたい。

私はちょうどmql5を学び始めました、ほとんどはあなたがたくさん書いているExpert Advisorの例によるものです、ありがとうございます)。

先生の例から自分なりにアルゴリズムを組み立てることはできるのですが、現在の価格を取得して変数に保存することに戸惑いを感じています。

 
vladzeit:

***

何pipsの値動きがあれば市場に参入し、売買を行うという簡単なアルゴリズムを実装したいのですが...。は関係ない。

***

現在のティックで価格を設定した場合、次のティックでは、この価格は全く変化しないか、非常に小さなポイント数で変化することを理解する必要があります。

そのため、やりたいことをより具体的にする必要があります。

  • 例えば、N秒に一度だけ現在の価格を 取得します。
  • 新しいバーが形成されるときにのみ、現在の価格を取得します。
  • ...
  • というように、この価格と前回記憶した値を比較します。

 
Vladimir Karputov:

現在のティックの価格を記憶した場合、次のティックではその価格は全く変化しないか、非常に小さなポイント数しか変化しないことを理解する必要があります。

そのため、やりたいことをより具体的にする必要があります。

  • 例えば、N秒に一度だけ現在の価格を 取得します。
  • 新しいバーが形成されるときにのみ、現在の価格を取得します。
  • ...
  • で、その価格と前回記憶した値を比較するだけです。

うーん...。これらの機能については考えていませんでした)

  • 新しいバーが生まれた瞬間にだけ、現在の価格を取得すること。
この例の方が、私には便利だと思います。
 
vladzeit:

うーん...これらは、私が思いつかなかった機能です)

  • 新しいバーが生まれたときだけ、現在の価格を取得します。
この例は、私にとってより有益なものになるでしょう。

今夜(遅くなりましたが)、例を示してみたいと思います。

 

こんにちは。
インジケーターの高速化に挑戦しています。私は、バーインデックスと 比較されるべき時間配列を持って いるので、インジケータを高速化しようとしているのですが、ここに若干の遅さが見られます。既に確認済みですが、インデックスを持つ配列を用意してバーインデックスと比較した場合、7秒で40Kの要素が得られますが、時間配列の 場合は140秒かかってしまいます。インジケーターを高速化するコツはありますか?

   bool FindArr(int Bar)
     {
      int Size=CheckSizeTime;
      for(int i=restBars; i<Size; i++)
        {
         datetime BarTime=iTime(NULL,PERIOD_CURRENT,Bar);
         if(BarTime==ArrCol.BarTimeArray[i])
           {
            restBars++;
            return(true);
           }
        }
      return(false);
     }
if(prev_calculated==0)         
        for(int i=0;i<rates_total;i++)
           {
            if(Arr.FindArr(i))
              {
               ColorSectionBuffer[i]=low[i];
               ColorSectionColors[i]=0;
              }
            else
              {
               ColorSectionBuffer[i]=0;
               ColorSectionColors[i]=EMPTY_VALUE;
              }
           }
 
vladzeit:

うーん...これらは、私が思いつかなかった機能です)

  • 新しいバーが生まれたときだけ、現在の価格を取得します。
この例は、私にとってより有益なものになるでしょう。
ウラジーミル・カルプトフ

今夜(遅くなりましたが)、例を示してみたいと思います。

ここでは、誰かが各ティックで 価格を取得するための例を作っていました。

//+------------------------------------------------------------------+
//|                                               Display prices.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
//---
#include <Trade\SymbolInfo.mqh>  
CSymbolInfo    m_symbol;                     // symbol info object
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!m_symbol.Name(Symbol())) // sets symbol name
      return(INIT_FAILED);
   RefreshRates();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!RefreshRates())
      return;
   Comment("Ask: ",DoubleToString(m_symbol.Ask(),m_symbol.Digits()),"\n",
           "Bid: ",DoubleToString(m_symbol.Bid(),m_symbol.Digits()));
  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates(void)
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
     {
      Print("RefreshRates error");
      return(false);
     }
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
      return(false);
//---
   return(true);
  }
//+------------------------------------------------------------------+

解説は明日、今夜はもう寝ます。

明日は、新しいバーの例もあります。

ファイル:
 
Vladimir Karputov:

ここでは、誰かのために各ティックで 価格を取得する例を紹介します。

説明は明日にしよう、今夜はもう寝たから。

明日は、新しいバーの例もあります。

ウラジミール、ありがとうございます。CSymbolInfo クラスの 関数RefreshRates を少しばかり知りました皆さんのレポートでも拝見しましたし、入門書でも読みました。

OnTickで この関数を呼び出しCommentで 価格値を出力していることも、例から見て明らかです。OnInitで現在のシンボルを 確認する手順も、私には明確 です。

新しいバーを使った例を待つ間、あなたの例で練習をしてみようと思います、私は実践で使ったことがありません。試してみます。


 
fxsaber:

ありがとうございます、修正しました

ありがとうございます。これで、ディレクトリだけが正しく与えられるようです。

しかし、サブディレクトリの区切りがMQL規格ではスラッシュ2つであるのに対し、"˶‾‾‾˵"1つであることに気づきました。つまり、ファイルパスを生成するために必要なコードで、スラッシュが1つのため、追加の後処理なしでは不可能なのですが、2つのスラッシュを一度に取得するオプションはありますか?

 
Aleksey Vyazmikin:

ありがとうございます - 今はディレクトリだけが正しいようです。

しかし、サブディレクトリの区切りがMQL規格ではスラッシュ2つであるのに対し、"˶‾‾‾˵"1つであることに気づきました。つまり、ファイルパスを生成するために必要なコードで、スラッシュが1つのため、追加の後処理なしでは不可能なのですが、2つのスラッシュを一度に取得するオプションはありますか?

Print("\\");
理由: