백테스트에서 훌륭한 EA! - 페이지 116

 
Beno:
나는 내가 가지고 있는 해결책을 찾기 위해 이 스레드를 앞뒤로 읽었습니다.

Cyberia Trader1.85g jpy.mq4 버전 로드했고 얼굴이지만 나는 주문을 전혀 받은 적이 없습니다. 30분에 USD/CHF 쌍을 사용하고 있습니다. 주문이 없으면 앞으로 테스트하기가 정말 어렵습니다. 시스템이 4일 동안 실행되었지만 여전히 주문이 없습니다.

어떤 도움은 큰 감사가 될 것입니다.

건배

베노

내가 70% 이상을 만드는 방법을 안다면 당신을 도우겠지만 나는 모릅니다. 나는 1시간 차트로 달리고 있습니다. 시도해 보세요.

 
Aaragorn:
그 코드에 대해 감사드립니다. 나는 그것을 보았고 파일을 만들고 읽는 것을 모두 볼 수 있습니다. 이미 생성된 파일 끝에 아무것도 추가하지 않습니다. 어쩌면 그럴 수도 있고 내가 볼 수 없고 아마도 하지 않고 있고 볼 것이 없을 수도 있습니다. 데이터를 끝에 추가하는 방법을 알고 있는 코드를 알고 있었으면 좋겠습니다.

이 스레드를 살펴보십시오.

https://www.mql5.com/en/forum/175496

 

나는 정말로 이 코드를 해킹해왔고 나는 그것을 오히려 엉망으로 남겼습니다. 그러나...

이것을 파일로 인쇄하기 위한 나의 노력은 현재 성공적이지 못한 것으로 판명되었습니다.

데이터 수집을 지원하려는 사람들에게 수동으로 시도하도록 요청할 것입니다.

CT의 최소 논리를 저널에 인쇄하도록 이 첨부된 EA를 설정했습니다. 이것은 어떤 지표도 파악하지 못하지만 아마도 CT의 논리를 보는 것만으로도 우리에게 도움이 될 것입니다.

이 데이터를 수집하려면 백테스터 에서 설정한 ea를 그대로 실행하면 됩니다. 그러나 실행되는 동안 저널 탭을 모니터링해야 합니다. 저널은 하단에서 데이터를 자르고 삭제하기 시작하지 않고 몇 가지 주문의 데이터 이상을 보유하지 않기 때문입니다. 연속적인 5 - 7개의 주문에 도달하면 테스트를 매우 빨리 중지해야 합니다. 그런 다음 데이터를 메모장에 복사하여 붙여넣고 테스터를 다시 시작하여 이전 복사/붙여넣기를 수행한 위치에 도달하는지 확인합니다. 하나의 주문에 대해 다음과 같이 붙여넣을 때 모든 데이터를 캡처하도록 주의해야 합니다...

2006.11.10 10:22:52 2004.03.05 03:02 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: close #56 buy 0.42 EURUSDm at 1.2188 sl: 1.2171 tp: 1.2285 at price 1.2210

2006.11.10 10:22:52 2004.03.05 03:02 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Recorded Winning Long 56 Opened: 1.2188 Closed: 1.221

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Ticket: 56 DV: -0.0051 CCI: 57.9346 Long order is opened @: 1.2188 StopLoss= 1.2171 TakeProfit= 1.2285

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Buy @ Minute 40

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: open #56 buy 0.42 EURUSDm at 1.2188 sl: 1.2171 tp: 1.2285 ok

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuyPossibilityMid:0.0004

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellPossibilityMid:0.0004

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedPossibilityMid:0.0009

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuySucPossibilityMid:0.002

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellSucPossibilityMid:0.0021

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedSucPossibilityMid:0.0021

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuyPossibilityQuality:8

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellPossibilityQuality:8

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedPossibilityQuality:19

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuySucPossibilityQuality:7

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellSucPossibilityQuality:7

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedSucPossibilityQuality:14

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedPossibilityMid*UndefinedPossibilityQuality:0.0164

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuyPossibilityMid*BuyPossibilityQuality:0.0032

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellPossibilityMid*SellPossibilityQuality:0.0034

2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Hour: 18 Minute: 40

이것을 1시간 차트에서 실행하고 데이터를 캡처하십시오. 그런 다음 .txt 메모장 파일을 이메일로 보내주십시오. 아마도 Islandhome이 첫 번째 주문에서 시작하고 2005년의 처음 500개 거래와 AZBOfin이 2005년의 거래 500개에서 시작하고 다음 500개를 했다면?

아! 그렇구나. 코더의 전문가가 방금 게시한 것을 시도해 보겠습니다.

 
codersguru:
이 스레드를 살펴보십시오: https://www.mql5.com/en/forum/175496

와우, 당신은 여기에서 많은 문제를 해결했을 수 있습니다 ...

