1) 주문이 고르지 않은 유형이고 선을 배치할 때 숨겨진 것이 있고 배치, 표시 및 설정이 아닌 경우(그런 다음에도 여전히 어떤 종류의 플래그를 설정/해제해야 함)
2) 유형별로 라인 상단의 오른쪽에 있는 비문 구현(주문이 이 가격으로 마감된 경우 결과는 잔액에 따라 결정됩니다. 즉, 매 틱마다 디스플레이를 변경해야 하며 또한 언제 일반적으로 수동으로 주문할 때 tp 또는 sl과 유사하게 라인을 이동하고 처음에는 가양성(false positive) 가능성이 있는 유동만 있음)
로봇이 있지만 모든 것이 이미 그려진 숫자 레이블을 제외하고 문제는 값의 올바른 할당과 전체 그리드의 정보 처리에 있습니다.
안녕하세요. iTime이 때때로 잘못된 시간을 제공하는 이유를 이해하지 못합니다. 새 PERIOD_H1 양초를 열면 Print(iTime(NULL, PERIOD_M1 ,30)) 로그에 시간이 표시되어야 합니다. 테스트에서는 모든 것이 올바르게 표시되지만 실제 생활에서는 시간이 몇 시간씩 차이가 나는 경우도 있습니다. 왜 그런 겁니까?
Nauris Zukas : 안녕하세요. iTime이 때때로 잘못된 시간을 제공하는 이유를 이해하지 못합니다. 새 PERIOD_H1 양초를 열면 Print(iTime(NULL, PERIOD_M1 ,30)) 로그에 시간이 표시되어야 합니다. 테스트에서는 모든 것이 올바르게 표시되지만 실제 생활에서는 시간이 몇 시간씩 차이가 나는 경우도 있습니다. 왜 그런 겁니까?
CopyTime사용
datetime TM[]; if ( CopyTime ( Symbol (), Period (), 0 , 1 ,TM)< 0 ) return ; TIME0=TM[ 0 ];
조언자(또는 스크립트)가 소스 코드를 가져오고 수정하는 측면에서 마음대로 하면 기회가 있습니다. 버튼이 눌렸는지 여부를 확인하여 모든 경고에 조건을 부과해야 합니다. 누르지 않으면 경고가 호출되지 않습니다.
감사 합니다 블라디미르 - 나는 당신의 방법을 사용하거나 전체 고문을이 조건에 삽입 할 것이라고 생각합니다.
감사합니다 Vitalie Postolache - 귀하의 추천을 검토할 것입니다. 아직 mql5에 대해 자세히 알아보지 못했습니다.
hst 파일에 데이터를 쓸 필요가 있었기 때문에 나중에 이러한 데이터를 기반으로 오프라인 차트를 구축할 수 있었습니다.
나는 둘째 날과 싸웠지만 아무것도 얻지 못했다.
코드:
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
ulong last_fpos= 0 ; //
int HandleHistory=- 1 ;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart ()
{
string symbol= Symbol ();
int per= Period ()* 9 ;
ResetLastError ();
if (CreateHeader()== true ) //если создали заголовок
{
HandleHistory= FileOpenHistory (symbol+( string )per+ ".hst" , FILE_BIN | FILE_WRITE | FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_ANSI );
if (HandleHistory!= INVALID_HANDLE )
{
for ( int i= 199 ;i> 0 ;i--) //заполняем данными
{
MqlRates r;
r.time= Time [i]; //просто пытаюсь записать, это так для примера
r.open= Open [i]; //просто пытаюсь записать, это так для примера
r.low= Low [i];
r.high= High [i];
r.close= Close [i];
r.tick_volume=( long ) 10 ;
r.spread= 0 ;
r.real_volume=( long ) 10 ;
uint byteswritten= FileWriteStruct (HandleHistory,r);
Print ( "FileOpen OK " ,byteswritten, " " , Time [i]);
}
FileClose (HandleHistory);
// FileFlush(HandleHistory);
}
else Print ( "Операция FileOpen неудачна, ошибка " , GetLastError ());
}
// long id=ChartOpen(symbol,per);
//Alert(id);
}
//+------------------------------------------------------------------+
bool CreateHeader() //создаем файл с историей hst(заголовок)
{
int file_version= 401 ;
string c_copyright;
string c_symbol= Symbol ();
int i_period= Period ()* 9 ;
int i_digits= Digits ;
int i_unused[ 13 ];
//---
ResetLastError ();
HandleHistory= FileOpenHistory (c_symbol+( string )i_period+ ".hst" , FILE_BIN | FILE_WRITE | FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_ANSI );
if (HandleHistory< 0 )
{
Print ( "Error open " ,c_symbol+( string )i_period, ".hst file " , GetLastError ());
return ( false );
}
c_copyright= "(C)opyright 2003, MetaQuotes Software Corp." ;
ArrayInitialize (i_unused, 0 );
//--- write history file header
FileWriteInteger (HandleHistory,file_version, LONG_VALUE );
FileWriteString (HandleHistory,c_copyright, 64 );
FileWriteString (HandleHistory,c_symbol, 12 );
FileWriteInteger (HandleHistory,i_period, LONG_VALUE );
FileWriteInteger (HandleHistory,i_digits, LONG_VALUE );
FileWriteInteger (HandleHistory, 0 , LONG_VALUE );
FileWriteInteger (HandleHistory, 0 , LONG_VALUE );
FileWriteArray (HandleHistory,i_unused, 0 , 13 );
return ( true );
}
실행 결과 히스토리가 있는 파일은 생성되지만 오프라인 차트는 생성되지 않는다.
다음은 일정 정보입니다
데이터가 2003년에 작성된 이유!
결과적으로 차트를 시작할 때 오류가 발생합니다. HistoryBase: 196 errors in 'NZDCHF45'
제가 글을 잘못 쓴건 이해합니다. 그런데 제대로 쓸 줄 몰라서 정보가 부족해요. 누가 알겠습니까?
아마도 아주 오래된 프로젝트 (C, gcc)에서 발췌 한 것이 도움이 될 것입니다.
/* .hst file header
*/
struct HstHeader {
uint32_t version; // +0 4 LE : database version
char copyright[64]; // +4 64 : copyright data
char symbol[12]; // +68 12 : symbol (EURUSD..)
uint32_t period; // +80 4 LE : timeframe (sec. in period)
uint32_t digits; // +84 4 LE : decimals after .
datetime timesign; // +88 4 LE : creation time sign.
datetime last_sync; // +92 4 LE : last sync. timestamp
uint8_t unused[52]; // +96 52 : reserved for feauture use
// total 148 bytes, packed, aligned by 1
};
/* .hst bar array (file payload)
*/
// when HstHeader.version==400
struct HstRates400 {
datetime ctm; // +0 4 LE : start (creation) time
double open; // +4 8 LE : open price
double low; // +12 8 LE : lowest price
double high; // +20 8 LE : highst price
double close; // +28 8 LE : close price
double volume; // +36 8 LE : volume (nr of ticks)
// total 44 bytes,packed, aligned by 1
} __attribute__((packed));
// when HstHeader.version==401
struct HstRates401 {
datetime ctm; // +0 8 LE : bar start time (with ms?)
double open; // +8 8 LE : open price
double low; // +16 8 LE : lowest price
double high; // +24 8 LE : highst price
double close; // +32 8 LE : close price
uint64_t volume; // +40 8 LE : volume (nr of ticks)
uint32_t spread; // +48 4 LE : spread
long real_volume; // +52 8 LE : real volume
// total 60 bytes,packed,aligned by 1
} __attribute__((packed));
안녕하세요 여러분, 저는 이미 존재하는 것을 계속해서 다듬고 있습니다.
우리는 고르지 않은 주문 그리드와 어디에나 있을 수 있는 수평선 을 가지고 있습니다.
이것을 구현해야 합니다.
가격이 선 아래에 있으면 모든 주문을 닫으십시오.
어려움은
1) 주문이 고르지 않은 유형이고 선을 배치할 때 숨겨진 것이 있고 배치, 표시 및 설정이 아닌 경우(그런 다음에도 여전히 어떤 종류의 플래그를 설정/해제해야 함)
2) 유형별로 라인 상단의 오른쪽에 있는 비문 구현(주문이 이 가격으로 마감된 경우 결과는 잔액에 따라 결정됩니다. 즉, 매 틱마다 디스플레이를 변경해야 하며 또한 언제 일반적으로 수동으로 주문할 때 tp 또는 sl과 유사하게 라인을 이동하고 처음에는 가양성(false positive) 가능성이 있는 유동만 있음)
로봇이 있지만 모든 것이 이미 그려진 숫자 레이블을 제외하고 문제는 값의 올바른 할당과 전체 그리드의 정보 처리에 있습니다.
1) 주문 유형이 고르지 않은 경우
안녕하세요. iTime이 때때로 잘못된 시간을 제공하는 이유를 이해하지 못합니다. 새 PERIOD_H1 양초를 열면 Print(iTime(NULL, PERIOD_M1 ,30)) 로그에 시간이 표시되어야 합니다. 테스트에서는 모든 것이 올바르게 표시되지만 실제 생활에서는 시간이 몇 시간씩 차이가 나는 경우도 있습니다. 왜 그런 겁니까?
CopyTime 사용
if ( CopyTime ( Symbol (), Period (), 0 , 1 ,TM)< 0 ) return ;
TIME0=TM[ 0 ];
CopyTime 사용
if ( CopyTime ( Symbol (), Period (), 0 , 1 ,TM)< 0 ) return ;
TIME0=TM[ 0 ];
이런 얘기는 처음 들어요.
여기 차트에는 5개의 기호가 있고 지표에는 4개의 기호가 있습니다.
내 표시기의 눈금에서 소수점 이하 5자리를 얻으려면 어떻게 해야 합니까?
여기 차트에는 5개의 기호가 있고 지표에는 4개의 기호가 있습니다.