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

 
Alexey Navoykov :
그러면 텍스트 핸들은 어디에서 보았습니까? ) 네, 그리고 저자에게는 임무가 있습니다. 그리고 조건을 복잡하게 하면 핸들을 구조체 형태로 지정할 수도 있습니다.
예... 등등:
 struct A { int i; };
bool SelectHandle( A& ) { return true ; }
A GetHandle() { A a; return a; }
A NewHandle;
datetime time = MACRO100( NewHandle, TimeCurrent() );

너무 작동

 
A100 :
예... 등등:

너무 작동

배열 형태로 유지됨) 또한 먼저 바이트 배열을 만든 다음 독점 라이브러리 TypeToBytes를 사용하여 구조로 전송해야 합니다.

 
Alexey Navoykov :

배열 형태로 유지됨) 또한 먼저 바이트 배열을 만든 다음 독점 라이브러리 TypeToBytes 를 사용하여 구조로 전송해야 합니다.

확인할 수 없습니다. 그런 라이브러리 파일이 없습니다(빌드 1961x32). 일주일이면 직접 보실 수 있습니다.

 
Alexey Navoykov :
그러면 텍스트 핸들은 어디에서 보았습니까? ) 네, 그리고 저자에게는 임무가 있습니다. 그리고 조건을 복잡하게 만들면 핸들을 구조의 형태로 지정할 수도 있습니다.

문제에 대한 링크를 제공하십시오.
고맙습니다.

 
Sergey Dzyublik :

문제에 대한 링크를 제공하십시오.
고맙습니다.

https://www.mql5.com/ru/forum/1111/page2350#comment_9974834

 

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

오류, 버그, 질문

파블릭_ , 2018.12.21 17:23

 int MACROS_helper_PrevHandle;
datetime MACROS_helper_time;
#define MACROS(NEW_HANDLE_, FN_)   (MACROS_helper_PrevHandle=GetHandle())* 0 == 0 ?  \
                                     (MACROS_helper_time=SelectHandle(NEW_HANDLE_) ? FN_ : 0 )* 0 == 0 ? \
                                        SelectHandle(MACROS_helper_PrevHandle)* 0 == 0 ? MACROS_helper_time : 0 : 0 : 0
불행히도 이 옵션은
Alexey Navoykov :
전역 변수를 사용합니다.


나는 그 문제에 대해 별로 생각하지 않았다. 바로 해결책을 찾지 못해서 포럼에서 배우기로 했습니다. 음모는 흥미롭지 않습니다. 왜냐하면. 실전에서 사용하고 싶습니다 - 가상 성경 없이는 전투 고문을 상상할 수 없습니다.

글쎄, 두 사람이 이미 추가없이 솔루션이 있다고 말했기 때문에. 변수, 나는 주말에 그것에 대해 생각할 것입니다.

나는 NewHandle이 상수일 수 있다는 것을 분명히 할 것입니다. 저것들. 유효한 전화

time = MACROS( 0 , TimeCurrent ()); // TimeCurrent из 0-хендла.
time = MACROS( 1 , TimeCurrent ()); // TimeCurrent из 1-хендла.

MACROS( 0 , SymbolInfoTick ( _Symbol , Tick)); // SymbolInfoTick из 0-хендла.

#define Bid SymbolInfoDouble ( _Symbol , SYMBOL_BID )
Price = MACROS( 3 , Bid ); // Bid из 3-хендла.
 

fxsaber :

나는 NewHandle이 상수일 수 있다는 것을 분명히 할 것입니다. 저것들. 유효한 전화

모든 것이 작동 중입니다.

 #include "Простейшее.mqh"
int GetHandle() { return 0; }
bool SelectHandle( int ) { return true; }
#define Bid SymbolInfoDouble ( _Symbol , SYMBOL_BID )
void OnStart ()
{
         datetime time = MACRO100( 0 , TimeCurrent ());
                 time = MACRO100( 1 , TimeCurrent ());
         MqlTick tick;
        MACRO100( 0 , SymbolInfoTick ( _Symbol , tick));
         double price = MACRO100( 3 , Bid );
}

기회가 또 언제 ... 실제 수준을 확인하십시오
토론으로 판단하면 ... 여기 ... 진지한 프로게이머는 솜씨 좋게 과장된 단어를 저글링합니다. OOP 등에 대해 (나는 일반적으로 말의 절반 이상을 이해하지 못합니다)

진짜 뭐야?! 싸고 야한 것? 아니면 아직 뽑히지 않았습니까?
다시 한 번 강조합니다. 복잡한 ... 특별하거나 특별한 지식이 필요한 경우 - 나는 즉시 글을 쓰지만 여기 - 가장 간단한 (!). 따라서 두뇌를 켜고 옵션을 작성하십시오 ... 아니면 기다리십시오!

 
https://www.mql5.com/en/forum/1111/page2350#comment_9974834 에서 시작하는 별도의 주제에 넣을 수 있습니까? 여기서 모든 것이 손실될 것입니다. A100이 얼마나 액체인지 확인하고 싶습니다.
 
pavlick_ :
, A100이 얼마나 액체인지 보고 싶어요.

왜 비어 있습니까? 세 자리 수의 직업을 더 잘 만들어 봅시다. 그러면 중재가 누가 그것을 망쳤는지 결정할 것입니다.

 
fxsaber :
불행히도 이 옵션은


나는 그 문제에 대해 별로 생각하지 않았다. 바로 해결책을 찾지 못해서 포럼에서 배우기로 했습니다. 음모는 흥미롭지 않습니다. 왜냐하면. 실전에서 사용하고 싶습니다 - 가상 성경 없이는 전투 고문을 상상할 수 없습니다.

음 x, 모두가 이미 생각했습니다. 내가 올바르게 이해한다면 매크로에서 반환되는 유형의 가변성이 중요합니다. C++에서 해결 가능

 //------------------------------------ 1 вариант
template < typename T>
T f(T(*fp)()) {...}
//------------------------------------ 2 вариант
template < typename T>
struct Store {
   static inline T val;
};
int MACROS_helper_PrevHandle;
#define MACROS(NEW_HANDLE_, FN_)   (MACROS_helper_PrevHandle=GetHandle())* 0 == 0 ?           \
      (Store<decltype(FN_)>::val=SelectHandle(NEW_HANDLE_) ? FN_ : 0 )* 0 == 0 ?               \
      SelectHandle(MACROS_helper_PrevHandle)* 0 == 0 ? Store<decltype(FN_)>::val : 0 : 0 : 0

그리고 gcc 전처리기는 일반적으로 이것을 할 수 있습니다:

 #define M(FN_) ({ int a= 5 ; ; FN_;})
int ff() { return 50 ;}

int val = M(ff());

이 모든 것을 µl로 구현하려는 시도는 실패로 끝났습니다. 더 나은 솔루션을 추가할 수 있습니다. SelectHandle(new, set_next=INT_MAX). 하지만 누군가는 까다로운 매크로로 당신을 놀라게 할 것입니다.