내가 게시한 EA를 보고 코드의 4개 위치에 파일로 인쇄하려고 하는지 알 수 있습니까? 두 번 주문을 열고 주문을 닫을 때 별도의 기능으로 엽니다. 내가 이것에서 무엇을 추출하려고 하는지 보십니까? 각 주문의 정보, 프로그램이 열릴 때의 논리, 주문이 닫힐 때의 결과를 기록하도록 이것을 코딩하는 것을 도와주시겠습니까?

매번 이 fileflush를 수행하면 아무 것도 지워지지 않습니까? 나는 아직도 플러시가 어떻게 작동하는지 이해하지 못한다.

 

유레카! 오 이런, 감사합니다 코더의 전문가, 좋은 구조입니다!

이제 나는 여전히 여기서 약간 의아해합니다... .txt 파일이 모든 주문에 대한 결과 라인을 인쇄하지 않는다는 것을 주목하십시오. 내가 궁금한 일부 주문에 대해 왜 건너뛰나요?

결과 라인을 인쇄하지 않으면 손실 위치라고 가정할 수 있습니까?

 

해당 형식으로 해당 데이터를 해독할 수 없을 것입니다. 행에 있어야 합니다. 이러한 데이터를 통합해 보십시오.

너무 많은 파일이 열려 있다는 문제가 계속 발생합니다... 하지만 엑셀에서 볼 수 있도록 덤프를 형식화해야 하는 기본 방법은 다음과 같습니다.

//LOGIC FOR HEADER OF FILE - creates the header labels for the rows in the CSV file

string fileName = Symbol() + "-" + TimeToStr(LocalTime(), TIME_DATE) + " " + TimeHour(LocalTime()) + "-" + TimeMinute(LocalTime()) + ".csv";

File = FileOpen(fileName, FILE_CSV|FILE_WRITE, ',');

if (FileWrite(File, Symbol(),"DATETIME","Lots","Bid","SlipPage","StopLoss","TakeProfit","MagicNumber",

"SellPossibilityMid*SellPossibilityQuality",

"BuyPossibilityMid*BuyPossibilityQuality",

"UndefinedPossibilityMid*UndefinedPossibilityQuality",

"UndefinedSucPossibilityQuality",

"SellSucPossibilityQuality",

"BuySucPossibilityQuality",

"UndefinedPossibilityQuality",

"SellPossibilityQuality",

"BuyPossibilityQuality",

"UndefinedSucPossibilityMid",

"SellSucPossibilityMid",

"BuySucPossibilityMid",

"UndefinedPossibilityMid",

"SellPossibilityMid",

"BuyPossibilityMid",

"Decision" ) < 0)

{

PrintError();

return (Error);

}

//LOGIC FOR APPEND OF FILEWRITE - Writes the rows of data

//Record statistics at time of Order - Added by DudeWorks

void RecordTickets ()

{

if (Error > 0)

return (Error); //stop on error

FileSeek(File,0,SEEK_END);

if (FileWrite(File, Symbol(),TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),Lots,Bid,SlipPage,StopLoss,TakeProfit,MagicNumber,

SellPossibilityMid*SellPossibilityQuality,

BuyPossibilityMid*BuyPossibilityQuality,

UndefinedPossibilityMid*UndefinedPossibilityQuality,

UndefinedSucPossibilityQuality,

SellSucPossibilityQuality,

BuySucPossibilityQuality,

UndefinedPossibilityQuality,

SellPossibilityQuality,

BuyPossibilityQuality,

UndefinedSucPossibilityMid,

SellSucPossibilityMid,

BuySucPossibilityMid,

UndefinedPossibilityMid,

SellPossibilityMid,

BuyPossibilityMid,

Decision) < 0)

{

PrintError();

return (Error);

}

FileFlush(File);

return(0);

}

 
DudeWorks:
해당 형식으로 해당 데이터를 해독할 수 없을 것입니다. 행에 있어야 합니다. 이러한 데이터를 통합해 보십시오.

너무 많은 파일이 열려 있다는 문제가 계속 발생합니다... 하지만 엑셀에서 볼 수 있도록 덤프를 형식화해야 하는 기본 방법은 다음과 같습니다.

//LOGIC FOR HEADER OF FILE - creates the header labels for the rows in the CSV file

string fileName = Symbol() + "-" + TimeToStr(LocalTime(), TIME_DATE) + " " + TimeHour(LocalTime()) + "-" + TimeMinute(LocalTime()) + ".csv";

File = FileOpen(fileName, FILE_CSV|FILE_WRITE, ',');

if (FileWrite(File, Symbol(),"DATETIME","Lots","Bid","SlipPage","StopLoss","TakeProfit","MagicNumber",

"SellPossibilityMid*SellPossibilityQuality",

"BuyPossibilityMid*BuyPossibilityQuality",

"UndefinedPossibilityMid*UndefinedPossibilityQuality",

"UndefinedSucPossibilityQuality",

"SellSucPossibilityQuality",

"BuySucPossibilityQuality",

"UndefinedPossibilityQuality",

"SellPossibilityQuality",

"BuyPossibilityQuality",

"UndefinedSucPossibilityMid",

"SellSucPossibilityMid",

"BuySucPossibilityMid",

"UndefinedPossibilityMid",

"SellPossibilityMid",

"BuyPossibilityMid",

"Decision" ) < 0)

{

PrintError();

return (Error);

}

//LOGIC FOR APPEND OF FILEWRITE - Writes the rows of data

//Record statistics at time of Order - Added by DudeWorks

void RecordTickets ()

{

if (Error > 0)

return (Error); //stop on error

FileSeek(File,0,SEEK_END);

if (FileWrite(File, Symbol(),TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),Lots,Bid,SlipPage,StopLoss,TakeProfit,MagicNumber,

SellPossibilityMid*SellPossibilityQuality,

BuyPossibilityMid*BuyPossibilityQuality,

UndefinedPossibilityMid*UndefinedPossibilityQuality,

UndefinedSucPossibilityQuality,

SellSucPossibilityQuality,

BuySucPossibilityQuality,

UndefinedPossibilityQuality,

SellPossibilityQuality,

BuyPossibilityQuality,

UndefinedSucPossibilityMid,

SellSucPossibilityMid,

BuySucPossibilityMid,

UndefinedPossibilityMid,

SellPossibilityMid,

BuyPossibilityMid,

Decision) < 0)

{

PrintError();

return (Error);

}

FileFlush(File);

return(0);

}

그것은 나에게 문제가되지 않습니다.

Excel의 외부 데이터 가져오기 기능은 행에 아주 잘 배치됩니다. ";"로 구분되어 있다고 말하세요. 서식 지정과 관련하여 내가 얻고자 하는 문제는 위치를 잃는 결과 라인을 인쇄하지 않는다는 것입니다. 이는 행의 데이터가 각 주문에 대해 동일하지 않아 손실 항목을 인식하는 식별자를 설계하기 어렵게 만든다는 것을 의미합니다. 지금 당장은 승리한 데이터를 나머지 부분과 분리할 수 있습니다. 아마도 그것으로 충분할 것입니다. 내가 가진 것을 해결할 수 있다고 생각하지만 아직 여기에는 지표 데이터가 없습니다.

 

이것을 보세요...나는 이 물건에 지는 거래의 결과 라인을 저장하는 매우 고유한 기능 을 부여했지만 여전히 라인을 인쇄하지 않습니다???? oy, 한 줄로 부탁하는 것이 너무 많은가요?

void RecordLongLOutcomes()

{

//OrderSelect(OrderTicket(),SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)

{

if(OrderType()==OP_BUY)

{

if(OrderOpenPrice() + Spread >= OrderClosePrice())

{

datetime blorderOpen=OrderOpenTime();

handle = FileOpen("Cyberia.txt",FILE_READ|FILE_WRITE);

if(handle!=-1)

{

FileSeek(handle,0,SEEK_END);

FileWrite(handle,"Losing Long OrderTicket: ",OrderTicket()," Opened @: ",OrderOpenPrice()," Closed @: ",OrderClosePrice()," Order Open Time: ",blorderOpen);

FileWrite(handle," ");

Print("Recorded Losing Long ",OrderTicket()," Opened: ",OrderOpenPrice()," Closed: ", Bid);

FileFlush(handle);

FileClose(handle);

}

else

{

int err1;

err1=GetLastError();

Print("error(",err1,"): ",ErrorDescription(err1));

return(0);

}

}//if win or lose

}//if buy

}//if symbol and magic number

return (0);

}//record long outcomes[/PHP]

what gives???

see this? this works fine...

[PHP]void RecordLongOutcomes()

{

//OrderSelect(OrderTicket(),SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)

{

if(OrderType()==OP_BUY)

{

if(OrderOpenPrice() + Spread < OrderClosePrice())

{

datetime borderOpen=OrderOpenTime();

handle = FileOpen("Cyberia.txt",FILE_READ|FILE_WRITE);

if(handle!=-1)

{

FileSeek(handle,0,SEEK_END);

FileWrite(handle,"Winning Long OrderTicket: ",OrderTicket()," Opened @: ",OrderOpenPrice()," Closed @: ",OrderClosePrice()," Order Open Time: ",borderOpen);

FileWrite(handle," ");

Print("Recorded Winning Long ",OrderTicket()," Opened: ",OrderOpenPrice()," Closed: ", Bid);

FileFlush(handle);

FileClose(handle);

}

else

{

int err;

err=GetLastError();

Print("error(",err,"): ",ErrorDescription(err));

//return(0);

}

}//if win or lose

}//if buy

}//if symbol and magic number

RecordLongLOutcomes();

return (0);

}//record long outcomes

같은 코드입니다! (거의) 이 mql 언어는 놀라울 정도로 변덕스럽습니다!

 

안녕 아라곤

pls는 최고의 세트 파일을 업로드

사이버용

tnx

안녕

 
nanoc:
안녕 아라곤

pls는 최고의 세트 파일을 업로드

사이버용

tnx

안녕

이것은 이것에 ...

https://www.mql5.com/en/forum/174700/page71

사유: