I have a EA with indicators that I want to mix and optimize it in BackTest.
//some sample data for signal for In/Out states only for exemplification iT_InOut = IN_OUT; //Itrend usage => In & Out RSI_InOut = IN_; //RSI usage =>only IN MFI_InOut = OUT_; //MFI usage =>only OUT //
//this is the complete sequence IF I USE all signals in+out //only to show the completly sequence (I will not use it) m_buy=(m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0] && m_rsi0[0]>m_rsi1[0] && m_mfi0[0]>m_mfi1[0]); // The green is growing and more than red, RSI is growing, MFI is growing m_sell=(m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0] && m_rsi0[0]<m_rsi1[0] && m_mfi0[0]<m_mfi1[0]); // The green falls and less than red, RSI falls, MFI falls
//now the skeleton that I'm trying to make work (in future I will use much more indicators)
if(!PositionSelect(Symbol())) ///No opened it's first entrance {
if (!iT_InOut==OUT_) //Itrend (only options with IN) { m_buy= (m_buy && m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0]); m_sell=(m_sell && m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0]); }
if (!RSI_InOut==OUT_) //RSI (only options with IN) { m_buy =(m_buy && m_rsi0[0]>m_rsi1[0]); m_sell=(m_sell && m_rsi0[0]<m_rsi1[0]); }
if (!MFI_InOut==OUT_) //MFI (only options with IN) { m_buy =(m_buy && m_mfi0[0]>m_mfi1[0]); m_sell=(m_sell && m_mfi0[0]<m_mfi1[0]); } }
///We have opened order it's EXIT else { //Itrend (only options with EXIT) if (!iT_InOut==IN_) { m_buy =(m_buy && m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0]); m_sell=(m_sell && m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0]); } //RSI (only options with EXIT) if (!RSI_InOut==IN_) { m_buy =(m_buy && m_rsi0[0]>m_rsi1[0]); m_sell=(m_sell && m_rsi0[0]<m_rsi1[0]); } //MFI (only options with EXIT) if (!MFI_InOut==IN_) { m_buy =(m_buy && m_mfi0[0]>m_mfi1[0]); m_sell=(m_sell && m_mfi0[0]<m_mfi1[0]); } }
I have a EA with indicators that I want to mix and optimize it in BackTest.
//some sample data for signal for In/Out states only for exemplification iT_InOut = IN_OUT; //Itrend usage => In & Out RSI_InOut = IN_; //RSI usage =>only IN MFI_InOut = OUT_; //MFI usage =>only OUT //
//this is the complete sequence IF I USE all signals in+out //only to show the completly sequence (I will not use it) m_buy=(m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0] && m_rsi0[0]>m_rsi1[0] && m_mfi0[0]>m_mfi1[0]); // The green is growing and more than red, RSI is growing, MFI is growing m_sell=(m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0] && m_rsi0[0]<m_rsi1[0] && m_mfi0[0]<m_mfi1[0]); // The green falls and less than red, RSI falls, MFI falls
//now the skeleton that I'm trying to make work (in future I will use much more indicators)
if(!PositionSelect(Symbol())) ///No opened it's first entrance {
if (!iT_InOut==OUT_) //Itrend (only options with IN) { m_buy= (m_buy && m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0]); m_sell=(m_sell && m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0]); }
if (!RSI_InOut==OUT_) //RSI (only options with IN) { m_buy =(m_buy && m_rsi0[0]>m_rsi1[0]); m_sell=(m_sell && m_rsi0[0]<m_rsi1[0]); }
if (!MFI_InOut==OUT_) //MFI (only options with IN) { m_buy =(m_buy && m_mfi0[0]>m_mfi1[0]); m_sell=(m_sell && m_mfi0[0]<m_mfi1[0]); } }
///We have opened order it's EXIT else { //Itrend (only options with EXIT) if (!iT_InOut==IN_) { m_buy =(m_buy && m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0]); m_sell=(m_sell && m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0]); } //RSI (only options with EXIT) if (!RSI_InOut==IN_) { m_buy =(m_buy && m_rsi0[0]>m_rsi1[0]); m_sell=(m_sell && m_rsi0[0]<m_rsi1[0]); } //MFI (only options with EXIT) if (!MFI_InOut==IN_) { m_buy =(m_buy && m_mfi0[0]>m_mfi1[0]); m_sell=(m_sell && m_mfi0[0]<m_mfi1[0]); } }
해당 코드에서는 표시기 사용법이 전혀 표시되지 않습니다(및 값이 해당 배열에 복사되는 방식).
//---- return ( 0 ); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit, i, counter; double fasterEMA1now, slowerEMA1now, fasterEMA1previous, slowerEMA1previous, fasterEMA2now, slowerEMA2now, fasterEMA2previous, slowerEMA2previous; double RSInow; double Range, AvgRange;
int counted_bars= IndicatorCounted (); //---- check for possible errors if (counted_bars< 0 ) return (- 1 ); //---- last counted bar will be recounted if (counted_bars> 0 ) counted_bars--;
안녕 믈라덴
MT5에서 이것을 코딩하려고하는데 올바른 구현을 사용하지 않고 있다고 생각합니다.
내 생각은 더 많은 지표를 사용하는 것입니다. 저에게 빛을 주세요... ;-)
this is a sample to understand I'm trying to do..
in this sample:
I put only 3 indicadors.
//global variables
bool m_buy = true;
bool m_sell = true;
enum Signal{
IN_OUT=0, //in & out
IN=1, //in
OUT=2, //out
};
I have a EA with indicators that I want to mix and optimize it in BackTest.
//some sample data for signal for In/Out states only for exemplification
iT_InOut = IN_OUT; //Itrend usage => In & Out
RSI_InOut = IN_; //RSI usage =>only IN
MFI_InOut = OUT_; //MFI usage =>only OUT
//
//this is the complete sequence IF I USE all signals in+out
//only to show the completly sequence (I will not use it)
m_buy=(m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0] && m_rsi0[0]>m_rsi1[0] && m_mfi0[0]>m_mfi1[0]);
// The green is growing and more than red, RSI is growing, MFI is growing
m_sell=(m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0] && m_rsi0[0]<m_rsi1[0] && m_mfi0[0]<m_mfi1[0]);
// The green falls and less than red, RSI falls, MFI falls
//now the skeleton that I'm trying to make work (in future I will use much more indicators)
if(!PositionSelect(Symbol())) ///No opened it's first entrance
{
if (!iT_InOut==OUT_) //Itrend (only options with IN)
{
m_buy= (m_buy && m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0]);
m_sell=(m_sell && m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0]);
}
if (!RSI_InOut==OUT_) //RSI (only options with IN)
{
m_buy =(m_buy && m_rsi0[0]>m_rsi1[0]);
m_sell=(m_sell && m_rsi0[0]<m_rsi1[0]);
}
if (!MFI_InOut==OUT_) //MFI (only options with IN)
{
m_buy =(m_buy && m_mfi0[0]>m_mfi1[0]);
m_sell=(m_sell && m_mfi0[0]<m_mfi1[0]);
}
}
///We have opened order it's EXIT
else
{
//Itrend (only options with EXIT)
if (!iT_InOut==IN_)
{
m_buy =(m_buy && m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0]);
m_sell=(m_sell && m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0]);
}
//RSI (only options with EXIT)
if (!RSI_InOut==IN_)
{
m_buy =(m_buy && m_rsi0[0]>m_rsi1[0]);
m_sell=(m_sell && m_rsi0[0]<m_rsi1[0]);
}
//MFI (only options with EXIT)
if (!MFI_InOut==IN_)
{
m_buy =(m_buy && m_mfi0[0]>m_mfi1[0]);
m_sell=(m_sell && m_mfi0[0]<m_mfi1[0]);
}
}
안녕 믈라덴
MT5에서 이것을 코딩하려고하는데 올바른 구현을 사용하지 않고 있다고 생각합니다.
내 생각은 더 많은 지표를 사용하는 것입니다. 저에게 빛을 주세요... ;-)
this is a sample to understand I'm trying to do..
in this sample:
I put only 3 indicadors.
//global variables
bool m_buy = true;
bool m_sell = true;
enum Signal{
IN_OUT=0, //in & out
IN=1, //in
OUT=2, //out
};
I have a EA with indicators that I want to mix and optimize it in BackTest.
//some sample data for signal for In/Out states only for exemplification
iT_InOut = IN_OUT; //Itrend usage => In & Out
RSI_InOut = IN_; //RSI usage =>only IN
MFI_InOut = OUT_; //MFI usage =>only OUT
//
//this is the complete sequence IF I USE all signals in+out
//only to show the completly sequence (I will not use it)
m_buy=(m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0] && m_rsi0[0]>m_rsi1[0] && m_mfi0[0]>m_mfi1[0]);
// The green is growing and more than red, RSI is growing, MFI is growing
m_sell=(m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0] && m_rsi0[0]<m_rsi1[0] && m_mfi0[0]<m_mfi1[0]);
// The green falls and less than red, RSI falls, MFI falls
//now the skeleton that I'm trying to make work (in future I will use much more indicators)
if(!PositionSelect(Symbol())) ///No opened it's first entrance
{
if (!iT_InOut==OUT_) //Itrend (only options with IN)
{
m_buy= (m_buy && m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0]);
m_sell=(m_sell && m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0]);
}
if (!RSI_InOut==OUT_) //RSI (only options with IN)
{
m_buy =(m_buy && m_rsi0[0]>m_rsi1[0]);
m_sell=(m_sell && m_rsi0[0]<m_rsi1[0]);
}
if (!MFI_InOut==OUT_) //MFI (only options with IN)
{
m_buy =(m_buy && m_mfi0[0]>m_mfi1[0]);
m_sell=(m_sell && m_mfi0[0]<m_mfi1[0]);
}
}
///We have opened order it's EXIT
else
{
//Itrend (only options with EXIT)
if (!iT_InOut==IN_)
{
m_buy =(m_buy && m_it00[0]>m_it10[0] && m_it00[0]>m_it01[0]);
m_sell=(m_sell && m_it00[0]<m_it10[0] && m_it00[0]<m_it01[0]);
}
//RSI (only options with EXIT)
if (!RSI_InOut==IN_)
{
m_buy =(m_buy && m_rsi0[0]>m_rsi1[0]);
m_sell=(m_sell && m_rsi0[0]<m_rsi1[0]);
}
//MFI (only options with EXIT)
if (!MFI_InOut==IN_)
{
m_buy =(m_buy && m_mfi0[0]>m_mfi1[0]);
m_sell=(m_sell && m_mfi0[0]<m_mfi1[0]);
}
}
안녕하세요 여러분,
정말 도움이 필요합니다. waddah attar 스캘핑 표시기로 전문가를 만들고 있습니다. 논리가 작동하고 있으며 모든 것이 정상입니다.
한 가지를 제외하고 백테스트 스크린샷에서 볼 수 있듯이 각 녹색 막대에서 전문가는 빨간색 막대에 대해 동일한 매수를 엽니다. 색상 변경당 1개의 거래만 원합니다.
내가 원하는 것은 :
표시기가 녹색으로 변함 ---> 매수 열기 ---> 매수 청산 ---> 표시기가 빨간색으로 변함 ---> 매도 열기 ---> 매도 닫기 ---> 반복
색상 변경당 1개의 거래만 원합니다.
여기 내 코드가 있습니다 : (짧게 동일)
bool SendLong = false , SendShort = false ;
double clnowsell = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 1 ,clbar);
double clpresell = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 1 ,clbar+ 1 );
double clnowbuy = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 0 ,clbar);
double clprebuy = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 0 ,clbar+ 1 );
//Long trade
//Specific system filters
//if (some condition) SendLong = true;
if (clnowbuy > 0 ) SendLong = true ;
누군가 간단한 솔루션을 제공할 수 있습니까? 행 1265를 보십시오. 논리가 여기에 있습니다.
정말 감사합니다 !
안녕하세요 여러분,
정말 도움이 필요합니다. waddah attar 스캘핑 표시기로 전문가를 만들고 있습니다. 논리가 작동하고 있으며 모든 것이 정상입니다.
한 가지를 제외하고 백테스트 스크린샷에서 볼 수 있듯이 각 녹색 막대에서 전문가는 빨간색 막대에 대해 동일한 매수를 엽니다. 색상 변경당 1개의 거래만 원합니다.
내가 원하는 것은 :
표시기가 녹색으로 변함 ---> 매수 열기 ---> 매수 청산 ---> 표시기가 빨간색으로 변함 ---> 매도 열기 ---> 매도 닫기 ---> 반복
색상 변경당 1개의 거래만 원합니다.
여기 내 코드가 있습니다 : (짧게 동일)
bool SendLong = false , SendShort = false ;
double clnowsell = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 1 ,clbar);
double clpresell = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 1 ,clbar+ 1 );
double clnowbuy = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 0 ,clbar);
double clprebuy = iCustom ( Symbol (),WAScalpingTimeFrame, "Waddah_Attar_Scalping" ,IPeriod,P1,P2, 0 ,clbar+ 1 );
//Long trade
//Specific system filters
//if (some condition) SendLong = true;
if (clnowbuy > 0 ) SendLong = true ;
누군가 간단한 솔루션을 제공할 수 있습니까? 행 1265를 보십시오. 논리가 여기에 있습니다.
정말 감사합니다 !
조건을 다음으로 변경
반바지도 마찬가지
믈라덴 감사합니다!
때때로 우리는 막혀서 우리의 일을 새롭게 바라볼 필요가 있습니다.
다시 한번 감사합니다!
믈라덴 감사합니다!
때때로 우리는 막혀서 우리의 일을 새롭게 바라볼 필요가 있습니다.
다시 한번 감사합니다!
봉쥬르,
Ravi de voir une Française, tiens moi au courant des tes résultats avec waddah attar ;)
녹색 핍
안녕하세요 여러분 저는 4개의 ema 교차가 발생하고 rsi가 > 또는 < 50일 때 위쪽 또는 아래쪽 화살표를 표시할 수 있는 ema-rsi 표시기를 편집하려고 합니다.
내 문제는 이러한 화살표가 표시될 때마다 틱마다 새로 고쳐지지 않는다는 것입니다. 화살표를 표시할 수 있는 조건이 여전히 양호한지 확인하려면 기간을 변경해야 합니다. 어디가 문제인지 알려주실 수 있나요? 나는 코드를 게시합니다.
고맙습니다
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_width1 4
#property indicator_width2 4
double CrossUp[];
double CrossDown[];
extern int FasterEMA1 = 6 ;
extern int SlowerEMA1 = 12 ;
extern int FasterEMA2 = 7 ;
extern int SlowerEMA2 = 14 ;
extern int RSInowPeriod = 6 ;
extern int barsBack = 2000 ;
extern bool AlertsMessage = true ;
extern bool AlertsSound = true ;
extern bool debug = false ;
extern double K = 1.0 ;
bool EMACrossedUp = false ;
bool RSICrossedUp = false ;
bool EMACrossedDown = false ;
bool RSICrossedDown = false ;
int SignalLabeled = 0 ; // 0: initial state; 1: up; 2: down.
int upalert= false ,downalert= false ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle ( 0 , DRAW_ARROW , EMPTY );
SetIndexArrow ( 0 , 241 );
SetIndexBuffer ( 0 , CrossUp);
SetIndexStyle ( 1 , DRAW_ARROW , EMPTY );
SetIndexArrow ( 1 , 242 );
SetIndexBuffer ( 1 , CrossDown);
//----
return ( 0 );
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return ( 0 );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {
int limit, i, counter;
double fasterEMA1now, slowerEMA1now, fasterEMA1previous, slowerEMA1previous, fasterEMA2now, slowerEMA2now, fasterEMA2previous, slowerEMA2previous;
double RSInow;
double Range, AvgRange;
int counted_bars= IndicatorCounted ();
//---- check for possible errors
if (counted_bars< 0 ) return (- 1 );
//---- last counted bar will be recounted
if (counted_bars> 0 ) counted_bars--;
limit= MathMin ( Bars -counted_bars,barsBack);
for (i = limit; i>= 0 ; i--) {
counter=i;
Range= 0 ;
AvgRange= 0 ;
for (counter=i ;counter<=i+ 9 ;counter++)
{
AvgRange=AvgRange+ MathAbs ( High [counter]- Low [counter]);
}
Range=AvgRange/ 10 ;
fasterEMA1now = iMA ( NULL , 0 , FasterEMA1, 0 , MODE_EMA , PRICE_CLOSE , i);
fasterEMA1previous = iMA ( NULL , 0 , FasterEMA1, 0 , MODE_EMA , PRICE_CLOSE , i+ 1 );
fasterEMA2now = iMA ( NULL , 0 , FasterEMA2, 0 , MODE_EMA , PRICE_CLOSE , i);
fasterEMA2previous = iMA ( NULL , 0 , FasterEMA2, 0 , MODE_EMA , PRICE_CLOSE , i+ 1 );
slowerEMA1now = iMA ( NULL , 0 , SlowerEMA1, 0 , MODE_EMA , PRICE_CLOSE , i);
slowerEMA1previous = iMA ( NULL , 0 , SlowerEMA1, 0 , MODE_EMA , PRICE_CLOSE , i+ 1 );
slowerEMA2now = iMA ( NULL , 0 , SlowerEMA2, 0 , MODE_EMA , PRICE_CLOSE , i);
slowerEMA2previous = iMA ( NULL , 0 , SlowerEMA2, 0 , MODE_EMA , PRICE_CLOSE , i+ 1 );
RSInow= iRSI ( NULL , 0 ,RSInowPeriod, PRICE_CLOSE ,i);
if (RSInow > 50 ) {
if (debug) Print ( TimeToStr ( Time [i], TIME_DATE )+ TimeToStr ( Time [i], TIME_SECONDS )+ " RSI UP " );
RSICrossedUp = true ;
RSICrossedDown = false ;
}
if (RSInow < 50 ) {
if (debug) Print ( TimeToStr ( Time [i], TIME_DATE )+ TimeToStr ( Time [i], TIME_SECONDS )+ " RSI DOWN " );
RSICrossedUp = false ;
RSICrossedDown = true ;
}
if ((fasterEMA1now >= slowerEMA1now) && (fasterEMA1previous < slowerEMA1previous) && (fasterEMA2now >= slowerEMA2now) && (fasterEMA2previous < slowerEMA2previous) ) {
if (debug) Print ( TimeToStr ( Time [i], TIME_DATE )+ TimeToStr ( Time [i], TIME_SECONDS )+ " EMA UP " );
EMACrossedUp = true ;
EMACrossedDown = false ;
}
if ((fasterEMA1now <= slowerEMA1now) && (fasterEMA1previous > slowerEMA1previous) && (fasterEMA2now <= slowerEMA2now) && (fasterEMA2previous > slowerEMA2previous)) {
if (debug) Print ( TimeToStr ( Time [i], TIME_DATE )+ TimeToStr ( Time [i], TIME_SECONDS )+ " EMA DOWN " );
EMACrossedUp = false ;
EMACrossedDown = true ;
}
if ((EMACrossedUp == true ) && (RSICrossedUp == true ) && (SignalLabeled != 1 )) {
CrossUp[i] = Low [i] - K*Range;
if (debug) Print ( TimeToStr ( Time [i], TIME_DATE )+ TimeToStr ( Time [i], TIME_SECONDS )+ " SIGNAL UP " );
if (i<= 2 && AlertsMessage && !upalert)
{
Alert ( Symbol (), " " , Period (), "M BUY SIGNAL " );
//SendMail("EMA Cross Up on "+Symbol(),"");
upalert= true ;
downalert= false ;
}
if (i<= 2 && AlertsSound && !upalert)
{
PlaySound ( "alert.wav" );
upalert= true ;
downalert= false ;
}
SignalLabeled = 1 ;
}
else if ((EMACrossedDown == true ) && (RSICrossedDown == true ) && (SignalLabeled != 2 )) {
CrossDown[i] = High [i] + K*Range;
if (debug) Print ( TimeToStr ( Time [i], TIME_DATE )+ TimeToStr ( Time [i], TIME_SECONDS )+ " SIGNAL DOWN " );
if (i<= 2 && AlertsMessage && !downalert)
{
Alert ( Symbol (), " " , Period (), "M SELL SIGNAL " );
//SendMail("EMA Cross Down on "+Symbol(),"");
downalert= true ;
upalert= false ;
}
if (i<= 2 && AlertsSound && !downalert)
{
PlaySound ( "alert.wav" );
downalert= true ;
upalert= false ;
}
SignalLabeled = 2 ;
}
}
return ( 0 );
}
//end
해당 코드에서는 표시기 사용법이 전혀 표시되지 않습니다(및 값이 해당 배열에 복사되는 방식).
안녕 믈라덴
여기에 일부 코드가 포함된 "sample-ea-modular.mq5"가 있습니다... 그리고 내가 원하는 아이디어가 있는 인터페이스가 있습니다.
나는 그것을 모듈화하려고 노력하고 있는데 아이디어는 각 지표의 안팎을 별도로 최적화하는 것입니다.
"sample-ea-modular.mq5"로 이것을 만들 수 있다면 실제 EA를 변경하겠습니다.
실제 베이스는 Ea-sample.mq5입니다. (나는 모든 지표를 볼 수있는 당신에게만 게시하고 있습니다)
친애하는 @mladen,
아래에 언급된 오류를 해결할 수 있다면 매우 기쁘게 생각합니다.
고맙습니다...
"질문 : 차트에 첨부하고 자동 gmt 오프셋을 사용할 때 경고가 있습니다.
오구즈
평소와 같이(당신은 이미 알고 있습니다) 저는 디컴파일된 코드에 대해 언급하지 않지만 올바른 방향으로 가고 있다는 것을 알았습니다. 작동하는 경우(옵션), 사용하십시오. 그렇지 않다면 하지 마십시오. 내가 아는 한 그것은 단지 메시지 (오류가 아님)이므로 ...
@mladen 님,
아래에 언급된 오류를 해결할 수 있다면 매우 기쁘게 생각합니다.
고맙습니다...
"질문: 차트에 첨부하고 자동 gmt 오프셋을 사용할 때 경고가 표시됩니다.