생각한 알고리즘: 초기화하는 동안 스크린샷이 찍힙니다. 파일 작업에는 시간이 걸리기 때문에 타이머가 먼저 찍은 스크린샷을 이동하고 새 스크린샷이 만들어집니다.
타이머에 의한 초기화 과정에서 만들어진 화면이 성공적으로 이동되었습니다.
문제: 1 타이머가 폴더에 만든 첫 화면이 바로 표시되지 않습니다. 터미널을 닫거나 표시기를 다시 시작할 때만 표시됩니다. 2개의 스크린샷은 첫 번째 스크린샷을 제외하고 이동하지 않습니다. 오류 5019(파일이 존재하지 않음)는 폴더에 표시되지만(타이머로 만든 첫 번째 스크린샷 제외).
#property strict#property indicator_chart_window#property indicator_plots0enum ENUM_FULL_MANUAL { full, //весь график
manual, //указанный
};
inputint timer= 5 ; //время на шаг в секундахinput ENUM_FULL_MANUAL skr_mode=full; //размер скриншота inputint width = 640 ; // ширина inputint height = 320 ; // высота inputstring format = ".png" ;
ENUM_ALIGN_MODE align_mode= ALIGN_RIGHT ; // тип выравниванияstring name_folder, name_file;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit ()
{
Print ( "OnInit()" );
ScreenShot();
name_folder= Symbol ()+ " " +StringPeriod();
FolderCreate (name_folder);
EventSetTimer (timer);
return ( INIT_SUCCEEDED );
}
//===================================================================voidOnDeinit ( constint reason)
{
EventKillTimer ();
Move() ;
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate ( constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---//--- return value of prev_calculated for next callreturn (rates_total);
}
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer ()
{
Print ( "OnTimer() " );
Move() ;
ScreenShot();
} //+------------------------------------------------------------------+bool Move(){
string src_path;
string dst_path;
StringConcatenate (src_path, "" , "//" ,name_file);
StringConcatenate (dst_path,name_folder, "//" ,name_file);
ResetLastError ();
if ( FileMove (src_path, 0 ,dst_path, 0 )){
Print ( "FileMove OK " );
returntrue ;
}
else {
string err_text= "FileMove ERR: " +( string ) GetLastError ();
if ( GetLastError ()== 5019 ) err_text+=( " 5019 name_file " +name_file);
Print (err_text);
}
returnfalse ;
}
bool ScreenShot(){
name_file= TimeToString ( TimeLocal (), TIME_DATE | TIME_SECONDS )+format;
StringReplace (name_file, ":" , "-" );
if (skr_mode==full){
if ( ChartScreenShot ( 0 , name_file, ( int ) ChartGetInteger ( 0 , CHART_WIDTH_IN_PIXELS , 0 )
, ( int ) ChartGetInteger ( 0 , CHART_HEIGHT_IN_PIXELS , 0 ), ALIGN_RIGHT )){
Print ( "screen name_file " , name_file);
returntrue ;
}
else {
Print ( "screen ERR: " , GetLastError ());
}
}
if (skr_mode==manual){
if ( ChartScreenShot ( 0 , name_file, width, height, align_mode)){
returntrue ;
}
}
returnfalse ;
}
string StringPeriod(){
if ( Period ()== 1 ) return"M1" ;
if ( Period ()== 2 ) return"M2" ;
if ( Period ()== 3 ) return"M3" ;
if ( Period ()== 4 ) return"M4" ;
if ( Period ()== 5 ) return"M5" ;
if ( Period ()== 6 ) return"M6" ;
if ( Period ()== 10 ) return"M10" ;
if ( Period ()== 12 ) return"M12" ;
if ( Period ()== 15 ) return"M15" ;
if ( Period ()== 20 ) return"M20" ;
if ( Period ()== 30 ) return"M30" ;
if ( Period ()== 16385 ) return"H1" ;
if ( Period ()== 16386 ) return"H2" ;
if ( Period ()== 16387 ) return"H3" ;
if ( Period ()== 16388 ) return"H4" ;
if ( Period ()== 16390 ) return"H6" ;
if ( Period ()== 16392 ) return"H8" ;
if ( Period ()== 16396 ) return"H12" ;
if ( Period ()== 16408 ) return"Daily" ;
if ( Period ()== 32769 ) return"Weekly" ;
if ( Period ()== 49153 ) return"Monthly" ;
return"ERROR" ;
}
그런 다음 질문은 만료됩니다. 당신의 친구입니까? 소개하다.
나는 사용자 수준에서 물었다.!!!
이것은 사용자 수준이었습니다.
만료 - 보류 중인 주문 만료 시간입니다.
그러나 그것은 당신에게 어울리지 않습니다.
"상담원의 보호에서" 하나의 주문을 철회하는 것은 불가능합니다. 수호는 마법에 따라 진행되지만 변경할 수 없습니다.
다른 주문 컨트롤로 어드바이저를 다시 작성해야 합니다...
이것은 사용자 수준이었습니다.
만료 - 보류 중인 주문 만료 시간입니다.
그러나 그것은 당신에게 어울리지 않습니다.
"상담원의 보호에서" 하나의 주문을 철회하는 것은 불가능합니다. 수호는 마법에 따라 진행되지만 변경할 수 없습니다.
다른 주문 컨트롤로 어드바이저를 다시 작성해야 합니다...
오래 사세요.
이것은 사용자 수준이었습니다.
만료 - 보류 중인 주문 만료 시간입니다.
그러나 그것은 당신에게 어울리지 않습니다.
"상담원의 보호에서" 하나의 주문을 철회하는 것은 불가능합니다. 수호는 마법에 따라 진행되지만 변경할 수 없습니다.
다른 주문 컨트롤로 어드바이저를 다시 작성해야 합니다...
Makar 자신을 찢지 마십시오
맙소사! 나는 물었다: 사용자 수준에서, 당신은 나에게 전체 고문을 삽질하고 멘토의 어조로 "당신은 어떤 종류가 있습니까?"라고 묻습니다. 나는 거기에 들어가고 싶지 않아. 나는 장난감의 내부를 이해하지 않고 노는 것을 좋아합니다.
Magic이 0이 아니면 포지션을 닫고 재진입합니다.
이것은 사용자 수준이었습니다.
만료 - 보류 중인 주문 만료 시간입니다.
그러나 그것은 당신에게 어울리지 않습니다.
"상담원의 보호에서" 하나의 주문을 철회하는 것은 불가능합니다. 수호는 마법에 따라 진행되지만 변경할 수 없습니다.
다른 주문 컨트롤로 어드바이저를 다시 작성해야 합니다...
같은 마술사라도 통제 불능 상태가 될 수 있습니다. 문제는 어떤 종류의 순서가 필요한지, 어떤 순서가 마음에 들면 목록에 따라 정의되어 있으면 작동하지 않습니다. 그러면 할 수 있습니다.
그는 코드를 수정하지 않고 사용자로서 그것을 필요로 합니다.
그렇다면 모든 것이 정말 나쁩니다))
안녕하세요. 말해 주세요. MT5
I do: 타이머별로 스크린샷을 찍고 폴더(마침표 기호)로 정렬하는 표시기.
생각한 알고리즘: 초기화하는 동안 스크린샷이 찍힙니다. 파일 작업에는 시간이 걸리기 때문에 타이머가 먼저 찍은 스크린샷을 이동하고 새 스크린샷이 만들어집니다.
타이머에 의한 초기화 과정에서 만들어진 화면이 성공적으로 이동되었습니다.
문제:
1 타이머가 폴더에 만든 첫 화면이 바로 표시되지 않습니다. 터미널을 닫거나 표시기를 다시 시작할 때만 표시됩니다.
2개의 스크린샷은 첫 번째 스크린샷을 제외하고 이동하지 않습니다. 오류 5019(파일이 존재하지 않음)는 폴더에 표시되지만(타이머로 만든 첫 번째 스크린샷 제외).