고게터 EA - 페이지 9

 

누군가 여기에서 수수께끼의 답을 찾을 수 있기를...

이 게시물에는 이 코드를 포함 .mqh 파일에 넣으면 GGL3을 실행하는 데 필요한 모든 것이 있습니다. 모든 수정 명령으로 인해 둘 다 4MB를 초과하기 때문에 .htm 보고서를 압축했습니다...

후행 정지 기능 을 재설계하여 성능이 120만에서 130만으로 개선된 것 같습니다...또는 초기 보증금 500 대신 1000으로 시작한 결과입니다. GGL3가 500의 초기 보증금으로 시작하고 모든 거래를 엽니다.

슬프게도 이것에 대한 진행 상황에도 불구하고 이것이 큰 돈을 지속적으로 버는 것을 막는 아직 밝혀지지 않은 것이 남아 있다는 보고가 있습니다. 더 자주 실패하고 파산합니다. 후행 정지가 아닌 경우 다른 작업이어야 합니다...뭔지 모르겠네요...

동일한 시간 범위에 걸쳐 동일한 환경의 동일한 설정에서 결과가 이렇게 큰 차이를 보이는 원인을 파악하고 수정할 수 있는 사람에게는 많은 보상과 큰 돈이 들어 있는 것 같습니다. 그것은 지금 나를 곤경에 빠뜨렸다.

나는 휴가를 위해 일주일을 쉬고 있습니다 ... 내가 돌아올 때 누군가가 통찰력이나 해결책을 게시하기를 바랍니다. 여기에 있는 미스터리가 밝혀질 때까지 어떻게 더 많은 개발을 진행할 수 있을지 모르겠습니다.

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

//| GGLrewrite.mqh |

//| In no event will author be liable for any damages whatsoever. |

//| Use at your own risk. |

//| |

//| Please do not remove this header. |

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

#property copyright "Aaragorn and Eaglehawk & Maji & Robert C."

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

#property link "http://forex.factoid.ca/forums/showthread.php?t=104"

#property link "https://www.forex-tsd.com/expert-advisors-metatrader-4/2840-gogetter-ea.html"

// many thanks goes to all those on the tsdforex forum and factoid forum who have encouraged us this far

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

//| defines |

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

//+-----------Store HIGH, LOW matching data------+

#define SLSIZE 15

static int SLIndex = 0;

static double sLocatorLows[ SLSIZE ] = { 0 };

static double sLocatorHighs[ SLSIZE ] = { 0 };

//+-----------Stored equity data-----------------+

#define StoredEquitySIZE 5

static int EquityIndex = 0;

static double EQUITY[ StoredEquitySIZE ] = { 0 };

static int EquityValuesStored = 0;

//+-----------close based on time----------------+

extern string Time_Settings="Time In Trade Settings";

extern int MonitorInMinutes = 60; // minutes after open to check state of trade

extern int ThresholdMove = 1; // if after that time we don't have +'x' pips we will exit

extern int MinsMultiplier = 75; // multiplies the MonitorInMinutes to make minutes (if 'x'=60) into hours

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

//| Commonly used GoGetter Functions | |

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

//+-------------StoreHighsAndLows Function----support and resistance arrays------thanks to Robert C for assistance on this-------+

//+-------creates array of each trade series support and resistance for signal profile matching-------------------+

void StoreHighsAndLows(double HIGH, double LOW)

{

if ( SLIndex >= SLSIZE )

{

SLIndex = 0;

}

sLocatorLows[ SLIndex ] = LOW;

sLocatorHighs[ SLIndex ] = HIGH;

SLIndex++;

}

//+-----------------------end of StoreHighsAndLows------------------------------------+

//+--------------- Get past equity function---------Thanks Robert C.-----------+

// This returns past equity from the global equity array. The howFarBack parameter is a positive integer that indicates how far back into the array to go

// 1 would be the previous equity, 2 would be the equity before that, etc.

// the HowFarBack should not be greater than the arraysize

double GetPastEquity(int HowFarBack)

{

if ( HowFarBack > EquityValuesStored )

{

Print("Error getting past equity, Looking back farther than what we have stored");

return (-1);

}

else

{

int PastIndex = EquityIndex - HowFarBack;

if ( PastIndex < 0 )

{

PastIndex += StoredEquitySIZE;

}

return (EQUITY[PastIndex]);

}

}

