MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 962

 
감사합니다. ArrayResize 루프에 포함하여 배열에 새 행 을 추가하고 원하는 결과를 얻었습니다. 이제 디버거를 공부하겠습니다)
 
안녕하세요! iCustom을 사용 하기 위해 이 표시기에서 버퍼 번호를 가져오거나 찾는 방법은 무엇입니까? 이것은 간단한 PivotCustomTime 표시기입니다. 아니면 누군가가 ProTrader에 들어가는 간단한 PivotPoint 칠면조를 가지고 있습니까?
 #property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"


#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 EMPTY


extern bool pivots = true ;
extern bool camarilla = false ;
extern bool midpivots = false ;
extern int MyPeriod = PERIOD_D1 ;
/*+----------------------------------------------------+
 MyPeriod = Period in minutes to consideration, could be:
 1440 for D1
 60 for H1
 240 for H4
 1 for M1
 15 for M15
 30 for M30
 5 for M5
 43200 for MN1
 10080 for W1
 +-------------------------------------------------------*/


double day_high= 0 ;
double day_low= 0 ;
double yesterday_high= 0 ;
double yesterday_open= 0 ;
double yesterday_low= 0 ;
double yesterday_close= 0 ;
double today_open= 0 ;
double today_high= 0 ;
double today_low= 0 ;
double P= 0 ;
double Q= 0 ;
double R1,R2,R3;
double M0,M1,M2,M3,M4,M5;
double S1,S2,S3;
double H4,H3,L4,L3;
double nQ= 0 ;
double nD= 0 ;
double D= 0 ;
double rates_d1[ 2 ][ 6 ];
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers( 4 );
SetIndexStyle( 0 , DRAW_ARROW );
SetIndexArrow( 0 , 159 );
SetIndexBuffer ( 0 , ExtMapBuffer1);

//---- indicators
R1= 0 ; R2= 0 ; R3= 0 ;
M0= 0 ; M1= 0 ; M2= 0 ; M3= 0 ; M4= 0 ; M5= 0 ;
S1= 0 ; S2= 0 ; S3= 0 ;
H4= 0 ; H3= 0 ; L4= 0 ; L3= 0 ;


//----
return ( 0 );
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
ObjectDelete ( "R1 Label" );
ObjectDelete ( "R1 Line" );
ObjectDelete ( "R2 Label" );
ObjectDelete ( "R2 Line" );
ObjectDelete ( "R3 Label" );
ObjectDelete ( "R3 Line" );
ObjectDelete ( "S1 Label" );
ObjectDelete ( "S1 Line" );
ObjectDelete ( "S2 Label" );
ObjectDelete ( "S2 Line" );
ObjectDelete ( "S3 Label" );
ObjectDelete ( "S3 Line" );
ObjectDelete ( "P Label" );
ObjectDelete ( "P Line" );
ObjectDelete ( "H4 Label" );
ObjectDelete ( "H4 Line" );
ObjectDelete ( "H3 Label" );
ObjectDelete ( "H3 Line" );
ObjectDelete ( "L3 Label" );
ObjectDelete ( "L3 Line" );
ObjectDelete ( "L4 Label" );
ObjectDelete ( "L4 Line" );
ObjectDelete ( "M5 Label" );
ObjectDelete ( "M5 Line" );
ObjectDelete ( "M4 Label" );
ObjectDelete ( "M4 Line" );
ObjectDelete ( "M3 Label" );
ObjectDelete ( "M3 Line" );
ObjectDelete ( "M2 Label" );
ObjectDelete ( "M2 Line" );
ObjectDelete ( "M1 Label" );
ObjectDelete ( "M1 Line" );
ObjectDelete ( "M0 Label" );
ObjectDelete ( "M0 Line" );
//----
return ( 0 );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{

//---- TODO: add your code here

//---- exit if period is greater than daily charts
if ( Period () > 1440 )
{
Print ( "Error - Chart period is greater than 1 day." );
return (- 1 ); // then exit
}

//---- Get new daily prices

ArrayCopyRates(rates_d1, Symbol (), MyPeriod);

yesterday_close = rates_d1[ 1 ][ 4 ];
yesterday_open = rates_d1[ 1 ][ 1 ];
today_open = rates_d1[ 0 ][ 1 ];
yesterday_high = rates_d1[ 1 ][ 3 ];
yesterday_low = rates_d1[ 1 ][ 2 ];
day_high = rates_d1[ 0 ][ 3 ];
day_low = rates_d1[ 0 ][ 2 ];


//---- Calculate Pivots

D = (day_high - day_low);
Q = (yesterday_high - yesterday_low);
P = (yesterday_high + yesterday_low + yesterday_close) / 3 ;
R1 = ( 2 *P)-yesterday_low;
S1 = ( 2 *P)-yesterday_high;
R2 = P+(yesterday_high - yesterday_low);
S2 = P-(yesterday_high - yesterday_low);

H4 = (Q* 0.55 )+yesterday_close;
H3 = (Q* 0.27 )+yesterday_close;
R3 = ( 2 *P)+(yesterday_high-( 2 *yesterday_low));
M5 = (R2+R3)/ 2 ;
// R2 = P-S1+R1;
M4 = (R1+R2)/ 2 ;
// R1 = (2*P)-yesterday_low;
M3 = (P+R1)/ 2 ;
// P = (yesterday_high + yesterday_low + yesterday_close)/3;
M2 = (P+S1)/ 2 ;
// S1 = (2*P)-yesterday_high;
M1 = (S1+S2)/ 2 ;
// S2 = P-R1+S1;
S3 = ( 2 *P)-(( 2 * yesterday_high)-yesterday_low);
L3 = yesterday_close-(Q* 0.27 );
L4 = yesterday_close-(Q* 0.55 );
M0 = (S2+S3)/ 2 ;

if (Q > 5 )
{
nQ = Q;
}
else
{
nQ = Q* 10000 ;
}

if (D > 5 )
{
nD = D;
}
else
{
nD = D* 10000 ;
}


Comment ( "High= " ,yesterday_high, " Previous DaysRange= " ,nQ, "\nLow= " ,yesterday_low, " Current DaysRange= " ,nD, "\nClose= " ,yesterday_close);

//---- Set line labels on chart window

//---- Pivot Lines
if (pivots== true )
{
if ( ObjectFind ( "R1 label" ) != 0 )
{
ObjectCreate ( "R1 label" , OBJ_TEXT , 0 , Time[ 0 ], R1);
ObjectSetText( "R1 label" , " R1" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "R1 label" , 0 , Time[ 0 ], R1);
}

if ( ObjectFind ( "R2 label" ) != 0 )
{
ObjectCreate ( "R2 label" , OBJ_TEXT , 0 , Time[ 20 ], R2);
ObjectSetText( "R2 label" , " R2" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "R2 label" , 0 , Time[ 20 ], R2);
}

if ( ObjectFind ( "R3 label" ) != 0 )
{
ObjectCreate ( "R3 label" , OBJ_TEXT , 0 , Time[ 20 ], R3);
ObjectSetText( "R3 label" , " R3" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "R3 label" , 0 , Time[ 20 ], R3);
}

if ( ObjectFind ( "P label" ) != 0 )
{
ObjectCreate ( "P label" , OBJ_TEXT , 0 , Time[ 0 ], P);
ObjectSetText( "P label" , "Pivot " +DoubleToStr(P, 4 ), 8 , "Arial" ,
EMPTY);
}
else
{
ObjectMove ( "P label" , 0 , Time[ 0 ], P);
}

if ( ObjectFind ( "S1 label" ) != 0 )
{
ObjectCreate ( "S1 label" , OBJ_TEXT , 0 , Time[ 0 ], S1);
ObjectSetText( "S1 label" , "S1" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "S1 label" , 0 , Time[ 0 ], S1);
}

if ( ObjectFind ( "S2 label" ) != 0 )
{
ObjectCreate ( "S2 label" , OBJ_TEXT , 0 , Time[ 20 ], S2);
ObjectSetText( "S2 label" , "S2" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "S2 label" , 0 , Time[ 20 ], S2);
}

if ( ObjectFind ( "S3 label" ) != 0 )
{
ObjectCreate ( "S3 label" , OBJ_TEXT , 0 , Time[ 20 ], S3);
ObjectSetText( "S3 label" , "S3" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "S3 label" , 0 , Time[ 20 ], S3);
}

//--- Draw Pivot lines on chart
if ( ObjectFind ( "S1 line" ) != 0 )
{
ObjectCreate ( "S1 line" , OBJ_HLINE , 0 , Time[ 40 ], S1);
ObjectSet( "S1 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "S1 line" , OBJPROP_COLOR , MidnightBlue);
}
else
{
ObjectMove ( "S1 line" , 0 , Time[ 40 ], S1);
}

if ( ObjectFind ( "S2 line" ) != 0 )
{
ObjectCreate ( "S2 line" , OBJ_HLINE , 0 , Time[ 40 ], S2);
ObjectSet( "S2 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "S2 line" , OBJPROP_COLOR , MidnightBlue);
}
else
{
ObjectMove ( "S2 line" , 0 , Time[ 40 ], S2);
}

if ( ObjectFind ( "S3 line" ) != 0 )
{
ObjectCreate ( "S3 line" , OBJ_HLINE , 0 , Time[ 40 ], S3);
ObjectSet( "S3 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "S3 line" , OBJPROP_COLOR , MidnightBlue);
}
else
{
ObjectMove ( "S3 line" , 0 , Time[ 40 ], S3);
}

if ( ObjectFind ( "P line" ) != 0 )
{
ObjectCreate ( "P line" , OBJ_HLINE , 0 , Time[ 40 ], P);
ObjectSet( "P line" , OBJPROP_STYLE , STYLE_DOT );
ObjectSet( "P line" , OBJPROP_COLOR , YellowGreen);
}
else
{
ObjectMove ( "P line" , 0 , Time[ 40 ], P);
}

if ( ObjectFind ( "R1 line" ) != 0 )
{
ObjectCreate ( "R1 line" , OBJ_HLINE , 0 , Time[ 40 ], R1);
ObjectSet( "R1 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "R1 line" , OBJPROP_COLOR , FireBrick);
}
else
{
ObjectMove ( "R1 line" , 0 , Time[ 40 ], R1);
}

if ( ObjectFind ( "R2 line" ) != 0 )
{
ObjectCreate ( "R2 line" , OBJ_HLINE , 0 , Time[ 40 ], R2);
ObjectSet( "R2 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "R2 line" , OBJPROP_COLOR , FireBrick);
}
else
{
ObjectMove ( "R2 line" , 0 , Time[ 40 ], R2);
}

if ( ObjectFind ( "R3 line" ) != 0 )
{
ObjectCreate ( "R3 line" , OBJ_HLINE , 0 , Time[ 40 ], R3);
ObjectSet( "R3 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "R3 line" , OBJPROP_COLOR , FireBrick);
}
else
{
ObjectMove ( "R3 line" , 0 , Time[ 40 ], R3);
}
}
//---- End of Pivot Line Draw


//----- Camarilla Lines

if (camarilla== true )
{
if ( ObjectFind ( "H4 label" ) != 0 )
{
ObjectCreate ( "H4 label" , OBJ_TEXT , 0 , Time[ 20 ], H4);
ObjectSetText( "H4 label" , " H4" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "H4 label" , 0 , Time[ 20 ], H4);
}

if ( ObjectFind ( "H3 label" ) != 0 )
{
ObjectCreate ( "H3 label" , OBJ_TEXT , 0 , Time[ 20 ], H3);
ObjectSetText( "H3 label" , " H3" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "H3 label" , 0 , Time[ 20 ], H3);
}

if ( ObjectFind ( "L3 label" ) != 0 )
{
ObjectCreate ( "L3 label" , OBJ_TEXT , 0 , Time[ 20 ], L3);
ObjectSetText( "L3 label" , " L3" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "L3 label" , 0 , Time[ 20 ], L3);
}

if ( ObjectFind ( "L4 label" ) != 0 )
{
ObjectCreate ( "L4 label" , OBJ_TEXT , 0 , Time[ 20 ], L4);
ObjectSetText( "L4 label" , " L4" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "L4 label" , 0 , Time[ 20 ], L4);
}

//---- Draw Camarilla lines on Chart
if ( ObjectFind ( "H4 line" ) != 0 )
{
ObjectCreate ( "H4 line" , OBJ_HLINE , 0 , Time[ 40 ], H4);
ObjectSet( "H4 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "H4 line" , OBJPROP_COLOR , DimGray);
}
else
{
ObjectMove ( "H4 line" , 0 , Time[ 40 ], H4);
}

if ( ObjectFind ( "H3 line" ) != 0 )
{
ObjectCreate ( "H3 line" , OBJ_HLINE , 0 , Time[ 40 ], H3);
ObjectSet( "H3 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "H3 line" , OBJPROP_COLOR , DimGray);
}
else
{
ObjectMove ( "H3 line" , 0 , Time[ 40 ], H3);
}

if ( ObjectFind ( "L3 line" ) != 0 )
{
ObjectCreate ( "L3 line" , OBJ_HLINE , 0 , Time[ 40 ], L3);
ObjectSet( "L3 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "L3 line" , OBJPROP_COLOR , DimGray);
}
else
{
ObjectMove ( "L3 line" , 0 , Time[ 40 ], L3);
}

if ( ObjectFind ( "L4 line" ) != 0 )
{
ObjectCreate ( "L4 line" , OBJ_HLINE , 0 , Time[ 40 ], L4);
ObjectSet( "L4 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "L4 line" , OBJPROP_COLOR , DimGray);
}
else
{
ObjectMove ( "L4 line" , 0 , Time[ 40 ], L4);
}
}
//-------End of Draw Camarilla Lines

//------ Midpoints Pivots

if (midpivots== true )
{

if ( ObjectFind ( "M5 label" ) != 0 )
{
ObjectCreate ( "M5 label" , OBJ_TEXT , 0 , Time[ 20 ], M5);
ObjectSetText( "M5 label" , " M5" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "M5 label" , 0 , Time[ 20 ], M5);
}

if ( ObjectFind ( "M4 label" ) != 0 )
{
ObjectCreate ( "M4 label" , OBJ_TEXT , 0 , Time[ 20 ], M4);
ObjectSetText( "M4 label" , " M4" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "M4 label" , 0 , Time[ 20 ], M4);
}

if ( ObjectFind ( "M3 label" ) != 0 )
{
ObjectCreate ( "M3 label" , OBJ_TEXT , 0 , Time[ 20 ], M3);
ObjectSetText( "M3 label" , " M3" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "M3 label" , 0 , Time[ 20 ], M3);
}

if ( ObjectFind ( "M2 label" ) != 0 )
{
ObjectCreate ( "M2 label" , OBJ_TEXT , 0 , Time[ 20 ], M2);
ObjectSetText( "M2 label" , " M2" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "M2 label" , 0 , Time[ 20 ], M2);
}

if ( ObjectFind ( "M1 label" ) != 0 )
{
ObjectCreate ( "M1 label" , OBJ_TEXT , 0 , Time[ 20 ], M1);
ObjectSetText( "M1 label" , " M1" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "M1 label" , 0 , Time[ 20 ], M1);
}

if ( ObjectFind ( "M0 label" ) != 0 )
{
ObjectCreate ( "M0 label" , OBJ_TEXT , 0 , Time[ 20 ], M0);
ObjectSetText( "M0 label" , " M0" , 8 , "Arial" , EMPTY);
}
else
{
ObjectMove ( "M0 label" , 0 , Time[ 20 ], M0);
}

//---- Draw Midpoint Pivots on Chart
if ( ObjectFind ( "M5 line" ) != 0 )
{
ObjectCreate ( "M5 line" , OBJ_HLINE , 0 , Time[ 40 ], M5);
ObjectSet( "M5 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "M5 line" , OBJPROP_COLOR , DimGray);
}
else
{
ObjectMove ( "M5 line" , 0 , Time[ 40 ], M5);
}

if ( ObjectFind ( "M4 line" ) != 0 )
{
ObjectCreate ( "M4 line" , OBJ_HLINE , 0 , Time[ 40 ], M4);
ObjectSet( "M4 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "M4 line" , OBJPROP_COLOR , DimGray);
}
else
{
ObjectMove ( "M4 line" , 0 , Time[ 40 ], M4);
}

if ( ObjectFind ( "M3 line" ) != 0 )
{
ObjectCreate ( "M3 line" , OBJ_HLINE , 0 , Time[ 40 ], M3);
ObjectSet( "M3 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "M3 line" , OBJPROP_COLOR , DimGray);
}
else
{
ObjectMove ( "M3 line" , 0 , Time[ 40 ], M3);
}

if ( ObjectFind ( "M2 line" ) != 0 )
{
ObjectCreate ( "M2 line" , OBJ_HLINE , 0 , Time[ 40 ], M2);
ObjectSet( "M2 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "M2 line" , OBJPROP_COLOR , DimGray);
}
else
{
ObjectMove ( "M2 line" , 0 , Time[ 40 ], M2);
}

if ( ObjectFind ( "M1 line" ) != 0 )
{
ObjectCreate ( "M1 line" , OBJ_HLINE , 0 , Time[ 40 ], M1);
ObjectSet( "M1 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "M1 line" , OBJPROP_COLOR , DimGray);
}
else
{
ObjectMove ( "M1 line" , 0 , Time[ 40 ], M1);
}

if ( ObjectFind ( "M0 line" ) != 0 )
{
ObjectCreate ( "M0 line" , OBJ_HLINE , 0 , Time[ 40 ], M0);
ObjectSet( "M0 line" , OBJPROP_STYLE , STYLE_DASHDOTDOT );
ObjectSet( "M0 line" , OBJPROP_COLOR , DimGray);
}
else
{
ObjectMove ( "M0 line" , 0 , Time[ 40 ], M0);
}

}
//----End of Midpoint Pivots Draw

//---- End Of Program
return ( 0 );
}
//+------------------------------------------------------------------+

 

안녕하세요 아르템입니다.

차트에서 15초 또는 30초 양초를 얻는 방법을 알려주십시오.

나는 가장 작은 차트 시간이 PERIOD_M1임을 보았다 . 그러나 나는 초 그래프를 갖고 싶습니다. 어떻게 하면 이런 일이 가능할까요?

 
jaffer wilson :

안녕하세요 아르템입니다.

차트에서 15초 또는 30초 양초를 얻는 방법을 알려주십시오.

나는 가장 작은 차트 시간이 PERIOD_M1임을 보았다 . 그러나 나는 초 그래프를 원합니다. 어떻게 하면 이런 일이 가능할까요?

우리가 MT5에 대해 이야기하고 있다면 불가능합니다.

MT4에서 두 번째 차트를 그리고 싶다면 여기에서 https://www.mql5.com/en/code/24839 를 했습니다.

PeriodInSeconds
PeriodInSeconds
  • www.mql5.com
1. Откройте любой график в терминале и добавьте индикатор 2. В настройках индикатора установите необходимый период в секундах Period in seconds и таймфрейм автономного графика TimeFrame Chart в минутах 3. Настройка индикатора Auto Open Chart From Start Indicator = true означает, что индикатор после загрузки самостоятельно откроет кастомный...
 

마샤 시그널에 의해 열린 주문은 리버스 마샤 시그널에 의해서만(또는 한 조건 하에서) 닫히고, RSI에 의해 열린 주문은 (다른 조건에서) RSI에 의해서만 닫히도록 어드바이저에 작성하는 방법을 알려주십시오.

다음은 조건의 예입니다.

if (MA>닫기[0])

주문 보내기 ....... 구매 .....

만약 (RSI>70)

주문 보내기 ........... 구매 ....


------------------------------

1) 그리고 이 경우 한 조건에서 첫 번째 주문을 닫고 다른 조건에서 두 번째 주문을 닫는 방법은 무엇입니까?

2) 다음과 같이 만드는 방법:
.....a) 2개 이상의 주문이 열리지 않았습니다(열린 주문이 닫힐 때까지)

.....b) 열린 주문의 존재 여부에 관계없이 모든 사람이 열 수 있도록(다중 전략)



미리 감사드립니다.

 
Ivan Butko :

마샤 시그널에 의해 열린 주문은 리버스 마샤 시그널에 의해서만(또는 한 조건 하에서) 닫히고, RSI에 의해 열린 주문은 (다른 조건에서) RSI에 의해서만 닫히도록 어드바이저에 작성하는 방법을 알려주십시오.

다음은 조건의 예입니다.

if (MA>닫기[0])

주문보내기 ...... 구매 .....

만약 (RSI>70)

주문 보내기 ........... 구매 ....


------------------------------

1) 그리고 이 경우 한 조건에서 첫 번째 주문을 닫고 다른 조건에서 두 번째 주문을 닫는 방법은 무엇입니까?

2) 다음과 같이 만드는 방법:
.....a) 2개 이상의 주문이 열리지 않았습니다(열린 주문이 닫힐 때까지)

.....b) 열린 주문의 존재 여부에 관계없이 모든 사람이 열 수 있도록(다중 전략)



미리 감사드립니다.

2개의 매직 넘버를 사용하고 각 매직에 대해 영장으로 회계 및 수정을 수행합니다.

 
어떤 이유로 갑자기 테스트할 때 팝업( 잘못된 볼륨 )이 시작되었습니다.
 2019.09 . 07 09 : 12 : 48.229 2019.09 . 02 04 : 14 : 45   Ex EURUSD,M5: OrderSend error 131
OrderSend 또는 볼륨 변수에서 아무 것도 변경하지 않았지만. 이전에는 모든 것이 잘 작동했습니다 ... 다른 터미널에서 시도했습니다. 잘 작동합니다 ... 무엇이 될 수 있습니까?
 
지표(예: MACD, RSI)에 iHighest(iLowest)를 적용 할 수 있습니까?
 
Vladimir Baskakov :
지표(예: MACD, RSI)에 iHighest(iLowest)를 적용할 수 있습니까?

표시기 버퍼를 복사하고 ArrayMaximum( ArrayMinimum )을 적용합니다.

그러나 내 생각에는 표시기가 EMPTY_VALUE 를 사용하는 경우 문제가 있을 것입니다.

 
Igor Makanu :

표시기 버퍼를 복사하고 ArrayMaximum( ArrayMinimum )을 적용합니다.

그러나 내 생각에는 표시기가 EMPTY_VALUE 를 사용하는 경우 문제가 있을 것입니다.

작은 예가 있습니까?