MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 440 1...433434435436437438439440441442443444445446447...1953 새 코멘트 Vladislav Andruschenko 2018.01.30 10:01 #4391 STARIJ : 나를 위해 작동합니다 - 마우스 움직임을 모니터링합니다 나는 surrolling에 대해 이야기하고 있습니다.) voron_026 2018.01.30 10:42 #4392 모두에게 좋은 하루. 더 높은 기간의 정보를 분석할 필요가 있었습니다. 시스템에는 채널을 구축할 수 있는 조건이 있습니다. 이것은 특정 수의 바에 대한 최대 및 최소 가격을 찾는 것입니다. 다음과 같은 방식으로 구현됩니다. extern ENUM_TIMEFRAMES TimeFrameRZ = PERIOD_M15 ; //Период разворотной зоны extern ENUM_TIMEFRAMES TimeFrameIn = PERIOD_M5 ; //Период точки входа extern int ATR_period = 14 ; extern int UpLineSell = 7 ; extern int DownLineSell = 7 ; extern int UpLineBuy = 7 ; extern int DownLineBuy = 7 ; // Параметры разворотных свечей extern string Comment2 = "---------------------------------Параметры разворотных свечей------------------------------------------" ; extern int Volotilnost = 20 ; // Диапазон цен для трех разворотных свечей (в пунктах) extern int MaxLineSell = 3 ; extern int MaxLineBuy = 3 ; bool SellPattern = false ; bool BuyPattern = false ; bool New_Bar = false ; double UpLine_Sell = 0 ; double DownLine_Sell = 0 ; double UpLine_Buy = 0 ; double DownLine_Buy = 0 ; int i = 0 , j = 0 ; int ULs = 0 ; int DLs = 0 ; int ULb = 0 ; int DLb = 0 ; double MassZone[ 2 ][ 10 ]; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { if ( Digits == 3 || Digits == 5 ) { Volotilnost *= 10 ; UpLineSell *= 10 ; DownLineSell *= 10 ; UpLineBuy*= 10 ; DownLineBuy*= 10 ; } return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { RazvorotZona(); if (SellPattern == true ) { if ( ObjectCreate ( ChartID (), "UpLine_Sell" + IntegerToString (ULs), OBJ_HLINE , 0 , TimeCurrent (),UpLine_Sell)) { ObjectSetInteger ( ChartID (), "UpLine_Sell" + IntegerToString (ULs), OBJPROP_COLOR , clrOrange ); //--- установим цвет прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Sell" + IntegerToString (ULs), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Sell" + IntegerToString (ULs), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Sell" + IntegerToString (ULs), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане } if ( ObjectCreate ( ChartID (), "DownLine_Sell" + IntegerToString (DLs), OBJ_HLINE , 0 , TimeCurrent (),DownLine_Sell)) { ObjectSetInteger ( ChartID (), "DownLine_Sell" + IntegerToString (DLs), OBJPROP_COLOR , clrMagenta ); //--- установим цвет прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Sell" + IntegerToString (DLs), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Sell" + IntegerToString (DLs), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Sell" + IntegerToString (DLs), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане } ULs++; DLs++; if (DLs >= MaxLineSell && ULs >= MaxLineSell) { ObjectDelete ( ChartID (), "UpLine_Sell" + IntegerToString (ULs - MaxLineSell)); ObjectDelete ( ChartID (), "DownLine_Sell" + IntegerToString (DLs - MaxLineSell)); } } if (BuyPattern == true ) { if ( ObjectCreate ( ChartID (), "UpLine_Buy" + IntegerToString (ULb), OBJ_HLINE , 0 , TimeCurrent (),UpLine_Buy)) { ObjectSetInteger ( ChartID (), "UpLine_Buy" + IntegerToString (ULb), OBJPROP_COLOR , clrDeepSkyBlue ); //--- установим цвет прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Buy" + IntegerToString (ULb), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Buy" + IntegerToString (ULb), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Buy" + IntegerToString (ULb), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане } if ( ObjectCreate ( ChartID (), "DownLine_Buy" + IntegerToString (DLb), OBJ_HLINE , 0 , TimeCurrent (),DownLine_Buy)) { ObjectSetInteger ( ChartID (), "DownLine_Buy" + IntegerToString (DLb), OBJPROP_COLOR , clrBrown ); //--- установим цвет прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Buy" + IntegerToString (DLb), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Buy" + IntegerToString (DLb), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Buy" + IntegerToString (DLb), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане } ULb++; DLb++; if (ULb >= MaxLineBuy && DLb >= MaxLineBuy) { ObjectDelete ( ChartID (), "UpLine_Buy" + IntegerToString (ULb - MaxLineBuy)); ObjectDelete ( ChartID (), "DownLine_Buy" + IntegerToString (DLb - MaxLineBuy)); } } } //+------------------------------------------------------------------+ // Функция определения нового бара | //+------------------------------------------------------------------+ void Find_New_Bar() { datetime TimeBar0 = iTime ( Symbol (),TimeFrameRZ, 0 ); static datetime New_Time= 0 ; // Время текущего бара New_Bar= false ; // Нового бара нет if (New_Time != TimeBar0) // Сравниваем время { New_Time = TimeBar0; // Теперь время такое New_Bar = true ; // Поймался новый бар } } //+------------------------------------------------------------------+ // Функция определения разворотной зоны | //+------------------------------------------------------------------+ void RazvorotZona() { Find_New_Bar(); double Open3= NormalizeDouble ( iOpen ( Symbol (), TimeFrameRZ, 4 ), Digits ); double Close3 = NormalizeDouble ( iClose ( Symbol (), TimeFrameRZ, 4 ), Digits ); double High3 = NormalizeDouble ( iHigh ( Symbol (), TimeFrameRZ, 4 ), Digits ); double Low3 = NormalizeDouble ( iLow ( Symbol (), TimeFrameRZ, 4 ), Digits ); //Параметры индикатора волотильности ATR для нахожденя относительно большой свечи перед перевернутым Молотом double ATR = iATR ( Symbol (),TimeFrameRZ,ATR_period, 1 ); SellPattern = false ; BuyPattern = false ; int bar1 = 1 ; int bar2 = 3 ; double Max, Min; Max = High [ iHighest ( NULL , TimeFrameRZ, MODE_HIGH , bar2, bar1)]; //1. Ищем High и Low на отрезке [bar1, bar2]. Min = Low [ iLowest ( NULL , TimeFrameRZ, MODE_LOW , bar2, bar1)]; if ( NormalizeDouble ((Max - Min) / Point , Digits ) < Volotilnost && MathAbs (Close3-Open3) > 1.5 *ATR) { if ((Close3 > Open3) && New_Bar == true ) { UpLine_Sell = Max; DownLine_Sell = Min; SellPattern = true ; Print ( "Идентифицирован паттерн" ); Print ( "Максимальная цена " + DoubleToStr (Max)); Print ( "Минимальная цена " + DoubleToStr (Min)); } else {SellPattern = false ;} if ((Close3 < Open3) && New_Bar == true ) { UpLine_Buy = Max; DownLine_Buy = Min; BuyPattern = true ; Print ( "Идентифицирован паттерн" ); } else {BuyPattern = false ;} } } 그러나 이 접근 방식을 사용하면 현재 작동 중인 M5 기간의 막대 분석이 있습니다. 매개변수 bar1 및 bar2는 M15에서 가져와야 합니다. 그것을 구현하는 방법? voron_026 2018.01.30 10:45 #4393 문제가 여기 어딘가에 있다는 느낌이 듭니다 Max = High [ iHighest ( NULL , TimeFrameRZ, MODE_HIGH , bar2, bar1)]; //1. Ищем High и Low на отрезке [bar1, bar2]. Min = Low [ iLowest ( NULL , TimeFrameRZ, MODE_LOW , bar2, bar1)]; 누가 뭐라고 할까요? Konstantin Erin 2018.01.30 10:59 #4394 voron_026 : 문제가 여기 어딘가에 있다는 느낌이 듭니다 누가 뭐라고 할까요? 예, 원하는 기간을 지정하십시오. voron_026 2018.01.30 11:13 #4395 STARIJ : 예, 원하는 기간을 지정하십시오. 그가 지적한 바로는... TimeFrameRZ = PERIOD_M15 이것은 외부 변수입니다. Juer 2018.01.30 11:13 #4396 double array[ 10 ]; array[ 0 ]= 0.1 ; 배열을 선언 하고 요소를 채웁니다. 두 번째 줄에 유형 오류가 없는 선언이 나타나는 이유는 무엇입니까? voron_026 2018.01.30 11:18 #4397 Juer : 배열을 선언 하고 요소를 채웁니다. 두 번째 줄에 유형 오류가 없는 선언이 나타나는 이유는 무엇입니까? void OnTick() 함수에 코드를 작성하면 모든 것이 작동합니다. 또는 배열[ 0 ]= 0.1 ; void OnTick()에 쓰기 Artyom Trishkin 2018.01.30 11:37 #4398 Juer : 배열을 선언 하고 요소를 채웁니다. 두 번째 줄에 유형 오류가 없는 선언이 나타나는 이유는 무엇입니까? 전역 변수 범위에서 배열을 선언하고 있습니까? 그런 다음 값을 사용하여 즉시 선언합니다(코드를 직접 채우므로 미리 정의되어 있음을 의미합니다). double array[ 10 ]={ 0.1 , 0.2 , 0.3 , 0.4 , 0.5 , 0.6 , 0.7 , 0.8 , 0.9 , 1.0 }; ... OnInit() 또는 채워질 함수의 값으로 배열을 채웁니다. ZZuretc 2018.01.30 12:11 #4399 Expert Advisor에서 ZigZag 표시기의 값을 표시하는 방법을 알려주십시오. 다른 것들은 iMA, iStochastic, iWPR ... 을 작성하여 표시하고 수동으로 지그재그로 계산합니다. 어떻게? Konstantin Erin 2018.01.30 12:19 #4400 ZZuretc : Expert Advisor에서 ZigZag 표시기의 값을 표시하는 방법을 알려주십시오. 다른 것들은 iMA, iStochastic, iWPR ... 을 작성하여 표시하고 수동으로 지그재그로 계산합니다. 어떻게? 사용하기로 결정하셨나요? ZigZag 표시기의 값은 모든 곳에서 0과 같습니다. 지그재그의 가치는 상단에서만 상단의 가격과 동일합니다. 주기에서 막대를 볼 필요가 있습니다. 예 보기 파일: Zig2fl.mq4 4 kb 1...433434435436437438439440441442443444445446447...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
나를 위해 작동합니다 - 마우스 움직임을 모니터링합니다
나는 surrolling에 대해 이야기하고 있습니다.)모두에게 좋은 하루. 더 높은 기간의 정보를 분석할 필요가 있었습니다.
시스템에는 채널을 구축할 수 있는 조건이 있습니다. 이것은 특정 수의 바에 대한 최대 및 최소 가격을 찾는 것입니다. 다음과 같은 방식으로 구현됩니다.
그러나 이 접근 방식을 사용하면 현재 작동 중인 M5 기간의 막대 분석이 있습니다. 매개변수 bar1 및 bar2는 M15에서 가져와야 합니다.
그것을 구현하는 방법?
문제가 여기 어딘가에 있다는 느낌이 듭니다
누가 뭐라고 할까요?
문제가 여기 어딘가에 있다는 느낌이 듭니다
누가 뭐라고 할까요?
예, 원하는 기간을 지정하십시오.
예, 원하는 기간을 지정하십시오.
그가 지적한 바로는...
TimeFrameRZ = PERIOD_M15
이것은 외부 변수입니다.배열을 선언 하고 요소를 채웁니다.
두 번째 줄에 유형 오류가 없는 선언이 나타나는 이유는 무엇입니까?
배열을 선언 하고 요소를 채웁니다.
두 번째 줄에 유형 오류가 없는 선언이 나타나는 이유는 무엇입니까?
void OnTick() 함수에 코드를 작성하면 모든 것이 작동합니다.
또는 배열[ 0 ]= 0.1 ; void OnTick()에 쓰기
배열을 선언 하고 요소를 채웁니다.
두 번째 줄에 유형 오류가 없는 선언이 나타나는 이유는 무엇입니까?
전역 변수 범위에서 배열을 선언하고 있습니까?
그런 다음 값을 사용하여 즉시 선언합니다(코드를 직접 채우므로 미리 정의되어 있음을 의미합니다).
... OnInit() 또는 채워질 함수의 값으로 배열을 채웁니다.
Expert Advisor에서 ZigZag 표시기의 값을 표시하는 방법을 알려주십시오. 다른 것들은 iMA, iStochastic, iWPR ... 을 작성하여 표시하고 수동으로 지그재그로 계산합니다. 어떻게?
사용하기로 결정하셨나요? ZigZag 표시기의 값은 모든 곳에서 0과 같습니다. 지그재그의 가치는 상단에서만 상단의 가격과 동일합니다.
주기에서 막대를 볼 필요가 있습니다. 예 보기