라이브러리: 전문가 - 페이지 13 1...678910111213 새 코멘트 hini 2025.06.14 17:15 #121 fxsaber #:문제가 있는 경우 재생할 수 있는 mq5 파일을 준비해 주세요. #define MT4ORDERS_LIBRARY #include "../../utils/MT4Orders.mqh" // #define REPORT_BROWSER // 브라우저 시작과 함께 보고서 생성 - DLL 권한이 필요합니다. #define TESTER_CUSTOM // 사용자 테스터에서 전문가 어드바이저 실행하기 #include "../../utils/fxsaber/Tester/Tester.mqh" // https://www.mql5.com/ko/code/24848 #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define KEY_B 66 #define KEY_S 83 #define KEY_C 67 input int In1 = 1; input group "label1" input double In2 = 2.0; // void OnChartEvent( const int id, const long &lparam, const double &dparam, const string &sparam ) { if (id == CHARTEVENT_KEYDOWN) { switch ((int)lparam) { case KEY_B: // 구매 OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0); break; case KEY_S: // 판매 OrderSend(_Symbol, OP_SELL, 1, Bid, 100, 0, 0); break; case KEY_C: // 닫기 for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS) && (OrderType() <= OP_SELL)) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100); } } } void OnTick() { //인쇄(_심볼, " ", SymbolInfoDouble(_심볼, SYMBOL_TRADE_TICK_SIZE)); } void OnTimer() { Comment(REPORT::OrdersToString(_Symbol, 0, 5)); /* */ } int OnInit() { Print(_Symbol, " ", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE)); Print(_Symbol, " In2 = ", In2); return(INIT_SUCCEEDED); } // void OnDeinit( const int ) {} // void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { } //+------------------------------------------------------------------+ 샘플 코드는 테스터 라이브러리의 코드를 사용합니다. 시작 후 변수 In2는 2가 아닌 0입니다. 즉, 그룹 이후에는 모든 입력 파라미터를 검색할 수 없습니다. fxsaber 2025.06.17 07:43 #122 hini #:이 상황은 고려되지 않은 것 같습니다. 매개 변수가 그룹인 경우 특정 값이 없고 얻은 값이 null이 되므로 그룹 뒤에 오는 매개 변수는 얻지 못합니다. 다음 코드는 모든 것이 올바르게 처리되었음을 보여줍니다. input int In1 = 1; input group "label1" input double In2 = 2.0; #include <fxsaber\Expert.mqh> // https://www.mql5.com/ko/code/19003 int GetAmountExperts() { int Res = 0; for (long Chart = ChartFirst(); Chart != -1; Chart = ChartNext(Chart)) Res += (ChartGetString(Chart, CHART_EXPERT_NAME) != ""); return(Res); } void OnInit() { if (GetAmountExperts() < 2) { MqlParam Params[]; string Names[]; const int Size = EXPERT::Parameters(0, Params, Names) - 1; ArrayPrint(Params); ArrayPrint(Names); for (uint i = Size; (bool)i--;) EXPERT::AddInputName(Params[i + 1], Names[i]); Params[Size].string_value = "7"; EXPERT::Run(ChartOpen(_Symbol, _Period), Params); } } 결과. [type] [integer_value] [double_value] [string_value] [0] 14 0 0.00 "Scripts\Test6.ex5" [1] 14 1 1.00 "1" [2] 14 0 0.00 null [3] 14 2 2.00 "2.0" "In1" null "In2" Expert.mqh를 통해 Expert Advisor가 시작되었습니다. hini 2025.06.17 14:36 #123 input bool InRun = true; input group "label1" input double In2 = 2.0; #include <fxsaber\Expert.mqh> // https://www.mql5.com/ko/code/19003 int GetAmountExperts() { int Res = 0; for (long Chart = ChartFirst(); Chart != -1; Chart = ChartNext(Chart)) Res += (ChartGetString(Chart, CHART_EXPERT_NAME) != ""); return(Res); } void OnInit() { if (InRun) { MqlParam Params[]; string Names[]; const int Size = EXPERT::Parameters(0, Params, Names) - 1; ArrayPrint(Params); ArrayPrint(Names); int nameSize = ArraySize(Names); for (int i = nameSize-1; i >= 0; i--) { if (Names[i] == "InRun") Params[i+1].string_value = "false"; EXPERT::AddInputName(Params[i + 1], Names[i]); } ArrayPrint(Params); ArrayPrint(Names); //Params[Size].string_value = "7"; EXPERT::Run(ChartOpen(_Symbol, _Period), Params); return; } Print("In2 = ", In2); } 알 수 없는 이유로 GetAmountExperts 함수가 매우 오랫동안 결과 없이 실행됩니다. 코드를 약간 변경했으니 다시 실행해 보세요. In2 매개 변수에 값 7을 할당해서는 안 됩니다(2가 아닌 0이 표시됩니다). fxsaber 2025.06.17 17:53 #124 hini #:코드가 약간 변경되었으니 다시 실행해 보세요. 이것은 모범적인 버그 신고입니다. 간결한 코드를 실행하니 버그가 즉시 표시되었습니다. 수정했습니다, 감사합니다. hini 2025.06.18 01:38 #125 fxsaber #:이것은 모범적인 버그 신고 사례입니다. 간결한 코드를 실행하여 즉시 버그를 발견했습니다. 수정했습니다. 감사합니다. 알겠습니다, 문제가 발생하면 같은 형식으로 보고서를 작성하겠습니다. 1...678910111213 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
문제가 있는 경우 재생할 수 있는 mq5 파일을 준비해 주세요.
이 상황은 고려되지 않은 것 같습니다. 매개 변수가 그룹인 경우 특정 값이 없고 얻은 값이 null이 되므로 그룹 뒤에 오는 매개 변수는 얻지 못합니다.
다음 코드는 모든 것이 올바르게 처리되었음을 보여줍니다.
결과.
Expert.mqh를 통해 Expert Advisor가 시작되었습니다.
알 수 없는 이유로 GetAmountExperts 함수가 매우 오랫동안 결과 없이 실행됩니다. 코드를 약간 변경했으니 다시 실행해 보세요. In2 매개 변수에 값 7을 할당해서는 안 됩니다(2가 아닌 0이 표시됩니다).
코드가 약간 변경되었으니 다시 실행해 보세요.
이것은 모범적인 버그 신고입니다. 간결한 코드를 실행하니 버그가 즉시 표시되었습니다.
수정했습니다, 감사합니다.
이것은 모범적인 버그 신고 사례입니다. 간결한 코드를 실행하여 즉시 버그를 발견했습니다.
수정했습니다. 감사합니다.