MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1521 1...151415151516151715181519152015211522152315241525152615271528...1953 새 코멘트 jarikn 2021.07.01 12:05 #15201 MakarFX : 그렇지 않으면 "당"대신에 rsi 판독 값이 있어야합니다. 그렇습니까? int Signal( int i) { // Снимем показания индикатора double Current = iRSI ( NULL , 0 , per, PRICE_CLOSE , i); double Previous = iRSI ( NULL , 0 , per, PRICE_CLOSE , i+ 1 ); double SCurrent = iRSI ( NULL , 0 , per, PRICE_CLOSE , i); // Для предыдущего бара double SPrevious = iRSI ( NULL , 0 , per, PRICE_CLOSE , i+ 1 ); // А теперь проверим всловия для наличия сигналов // есть сигнал на покупку? if (Current <= niz && Close[1]>Open[1] ) return (BUY); if (Current >= verx && Close[ 1 ]<Open[ 1 ]) return (SELL); // Сигнала нет return (- 1 ); Tretyakov Rostyslav 2021.07.01 12:19 #15202 jarikn : 그렇습니까? 예, 하지만 한 지표를 다른 지표로 다시 쓸 수는 없습니다. 표시기의 논리를 작성한 다음 작성하십시오. 이 경우 모든 논리가 명확하지 않거나 사용되지 않는 추가 데이터가 있습니다. jarikn 2021.07.01 12:35 #15203 MakarFX : 예, 하지만 한 지표를 다른 지표로 다시 쓸 수는 없습니다. 표시기의 논리를 작성한 다음 작성하십시오. 이 경우 모든 논리가 명확하지 않거나 사용되지 않는 추가 데이터가 있습니다. 내가 얻은 스크린 샷을보십시오. 나는 이 생각이 있다. rsi가 70 수준 위에 있고 양초가 시가 아래에서 닫히면 매도 신호가 있어야 합니다. rsi가 30 수준보다 낮고 양초가 시가보다 높으면 매수 신호입니다. 엄격하게 판단하지 마십시오, 나는 단지 조금 배우려고 노력하고 있습니다)))) 이제 내가 뭘 잘못했는지 말해줘? 파일: Screenshot_13.png 29 kb Tretyakov Rostyslav 2021.07.01 13:18 #15204 jarikn : 내가 얻은 스크린 샷을보십시오. 나는 이런 생각이 있다. rsi가 70 수준 위에 있고 양초가 시가 아래에서 닫히면 매도 신호가 있어야 합니다. rsi가 30 수준보다 낮고 양초가 시가보다 높으면 매수 신호입니다. 엄격하게 판단하지 마십시오, 나는 단지 조금 배우려고 노력하고 있습니다)))) 이제 내가 뭘 잘못했는지 말해줘? 1) 버튼을 사용하여 메시지에 스크린샷 삽입 2) 당신의 조건에 따라 - 맞아요 //+------------------------------------------------------------------+ //| jarikn_RSI.mq4 | //| Copyright 2020, DrMak. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, DrMak." #property link " https://www.mql5.com " #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 2 //--- plot Покупаем #property indicator_label1 "Продаём" #property indicator_type1 DRAW_LINE #property indicator_color1 clrGreen #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot Продаём #property indicator_label2 "Покупаем" #property indicator_type2 DRAW_LINE #property indicator_color2 clrRed #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- input parameters input int RSI_Period = 14 ; //Период рассчета RSI input int AlertLevUp = 70 ; //Уровень для покупок input int AlertLevDn = 30 ; //Уровень для продаж //--- indicator buffers double Buy[]; // Буфер для покупок double Sell[]; // Буфер для продаж //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit () { //--- indicator buffers mapping SetIndexBuffer ( 0 ,Buy); SetIndexBuffer ( 1 ,Sell); // Устанавливаем нулевые значения для индикатора, при которых не будет сигнальных стрелок SetIndexEmptyValue ( 0 , 0 ); SetIndexEmptyValue ( 1 , 0 ); //Определяем стиль отображения индикаторных линий - стрелка SetIndexStyle ( 0 , DRAW_ARROW ); SetIndexStyle ( 1 , DRAW_ARROW ); // Установим значки "стрелки" для буферов SetIndexArrow( 0 , 234 ); //Стрелка "вниз" для продаж SetIndexArrow( 1 , 233 ); //Стрелка "вверх" для покупок //Устанавливаем текст описания стрелок индикатора для отображения информации в всплывающей подсказке. SetIndexLabel( 0 , "Продаём" ); SetIndexLabel( 1 , "Покупаем" ); //Определяем разрядность значений индикаторных линий - приравниваем разрядности фин. инструмента IndicatorDigits ( Digits ); //Строка с кратким названием индикатора выводится в сплывающей подсказке при наведении указателя мыши на стрелку IndicatorShortName ( "Мой первый индикатор" ); //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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[]) { //--- int limit=rates_total-prev_calculated- 1 ; if (limit< 1 ) return ( 0 ); for ( int i=limit;i>= 0 ;i--) { // Снимем показания индикатора double RSI = iRSI ( NULL , 0 ,RSI_Period, PRICE_CLOSE ,i); if (RSI>AlertLevUp&&open[i]>close[i]) Buy[i]=high[i]; if (RSI<AlertLevDn&&open[i]<close[i]) Sell[i]=low[i]; } //--- return value of prev_calculated for next call return (rates_total); } //+------------------------------------------------------------------+ jarikn 2021.07.01 13:34 #15205 MakarFX : 1) 버튼을 사용하여 메시지에 스크린샷 삽입 2) 당신의 조건에 따라 - 맞아요 감사하다. 나는 이것을 정리할 것이다 jarikn 2021.07.01 16:22 #15206 MakarFX : 1) 버튼을 사용하여 메시지에 스크린샷 삽입 2) 당신의 조건에 따라 - 맞아요 그리고 그러한 조건을 작성하는 방법 * rsi가 상향식 AlertLevDn에서 교차하면 구매합니까? 이것이 가능합니까 아니면 추가 슬라이딩이 필요합니까? { //--- int limit=rates_total-prev_calculated- 1 ; if (limit< 1 ) return ( 0 ); for ( int i=limit;i>= 0 ;i--) { // Снимем показания индикатора double RSI = iRSI ( NULL , 0 ,RSI_Period, PRICE_CLOSE ,i); if (RSI>AlertLevUp) Buy[i]=high[i]; if (RSI<AlertLevDn) Sell[i]=low[i]; } //--- return value of prev_calculated for next call return (rates_total); } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.07.01 16:36 #15207 jarikn : 그리고 그러한 조건을 작성하는 방법 * rsi가 상향식 AlertLevDn에서 교차하면 구매합니까? 이것이 가능합니까 아니면 추가 슬라이딩이 필요합니까? 당신의 질문은 당신에게 대답을 제공합니다 ... rsi가 아래에서 위로 교차 하면 현재 값이 더 높고 이전 값이 더 낮습니다. 현재 가치 double RSI = iRSI ( NULL , 0 ,RSI_Period, PRICE_CLOSE ,i); 하기 전에 double RSI2 = iRSI ( NULL , 0 ,RSI_Period, PRICE_CLOSE , i+1 ); 그런 다음 비교 RSI2가 AlertLevDn보다 작고 RSI가 AlertLevDn 보다 큰 경우 당신은 바이) jarikn 2021.07.01 16:40 #15208 MakarFX : 당신의 질문은 당신에게 대답을 제공합니다 ... rsi가 아래에서 위로 교차 하면 현재 값이 더 높고 이전 값이 더 낮습니다. 현재 가치 하기 전에 그런 다음 비교 RSI2가 AlertLevDn보다 작고 RSI가 AlertLevDn 보다 큰 경우 당신은 바이) 이해했다. 감사하다) Tretyakov Rostyslav 2021.07.01 16:50 #15209 jarikn : 이해했다. 감사하다) 고치다 int limit=rates_total-prev_calculated- 2 ; Andrei Sokolov 2021.07.01 21:21 #15210 안녕하세요 조언 부탁드립니다. MT5 볼린저 밴드 값을 가져와야 합니다. 쓰기 #property strict #include <Indicators\Trend.mqh> CiBands m_bands; input int Magic = 778871; int OnInit(){//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////////OnInit() Print(m_bands.Create(Symbol(), PERIOD_CURRENT, 20, 0, 2, PRICE_CLOSE)); Print((string)m_bands.MaPeriod()); Print((string)m_bands.Base(Bars(NULL, PERIOD_CURRENT))); return(INIT_SUCCEEDED); } double_max와 유사한 것을 출력합니다. 이 경우 마침표, 오프셋 및 나머지는 올바르게 가져옵니다. 1...151415151516151715181519152015211522152315241525152615271528...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
그렇지 않으면 "당"대신에 rsi 판독 값이 있어야합니다.
그렇습니까?
그렇습니까?
예, 하지만 한 지표를 다른 지표로 다시 쓸 수는 없습니다.
표시기의 논리를 작성한 다음 작성하십시오.
이 경우 모든 논리가 명확하지 않거나 사용되지 않는 추가 데이터가 있습니다.예, 하지만 한 지표를 다른 지표로 다시 쓸 수는 없습니다.
표시기의 논리를 작성한 다음 작성하십시오.
이 경우 모든 논리가 명확하지 않거나 사용되지 않는 추가 데이터가 있습니다.내가 얻은 스크린 샷을보십시오.
나는 이 생각이 있다.
rsi가 70 수준 위에 있고 양초가 시가 아래에서 닫히면 매도 신호가 있어야 합니다.
rsi가 30 수준보다 낮고 양초가 시가보다 높으면 매수 신호입니다.
엄격하게 판단하지 마십시오, 나는 단지 조금 배우려고 노력하고 있습니다))))
이제 내가 뭘 잘못했는지 말해줘?
내가 얻은 스크린 샷을보십시오.
나는 이런 생각이 있다.
rsi가 70 수준 위에 있고 양초가 시가 아래에서 닫히면 매도 신호가 있어야 합니다.
rsi가 30 수준보다 낮고 양초가 시가보다 높으면 매수 신호입니다.
엄격하게 판단하지 마십시오, 나는 단지 조금 배우려고 노력하고 있습니다))))
이제 내가 뭘 잘못했는지 말해줘?
1) 버튼을 사용하여 메시지에 스크린샷 삽입
2) 당신의 조건에 따라 - 맞아요
1) 버튼을 사용하여 메시지에 스크린샷 삽입
2) 당신의 조건에 따라 - 맞아요
감사하다. 나는 이것을 정리할 것이다
1) 버튼을 사용하여 메시지에 스크린샷 삽입
2) 당신의 조건에 따라 - 맞아요
그리고 그러한 조건을 작성하는 방법 * rsi가 상향식 AlertLevDn에서 교차하면 구매합니까? 이것이 가능합니까 아니면 추가 슬라이딩이 필요합니까?
그리고 그러한 조건을 작성하는 방법 * rsi가 상향식 AlertLevDn에서 교차하면 구매합니까? 이것이 가능합니까 아니면 추가 슬라이딩이 필요합니까?
당신의 질문은 당신에게 대답을 제공합니다 ...
rsi가 아래에서 위로 교차 하면 현재 값이 더 높고 이전 값이 더 낮습니다.
현재 가치
하기 전에
그런 다음 비교
RSI2가 AlertLevDn보다 작고 RSI가 AlertLevDn 보다 큰 경우
당신은 바이)
당신의 질문은 당신에게 대답을 제공합니다 ...
rsi가 아래에서 위로 교차 하면 현재 값이 더 높고 이전 값이 더 낮습니다.
현재 가치
하기 전에
그런 다음 비교
RSI2가 AlertLevDn보다 작고 RSI가 AlertLevDn 보다 큰 경우
당신은 바이)
이해했다. 감사하다)
이해했다. 감사하다)
고치다
안녕하세요 조언 부탁드립니다. MT5
볼린저 밴드 값을 가져와야 합니다.
쓰기
double_max와 유사한 것을 출력합니다.
이 경우 마침표, 오프셋 및 나머지는 올바르게 가져옵니다.