오류, 버그, 질문 - 페이지 1845

 
Nikolai Semko :
개발자에게 질문 요청합니다.
시간 프레임을 전환할 때 일부 변수 또는 배열을 저장하여 다시 초기화하지 않도록 하는 기능이 실제로 부족합니다. 아니면 어떻게 든 통해 할 수 있습니다 이유 코드 REASON_CHARTCHANGE를 지정하는 OnDeinit ?
내 프로그램 본문에는 시간 프레임에 의존하지 않는 다소 번거로운 계산이 있다는 것뿐입니다. 매번 다시 계산하고 싶지는 않습니다. 제 느낌으로는 타임프레임 변경 시 다시 초기화되지 않는 특수한 형태의 전역변수가 부족합니다. 단말의 전역 변수를 사용하지 않고 간단한 변수로 탬버린으로 하는 방법을 배웠는데, 구조체나 배열에서는 구현하는 방법을 상상조차 할 수 없고 단순히 그런 가능성은 존재하지 않는 것 같습니다. 물론 자원을 통해 가능하지만 이것은 어떻게 든 매우 비뚤어진 것입니다.
지표를 사용해보십시오. 거기에서 TF를 변경할 때 전역 변수가 다시 초기화되지 않습니다(내가 기억하는 한). 또는 파일을 통해.
 
Konstantin :

어떻게?

예를 들면 다음과 같습니다.

 struct MyArray
{
   double buff[];
   
   MyArray()
   {
   }
   MyArray( int n )
   {
       ArrayResize ( buff, n );
   }
   MyArray( const MyArray& other )
   {
       ArrayCopy ( buff, other.buff );
   }
   ~MyArray()
   {
       ArrayFree ( buff );
   }
   
   void operator =( const MyArray& other )
   {
       ArrayCopy ( buff, other.buff );
   }
   
   void assign( int n, const double val = 0.0 )
   {
       ArrayResize ( buff, n );
       ArrayInitialize ( buff, val );
   }
};

MyArray func()
{
   MyArray myArray;
   
   // Заполняем массив.
   
   return myArray;
}
 
Koldun Zloy :

예를 들면 다음과 같습니다.

이것은 질문한 것이 아니지만 아마도 이것은 질문의 저자에게 적합할 것입니다.

서비스 데스크에는 거부가 없습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

fxsaber , 2017.04.02 10:34

함수에 의해 배열을 반환하는 가능성을 도입하여 배열에 대한 포인터 부족을 보완할 수 있습니까?
 int [] Func()
{
   int a[] = { 1 , 2 , 3 };

   return (a);
}

Print (Func()[ 1 ]); // 2 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

fxsaber , 2017.04.01 10:20

[] 연산자가 문자열 유형 에 한 번 추가되었습니다.
 string Str = "A B C" ;
Print ( CharToString ( Str[ 1 ] )); // B


개발자가 배열에 = 연산자를 추가할 수 있습니까?

 int a[], b[];
a = b ; // ArrayCopy(a, b);


포인터가 없기 때문에 이러한 연산자는 언어를 더 유연하게 만들 것입니다. 매우 편리한 상황이 있었습니다.

 
Alexey Kozitsyn :
지표를 사용해보십시오. 거기에서 TF를 변경할 때 전역 변수가 다시 초기화되지 않습니다(내가 기억하는 한). 또는 파일을 통해.

모든 것이 정확히 반대입니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

전역 프로그램 변수 및 기타 유용한 지식의 초기화.

Artyom Trishkin , 2016.12.05 20:27

SD에서 받은 답변:


Expert Advisors의 전역 변수 기능을 안전하게 사용할 수 있다고 생각합니다.


 
Alexey Kozitsyn :
지표를 사용해보십시오. 거기에서 TF를 변경할 때 전역 변수가 다시 초기화되지 않습니다(내가 기억하는 한). 또는 파일을 통해.

지표를 사용하고 있습니다. 다시 초기화되었습니다. 파일은 전혀 선택사항이 아니며 속도가 느리고 고품질의 동기화를 제공하기 어렵습니다. 그런 다음 ResourceCreate를 통해 더 좋습니다. 그러나 이 모든 것이 매우 불편합니다. 수십 개의 어레이가 있고 그 중 일부는 각각 수 Mb인 경우 적어도 두 개의 쓰기 및 읽기 기능을 작성하고 핸들러를 생성해야 합니다. 온디니트. 예, 이미 이 모든 것을 실험했습니다. 동기화 문제가 발생했습니다. tk. 리소스와 파일은 멀티스레딩 조건에서 별도의 삶을 살고 있습니다. 특정 이벤트(제 경우에는 기간 변경)에서 재초기화하지 않을 가능성이 충분하지 않을 때 꼽추를 조각하는 이유는 무엇입니까?
 
Nikolai Semko :

지표를 사용하고 있습니다. 다시 초기화되었습니다. 파일은 전혀 선택사항이 아니며 속도가 느리고 고품질의 동기화를 제공하기 어렵습니다. 그런 다음 ResourceCreate를 통해 더 좋습니다. 그러나 이 모든 것이 매우 불편합니다. 수십 개의 어레이가 있고 그 중 일부는 각각 수 Mb인 경우 적어도 두 개의 쓰기 및 읽기 기능을 작성하고 핸들러를 생성해야 합니다. 온디니트. 예, 이미 이 모든 것을 실험했습니다. 동기화 문제가 발생했습니다. tk. 리소스와 파일은 멀티스레딩 조건에서 별도의 삶을 살고 있습니다. 특정 이벤트(제 경우에는 기간 변경)에서 재초기화하지 않을 가능성이 충분하지 않을 때 꼽추를 조각하는 이유는 무엇입니까?
답은 여기에 있습니다 .
 
Artyom Trishkin :

모든 것이 정확히 반대입니다.



감사합니다 어드바이저에 대해 몰랐습니다!
하지만 젠장, 만약 내가 지표에 이 칩이 필요하다면!

 
Koldun Zloy :

예를 들면 다음과 같습니다.


예를 들어 주셔서 감사합니다. 하지만 하나의 배열 때문에복잡한 유형 의 개체를 만들고 싶지는 않습니다. 모두 중복 코드처럼 보입니다.)
 
fxsaber :

이것은 질문한 것이 아니지만 아마도 이것은 질문의 저자에게 적합할 것입니다.

서비스 데스크에는 거부가 없습니다.



배열에 대한 포인터를 도입하는 것이 더 일반적이지만 이 기능을 도입하기를 바랍니다.
 
Artyom Trishkin :

모든 것이 정확히 반대입니다.

아, 젠장 ... 네, 당신의 게시물에 이끌려 모든 것을 혼란 시켰습니다 :)