[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 14

 

else 조건에 의해 다시 따옴표 가 있으면 함수 자체가 작동을 멈춥니다.

 if ( res ! = - 1 ) {     
//..
} else {
    err = GetLastError ( ) ;
     if ( err > 1 ) try = 0 ;
     Comment ( "Ошибка - " , err ) ;           
}

try = 0이므로 while 루프가 종료되고 openOrder()가 false를 반환합니다.

하지만 while(!openOrder(..)){} 구문을 사용한다면 예, 주문을 열 때까지 계속 쪼아댈 것입니다.

 
케케넨. 이것이 내가 start() 함수에 관심이 있는 반면 (! openOrder (..)) {}는 공개되지 않고 {}에서 수행되는 작업입니다. 재인용 시도 횟수를 제한합니까?
 

당신이 주문을 열어야한다고 썼기 때문에 나는 그런 "단단한"구조를 줬습니다. 열려야하기 때문에 그것을 열려고 몇 번을 시도하든 그것은 열릴 것입니다.. 주문을 여는 것이 정상이라면 필요하지 않은 동안 시도 횟수를 전달하고 이미 함수에서 결정적인 오류 에 대응하거나 무시하고 어리석게 시도 횟수 순서를 열려고 시도할 수 있습니다.


그리고 while(!openOrder(..)){}의 의미는 우리가 영원한 루프를 생성한다는 것입니다. 주문이 열릴 때까지 작동합니다.

실제로 주문을 열 때 어떤 전술을 사용해야하는지 결정하면 도움이 될 것입니다 ..

 

질문은 ~이야:

배열로 작업할 수 없습니다.

배열을 초기화하고 데이터로 채우고 읽을 때 0이 있습니다.

내가 무엇을 잘못하고 있지?


 double MASS [ ] ;

for ( int i = 0 ; i < 10 ; i + + )
 {
  MASS [ i ] = i ;
 }
for ( int n = 0 ; n < 10 ; n + + )
 {
   Print ( MASS [ n ] ) ;
 }
 
Kontra писал(а) >>

배열로 작업할 수 없습니다.

예를 들어 다음을 선언할 때 배열의 크기를 지정해야 합니다.

double MASS[10];

또는 나중에:

ArrayResize(MASS,10);
 

배열의 크기를 모른다면?

그리고 내가 묻는 경우에도 무언가가 컴파일되지 않습니다.

외부 변수를 삽입합니다.

extern int Razmer = 10;

그리고 더 아래로:

   double MASS [ Razmer ] ;

for ( int i = 0 ; i < 10 ; i + + )
 {
  MASS [ i ] = i ;
 }
for ( int n = 0 ; n < 10 ; n + + )
 {
   Print ( MASS [ n ] ) ;

출력 결과:

'크기' - 정수 예상 C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (36, 16)
']' - 쉼표 또는 세미콜론 필요 C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (36, 22)
'MASS' - 정의되지 않은 변수 C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (40, 3)
'MASS' - 정의되지 않은 변수 C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (44, 9)

 
Kontra писал(а) >>

배열의 크기를 모른다면?

따라서 배열에 몇 개의 요소가 있는지 알게 되면 ArrayResize 함수를 사용해야 합니다.

보시다시피 외부 변수를 사용하면 작동하지 않습니다. :)

다음과 같이 가능합니다.

ArrayResize(MASS,Razmer);
 

사랑하는 외과의사님 감사합니다.

모든 것이 작동했습니다 :)

 
int init ( )
   { 
   double A = AccountBalance ( )          //Определяем баланс
   double B = NormalizeDouble ( A / 50 , 0 )    //Выполняем вычисления и делаем результат целым числом
   double Lots = B * 0.01                  //Вычисление лота.

if ( Lots > 0 ) Alert ( "Лот будет " , Lots )

   return ( 0 ) ;
   }
여기서 잘못된 것은 무엇이며 어떻게 구현할 수 있습니까?
 

실제로 구현하려는 것은 무엇입니까?