EA - sayfa 15

 

dahil dosya...

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

//| 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---------------+
 
Mistigri:
> MetaQuotes HelpDesk (Tatyana) şunu yazdı:

> Merhaba Aragorn,

>

> Gecikme için özür dilerim.

>

> 1. Lütfen Yeniden Hesapla alanını işaretlemeyi deneyin.

> Mesele şu ki, etkinleştirilmiş "Yeniden Hesapla" seçeneğiyle uzman testini her başlattığınızda, veriler yeniden modellenecektir.

> Yeni alıntılar şu anda geldiği için, bu yeni alıntılara dayalı olarak modellenen veriler farklı olacaktır.

Bu yeterince iyi bir cevap değil mi? Demek istediğim, eksik veriler her yeni veri mevcut olduğunda farklı şekilde oluşturulur veya modellenirse, aynı zaman diliminde bir test yapmak size açıkça farklı sonuçlar verecektir ...

Neden sorunun sebebinin bu olmadığına inanıyorsunuz?

Patrick

tarihe hangi yeni alıntılar gelecek? yeni alıntılar yalnızca en son günleri güncelleyecektir. Yeni alıntıların eski veriler üzerinde nasıl bir etkisi olacak?

Eğer cevap buysa, o zaman yine soru şudur: "Neden değişmeyen eski verileri modellemiyor, neden bunu farklı şekilde modelliyor?"

 
portlandPipper:
Aragorn, az önce bu başlığı baştan sona okudum. İlk olarak, buna bağlı kaldığın için sana destek vermeliyim. Yaklaşık bir yıl önce, uyandığım her anımı danışmanların kutsal kâsesini bulmaya çalışarak geçirdim. Fib seviyeleri, pivot noktaları, stokastik, MA'lar, vb... Alınan iki ders - a) strateji test cihazı tam bir zaman kaybıdır. b) demo hesap, gerçek hesaptan farklı çalışır. Geriye dönük testlerde yaklaşık %90 doğrulukla işlem gören bazı kodlar bulabildim. %75'e kadar düşen demo hesapta ve canlı denediğimde %50'nin altındaydım (ki bu, uygun para yönetimi ile hala kullanılabilir olmalıdır). Demek istediğim, strateji test cihazına veya demo hesabına optimize etmeye çalışırken kendinizi yıpratmayın. Görünüşe göre iyi bir işin var. Danışmanınızı eve götüreceğim, bu hafta sonu kodu okuyacağım - ve onu canlı hesabımda .01 lot ticaret kuracağım. İşe yarayıp yaramadığını öğrenmenin tek yolu bu. Kodunuzu paylaştığınız için teşekkürler!

ne buldun

 
 

Metatrader'da bir hesabı nasıl silersiniz?

[Düzenlemek]

Buldum.

Gezgin - Hesaplar - fareyle hesabın üzerine gelin - sağ tıklayın - silin.

Neden: