Inhalte aufrufen

  • Über WindowsLive anmelden Log In with Google Anmelden
  • Mitglied werden
Profilbild

EMA Crossover alert gesucht

- - - - -

  • Du kannst leider keine neuen Themen eröffnen
  • Please log in to reply
27 Antworten zu diesem Thema

  #1
OFFLINE   Tigerchen

Hallo Ihr Lieben!

Ich suche einen Indi mit visual und sound alarm wenn ein EMA 2 andere kreuzt. Ich finde nur Indis, bei denen man die Kreuzung von 2 EMAs einstellen kann. Ich brauche aber die Kreuzung von 3 EMAs.

Vll. kann mir jemand weiter helfen.

Liebe Grüße
Steffi

  #2
OFFLINE   frlaspina

Hallo Tigerchen,

ein cross von 2 emas ist mit bekannt, aber ein cross von 3 ?

Ich habe zwar keine Erfahrung mit cross von 3 emas, aber, ist es nicht zu selten oder sogar niemals daß 3 emas mit verschiedene Parameter sich kreuzen?

Ciao,
frlaspina
Klingt doof aber es ist so: Steigt der Kurs dann steigt er, fällt der Kurs dann fällt er! (Meine) Dow Theorie
"Fragen zum Trading System Development - PN an mich!"

  #3
OFFLINE   raffi


Hallo Steffi

Leider habe ich kein solchen Indi.
Könntest Du mir sagen, wie deine Erfahrungen mit dem Indi EMA 2 sind?

Ich denke ein Expert Advisor auf dieser Basis hätte noch Potenzial, hat jemand Erfahrung damit? Oder MACD?

Liebe Grüsse, Raffi

  #4
OFFLINE   Icemaan

Hallo Steffi

hab hier was für Dich

Gruss Icemaan

Dateianhang


Eingefügtes Bild

  #5
OFFLINE   ScalpingMan

Hi,

ohne etwas konkret zu dem gesuchten (E)MA-Indikator beizutragen:
Bei mehr als 2 MAs dienen die übrigen MAs normalerweise dazu, das Signal der Kreuzung zu bestätigen (je nach dem Long oder Short). Eine Kreuzung von 3 MAs findet praktisch (fast) nie in einem einzigen Punkt gleichzeitig statt.

Viele Grüße
Scalping Man


  #6
OFFLINE   Tigerchen

:D Super! Herzlichen Dank für den Indi und die ganzen Beiträge. Hat mich sehr gefreut, hier im Forum ist ja richtig was los. Ich habe mal einen screenshot von meinem chart gemacht, vll. wird es dann klarer, was die Idee dahinter ist.

Liebe Grüße
Steffi

Dateianhang



  #7
OFFLINE   DaBuschi

:D Super! Herzlichen Dank für den Indi und die ganzen Beiträge. Hat mich sehr gefreut, hier im Forum ist ja richtig was los. Ich habe mal einen screenshot von meinem chart gemacht, vll. wird es dann klarer, was die Idee dahinter ist.

Liebe Grüße
Steffi


Hallo Steffi,

würde mich freuen, wenn Du Deinen Ansatz mal näher vorstellen würdest. Ist Dein Einstiegssignal für long auch Dein Ausstiegssignal für short oder gibts für Deine Ausstiege andere Regeln. Welche konkreten Einstiegsregeln gibt es? Ist für Dich nur die Kreuzung der MAs wichtig oder benutzt Du auch andere Filterkriterien?

Viele Grüße
DaBuschi
Ein erfolgreicher Trader weiß nicht, was passieren wird. Aber er weiß zu jeder Zeit, was er tun muss.

  #8
OFFLINE   Tigerchen

Grüße Dich DaBuschi,

also ich bin gerade am Testen, was am Besten ist.

benötigt werden: EMA 20, EMA 5, EMA 10, EMA 15
TF: H1, M5, H4

Entry:
- Es wird in die Richtung von H4 getradet. Sind die Kerzen über EMA 20 nur LONG, unter EMA 20 nur SHORT.
- im H1 muß EMA 5 die EMA 10 und 15 kreuzen. Kreuzt sie von unten nach oben --> LONG, von oben nach unten SHORT, aber immer in Richtung von H4.
- wenn die Signale in H4 und H1 passen, steige ich im M5 nach den Bollinger Bändern ein.

SL: für SHORT oberes Bollinger Band, für LONG unteres Bollinger Band.

TP: Da bin ich gerade am Testen, was besser ist.

Variante a) Wenn sich die EMAs in H1 in die Gegenrichtung schneiden.
Variante b) Stochastic 5,3,3
Variante C) Parabolic SAR mit Standard-Werten

Ich hoffe, das war einigermaßen verständlich. Habe im Demo schon beachtliche Profite erzielen können, wenig Fehltrades, habe aber noch keine Statistik.

Viel Spaß!

Steffi

  #9
OFFLINE   Sasch

@Icemaan: Danke für den Indikator, sowas hatte ich gesucht:welldone:

Aber leider:'( gibt der Indi. im fortlaufenden Chart viel zu viele Signale (Bild 1). Nur wenn ich den Indi. neu reinziehe oder einmal in die Settings rein und wieder raus gehe, wird er in diesem Moment korrekt dargestellt (Bild 2). Wisst ihr woran das liegt??

Liebe Grüße Sasch

Dateianhang


Von nichts kommt nichts

  #10
OFFLINE   Dabo

ok, den gibt es schon. Genau so gibt es den 3 ema cross als Ea. Aber lasst lieber die finger davon. Oder ihr benutzt den wann ihr ihn wollt. Bitte nicht immer laufen lassen. Da ich neu hier bin, weiss ich leider nicht ob ich den hier hochladen kann oder auch darf. Werde montag mochmal kurz hier reinschauen. Der cross ema kann gewünscht eingestellt werden. Das mit den kreuzung ist klar, die kommen nicht alle aufeinmal. Kreuzung der zwei höhere durchschnitte--> kleiner korrektur --> der kleinste durschnitt kreuzt durch beide hindurch.
KostenPunkt--> Gratis;)

mini.jpg


  #11
OFFLINE   Divecall

@Dabo: Solange es kein Urheberrechtlich geschützes Produkt (EA) ist, darfst Du ihn hochladen. Kostet das Teil Geld, dann nicht - ist es wirklich kostenlos: nur her damit.
Du möchtest Dich in der Forexfabrik verewigen? Evtl. sogar als ...
gastautor
Zuletzt aktualisiert Datum: 27.02.2015 - 23:49 Uhr


  #12
OFFLINE   frlaspina

- im H1 muß EMA 5 die EMA 10 und 15 kreuzen.


Hallo Tigerchen,
mir ist der Handel mt EMA´s in der Programmierung geläufig, und programmiere gerade ein EA der u.A. auch die Lage der EMA´s bzw. SMA´s in versch. Zeitframes berücksichtigt.
Alles was du geschrieben hast ist mir klar, aber eines verstehe ich nicht, du schreibst im H1 muß die 5 die 10 und 15 kreuzen, aber so etwas geht nicht! ein GD kann nicht gleichzeitig 2 weitere verschiedene GD´s kreuzen.

Kann es vielleicht sein, daß du meinst der 5er soll den 10er kreuzen und der 10er soll über 15er sein oder so ähnlich?

Gruß,

frlaspina



Klingt doof aber es ist so: Steigt der Kurs dann steigt er, fällt der Kurs dann fällt er! (Meine) Dow Theorie
"Fragen zum Trading System Development - PN an mich!"

  #13
OFFLINE   TbT

@frlaspina

ich nehme mal an, tigerchen meint schon, dass beide gekreuzt werden sollen
innerhalb einer zeitlich definierten tolleranz

zB.: wenn er den 1. schneidet, schaun ob er innerhalb
der nächsten kerze den 2. schneidet ...

bitte um berichtigung falls anders gemeint tigerchen ;)
greeZ
Banker sind Leute die einem bei gutem Wetter einen Regenschirm leihen, ihn aber zurückfordern wenn das Wetter schlechter wird.

Mark Twain

  #14
OFFLINE   Tigerchen

HUHU!

Genau richtig TbT. Innerhalb von 2 Kerzen sollten beide Emas gekreuzt werden. Sprich die 5er(grün), soll die 10er und 15er (blau und gelb) kreuzen. Siehe Bild oben. Wenn es erst später ist, auch nicht schlimm, Hauptsache die Kreuzung ist da.

Liebe Grüße
Steffi

  #15
OFFLINE   frlaspina

Alles klar Danke ! :),

in computersprache bedeutet es somit (GD5>GD10 && GD5>GD15) zuzügl. weitere Bedingungen und in verschiedene Zeitframes usw.

Danke,
frlaspina




Klingt doof aber es ist so: Steigt der Kurs dann steigt er, fällt der Kurs dann fällt er! (Meine) Dow Theorie
"Fragen zum Trading System Development - PN an mich!"

  #16
OFFLINE   Dabo

ihr seit ja hier richtig schnell am verfassen, hoffe mal das bleibt so. bei manchen foren muss man ne woche warten warten bis man ne antwort kriegt:welldone:Naja für mich hat der ea nix gekostet aber copyririhgt ist drauf.
ok ich mach das o poste denn jetzt hier hoch, wenns strafbar ist kann der moderator es ja wieder löschen ;-)
OK hier in mq4 muss noch compiliert werden ;-)

-->

// einfach in mt4 eitor compilieren und fertig ;-)

#property copyright ""
#include <stdlib.mqh>

extern int MagicNumber = 3333;

extern bool AccountIsMini = false;// Change to true if trading mini account
extern bool MoneyManagement = false;// Change to false to shutdown money management controls.
// Lots = 1 will be in effect and only 1 lot will be open regardless of equity.
extern double TradeSizePercent = 5;// Change to whatever percent of equity you wish to risk.
extern double Lots = 10;// standard lot size.
extern double MaxLots = 100;
//+---------------------------------------------------+
//|Indicator Variables|
//| Change these to try your own system|
//| or add more if you like|
//+---------------------------------------------------+
extern int FastMA_Mode = 0; //0=sma, 1=ema, 2=smma, 3=lwma , 4=LSMA
extern int FastMA_Period =9;
extern int FastMA_Shift = 0;
extern int FastMA_AppliedPrice = 0;// 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
extern int MiddleMA_Mode = 0; //0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA
extern int MiddleMA_Period =14;
extern int MiddleMA_Shift = 0;
extern int MiddleMA_AppliedPrice = 0;// 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
extern int SlowMA_Mode = 0; //0=sma, 1=ema, 2=smma, 3=lwma, 4=LSMA
extern int SlowMA_Period =29;
extern int SlowMA_Shift = 0;
extern int SlowMA_AppliedPrice = 0;// 0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)), 5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)
extern int Fast_MiddleSpread=0;
extern int Middle_SlowSpread=0;
extern int SignalCandle=1;// Which candle to use for signal - 0 for current, 1 for prior
//+---------------------------------------------------+
//|Money Management|
//+---------------------------------------------------+
extern double StopLoss = 0;// Maximum pips willing to lose per position.
extern bool UseTrailingStop = false;
extern int TrailingStopType = 3;// Type 1 moves stop immediately, Type 2 waits til value of TS is reached
extern double TrailingStop = 40;// Change to whatever number of pips you wish to trail your position with.
extern double TRStopLevel_1 = 20;// Type 3first level pip gain
extern double TrailingStop1 = 20;// Move Stop to Breakeven
extern double TRStopLevel_2 = 30;// Type 3 second level pip gain
extern double TrailingStop2 = 20;// Move stop to lock is profit
extern double TRStopLevel_3 = 50;// type 3 third level pip gain
extern double TrailingStop3 = 20;// Move stop and trail from there
extern int TakeProfit = 0;// Maximum profit level achieved.
extern double Margincutoff = 800;// Expert will stop trading if equity level decreases to that level.
extern int Slippage = 10;// Possible fix for not getting closed


