Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Expert-Advisors (http://www.expert-advisor.com/forum/forumdisplay.php?f=25)
-   -   EA Milestone 5.2 gesucht (http://www.expert-advisor.com/forum/showthread.php?t=4189)

oschi4711 31.03.15 17:14

EA Milestone 5.2 gesucht
 
Hallo,
ich suche einen EA namens "Milestone5.2". Der sieht recht vielversprechend aus.
Im Internet gibt es eine Adresse (MQL5), wo man ine ZIP mit div. Versionen runterziehen kann. Die 5.2 ist nicht dabei. Ansonsten habe ich noch eine Adresse gefunden, den EA heruntergeladen und entpackt. (In das Verzeichnis "experts". Im Metatrader unter "Experts" erscheint dieser EA dann aber nicht. Ist die Datei kaputt. Kann ich evtl. eine andere Metatrader Version versuchen (Build)?
Oder hat diesen EA jemand zufällig und kann Ihn mir übersenden, oder hier zum download reinstellen. Der EA ist natürlich frei und kostenlos....

Vielen Dank für die Hilfe.

Gruß
Oschi

aureleus 31.03.15 20:16

die Installationsroutine bzw. Installationsort hat sich mit Build 600 des Metatraders geändert, in älteren EAs werden diese nicht berücksichtigt.

die 5.2er gibt es hier:
15# Milestone EA - Forex Strategies - Forex Resources - Forex Trading-free forex trading signals and FX Forecast

version 5.2 unterscheidet sich nur dadurch, dass du nur Eur/Usd M5 handeln kannst bzw. darauf optimiert wurde...jedenfalls steht das so auf der Site;-)

zum installieren:
in Metatrader 4 / Datei / Datei Folder öffnen/ und da reinkopieren

dann läuft er

oschi4711 31.03.15 21:07

hi,
vielen Dank für Deine Hilfe, es funzt !!
LG
Oschi

aureleus 04.04.15 21:31

ich spiel da grad mal mit dem milestone 5.2 rum, kann mir mal einer erklären wie der den SL händelt.....
die Verluste laufen ins Nirvana und plätten jeden Testlauf..

Code:

#property copyright "trevone"
#property link "Milestone 5.1 EURUSD 5min" 
#define MAGIC 20130719
bool NewSession=true;
bool CloseAll=false;
extern bool ContinueTrading=true;
bool AccumulateMiles=true;
double IncrementLimits=1.5;
double AccountLimit=3;
double AccountReserve=2;
double MarginUsage=0.001;
double MinMarginLevel=300;
int MaxStartTrades=1;
int OpenProfitTrades=3;
int MaxBasketTrades=30;
int TradesPerStop=1;
int QueryHistory=5;
double TradeSpace=1.8;
double MinProfit=2.4;
double BasketProfit=0.35;
double OpenProfit=0.85;
double DrawDownProfit=0.35;
int ATRPeriod=7;
int ATRShiftCheck=1;
double ADXMain=10;
int ADXPeriod=14;
int ADXShiftCheck=1;
int MAPeriod=9;
int MAShiftCheck=3;

double slippage, marginRequirement, lotSize, totalHistoryProfit, totalHistoryLoss, maxBasketDrawDown, totalProfit, totalLoss, symbolHistory,
eATR, eATRPrev, eADXMain, eADXPlusDi, eADXMinusDi, eADXMainPrev, eADXPlusDiPrev, eADXMinusDiPrev, MA3Cur, MA3Prev;

int digits, totalTrades, totalBackupTrades;

int ATRTimeFrame = 0;
int ATRShift = 0;
int ADXTimeFrame = 0;
int ADXShift = 0;
int MATimeFrame = 0; 
int MMAShift = 0;
int MAShift = 0;
int stopTrades = 0;
bool BackupSystem = true;
bool nearLongPosition = false;
bool nearShortPosition = false; 
bool rangingMarket = false;
bool bullish = false;
bool bearish = false;
bool incrementLimits = false;
int totalHistory = 100;
int basketNumber = 0;
int basketNumberType = -1;
int basketCount = -1;
double buyLots = 0;
double sellLots = 0;
double pipPoints = 0.00010;
double fractalUpPrice = 0;
double fractalDownPrice = 0;
double milestoneCount = 0;
double milestoneEquity = 0;
double milestoneBalance = 0;
double nextMilestone = 0;
double prevMilestone = 0;
double accumulatedEquity = 0;
double mileEquity = 0;
double DynamicSlippage = 1; 
double BaseLotSize = 0.01;
double accountLimit = 0;
double accountReserve = 0;
double marginLevel = 0;

string display = "\n";

int init(){ 
  maxBasketDrawDown = 0;
  accountLimit = AccountEquity() * AccountLimit;
  accountReserve = AccountEquity() * AccountReserve;
  if( !NewSession ){
      readMilestone();
      if( AccountFreeMargin() - accumulatedEquity < 0 ) defaultMilestone();
  } else {
      defaultMilestone();
      writeMilestone();
  }
  prepare();
  return( 0 );
}

void defaultMilestone(){
  nextMilestone = AccountEquity() + accountLimit;
  prevMilestone = AccountEquity();
  accumulatedEquity = 0;
}

void writeMilestone(){
  int handle = FileOpen( MAGIC + "_milestone.csv", FILE_CSV|FILE_WRITE, ';' );
  if( handle > 0 ) {
      FileWrite( handle, nextMilestone, prevMilestone, accumulatedEquity, milestoneCount );
      FileClose( handle );
  }
}

void readMilestone(){
  string strNextMilestone, strPrevMilestone, strAccumulatedEquity, strMilestoneCount;
  double valNextMilestone, valPrevMilestone, valAccumulatedEquity, valMilestoneCount;
  int handle = FileOpen( MAGIC + "_milestone.csv", FILE_CSV | FILE_READ );
  if( handle > 0 ) {
      strNextMilestone = FileReadString( handle );
      valNextMilestone = StrToDouble( strNextMilestone );
      strPrevMilestone = FileReadString( handle );
      valPrevMilestone = StrToDouble( strPrevMilestone );
      strAccumulatedEquity = FileReadString( handle );
      valAccumulatedEquity = StrToDouble( strAccumulatedEquity );
      strMilestoneCount = FileReadString( handle );
      valMilestoneCount = StrToDouble( strMilestoneCount );
      nextMilestone = valNextMilestone;
      prevMilestone = valPrevMilestone;
      accumulatedEquity = valAccumulatedEquity;
      milestoneCount = valMilestoneCount;
      FileClose( handle );
  } else {
      nextMilestone = AccountEquity() + accountLimit;
      prevMilestone = AccountEquity();
      accumulatedEquity = 0;
      milestoneCount = 0;
  }
}

double marginCalculate( string symbol, double volume ){
  return ( MarketInfo( symbol, MODE_MARGINREQUIRED ) * volume ) ;
}

void lotSize(){
  slippage = NormalizeDouble( ( eATR / pipPoints ) * DynamicSlippage, 1 );
  marginRequirement = marginCalculate( Symbol(), BaseLotSize );
  lotSize = NormalizeDouble( ( ( AccountFreeMargin() - accumulatedEquity ) * MarginUsage / marginRequirement ) * BaseLotSize, 2 ) ;
  if( lotSize < 0.01 ) lotSize = 0.01;
}

void setPipPoint(){
  digits = MarketInfo( Symbol(), MODE_DIGITS );
  if( digits == 3 ) pipPoints = 0.010;
  else if( digits == 5 ) pipPoints = 0.00010;
}

void closeAll( string type = "none" ){
  for( int i = 0; i < OrdersTotal(); i++ ) {
  if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false ) break;
      if( OrderSymbol() == Symbol() ){
        RefreshRates();
        if( ( OrderStopLoss() == 0 && OrderProfit() > 0 && type == "profits" ) || type == "none" ){
            if( OrderProfit() > 0 ) stopTrades = stopTrades + 1;
            if( OrderType() == OP_BUY ) OrderClose( OrderTicket(), OrderLots(), Bid, slippage );
            if( OrderType() == OP_SELL ) OrderClose( OrderTicket(), OrderLots(), Ask, slippage );
        }
      }
  }
}

void closeLargestLoss(){
  int closeTicket = 0;
  double closeLots = 0;
  double closeType = 0;
  double closeProfit = -999999999; 
  for( int i = 0 ; i < OrdersTotal() ; i++ ) {
      if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false ) break;
      if( OrderSymbol() == Symbol() ){ 
        if( OrderProfit() > closeProfit ) {
            closeProfit = OrderProfit();
            closeTicket = OrderTicket();
            closeLots = OrderLots();
            closeType = OrderType(); 
        }
      }
  } 
  if( closeTicket > 0 && stopTrades >= TradesPerStop ){
      if( closeType == OP_BUY ) OrderClose( closeTicket, closeLots, Bid, slippage );
      if( closeType == OP_SELL ) OrderClose( closeTicket, closeLots, Ask, slippage );
      stopTrades = 0;
  }
}

void prepareHistory(){
  symbolHistory = 0;
  totalHistoryProfit = 0;
  totalHistoryLoss = 0;
  for( int iPos = OrdersHistoryTotal() - 1; iPos > ( OrdersHistoryTotal() - 1 ) - totalHistory; iPos-- ){
      OrderSelect( iPos, SELECT_BY_POS, MODE_HISTORY ) ;
      double QueryHistoryDouble = ( double ) QueryHistory;
      if( symbolHistory >= QueryHistoryDouble ) break;
      if( OrderSymbol() == Symbol() ){
        totalHistoryProfit = totalHistoryProfit + OrderProfit() ;
        symbolHistory = symbolHistory + 1 ;
        if( OrderProfit() < 0 ) totalHistoryLoss = totalHistoryLoss + OrderProfit() ;
      }
  }
}

void prepareTrend(){
  if( eADXMain < ADXMain ) {
      rangingMarket = true;
      bullish = false;
      bearish = false;
  } else {
      rangingMarket = false;
      if( eADXPlusDi > eADXMinusDi ){
        bullish = true;
        bearish = false;
      } else if( eADXMinusDi > eADXPlusDi ){
        bullish = false;
        bearish = true;
      }
  }
}

void preparePositions() {
  nearLongPosition = false;
  nearShortPosition = false;
  totalTrades = 0;
  totalBackupTrades = 0;
  totalProfit = 0;
  totalLoss = 0;
  buyLots = 0;
  sellLots = 0;
  for( int i = 0 ; i < OrdersTotal() ; i++ ) {
      if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false ) break;
      if( OrderSymbol() == Symbol() ) totalTrades = totalTrades + 1;
      if( OrderSymbol() == Symbol() && OrderStopLoss() == 0 ) {
        if( OrderType() == OP_BUY && MathAbs( OrderOpenPrice() - Ask ) < eATR * TradeSpace ) nearLongPosition = true ;
        else if( OrderType() == OP_SELL && MathAbs( OrderOpenPrice() - Bid ) < eATR * TradeSpace ) nearShortPosition = true ;
        if( OrderType() == OP_BUY ) buyLots = buyLots + OrderLots();
        else if( OrderType() == OP_SELL ) sellLots = sellLots + OrderLots();
        if( OrderProfit() > 0 ) totalProfit = totalProfit + OrderProfit();
        else totalLoss = totalLoss + OrderProfit(); 
      }
  }
  if( totalTrades == 0 ) maxBasketDrawDown = 0;
  if( maxBasketDrawDown > totalLoss ) maxBasketDrawDown = totalLoss;
  if( AccountMargin() > 0 ) marginLevel = AccountEquity() / AccountMargin() * 100  ;
  else marginLevel = 0 ;
}

