기고글 토론 "ORDER_MAGIC을 사용하여 단일 상품에서 여러 Expert Advisors와의 거래" - 페이지 2

 
ias:


2. 표현식 (int)의 의미와 int에서 취하는 값 DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP); if(DIGITS<0)DIGITS=0;


명시적 타입 변환에 대해 읽어보세요.
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
ias:

1.기사 작성자에게 감사드립니다.
2.표현식 (int)의 의미와 int에서 취하는 값 DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP)); if(DIGITS<0)DIGITS=0;
3.테스트 중에 표현식 (int) 및 SYMBOL_VOLUME_STEP이 알 수 없는 식별자 값을 사용하는 이유는 무엇이며 결과 int DIGITS에 어떤 영향을 미칩니까?
4. 인터랙션 코드는 어떻게 작동하나요?
EA가 동일한 기기에서 작동하는 경우, 동일하거나 다른 숫자 이름을 설정하는 것으로 충분할 때 상호 작용 코드가 중요합니까?

표현식(int)은 다음 표현식을 int 유형으로 변환한 것입니다.

SYMBOL_VOLUME_STEP 표현식은 ENUM_SYMBOL_INFO_INTEGER 열거형의 값 중 하나입니다.

위의 표현식은 변수가 아니므로 당연히 디버거에서 "알 수 없는 식별자"라는 값을 갖습니다,

문자 그대로 "인식할 수 없음"을 의미하며, 디버거는 추적을 위해 선언된 변수가 어떤 유형에 속하는지 이해할 수 없습니다.


Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Типы char, short, int и long - Документация по MQL5
 
ias:


4. 인터랙션 코드는 어떻게 작동하나요?
EA가 동일한 기기에서 작동할 때 상호 작용 코드가 중요한가요? 동일한 숫자 이름이나 다른 숫자 이름을 설정하는 것으로 충분하나요?

죄송합니다. 정신이 산만해져서 네 번째 질문에 답하지 못했습니다.

상호 작용 코드는 신뢰할 수 있는 여러 전문가 어드바이저를 위한 하나의 마술로 사용됩니다.

예를 들어, 아무것도 변경하고 싶지 않지만 후행 EA를 만들었고 이 EA에서 어떻게 작동하는지 테스트하고 싶다고 가정합니다. 원래 EA와 후행 EA를 시작하고 두 EA에 동일한 상호 작용 코드를 부여하면 다른 EA의 동작이 자신의 것으로 인식되는 반면 이러한 상호 작용 코드가 없는 세 번째 EA의 변경 사항은 무시됩니다(선택한 EA 쌍에 대해서는 보이지 않음).

동시에 EA 식별 코드(디지털 이름)가 다르기 때문에 일부 데이터를 개별적으로 처리할 수 있습니다,

모든 것은 요청에 따라 달라집니다 (예 : 트롤 작업에 대해서만 보고서를 작성할 수 있음).

요청에 따라 하나의 동일한 트랜잭션을 본인 또는 다른 사람의 트랜잭션으로 정의할 수 있습니다.

 
ias:

1.기사 작성자에게 감사드립니다.
2.표현식 (int)의 의미와 int에서 취하는 값 DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP)); if(DIGITS<0)DIGITS=0;
3.테스트 중에 표현식 (int) 및 SYMBOL_VOLUME_STEP이 알 수 없는 식별자 값을 사용하는 이유는 무엇이며 결과 int DIGITS에 어떤 영향을 미칩니까?
4. 인터랙션 코드는 어떻게 작동하나요?
EA가 동일한 기기에서 작동하는 경우, 동일하거나 다른 숫자 이름을 설정하는 것으로 충분할 때 상호 작용 코드가 중요합니까?

코드의 의미를 잘 이해하지 못하시는 것 같으니 자세히 설명해 드리겠습니다.

int DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP)); if(DIGITS<0)DIGITS=0;

1. 상품의 랏 거래량 단계 크기인 SYMBOL_VOLUME_STEP - 거래를 위한 최소 거래량 단계 (보통 0.01)를 가져옵니다;

2. 기본 10 => -log10(0,01) = 2 또는 -log10(0,10) = 1(MQ의 경우 -log10(0,10) = 1)에서 숫자의 로그를 구합니다;

3. 결과(-2/-1)를 int 타입의 변수 DIGITS와 동일시합니다.

4. DIGITS 값이 <0이면 = 0 값을 할당합니다.

PS

(int)는 계산 결과를 int 유형으로 강제 적용하는 데 사용됩니다...

 

이 글에는 "손절매/테이크프로핏 발생" 이벤트가 반영되어 있지 않습니다. 이는 매우 강력한 누락입니다!

: 전문가 조언은 두 부분으로 구성됩니다: 첫 번째는 주어진 종목과 차트주기의 "가상 포지션" 이 0과 같을 때 작동하고 두 번째는 이 "가상 포지션 "이 0이 아닐 때 작동합니다; 전문가 조언이 이 포지션을 청산했다고 가정해 봅시다. 어떤 신호에 매수했는데 "가상 포지션 "이 +100 값을 취했다고 가정해 봅시다. 손절매가 트리거되었고 실제 "가상 포지션 "은 0 값을 취했습니다. 하지만 이 경우에는 +100이 됩니다. 전문가는 포지션이 +100이라고 "생각"하지만 실제로는 0이므로 바람직하지 않은 결과를 초래할 수 있습니다.

이 점을 설명해 주세요.

 
beast:

이 글에는 "손절매/테이크프로핏 발생" 이벤트가 반영되어 있지 않습니다. 이는 매우 강력한 누락입니다!

: 전문가 조언은 두 부분으로 구성됩니다: 첫 번째는 주어진 종목과 차트주기의 "가상 포지션" 이 0과 같을 때 작동하고 두 번째는 이 "가상 포지션 "이 0이 아닐 때 작동합니다; 전문가 조언이 이 포지션을 청산했다고 가정해 봅시다. 어떤 신호에 매수했는데 "가상 포지션 "이 +100 값을 취했다고 가정해 봅시다. 손절매가 트리거되었고 실제 "가상 포지션 "은 0 값을 취했습니다. 하지만 이 경우에는 +100이 됩니다. 전문가는 포지션이 +100이라고 "생각"하지만 실제로는 0이므로 바람직하지 않은 결과를 초래할 수 있습니다.

이 점을 설명해 주세요.

네, 이 문서에는 손절 주문 처리를 위한 모듈이 포함되어 있지 않습니다.

매직넘버를 사용할 수 있는 가능성에 대해 설명합니다.

가상 포지션을 사용하려면 가상 스톱이 필요합니다.

 

그렇다면 왜 마법이 필요할까요?

마법을 사용하여 기록을 파헤치면 손절매를 식별하고 이익을 취할 수 없기 때문에이 전문가 조언자가 주문한 주문에 대한 완전한 그림을 얻을 수 없기 때문입니다.

 
beast:

그렇다면 왜 마법이 필요할까요?

마법을 사용하여 이력을 파헤치면 손절매를 식별하고 이익을 취할 수 없기 때문에 이 전문가 조언자가 주문한 주문에 대한 완전한 그림을 얻을 수 없기 때문입니다.


트레이딩 전략의 일부로 스탑을 사용하는 것은 실수라는 것을 이해해야 합니다. 서버에 저장된 중지 주문은 문제가 발생한 상황 (서버와의 통신 고장, 시장 패닉)으로부터 보호 주문이며, 다른 경우에는 EA 신호 형태의 가상 중지 주문이 매우 적합합니다.

그러나 연습에 따르면 프로그래머는 종종 중지를 가상화하는 데 게으르다는 것을 보여줍니다. 결국 기성품 스톱 주문을 사용하는 것이 훨씬 쉽습니다.

 

계산할 때 모든 거래를 살펴볼 필요가있을 때 주어진 마술사와의 거래가 거래량을 고려하고 다른 모든 거래는 손절매 / 지분 이익으로 마감 된 사실을 확인하고있는 경우 계산 된 금액을 재설정해야합니다. 제 기사에서는 스톱로스도 고려하지 않습니다. 누가 생각했을까요... 이것은 새로운 주제이므로 실례하겠습니다.

이 마술에는 한 가지 더 있습니다. EA가 포지션을 개설하고 EA를 연결 해제하고 수동으로 포지션을 청산하면 그 후에는 잘못된 회계가 발생합니다.

그리고 상황은 무엇입니까 : 하나의 EA가 0.1 매수, 두 번째 EA가 0.1 매도, 누적 포지션이 0과 같고 두 개의 카운터 포지션이있는 것으로 간주한다고 가정 해 보겠습니다.

이 모든 것 외에도 제어 수단, 모든 마법사에 대해 계산 된 볼륨이 실제 볼륨과 일치하는지 계산하는 스크립트, 한 마법사로 열고 다른 마법사로 닫는 레벨링 수단이 필요합니다.

이것은 마법의 사용이 전혀 수요가 있는지 여부와 그렇다면 어떻게 살아야하는지에 대한 큰 의문을 제기합니다.....

각 어드바이저마다 별도의 계좌를 개설해야 하나요?

 

제가 틀렸다면 정정해주세요...

다른 EA의 운영과 포지션을 구별하기 위해 여기에서 코드와 유사한 것을 시도해야합니다. 몇 가지 의심스러운 점이 있습니다. 이 코드가 최적화되어 있나요? 이 코드는 거래 내역이 길고 이 코드를 여러 번 실행하면 컴퓨터 속도가 느려질 수 있다고 생각합니다 - 아직 증명하지는 못했지만 제 생각입니다.

예를 들어 magic_exp1_en.mq5 파일에서 prHistory_Deals(ulong &buf[],int HTD) 메서드는 버퍼 buf[]를 지금까지의 모든 거래로 채웁니다.

DEAL OUT으로 아직 채워지지 않은 마지막 DEAL IN만 저장하면 성능 측면에서 더 좋지 않을까요?

제가 코드가 하는 일을 제대로 이해하지 못했을 수도 있습니다. 제 생각에 magic_exp1_en.mq5에서 코드가 하는 일은 태초부터의 전체 거래 내역에 대해 :-) 모든 DEAL_TYPE_SELL과 DEAL_TYPE_BUY의 거래량 합계가 동일한지, 이 경우 오픈 포지션이 없는지 확인합니다. 매도 거래량이 매수 거래량보다 많으면 일반적인 매도 포지션이, 매수 거래량이 매도 거래량보다 많으면 매수 포지션이 생깁니다.

다른 방법은 없나요?