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

 
Pavel Nikiforov :
무엇이 잘못되었는지 설명해 주십시오. 계획대로 함수는 열린 위치 를 반복하고 주어진 마법으로 숫자를 계산해야 합니다. 그러나 실제로 동일한 티켓과 마법을 가진 다른 고문이 열었던 전체 목록에서 하나만 선택하고 count는 항상 = 0입니다.

일반적으로 스스로 알아냈으므로 PositionGetSymbol 을 통해 선택해야 합니다.

 //+------------------------------------------------------------------+
int OpenPositions() //проверка открытых позиций по Magic number 
  {
   int count= 0 ;
     for ( int z= PositionsTotal ()- 1 ; z>= 0 ; z --) // Перебор всех позиций
     {
       if ( PositionGetSymbol (z)!= _Symbol ) // Найдена позиция с заданным символом
        {
         Print ( __FUNCSIG__ " позиция не выбрана " , GetLastError ()); continue ;
        }
       long   ticket = PositionGetInteger ( POSITION_TICKET );
             Print ( __FUNCSIG__ " ТИКЕТ " , IntegerToString (ticket));
       ulong myMN= PositionGetInteger ( POSITION_MAGIC );
             Print ( __FUNCSIG__ " МАГИК " , IntegerToString (myMN));
       if (myMN==Magic)
            count++;
     }
   return (count);
  }
//+------------------------------------------------------------------+
 
Pavel Nikiforov :

일반적으로 스스로 알아냈으므로 PositionGetSymbol 을 통해 선택해야 합니다.

내가 잘못 이해했다. PositionGetTicket(i) 함수로 헷지 계정을 선택한 후 기호와 매직을 확인해야 합니다.

Документация по MQL5: Торговые функции / PositionGetTicket
Документация по MQL5: Торговые функции / PositionGetTicket
  • www.mql5.com
Торговые функции / PositionGetTicket - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
이 주제와 관련이 없는 댓글은 " MQL4 MT4 MetaTrader 4 초보자의 질문 "으로 이동되었습니다.
 
Alexey Viktorov :

내가 잘못 이해했다. PositionGetTicket(i) 함수로 헷지 계정을 선택한 후 기호와 매직을 확인해야 합니다.

예, 더 좋습니다. 데모에서는 다른 기능도 버그가 있었지만 작동하기 시작했습니다.

 

좋은 오후, 이 지표에 대해 알려주세요 https://www.mql5.com/en/forum/94447#comment_6780067

그는 내가 이해하는 바와 같이 급격한 가격 변동으로 4 포인트 이상의 변동으로 빨간색과 파란색 차트에 원을 넣습니다.

이 신호는 10포인트 이상의 변화가 있을 때만 가야 합니다.

파일:
1.png  48 kb
 
yesterday35 :

좋은 오후, 이 지표에 대해 알려주세요 https://www.mql5.com/en/forum/94447#comment_6780067

그는 내가 이해하는 바와 같이 급격한 가격 변동으로 4 포인트 이상의 변동으로 빨간색과 파란색 차트에 원을 넣습니다.

이 신호는 10포인트 이상의 변화가 있을 때만 가야 합니다.

이 표시기는 점수를 계산하지 않고 시그마 또는 RMS(표준 편차)를 계산합니다. N개의 마지막 틱 선택을 기반으로 합니다(기본값은 50개). 3 시그마에서 채널을 구축합니다. 가격이 채널을 벗어나면 이 곳을 표시합니다. 그러나 주요 문제는 원래 가격 시리즈가 매우 두꺼운 꼬리를 가진 정규 분포와 거리가 멀다는 것입니다. 사실, 이 지표는 장난감 혜택입니다.

 

안녕하세요.

나는 작은 프로그램을 작성하고 있습니다. 완전히 이해할 수 없는 상황에 직면했습니다.

코드에는 두 줄이 있습니다. 그들은 루프가 아닌 OnTester()의 맨 끝에 있습니다.

 Print ( "Мат ожидание ставки  " ,MatOgidanieStavk(KKef,VVer,Stavka), " Ставка " ,Stavka);
Print ( "Ставка =" ,Stavka);

그리고 여기에 이 라인의 완전히 예상치 못한 결과가 있습니다.

Мат ожидание ставки   447.0461599959392 Ставка - 1.0
Ставка = 3912.820000338397

MatOgidanieStavk 함수 의 정의는 다음과 같습니다.

 double MatOgidanieStavk( double Kef, double Ver, double &BestStavka)
{
 .......... 
   BestStavka=- 1 ;// Первое обращении к этой переменой.
............
return MatOgidanie;
}
 
pivomoe :

안녕하세요.

나는 작은 프로그램을 작성하고 있습니다. 완전히 이해할 수 없는 상황에 직면했습니다.

코드에는 두 줄이 있습니다. 그들은 루프가 아닌 OnTester()의 맨 끝에 있습니다.

그리고 여기에 이 라인의 완전히 예상치 못한 결과가 있습니다.

MatOgidanieStavk 함수 의 정의는 다음과 같습니다.

Stavka가 인쇄 전에 초기화되었습니까?

호출이 함수 내에서 첫 번째 호출인지 어떻게 결정합니까?

어떤 결과를 기대했습니까?

 

고맙습니다. 문제를 이해했습니다.

단서는 Print 이전의 Stavka 변수인 것으로 밝혀졌습니다. -1과 같았습니다. 그 값은 Print 함수 에 전달되어 복사본으로 저장되었습니다. 내 MatOgidanieStavk 함수 는 Print가 인쇄할 사본이 아니라 Stavka 변수 자체를 변경했습니다.

 
그렇게 해야 합니다.

2795/2797은 반올림이 발생하지 않으므로 0이 됩니다. 쓰기 s3 = (더블)s2/s1; 또는 s2 및 s1에 대한 유형을 즉시 두 배로 선택하십시오.

사유: