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

 
DudeWorks:
MT 편집기에서 바로 나온 파일 쓰기 샘플도 있습니다...

이렇게 하면 csv 파일에 로그인하여 원하는 출력을 수정할 수 있습니다.

int handle;

datetime orderOpen=OrderOpenTime();

handle=FileOpen("c:\cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');

if(handle>0)

{

FileWrite(handle, Close[0], Open[0], High[0], Low[0], TimeToStr(orderOpen));

FileClose(handle);

}

저는 IBFX 라이브 중이며 마이크로 로트에서 나중에 테스트 라이브를 전달할 수 있습니다. 그러나 계정에 다른 라이브 거래가 있으므로 CT 결과를 별도로 제거해야 합니다.

이메일 주소를 알려주세요

이 모든 것을 파일에 인쇄해야 하고 내가 평가하는 모든 지표를 가져와야 합니다. 현재는 이것들을 저널에 인쇄하고 있습니다.

ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, SlipPage, StopLoss, Bid - (TakeProfit * Point), "NeuroCluster-testing-AI-LS1", MagicNumber, 0, Green);

if(ticket > 0)

{

if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))

{

int handle;

datetime orderOpen=OrderOpenTime();

handle=FileOpen("C:\cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');

if(handle>0)

{

FileWrite(handle,"Hour: ",TimeHour(CurTime())," Minute: ",TimeMinute(CurTime()));

FileWrite(handle,"SellPossibilityMid*SellPossibilityQuality:", SellPossibilityMid*SellPossibilityQuality);

FileWrite(handle,"BuyPossibilityMid*BuyPossibilityQuality:", BuyPossibilityMid*BuyPossibilityQuality);

FileWrite(handle,"UndefinedPossibilityMid*UndefinedPossibilityQuality:", UndefinedPossibilityMid*UndefinedPossibilityQuality);

FileWrite(handle,"UndefinedSucPossibilityQuality:", UndefinedSucPossibilityQuality);

FileWrite(handle,"SellSucPossibilityQuality:", SellSucPossibilityQuality);

FileWrite(handle,"BuySucPossibilityQuality:", BuySucPossibilityQuality);

FileWrite(handle,"UndefinedPossibilityQuality:", UndefinedPossibilityQuality);

FileWrite(handle,"SellPossibilityQuality:", SellPossibilityQuality);

FileWrite(handle,"BuyPossibilityQuality:", BuyPossibilityQuality);

FileWrite(handle,"UndefinedSucPossibilityMid:", UndefinedSucPossibilityMid);

FileWrite(handle,"SellSucPossibilityMid:", SellSucPossibilityMid);

FileWrite(handle,"BuySucPossibilityMid:", BuySucPossibilityMid);

FileWrite(handle,"UndefinedPossibilityMid:", UndefinedPossibilityMid);

FileWrite(handle,"SellPossibilityMid:", SellPossibilityMid);

FileWrite(handle,"BuyPossibilityMid:", BuyPossibilityMid);

FileClose(handle);

}

이 작업을 수행하는 방법을 정확히 모릅니다... 아직 이것이 정확합니까? 이것은 파일을 생성하지 않습니다. 옳지 않아야 합니다.

2006.11.08 11:21:54 2006.10.06 12:08 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: error(4101): 잘못된 파일 이름

2006.11.08 11:21:54 2006.10.06 12:08 Cyberia Trader1.9 R2.2 AlertEuro: 절대 파일 경로 "C:\cyberia_log.csv"는 허용되지 않습니다.

????

무슨 일이야?

 

알았어 그게 더 좋아....

ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, SlipPage, StopLoss, Bid - (TakeProfit * Point), "NeuroCluster-testing-AI-LS1", MagicNumber, 0, Green);

if(ticket > 0)

{

if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))

{

datetime sorderOpen=OrderOpenTime();

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');

if(handle!=-1)

{

FileWrite(handle,"Hour: ",TimeHour(CurTime())," Minute: ",TimeMinute(CurTime()));

FileWrite(handle,"SellPossibilityMid*SellPossibilityQuality:", SellPossibilityMid*SellPossibilityQuality);

FileWrite(handle,"BuyPossibilityMid*BuyPossibilityQuality:", BuyPossibilityMid*BuyPossibilityQuality);

FileWrite(handle,"UndefinedPossibilityMid*UndefinedPossibilityQuality:", UndefinedPossibilityMid*UndefinedPossibilityQuality);

FileWrite(handle,"UndefinedSucPossibilityQuality:", UndefinedSucPossibilityQuality);

FileWrite(handle,"SellSucPossibilityQuality:", SellSucPossibilityQuality);

FileWrite(handle,"BuySucPossibilityQuality:", BuySucPossibilityQuality);

FileWrite(handle,"UndefinedPossibilityQuality:", UndefinedPossibilityQuality);

FileWrite(handle,"SellPossibilityQuality:", SellPossibilityQuality);

FileWrite(handle,"BuyPossibilityQuality:", BuyPossibilityQuality);

FileWrite(handle,"UndefinedSucPossibilityMid:", UndefinedSucPossibilityMid);

FileWrite(handle,"SellSucPossibilityMid:", SellSucPossibilityMid);

FileWrite(handle,"BuySucPossibilityMid:", BuySucPossibilityMid);

FileWrite(handle,"UndefinedPossibilityMid:", UndefinedPossibilityMid);

FileWrite(handle,"SellPossibilityMid:", SellPossibilityMid);

FileWrite(handle,"BuyPossibilityMid:", BuyPossibilityMid);

FileClose(handle);

}

else

{

int err;

err=GetLastError();

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

return(0);

}

ok 이것은 파일을 생성하고 있지만 파일에는 모든 주문이 아닌 1개의 항목만 포함되어 있습니다....oy

 
DudeWorks:
내가 코딩할게, 오늘밤까지 줘, 뭘 더 버리고 싶은지 말해줘

위의 사이버비아 논리와 함께...

나는 곰과 황소의 힘 지표, cci, adx의 3가지 값, macd와 stochastic, rsi, 그리고 현재 막대에서의 종가를 기반으로 한 1MA를 테스트하려고 생각하고 있습니다.(종가의 MA) 평가에 효과가 있다고 생각하는 다른 지표가 있으면 해당 지표도 버리십시오. 내가 생각하는 지점까지는 각도가 많을수록 더 좋을 수 있도록 프로필을 생성하고 싶다는 생각이 들 것입니다.

추가해야 할 것이 하나 더 있습니다. 주문이 열릴 때 계정 자산 가치를 저장한 다음 주문이 마감될 때 계정 자산 가치와 비교하고 거래가 승자인지 패자인지 결정하는 다른 EA에서 수행한 작업...이 데이터가 필요합니다. 그런 거래의 결과도 포함하도록 덤프하여 분석할 때 거래를 어떤 범주에 넣을지 알 수 있습니다.

여러 거래가 계정 자산을 변경할 수 있기 때문에 대신 orderopenprice 및 ordercloseprice를 해제하도록 다시 작업할 예정입니다. 잠시만요....

이미 절반 정도 왔어요. 코드에 이미 포함되어 있습니다. 조금 더 조정해야 합니다...

/////////////결과 기록//////////////////

무효 RecordLongOutcomes()

{

if(입찰가<OrderOpenPrice())

{

주문선택(주문티켓(),SELECT_BY_POS,MODE_TRADES);

Print(" 패자 롱 ",OrderTicket()," 열림: ",OrderOpenPrice()," 닫힘: ", Bid);

}

리턴(0);

}

무효 RecordShortOutcomes()

{

if(문의>주문오픈가격())

{

주문선택(주문티켓(),SELECT_BY_POS,MODE_TRADES);

Print(" 패자 숏 ",OrderTicket()," 열림: ",OrderOpenPrice()," 닫힘: ", Bid);

}

리턴(0);

}

 

그래서 여기에서 무엇을 하고 있었는지 ..또한 얼마 전에 동일한 아이디어가 있었지만 너무 게으르게 수행했습니다 ... 각 주문 시간에 모든 변수와 표시기 값을 기록하여 각 주문에서 정확히 무슨 일이 일어나는지 볼 수 있습니다 상관 관계를 결정하기 위해

마지막으로 주문 신호를 보냈을 때 어떤 가능성이 있었는지 궁금하여 이것이 실제로 표시되어야합니다..

그러나 각 행의 너비는 꽤 넓을 수 있지만 실제로 선택된 지표만 기록하도록 만들면 들어갈 수 있다고 생각합니다.

MT4 파일 너비는 내 생각에 64 필드입니다. 그래서 그것으로 충분합니다.

나는 당신에게 내 이메일을 보내

 
DudeWorks:
그래서 여기에서 무엇을 하고 있었는지 ..또한 얼마 전에 동일한 아이디어가 있었지만 너무 게으르게 수행했습니다 ... 각 주문 시간에 모든 변수와 표시기 값을 기록하여 각 주문에서 정확히 무슨 일이 일어나는지 볼 수 있습니다 상관 관계를 결정하기 위해

마지막으로 주문 신호를 보냈을 때 어떤 가능성이 있었는지 궁금하여 이것이 실제로 표시되어야합니다..

그러나 각 행의 너비는 꽤 넓을 수 있지만 실제로 선택된 지표만 기록하도록 만들면 들어갈 수 있다고 생각합니다.

MT4 파일 너비는 내 생각에 64 필드입니다. 그래서 그것으로 충분합니다.

나는 당신에게 내 이메일을 보내

정확히! 정밀도는 실제로 우리가 필터에서 찾고 있는 것이며 이것이 우리에게 작동하게 하는 방법을 보여줄 수 있습니다.

좋아, 탐색할 환자 프로젝트를 보내 드리겠습니다. 하지만 이 데이터 덤프를 받는 데 방해가 되지 않도록 하십시오.

막힐 때 더 많은 경험을 가진 개발자가 있는 것을 환영합니다. 저는 아직 경험이 많지 않은 정말 초보입니다.

출력에 관해서는. 이 플랫폼에서 내놓는 어떤 것도 Excel의 크기를 초과할 가능성은 없습니다. 내가 필요한 것은 쉽게 식별할 수 있도록 하여 Excel로 가져올 때 구분 기호로 분리된 문서화되지 않은 숫자의 무리가 아니라 작업 중인 항목을 볼 수 있도록 하는 것입니다. 각 값에 데이터 레이블이 필요합니다. 우리는 15개의 CT 필드와 8개의 지표, CCI, RSI, 1MA, bearspower, bullspower,adx(3개 값) 플러스를 보고 있습니다. 그러나 macd 및 stochastics를 수행하면 이에 대해 6을 계산한 다음 총 필드 = 29에 우승 결과를 더한 것입니다. (이전 게시물 참조) 또는 손실 = 30 열기 및 닫기 및 시간을 추가하면 3 총계 = 33이 계산됩니다.

33 필드 / 주문. 그게 뭔가를 밝혀야 하지? 응? 또 다른 작은 호의는 날짜 시간이 컴퓨터에서 사용하는 intergervalue 대신 날짜 시간에 대해 사람이 이해할 수 있는 것을 실제로 인쇄(파일로 인쇄)하도록 할 수 있다면 도움이 될 것입니다.

 

이것에 대해 뭔가 오류 메시지가 나타났습니다 ...

내가 OrderSelect를 끌 때까지 'OrderClose 기능 에 대한 잘못된 티켓'.

하지만 당신은 내가 그것을 밖으로 얻으려고하는 것을 볼 수 있다고 생각합니다.

/////////////record outcomes/////////////////

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_log.csv", FILE_CSV|FILE_WRITE, ';');

if(handle!=-1)

{

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

FileClose(handle);

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

}

else

{

int err;

err=GetLastError();

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

return(0);

}

}

