初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1467 1...146014611462146314641465146614671468146914701471147214731474...1504 新しいコメント Valeriy Yastremskiy 2023.06.28 11:24 #14661 Alexey Viktorov #:どういう意味ですか? ーある配列からーある要素数temp[]をーコピーするにはーするためにはー配列サイズをーサイズをーArrayResize(ーtemp, new_size);? もちろん、配列のサイズは常に既知であるか、あるいは知ることができるという意味だ。また、インデックスのオーバーランを制御することもできるし、そうすべきである。 Alexey Viktorov 2023.06.28 11:38 #14662 Valeriy Yastremskiy #:もちろんそうではなく、配列のサイズは常にわかっている、あるいは知ることができるという意味だ。そして、インデックスのオーバーランを制御することができるし、そうしなければならない。 コントロールすることはできるが、常に必要というわけではない...。 Valeriy Yastremskiy 2023.06.28 17:10 #14663 Alexey Viktorov #:コントロールすることは可能だが、必ずしも必要ではない...。 限界を超えてから始めればいい))))。 Alexey Viktorov 2023.06.28 17:43 #14664 Valeriy Yastremskiy #: へへへ、じゃあ、超えてから始めよう))))) ここで見てみましょう... 取引、自動取引システム、取引戦略のテストに関するフォーラム。 初心者からの質問 MQL5 MT5 MetaTrader 5 アレクセイ・ヴィクトロフ, 2023.06.27 21:19 何が問題なのでしょうか?配列temp[] を宣言し、そこに30個の要素を コピーし、最小値/最大値のインデックスを探 します。そして最後に30に 満たない場合は、残りいくつかをコピーします。この場合、私はむしろwhile()ループを使いたい。 なぜtemp[]配列のサイズを制御する必要があるのですか? temp[]にコピーする配列のサイズをコントロールする必要があるのは、異論がない...しかし、最大最小値を探す配列のサイズをコントロールする必要があるのはなぜだろう? leonerd 2023.07.03 07:56 #14665 教えていただきたいのですが、EAから呼び出されるDLLからWebソケット接続の呼び出しがある場合、端末の設定で ホストアドレスを許可する必要があるのでしょうか? Valeriy Yastremskiy 2023.07.03 08:58 #14666 leonerd ターミナル 設定でホストアドレスを許可する必要がありますか? はい、ターミナルは許可されたものだけを明示的に参照します。 leonerd 2023.07.03 11:57 #14667 Valeriy Yastremskiy #:ええ、端末は許可されたものだけを突いています。 ーそう、ー ターミナルはー許可されたものだけをー Nikita Chernyshov 2023.07.03 18:45 #14668 leonerd #:つまり、巻き込まれるのはターミナルではなく、DLLなのだ。 DLLは、mt.内で認可されたホストを必要としない。mt.内でDLLの使用を許可するだけで十分であり、DLL自体は絶対に何でもできる。 leonerd 2023.07.17 10:30 #14669 ったな。winapi.mqhに同じような関数はありますか? Nikolai Kalinin 2023.07.19 16:12 #14670 このコードのどこが正しく機能していないのか教えてください。レコードをランダムに読み込むのですが、すべてを見つけることができず、新しい開始時に新しい結果を返します。 //+------------------------------------------------------------------+ //| 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()); } //+------------------------------------------------------------------+ 1...146014611462146314641465146614671468146914701471147214731474...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
どういう意味ですか? ーある配列からーある要素数temp[]をーコピーするにはーするためにはー配列サイズをーサイズをーArrayResize(ーtemp, new_size);?
もちろん、配列のサイズは常に既知であるか、あるいは知ることができるという意味だ。また、インデックスのオーバーランを制御することもできるし、そうすべきである。
もちろんそうではなく、配列のサイズは常にわかっている、あるいは知ることができるという意味だ。そして、インデックスのオーバーランを制御することができるし、そうしなければならない。
コントロールすることはできるが、常に必要というわけではない...。
コントロールすることは可能だが、必ずしも必要ではない...。
へへへ、じゃあ、超えてから始めよう)))))
ここで見てみましょう...
取引、自動取引システム、取引戦略のテストに関するフォーラム。
初心者からの質問 MQL5 MT5 MetaTrader 5
アレクセイ・ヴィクトロフ, 2023.06.27 21:19
何が問題なのでしょうか?配列temp[] を宣言し、そこに30個の要素を コピーし、最小値/最大値のインデックスを探 します。そして最後に30に 満たない場合は、残りいくつかをコピーします。この場合、私はむしろwhile()ループを使いたい。
なぜtemp[]配列のサイズを制御する必要があるのですか?
temp[]にコピーする配列のサイズをコントロールする必要があるのは、異論がない...しかし、最大最小値を探す配列のサイズをコントロールする必要があるのはなぜだろう?
はい、ターミナルは許可されたものだけを明示的に参照します。
ええ、端末は許可されたものだけを突いています。
ーそう、ー ターミナルはー許可されたものだけをー
つまり、巻き込まれるのはターミナルではなく、DLLなのだ。
DLLは、mt.内で認可されたホストを必要としない。mt.内でDLLの使用を許可するだけで十分であり、DLL自体は絶対に何でもできる。
このコードのどこが正しく機能していないのか教えてください。レコードをランダムに読み込むのですが、すべてを見つけることができず、新しい開始時に新しい結果を返します。