[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 365

 
sibemol >> :

답변 감사합니다 해보고 결과 올리겠습니다.

offhand 추가 trochs - 아이디어로.


//+------------------------------------------------------------------+
//| CopyBars.mq4 |
//| Copyright © 2009, Sorento |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Sibemol & Sorento" // :)
#property link "http://www.metaquotes.net"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 White
//---- input parameters
extern int Max_Length=9;
double v1[];int pos, hFile;datetime CurentT;
string O="CB", strng, F=";", Filler="0000000000000000";
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
string Name_File;
Name_File=StringConcatenate(O,Symbol(),TimeYear(Time[0]),"_",TimeMonth(
Time[0]),"_",TimeDay(Time[0]),"x",TimeHour(iTime(NULL,1,0)),"_",
TimeMinute(iTime(NULL,1,0)),".CSV");
Print ("Bars in ",Name_File," start!");
hFile=FileOpen(Name_File,FILE_CSV |FILE_WRITE,F);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,v1);
strng=StringConcatenate("<ticker>",F,"<per>",F,"<date>",F,"<time>",F,"<open>",F,"<high>");
strng=StringConcatenate(strng,F,"<low>",F,"<close>",F,"<volume>",F,"<oi>",F);
pos=pos+StringLen(strng);
FileWrite(hFile,strng);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
FileClose(hFile);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(), limit;
//----- первый вызов
if (counted_bars==0)
{CurentT=Time[0];// при записи может закрыться текущий бар и появится новый
limit=Bars-1;
CurentT =FilesWR(limit,1);
//----
return(0);
}
//---- последующие
if (counted_bars>0)
if (CurentT<Time[0])
{// мог быть обрыв связи - нужно найти последний и может еще не обновлённый бар
limit=iBarShift(NULL,Period(),CurentT,false);
CurentT=Time[0];// при записи может закрыться текущий бар и появится новый
FilesWR(limit+1,0);
}
else FilesWR(1,0); //бар еще текущий
//-----
return(0);
}
//+------------------------------------------------------------------+
datetime FilesWR(int startBar,int code){

int codec=code;

for(int i=startBar; i>=0; i--)
{
v1[i]=Close[i];
int _Year=TimeYear(Time[i]),
_Month=TimeMonth(Time[i]),
_Day=TimeDay(Time[i]),
_Hour=TimeHour(Time[i]),
_Minute=TimeMinute(Time[i]);

string Y, M, D, H, Mi, Date, _Time;

if(_Month<10) M="0"+DoubleToStr(_Month, 0); else M=DoubleToStr(_Month, 0);
if(_Day<10) D="0"+DoubleToStr(_Day, 0); else D=DoubleToStr(_Day, 0);
if(_Hour<1) H="00";
else if(_Hour<10 ) H="0"+DoubleToStr(_Hour, 0);
else H=DoubleToStr(_Hour, 0);
if(_Minute<1)Mi="00";
else if(_Minute<10) Mi="0"+DoubleToStr(_Minute, 0);
else Mi=DoubleToStr(_Minute, 0);
Date=DoubleToStr(_Year, 0)+M+D;
_Time=H+Mi;

strng=StringConcatenate(Symbol(),F, Period(),F, Date,F, _Time,F,
DS(Open[i]),F,DS(High[i]),F, DS(Low[i]),F,DS( Close[i]),F,IS( Volume[i],10),F);
pos=+StringLen(strng);// можно заранее просчитать длину и использовать предопределённую константу
if (codec==0)
{//обновим предпоследний бар тоже
FileSeek(hFile,pos-StringLen(strng),SEEK_SET);
codec=+1;
}

FileWrite(hFile,strng);// при записи может закрыться текущий бар и появится новый
if ( CurentT<Time[0]) i=+1;// сместим индексы

}
CurentT=Time[0];
FileFlush(hFile);
return ;
}
//----------Быстрая коричневая сука----------
//----------12345678901234567890----------!!!
string DS(double value)
{
string strng=DoubleToStr(value,Digits);
int k=StringLen(strng);
int l=StringFind(strng,".")+Digits+1;
if (l<k)
{ strng=StringConcatenate(strng,StringSubstr(Filler,0,k-l));k=2*k-l;}
int i=Max_Length-k;// add char
return (StringConcatenate(StringSubstr(Filler,0,i+1),strng));
}
string IS(int iValue, int Max_Length)
{
string strng=DoubleToStr(iValue,0);
int k=StringLen(strng);
int i=Max_Length-k;// add 0
return (StringConcatenate(StringSubstr(Filler,0,i+1),strng));
}
 

최적화가 다음 메시지와 함께 종료되었습니다.

There were 60 passes done during optimization
optimization stopped, 140 cache records were used, 140 cache records rejected

설정 창에서:

200 / 1 280 (200)


1. 이 숫자가 무엇을 의미하고 어떻게 얻을 수 있는지 설명할 수 있는 사람이 있습니까? (60, 140, 200, 1280)

2. 두 개의 매개변수가 최적화되었고 가능한 조합의 수가 각각 15개와 20개라고 가정해 보겠습니다. 이 숫자 중 어디에서 볼 수 있습니까?

