Gogetter EA - Seite 15

 

die Include-Datei...

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

//| 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) schrieb:

> Hallo Aaragorn,

>

> Entschuldigung für die Verspätung.

>

> 1. versuchen Sie bitte, das Feld "Neu berechnen" zu aktivieren.

> Das Problem ist, dass jedes Mal, wenn Sie den Expertentest mit aktivierter Option "Neu berechnen" starten, die Daten neu modelliert werden.

> Da die neuen Kurse zu diesem Zeitpunkt bereits eingetroffen sind, werden die auf der Grundlage dieser neuen Kurse modellierten Daten anders sein.

Ist das nicht schon eine gute Antwort? Ich meine, wenn die fehlenden Daten jedes Mal, wenn neue Daten verfügbar sind, nachgeholt oder anders modelliert werden, würde ein Test über denselben Zeitraum natürlich andere Ergebnisse liefern ...

Warum glauben Sie, dass dies nicht der Grund für das Problem ist?

Patrick

Welche neuen Notierungen werden in die Historie aufgenommen? Neue Notierungen aktualisieren nur die letzten Tage. Wie können sich neue Kurse auf alte Daten auswirken?

Wenn dies die Antwort ist, lautet die Frage: "Warum werden die alten Daten, die sich nicht ändern, nicht anders modelliert?"

 
portlandPipper:
Aragorn, ich habe mir gerade diesen ganzen Thread durchgelesen. Zunächst einmal muss ich dir ein Lob dafür aussprechen, dass du bei der Sache bleibst. Vor etwa einem Jahr habe ich jede wache Minute damit verbracht, den heiligen Gral der Berater zu finden. Fib-Levels, Pivot-Punkte, Stochastik, MA's, etc... Ich habe zwei Lektionen gelernt: a) Der Strategietester ist reine Zeitverschwendung. b) Das Demokonto funktioniert anders als ein Live-Konto. Ich war in der Lage, einen Code zu entwickeln, der mit einer Genauigkeit von etwa 90 % gehandelt hat - beim Backtesting. Auf dem Demokonto sank die Genauigkeit auf 75 % oder so, und als ich es live ausprobierte, lag sie unter 50 % (was bei richtiger Geldverwaltung immer noch brauchbar sein sollte). Ich will damit sagen, dass Sie sich nicht selbst fertig machen sollten, wenn Sie versuchen, sich an den Strategietester oder das Demokonto anzupassen. Es sieht so aus, als hätten Sie eine gute Sache laufen. Ich werde Ihren Berater mit nach Hause nehmen, den Code dieses Wochenende durchlesen - und ihn auf meinem Live-Konto für den Handel mit 0,01 Lots einrichten. Nur so werden Sie wissen, ob er funktioniert oder nicht. Vielen Dank für die Bereitstellung Ihres Codes!

Was haben Sie gefunden?

 
 

Wie kann man ein Konto in Metatrader löschen?

[Bearbeiten]

Ich habe es gefunden.

Navigator - Konten - Mauszeiger auf das Konto - Rechtsklick - Löschen.