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

 
Vladimir Karputov:

ハンドルであれ、「Trend.mqh::CiMA」クラスのオブジェクト であれ、すべて作成する必要があることに変わりはないのです。

私の場合、どのように問題を解決すればよいのでしょうか?

フルタスクは、OnTick本体で28シンボルの3つのタイムフレームを取得することです。
ハンドル=28×3である必要はあるのでしょうか?
Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2017.09.15
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...
 
Vitaly Muzichenko:

私の場合、どのように問題を解決すればよいのでしょうか?

OnTick本体の28文字で3つの時間枠を取得する完全な問題です。
ハンドルの数=28*3 ということでしょうか?

はい、もちろんです。

 
Vladimir Karputov:

はい、もちろんです。

もちろん、ガッカリ(

ウラジミール、あなたはサービスデスクに書いた、それはそのようであってはならないのでそれはあり えない、我々は単純なExpert Advisorのために100未満のハンドルを作成する必要があることを何か間違って いるに違いありません。
 
Vitaly Muzichenko:

単純なExpert Advisorのために100個以下のハンドルを作成する必要があるなんて、何か間違ったことをして いるに違い ないのです。

何が問題なのか?アレイって知ってますよね?構造?

もちろん、1つのハンドルに1つずつ、100個の変数を作れば......。...それは、本当に残念なことです。

 
Alexey Kozitsyn:

何が問題なのか?アレイって知ってますよね?構造?

もちろん、1つのハンドルに1つずつ、100個の変数を作れば......。それは本当に残念なことです。

ここで、確かに構造ですが、どうやったらすぐに作れるのかがわからないですよね?

 
Vitaly Muzichenko:

ここ、本当は構造なんだけど、どうやったら早く組み立てることができるのか、わからないでしょ?

struct SHandle
   {
    string symbol;
    int handleM1;
    int handleM5;
    int handleM15;
   };
//---- или
struct SHandle
   {
    string symbol;
    int timeframes[3];   // Не знаю точно, можно ли так написать, если что, через ArrayResize();
   };
//--- 
SHandle _handles[28];    

こんな感じです...

 

同僚、まったく理解できなくて困っています

常にアレイの 範囲外に落ちている。今までたくさんのコードを調査して書いてきましたが、同じようなミスが続いています。配列から放り出されない正しいループの作り方を知ることができる場所(枝、記事)があればアドバイスお願いします。私はバグを見つけるのに多くの時間を失う......時には私は私が修正したものと、それが動作する理由を理解していないことがあります。

例えば、以下のコードでは、if (q1[i] > q1[i+1]) q2[i]=1;

q1[i+1]に

は、オンユニットで

SetIndexBuffer(2,q1,INDICATOR_CALCULATIONS)を設定。

ArraySetAsSeries(q1,true)。

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
  int sum,i,a ,start ;
  if (prev_calculated ==0) { start =0 ; q1[0]=q1[1];}
  else  start = prev_calculated;
  CopyBuffer(pulse_clear_Handle,0,start,rates_total,q1);
  for (i = start ; i < rates_total;i++)
  {if (q1[i] > q1[i+1]) q2[i]=1 ;
  else
  if (q1[i] < q1[i+1]) q2[i]=-1;
  else continue ;
 
LookingFor:

同僚、まったく理解できなくて困っています

常にアレイの 範囲外に落ちている。今までたくさんのコードを調査して書いてきましたが、同じようなミスが続いています。配列から放り出されない正しいループの作り方を知ることができる場所(枝、記事)があればアドバイスお願いします。私はバグを見つけるのに多くの時間を失う......時には私は私が修正したものと、それが動作する理由を理解していないことがあります。

例えば、以下のコードでは、if (q1[i] > q1[i+1]) q2[i]=1;

q1[i+1]に

は、オンユニットに

SetIndexBuffer(2,q1,INDICATOR_CALCULATIONS)を設定。

ArraySetAsSeries(q1,true)。

for (i = start ; i < rates_total-1;i++)
 

あらためて、ありがとうございました

 

同僚、MathSum関数、説明はこちら

https://www.mql5.com/ru/docs/standardlibrary/mathematics/stat/mathsubfunctions/statmathsum

がビルド1643で認識されない。全部壊してアップデートする必要があるのですか?

Документация по MQL5: Стандартная библиотека / Математика / Статистика / Вспомогательные функции / MathSum
Документация по MQL5: Стандартная библиотека / Математика / Статистика / Вспомогательные функции / MathSum
  • www.mql5.com
Стандартная библиотека / Математика / Статистика / Вспомогательные функции / MathSum - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5