포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 638

 

초보자 질문:

나는 최근에 MetaEditor가 터미널에서 열리지 않는다는 것을 발견했고, "edit" 명령이 어드바이저와 인디케이터에서 작동하지 않는다는 것을 발견했습니다............. 도와주세요. 고맙습니다.

 
gnawingmarket :

초보자 질문:

나는 최근에 MetaEditor가 터미널에서 열리지 않는다는 것을 발견했습니다. "편집" 명령은 Expert Advisors 및 표시기에서 작동하지 않습니다............. 도와주세요. 고맙습니다.


나는 대답하려고 노력할 것이다.

이전 코드를 수정하는 옵션이 더 이상 작동하지 않습니다.

 
그러나 당신에게는 왕관이 있습니다.
 
tara :
그러나 당신에게는 왕관이 있습니다.


넌 다 아는군! 오늘은 누가 나에게 관리자 권한을 부여했는지 잡히지 않았지만 비밀번호를 알려주지 않았고 물어볼 줄도 몰랐습니다! 내일 나는 올가미를 할 것이다! 왜 안 자니?

참여해주신 Tara님 감사합니다! 모든 것이 분기에 이웃에 의해 나에게 복원되었습니다! 컴퓨터 과학 전문가!

 
Top2n :

예, 많은 질문이 어리석다는 것을 이해합니다. 솔직히 노력하고 하루 종일 보냈지만 결과는 없었습니다.

현재 막대에 있는 여러 추세선의 가격 값을 배열에 씁니다.

객체가 없는 경우 배열에서 값을 제거하는 방법은 무엇입니까?

아트미디어70 :

각 틱에서 추세 가격 값을 실행하고 원하는 추세선의 다음 원하는 가격을 찾았을 때 배열을 초기화하고 차원을 늘리면 이미 계산된 값을 제거할 필요가 없습니다 배열에서 제거된 추세선. 배열은 동적이며 매번 각 틱에서 기존 개체의 값만 포함합니다.


?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
 double MassTrendNumber( double &array[], string tip) // Поиск значения цены трендовой линии, текущего бара, запись в массив. Два массива: masS и masB
ArrayResize(array,ObjectsTotal(OBJ_TREND));

 for (int i = 0, limit = ArrayResize(array,ObjectsTotal(OBJ_TREND)); i < limit; i++) 

 {
 string DWnem= ObjectName (i); 
  string DW= "downtrendline" + IntegerToString (i); // существует два названия трендовых линий, первое
  string DW2= "uptrendline" + IntegerToString (i); // второе 
if(tip="Sell")   //первый массив цен на селл
   if (DWnem=DW) //если имя равно "downtrendline"
   if (ObjectGet(DWnem, OBJPROP_COLOR )==Goldenrod || ObjectGet(DWnem, OBJPROP_COLOR )==Gainsboro || ObjectGet(DWnem, OBJPROP_COLOR )==White)
// Также существует три цвета
   array[i]=ObjectGetValueByShift(DWnem, 1 ); //записываем 
if(tip="Buy")   //второй массивцен на бай
 if (DWnem=DW2)
 if (ObjectGet(DWnem, OBJPROP_COLOR )==Goldenrod || ObjectGet(DWnem, OBJPROP_COLOR )==Gainsboro || ObjectGet(DWnem, OBJPROP_COLOR )==White)
  array[i]=ObjectGetValueByShift(DWnem, 1 );

  }   return ;
   }

	          
 

별도 창에서 종가 부터 0 부근에서 오실레이터를 만들어보려고 하는데 안되네요 혹시 이미 하신 분이 계시다면 공식좀 알려주세요.

즉, Close[i] 가격이 있습니다. 별도의 창에서 MACD/CCI와 같이 이 가격이 0 위 또는 아래로 회전해야 하지만 아무리 노력해도 추가 값 없이는 작동하지 않습니다. MA처럼: 이제 iClose -iMA를 빼면 비슷한 일이 발생하지만 앤티 앨리어싱이 없는 옵션이 있을 수 있습니까?

글쎄, 또는 0.0 ... 1.0의 범위에서 0 주위에 방법이 없으면 ...

 
Top2n :

아래 검색 방법은 약간 다릅니다.

 #property strict

/******************************************************************************/
bool AddValue( double &array[], const double value) {
   const int size = ArraySize (array);

   if ( ArrayResize (array, size + 1 ) != size + 1 ) {
     return false ; // Ошибка, значение не может быть добавлено к массиву
  }

  array[size] = value; //записываем
   return true ; // Нет ошибки, значение добавлено к массиву
}

/******************************************************************************/
bool AddValueIfFound( double &array[], const string name) {
   const int type = ObjectType(name);

   if (type == OBJ_TREND ) {
     switch (( color )ObjectGet(name, OBJPROP_COLOR )) { // Тип color допустимо использовать в switch
     case Goldenrod:
     case Gainsboro:
     case White:
       if (!AddValue(array, ObjectGetValueByShift(name, 1 ))) {
         return false ; // Ошибка, значение найдено, но не может быть добавлено к массиву
      }
    }
  }

   return true ; // Нет ошибки, значение, если найдено, добавлено к массиву
}

/******************************************************************************/
bool MassTrendNumber( double &array[], const bool buy) { // Поиск значения цены трендовой линии, текущего бара, запись в массив. Два массива: masS и masB
   const string subname = (buy ? "uptrendline" : "downtrendline" ); // существует два названия трендовых линий, первое и второе

   if ( ArrayResize (array, 0 ) != 0 ) {
     return false ; // Ошибка, массив не может быть заполнен достоверно
  }

   for ( int i = 0 , limit = ObjectsTotal ( OBJ_TREND ); i < limit; i++) {
     if (!AddValueIfFound(array, subname + IntegerToString (i))) {
       return false ; // Ошибка, массив, если и заполнен, то недостоверно
    }
  }

   return true ; // Нет ошибки, массив заполнен достоверно
}

/******************************************************************************/
void FillAndPrint( double &array[], const bool buy) {
   if (MassTrendNumber(array, buy)) {
     const int limit = ArraySize (array);

     Print ( "Найдено объектов: " , limit);

     for ( int i = 0 ; i < limit; i++) {
       Print ( "Price[" , i, "] = " , DoubleToStr(array[i], Digits ));
    }
  } else {
     Print ( "Чёрт!" );
  }
}

/******************************************************************************/
void OnStart () {
   double masS[];
   double masB[];

   Print ( "Sell:" );
  FillAndPrint(masS, false );

   Print ( "Buy:" );
  FillAndPrint(masB, true );
}

차트에 해당 이름을 가진 두 개의 흰색 추세선을 추가하고 다음을 얻었습니다.

 04 : 14 : 34 Script 2 EURUSDm,H1: loaded successfully
04 : 14 : 34 2 EURUSDm,H1: initialized
04 : 14 : 34 2 EURUSDm,H1: Sell:
04 : 14 : 34 2 EURUSDm,H1: Найдено объектов: 1
04 : 14 : 34 2 EURUSDm,H1: Price[ 0 ] = 1.36268
04 : 14 : 34 2 EURUSDm,H1: Buy:
04 : 14 : 34 2 EURUSDm,H1: Найдено объектов: 1
04 : 14 : 34 2 EURUSDm,H1: Price[ 0 ] = 1.35668
04 : 14 : 34 2 EURUSDm,H1: uninit reason 0
04 : 14 : 34 Script 2 EURUSDm,H1: removed

킬로미터 기능을 작성하지 말고 프로그램을 짧은 "구"- "벽돌"로 나누십시오. 작은 "벽돌"에서 더 큰 것, 더 큰 것, 더 큰 것에서 성형됩니다. 가능합니다.

매개변수를 통해서만 모든 데이터를 함수에 전달합니다.

호출되는 함수가 실패할 수 있는 경우 오류를 처리해야 하며 오류가 무시된 경우 후속 조치는 심각한 결과를 초래할 것입니다. 대부분의 프로그램 충돌(일반적으로)은 오류 처리가 전혀 프로그래밍되지 않았기 때문에 발생합니다.

예를 들어, 배열의 크기 를 늘리기 위해 호출된 ArrayResize()가 오류를 반환하지만 프로그래머가 이를 확인하지 않고 증가된 배열을 참조하는 경우 범위를 벗어난 오류가 발생하여 MQL4 프로그램의 후속 중지. 예를 들어 Expert Advisor는 거래를 중단하고 열린 포지션을 남깁니다. 대단하지 않아?

"array[0] = 0;"을 삽입해 보십시오. MassTrendNumber() 함수의 루프 전에 스크립트가 범위를 벗어난 배열 오류 후에 종료되는지 확인하십시오.

 
evillive :

별도 창에서 종가부터 0 부근에서 오실레이터를 만들어보려고 하는데 안되네요 혹시 이미 하신 분이 계시다면 공식좀 알려주세요.

즉, Close[i] 가격이 있습니다. 별도의 창에서 MACD/CCI와 같이 이 가격이 0 위 또는 아래로 회전해야 하지만 아무리 노력해도 추가 값 없이는 작동하지 않습니다. MA처럼: 이제 iClose -iMA를 빼면 비슷한 일이 발생하지만 앤티 앨리어싱이 없는 옵션이 있을 수 있습니까?

글쎄, 또는 0.0 ... 1.0의 범위에서 0 주위에 방법이 없으면 ...


https://www.mql5.com/ru/code/9340
 

아, 그렇군요. 이 세상에 새로운 것은 없다
 
simpleton :

아래 검색 방법은 약간 다릅니다.

차트에 해당 이름을 가진 두 개의 흰색 추세선을 추가하고 다음을 얻었습니다.

킬로미터 기능을 작성하지 말고 프로그램을 짧은 "구"- "벽돌"로 나누십시오. 작은 "벽돌"에서 더 큰 것, 더 큰 것, 더 큰 것에서 성형됩니다. 가능합니다.

매개변수를 통해서만 모든 데이터를 함수에 전달합니다.

호출되는 함수가 실패할 수 있는 경우 오류를 처리해야 하며 오류가 무시된 경우 후속 조치는 심각한 결과를 초래할 것입니다. 대부분의 프로그램 충돌(일반적으로)은 오류 처리가 전혀 프로그래밍되지 않았기 때문에 발생합니다.

예를 들어, 배열의 크기를 늘리기 위해 호출된 ArrayResize()가 오류를 반환하지만 프로그래머가 이를 확인하지 않고 증가된 배열을 참조하는 경우 배열 범위를 벗어난 오류가 발생하여 MQL4 프로그램의 후속 중지. 예를 들어 Expert Advisor는 거래를 중단하고 열린 포지션을 남깁니다. 대단하지 않아?

"array[0] = 0;"을 삽입해 보십시오. MassTrendNumber() 함수의 루프 전에 스크립트가 범위를 벗어난 배열 오류 후에 종료되는지 확인하십시오.


네, 정말 감사합니다. 어떻게 도움을 주셨는지는 말씀이 없으시며 모든 것이 명확합니다! 시원한!!!