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

 
Alexey Viktorov #:

どういう意味ですか ーある配列からーある要素数temp[]をーコピーするにはーするためにはー配列サイズをーサイズをーArrayResize(ーtemp, new_size);?

もちろん、配列のサイズは常に既知であるか、あるいは知ることができるという意味だ。また、インデックスのオーバーランを制御することもできるし、そうすべきである。

 
Valeriy Yastremskiy #:

もちろんそうではなく、配列のサイズは常にわかっている、あるいは知ることができるという意味だ。そして、インデックスのオーバーランを制御することができるし、そうしなければならない。

コントロールすることはできるが、常に必要というわけではない...。

 
Alexey Viktorov #:

コントロールすることは可能だが、必ずしも必要ではない...。

限界を超えてから始めればいい))))。
 
Valeriy Yastremskiy #:
へへへ、じゃあ、超えてから始めよう)))))

ここで見てみましょう...

取引、自動取引システム、取引戦略のテストに関するフォーラム。

初心者からの質問 MQL5 MT5 MetaTrader 5

アレクセイ・ヴィクトロフ, 2023.06.27 21:19

何が問題なのでしょうか?配列temp[] を宣言し、そこに30個の要素を コピーし、最小値/最大値のインデックスを探 します。そして最後に30に 満たない場合は、残りいくつかをコピーします。この場合、私はむしろwhile()ループを使いたい。


なぜtemp[]配列のサイズを制御する必要があるのですか?

temp[]にコピーする配列のサイズをコントロールする必要があるのは、異論がない...しかし、最大最小値を探す配列のサイズをコントロールする必要があるのはなぜだろう?

 
教えていただきたいのですが、EAから呼び出されるDLLからWebソケット接続の呼び出しがある場合、端末の設定で ホストアドレスを許可する必要があるのでしょうか?
 
leonerd ターミナル 設定でホストアドレスを許可する必要がありますか?

はい、ターミナルは許可されたものだけを明示的に参照します。

 
Valeriy Yastremskiy #:

ええ、端末は許可されたものだけを突いています。

ーそう、ー ターミナルはー許可されたものだけをー

 
leonerd #:

つまり、巻き込まれるのはターミナルではなく、DLLなのだ。

DLLは、mt.内で認可されたホストを必要としない。mt.内でDLLの使用を許可するだけで十分であり、DLL自体は絶対に何でもできる。

 
ったな。winapi.mqhに同じような関数はありますか?
 

このコードのどこが正しく機能していないのか教えてください。レコードをランダムに読み込むのですが、すべてを見つけることができず、新しい開始時に新しい結果を返します。

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2020, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
input int                  RULE1  = 0;
input int                  RULE2  = 0;
input int                  RULE3  = 0;
input int                  RULE4  = 0;
input bool                 FastComb  = 1;
input int                  FileLine= 20000;
input string               InpFileName="Report.csv";
//+------------------------------------------------------------------+
//| Structure Positions                                              |
//+------------------------------------------------------------------+
struct STRUCT_POSITION
  {
   ENUM_POSITION_TYPE pos_type;              // position type
   bool              waiting_transaction;    // waiting transaction, "true" -> it's forbidden to trade, we expect a transaction
   ulong             waiting_order_ticket;   // waiting order ticket, ticket of the expected order
   bool              transaction_confirmed;  // transaction confirmed, "true" -> transaction confirmed
   //--- Constructor
   STRUCT_POSITION()
     {
      pos_type                   = WRONG_VALUE;
      waiting_transaction        = false;
      waiting_order_ticket       = 0;
      transaction_confirmed      = false;
     }
  };
STRUCT_POSITION SPosition[];
///////////////////////////
struct Report
  {
   long              Pass;
   double            Result;
   double            Profit;
   double            Payoff;
   double            ProfitFactor;
   double            RecoveryFactor;
   double            SharpeRatio;
   long              Custom;
   double            EquityDD;
   long              Trades;
   long               Field1;
   long               Field2;
   long               Field3;
   long               Field4;
   long               Field5;
   long               Field6;
   long               Field7;
   long               Field8;
   long               Field9;
  };
long ProfitComb[20001][10];
///////////////////////////
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(FastComb)
     {
      ArrayInitialize(ProfitComb,-1);
      ReportListComb();
      int FindComb=0;
      for(int i=0; i<=FileLine; i++)
        {
         if(RULE1==ProfitComb[i][1] && RULE2==ProfitComb[i][2] && RULE3==ProfitComb[i][3] && RULE4==ProfitComb[i][4])
           {
            FindComb=1;
            break;
           }
        }
      if(FindComb==0 && RULE1!=0)
         return(INIT_PARAMETERS_INCORRECT);
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void ReportListComb()
  {
   Report ReportStr[];
   ResetLastError();
   ArrayResize(ReportStr,FileLine);
   string subfolder="Data";
   int file_handle=FileOpen(subfolder+"\\Report.csv",FILE_READ|FILE_WRITE|FILE_CSV|FILE_ANSI|FILE_COMMON,';');
   if(file_handle!=INVALID_HANDLE)
     {
      int i=0;
      while(!FileIsEnding(file_handle))
        {
         i++;
         ReportStr[i].Pass=StringToInteger(DoubleToString(FileReadNumber(file_handle),0));
         ReportStr[i].Result=StringToDouble(FileReadString(file_handle));
         ReportStr[i].Profit=FileReadNumber(file_handle);
         ReportStr[i].Payoff=FileReadNumber(file_handle);
         ReportStr[i].ProfitFactor=FileReadNumber(file_handle);
         ReportStr[i].RecoveryFactor=FileReadNumber(file_handle);
         ReportStr[i].SharpeRatio=FileReadNumber(file_handle);
         ReportStr[i].Custom=StringToInteger(DoubleToString(FileReadNumber(file_handle),0));
         ReportStr[i].EquityDD=FileReadNumber(file_handle);
         ReportStr[i].Trades=StringToInteger(DoubleToString(FileReadNumber(file_handle),0));
         ReportStr[i].Field1=StringToInteger(DoubleToString(FileReadNumber(file_handle),0));
         ReportStr[i].Field2=StringToInteger(DoubleToString(FileReadNumber(file_handle),0));
         ReportStr[i].Field3=StringToInteger(DoubleToString(FileReadNumber(file_handle),0));
         ReportStr[i].Field4=StringToInteger(DoubleToString(FileReadNumber(file_handle),0));
         ReportStr[i].Field5=StringToInteger(DoubleToString(FileReadNumber(file_handle),0));
         ReportStr[i].Field6=StringToInteger(DoubleToString(FileReadNumber(file_handle),0));
         ReportStr[i].Field7=StringToInteger(DoubleToString(FileReadNumber(file_handle),0));
         ReportStr[i].Field8=StringToInteger(DoubleToString(FileReadNumber(file_handle),0));
         ReportStr[i].Field9=StringToInteger(DoubleToString(FileReadNumber(file_handle),0));

         ProfitComb[i][1]=ReportStr[i].Field1;
         ProfitComb[i][2]=ReportStr[i].Field2;
         ProfitComb[i][3]=ReportStr[i].Field3;
         ProfitComb[i][4]=ReportStr[i].Field4;
         ProfitComb[i][5]=ReportStr[i].Field5;
         ProfitComb[i][6]=ReportStr[i].Field6;
         ProfitComb[i][7]=ReportStr[i].Field7;
         ProfitComb[i][8]=ReportStr[i].Field8;
         ProfitComb[i][9]=ReportStr[i].Field9;
        }
      FileClose(file_handle);
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError());
  }
//+------------------------------------------------------------------+
理由: