정사각형 또는 직사각형 그리기. 정말 도움이 필요해요... - 페이지 6 12345678 새 코멘트 Alex_Profit 2016.10.18 16:17 #51 evillive : 글쎄, 그는 어디에서 일합니까? 선은 TK가 아니라 각 막대에 그려집니다. 또는 TF=H1 위의 그림에서? 루프의 각 반복에서 한계 와 i 가 같아지는 종이에 다시 계산하십시오. 위에 표시된 예는 내가 이해하는 한 고려되지 않았습니다. 화살표 확인란은 표시기 버퍼와 촛불 그림자를 연결하는 선을 사용하여 그릴 수 있습니다. PERIOD_H;. H4 기간 이하는 모든 것이 잘 그려집니다. 나는 = 0; 한계는 외부 변수 기본값 = 5입니다. 외부 int barToProcess = 5; //--- 표시된 기간(줄) 수 . "촛불 그림자를 연결하는 선과 같이 표시기 버퍼를 사용하여 화살표 눈금을 그릴 수 있습니다." 이렇게 이해합니다. 인덱스가 [Limit]인 버퍼에는 Array에서 높은 값이 할당됩니다. 이중 Buf_High[Limit] = mqlRates [0].high ; 각 막대에서 원을 그리는 방법을 이해합니다. 그러나 모든 H4 막대에서와 같이 아무 것도 없습니다. 関数テンプレート ローカル変数 クラステンプレート Vitalie Postolache 2016.10.18 18:14 #52 Alex_Profit : PERIOD_H;. H4 기간 이하는 모든 것이 잘 그려집니다. 나는 = 0; 한계는 외부 변수 기본값 = 5입니다. 외부 int barToProcess = 5; //--- 표시된 기간(줄) 수 . "촛불 그림자를 연결하는 선과 같이 표시기 버퍼를 사용하여 화살표 눈금을 그릴 수 있습니다." 이렇게 이해합니다. 인덱스가 [Limit]인 버퍼에는 Array에서 높은 값이 할당됩니다. 이중 Buf_High[Limit] = mqlRates[0].high ; 각 막대에서 원을 그리는 방법을 이해합니다. 그러나 모든 H4 막대에서와 같이 아무 것도 없습니다. 루프를 사용하기 전에 루프가 어떻게 작동하는지 이해하십시오. i = 처음에만 0, 그 다음에는 i++, 한계까지. 표시기의 첫 번째 실행에서 limit=Bars-counted_bars= Bars-0=Bars. for 루프는 이론적으로 0에서 차트의 막대 수까지 계산해야 합니다. 하지만!!! 여기서 두 번째 while 루프 가 개입하여 i와 limit를 모두 다시 계산합니다. 왜 그랬는지, 누가 가르쳤는지, 나는 이해하지 못합니다 ... 손가락에 대한 예, 제공: 막대 - 100, barToProcess = 5. 표시기의 첫 번째 실행에서 counted_bars=0은 아직 계산되지 않았으므로 limit=100입니다. 따라서 처음에 for 루프는 0에서 99까지 100번 작동해야 합니다. for 루프 반복: 1. i=0, limit=barsToProcess=5, while (i<5) - 내부 루프는 0에서 4까지 5번 라인과 체크 표시를 그리면서 실행됩니다. 매번 i++ 가 완료되면 while - i=5, limit =5 . 2. i=5=limit - for 루프가 종료되었습니다. 모두! 그런 다음 표시기는 다음 틱까지 아무 작업도 수행하지 않습니다. 틱이 도착했습니다(counted_bars=99, limit=Bars-counted_bars= 100-99=1). for 루프는 1번, while 루프 는 실행되지 않습니다( if(limit>barsToProcess) 조건이 충족되지 않기 때문에). 그리고 지표가 차트에서 언로드 되거나 TF가 변경될 때까지 일반적으로 지표가 다시 초기화될 때까지 계속됩니다. 즉, 실제로 표시기는 차트에 로드할 때 확인 표시 선을 한 번 그린 다음 다시 초기화될 때까지 유휴 상태를 유지합니다. 그리고 왜 그러한 지표가 필요합니까? 단일 처리 및 스크립트로 대처합니다. OBJ_ARROWED_LINE OBJ_CYCLES OBJ_TREND Alex_Profit 2016.10.19 03:53 #53 코드를 다시 작성했습니다. 모든 것이 주기에 맞는 것 같습니다. "버퍼" 라인을 그리는 문제가 있었습니다. #property strict #property indicator_chart_windowextern int Total_bars = 5; //--- Кол-во отображаемых Элементов в истории //--- Глобальные переменные string Name_VLine; //--- Имя Элементовstring Name_CHECK; //--- Имя ЭлементовMqlRates mqlRates[1]; //Структура для хранения информации #property indicator_buffers 1#property indicator_type1 DRAW_LINE // тип графического построения - линия #property indicator_color1 clrRed // цвет линии #property indicator_style1 STYLE_SOLID // стиль линии #property indicator_width1 1 // толщина линии double Buff_High[]; //+------------------------------------------------------------------+int OnInit() { return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]){ SetIndexBuffer(0,Buff_High); SetIndexStyle(0,DRAW_LINE); SetIndexStyle(0,DRAW_SECTION); //+------------------------------------------------------------------+int limit; //--- переменная старт кол-во баров. Линии рисуем о по всем барамint counted_bars = IndicatorCounted(); //--- перем counted_bars = функц. Возвращает количество баров if(counted_bars > 0) counted_bars --; //--- последний посчитанный бар будет пересчитан //--- основной цикл limit = Bars - counted_bars; for(int i = 0; i <= limit; i ++) { if(limit > Total_bars) //--- Если кол-во баров на графике > Кол-ву выбранных элементов { limit = Total_bars-1; //--- тогда кол-во баров на графике = Кол-ву выбранных элементов } datetime t_Line = iTime(Symbol(),PERIOD_H4,i); //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара CopyRates(_Symbol, PERIOD_H4, t_Line, 1, mqlRates); //--- Структура для хранения информации //+------------------------ Рисуем вертикальную линии -----------------------------------------------------+ ObjectCreate (Name_VLine + " VLine" + DoubleToStr(i,0),OBJ_VLINE,0,t_Line,0); //--- Создаём обьект вертикальную линию ObjectSet (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_STYLE,2); //--- Со стилем ObjectSet (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_COLOR,DimGray); //--- Со цветом ObjectSet (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_WIDTH,0); //--- С толщиной ObjectSet (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_BACK,0); //--- С типом отображения. Объект на заднем плане //--- кубики по хай (В место галочек нужно подставить кубики) ObjectCreate (0,Name_CHECK + "H_CHECK" + DoubleToStr(i,0), OBJ_ARROW_CHECK, 0, t_Line, mqlRates[0].high, t_Line,mqlRates[0].high); ObjectSetInteger(0,Name_CHECK + "H_CHECK" + DoubleToStr(i,0), OBJPROP_COLOR, clrGreen); //--- кубики по лоу (В место галочек нужно подставить кубики) ObjectCreate (0,Name_CHECK + "L_CHECK" + DoubleToStr(i,0), OBJ_ARROW_CHECK, 0, t_Line, mqlRates[0].low, t_Line,mqlRates[0].low); ObjectSetInteger(0,Name_CHECK + "L_CHECK" + DoubleToStr(i,0), OBJPROP_COLOR, clrGreen); // На ТФ Н4 линии рисуются по хайям, // При смене ТФ линия рисуется на растоянии параметра Total_bars. //--- Заполнение буфера Buff_High[i] = mqlRates[0].high ; } return(rates_total);}//+------------------------------------------------------------------+ FileReadDouble PlotIndexSetInteger DRAW_NONE Alex_Profit 2016.10.19 04:03 #54 evillive : 왜 그랬는지, 누가 가르쳤는지, 나는 이해하지 못합니다 ... 적절한 지표를 찾아 필요한 조각이 남을 때까지 "분석"했습니다. 그런 다음 코드 조각을 수집하고 필요한 정보를 얻었습니다. 이 같은. "나는 콧수염을 감아요" . Vitalie Postolache 2016.10.19 05:11 #55 Alex_Profit : 코드를 다시 작성했습니다. 모든 것이 주기에 맞는 것 같습니다. "버퍼" 라인을 그리는 문제가 있었습니다. 코드를 삽입하기 위해 메시지 편집 창의 상단 패널에 SRC 버튼이 있는데, 빈 줄 없이 코드를 멋지게 삽입합니다. 선은 또한 개체(추세)와 함께 그려야 하고 별도의 변수에 이전 시간/가격을 기억하고 두 번째 점의 좌표로 사용해야 합니다. 눈금을 다른 문자로 바꾸려면 - OBJ_ARROW 및 ARROW_CODE. Alexey Viktorov 2016.10.19 08:59 #56 evillive : 코드를 삽입하기 위해 메시지 편집 창의 상단 패널에 SRC 버튼이 있는데, 빈 줄 없이 코드를 멋지게 삽입합니다. 선은 또한 개체(추세)와 함께 그려야 하고 별도의 변수에 이전 시간/가격을 기억하고 두 번째 점의 좌표로 사용해야 합니다. 눈금을 다른 기호로 바꾸려면 - OBJ_ARROW 및 ARROW_CODE. 좋아하지 않는 것 DRAW_SECTION 하나 공백이 아닌 라인 값 사이의 세그먼트 Alex_Profit 2016.10.19 11:37 #57 AlexeyVik : А чем не нравится DRAW_SECTION 1 Отрезки между непустыми значениями линии 적용하는 방법을 모르겠습니다. Alex_Profit 2016.10.19 11:41 #58 AlexeyVik : 좋아하지 않는 것 DRAW_SECTION 하나 비어 있지 않은 라인 값 사이의 세그먼트 사악한 라이브 : 선은 또한 개체(추세)와 함께 그려야 하고 별도의 변수에 이전 시간/가격을 기억하고 두 번째 점의 좌표로 사용해야 합니다. 아이디어가 좋습니다. 작동하는지 시도하겠습니다. 사실, 그릴 조끼가 없습니다. 그것이 제대로 작동하는 한. Alexey Viktorov 2016.10.19 11:54 #59 Alex_Profit : 적용하는 방법을 모르겠습니다. 대신 OnInit()에서 SetIndexStyle(0, DRAW_LINE); 쓰다 SetIndexStyle(0, DRAW_SECTION); Alex_Profit 2016.10.19 13:50 #60 어떤 이유로 변경 없음 int OnCalculate ( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { SetIndexBuffer ( 0 ,Buff_High); //SetIndexStyle(0,DRAW_LINE); SetIndexStyle( 0 , DRAW_SECTION ); 12345678 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
글쎄, 그는 어디에서 일합니까? 선은 TK가 아니라 각 막대에 그려집니다. 또는 TF=H1 위의 그림에서?
루프의 각 반복에서 한계 와 i 가 같아지는 종이에 다시 계산하십시오.
위에 표시된 예는 내가 이해하는 한 고려되지 않았습니다.
화살표 확인란은 표시기 버퍼와 촛불 그림자를 연결하는 선을 사용하여 그릴 수 있습니다.
PERIOD_H;. H4 기간 이하는 모든 것이 잘 그려집니다.
나는 = 0;
한계는 외부 변수 기본값 = 5입니다.
외부 int barToProcess = 5; //--- 표시된 기간(줄) 수 .
"촛불 그림자를 연결하는 선과 같이 표시기 버퍼를 사용하여 화살표 눈금을 그릴 수 있습니다."
이렇게 이해합니다.
인덱스가 [Limit]인 버퍼에는 Array에서 높은 값이 할당됩니다.
이중 Buf_High[Limit] = mqlRates [0].high ;
각 막대에서 원을 그리는 방법을 이해합니다. 그러나 모든 H4 막대에서와 같이 아무 것도 없습니다.
PERIOD_H;. H4 기간 이하는 모든 것이 잘 그려집니다.
나는 = 0;
한계는 외부 변수 기본값 = 5입니다.
외부 int barToProcess = 5; //--- 표시된 기간(줄) 수 .
"촛불 그림자를 연결하는 선과 같이 표시기 버퍼를 사용하여 화살표 눈금을 그릴 수 있습니다."
이렇게 이해합니다.
인덱스가 [Limit]인 버퍼에는 Array에서 높은 값이 할당됩니다.
이중 Buf_High[Limit] = mqlRates[0].high ;
각 막대에서 원을 그리는 방법을 이해합니다. 그러나 모든 H4 막대에서와 같이 아무 것도 없습니다.
루프를 사용하기 전에 루프가 어떻게 작동하는지 이해하십시오. i = 처음에만 0, 그 다음에는 i++, 한계까지.
표시기의 첫 번째 실행에서 limit=Bars-counted_bars= Bars-0=Bars.
for 루프는 이론적으로 0에서 차트의 막대 수까지 계산해야 합니다. 하지만!!! 여기서 두 번째 while 루프 가 개입하여 i와 limit를 모두 다시 계산합니다.
왜 그랬는지, 누가 가르쳤는지, 나는 이해하지 못합니다 ...
손가락에 대한 예, 제공: 막대 - 100, barToProcess = 5.
표시기의 첫 번째 실행에서 counted_bars=0은 아직 계산되지 않았으므로 limit=100입니다. 따라서 처음에 for 루프는 0에서 99까지 100번 작동해야 합니다.
for 루프 반복:
1. i=0, limit=barsToProcess=5, while (i<5) - 내부 루프는 0에서 4까지 5번 라인과 체크 표시를 그리면서 실행됩니다. 매번 i++ 가 완료되면 while - i=5, limit =5 .
2. i=5=limit - for 루프가 종료되었습니다.
모두! 그런 다음 표시기는 다음 틱까지 아무 작업도 수행하지 않습니다. 틱이 도착했습니다(counted_bars=99, limit=Bars-counted_bars= 100-99=1).
for 루프는 1번, while 루프 는 실행되지 않습니다( if(limit>barsToProcess) 조건이 충족되지 않기 때문에). 그리고 지표가 차트에서 언로드 되거나 TF가 변경될 때까지 일반적으로 지표가 다시 초기화될 때까지 계속됩니다.
즉, 실제로 표시기는 차트에 로드할 때 확인 표시 선을 한 번 그린 다음 다시 초기화될 때까지 유휴 상태를 유지합니다. 그리고 왜 그러한 지표가 필요합니까? 단일 처리 및 스크립트로 대처합니다.
코드를 다시 작성했습니다. 모든 것이 주기에 맞는 것 같습니다.
"버퍼" 라인을 그리는 문제가 있었습니다.
#property strict
#property indicator_chart_window
extern int Total_bars = 5; //--- Кол-во отображаемых Элементов в истории
//--- Глобальные переменные
string Name_VLine; //--- Имя Элементов
string Name_CHECK; //--- Имя Элементов
MqlRates mqlRates[1]; //Структура для хранения информации
#property indicator_buffers 1
#property indicator_type1 DRAW_LINE // тип графического построения - линия
#property indicator_color1 clrRed // цвет линии
#property indicator_style1 STYLE_SOLID // стиль линии
#property indicator_width1 1 // толщина линии
double Buff_High[];
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
SetIndexBuffer(0,Buff_High);
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(0,DRAW_SECTION);
//+------------------------------------------------------------------+
int limit; //--- переменная старт кол-во баров. Линии рисуем о по всем барам
int counted_bars = IndicatorCounted(); //--- перем counted_bars = функц. Возвращает количество баров
if(counted_bars > 0) counted_bars --; //--- последний посчитанный бар будет пересчитан
//--- основной цикл
limit = Bars - counted_bars;
for(int i = 0; i <= limit; i ++)
{
if(limit > Total_bars) //--- Если кол-во баров на графике > Кол-ву выбранных элементов
{
limit = Total_bars-1; //--- тогда кол-во баров на графике = Кол-ву выбранных элементов
}
datetime t_Line = iTime(Symbol(),PERIOD_H4,i); //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара
CopyRates(_Symbol, PERIOD_H4, t_Line, 1, mqlRates); //--- Структура для хранения информации
//+------------------------ Рисуем вертикальную линии -----------------------------------------------------+
ObjectCreate (Name_VLine + " VLine" + DoubleToStr(i,0),OBJ_VLINE,0,t_Line,0); //--- Создаём обьект вертикальную линию
ObjectSet (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_STYLE,2); //--- Со стилем
ObjectSet (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_COLOR,DimGray); //--- Со цветом
ObjectSet (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_WIDTH,0); //--- С толщиной
ObjectSet (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_BACK,0); //--- С типом отображения. Объект на заднем плане
//--- кубики по хай (В место галочек нужно подставить кубики)
ObjectCreate (0,Name_CHECK + "H_CHECK" + DoubleToStr(i,0), OBJ_ARROW_CHECK, 0, t_Line, mqlRates[0].high, t_Line,mqlRates[0].high);
ObjectSetInteger(0,Name_CHECK + "H_CHECK" + DoubleToStr(i,0), OBJPROP_COLOR, clrGreen);
//--- кубики по лоу (В место галочек нужно подставить кубики)
ObjectCreate (0,Name_CHECK + "L_CHECK" + DoubleToStr(i,0), OBJ_ARROW_CHECK, 0, t_Line, mqlRates[0].low, t_Line,mqlRates[0].low);
ObjectSetInteger(0,Name_CHECK + "L_CHECK" + DoubleToStr(i,0), OBJPROP_COLOR, clrGreen);
// На ТФ Н4 линии рисуются по хайям,
// При смене ТФ линия рисуется на растоянии параметра Total_bars.
//--- Заполнение буфера
Buff_High[i] = mqlRates[0].high ;
}
return(rates_total);
}
//+------------------------------------------------------------------+
왜 그랬는지, 누가 가르쳤는지, 나는 이해하지 못합니다 ...
적절한 지표를 찾아 필요한 조각이 남을 때까지 "분석"했습니다. 그런 다음 코드 조각을 수집하고 필요한 정보를 얻었습니다. 이 같은.
"나는 콧수염을 감아요" .
코드를 다시 작성했습니다. 모든 것이 주기에 맞는 것 같습니다.
"버퍼" 라인을 그리는 문제가 있었습니다.
코드를 삽입하기 위해 메시지 편집 창의 상단 패널에 SRC 버튼이 있는데, 빈 줄 없이 코드를 멋지게 삽입합니다.
선은 또한 개체(추세)와 함께 그려야 하고 별도의 변수에 이전 시간/가격을 기억하고 두 번째 점의 좌표로 사용해야 합니다.
눈금을 다른 문자로 바꾸려면 - OBJ_ARROW 및 ARROW_CODE.
코드를 삽입하기 위해 메시지 편집 창의 상단 패널에 SRC 버튼이 있는데, 빈 줄 없이 코드를 멋지게 삽입합니다.
선은 또한 개체(추세)와 함께 그려야 하고 별도의 변수에 이전 시간/가격을 기억하고 두 번째 점의 좌표로 사용해야 합니다.
눈금을 다른 기호로 바꾸려면 - OBJ_ARROW 및 ARROW_CODE.
좋아하지 않는 것
하나
공백이 아닌 라인 값 사이의 세그먼트
А чем не нравится
1
Отрезки между непустыми значениями линии
적용하는 방법을 모르겠습니다.
좋아하지 않는 것
하나
비어 있지 않은 라인 값 사이의 세그먼트
선은 또한 개체(추세)와 함께 그려야 하고 별도의 변수에 이전 시간/가격을 기억하고 두 번째 점의 좌표로 사용해야 합니다.
아이디어가 좋습니다. 작동하는지 시도하겠습니다.
사실, 그릴 조끼가 없습니다. 그것이 제대로 작동하는 한.
Alex_Profit :
적용하는 방법을 모르겠습니다.
대신 OnInit()에서
SetIndexStyle(0, DRAW_LINE);
쓰다
SetIndexStyle(0, DRAW_SECTION);
어떤 이유로 변경 없음