3. 최적화 주기 횟수에 제한이 있나요? (모든 조합이 고려된다는 보장이 있습니까?)

고맙습니다!

 

코드의 속성에서 액세스할 수 있는 fibo 개체 수준에 대한 설명 을 만드는 방법은 무엇입니까? 코드에서 값을 설정하는 방법은 명확합니다.

       ObjectSet ( "fibo" , OBJPROP_FIBOLEVELS , 8 ) ;
       ObjectSet ( "fibo" , OBJPROP_FIRSTLEVEL + 0 , 0.0 ) ;
       ObjectSet ( "fibo" , OBJPROP_FIRSTLEVEL + 1 , 0.382 ) ;
       ObjectSet ( "fibo" , OBJPROP_FIRSTLEVEL + 2 , 0.618 ) ;
       ObjectSet ( "fibo" , OBJPROP_FIRSTLEVEL + 3 , 1.0 ) ;
       ObjectSet ( "fibo" , OBJPROP_FIRSTLEVEL + 4 , 1.382 ) ;
       ObjectSet ( "fibo" , OBJPROP_FIRSTLEVEL + 5 , 1.618 ) ;
       ObjectSet ( "fibo" , OBJPROP_FIRSTLEVEL + 6 , 2.0 ) ;
       ObjectSet ( "fibo" , OBJPROP_FIRSTLEVEL + 7 , 2.618 ) ;

그리고 설명은? 아니면 코드에서 사용할 수 없습니까?

 

쏘렌토, 위대한 자비! 주말이 끝나는 대로 꼭 버전과 알슈를 확인하겠습니다.

2alsu: 나는 들판을 무디게 하여 줄로 세었다.)).

 
sibemol >> :
쏘렌토, 위대한 자비! 주말이 끝나는 대로 꼭 버전과 알슈를 확인하겠습니다.

시장 움직임 없이 지금 확인하세요. 이렇게 하면 두 가지 상황만 디버깅하는 데 집중할 수 있습니다.

바는 낡았다

그리고 새로운 것이 있습니다.

새로운 것이 나타나면 완전히 형성된 것을 업데이트해야 합니다.

최적화할 것이 있습니다.

통신을 건너뛰고 인위적으로 히스토리의 일부를 잃는 알고리즘을 확인합니다.


여행에 행운을 빕니다.


추신. 아마도 두 길이만큼 뒤로 이동해야 할 것입니다. 생각한다.

 
쏘렌토, 스탠딩 마켓에서 아무 것도 변경하지 않고 코드를 확인했습니다. 선은 다음과 같습니다. EURUSD;15;20091224;1830;0001.43580;0001.43625;0001.43566;0001.43611;00000000163; EURUSD;15;20091224;1845;0001.43612;0001.43612;0001.43536;0001.43538;00000000180; 마지막 두 개의 막대는 파일의 시작 부분에 기록(복제)됩니다. 이동해야 합니다. 나는 당신의 코드를 공부할 것입니다. 고맙습니다.
 

DoubleToStr(value, Digits ) 0 이후의 선행 및 패딩은 길이 불변성을 위해 필요합니다. 이것이 캐치였습니다. 더 파괴하십시오.

끝에서 위치를 찾을 수도 있습니다. ;)

탐색에 행운을 빕니다.

 

2쏘렌토:

귀하의 코드에서

 int start ( )
{
int counted_bars = IndicatorCounted ( ) , limit ;
//----- первый вызов
if ( counted_bars = = 0 )
{ CurentT = Time [ 0 ] ; // при записи может закрыться текущий бар и появится новый
limit = Bars - 1 ;
CurentT = FilesWR ( limit , 1 ) ;
//----
//return(0);

return(0)을 제거한 후 파일이 원래대로 기록되었으며 모든 레코드에 0이 포함된 마지막 필드 <oi>에 대한 값만 없지만 이것들은 사소한 것이므로 알아낼 것입니다. 이제 움직임을 확인해야 합니다. 다시 한번 감사합니다.

위협 그리고 당신은 리드를 제거 할 수 없습니다. 가격이 있는 필드에 0이 있습니까? 길이에 영향을 미치지 않는 것 같습니다.

 
Svinozavr >> :

코드의 속성에서 액세스할 수 있는 fibo 개체 수준에 대한 설명을 만드는 방법은 무엇입니까? 코드에서 값을 설정하는 방법은 명확합니다.

그리고 설명은? 아니면 코드에서 사용할 수 없습니까?


감사합니다 Sorento - 제안된 ObjectSetFiboDescription.

질문이 삭제되었습니다.

 
sibemol >> :

2쏘렌토:

귀하의 코드에서

return(0)을 제거한 후 파일이 원래대로 기록되었으며 모든 레코드에 0이 포함된 마지막 필드 <oi>에 대한 값만 없지만 이것들은 사소한 것이므로 알아낼 것입니다. 이제 움직임을 확인해야 합니다. 다시 한번 감사합니다.

위협 그리고 당신은 리드를 제거 할 수 없습니다. 가격이 있는 필드에 0이 있습니까? 길이에 영향을 미치지 않는 것 같습니다.

금을 쫓다. 1140 및 980

레코드 길이가 변경됩니다.

그리고 <oi> 불필요한 것으로 제거했습니다 ;)