Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Hallo Roger09,
nochmals vielen Dank für deine Hilfe. Mein Ziel ist es, ein Skript zu verwenden, um meinen Stop-Loss auf Break-Even plus x Pips in einem Kaufhandel oder Break-Even minus x Pips in einem Verkaufshandel zu verschieben. Ich setze eine Tastenkombination für das Skript, damit ich schnell einen Gewinn einfahren kann, wenn sich der Handel zu meinen Gunsten entwickelt. Ich weiß, dass einige ES'a diese Funktion haben, aber ich ziehe es vor, ein Skript zu verwenden, damit ich es manuell machen kann.
Progrmming un stop buy und stop sell
Hallo,
Ich benutze einen EA mit CCI.
Mein Programm setzen einen Kauf, wenn der vorangegangene bar ist über CCI>100, aber ich will kaufen 5 Pips höher der letzten bar.
Ich möchte das gleiche mit dem Stop-Sell-Order (5 Pips unter dem letzten niedrig)
Hier mein EA, können Sie mir helfen
Danke
/+------------------------------------------------------------------+
//| Diese MQL wird von Expert Advisor Builder generiert.
//| Expert Advisor Builder für MetaTrader 4 |
//| |
/+------------------- DIESE KOPFZEILE NICHT ENTFERNEN --------------------+
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#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 = False;
extern double Lots = 1.0;
extern int Slippage = 30;
extern bool UseStopLoss = True;
extern int StopLoss = 200;
extern bool UseTakeProfit = True;
extern int TakeProfit = 600;
extern bool UseTrailingStop = True;
extern int TrailingStop = 250;
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 = iCCI(NULL, 0, 20, PRICE_CLOSE, Current + 0);
double Var2 = iCCI(NULL, 0, 20, PRICE_CLOSE, Current + 1);
double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Buy1_2 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);
double Buy2_1 = Var1 ;
double Buy2_2 = 100;
double Buy3_1 = Var2 ;
double Buy3_2 = 100;
double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Sell1_2 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);
double Sell2_1 = Var1 ;
double Sell2_2 = - 100;
double Sell3_1 = Var2 ;
double Sell3_2 = - 100;
//+------------------------------------------------------------------+
//| Variable Ende |
//+------------------------------------------------------------------+
//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) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal Ende(Beenden Kaufen) |
//+------------------------------------------------------------------+
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(UseTrailingStop && 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) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| 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(UseTrailingStop && 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 (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; sonst StopLossLevel = 0.0;
if (UseTakeProfit) 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 (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; sonst StopLossLevel = 0.0;
if (UseTakeProfit) 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);
}
//+------------------------------------------------------------------+
Hallo Roger09, nochmals vielen Dank für deine Hilfe. Mein Ziel ist es, ein Skript zu verwenden, um meinen Stop-Loss auf Break-Even plus x Pips in einem Kaufhandel oder Break-Even minus x Pips in einem Verkaufshandel zu verschieben. Ich setze eine Tastenkombination für das Skript, damit ich schnell einen Gewinn einfahren kann, wenn sich der Handel zu meinen Gunsten entwickelt. Ich weiß, dass einige ES'a diese Funktion haben, aber ich ziehe es vor, ein Skript zu verwenden, damit ich es manuell machen kann.
Wenn Sie Ihren Stopp nur einmal setzen müssen, verwenden Sie diesen EA-Code
extern int pips=10;//
//+------------------------------------------------------------------+
//| Skript Programmstartfunktion |
//+------------------------------------------------------------------+
int start()
{
//----
int ot = AufträgeSumme();
for (int i=0; i<ot; i++)
{
int o = OrderSelect(i, SELECT_BY_POS);
if (OrderSymbol() == Symbol()&&OrderType() <2)
{
double sl = 0;
if (OrderType() == OP_BUY&& OrderStopLoss() =pips*Point)
sl = OrderOpenPrice() +pips*Point;
if (OrderType() == OP_SELL && (OrderStopLoss() > OrderOpenPrice()||OrderStopLoss()==0)
&&OrderOpenPrice()-Ask>=pips*Point)
sl = OrderOpenPrice() -pips*Point;
if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0))
Print("Fehler_Modifizieren - ",GetLastError());
}
}
//----
return(0);
}
Hallo,
Ich benutze einen EA mit CCI.
Mein Programm setzen einen Kauf, wenn der vorangegangene bar ist über CCI>100, aber ich will kaufen 5 Pips höher der letzten bar.
Ich möchte das gleiche mit dem Stop verkaufen ordre (5 Pips unter dem letzten niedrig)
Hier mein EA, können Sie mir helfen
Danke
Ersetzen Sie
double Buy1_2 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);
double Buy2_1 = Var1 ;
double Buy2_2 = 100;
double Buy3_1 = Var2 ;
double Buy3_2 = 100;
double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Sell1_2 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);
double Sell2_1 = Var1 ;
double Sell2_2 = - 100;
double Sell3_1 = Var2 ;
double Sell3_2 = - 100;[/CODE]
To
[CODE]
double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Buy1_2 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);
double Buy2_1 = Var1 ;
double Buy2_2 = 105;
double Buy3_1 = Var2 ;
double Buy3_2 = 105;
double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Sell1_2 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);
double Sell2_1 = Var1 ;
double Sell2_2 = - 105;
double Sell3_1 = Var2 ;
double Sell3_2 = - 105;Ersetzen Sie
double Buy1_2 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);
double Buy2_1 = Var1 ;
double Buy2_2 = 100;
double Buy3_1 = Var2 ;
double Buy3_2 = 100;
double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Sell1_2 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);
double Sell2_1 = Var1 ;
double Sell2_2 = - 100;
double Sell3_1 = Var2 ;
double Sell3_2 = - 100;[/CODE]
To
[CODE]
double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Buy1_2 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);
double Buy2_1 = Var1 ;
double Buy2_2 = 105;
double Buy3_1 = Var2 ;
double Buy3_2 = 105;
double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Sell1_2 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);
double Sell2_1 = Var1 ;
double Sell2_2 = - 105;
double Sell3_1 = Var2 ;
double Sell3_2 = - 105;Ja, aber mit diesem Code, würde ich bei der Eröffnung der nächsten Bar eingeben, und ich würde sicher sein, dass die nächste Bar steigen wird, so dass ein Muss mit 5 Pips über dem letzten hoch kaufen
Handel zur vollen Stunde
Hallo- Im suchen, um meine EA auf der Grundlage der Zeit des Tages aufrufen. vielleicht 5am und 5pm, oder alle 30 Minuten, etc.
wie kann ich das tun?
Vielen Dank für jede Hilfe.
Kevin
Vielleicht hilft Ihnen das:
if((TimeHour(TimeLocal( ) )!=5&&TimeMinute(TimeLocal( ) )!=0)||(TimeHour(TimeLocal( ) )!=17
&&TimeMinute(TimeLocal( ) )!=0))return();
Setzen Sie es an den Anfang von start().
Könnte sich das bitte jemand ansehen und mir sagen, warum es nicht funktioniert.
Ich möchte es als Kommentar verwenden.
double AvgWin()
{
double CountTrades = 0;
double CountPips = 0;
for(int Ticket=0;Ticket<OrdersHistoryTotal();Ticket++)
{
OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);
if(MeinKonto==KontoNummer() && OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber)
{
//------>>>>
if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice())
CountTrades++;
{
if(OrderProfit() >= 0)
CountPips++;
}
if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice())
CountTrades++;
{
if(OrderProfit() >= 0)
CountPips++;
}
}
}
if(CountPips < 0)
return(MathRound(CountPips/CountTrades)*10);
sonst
Print("Real Time AvgWin nicht verfügbar");
return(mAvgWin);
}
Ersetzen Sie zunächst
SELECT_BY_TICKET zu SELECT_BY_POS
Zweitens, CountPips ist immer größer als 0.
Erstens: Ersetzen
SELECT_BY_TICKET zu SELECT_BY_POS
Zweitens, CountPips immer größer als 0.Ist dies in Ordnung
int AvgWin()
{
int CountTrades = 0;
int CountPips = 0;
for(int Ticket=0;Ticket<OrdersHistoryTotal();Ticket++)
{
OrderSelect(Ticket,SELECT_BY_POS,MODE_HISTORY);
if(MeinKonto==KontoNummer() && OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber)
{
//------>>>>
if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice())
CountTrades++;
{
if(OrderProfit() >= 0)
CountPips++;
}
if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice())
CountTrades++;
{
if(OrderProfit() >= 0)
CountPips++;
}
}
}
if(CountPips > 0)
return(MathRound(CountPips/CountTrades)*10);
sonst
Print("Real Time AvgWin nicht verfügbar");
return(mAvgWin);
}