초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1482

 
MrBrooklin #:

안녕하세요 Alexey, 변수 pos_total = PositionsTotal(), 방금 글로벌 수준에서 설정되었습니다. 이제 함수 내부로 옮겼는데 이것이 문제인 것으로 밝혀졌습니다. 모든 것이 작동했습니다. 무엇이 문제일까요? 농담을 전혀 이해하지 못하겠어요!!!

이제 실험을 위해 pos_total을 다시 전역 수준으로 옮겼는데 다시 작동이 멈췄지만 함수 안에 넣으면 정상적으로 작동합니다! 적어도 저에게는 기적입니다!!!! )))

글로벌 레벨의 변수는 함수로 초기화할 수 없다는 것이 밝혀졌나요? 맞나요?

감사합니다, 블라디미르.

때때로 가능하지만 모든 변수는 아닙니다. 이 경우 EA를 실행하면 아직 오픈 포지션이 표시되지 않고 변수가 0과 같습니다....

사실 어제 포지션 샘플링을 실험 한 결과 포지션 수를 결정하는 데만 PositionsTotal ()이 필요하다는 결론에 도달했습니다. 그리고 이 숫자는 루프를 제한하기 위해서만 필요합니다.

다음은 이러한 루프입니다.

  int i = 0;
  while(bool(posTicket = PositionGetTicket(i)) && !IsStopped())
   {
    string posSymbol = PositionGetString(POSITION_SYMBOL);
    double posPrice = PositionGetDouble(POSITION_PRICE_OPEN),
           pos_tp = PositionGetDouble(POSITION_TP),
           pos_sl = PositionGetDouble(POSITION_SL);
    printf("%s Ticket %d цена = %g тейк-профит = %g стоп-лосс = %g", posSymbol, posTicket, posPrice, pos_tp, pos_sl);
    i++;
   }


는 이전 기록에서 주문 또는 거래 목록을 가져와도 작동합니다. 언젠가는 보류중인 주문의 선택이 방해가되는지 여부를 확인할 것입니다.


그리고 귀하의 경우 루프없이 작성하는 것이 더 쉽습니다.

      PositionGetTicket(PositionsTotal()-1); // получим тикет позиции

없이 작성하는 것이 더 쉽습니다.

 
Alexey Viktorov #:
이 경우 EA를 시작할 때 아직 오픈 포지션이 표시되지 않고 변수가 0과 같습니다....

그러나 여기에 문제가 있습니다. pos_total 변수를 글로벌 수준에 두었을 때이 기간 동안 50 개 이상의 포지션이 열렸지만 전체 테스트 기간 동안 EA는 오픈 포지션을 보지 못했습니다. 이해가 안 됩니다! 이 옵션이 작동하지 않는 것으로 밝혀 졌습니까?

감사합니다, 블라디미르.

 
Alexey Viktorov #:

귀하의 경우 루프 없이 작성하는 것이 더 쉽습니다.

없이 작성하는 것이 더 쉽습니다.

다른 심볼과 다른 방향으로 여러 포지션이 열려 있지 않다면 동의합니다. 나는 사고 파는 것을 의미합니다. 어쨌든 힌트 주셔서 감사합니다!

안부, 블라디미르.

 
MrBrooklin #:

다른 심볼과 다른 방향으로 여러 포지션이 열려 있지 않았다면 동의합니다. 매수 및 매도 말입니다. 어쨌든 팁을 주셔서 감사합니다!

감사합니다, 블라디미르.

얼마나 많은 포지션이 열려 있는지, 북쪽 또는 북쪽으로 가든지, 젠장 또는 한 번에 모든 방향으로 가든지간에 아무런 차이가 없습니다... 마지막은 PositionsTotal ()-1이됩니다.

 
Alexey Viktorov #:

얼마나 많은 포지션이 열려 있는지, 북쪽, 북쪽 또는 모든 방향에서 한 번에 열려 있는지는 중요하지 않습니다... 마지막은 PositionsTotal()-1이 됩니다.

안녕하세요, 알렉세이, 저는 약간 혼란 스러웠습니다. 언제나처럼 당신이 옳습니다 !!! )))

