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

 
FiVik :

안녕하세요. 문제는 가격 차트에서 다른 시간대의 한 지표 값을 표시하는 방법에 대한 예제 코드를 어디에서 볼 수 있습니까?

Google에서 무언가가 작동하지 않습니다. 아마도 잘못된 요청을 하고 있는 것 같습니다.

특히 H1에서 W1까지 볼린저 밴드의 표준 편차 값을 가격 차트에 표시하고 두 번째 열에는 표준 편차에 계수를 곱하여 얻은 값을 표시해야 합니다. .

볼린저 밴드가 수정되었습니다.

"다중 시간대" 코드베이스에서 검색하기 위한 키워드

텍스트는 OBJ_LABEL 을 사용하여 표시할 수 있습니다.

 
LRA :

1. MetaEditor에서 시도: 파일 --> 공유 데이터 폴더 열기. 폴더 경로를 참조하십시오. 이 질문은 여러 번 논의되었습니다. 예를 들어 다음 링크 가 있습니다.

2. 포함하지 않고 먼저 시도하십시오. 디버그할 때 포함을 시작합니다.

3. 위에 있는 SRC 버튼이나 아래에 있는 파일 첨부 버튼을 사용하여 여기에 소스를 삽입합니다.

정말 감사합니다.
 

07:00 바 시작가 에 수평선 그리는 방법을 제안해주세요.

이 코드를 작성했지만 어떤 이유로 선이 그려지지 않습니다. 실수는 어디에 있습니까?

 extern string StartTime = "07:00" ;           //Начальное время для анализа, 00:00 EST
extern string AlTime = "18:55" ;           //Время для трейдинга
extern string EndTime   = "20:00" ;           //Время экспирации
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {       
   ObjectCreate ( ChartID (), "CORDON" , OBJ_HLINE , 0 , 0 ,Ask);         //созд гор линию по цене Ask
   
   ObjectSetInteger ( ChartID (), "CORDON" , OBJPROP_COLOR , clrDarkBlue );   //цвет темно-сиий
      
   ObjectSetInteger ( ChartID (), "CORDON" , OBJPROP_WIDTH , 1 );   //толщина линии 1
      
   ObjectSetInteger ( ChartID (), "CORDON" , OBJPROP_STYLE , STYLE_SOLID );   //линия сплош
   
   int IndexOfBar = iBarShift( ChartID (), PERIOD_H1 , StringToTime (StartTime), true ); //Считаем индекс бара по заданному времени StartTime
   double StartPrice = Open[IndexOfBar];                     //Получаем цену по индексу
   
   ObjectMove ( ChartID (), "CORDON" , 0 , 0 , StartPrice);           // меняем распол линии   
   return ( 0 );
   }
 
RichLux :

07:00 바 시작가에 수평선 그리는 방법을 제안해주세요.

이 코드를 작성했지만 어떤 이유로 선이 그려지지 않습니다. 실수는 어디에 있습니까?

ObjectMove를 제거하면 라인이 보이나요? Alert(StartPrice)를 시도하십시오.
 
LRA :
ObjectMove를 제거하면 라인이 보이나요? Alert(StartPrice)를 시도하십시오.

ObjectMove를 제거하면 줄이 보이지 않지만 " double StartPrice = Open[IndexOfBar];" " IndexOfBar" 대신 숫자 값을 작성하십시오(예: " double StartPrice = Open[5];"). 그런 다음 다섯 번째 막대의 시가에 선을 그립니다.

Alert 아이디어에 감사드립니다. 값이 "0"으로 표시됩니다.

그건 그렇고, 라인은 값이 0인 개체 목록에도 있습니다.

 
RichLux :

07:00 바 시작가에 수평선 그리는 방법을 제안해주세요.

이 코드를 작성했지만 어떤 이유로 선이 그려지지 않습니다. 실수는 어디에 있습니까?

인터넷에서 그림을 그리고 계산을 수행하는 것은 불가능합니다. 이것은 큰 실수입니다. Init는 가능한 한 빨리 종료되어야 합니다.

여기서 오류는 int IndexOfBar = iBarShift( ChartID () _Symbol , PERIOD_H1 , StringToTime (StartTime), true ); //지정된 시간의 막대 인덱스 계산 StartTime

시간은 날짜/시간 형식으로 즉시 설정할 수 있으며 변환 시 시스템 시간을 낭비할 필요가 없습니다. 작동 방식은 다음과 같습니다.

 #property strict
#property show_inputs

extern datetime StartTime = D'07:00' ;           //Начальное время для анализа, 00:00 EST
extern datetime AlTime = D'18:55' ;           //Время для трейдинга
extern datetime EndTime   = D'20:00' ;           //Время экспирации
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart ()
{       
   ObjectCreate ( 0 , "CORDON" , OBJ_HLINE , 0 , 0 ,Ask);         //созд гор линию по цене Ask
   
   ObjectSetInteger ( 0 , "CORDON" , OBJPROP_COLOR , clrDarkBlue );   //цвет темно-сиий
      
   ObjectSetInteger ( 0 , "CORDON" , OBJPROP_WIDTH , 1 );   //толщина линии 1
      
   ObjectSetInteger ( 0 , "CORDON" , OBJPROP_STYLE , STYLE_SOLID );   //линия сплош
   
   int IndexOfBar = iBarShift( _Symbol , 0 , StartTime, false ); //Считаем индекс бара по заданному времени StartTime
   double StartPrice = Open[IndexOfBar];                     //Получаем цену по индексу
   Print (IndexOfBar, ", " ,StartPrice);
   ObjectMove ( 0 , "CORDON" , 0 , 0 , StartPrice);           // меняем распол линии   
}
   
 
evillive :

인터넷에서 그림을 그리고 계산을 수행하는 것은 불가능합니다. 이것은 큰 실수입니다. Init는 가능한 한 빨리 종료되어야 합니다.

여기서 오류는 int IndexOfBar = iBarShift( ChartID () _Symbol , PERIOD_H1 , StringToTime (StartTime), true ); //지정된 시간의 막대 인덱스 계산 StartTime

시간은 날짜/시간 형식으로 즉시 설정할 수 있으며 변환 시 시스템 시간을 낭비할 필요가 없습니다. 작동 방식은 다음과 같습니다.

소중한 조언 감사합니다.

그리고 버그를 찾아내 의욕을 북돋아 준 것에 대해 특별한 감사를 드립니다. MQL4와 친구가 될 수 있다는 걸 다시 믿게 되네요

 
RichLux : 코드 옵션이 작동하지 않습니다. 선이 차트에 표시되지 않았습니다.
 // Вставил такой код в скрипт - линию рисует синюю на черном графике слабо видно
#property strict                                                       // -------- Возможно, Дело в этой строке
        
extern string StartTime = "07:00" ;           //Начальное время для анализа, 00:00 EST
extern string AlTime = "18:55" ;           //Время для трейдинга
extern string EndTime   = "20:00" ;           //Время экспирации
void OnStart ()
{
   ObjectCreate ( "CORDON" , OBJ_HLINE , 0 , 0 ,Ask);     //созд гор линию по цене Ask   --- Для текущего графика ID пропускаем
   ObjectSetInteger ( 0 , "CORDON" , OBJPROP_COLOR ,DarkBlue);   //цвет темно-сиий  --- 0 = текущий график   DarkBlue - то же самое
   ObjectSetInteger ( 0 , "CORDON" , OBJPROP_WIDTH , 1 );   //толщина линии 1
   ObjectSetInteger ( 0 , "CORDON" , OBJPROP_STYLE , STYLE_SOLID );   //линия сплош

   // Первый параметр нужен типа string, а функция ChartID возвращает long
   int IndexOfBar = iBarShift( NULL , PERIOD_H1 , StringToTime (StartTime), true ); //  --- NULL = текущий график  ЗДЕСЬ И БЫЛА ОШИБКА???
   double StartPrice = Open[IndexOfBar];                     //Получаем цену по индексу
   ObjectMove ( ChartID (), "CORDON" , 0 , 0 , StartPrice);           // меняем распол линии   
}
 
evillive :

인터넷에서 그림을 그리고 계산을 수행하는 것은 불가능합니다. 이것은 큰 실수입니다. Init는 가능한 한 빨리 종료되어야 합니다.


그리고 init의 계산을 별도의 함수로 빼내고 이 함수를 init에 삽입하면 큰 실수가 아닌가?

LRA :

모든 것이 이미 작동하고 있습니다.

 
RichLux :

그리고 init의 계산을 별도의 함수로 빼내고 이 함수를 init에 삽입하면 큰 실수가 아닌가?

코드가 너무 오래 실행되면 큰 실수가 될 것입니다. 그러면 init가 작업을 완료해야 하고 코드가 완전히 실행될 시간이 없을 것입니다. 보조 기능에 대한 호출을 포함하여 실행 가능한 코드는 사전 정의된 MQL 함수에 있어야 합니다. Expert Advisors의 경우 OnTick(), 스크립트의 경우 OnStart(), 표시기의 경우 OnCalculate()입니다.

init에는 프로그램이 시작되기 직전에 한 번만 수행되어야 하는 최소한의 코드가 포함되어야 합니다. 예를 들어 전역 변수, 배열, 표시기 버퍼의 초기화입니다 .