//+--end of get past equity function-----------+

//+---Stores account Equity value in an array for future comparisions up to as many previous trades as the declared size of the array----thanks Robert C.----+

void StoreAccountEquity(double equity)

{

if ( EquityIndex >= StoredEquitySIZE )

{

EquityIndex = 0;

}

EQUITY[EquityIndex] = equity;

EquityIndex++;

if ( EquityValuesStored < StoredEquitySIZE )

{

EquityValuesStored++;

}

}

//+-------end of Store Equity function-------------------+

//+---------count open trades function-------ty Maji--------------------------+

int CountTrades()

{

int count=0;

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

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

continue;

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

if((OrderType()==OP_SELL) || (OrderType()==OP_BUY))

count++;

}//for

return(count);

}

//+-----------end of count trades-------------------------------------+

//+---------------------Close Based on Time function------------Thanks to 'Maji' for this-------------------+

void CloseOrder()

{

double Profit=ThresholdMove*Point;

int total = CountTrades();

for (int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if ((CurTime()-OrderOpenTime())>MonitorInMinutes*60*MinsMultiplier)

{

LowTrailingStopTrigger = False;

if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && Bid-Profit<OrderOpenPrice() )

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

}

if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && Bid+Profit>OrderOpenPrice())

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);

}

}

}

}

//+---------------------------end of close on time code---------------+

//+------------------------increase lots function-------------------------+

//+----------------increases lots based on account equity-----------------+

//double IncreaseLots()

//{

// Lots = NormalizeDouble(AccountFreeMargin()/(LotIncreaseFactor*1000/0.1),2);

// if(Lots > 99) Lots = 99;

// Print("account free margin = ",AccountFreeMargin()," Lots = ",Lots);

// return(Lots)

//}
파일:
ggl3.zip  353 kb
ggl3fail.zip  335 kb
ggl3.gif  6 kb
ggl3fail.gif  8 kb
ggl3.mq4  21 kb
 

관리하기 쉬운 경우 포함 파일이 압축되어 있습니다.

파일:
 

제가 지금 드리는 질문은....

데이터 스트림이 안정적입니까? 나는 그것이 히스토리 센터 파일을 사용하기 때문이라고 가정합니다. 아마도 그 가정에 도전해야합니까?

플랫폼이 데이터 스트림을 처리하는 방식이 안정적이며 매번 동일한 데이터를 정확히 같은 방식으로 처리하는 데 신뢰할 수 있습니까? 이 플랫폼을 만든 사람이 아니라면? 어떻게 연락합니까? 신뢰할 수 있도록 수정해야 하는 것은 무엇입니까?

이 두 가지 미지수 중 하나가 여전히 잠재적으로 가변적이고 실제로 신뢰할 수 없는 경우 EA 코드를 안정화하지 않을 것 같습니다. 그들의 신뢰성은 어떻게 검증될 수 있습니까?

이 페이지에 이 질문에 대한 관심 요청을 게시했습니다...

http://www.metaquotes.net/index.php?bugtrack/

누군가가 곧 통찰력을 갖고 답장을 해주기를 바랍니다.

 
Aaragorn:
제가 지금 드리는 질문은....

데이터 스트림이 안정적입니까? 나는 그것이 히스토리 센터 파일을 사용하기 때문이라고 가정합니다. 아마도 그 가정에 도전해야합니까?

플랫폼이 데이터 스트림을 처리하는 방식이 안정적이며 매번 동일한 데이터를 정확히 같은 방식으로 처리하는 데 신뢰할 수 있습니까? 이 플랫폼을 만든 사람이 아니라면? 어떻게 연락합니까? 신뢰할 수 있도록 수정해야 하는 것은 무엇입니까?

이 두 가지 미지수 중 하나가 여전히 잠재적으로 가변적이고 실제로 신뢰할 수 없는 경우 EA 코드를 안정화하지 않을 것 같습니다. 그들의 신뢰성은 어떻게 검증될 수 있습니까?

이 페이지에 이 질문에 대한 관심 요청을 게시했습니다...

http://www.metaquotes.net/index.php?bugtrack/