else

{

datetime buyorderOpen=OrderOpenTime();

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');

if(handle!=-1)

{

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

FileClose(handle);

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

}

else

{

int err1;

err=GetLastError();

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

return(0);

}

}//if win or lose

}//if buy

}//if symbol and magic number

return (0);

}//record long outcomes

void RecordShortOutcomes()

{

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

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

{

if(OrderType()==OP_SELL)

{

if(OrderOpenPrice() - Spread > OrderClosePrice())

{

datetime borderOpen=OrderOpenTime();

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');

if(handle!=-1)

{

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

FileClose(handle);

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

}

else

{

int err3;

err3=GetLastError();

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

return(0);

}

}

else

{

datetime sellorderOpen=OrderOpenTime();

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');

if(handle!=-1)

{

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

FileClose(handle);

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

}

else

{

int err4;

err4=GetLastError();

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

return(0);

}

}//if win or lose

}//if buy

}//if symbol and magic number

return (0);

}//record short outcomes
 

결과를 기록하기 위해 방금 추가한 코드는 filewrite()를 제외하고는 잘 작동합니다.

나는 이제 파일을 생성하고 있지만 테스터를 통해 실행되는 최종 주문인 것처럼 보이는 항목이 하나만 있으므로 나에게 일어나는 일은 파일 끝에 추가하는 대신 각 항목을 덮어쓰는 것입니다. 이 문제를 해결하는 방법을 알고 있다면 지금 이 데이터 덤프를 해제할 수 있습니다.

 
Aaragorn:
ok 이것은 파일을 생성하고 있지만 파일에는 모든 주문이 아닌 1개의 항목만 포함되어 있습니다....oy

