MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1099

 
Igor Makanu :

메모리 할당 은 예제 1과 예제 2 모두에 있습니다.

예제 2는 선언과 초기화 둘 다이며 예제 1은 선언일 뿐입니다.

도움말에서 이에 대해 더 명확하게 작성할 수 있습니다. 나는 즉시 그것을 발표했다. 내 클래스에 정적 계산이 있고 new 연산자를 통해 개체를 만들 필요가 없습니다.

말해봐, 내가 그런 일을 하고 싶어서 클래스를 선언하고 배열을 선언하고 배열에 클래스에 대한 포인터를 저장하고 싶은데, 이것이 가능한지 아닌지?

 
Seric29 :

말해봐, 내가 그런 일을 하고 싶어서 클래스를 선언하고 배열을 선언하고 배열에 클래스에 대한 포인터를 저장하고 싶은데, 이것이 가능한지 아닌지?

계속해서.... 클래스는 주로 int, double과 같은 데이터 유형입니다.

이 유형의 데이터 배열을 원하십니까? - 배열을 선언하고 배열이 동적이면 크기를 변경한 다음 필요한 데이터로 EACH ELEMENT를 초기화합니다. - 포인터가 필요하고 클래스에 대한 포인터로 초기화하고 클래스 인스턴스가 필요하면 배열의 각 요소가 포인터이지만 객체 자체

이것이 OOP의 본질입니다. 모든 클래스는 무엇보다도 사용자 정의 데이터 유형이라는 것입니다.... 이것에 대해 얼마나 말해야 할지 모르겠지만 일반 데이터 유형으로 작업하는 기술, 그러나 클래스 내부에 작성할 내용은 개인적인 문제이지만 새 인스턴스의 초기화는 항상 생성자의 시작과 함께 시작되며 생성자가 어디에 있는지 - 기본적으로 매개변수가 있든 없든 이렇게 하면 개체가 초기화되었습니다 ...... 휴, 하지만 여전히 책을 읽습니다. 질문은 여기에서 작동하지 않습니다.

 
Igor Makanu :

일반적으로 그들은 주문의 개시 가격에서 가장 극단적인 최고/하한 주문을 결정한 다음 특정 값을 추가하고 가격이 이 수준을 벗어날 때 모니터링하는 새 가격을 얻습니다. 조건 및 새 주문을 하거나 즉시 최대 주문 수에 초점을 맞춘 보류 중인 주문 그리드를 표시한 다음 이 그리드를 동반합니다.

지나치지 않은 것에 감사합니다만, 이 얘기가 아니라 차트의 점선 그리드에 대해 말씀드리는 것입니다.


MT4 및 MT5의 그리드에 대해 수평 레벨이 어떻게 계산되는지 알려주십시오. 고정되지 않은 눈금을 사용하면 차트를 스크롤할 때 이동하고 MT4 및 MT5에서는 약간 다르게 이동합니다. 들여쓰기, 바인딩 및 기타 항목으로 추측하지 않기 위해 누군가가 계산 방법을 알고 있을 수 있습니다.

 
Andrey Sokolov :

지나치지 않은 것에 감사합니다만, 이 얘기가 아니라 차트의 점선 그리드에 대해 말씀드리는 것입니다.


MT4 및 MT5의 그리드에 대해 수평 레벨이 어떻게 계산되는지 알려주십시오. 고정되지 않은 눈금을 사용하면 차트를 스크롤할 때 이동하고 MT4 및 MT5에서는 약간 다르게 이동합니다. 들여쓰기, 바인딩 및 기타 항목으로 추측하지 않기 위해 누군가가 계산 방법을 알고 있을 수 있습니다.

그것은 단순히 화면 해상도에 따라 창을 동일한 부분으로 나눕니다.

MT4와 MT5 모두 세로로 15개로 나눕니다

 
Igor Makanu :

계속해서.... 클래스는 주로 int, double과 같은 데이터 유형입니다.

이 유형의 데이터 배열을 원하십니까? - 배열을 선언하고 배열이 동적이면 크기를 변경한 다음 필요한 데이터로 EACH ELEMENT를 초기화합니다. - 포인터가 필요하고 클래스에 대한 포인터로 초기화하고 클래스 인스턴스가 필요하면 배열의 각 요소가 포인터이지만 객체 자체