void prepareIndicators(){
  eATR = iATR( NULL, ATRTimeFrame, ATRPeriod, ATRShift );
  eATRPrev = iATR( NULL, ATRTimeFrame, ATRPeriod, ATRShift + ATRShiftCheck );
  eADXMain = iADX( NULL, ADXTimeFrame, ADXPeriod, PRICE_MEDIAN, MODE_MAIN, ADXShift );
  eADXPlusDi = iADX( NULL, ADXTimeFrame, ADXPeriod, PRICE_MEDIAN, MODE_PLUSDI, ADXShift ); 
  eADXMinusDi = iADX( NULL, ADXTimeFrame, ADXPeriod, PRICE_MEDIAN, MODE_MINUSDI, ADXShift );   
  eADXMainPrev = iADX( NULL, ADXTimeFrame, ADXPeriod, PRICE_MEDIAN, MODE_MAIN, ADXShift + ADXShiftCheck );
  eADXPlusDiPrev = iADX( NULL, ADXTimeFrame, ADXPeriod, PRICE_MEDIAN, MODE_PLUSDI, ADXShift + ADXShiftCheck ); 
  eADXMinusDiPrev = iADX( NULL, ADXTimeFrame, ADXPeriod, PRICE_MEDIAN, MODE_MINUSDI, ADXShift + ADXShiftCheck );
  MA3Cur = iMA( NULL, MATimeFrame, MAPeriod, MMAShift, MODE_SMMA, PRICE_MEDIAN, MAShift ); 
  MA3Prev = iMA( NULL, MATimeFrame, MAPeriod, MMAShift, MODE_SMMA, PRICE_MEDIAN, MAShift + MAShiftCheck );
}

void prepareFractals(){
  fractalUpPrice = 0 ;
  fractalDownPrice = 0; 
  bool iUp = false;
  bool iDn = false;
  for( int i = 0; i < totalHistory; i++ ){
      double ifractalUp = iFractals( NULL, 0, MODE_UPPER, i );
      double ifractalDown = iFractals( NULL, 0, MODE_LOWER, i );
      if( ifractalUp > 0 && Open[i] > Open[0] ){
        iUp = true;
        if( Open[i] > Close[i] ) fractalUpPrice = Open[i];
        else fractalUpPrice = Close[i];
      }
      if( ifractalDown > 0 && Open[i] < Open[0] ){
        iDn = true;
        if( Open[i] < Close[i] ) fractalDownPrice = Open[i];
        else fractalDownPrice = Close[i]; 
      }
      if( iUp && iDn ) break;
  }
}

void prepareMilestone(){ 
  mileEquity = AccountEquity() - accumulatedEquity;
  if( AccountEquity() > nextMilestone && totalTrades == 0 ) {
      if( AccumulateMiles ){
        prevMilestone = nextMilestone;
        nextMilestone = AccountEquity() + ( accountLimit - accountReserve );
        accumulatedEquity = prevMilestone - ( accountLimit - accountReserve );
        milestoneCount = milestoneCount + 1;
        incrementLimits = true;
        writeMilestone();
      } else ContinueTrading = false;
  } else ContinueTrading = true;
}

void prepare(){
  prepareIndicators();
  prepareFractals();
  prepareTrend();
  setPipPoint();
  prepareHistory();
  preparePositions();
  prepareMilestone();
  lotSize(); 
  update(); 
}

void openPosition(){
  if( AccountFreeMargin() - accumulatedEquity > 0 ){
      if( eATR > eATRPrev ){
        double tlots = NormalizeDouble( lotSize * ( ( MaxBasketTrades - basketCount ) / MaxBasketTrades ), 2 );
        if( !nearLongPosition && bullish && sellLots == 0 ) {
            if( basketNumberType != OP_BUY ) basketCount = 0;
            if( totalTrades < MaxBasketTrades ){
              if( AccountFreeMarginCheck( Symbol(), OP_BUY, lotSize ) <= 0 || GetLastError() == 134 ) return;
              OrderSend( Symbol(), OP_BUY, lotSize, Ask, slippage, 0, 0, "basketNumber" + DoubleToStr( basketNumber, 0 ), MAGIC ) ;
              basketCount = basketCount + 1;
              if( basketNumberType != OP_BUY ) basketNumber = basketNumber + 1;
              basketNumberType = OP_BUY;
              if( totalTrades == 0 && milestoneCount > 0 && incrementLimits ){
                  accountLimit = accountLimit * IncrementLimits;
                  accountReserve = accountReserve * IncrementLimits;
                  incrementLimits = false;
              }
            }
        } else if( !nearShortPosition && bearish && buyLots == 0 ) {
            if( basketNumberType != OP_SELL ) basketCount = 0;
            if( totalTrades < MaxBasketTrades ){
              if( AccountFreeMarginCheck( Symbol(), OP_SELL, lotSize ) <= 0 || GetLastError() == 134 ) return;
              OrderSend( Symbol(), OP_SELL, lotSize, Bid, slippage, 0, 0, "basketNumber" + DoubleToStr( basketNumber, 0 ), MAGIC ) ;
              basketCount = basketCount + 1;
              if( basketNumberType != OP_SELL ) basketNumber = basketNumber + 1;
              basketNumberType = OP_SELL;
              if( totalTrades == 0 && milestoneCount > 0 && incrementLimits ){
                  accountLimit = accountLimit * IncrementLimits;
                  accountReserve = accountReserve * IncrementLimits;
                  incrementLimits = false;
              }
            }
        }
      }
  }
}

void backupSystem(){
  if( AccountFreeMargin() - accumulatedEquity > 0 ){ 
      if( ( ContinueTrading || ( !ContinueTrading && totalBackupTrades > 0 ) ) && ( totalTrades < MaxBasketTrades ) ) {
        int type = -1;
        if( rangingMarket ){
            if( Close[0] >= fractalUpPrice && Close[0] >= MA3Cur ) type = OP_BUY;
            else if( Close[0] <= fractalDownPrice && Close[0] <= MA3Cur ) type = OP_SELL;
        } else {
            if( Close[0] >= fractalUpPrice && Close[0] >= MA3Cur ) type = OP_SELL;
            else if( Close[0] <= fractalDownPrice && Close[0] <= MA3Cur ) type = OP_BUY;
        }
        if( !nearLongPosition && type == OP_BUY && sellLots == 0  &&  bullish) {
            if( AccountFreeMarginCheck( Symbol(), OP_BUY, lotSize ) <= 0 || GetLastError() == 134 ) return;
            OrderSend( Symbol(), type, lotSize, Ask, slippage, 0, 0, "backup", MAGIC ) ;
        } else if( !nearShortPosition && type == OP_SELL && buyLots == 0  && bearish  ) {
            if( AccountFreeMarginCheck( Symbol(), OP_SELL, lotSize ) <= 0 || GetLastError() == 134 ) return;
            OrderSend( Symbol(), type, lotSize, Bid, slippage, 0, 0, "backup", MAGIC ) ;
        }
      }
    }
}

void managePositions(){
  if( marginLevel > 0 && marginLevel < MinMarginLevel ) closeLargestLoss();
  else if( totalHistoryLoss < 0 && totalProfit > MathAbs( totalHistoryLoss ) * BasketProfit ) closeAll( "profits" );
  else if( totalTrades > 1 && totalTrades <= OpenProfitTrades && totalProfit > MathAbs( maxBasketDrawDown ) * DrawDownProfit ) closeAll();
  else if( totalTrades > OpenProfitTrades && totalProfit > MathAbs( totalLoss ) * OpenProfit ) closeAll();
  else if( totalTrades > 0 && totalTrades <= MaxStartTrades && totalProfit > 0 && ( bullish && basketNumberType == OP_SELL ) || ( bearish && basketNumberType == OP_BUY ) ) closeAll();
  else {
      for( int i = 0; i < OrdersTotal(); i++ ) {
        if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false ) break; 
        if( OrderSymbol() == Symbol()  ) { 
            if( totalTrades <= MaxStartTrades ){
              if( OrderType() == OP_BUY && Bid > OrderOpenPrice() &&  MathAbs( Bid - OrderOpenPrice() ) > MinProfit * eATR )
                  OrderClose( OrderTicket(), OrderLots(), Bid, slippage );
              else if( OrderType() == OP_SELL && Ask < OrderOpenPrice() && MathAbs( OrderOpenPrice() - Ask ) > MinProfit * eATR )
                  OrderClose( OrderTicket(), OrderLots(), Ask, slippage ); 
            }
        } 
      }
  }
}

void update(){
  display = ""; 
  display = display + " Leverage: " + DoubleToStr( AccountLeverage(), 0 );
  display = display + " Open: " + DoubleToStr( totalTrades, 0 ); 
  display = display + " Milestones: " + DoubleToStr( milestoneCount, 0 ); 
  display = display + " Next: " + DoubleToStr( nextMilestone, 0 );
  display = display + " Equity: " + DoubleToStr( AccountEquity(), 2 );
  display = display + " Accumulated: " + DoubleToStr( accumulatedEquity, 2 ); 
  display = display + " MileEquity: " + DoubleToStr( mileEquity, 2 );
  display = display + " Profit: " + DoubleToStr( totalProfit, 2 );
  display = display + " Loss: " + DoubleToStr( totalLoss, 2 ); 
  display = display + " HistoryLoss: " + DoubleToStr( totalHistoryLoss, 2 );
  display = display + " maxBasketDrawDown: " + DoubleToStr( maxBasketDrawDown, 2 );
  display = display + " marginLevel: " + DoubleToStr( marginLevel, 2 );
  display = display + " stopTrades: " + DoubleToStr( stopTrades, 0 ); 
  Comment( display );
 
}

int start() {
  prepare() ; 
  if( CloseAll ) closeAll() ;
  else {
      if( BackupSystem && totalTrades >= MaxStartTrades ) backupSystem();
      else if( ( ContinueTrading || ( !ContinueTrading && totalTrades > 0 ) ) && ( totalTrades < MaxStartTrades || MaxStartTrades == 0 ) ) openPosition();     
      managePositions() ;
  }
  return( 0 ) ;
}



Alle Zeitangaben in WEZ +2. Es ist jetzt 21:00 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum