Experts: 지방 패널 - 페이지 2

 
Vigor:
매뉴얼을 만들겠지만 짧게 만들겠습니다. ...................

그리고 자신만의 기능(표시기, 로그 요소, 상태 등)을 추가하기 위한 매뉴얼입니다.

이상적인 (그러나 쉽지는 않은) 변형 : 플러그인처럼 모든 기능 요소를 "쉽게 부착 할 수 있도록"만들어 버섯처럼 코드베이스에서 번식하고 번식하도록하는 것 ... :)

--

멋진 일을 하셨어요, 이고르. 고마워요! 나는 저녁 내내 그것을 가지고 놀았습니다.

아직 코드에 들어가 보지는 못했지만 이번 주말에 해볼 계획입니다. 일부 기능이 어떻게 구현되는지 자세히 알고 싶어요.

코드를 간략히 살펴본 느낌은 매우 유쾌합니다.

 

블록은 기초적인 방식으로 작성됩니다! MQL에 get_declared_classes, class_exists 및 is_subclass_of와 유사한 메커니즘이 있다면 새로운 기능의 전체 설치는 단지 새 클래스(기본 클래스 중 하나의 자손)의 인코딩/추가 파일일 것입니다.

//+------------------------------------------------------------------+
class CAlgoBlockLogicOr: public CAlgoBlockLogic {
        public:
        //+------------------------------------------------------------------+ 
        void CAlgoBlockLogicOr() {              
                setLabel("name",12,20,1,"OR");//--uniq, x, y, 글꼴 크기, 제목                
                //--커넥터
                CConnectPointer* pointer1 = new CConnectPointer();
                pointer1.connectType = ALGO_BOOL;
                pointer1.connectDirection = ALGO_DIRECTION_IN;
                pointer1.x = 0;
                pointer1.y = 0.11;
                connectPointers.Add(pointer1);
                
                CConnectPointer* pointer2 = new CConnectPointer();
                pointer2.connectType = ALGO_BOOL;
                pointer2.connectDirection = ALGO_DIRECTION_IN;
                pointer2.x = 0;
                pointer2.y = 0.89;
                connectPointers.Add(pointer2);
                
                CConnectPointer* pointer3 = new CConnectPointer();
                pointer3.connectType = ALGO_BOOL;
                pointer3.connectDirection = ALGO_DIRECTION_OUT;
                pointer3.x = 1;
                pointer3.y = 0.5;
                connectPointers.Add(pointer3);
        }
        
        bool operate(CAlgoBlockLogic* s1, CAlgoBlockLogic* s2) {
                bool S1 = s1.process();
                bool S2 = s2.process();
                if ( S2 || S1 ) {  
                        return (true);
                }
                return (false);
        }
        
        //+------------------------------------------------------------------+
};

그리고 시각적 모드에서 코드를 삽입하면 새 블록이 스스로 추가됩니다. 즉석에서 EA를 다시 컴파일하고 새로운 "생성된" 포함을 선택하는 것은 이미 해결되었습니다. 이것이 현재 테스터용 블록의 입력 매개변수 업데이트가 구현되는 방식입니다.

 
안녕하세요 작성자님, 조립 된 블록의 스크린 샷이나 테스트에서 그러한 그림을 제공 한 저장된 파일을 게시 할 수 있습니까? 좋은 매뉴얼이 될 것입니다.
 

코드베이스에 대한 설명에서는 4개의 블록으로 구성된 동일한 구성입니다. 연산 블록의 300 값만 ">"입니다. 회로도 파일은 아카이브에 있으며 다음 폴더에 압축을 풉니다.

C:\문서 및 설정\모든 사용자\애플리케이션 데이터\MetaQuotes\터미널\공통\.

(경로가 다를 수 있으므로 fatpanel.dat 파일을 검색하여 교체하는 것이 좋습니다.)

파일:
FATPANEL.rar  1 kb
 

새 버전이 준비되는 동안 2005년부터 동일한 전략을 실행하는 모습을 보여드리겠습니다. 테스트 모드 "매 틱". 후행 중지를 사용한 실험:

다이어그램은 전략의 모든 매개변수와 원리를 보여줍니다. 재투자는 없습니다. 추가 블록이 포함된 버전이 곧 게시될 예정입니다.

전략 테스터 보고서
메타시세 데모 (빌드 370)

설정
전문가 어드바이저: FatPanel
기호: EURUSD
기간 M1 (2005.01.01 - 2010.12.17)
입력 매개변수:
브로커: 메타퀘츠 소프트웨어 주식회사
통화: USD
초기 보증금: 10 000.00
레버리지: 1:100

결과
Bars: 2095758 Tiki: 39061924
순이익 468 436.28 총 이익 1 377 840.48 총 손실 -909 404.20
수익성 1.52 승리 기대치 84.33
회복 계수: 16.62 샤프 비율: 0.05

대차 대조표 감소:
절대 대차 대조표 하락폭: 4 393.10 최대 잔액 감소: 5 593.40 (8.46%) 상대적 잔액 감소: 8.46% (5 593.40)
자금 감소:
펀드의 절대 잔액 감소: 4 622.90 최대 자금 감소 6 119.20 (9.21%) 펀드의 상대적 하락폭: 9.21% (6 119.20)

총 거래 수 5555 공매도 거래 (% 원): 3237 (56.32%) 롱 거래 (% 원): 2318 (60.05%)
총 거래 건수 268659 수익 거래 (전체의 %): 3215 (57.88%) 손실 거래(전체 대비 %) 2340 (42.12%)

가장 큰 수익을 낸 거래: 8 040.10 가장 큰 손실 거래: -7 181.70

평균 수익 거래: 428.57 평균 손실 거래 -388.63

최대 연속 승리 횟수(수익): 75 (9 306.86) 최대 연속 손실 횟수 (손실): 24 (-13 829.70)

최대 연속 수익 (승리 횟수): 12 396.20 (14) 최대 연속 손실 (손실 횟수): -13 829.70 (24)

평균 연속 수익 3 평균 연속 손실 2

 
거래 횟수 제한은 지정된 랏으로 각 틱에 대한 거래를 시작하기 때문에 실제가 될 것입니다.
Документация по MQL5: Торговые функции / HistoryDealsTotal
Документация по MQL5: Торговые функции / HistoryDealsTotal
  • www.mql5.com
Торговые функции / HistoryDealsTotal - Документация по MQL5
 
이런 식으로 포지션의 볼륨을 확보할 수 있습니다. "느낌에 따라" 지속적으로 리필되는 부분은 결국 입찰에서 국부적 극한값을 찾습니다. 그리고 한 방향으로 1개 포지션만 오픈하도록 제한하면 더 유리한 오픈 시점을 놓치고 전략이 실패하게 됩니다. 이 제한을 추가하는 것은 어렵지 않습니다: 각 방향에 대해 +3 블록. AND 및 IS_BUY(또는 IS_SELL) + NOT
 
Vigor:
이런 식으로 포지션의 볼륨을 확보할 수 있습니다. "느낌에 따라" 지속적으로 리필되는 부분은 결국 입찰에서 국부적 극한값을 찾습니다. 그리고 한 방향으로 1개 포지션만 오픈하도록 제한하면 더 유리한 오픈 시점을 놓치고 전략이 실패하게 됩니다. 이 제한을 추가하는 것은 어렵지 않습니다: 각 방향에 대해 +3 블록. AND 및 IS_BUY(또는 IS_SELL) + NOT
감사합니다, 최종 볼륨은 알 수 없습니다, 나쁘다....
 

0.2 버전이 작동하지 않습니다. 어떻게 하면 작동하게 할 수 있나요?

 

이 문제는 터미널의 최근 빌드 중 하나에서 발생했습니다.

https://www.mql5.com/ru/forum/1111/page232

터미널이 최신 버전으로 업데이트된 경우(수정된 경우), 표시기(mql5/indicators/fatpanel/ 폴더에 있음)와 Expert Advisor(mql5/experts/fatpanel/)를 다시 컴파일해야 합니다.