//+---------------------------------------------------+
//|General controls|
//+---------------------------------------------------+
string setup;
double lotMM;
int TradesInThisSymbol;

//+------------------------------------------------------------------+
//| expert initialization function|
//+------------------------------------------------------------------+
int init()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function|
//+------------------------------------------------------------------+
int deinit()
{
}

//+------------------------------------------------------------------------+
//| LSMA - Least Squares Moving Average function calculation|
//| LSMA_In_Color Indicator plots the end of the linear regression line|
//| Modified to use any timeframe|
//+------------------------------------------------------------------------+

double LSMA(int Rperiod,int prMode, int TimeFrame, int mshift)
{
int i;
double sum, price;
int length;
double lengthvar;
double tmp;
double wt;

length = Rperiod;

sum = 0;
for(i = length; i >= 1; i--)
{
lengthvar = length + 1;
lengthvar /= 3;
tmp = 0;
switch (prMode)
{
case 0: price = iClose(NULL,TimeFrame,length-i+mshift);break;
case 1: price = iOpen(NULL,TimeFrame,length-i+mshift);break;
case 2: price = iHigh(NULL,TimeFrame,length-i+mshift);break;
case 3: price = iLow(NULL,TimeFrame,length-i+mshift);break;
case 4: price = (iHigh(NULL,TimeFrame,length-i+mshift) + iLow(NULL,TimeFrame,length-i+mshift))/2;break;
case 5: price = (iHigh(NULL,TimeFrame,length-i+mshift) + iLow(NULL,TimeFrame,length-i+mshift) + iClose(NULL,TimeFrame,length-i+mshift))/3;break;
case 6: price = (iHigh(NULL,TimeFrame,length-i+mshift) + iLow(NULL,TimeFrame,length-i+mshift) + iClose(NULL,TimeFrame,length-i+mshift) + iClose(NULL,TimeFrame,length-i+mshift))/4;break;
}
tmp = ( i - lengthvar)*price;
sum+=tmp;
}
wt = sum*6/(length*(length+1));

return(wt);
}
//+------------------------------------------------------------------+
//| CheckExitCondition|
//| Check if any exit condition is met|
//+------------------------------------------------------------------+
bool CheckExitCondition(string TradeType)
{
bool YesClose;
double fMA, mMA;

YesClose = false;
if (FastMA_Mode == 4)
{
fMA = LSMA(FastMA_Period,FastMA_AppliedPrice,0,SignalCandle);
}
else
{
fMA = iMA(NULL, 0, FastMA_Period, FastMA_Shift, FastMA_Mode, FastMA_AppliedPrice, SignalCandle);
}
if (MiddleMA_Mode == 4)
{
mMA = LSMA(SlowMA_Period,SlowMA_AppliedPrice,0,SignalCandle);
}
else
{
mMA = iMA(NULL, 0, MiddleMA_Period, MiddleMA_Shift, MiddleMA_Mode, MiddleMA_AppliedPrice, SignalCandle);
}
// Check for cross down
if (TradeType == "BUY" && fMA < mMA) YesClose = true;
// Check for cross up
if (TradeType == "SELL" && fMA > mMA) YesClose =true;

return (YesClose);
}

//+------------------------------------------------------------------+
//| CheckEntryCondition|
//| Check if entry condition is met|
//+------------------------------------------------------------------+
bool CheckEntryCondition(string TradeType)
{
bool YesTrade;
double fMA, mMA, sMA;

YesTrade = false;
if (FastMA_Mode == 4)
{
fMA = LSMA(FastMA_Period,FastMA_AppliedPrice,0,SignalCandle);
}
else
{
fMA = iMA(NULL, 0, FastMA_Period, FastMA_Shift, FastMA_Mode, FastMA_AppliedPrice, SignalCandle);
}
if (MiddleMA_Mode == 4)
{
mMA = LSMA(MiddleMA_Period,MiddleMA_AppliedPrice,0,SignalCandle);
}
else
{
mMA = iMA(NULL, 0, MiddleMA_Period, MiddleMA_Shift, MiddleMA_Mode, MiddleMA_AppliedPrice, SignalCandle);
}
if (SlowMA_Mode == 4)
{
sMA = LSMA(SlowMA_Period,SlowMA_AppliedPrice,0,SignalCandle);
}
else
{
sMA = iMA(NULL, 0, SlowMA_Period, SlowMA_Shift, SlowMA_Mode, SlowMA_AppliedPrice, SignalCandle);
}

// Check for cross up
if (TradeType == "BUY" && fMA > (mMA + Fast_MiddleSpread*Point) && mMA > (sMA + Middle_SlowSpread * Point))YesTrade = true;
// Check for cross down
if (TradeType == "SELL" && fMA < (mMA - Fast_MiddleSpread*Point) && mMA < (sMA - Middle_SlowSpread * Point) ) YesTrade = true;

return (YesTrade);
}


//+------------------------------------------------------------------+
//| expert start function|
//+------------------------------------------------------------------+
int start()
{
//----

setup="TripleMA_Crossover_EA" + Symbol();

// Check for valid inputs

if (CheckValidUserInputs()) return(0);

//+------------------------------------------------------------------+
//| Check for Open Position|
//+------------------------------------------------------------------+

HandleOpenPositions();

// Check if any open positions were not closed

TradesInThisSymbol = CheckOpenPositions();

//+------------------------------------------------------------------+
//| Check if OK to make new trades|
//+------------------------------------------------------------------+


if(AccountFreeMargin() < Margincutoff) {
return(0);}

// Only allow 1 trade per Symbol

if(TradesInThisSymbol > 0) {
return(0);}

lotMM = GetLots();

if(CheckEntryCondition("BUY"))
{
OpenBuyOrder();
}


if(CheckEntryCondition("SELL"))
{
OpenSellOrder();
}
//----
return(0);
}

//+------------------------------------------------------------------+
//| OpenBuyOrder|
//| If Stop Loss or TakeProfit are used the values are calculated|
//| for each trade|
//+------------------------------------------------------------------+
void OpenBuyOrder()
{
int err,ticket;
double myStopLoss = 0, myTakeProfit = 0;

myStopLoss = 0;
if ( StopLoss > 0 ) myStopLoss = Ask - StopLoss * Point ;
myTakeProfit = 0;
if (TakeProfit>0) myTakeProfit = Ask + TakeProfit * Point;
ticket=OrderSend(Symbol(),OP_BUY,lotMM,Ask,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,Green);
if(ticket<=0)
{
err = GetLastError();
Print("Error opening BUY order [" + setup + "]: (" + err + ") " + ErrorDescription(err));
}
}

//+------------------------------------------------------------------+
//| OpenSellOrder|
//| If Stop Loss or TakeProfit are used the values are calculated|
//| for each trade|
//+------------------------------------------------------------------+
void OpenSellOrder()
{
int err, ticket;
double myStopLoss = 0, myTakeProfit = 0;

myStopLoss = 0;
if ( StopLoss > 0 ) myStopLoss = Bid + StopLoss * Point;
myTakeProfit = 0;
if (TakeProfit > 0) myTakeProfit = Bid - TakeProfit * Point;
ticket=OrderSend(Symbol(),OP_SELL,lotMM,Bid,Slippage,myStopLoss,myTakeProfit,setup,MagicNumber,0,Red);
if(ticket<=0)
{
err = GetLastError();
Print("Error opening Sell order [" + setup + "]: (" + err + ") " + ErrorDescription(err));
}
}


//+------------------------------------------------------------------+
//| Check Open Position Controls|
//+------------------------------------------------------------------+

int CheckOpenPositions()
{
int cnt, NumPositions;
int NumBuyTrades, NumSellTrades;// Number of buy and sell trades in this symbol

NumBuyTrades = 0;
NumSellTrades = 0;
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol() != Symbol()) continue;
if ( OrderMagicNumber() != MagicNumber)continue;

if(OrderType() == OP_BUY )NumBuyTrades++;
if(OrderType() == OP_SELL ) NumSellTrades++;

}
NumPositions = NumBuyTrades + NumSellTrades;
return (NumPositions);
}

//+------------------------------------------------------------------+
//| Handle Open Positions|
//| Check if any open positions need to be closed or modified|
//+------------------------------------------------------------------+
int HandleOpenPositions()
{
int cnt;
bool YesClose;
double pt;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol() != Symbol()) continue;
if ( OrderMagicNumber() != MagicNumber)continue;

if(OrderType() == OP_BUY)
{

if (CheckExitCondition("BUY"))
{
CloseOrder(OrderTicket(),OrderLots(),Bid);
}
else
{
if (UseTrailingStop)
{
HandleTrailingStop("BUY",OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderTakeProfit());
}
}
}

if(OrderType() == OP_SELL)
{
if (CheckExitCondition("SELL"))
{
CloseOrder(OrderTicket(),OrderLots(),Ask);
}
else
{
if(UseTrailingStop)
{
HandleTrailingStop("SELL",OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderTakeProfit());
}
}
}
}
}

//+------------------------------------------------------------------+
//| Close Open Position Controls|
//|Try to close position 3 times|
//+------------------------------------------------------------------+
void CloseOrder(int ticket,double numLots,double close_price)
{
int CloseCnt, err;

// try to close 3 Times

CloseCnt = 0;
while (CloseCnt < 3)
{
if (OrderClose(ticket,numLots,close_price,Slippage,Violet))
{
CloseCnt = 3;
}
else
{
err=GetLastError();
Print(CloseCnt," Error closing order : (", err , ") " + ErrorDescription(err));
if (err > 0) CloseCnt++;
}
}
}

//+------------------------------------------------------------------+
//| Modify Open Position Controls|
//|Try to modify position 3 times|
//+------------------------------------------------------------------+
void ModifyOrder(int ord_ticket,double op, double price,double tp)
{
int CloseCnt, err;

CloseCnt=0;
while (CloseCnt < 3)
{
if (OrderModify(ord_ticket,op,price,tp,0,Aqua))
{
CloseCnt = 3;
}
else
{
err=GetLastError();
Print(CloseCnt," Error modifying order : (", err , ") " + ErrorDescription(err));
if (err>0) CloseCnt++;
}
}
}

//+------------------------------------------------------------------+
//| HandleTrailingStop|
//| Type 1 moves the stoploss without delay.|
//| Type 2 waits for price to move the amount of the trailStop|
//| before moving stop loss then moves like type 1|
//| Type 3 uses up to 3 levels for trailing stop|
//|Level 1 Move stop to 1st level|
//|Level 2 Move stop to 2nd level|
//|Level 3 Trail like type 1 by fixed amount other than 1|
//| Possible future types|
//| Type 4 uses 2 for 1, every 2 pip move moves stop 1 pip|
//| Type 5 uses 3 for 1, every 3 pip move moves stop 1 pip|
//+------------------------------------------------------------------+
int HandleTrailingStop(string type, int ticket, double op, double os, double tp)
{
double pt, TS=0;
double bos,bop,opa,osa;

if (type == "BUY")
{
switch(TrailingStopType)
{
case 1: pt = Point*StopLoss;
if(Bid-os > pt) ModifyOrder(ticket,op,Bid-pt,tp);
break;
case 2: pt = Point*TrailingStop;
if(Bid-op > pt && os < Bid - pt) ModifyOrder(ticket,op,Bid - pt,tp);
break;
case 3: if (Bid - op > TRStopLevel_1 * Point)
{
TS = op + TRStopLevel_1*Point - TrailingStop1 * Point;
if (os < TS)
{
ModifyOrder(ticket,op,TS,tp);
}
}

if (Bid - op > TRStopLevel_2 * Point)
{
TS = op + TRStopLevel_2*Point - TrailingStop2 * Point;
if (os < TS)
{
ModifyOrder(ticket,op,TS,tp);
}
}

if (Bid - op > TRStopLevel_3 * Point)
{
//TS = op + TRStopLevel_3 * Point - TrailingStop3*Point;
TS = Bid- TrailingStop3*Point;
if (os < TS)
{
ModifyOrder(ticket,op,TS,tp);
}
}
break;
}
return(0);
}

if (type =="SELL")
{
switch(TrailingStopType)
{
case 1: pt = Point*StopLoss;
if(os - Ask > pt) ModifyOrder(ticket,op,Ask+pt,tp);
break;
case 2: pt = Point*TrailingStop;
if(op - Ask > pt && os > Ask+pt) ModifyOrder(ticket,op,Ask+pt,tp);
break;
case 3: if (op - Ask > TRStopLevel_1 * Point)
{
TS = op - TRStopLevel_1 * Point + TrailingStop1 * Point;
if (os > TS)
{
ModifyOrder(ticket,op,TS,tp);
}
}
if (op - Ask > TRStopLevel_2 * Point)
{
TS = op - TRStopLevel_2 * Point + TrailingStop2 * Point;
if (os > TS)
{
ModifyOrder(ticket,op,TS,tp);
}
}
if (op - Ask > TRStopLevel_3 * Point)
{
//TS = op - TRStopLevel_3 * Point + TrailingStop3 * Point;
TS = op + TrailingStop3 * Point;
if (os > TS)
{
ModifyOrder(ticket,op,TS,tp);
}
}
break;
}
}
return(0);
}

//+------------------------------------------------------------------+
//| Get number of lots for this trade|
//+------------------------------------------------------------------+
double GetLots()
{
double lot;

if(MoneyManagement)
{
lot = LotsOptimized();
}
else {
lot = Lots;
if(AccountIsMini)
{
if (lot > 1.0) lot = lot / 10;
if (lot < 0.1) lot = 0.1;
}
}
return(lot);
}


//+------------------------------------------------------------------+
//| Calculate optimal lot size|
//+------------------------------------------------------------------+

double LotsOptimized()
{
double lot=Lots;
//---- select lot size
lot=NormalizeDouble(MathFloor(AccountFreeMargin()*TradeSizePercent/10000)/10,1);


// lot at this point is number of standard lots

//if (Debug) Print ("Lots in LotsOptimized : ",lot);

// Check if mini or standard Account

if(AccountIsMini)
{
lot = MathFloor(lot*10)/10;

// Use at least 1 mini lot

if(lot<0.1) lot=0.1;
if (lot > MaxLots) lot = MaxLots;

}else
{
if (lot < 1.0) lot = 1.0;
if (lot > MaxLots) lot = MaxLots;
}

return(lot);
}
//+------------------------------------------------------------------+
//| CheckValidUserInputs|
//| Check if User Inputs are valid for ranges allowed|
//| return true if invalid input, false otherwise|
//| Also display an alert for invalid input|
//+------------------------------------------------------------------+
bool CheckValidUserInputs()
{
if (CheckMAMode(FastMA_Mode))
{
Alert("FastMA_Mode(0 to 4) You entered ",FastMA_Mode);
return(true);
}
if (CheckMAMode(MiddleMA_Mode))
{
Alert("MiddleMA_Mode(0 to 4) You entered ",MiddleMA_Mode);
return(true);
}
if (CheckMAMode(SlowMA_Mode))
{
Alert("SlowMA_Mode(0 to 4) You entered ",SlowMA_Mode);
return(true);
}

if (CheckAppliedPrice(FastMA_AppliedPrice))
{
Alert("FastMA_AppliedPrice( 0 to 6) You entered ",FastMA_AppliedPrice);
return(true);
}
if (CheckAppliedPrice(MiddleMA_AppliedPrice))
{
Alert("MiddleMA_AppliedPrice( 0 to 6) You entered ",MiddleMA_AppliedPrice);
return(true);
}
if (CheckAppliedPrice(SlowMA_AppliedPrice))
{
Alert("SlowMA_AppliedPrice(0 to 6) You entered ",SlowMA_AppliedPrice);
return(true);
}

if (CheckTrailingStopType(TrailingStopType))
{
Alert("TrailingStopType(1 to 3) You entered ",TrailingStopType);
return(true);
}

}

//+------------------------------------------------+
//| Check for valid Moving Average methods|
//|0=sma, 1=ema, 2=smma, 3=lwma , 3=lsma|
//|return true if invalid, false if OK|
//+------------------------------------------------+
bool CheckMAMode(int method)
{
if (method < 0) return (true);
if (method > 4) return (true);
return(false);
}

//+-----------------------------------------------------+
//| Check for valid Applied Price enumerations|
//|0=close, 1=open, 2=high, 3=low, 4=median((h+l/2)) |
//|5=typical((h+l+c)/3), 6=weighted((h+l+c+c)/4)|
//|return true if invalid, false if OK|
//+-----------------------------------------------------+
bool CheckAppliedPrice(int applied_price)
{
if (applied_price < 0) return (true);
if (applied_price > 6) return (true);
return(false);
}

//+------------------------------------------------+
//| Check for valid TrailingStopType|
//||
//|return true if invalid, false if OK|
//+------------------------------------------------+
bool CheckTrailingStopType(int stop_type)
{
if (stop_type < 0 ) return(true);
if (stop_type > 3) return(true);
return(false);

}

mini.jpg


  #17
OFFLINE   frlaspina

Hallo Dabo,

danke für dein Tipp, hast du mit dem EA Test-Erfahrungen?
Z.B. auf welchem TF und Markt er laufen soll oder Parameter und so ?

Gruß,
frlaspina


Klingt doof aber es ist so: Steigt der Kurs dann steigt er, fällt der Kurs dann fällt er! (Meine) Dow Theorie
"Fragen zum Trading System Development - PN an mich!"

  #18
OFFLINE   Dabo

Sagen wir mal so. geteste hab ich den auf jendefall. zumindest backtest. Naja gleitene durschnitte finde ich immer in höheren TF für sinnvoller. Also da hab ich immer bessere ergebnissse erzielen können. was du aber mit dem auch sehr gut machen kannst ist das du die 2 GD für kleineren zeitraum nimmt und den 3 sozusagen als trandindikator nimmst. der die die richtung anzeigt. Also nimmst den 3 zb Gd=100 und Gd1=10 und gd2=20 ( Als bsp. ) Wenn der chart über der hunderten ist danach ein korrektur erfolgt und dann der Gd1 den dn gd2 von unten nach unten durchkreuzt als kaufsignal nimmst.;)
So kan ich ziemlich nah an mien wunschergebniss drann.Mit dem Sl ist das so ne sache. da heisst es selber schauen...

mini.jpg


  #19
OFFLINE   frlaspina

Ja......,
es ist so ne Sache mit GD, s in höhere und tiefere TF´s, seit Wochen versuche ich in meinem anderen EApassende Parameter für die GD´s zu finden, die Trefferquote ist zwar bei über 70%,akzeptabler Gewinn ist nur dann da, wenn die Stopps verhältnissmäßig weit sind, aber der Durchschnitt der Gewinner ist niedriger als die Verlieren und ich kriege kein PF über 1,5. Und das gefällt mir nicht. Dazu ist die Equity zu sprunghaft durch die Stopps auf 60 Pips bei TF 15m.

Irgendwie muß was anderes her....

Ciao,
frlaspina
Klingt doof aber es ist so: Steigt der Kurs dann steigt er, fällt der Kurs dann fällt er! (Meine) Dow Theorie
"Fragen zum Trading System Development - PN an mich!"

  #20
OFFLINE   Dabo

jop dardrann hab ich auch schon gesessen :-) Das kommt mir alles ziemlich bekannt vor. Verusuch noch iregendwelche filter einzubauen. Der beste Filter ist die zeit ;-) dann kommt man der sache schon näher.

mini.jpg




Similar Topics

  Thema Eröffnet von Statistik Letzter Beitrag




0 Benutzer lesen gerade dieses Thema

0 Mitglieder, 0 Gäste, 0 anonyme Nutzer