[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 240

 
a1 = 주문 합계();
(i = 0, i < a1, i++)
{
주문 선택(i,SELECT_BY_POS);
주문삭제(주문티켓());

}

다음은 보류 중인 모든 주문 을 삭제해야 하는 간단한 스크립트이지만 주문의 정확히 절반을 삭제합니다... ???

 
        
FAQ 04.03 . 2011 12 : 56 

Подскажите, как найти цену последнего фрактала?


sergeev: Для этого можно воспользоваться индикатором iFractals . Он возвращает значение 0 , если на баре нет фрактала и значение цены фрактала если он есть. Фракталы делятся на верхние и нижние. Если вам надо получить верхние, то в функцию iFractals передается MODE_UPPER, а для нижних - MODE_LOWER. Поэтому для поиска фрактала надо пройти в цикле по барам и первое не 0 значение и будет искомым фракталом.

пример:

double frac;
for ( int i= 3 ; i< Bars ; i++)
{
   frac= iFractals ( Symbol (), Period (), MODE_UPPER, i); if (frac> 0 ) break ;
   frac= iFractals ( Symbol (), Period (), MODE_LOWER, i); if (frac> 0 ) break ;
}
if (frac> 0 ) Print ( "Цена последнего фрактала: " , frac);


пример организации отдельной функции:

//---------------------------------------------------------------   GetLastFrac
double GetLastFrac( string smb, int tf, int iB)
{
   int n= iBars (smb, tf);   double frac;
   for ( int i=iB; i<n; i++)
   {
      frac= iFractals (smb, tf, MODE_UPPER, i); if (frac> 0 ) return (frac);
      frac= iFractals (smb, tf, MODE_LOWER, i); if (frac> 0 ) return (frac);
   }
   return ( 0 );
}
.....
Print ( "Последний фрактал: " , GetLastFrac( "EURUSD" , 60 , 3 ));
자주 묻는 질문에 있었는데, 처음에 뒤집어서 눈치채지 못했습니다.
 
Neo333 :
a1 = 주문 합계();
(i = 0, i < a1 , i++)
{
주문 선택(i ,SELECT_BY_POS);
주문삭제(주문티켓());

}

다음은 모든 보류 주문을 삭제해야 하지만 주문의 정확히 절반을 삭제하는 간단한 스크립트입니다... ???

10개의 주문이 있다고 가정해 보겠습니다.

여기에서 절반을 제거했습니다(0에서 5까지).

이제 여섯 번째를 선택하려고 .. 5개만 남았습니다.오류이며 삭제할 것이 없습니다. 나머지도 마찬가지

 
Neo333 :
a1 = 주문 합계();
(i = 0, i < a1, i++)
{
주문 선택(i,SELECT_BY_POS);
주문삭제(주문티켓());

}

다음은 보류 중인 모든 주문을 삭제해야 하지만 주문의 정확히 절반을 삭제하는 간단한 스크립트입니다... ???

주문 검색 방향 변경:

(i=a1-1; i>=0; i--) {....}

 
artmedia70 :

주문 검색 방향 변경:

(i=a1-1; i>=0; i--) {....}

작동하지만 논리는 무엇입니까 - i++ 또는 i--의 차이점은 무엇입니까 ???
 
Zhunko :

1. 확인하셨나요?

보고합니다: 도움이 되었지만 버그가 있는 것 같습니다.

첫 번째 터미널. 모든 차트와 기호를 제거하고 7달러 기호를 추가하고 차트를 추가했습니다. 모두 재부팅됩니다.

티크를 화면의 3/4까지 늘렸습니다. 첫 번째 6개를 채우고 7번째는 5개의 셀에 섰습니다.

다음에 다시 시작한 후 그들 모두가 완전히 채워지기 시작한 것은 아니며 분포는 거의 무작위입니다. 목록에서 기호가 낮을수록 더 적은 셀을 얻습니다.

두 번째 터미널. 그것은 그것에 7 엔 쌍이 있었다. 나는 여분의 문자를 삭제하고 다시 시작했습니다. 훨씬 더 깊게 채우기 시작했지만 채우기 깊이는 무작위로 분포하는 것으로 나타났습니다.

나는 이것이 작은 캐시로 인한 버그라고 생각하는 경향이 있습니다. 모든 사람에게 충분하지 않으며 배포는 무작위이거나 "누가 먼저 운동화입니까?"입니다.

어쨌든 하나의 통화에 대해 이 방법이 작동합니다. 요약: 레시피는 사실입니다 :) 감사합니다.

 
Neo333 :
작동하지만 논리는 무엇입니까 - i++ 또는 i--의 차이점은 무엇입니까 ???

이유가 무엇인지 즉시 적어 주셨습니다. 그것은 i++ 또는 i--에 관한 것이 아니라 목록의 시작 부분(당신처럼) 또는 목록 끝(이 경우 필요에 따라)에서 주문 삭제를 시작할 끝 부분에 대한 것입니다.

주문이 삭제될 때 어떤 일이 발생하는지 이해하려면 주문이 배열에 저장되는 방식을 알고 이해해야 합니다.

첫 번째 주문을 처음 삭제하면(i=0으로 인덱싱됨) 모든 주문의 인덱스가 배열에서 이동합니다. 첫 번째 주문은 0이 되고 두 번째는 첫 번째가 되고 세 번째는 두 번째가 됩니다. 등등. 이것이 모든 주문이 완전히 삭제되지 않는 이유입니다. 결국 i가 6이 되면 6번째 주문은 주문 배열의 5번째 위치로 이동하고 주문은 단순히 인덱스 6에서 선택되지 않습니다.

목록의 끝에서 주문을 제거하면 이동이 발생하지 않습니다. 첫 번째 주문은 목록에서 0의 위치에 있었기 때문에 계속 유지됩니다. 10번째 주문의 위치는 9이고 삭제된 다음 목록에서 위치가 8인 9번째 주문이 삭제되는 식입니다. 주문 배열에서 위치가 0인 첫 번째 주문으로 이동합니다.

 
Neo333 :
작동하지만 논리는 무엇입니까 - i++ 또는 i--의 차이점은 무엇입니까 ???
사용자가 이미 답변했습니다
152
이 질문에 ilunga
 
nadya :
사용자가 이미 답변했습니다
152
이 질문에 ilunga
씹어서 좀 더 자세한 답변을 해줘야 한다고 하던데요... :)
 
Zhunko :
... 차트를 오프라인으로 엽니다.
나머지 차트는 똑딱 거리고 있습니다. 옵션이 아닙니다.