Fragen Sie! - Seite 11

 

Du sprichst von einem Skript oder etwas anderem, das die Kommunikation zwischen den EAs auf einem Server ermöglicht. Ich denke, es wird eine Weile dauern, bis metaquotes so etwas entwickelt hat. Wenn ich mir jedoch mql4.com ansehe, sagen sie, dass die Funktion, über die ich gesprochen habe, GlobalVariableSetOnCondition(), atomar ausgeführt wird. Damit kann ich wahrscheinlich mit einer Reihe von Funktionen kommen, um zu tun, was ich brauche.

 

Kann mir jemand helfen: https://www.mql5.com/en/forum/174184?

 

Hilfe - Nullteilung???

Hallo an alle Programmierer...

Was muss ich tun, um diesen Fehler zu lösen: Nullteilung?

Danke für jede Hilfe...

Dateien:
ok.gif  16 kb
error.gif  16 kb
ttm_stoch.mq4  5 kb
 

jma

hallo codersguru,

kann ich jma anstelle von ema im EA-Code verwenden?

 
 

brauche Hilfe - angepasster MACD

Ich versuche, einen Indikator zu erstellen, der die Signallinie basierend auf dem Wert des RSI anpasst. Eigentlich möchte ich eine andere Signallinie auf dem MACD zeichnen, die angepasst wird, und die reguläre Signallinie an Ort und Stelle lassen.

bearbeiten:

Ich habe den Indikator dazu gebracht, die RSI-Linie (erster Schritt) in demselben Fenster zu zeichnen. Aber aus irgendeinem Grund wird er die letzte Periode nicht zeichnen. Bitte siehe Anhang.

Dateien:
 

anythelp wäre großartig

hierel ist ein bisschen Code im mit einem Problem mit//// es funktioniert, wenn ich es auf Northfinace 1time laden dann nie macht einen Handel wieder... aber es tut nichts auf Interbank... es ist eine Umkehrung System mit Kama die .0005 ist Umkehrung Pips... Ich habe keine Ahnung, was los ist, wie es 1 Handel auf Northfinance perfekt gemacht, wenn ich es zum ersten Mal geladen, aber es war ein bestehender Handel, die bereits gemacht worden sein sollte...

 

der Code

#property copyright "Expert Advisor Builder"

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = True;

extern double Lots = 1;

extern int Slippage = 3;

extern bool StopLossMode = True;

extern int StopLoss = 40;

extern bool TakeProfitMode = False;

extern int TakeProfit = 60;

extern bool TrailingStopMode = True;

extern int TrailingStop = 35;

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

int BarCount;

int Aktuell;

bool TickCheck = False;

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

//| Experten-Initialisierungsfunktion |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; sonst Current = 1;

return(0);

}

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

//| Experten-Deinitialisierungsfunktion |

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

int deinit() {

return(0);

}

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

//| Experten-Startfunktion |

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

int start() {

int Auftrag = SIGNAL_NONE;

int Gesamt, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Auftrag = SIGNAL_NONE;

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

//| Variable Begin |

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

double Var1 = iCustom(NULL, 0, "KAMATEST", 3, 2, 0.0005, 0, Aktuell + 0);

double Var2 = iCustom(NULL, 0, "KAMA CCI", 14, 0, Aktuell + 0);

double Var3 = iCustom(NULL, 0, "KAMARSI", 14, 0, Aktuell + 0);

double Buy1_1 = Var1 ;

double Buy1_2 = 25;

double Buy2_1 = Var2 ;

double Buy2_2 = 80;

double Buy3_1 = Var3 ;

double Buy3_2 = 50;

double Sell1_1 = Var1 ;

double Sell1_2 = -25;

double Sell2_1 = Var2 ;

double Sell2_2 = -80;

double Sell3_1 = Var3 ;

double Sell3_2 = -50;

double CloseBuy1_1 = Var1 ;

double CloseBuy1_2 = -25;

double CloseBuy2_1 = Var2 ;

double CloseBuy2_2 = -80;

double CloseBuy3_1 = Var3 ;

double CloseBuy3_2 = -50;

double CloseSell1_1 = Var1 ;

double CloseSell1_2 = 25;

double CloseSell2_1 = Var2 ;

double CloseSell2_2 = 80;

double CloseSell3_1 = Var3 ;

double CloseSell3_2 = 50;

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

//| Variablenende |

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

//Position prüfen

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {

IsTrade = True;

if(OrderType() == OP_BUY) {

//Schließen

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

//| Signal Begin(Exit Buy) |

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

if (CloseBuy1_1 <= CloseBuy1_2 && CloseBuy2_1 <= CloseBuy2_2 && CloseBuy3_1 <= CloseBuy3_2) Order = SIGNAL_CLOSEBUY;

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

//| Signal End(Exit Buy) |

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

fortfahren;

}

//Trailing-Stop

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

fortfahren;

}

}

}

} sonst {

//Schließen

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

//| Signal Begin(Exit Sell) |

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

if (CloseSell1_1 >= CloseSell1_2 && CloseSell2_1 >= CloseSell2_2 && CloseSell3_1 >= CloseSell3_2) Order = SIGNAL_CLOSESELL;

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

//| Signal End(Exit Sell) |

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

weiter;

}

//Trailing-Stop

if(TrailingStopMode && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

fortfahren;

}

}

}

}

}

}

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

//| Signal Begin(Entry) |

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

if (Buy1_1 >= Buy1_2 && Buy2_1 >= Buy2_2 && Buy3_1 >= Buy3_2) Order = SIGNAL_BUY;

if (Sell1_1 <= Sell1_2 && Sell2_1 = Sell3_2) Order = SIGNAL_SELL;

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

//| Signal Ende |

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

//Kaufen

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Prüfen der freien Marge

if (AccountFreeMargin() < (1000 * Lots)) {

Print("Wir haben kein Geld. Freie Marge = ", AccountFreeMargin());

return(0);

}

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; sonst StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; sonst TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if(OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Fehler beim Öffnen der BUY-Order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

//Verkaufen

if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Prüfen der freien Marge

if (AccountFreeMargin() < (1000 * Lots)) {

Print("Wir haben kein Geld. Freie Marge = ", AccountFreeMargin());

return(0);

}

if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; sonst StopLossLevel = 0.0;

wenn (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; sonst TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

if(Ticket > 0) {

if(OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("SELL order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("Fehler beim Öffnen der SELL-Order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

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

 

Ich änderte den Wert von .0005 des Indikators in den Experten, wie das zeigt nur den Kanal Linie letztlich die Ebenen sind, was Sie brauchen, um 25,-25 für .0005 ...30,,-30 für .0006, und so weiter...

 

Problem mit Breakeven und Trailing Stop

Hallo,

Ich lerne das Programmieren mit Hilfe des MQL4-Tutorials von Codersguru, und ich arbeite an "My_First_EA". Es ist wirklich mein erster EA. Es funktioniert sehr gut, aber ich versuche, einen Breakeven-Stop zu schreiben und ich kann es nicht herausfinden. Das Problem, das ich habe, ist, dass der Breakeven-Stop dem Kurs folgt, genau wie ein Trailing-Stop. Ich möchte, dass der anfängliche Stoploss sich bewegt, um 1 Pip Gewinn zu halten, wenn ich 15 Pips mache (zum Beispiel), dann möchte ich, dass der Stoploss auf dem Breakeven Stop (1 Pip Gewinn) bleibt, bis der Trailing Stop bei 25 Pips Gewinn zu arbeiten beginnt. Dann möchte ich, dass der Trailing-Stop wie üblich funktioniert und jeden Pip Gewinn mitnimmt. Ich denke, das Problem könnte die "OrderStopLoss()" sein, aber ich weiß nichts mehr. Mein Gehirn ist Matsch. Vielen Dank

Hier ist der relevante Code, den ich gemacht habe:

extern double TrailingStop=25.0;

extern double BreakEvenProfit=15;

extern double BreakEvenStop=1;

......................

mein Code für den Einstieg und die offenen Aufträge funktioniert einwandfrei

......................

for (cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderType()<=OP_SELL&&OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY)//Long Position wird eröffnet

{

//sollte sie geschlossen werden?

if (FSAR > FMA) //mein Ausstiegssignal

{

//----CLOSE LONG POSITION funktioniert gut

OrderClose(OrderTicket(),OrderLots(),Bid,3,Magenta);

return(0);//Exit

}

////////////////////DAS IST DER PROBLEMBEREICH UNTER/////////

//----PRÜFUNG AUF BREAKEVEN-STOP-LONG-POSITION------

wenn (Bid-OrderOpenPrice() > BreakEvenProfit*Point)

{

if (OrderStopLoss() < OrderOpenPrice()+ BreakEvenStop*Point)

{

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice() + BreakEvenStop*Point,OrderTakeProfit(),0,Yellow);

return(0);

}

}

//-----ALLES, WAS HIER UNTEN STEHT, FUNKTIONIERT WIE EIN TYPISCHER TRAILING-STOP

//----check für Trailing-Stop LONG POSITION

if(NachlaufenderStop>0)

{

wenn (Bid-OrderOpenPrice()>Point*TrailingStop)

{

wenn (OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Yellow);

return(0);

}

}

}

}

else///auf Short-Position gehen