이것이 OOP의 본질입니다. 모든 클래스는 무엇보다도 사용자 정의 데이터 유형이라는 것입니다.... 이것에 대해 얼마나 말해야 할지 모르겠지만 일반 데이터 유형으로 작업하는 기술, 그러나 클래스 내부에 작성할 내용은 개인적인 문제이지만 새 인스턴스의 초기화는 항상 생성자의 시작과 함께 시작되며 생성자가 어디에 있는지 - 기본적으로 매개변수가 있든 없든 이렇게 하면 개체가 초기화되었습니다 ...... 휴, 하지만 여전히 책을 읽습니다. 질문은 여기에서 작동하지 않습니다.

예, 이것이 불가능하다는 것을 깨달았습니다. 배열을 생성할 때 프로그램은 유형을 지정해야 하며, 다른 클래스의 포인터를 하나의 배열에 저장하고 싶습니다. 그러면 배열이 mql에서 다른 유형이나 다른 유형이 될 수 없기 때문에 아무 것도 할 수 없습니다. 그래서 내 아이디어는 여기에서 작동하지 않습니다.

 
Seric29 :

예, 이것이 불가능하다는 것을 깨달았습니다. 배열을 생성할 때 프로그램은 유형을 지정해야 하며, 다른 클래스의 포인터를 하나의 배열에 저장하고 싶습니다. 그러면 배열이 mql에서 다른 유형이나 다른 유형이 될 수 없기 때문에 아무 것도 할 수 없습니다. 그래서 내 아이디어는 여기에서 작동하지 않습니다.

모든 작업이 진행 중입니다. 기본 클래스에서 개체를 상속하고 기본 클래스 유형으로 배열을 만듭니다. 그리고 모든 자손 객체는 배열에 있을 수 있습니다.
 
Artyom Trishkin :
모든 작업이 진행 중입니다. 기본 클래스에서 개체를 상속하고 기본 클래스 유형으로 배열을 만듭니다. 그리고 모든 자손 객체는 배열에 있을 수 있습니다.

그리고 2개의 클래스가 있는 가장 단순하고 가장 원시적인 예를 보여주고 상속과 2개의 요소(0 first class 1 2nd)의 배열에 각 클래스에 대한 링크를 넣는 방법은 무엇입니까?

 
Andrey Sokolov :

Makar, 분명히 사실이 아닌 것을 왜 쓰고 있습니까? 차트를 스크롤할 때 가로 격자선의 오프셋을 로 바꿀 수 있으며 MT4와 MT5에서는 약간 다르게 이동합니다.

나는 움직이지 않는다!

표시창이 있는 경우에만 이동하고 다른 모든 경우에는 이동하지 않습니다.

 
Seric29 :

그리고 2개의 클래스가 있는 가장 단순하고 가장 원시적인 예를 보여주고 상속과 2개의 요소(0 first class 1 2nd)의 배열에 각 클래스에 대한 링크를 넣는 방법은 무엇입니까?

 class CBase{
protected :
   int v;
   public :
                  CBase(): v( 0 )  {            }
           int     getV()         { return (v); }
   virtual int     calc() = 0 ;
};

class A: public CBase
{
   public :
   virtual int calc() { return (--v);} //декремент 
};

class B: public CBase
{
   public :
   virtual int calc() { return (++v);} //инкремент
};

//+------------------------------------------------------------------+
void OnStart ()
{
// 2 указателя которые инициализируем экземплярами обьектов  A и B
   CBase *arr_base[ 2 ];
   arr_base[ 0 ] = new A;
   arr_base[ 1 ] = new B;
// вызовем 10 раз метод calc() для каждого обьекта   
   for ( int j= ArraySize (arr_base)- 1 ; j>= 0 ; j--)
   {
       for ( int i= 0 ; i< 10 ; i++)
         {
            arr_base[j].calc();
         }
   }
   
   Print ( "A.v = " ,arr_base[ 0 ].getV());
   Print ( "B.v = " ,arr_base[ 1 ].getV());
//удалим обьекты   
   for ( int j= ArraySize (arr_base)- 1 ; j>= 0 ; j--)
   {
       delete arr_base[j];
   }   
}
//+------------------------------------------------------------------+

2020.03.22 21:21:38.544 tst (EURUSD,H1) 평균 = -10

2020.03.22 21:21:38.544 tst (EURUSD,H1) bv = 10

 
Igor Makanu :

2020.03.22 21:21:38.544 tst (EURUSD,H1) 평균 = -10

2020.03.22 21:21:38.544 tst (EURUSD,H1) bv = 10

감사해요. 그리고 기능은 가상이어야 하고 단순해서는 안 됩니다. 제가 직접 실험해 보겠습니다.