누군가가 곧 통찰력을 갖고 답장을 해주기를 바랍니다.

.... 다중 플랫폼에서 이것을 앞으로 테스트해 보셨습니까? 저는 현재 두 개의 다른 BD 플랫폼에서 동일한 EA를 테스트하여 어떤 결과를 얻을 수 있는지 확인하고 있습니다. 라이브를 하기 전에 결과에 상당한 양의 고정 데이터가 있는지 확인하고 싶었습니다. 그것은 어리석은 생각일 수도 있지만 Ea가 일관된 성능을 보일 것이라는 상당히 확실한 생각이 있을 때까지 실제 자본을 위험에 빠뜨리고 싶지 않습니다.

 

GPBUSD에 대해 30tf를 사용하여 메타트레이더 4에서만 테스트했습니다. 그렇게 하는 것이 좋지 않아서가 아니라 나는 단지 인간이기 때문에 그리고 나는 여성이 아니기 때문에 멀티태스킹을 잘하지도 못합니다. 그래서 저는 아직 해보지 못했습니다. 아직 다른 테스트는 해보지 않았습니다. 저는 계속해서 개발 문제에 집중했습니다. 내 목표는 다른 쌍이나 다른 플랫폼 등으로 확장하기 전에 이 한 인스턴스에서 안정적으로 만드는 것이었습니다.

반드시 상식을 사용하십시오. 다음 주에 내가 없는 동안 데모 계정 에서 실행할 수 있도록 하겠습니다. 우리는 내일 떠나고 일주일 동안 떠날 것이기 때문에 다음 화요일까지 스레드로 돌아가지 않을 것입니다.

나는 아직 실제 돈을 위험에 빠뜨리기에 적합하다고 생각하지 않습니다. 저는 불안정이 해결되는 것을 보고 데모에서 테스트를 전달하기를 원합니다. 그런 다음 데이터가 거기에서 나와 함께 가야한다고 말하는 곳을 볼 것입니다. 특히 개발자를 초대하여 제가 없는 동안 자세히 살펴보고 데이터 처리 또는 데이터 파일 불규칙성을 확인할 수 있는지 확인하고 싶습니다.

차이를 설명하는 코드에 분명히 잘못된 것은 없습니다. 나도 그것에 대해 틀릴 수 있기 전에 틀렸다. 누군가가 수정 방법이나 위치를 알려줄 수 있다면 나는 틀렸어도 괜찮습니다.

거짓말을 하지 않을게 내 주의를 너무 많이 소모했기 때문에 이 일을 하는 동안 삶의 균형을 찾아야 합니다.

나는 이것을 잠시 동안 여러분의 손에 맡기고 여러분이 그것으로 무엇을 할 수 있는지 볼 것입니다. 나는 단지 당신이 연구를 하는 경우 모든 사람들이 혜택을 받을 수 있도록 당신의 결과와 함께 이 스레드에 다시 보고하기를 요청합니다.

 

...........

당신은 하나의 mp4 파일에 짧고 긴 게시물을 넣을 수 있습니까?

 

같은 설정에서 이렇게 다른 보고서가 나오는 이유는 무엇입니까?

첨부된 include.mqh 파일과 함께 첨부된 EA 사용. 이 설정을 사용하여 전략 테스트를 실행합니다....

전문가 속성 버튼....

탭 테스트...

1000 USD 초기 보증금..

포지션: 롱 및 숏

최적화된 매개변수: 균형

유전자 알고리즘 상자가 선택되지 않음

입력 탭...

모든 사용자 입력은 이 탭을 수동으로 변경하지 않고 EA에 저장된 그대로 사용됩니다.

최적화 탭...

이 탭에는 아무것도 체크되어 있지 않습니다

설정.....

전문가 고문: GGL3, Aaragon 및 Eaglehawk & Maji & Robert C.

기호: GBPUSD, 영국 파운드 대 미국 달러

기간: M30

모델: 모든 틱 (모든 틱의 프랙탈 보간으로 사용 가능한 모든 최소 시간 프레임 기반)

저도 첨부된 1분 데이터 파일을 사용하고 있습니다.

날짜 사용 상자가 선택되어 있습니다. 시작: 2005.09.09 종료: 오늘(2006.08.22)

Recalculate 확인란을 선택합니다.

