초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1473

 
Alexander Sevastyanov #:

이 경우 환불 가능성은 거의 없다고 생각합니다.
여기 계신 모든 분들이 이미 매우 정확하게 답변해 주셨습니다.

그러나 여전히 시도하는 것이 좋습니다.

알렉산더, 도와 주셔서 감사합니다. 프로그래밍과 거래에서 성공하십시오. 최선을 다하겠습니다.
 
Valeriy Yastremskiy #:

돈으로 무언가를 하기 전에 최소한의 확인만이라도 하세요.

마찬가지로.

신용카드는 아니길 바라며... 반드시 경찰에 신고하세요.

실질적인 조언과 도움을 주신 모든 분들께 감사드립니다. 중재자는 포럼 규칙을 위반 한 저를 용서해주십시오. 나는 신규 이민자이고 브로커에 대해 논의 할 수 없다는 것을 몰랐습니다. 규칙을 주의 깊게 읽고 위반하지 않겠습니다. 제 호소에 응답 해 주신 모든 분들께 다시 한 번 감사 드리며 행운을 빕니다.
 

댓글의 아날로그를 만들려고 했지만 글자가 더 컸습니다.

일반적으로 작동했으며 이제 글자를 읽을 수 있습니다.

그러나 OOP에 대한 무지 때문에 내 의견은 컴퓨터 작업에 그다지 영향을 미치지 않습니다,

여러 차트에 대한 댓글로 Expert Advisor를 실행 한 후 얼마 후 화면이 희미 해지고 서버가 재부팅 될 때까지 나쁜 일이 발생합니다))))).

터미널에서 이러한 레코드가 많이 기록됩니다.

MQL5  VirtualAlloc failed in large allocator, size=101104
MemoryException 101142 bytes not available, 0 heapmin result

메모리가 누출되지 않도록하는 방법을 아는 사람들을 돕습니다.

플러그인 주석 파일은 다음과 같습니다:

#include <Canvas\Canvas.mqh>
void Comm(string txt, color clr = clrYellow, int FontSize = 20, string Font = "Consolas", int flag = FW_BOLD)
  {
   CCanvas canvas;

   int shift = 0;
   if(ChartGetInteger(0, CHART_SHOW_ONE_CLICK))
      shift = 60;
   canvas.Erase(0x00FFFFFF);
   canvas.FontNameSet(Font);
   canvas.FontFlagsSet(flag);
   canvas.FontSizeSet(FontSize);

   int width = 0, height = 0;
   string result[];
   int size = StringSplit(txt, StringGetCharacter("\n", 0), result);
   height = (int)(FontSize * 1.8 * size);

   for(int i = 0; i < size; i++)
     {
      int w = canvas.TextWidth(result[i]);
      if(width < w)
         width = w;
     }

   canvas.CreateBitmapLabel(0, 0, "Comment", 5, 20 + shift, width, height, COLOR_FORMAT_ARGB_NORMALIZE);
   for(int i = 0; i < size; i++)
      canvas.TextOut(0, (int)(FontSize * 0.8 * i), result[i], ColorToARGB(clr, 255));

   canvas.Update(true);
  }

다음과 같이 사용하는 예입니다:

#include <Comm.mqh>
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlTick tick;
   SymbolInfoTick(_Symbol, tick);
   if(tick.ask != 0 && tick.bid != 0)
      Comm(StringFormat("ask = %.5f\nbid = %.5f\ntime = %s", tick.ask, tick.bid, TimeToString(tick.time, TIME_DATE | TIME_SECONDS)));
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0, "Comment");
   ChartRedraw();
  }
//+------------------------------------------------------------------+


CCanvas 클래스에서 뭔가 잘못하고 있다는 것은 분명하지만 정확히 무엇이 잘못되었는지 이해하지 못합니다.

파일:
Comm.mq5  2 kb
Comm.mqh  2 kb
 
Aleksandr Slavskii #:

댓글을 아날로그로 만들려고 했지만 글자가 더 컸습니다.

이제 글자를 읽을 수 있습니다.

하지만 저는 OOP를 모르기 때문에 제 댓글이 컴퓨터의 작업에 별다른 영향을 미치지 않습니다,

여러 차트에 댓글을 달고 Expert Advisor를 실행한 후 얼마 후 화면이 깜박이고 서버가 재부팅되는 등 문제가 발생했습니다))))))

터미널에서 이러한 레코드가 많이 기록됩니다.

메모리가 누출되지 않도록 방법을 아는 사람들을 도와주세요.

첨부된 주석 파일은 다음과 같습니다:

다음과 같은 사용 예시입니다:


CCanvas 클래스에서 뭔가 잘못하고 있는 것은 분명하지만 정확히 무엇이 잘못되었는지 이해하지 못합니다.

CCanvas 라이브러리를 사용하지 않고 OBJ_BITMAP_LABEL 객체를 사용한 코드에 관심이 있으시면 제 코드를 보세요 ...

ClosingLots
ClosingLots
  • www.mql5.com
Индикатор информер.
 
Alexey Viktorov #:

CCanvas 라이브러리가 없지만 OBJ_BITMAP_LABEL 객체가 있는 코드에 관심이 있으시면 제 코드를 보세요 ...

고마워, 좋은 해결책, 나는 그것을 좋아한다.


그러나 "사무라이에게는 목표가없고 경로 만있다"는 말처럼, 주석을 만드는 방법에 대한 해결책은 클래스 사용에서 내 실수가 무엇인지 알아내는 것보다 나에게 덜 중요합니다.

 
Aleksandr Slavskii #:

감사합니다, 아름다운 솔루션, 마음에 들었습니다.


하지만 "사무라이에게는 목표가 없고 길만 있다"는 말이 있듯이, 저는 댓글을 다는 방법을 찾는 것보다 클래스 사용에서 실수가 무엇인지 알아내는 데 더 신경을 씁니다.

얼마나 많은 비트맵 레이블이 생성되나요? (Ctrl+B --> 모두).

 
Artyom Trishkin #:

비트맵라벨은 몇 개, 몇 개가 생성되나요? (Ctrl+B --> 모두).

하나의 차트에 하나의 개체입니다.

어떻게 둘 이상일 수 있을까요? 생성된 모든 개체의 이름은 "댓글"로 동일합니다.


쓰는 것을 잊었습니다.

코어가 하나이고 메모리가 1GB인 매우 열악한 서버에서 문제가 발생했습니다. 그리고 즉시가 아니라 잠시 후에.

그러나 코드에 모든 것이 정상이면 문제가 없을 것이라고 생각합니다. 무언가가 RAM을 막고 있는데 그게 무엇인지 이해할 수 없습니다.

제가 아는 것이왜 중요한가요 ?

서버 용량을 구입하고, 메모리를 구입하고, 끝없이 업그레이드 할 수 있지만 내 코드가 정확하지는 않습니다.

 
Aleksandr Slavskii #:

하나의 차트에 하나의 개체.

어떻게 개체가 여러 개가 있을 수 있을까요? 생성된 모든 개체의 이름은 "댓글"로 동일합니다.


쓰는 것을 잊어버렸습니다.

코어가 하나이고 메모리가 1GB인 매우 열악한 서버에서 문제가 발생했습니다. 그리고 즉시가 아니라 시간이 좀 지난 후에요.

하지만 코드에 모든 것이 정상이면 문제가 없을 것이라고 생각합니다. 무언가가 RAM을 막고 있는데 그것이 무엇인지 이해할 수 없습니다.

제가 이해하는 것이 왜 중요한가요 ?

더 많은 서버 용량을 구입하고, 더 많은 메모리를 구입하고, 끝없이 업그레이드할 수 있지만 제 코드가 올바르게 되지는 않습니다.

차트에서 전문가 조언자가 제거되면 로그에 어떤 내용이 기록되나요? 일반적으로 어떤 개체가 누출되었는지 알려주며, 이를 통해 검색 방향을 알 수 있습니다.

 
Artyom Trishkin #:

EA가 차트에서 제거되면 로그에는 어떤 내용이 기록되나요? 일반적으로 어떤 개체가 누출되었는지 알려주며 검색 방향을 알려줍니다.

로그를 삭제했습니다. 하지만 다시 삭제하는 데 오래 걸리지 않으니 문제 없습니다. 이제 서버에서 전문가 조언자를 시작하면 아침 (아마도 더 일찍)이 로그가 될 것입니다.

그러나 내가 기억하는 한, 메모리가 누출되는 위치에 대한 표시를 찾을 수 없었습니다.

그리고 로그에 터미널 종료 기록이 없기 때문에 Expert Advisor는 차트에서 제거되지 않고 서버를 다시 시작할 가능성이 높습니다. 그러나 이것은 확실하지 않습니다.

 
Aleksandr Slavskii #:

로그를 삭제했습니다. 하지만 문제 없습니다. 다시 하는 데 오래 걸리지 않을 것입니다. 지금 서버에서 Expert Advisor를 시작하면 내일 아침(어쩌면 더 일찍)에 로그를 확보할 수 있을 거예요.

그러나 제가 기억하는 한 메모리가 누출되는 위치에 대한 표시를 찾을 수 없습니다.

그리고 로그에 터미널 종료 기록이 없기 때문에 Expert Advisor가 차트에서 제거되지 않고 서버가 다시 시작될 가능성이 높습니다. 그러나 이것은 확실하지 않습니다.

제 질문의 의미를 이해하지 못한 것 같습니다. 메모리가 부족하여 서버가 버스트될 때 서버를 기다릴 필요가 없습니다.

코드에 객체 유출이 있는 경우 Expert Advisor가 실행 중일 때 가정용 로컬 컴퓨터에서 다시 컴파일하면 로그에 유출된 객체의 수와 유형에 대한 메시지가 표시되어야 합니다. 또는 차트에서 실행하여 한 번에 삭제하세요. 물론 누출이 있는 경우 누출에 대한 메시지도 표시되어야 합니다.

사유: