찻주전자의 질문 - 페이지 56

 
Interesting :

틱 핸들러와 달리 타이머는 주말이나 근무일을 신경 쓰지 않고 기간으로 지정된 특정 시간 후에 실행됩니다.

물론 타이머의 과중한 처리의 경우에는 슬립이나 첫 번째 틱(옵션이 많이 있음)까지 잠시 끊는 것이 낫지만, 타이머 처리가 그다지 어렵지 않고, 기간이 충분히 길면 타이머를 끌 수 없습니다.

또한 타이머 처리에서 근무일인지 아닌지에 대한 확인을 제공할 수 있습니다.

필요한 경우 주말에 과중한 계산을 예약하고(예: Expert Advisor의 자동 최적화 ) 타이머에서 이 프로세스를 시작할 수 있습니다. 계산 실행이 끝날 때(또는 실행이 시작될 때) 타이머가 올바르게 차단될 수 있습니다.

다중 통화 Expert Advisor의 OnTimer() 함수를 통해 테스터에서 테스트하는 경우. 타이머가 10초 간격으로 설정되어 있다고 가정해 보겠습니다. 테스트 기간 동안 주말 내내 똑딱 거리나요? 내가 이해하기로는 블라디미르가 정확히 이것을 의미했습니다. 즉, 타이머에 토요일과 일요일을 건너뛰도록 지시하면 테스트가 훨씬 빨라집니다.
 
tol64 :
다중 통화 Expert Advisor 의 OnTimer() 함수를 통해 테스터에서 테스트하는 경우. 타이머가 10초 간격으로 설정되어 있다고 가정해 보겠습니다. 테스트 기간 동안 주말 내내 똑딱 거리나요? 내가 이해하기로는 블라디미르가 정확히 이것을 의미했습니다. 즉, 타이머에 토요일과 일요일을 건너뛰도록 지시하면 테스트가 훨씬 빨라집니다.

1. 별로 복잡한 계산 없이 주말에 타이머를 끄려고 했는데, 별 차이를 못 느꼈습니다(물론 차이는 있지만). 지금은 타이머를 끄지 않기로 했습니다.

2. 예, 타이머가 설정되어 있으면 테스터 또는 일반 모드에서 차이 없이 타이머가 꺼질 때까지 작동합니다. 테스터에 대해 이야기하고 있다면 10초 간격으로 전체 테스트 기간 동안 10초마다 작업이 발생합니다.

주말 타이머를 중지할 때 몇 가지 솔루션이 있습니다.

ㅏ. 타이머를 종료하고 상태를 변수에 씁니다. 주 기기의 첫 번째 틱(또는 "스파이"의 신호)에서 타이머를 다시 시작할 수 있습니다. 이 방법은 비유동 시장에서 틱이 누락되거나 틱이 지연될 확률과 관련된 단점이 있습니다. 틱 건너뛰기는 거래 서버에 대한 연결 부족으로 인해 발생할 수도 있습니다.

비. 일정 시간 동안 슬립에 브레이크를 겁니다. 좋은 점은 기간이 정확하게 설정되어 있다는 것이고 나쁜 점은 이 방법을 사용하면 타이머뿐만 아니라 전체 전문가가 "X" 시간까지 비활성화된다는 것입니다.

테스터가 모든 위치와 주문을 처리하지만.

에. 타이머 기간을 늘려 일시 중지를 구현할 수 있습니다. 타이머가 "깨어나야"하는 시간을 미리 알고 있고 Expert Advisor의 작업이 멈추지 않기 때문에 편리합니다. 작동 상태 또는 대기 모드에서 타이머를 추적해야 하는 것은 불편합니다.

에. 타이머 채우기를 두 그룹으로 나눕니다. 첫 번째는 지속적으로 수행되고(예: 연결 상태 확인) 두 번째는 조건(근무일, 연결 있음, 거래 허용 등)에 따라 수행됩니다. .

 
Interesting :


필요한 경우 주말에 과중한 계산을 예약하고(예: Expert Advisor의 자동 최적화 ) 타이머에서 이 프로세스를 시작할 수 있습니다. 계산 실행이 끝날 때(또는 실행이 시작될 때) 타이머가 올바르게 차단될 수 있습니다.

안녕하세요! 너무 재미있네요 어제 주말에 자동 최적화라는 비슷한 아이디어가 있었는데 질문글을 쓸 시간이 없어서 다음과 같은 글을 쓰고 싶었습니다.

1. 이것이 가능합니까? 코드에서 어떻게 보일지.. 이를 위해 온라인 틱은 더 이상 필요하지 않으며 함수는 단순히 루프에서 회전합니다..

2. 이것에 대해 읽을 생각이 있습니까? 어떤 스레드가 분기입니까?

3. 챔피언십에 신청하면 차에 싣지 않을까요? 이것은 아마도 주최측의 질문일 것입니다.

 
MetaDriver :
글쎄, 적절한 시간 프레임에 일반 Expert Advisor에서 모든 것을 계산하고 결과를 OnTester()에 표시하십시오. 거래할 필요가 전혀 없습니다. 문제가 있습니까?

감사합니다.

가격이 테이크 또는 스탑 로스에 도달하지 않은 경우 제 시간 에 포지션을 청산하는 또 다른 질문이 생겼습니다.

나는 주문 작업을위한 라이브러리가있는 것 같습니다 ... 그것을 집어 들었습니다 ... 그러한 절차가 없다고 맹세합니다 ...

따라서 문제는 일정 시간(예: 1일)이 경과한 후 주문을 종료하려면 어떤 코드를 입력해야 하느냐는 것입니다.

 

AccountInfoDouble (ACCOUNT_BALANCE) != AccountInfoDouble(ACCOUNT_EQUITY)

이것이 내가 거래가 열려 있는지 확인하는 방법입니다 ...

OrdersTotal ()!=0은 작동하지 않음)))) 매우 흥미로운 결함)

 
papaklass :
위치의 경우 PosirionTotal()이 있습니다. 보류 중인 주문에 대해서만 OrdersTotal().

if ( PositionsTotal() == 1 )

똑같다... 반응이 없다

// 정상적으로 열림

if ( TimeActivation ( 1 ) )

{

if ( _1_operation == 1 && 구매 ( 0.10 ) == 1 ) { Sleep(600000); }

if ( _1_operation == -1 && Sell ( 0.10 ) == 1 ) { Sleep (600000); }

}

// 테이크 또는 스톱 전에 닫을 수 없습니다.

if ( TimeActivation ( 2 ) )

{

if ( PositionsTotal() == 1 ) /// 작동하지 않음 )))

{

if ( _1_operation == 1 && Sell ( 0.10 ) == 1 ) { Sleep (600000); }

if ( _1_operation == -1 && 구매 ( 0.10 ) == 1 ) { 절전(600000); }

}

}

 
BaTTLeBLooM :

감사합니다.

따라서 문제는 일정 시간(예: 1일)이 경과한 후 주문을 종료하려면 어떤 코드를 입력해야 하느냐는 것입니다.

물론이죠.

대략적으로: 변수에서 발견한 순간을 기억합니다. 원하는 기간을 즉시 추가합니다 (예: 1일 = 60 * 60 * 24) .

그런 다음 각 틱(또는 시간)에서 현재 시간 이 제어 시간보다 커졌는지 여부를 추적합니다. 그렇다면 닫습니다. // if (TimeCurrent() > MyControlTime) CloseMyPosition();

Документация по MQL5: Дата и время / TimeCurrent
Документация по MQL5: Дата и время / TimeCurrent
  • www.mql5.com
Дата и время / TimeCurrent - Документация по MQL5
 
BaTTLeBLooM :

if ( PositionsTotal() == 1 )

똑같다... 반응이 없다

// 정상적으로 열림

if ( TimeActivation ( 1 ) )

{

if ( _1_operation == 1 && 구매 ( 0.10 ) == 1 ) { Sleep(600000); }

if ( _1_operation == -1 && Sell ( 0.10 ) == 1 ) { Sleep (600000); }

}

// 테이크 또는 스톱 전에 닫을 수 없습니다.

if ( TimeActivation ( 2 ) )

{

if ( PositionsTotal() == 1 ) /// 작동하지 않음 )))

{

if ( _1_operation == 1 && Sell ( 0.10 ) == 1 ) { Sleep (600000); }

if ( _1_operation == -1 && 구매 ( 0.10 ) == 1 ) { 절전(600000); }

}

}

사실 여기에 무엇을 썼는지 명확하지 않지만 PositionTotal()은 분명히 그것과 아무 관련이 없습니다.

검사 전에 Print() 를 입력하십시오. =1 ?:

 Print ( "PositionsTotal=" , PositionsTotal ());
if ( PositionsTotal () == 1 ) /// НЕ ХРЕНА НЕ РАБОТАЕТ )))
 
tol64 :

Konstantin Gruzdev는 그의 기사에서 "스파이"와 "에이전트"로 흥미로운 방법을 제안했습니다. )) 하지만 그의 "에이전트" 인 exSpy 제어판 MCM 이 작동하고 싶지 않은 것이 있습니다.

이제 기사에 게시된 버전을 살펴보겠습니다. 현재 여러 스파이 전문가가 만들어졌으며 훌륭하게 작동합니다.

메타드라이버 :

이 기술은 테스터에서 작동하지 않을 것이라고 생각합니다.

공장.

 
MetaDriver :

물론이죠.

대략적으로: 변수에서 발견한 순간을 기억합니다. 원하는 기간을 즉시 추가합니다 (예: 1일 = 60*60*24) .

그런 다음 각 틱(또는 시간)에서현재 시간 이 제어 시간보다 커졌는지 여부를 추적합니다. 그렇다면 닫습니다. // if (TimeCurrent() > MyControlTime) CloseMyPosition();

변수에 대한 것은 옵션이지만 보다 안정적인 클로징이 필요한 경우 터미널/어드바이저를 다시 시작한 후에도 매직을 사용하여 주문을 식별하고 오픈 시간을 확인할 수 있습니다.

 //закрывает ордера с заданным меджиком по прошествию определенного периода(в сек)
void closeOrderByTime( int magic, int period) {
         MqlTradeRequest request;
         MqlTradeResult tradeResult;
         MqlTradeCheckResult checkResult;
         ulong ticket = - 1 ;
         int cnt = OrdersTotal ();
         for ( int i=cnt- 1 ; i>= 0 ; i--) {  
                ticket = OrderGetTicket (i);
                 if ( OrderGetInteger ( ORDER_MAGIC ) == magic && ticket> 0 && TimeCurrent () > OrderGetInteger ( ORDER_TIME_SETUP )+period) {
                        request.action = TRADE_ACTION_REMOVE ;
                        request.order = ticket;
                         if ( OrderCheck (request,checkResult) ) {
                                 OrderSend (request, tradeResult);
                        } else {
                                 MessageBox ( "Ошибка" );
                        }
                }
        }
}