최적화 확인란을 선택하지 않습니다.

테스트가 끝나면 이 보고서를 받습니다...

**************************************************

테스트 17735의 바

702859를 모델링한 진드기

모델링 품질 89.82%

초기 보증금 1000.00

총 순이익 1375788.66

총 이익 3678568.71

총 손실 -2302780.05

이익 계수 1.60

기대 보수 472.62

절대 드로다운 240.00

최대 드로다운 231662.10 (15.07%)

상대 하락률 55.32% (18074.74)

총 거래 2911

숏포지션(원 %) 0(0.00%)

롱포지션(원 %) 2911(42.05%)

이익 거래(전체의 %) 1224(42.05%)

손실 거래(전체의 %) 1687(57.95%)

가장 큰

이익 거래 89100.00

손실 거래 -15840.00

평균

이익 거래 3005.37

손실 무역 -1365.01

최고

연속 우승 (현금) 9 (106921.10)

연속 손실 (돈 손실) 18 (-163.10)

최대

연속 이익(승수) 225720.50 (7)

연속 손실(손실 수) -15845.70 (5)

평균

연속 우승 2

연속 패배 2

************************************************** **

이제 나는 이것이 매우 좋은 EA라고 생각하므로 동일한 기능을 하는지 확인하기 위해 다시 테스트하고 싶습니다....

어떤 종류의 설정도 변경하지 않습니다....

설정 탭에서 다시 계산 상자를 선택하고 시작을 클릭합니다....이 보고서를 지금 가져옵니다...

************************************************** ****

테스트 18015의 바

739231을 모델링한 진드기

모델링 품질 89.83%

초기 보증금 1000.00

총 순이익 -731.75

총 이익 31897.83

총 손실 -32629.58

이익 계수 0.98

기대 보수 -0.24

절대 드로다운 780.40

최대 드로다운 4912.15 (94.91%)

상대 하락률 94.91% (4912.15)

총 거래 2990

숏포지션(원 %) 0(0.00%)

롱포지션(원 %) 2990(34.88%)

이익 거래(전체의 %) 1043(34.88%)

손실 거래(전체의 %) 1947(65.12%)

가장 큰

이익 거래 1170.00

손실 거래 -360.00

평균

이익 거래 30.58

손실 무역 -16.76

최고

연속 우승 (현금) 8 (124.50)

연속 손실 (돈 손실) 20 (-45.50)

최대

연속 이익(승수) 2606.30 (7)

연속 손실(손실 수) -360.00 (1)

평균

연속 우승 2

연속 패배 3

************************************************** ****

두 테스트가 왜 이렇게 다른가요?

EA를 두 번째로 테스트할 때 테스트는 어떻게 다른가요?

다시 계산할 때마다 테스터 테스트를 동일하게 하려면 어떻게 해야 합니까?

이 EA를 테스트할 때마다 동일한 보고서를 얻을 수 있도록 안내해 주셔서 감사합니다.

아라곤

***********************include .mqh file below *******************************

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

//| GoGetterfunctions.mqh |

//| In no event will author be liable for any damages whatsoever. |

//| Use at your own risk. |

//| |

//| Please do not remove this header. |

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

#property copyright "Aaragorn and Eaglehawk & Maji & Robert C."

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

#property link "http://forex.factoid.ca/forums/showthread.php?t=104"

#property link "https://www.forex-tsd.com/expert-advisors-metatrader-4/2840-gogetter-ea.html"

// many thanks goes to all those on the tsdforex forum and factoid forum who have encouraged us this far

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

//| defines |

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

//+-----------Store HIGH, LOW matching data------+

#define SLSIZE 15

static int SLIndex = 0;

static double sLocatorLows[ SLSIZE ] = { 0 };

static double sLocatorHighs[ SLSIZE ] = { 0 };

//+-----------Stored equity data-----------------+

#define StoredEquitySIZE 5

static int EquityIndex = 0;

static double EQUITY[ StoredEquitySIZE ] = { 0 };

static int EquityValuesStored = 0;

//+-----------close based on time----------------+

extern string Time_Settings="Time In Trade Settings";

extern int MonitorInMinutes = 60; // minutes after open to check state of trade

extern int ThresholdMove = 1; // if after that time we don't have +'x' pips we will exit

extern int MinsMultiplier = 75; // multiplies the MonitorInMinutes to make minutes (if 'x'=60) into hours

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

//| Commonly used GoGetter Functions | |

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

//+-------------StoreHighsAndLows Function----support and resistance arrays------thanks to Robert C for assistance on this-------+

//+-------creates array of each trade series support and resistance for signal profile matching-------------------+

void StoreHighsAndLows(double HIGH, double LOW)

{

if ( SLIndex >= SLSIZE )

{

SLIndex = 0;

}

sLocatorLows[ SLIndex ] = LOW;

sLocatorHighs[ SLIndex ] = HIGH;

SLIndex++;

}

//+-----------------------end of StoreHighsAndLows------------------------------------+

//+--------------- Get past equity function---------Thanks Robert C.-----------+

// This returns past equity from the global equity array. The howFarBack parameter is a positive integer that indicates how far back into the array to go

// 1 would be the previous equity, 2 would be the equity before that, etc.

// the HowFarBack should not be greater than the arraysize

double GetPastEquity(int HowFarBack)

{

if ( HowFarBack > EquityValuesStored )

{

Print("Error getting past equity, Looking back farther than what we have stored");

return (-1);

}

else

{

int PastIndex = EquityIndex - HowFarBack;

if ( PastIndex < 0 )

{

PastIndex += StoredEquitySIZE;

}

return (EQUITY[PastIndex]);

}

}

//+--end of get past equity function-----------+

//+---Stores account Equity value in an array for future comparisions up to as many previous trades as the declared size of the array----thanks Robert C.----+

void StoreAccountEquity(double equity)

{

if ( EquityIndex >= StoredEquitySIZE )

{

EquityIndex = 0;

}

EQUITY[EquityIndex] = equity;

EquityIndex++;

if ( EquityValuesStored < StoredEquitySIZE )

{

EquityValuesStored++;

}

}

//+-------end of Store Equity function-------------------+

//+---------count open trades function-------ty Maji--------------------------+

int CountTrades()

{

int count=0;

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

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

continue;

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

if((OrderType()==OP_SELL) || (OrderType()==OP_BUY))

count++;

}//for

return(count);

}

//+-----------end of count trades-------------------------------------+

//+---------------------Close Based on Time function------------Thanks to 'Maji' for this-------------------+

void CloseOrder()

{

double Profit=ThresholdMove*Point;

int total = CountTrades();

for (int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if ((CurTime()-OrderOpenTime())>MonitorInMinutes*60*MinsMultiplier)

{

LowTrailingStopTrigger = False;

if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && Bid-Profit<OrderOpenPrice() )

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

}

if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && Bid+Profit>OrderOpenPrice())

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);

}

}

}

}

//+---------------------------end of close on time code---------------+

//+------------------------increase lots function-------------------------+

//+----------------increases lots based on account equity-----------------+

//double IncreaseLots()

//{

// Lots = NormalizeDouble(AccountFreeMargin()/(LotIncreaseFactor*1000/0.1),2);

// if(Lots > 99) Lots = 99;

// Print("account free margin = ",AccountFreeMargin()," Lots = ",Lots);

// return(Lots)

//}

***************************end of include .mqh file******************************
파일:
ggl3.mq4  21 kb
 

. 나는 당신이 이것을 앞으로 테스트하는 것을 돕고 싶지만 어떤 이유로 차트에 첨부 할 수 없습니다 .. 왜 안되는지 알 수 없습니다 ..

 
furious_angel:
. 나는 당신이 이것을 앞으로 테스트하는 것을 돕고 싶지만 어떤 이유로 차트에 첨부 할 수 없습니다 .. 왜 안되는지 알 수 없습니다 ..

컴파일해 보십시오. 또한 전문가 폴더에 mqh 파일이 있어야 작동합니다.

 
forextrades:
컴파일해 보십시오. 또한 전문가 폴더에 mqh 파일이 있어야 작동합니다.

실제로 mqh 파일은 "experts" 폴더의 하위 폴더인 "include" 폴더로 이동해야 합니다. 적어도 그것이 나를 위해 작동하는 방식입니다.

첨부하는 데 문제가 없습니다> 전략 테스터 를 일관성 있게 유지하는 데 문제가 있습니다.