파일을 열 때마다 파일을 덮어씁니다. 한 가지 해결책은 init() 함수 에서 파일을 열고 deinit()에서 닫는 것입니다.

 
tururo:
파일을 열 때마다 파일을 덮어씁니다. 한 가지 해결책은 init() 함수에서 파일을 열고 deinit()에서 닫는 것입니다.

읽기 및 쓰기 플래그를 사용하는 방법을 이해하고 있는지 잘 모르겠습니다.

나는 이런 예에서 이것을 본다 ...

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');

또는

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');

이게 가능한가요?

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_READ|FILE_WRITE, ';');

끝에 정확히 추가하는 방법을 이해하지 못하는 것을 알 수 있습니다.

init()에서 여는 방법을 모르겠습니다.

그 다음에

끝에 각각의 새로운 주문을 추가하십시오.

그 다음에

deinit()에서 닫습니다.

나는 그것이 다음과 같다고 상상한다.

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_READ, ';');

초기화에서 그 다음

FileWrite(handle,"주문 오픈 시간: ",sorderOpen);

FileWrite(handle,"SellPossibilityMid*SellPossibilityQuality:", SellPossibilityMid*SellPossibilityQuality);

FileWrite(handle,"BuyPossibilityMid*BuyPossibilityQuality:", BuyPossibilityMid*BuyPossibilityQuality);

FileWrite(handle,"UndefinedPossibilityMid*UndefinedPossibilityQuality:", UndefinedPossibilityMid*UndefinedPossibilityQuality);

FileWrite(handle,"UndefinedSucPossibilityQuality:", UndefinedSucPossibilityQuality);

FileWrite(handle,"SellSucPossibilityQuality:", SellSucPossibilityQuality);

FileWrite(handle,"BuySucPossibilityQuality:", BuySucPossibilityQuality);

FileWrite(handle,"UndefinedPossibilityQuality:", UndefinedPossibilityQuality);

FileWrite(handle,"SellPossibilityQuality:", SellPossibilityQuality);

FileWrite(handle,"BuyPossibilityQuality:", BuyPossibilityQuality);

FileWrite(handle,"UndefinedSucPossibilityMid:", UndefinedSucPossibilityMid);

FileWrite(handle,"SellSucPossibilityMid:", SellSucPossibilityMid);

FileWrite(handle,"BuySucPossibilityMid:", BuySucPossibilityMid);

FileWrite(handle,"UndefinedPossibilityMid:", UndefinedPossibilityMid);

FileWrite(handle,"SellPossibilityMid:", SellPossibilityMid);

FileWrite(handle,"BuyPossibilityMid:", BuyPossibilityMid); FileWrite(handle,"짧은 OrderTicket 당첨: ",OrderTicket()," 열림 @: ",OrderOpenPrice()," 닫힘 @: ",OrderClosePrice()," 주문 시작 시간: ",borderOpen);

그런 다음 deinit에서

파일 닫기(핸들);

그 맞습니까?

 
//+------------------------------------------------------------------+

//| We initialize the adviser |

//+------------------------------------------------------------------+

int init()

{

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');

SavedBlockSell = BlockSell;

SavedBlockBuy = BlockBuy;

AccountStatus();

GetMarketInfo();

ModelingPeriod = ValuePeriod * ValuesPeriodCount; // Period of simulation in minutes

if (ValuePeriod != 0 )

ModelingBars = ModelingPeriod / ValuePeriod; // Quantity of steps in the period

CalculateSpread();

return(0);

}

" 열린 파일 이 너무 많습니다"라는 오류가 발생합니까?