포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 971 1...964965966967968969970971972973974975976977978...1178 새 코멘트 Victor Nikolaev 2015.11.28 10:42 #9701 korobok777 : 코드 없이는 아무 것도 말할 수 없습니다. [삭제] 2015.11.28 13:49 #9702 안녕하세요. 여기에 과매수/과매도 영역에서 RSI 출구에 대한 간단한 표시기를 작성했습니다. 작동합니다. 올바르게 화살표는 필요한 곳에 그립니다. 하지만 실시간으로만. 질문: n번째 막대에 대한 기록을 그리는 방법은 무엇입니까? #속성 표시기_차트_창 #속성 표시기_버퍼 2 #property indicator_color1 라임그린 #property indicator_color2 라임그린 이중 rsi,rsi1,rsi2; 더블 크로스업[]; 더블 크로스다운[]; 정수 플래그 = 0; 정수 FLAG1 = 2; 부울 New_Bar=거짓; 정수 초기화() { //---- 표시기 SetIndexStyle(0,DRAW_ARROW,5,1); SetIndexArrow(0, 233); SetIndexBuffer(0, 크로스업); SetIndexStyle(1,DRAW_ARROW,5,1); SetIndexArrow(1, 234); SetIndexBuffer(1, 크로스다운); //---- 리턴(0); } //+----------------------------------------------- --------------------+ //| 사용자 지정 표시기 초기화 해제 기능 | //+----------------------------------------------- --------------------+ 정수 초기화() { //---- //---- 리턴(0); } 정수 시작() { rsi = iRSI(NULL,0,4,PRICE_CLOSE,0); rsi1 = iRSI(NULL,0,4,PRICE_CLOSE,1); rsi2 = iRSI(NULL,0,4,PRICE_CLOSE,2); Fun_New_Bar(); int 제한, i, 카운터; 이중 범위, AvgRange; for(i = 0, i <= 한계, i++) { 카운터 = 나; 범위=0; 평균 범위=0; (카운터=i ;카운터<=i+9;카운터++) { AvgRange=AvgRange+MathAbs(높음[카운터]-낮음[카운터]); } 범위=AvgRange/10; if (FLAG<1 && rsi<rsi2 && rsi2>70 && rsi1<70) { 경고("RSI DOWN!!! on ", Symbol()); CrossDown[i] = 높음[i]+ 범위*1.8; 플래그=1;} if(FLAG1>1 && rsi>rsi2 && rsi2<30 && rsi1>30) { 경고("RSI UP!!! on ", Symbol()); CrossUp[i] = 낮음[i]- 범위*1.8; 플래그1 = 1; } if( New_Bar==true) {플래그=0;} if( New_Bar==true) {FLAG1=2;} } 리턴(0); } 무효 Fun_New_Bar() { 정적 날짜 시간 New_Time=0; New_Bar=거짓; if(New_Time!=시간[0]) { New_Time=시간[0]; New_Bar=참; } } Any rookie question, so 코딩 도움말 원시 아이디어 Roma Korobeynikov 2015.11.28 18:17 #9703 Vinin : 코드 없이는 아무 것도 말할 수 없습니다. //==================================================================+ extern ENUM_TIMEFRAMES PERIOD_= PERIOD_H1 ; //Периоды графиков //==================================================================+ string _ChartSymbol; long _ChartID, _ChartFirst, _ChartPeriod; int start() { //---идентификатор графика начиная с первого _ChartFirst= ChartFirst (); if (_ChartFirst> 0 ) //если идентификатор больше ноля { _ChartSymbol= ChartSymbol (_ChartFirst); //символ графика _ChartPeriod= ChartPeriod (_ChartFirst); //Периоды графика //---выполним функцию конвертации периода если не совпадает if ( _ChartPeriod!=PERIOD_) { bool ch= ChartSetSymbolPeriod (_ChartFirst,_ChartSymbol,PERIOD_); } } return ( 0 ); } int deinit() { Alert ( "скрипт закончил работу" ); return ( 0 ); } 이것은 첫 번째 차트 에만 해당되며 팝업 창은 방해하지 않습니다. Boris 2015.11.28 20:24 #9704 Red_Manticore : 안녕하세요. 여기에 과매수/과매도 영역에서 RSI 출구에 대한 간단한 표시기를 작성했습니다. 작동합니다. 올바르게 화살표는 필요한 곳에 그립니다. 하지만 실시간으로만. 질문: n번째 막대에 대한 기록을 그리는 방법은 무엇입니까? 규칙에 따라 코드를 삽입하십시오. 먼저 읽어야 합니다! 동영상 버튼 왼쪽의 SRC를 클릭하고 "시트"를 삭제하십시오! #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 LimeGreen #property indicator_color2 LimeGreen double rsi,rsi1,rsi2; double CrossUp[]; double CrossDown[]; int FLAG = 0 ; int FLAG1 = 2 ; bool New_Bar= false ; int init() { //---- indicators SetIndexStyle( 0 , DRAW_ARROW , 5 , 1 ); SetIndexArrow( 0 , 233 ); SetIndexBuffer ( 0 , CrossUp); SetIndexStyle( 1 , DRAW_ARROW , 5 , 1 ); SetIndexArrow( 1 , 234 ); SetIndexBuffer ( 1 , CrossDown); //---- return ( 0 ); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return ( 0 ); } int start() { rsi = iRSI ( NULL , 0 , 4 , PRICE_CLOSE , 0 ); rsi1 = iRSI ( NULL , 0 , 4 , PRICE_CLOSE , 1 ); rsi2 = iRSI ( NULL , 0 , 4 , PRICE_CLOSE , 2 ); Fun_New_Bar(); int limit, i, counter; double Range, AvgRange; for (i = 0 ; i <= limit; i++) { counter=i; Range= 0 ; AvgRange= 0 ; for (counter=i ;counter<=i+ 9 ;counter++) { AvgRange=AvgRange+ MathAbs (High[counter]-Low[counter]); } Range=AvgRange/ 10 ; if (FLAG< 1 && rsi<rsi2 && rsi2> 70 && rsi1< 70 ) { Alert ( "RSI DOWN!!! on " , Symbol ()); CrossDown[i] = High[i]+ Range* 1.8 ; FLAG = 1 ;} if (FLAG1> 1 && rsi>rsi2 && rsi2< 30 && rsi1> 30 ) { Alert ( "RSI UP!!! on " , Symbol ()); CrossUp[i] = Low[i]- Range* 1.8 ; FLAG1 = 1 ; } if ( New_Bar== true ) {FLAG= 0 ;} if ( New_Bar== true ) {FLAG1= 2 ;} } return ( 0 ); } void Fun_New_Bar() { static datetime New_Time= 0 ; New_Bar= false ; if (New_Time!=Time[ 0 ]) { New_Time=Time[ 0 ]; New_Bar= true ; } } ответить Victor Nikolaev 2015.11.29 08:22 #9705 korobok777 : 이것은 첫 번째 차트에만 해당되며 팝업 창은 간섭하지 않습니다. 스크립트는 열려 있는 모든 차트 를 처리합니다. 현재 것이 마지막으로 처리됩니다. 스크립트는 시간 프레임을 변경하면 작업을 종료하므로 스크립트 완료에 대한 경고 창이 한 번만 날아갑니다. 모든 차트에서 기간이 지정된 기간으로 변경됩니다. //+------------------------------------------------------------------+ //| ReplaceTimeFrame.mq4 | //| Copyright 2015, Vinin | //| http://vinin.ucoz.ru | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, Vinin" #property link "http://vinin.ucoz.ru" #property version "1.00" #property strict #property show_inputs input ENUM_TIMEFRAMES PERIOD_= PERIOD_H1 ; //Периоды графиков //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnStart () { long id= ChartFirst (); long id_current= ChartID (); int i= 0 ; while (i< 100 ) { ENUM_TIMEFRAMES _ChartPeriod= ChartPeriod (id); //Периоды графика if (_ChartPeriod!=PERIOD_ && id!=id_current) { bool ch= ChartSetSymbolPeriod (id, ChartSymbol (id),PERIOD_); } id= ChartNext (id); if (id< 0 ){ break ;} i++; } ENUM_TIMEFRAMES _ChartPeriod= ChartPeriod (id_current); //Периоды графика if (_ChartPeriod!=PERIOD_) { bool ch= ChartSetSymbolPeriod (id_current, ChartSymbol (id_current),PERIOD_); } } Roma Korobeynikov 2015.11.29 13:35 #9706 Vinin : 스크립트는 열려 있는 모든 차트를 처리합니다. 현재 것이 마지막으로 처리됩니다. 스크립트는 시간 프레임을 변경하면 작업을 종료하므로 스크립트 완료에 대한 경고 창이 한 번만 날아갑니다. 모든 차트에서 기간이 지정된 기간으로 변경됩니다. Ai))) 수고하셨습니다!!!! 감사합니다!!! pr0gre5 2015.11.29 14:47 #9707 안녕하세요, 배열을 선언 이중 gdClose_array[]; ArrayResize(gdClose_array, 1); 현재 차트에서 마지막으로 닫힌 막대로 닫는 배열에 데이터를 복사합니다. iX=CopyClose(Symbol(), PERIOD_CURRENT ,1,1,gdClose_array) ; 배열의 값 검색 이중 dX=NormalizeDouble(gdClose_array[0], 숫자); Print("NormalizeDouble(dX, 숫자)", dX); 번호를 받았지만 분명히 정확하지 않습니다. NormalizeDouble(dX, 자릿수) 1.0644 그래프(시각화)에 따르면 근처에 그런 값이 없지만 그리고 이 값은 테스트 중에 변경되지 않습니다. 추가 ArraySetAsSeries(gdClose_array, true); 상황은 변하지 않았다 실수는 어디에 있습니까? Paladin80 2015.11.29 18:56 #9708 n0name : 안녕하세요, ... 현재 차트에서 마지막으로 닫힌 막대로 닫는 배열에 데이터를 복사합니다. iX=CopyClose(Symbol(),PERIOD_CURRENT,1,1,gdClose_array) ; 여기 에서는 배열 요소의 인덱스를 지정하지 않고 배열의 이름만 기록했습니다. 이전부터 ArrayResize(gdClose_array, 1); 배열 요소의 수를 1로 설정하면 해당 인덱스는 0입니다. 따라서 다음을 수행해야 합니다. iX= CopyClose ( Symbol (), PERIOD_CURRENT , 1 , 1 ,gdClose_array[ 0 ]); 그리고 몇 가지 질문/조언이 더 있습니다. 1) 1개의 값만 기억해야 하는 경우 배열 대신 변수를 사용할 수 있습니다. 그런 다음 대신: double gdClose_array[]; ArrayResize (gdClose_array, 1 ); 하다 double gdClose_array; 그런 다음 원래 코드로. 2) 배열이 필요하지만 요소가 1개만 있다는 것을 즉시 알면 동적 배열을 선언한 다음 크기를 설정하는 대신 요소가 1개인 정적 배열을 즉시 선언합니다. 추가 작업이 필요하지 않습니다. 대신에 double gdClose_array[]; ArrayResize (gdClose_array, 1 ); 써 내려 가다 double gdClose_array[ 1 ]; ~ 후에 iX= CopyClose ( Symbol (), PERIOD_CURRENT , 1 , 1 ,gdClose_array[ 0 ]); 그런 다음 원래 코드로. RILAX 2015.11.30 15:59 #9709 안녕하세요! 프로그래머를 위한 질문입니다. 오더가 열렸을 때 발동되는 어드바이저가 있으며, 지정된 포인트만큼 손절매를 하고 이익을 얻습니다. 문제. 정지 손실 대신 EA가 동일한 볼륨의 보류 중인 역 정지 주문 을 배치하도록 코드를 변경할 수 있습니까? 이를 위해 코드에서 무엇을 변경해야 합니까? 고맙습니다. владимир 2015.11.30 16:22 #9710 안녕하세요! 다시 말하지만, 아마도 기본적인 것에서 벗어날 수 없습니다. 왜 모든 것이 도움말에 있는 것처럼 보이지만 결과는 0.0을 인쇄합니까? double FractalDown_1 = iFractals ( NULL , 0 ,MODE_LOWER, 1 ); Print ( "FractalDown_1=" ,FractalDown_1); 프랙탈 값이 검색되지 않는 이유는 무엇입니까? 1...964965966967968969970971972973974975976977978...1178 새 코멘트 사유: 취소 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
안녕하세요. 여기에 과매수/과매도 영역에서 RSI 출구에 대한 간단한 표시기를 작성했습니다. 작동합니다.
올바르게 화살표는 필요한 곳에 그립니다. 하지만 실시간으로만.
질문: n번째 막대에 대한 기록을 그리는 방법은 무엇입니까?
#속성 표시기_차트_창코드 없이는 아무 것도 말할 수 없습니다.
안녕하세요. 여기에 과매수/과매도 영역에서 RSI 출구에 대한 간단한 표시기를 작성했습니다. 작동합니다.
올바르게 화살표는 필요한 곳에 그립니다. 하지만 실시간으로만.
질문: n번째 막대에 대한 기록을 그리는 방법은 무엇입니까?
규칙에 따라 코드를 삽입하십시오. 먼저 읽어야 합니다! 동영상 버튼 왼쪽의 SRC를 클릭하고 "시트"를 삭제하십시오!
이것은 첫 번째 차트에만 해당되며 팝업 창은 간섭하지 않습니다.
스크립트는 열려 있는 모든 차트 를 처리합니다. 현재 것이 마지막으로 처리됩니다. 스크립트는 시간 프레임을 변경하면 작업을 종료하므로 스크립트 완료에 대한 경고 창이 한 번만 날아갑니다. 모든 차트에서 기간이 지정된 기간으로 변경됩니다.
스크립트는 열려 있는 모든 차트를 처리합니다. 현재 것이 마지막으로 처리됩니다. 스크립트는 시간 프레임을 변경하면 작업을 종료하므로 스크립트 완료에 대한 경고 창이 한 번만 날아갑니다. 모든 차트에서 기간이 지정된 기간으로 변경됩니다.
Ai))) 수고하셨습니다!!!! 감사합니다!!!
안녕하세요,
배열을 선언
이중 gdClose_array[];
ArrayResize(gdClose_array, 1);
현재 차트에서 마지막으로 닫힌 막대로 닫는 배열에 데이터를 복사합니다.
iX=CopyClose(Symbol(), PERIOD_CURRENT ,1,1,gdClose_array) ;
배열의 값 검색
이중 dX=NormalizeDouble(gdClose_array[0], 숫자);
Print("NormalizeDouble(dX, 숫자)", dX);
번호를 받았지만 분명히 정확하지 않습니다.
NormalizeDouble(dX, 자릿수) 1.0644
그래프(시각화)에 따르면 근처에 그런 값이 없지만
그리고 이 값은 테스트 중에 변경되지 않습니다.
추가
ArraySetAsSeries(gdClose_array, true);
상황은 변하지 않았다
실수는 어디에 있습니까?
안녕하세요,
...현재 차트에서 마지막으로 닫힌 막대로 닫는 배열에 데이터를 복사합니다.
iX=CopyClose(Symbol(),PERIOD_CURRENT,1,1,gdClose_array) ;
여기 에서는 배열 요소의 인덱스를 지정하지 않고 배열의 이름만 기록했습니다. 이전부터 ArrayResize(gdClose_array, 1); 배열 요소의 수를 1로 설정하면 해당 인덱스는 0입니다. 따라서 다음을 수행해야 합니다.
그리고 몇 가지 질문/조언이 더 있습니다.
1) 1개의 값만 기억해야 하는 경우 배열 대신 변수를 사용할 수 있습니다. 그런 다음 대신:
하다
double gdClose_array;
그런 다음 원래 코드로.
2) 배열이 필요하지만 요소가 1개만 있다는 것을 즉시 알면 동적 배열을 선언한 다음 크기를 설정하는 대신 요소가 1개인 정적 배열을 즉시 선언합니다. 추가 작업이 필요하지 않습니다.
대신에
써 내려 가다
~ 후에
그런 다음 원래 코드로.
안녕하세요! 프로그래머를 위한 질문입니다.
오더가 열렸을 때 발동되는 어드바이저가 있으며, 지정된 포인트만큼 손절매를 하고 이익을 얻습니다.
문제.
정지 손실 대신 EA가 동일한 볼륨의 보류 중인 역 정지 주문 을 배치하도록 코드를 변경할 수 있습니까?
이를 위해 코드에서 무엇을 변경해야 합니까?
고맙습니다.
안녕하세요!
다시 말하지만, 아마도 기본적인 것에서 벗어날 수 없습니다. 왜 모든 것이 도움말에 있는 것처럼 보이지만 결과는 0.0을 인쇄합니까?
프랙탈 값이 검색되지 않는 이유는 무엇입니까?