//+-------------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--------------------------+
portlandPipper: 아라곤, 방금 이 스레드 전체를 읽었습니다. 먼저, 이것을 고수하기 위한 소품을 제공해야 합니다. 약 1년 전, 나는 깨어 있는 모든 순간을 고문의 성배를 생각해내느라 바빴습니다. Fib 수준, 피벗 포인트, 확률론, MA 등... 두 가지 교훈을 얻었습니다. a) 전략 테스터는 시간 낭비입니다. b) 데모 계정은 실제 계정과 다르게 작동합니다. 백 테스팅에서 약 90% 정확도로 거래되는 일부 코드를 생각해낼 수 있었습니다. 데모 계정에서 75% 정도까지 떨어졌고 라이브로 시도했을 때 50% 미만이었습니다(적절한 자금 관리를 통해 여전히 사용할 수 있어야 함). 제 요점은 전략 테스터나 데모 계정에 최적화하려고 애쓰지 말라는 것입니다. 좋은 일이 있으실 것 같습니다. 나는 당신의 고문을 집으로 데려가 이번 주말에 코드를 읽고 내 라이브 계정 거래 .01 랏에 설정할 것입니다. 그것이 작동하는지 여부를 알 수 있는 유일한 방법입니다. 코드를 공유해 주셔서 감사합니다!
포함 파일...
//| 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
//+----------------increase lots variables-----+
double equity=0, ILots=0, LotIncreaseFactor=0.11;
//+------------------------------------------------------------------+
//| 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-----------------+
//+----TradeWave code-----lot sizing calculated from previous trade---------------+
//+----adjusts lot size for current position based on the previous trade being a winner or loser
double IncreaseLots(double Lots)
{
equity = AccountEquity();
double PreviousEquity = GetPastEquity(1);
if( PreviousEquity != -1 && equity > PreviousEquity )//Manipulates lot size to maximize equity growth from multiple consecutive winning positions
{
// Print("first...ILots: ",ILots," Lots: ",Lots," AccountFreeMargin: ",AccountFreeMargin());
ILots = Lots;
Lots = NormalizeDouble(AccountFreeMargin()/(LotIncreaseFactor*1000/0.1),1);
if(Lots < 0.01) Lots = 0.01;
if(Lots > 99) Lots = 99;
// Print("second...ILots: ",ILots," Lots: ",Lots," AccountFreeMargin: ",AccountFreeMargin());
}
else
{
ILots = Lots;
}
//+--------lot adjustments if the last trade lost-------+
if( PreviousEquity != -1 && equity <= PreviousEquity )//Manipulates lot size to reduce equity drawdown from multiple consecutive losing positions
{
// // Print("Previous Loser TradeWave Equity=",equity," <= PreviousEquity=",PreviousEquity," Lots = ",Lots);
Lots = 0.01; //very effective at reducing drawdown but impacts gains negatively as well
// // Print("XXXXXXXXXXXx Equity=",equity," <= PreviousEquity=",PreviousEquity," Lots = ",Lots);
}
else
{
Lots = Lots;
}
return(Lots);
}
//+----end of TradeWave code-----lot sizing calculated from previous trade---------------+> MetaQuotes HelpDesk(Tatyana)는 다음과 같이 썼습니다.
> 안녕하세요 아라곤입니다.
>
> 늦어서 죄송합니다.
>
> 1. Recalculate 필드를 체크 해제하십시오.
> 문제는 "재계산" 옵션이 활성화된 전문가 테스트를 시작할 때마다 데이터가 새로 모델링된다는 것입니다.
> 이 순간에 새 견적이 이미 나왔기 때문에 이러한 새 견적을 기반으로 모델링된 데이터는 다를 것입니다.
충분히 좋은 답변이 아닌가요? 내 말은 누락된 데이터가 새 데이터를 사용할 수 있을 때마다 다르게 구성되거나 모델링된 경우 동일한 기간 동안 테스트를 실행하면 분명히 다른 결과가 나타납니다...
이것이 문제의 원인이 아니라고 생각하는 이유는 무엇입니까?
패트릭어떤 새로운 인용문이 역사에 남을 것인가? 새 견적은 가장 최근 날짜만 업데이트됩니다. 새 견적이 이전 데이터에 어떤 영향을 미칩니까?
이것이 답이라면 다시 질문은 "변경되지 않는 이전 데이터를 모델링하지 않는 이유는 무엇입니까? 왜 다르게 모델링합니까?"입니다.
아라곤, 방금 이 스레드 전체를 읽었습니다. 먼저, 이것을 고수하기 위한 소품을 제공해야 합니다. 약 1년 전, 나는 깨어 있는 모든 순간을 고문의 성배를 생각해내느라 바빴습니다. Fib 수준, 피벗 포인트, 확률론, MA 등... 두 가지 교훈을 얻었습니다. a) 전략 테스터는 시간 낭비입니다. b) 데모 계정은 실제 계정과 다르게 작동합니다. 백 테스팅에서 약 90% 정확도로 거래되는 일부 코드를 생각해낼 수 있었습니다. 데모 계정에서 75% 정도까지 떨어졌고 라이브로 시도했을 때 50% 미만이었습니다(적절한 자금 관리를 통해 여전히 사용할 수 있어야 함). 제 요점은 전략 테스터나 데모 계정에 최적화하려고 애쓰지 말라는 것입니다. 좋은 일이 있으실 것 같습니다. 나는 당신의 고문을 집으로 데려가 이번 주말에 코드를 읽고 내 라이브 계정 거래 .01 랏에 설정할 것입니다. 그것이 작동하는지 여부를 알 수 있는 유일한 방법입니다. 코드를 공유해 주셔서 감사합니다!
무엇을 찾았습니까?
Metatrader에서 계정을 어떻게 삭제합니까?
[편집하다]
그것을 발견.
네비게이터 - 계정 - 계정 위에 마우스를 놓은 후 마우스 오른쪽 버튼을 클릭하여 삭제합니다.