안부, 블라디미르.

 
Alexey Viktorov #:

사실 어제 포지션 샘플링을 실험해 본 결과 포지션 총계()는 포지션 수를 결정하는 데에만 필요하다는 결론에 도달했습니다. 그리고 이 숫자는 루프를 제한하기 위해서만 필요합니다.

다음은 이러한 루프입니다.


는 이전 기록에서 주문 또는 거래 목록을 가져와도 작동합니다. 다른 날에는 보류중인 주문의 선택이 방해가되는지 여부를 확인합니다.

여기에도 미묘함이 있습니다.

목록이 정말 크고 특정 기준에 따라 정렬 된 경우 루프의 모든 요소를 검색하는 것이 아니라 절반으로 나누어 필요한 요소를 검색하는 것이 더 유리할 수 있으며 여기에서 목록의 총 요소 수에 대한 지식이 매우 유용 할 수 있습니다.

 
JRandomTrader #:

여기에도 미묘한 차이가 있습니다.

목록이 정말 크고 특정 기준에 따라 정렬된 경우 모든 요소를 반복하지 않고 절반으로 나누어 필요한 요소를 검색하는 것이 더 유리할 수 있으며, 이때 목록의 총 요소 수에 대한 지식이 매우 유용할 수 있습니다.

나는이 기능이 완전히 쓸모 없다고 말하지 않았습니다. 그러나 어떤 경우에는 그것 없이도 할 수 있고 반드시해야합니다. 결국 모든 기능은 시간입니다. 브레이크가 걸릴 때까지 한 번에 조금씩 입력 할 수 있습니다....

 
MrBrooklin #:

안녕, 알렉세이! 내가 멍청했어. 언제나처럼 당신이 옳아요!!! )))

안부, 블라디미르.

내가 맞지만 다른 기호에서 여러 거래가 열리면 작성한 함수가 올바르게 작동하지 않는다고 지정하지 않았습니다.

마지막 하나만 확인하고 다른 기호에서 열 수 있기 때문에 (마지막 기호).

 
Aleksandr Slavskii #:

맞습니다만, 다른 심볼에서 여러 개의 거래가 열리면 작성하신 함수가 제대로 작동하지 않는다고 명시하지는 않았습니다.

마지막 하나만 확인하면 다른 심볼에서 열 수 있기 때문입니다.

안녕하세요 알렉산더, 저는 이미이 주제에 대해 생각해 보았지만 코드에서 다른 기호 위치가있는 위치에 도달하지 않았기 때문에 아직 여기에서 질문을 시작하지 않았습니다. 힌트 주셔서 감사합니다! )) 이제 나는 한 시점에서 당황하지만 내 자신의 노력으로 그것을 "완료"하고 싶은 끊임없는 욕구가 있기 때문에 공개 검토를 위해 여기에 가져오고 싶지 않습니다.

그건 그렇고, 나는 내 모든 소위 "걸림돌"이 내가 볼 수없는 작은 것들에 있다는 것을 알았습니다. Artem Trishkin이 말한 사양을 생각해보십시오. 정말 사소한 일인데 스크립트가 작동하지 않는 이유에 대해 머리를 깨뜨렸습니다. 또는 같은 링크 &. 너무 많은 시간을 낭비했습니다. 일반적으로 여전히 배우고, 배우고, 배우고, 러시아어로 문서를 읽고, 읽고, 읽고, 읽습니다.

안부, 블라디미르.

 
안녕하세요!


저는 네팅 계좌가 있습니다.

전문가 어드바이저에서 이 코드를 사용하여 거래를 제어합니다:

HistorySelect(0,TimeCurrent());
울롱 티켓 = OrderGetTicket(0);
N_deals = HistoryDealsTotal();

하지만 체결된 거래의 수도 추정해야 합니다.
DEAL_ENTRY_OUT 수정자를 사용해야 할 것 같습니다.
하지만 어떻게 사용하는지 이해할 수 없습니다.

제발 도와주세요.

안부, 알렉산더


사유: