Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Code Frage

Geschrieben

Bin neu hier im Forum, Hallo erstmal alle..

 

Habe auch gleich eine Frage bzw folgendes Problem.

 

Versuche seid Tagen den Code zu finden der dem EA sagen soll das er nach einem S/L oder T/P das gegen Signal abwarten soll bevor er einen neuen Trade eingeht und nicht weiter in die aktuelle Richtung Traden soll.

 

Bin bisher nur auf Variablen wie Varsell=1 und Varbuy=1 gestossen, aber wirklich hilfreich wars bisher nicht. Wie definiert man diese.

 

Vielleicht kann es mir hier jemand erklären wie man das am besten anstellt sofern verstanden wurde was ich meine.

 

Danke schon mal im vorraus.

 

Gruss

Featured Replies

Geschrieben

Willkommen hier bei uns!

 

zu deiner Frage:

 

Du willst nur sozusagen nicht 2 Long (bzw. short) orders hintereinander ausführen sondern immer warten das dazwischen eine gegenläufige oder war?

 

Versuch mal sowas:

 

static int iLastDirection= 0;
int iNewDirection= 0;
// hier einstiegskriterium, wenn eine neue Long Order eröffnet werden soll, setze iNewDirection= 1, bei short iNewDirection = -1
if(iNewDirection >0 && iNewDirection*iLastDirection <= 0) {
 OrderSend(....OP_BUY.....);
 iLastDirection= 1;
}

if(iNewDirection < 0 && iNewDirection*iLastDirection <= 0) {
 OrderSend(....OP_SELL.....);
 iLastDirection= -1;
}

Geschrieben
  • Autor

Willkommen hier bei uns!

 

zu deiner Frage:

 

Du willst nur sozusagen nicht 2 Long (bzw. short) orders hintereinander ausführen sondern immer warten das dazwischen eine gegenläufige oder war?

 

Versuch mal sowas:

 

static int iLastDirection= 0;
int iNewDirection= 0;
// hier einstiegskriterium, wenn eine neue Long Order eröffnet werden soll, setze iNewDirection= 1, bei short iNewDirection = -1
if(iNewDirection >0 && iNewDirection*iLastDirection <= 0) {
 OrderSend(....OP_BUY.....);
 iLastDirection= 1;
}

if(iNewDirection < 0 && iNewDirection*iLastDirection <= 0) {
 OrderSend(....OP_SELL.....);
 iLastDirection= -1;
}

 

 

Erstmal vielen Dank für die echt schnelle Antwort.

 

Ja es sollen keine 2 Long oders bzw 2 Short Orders hintereinander erfolgen.

 

Wo füg ich Deine Funktion aber ein? Bin der ganzen Programmiersache noch nicht wirklich mächtig und taste mich da erst ran und nutz deswegen einen EA Builder um den ganzen Code dann beim durchgehen zu verstehen.

 

Hier mal ein Code schnelles Code Beispiel. Wo müsste ich Deine Funktion dann einfügen?

//+------------------------------------------------------------------+
//| This MQL is generated by Expert Advisor Builder                  |
//|                [url="http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"]http://sufx.core.t3-...AdvisorBuilder/[/url] |
//|                                                                  |
//|  In no event will author be liable for any damages whatsoever.   |
//|                      Use at your own risk.                       |
//|                                                                  |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+

#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 = True;
extern double Lots = 1.0;
extern int Slippage = 2;
extern bool UseStopLoss = True;
extern int StopLoss = 10;
extern bool UseTakeProfit = True;
extern int TakeProfit = 10;
extern bool UseTrailingStop = False;
extern int TrailingStop = 10;

int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init() {
  BarCount = Bars;

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

  return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit() {
  return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start() {
  int Order = SIGNAL_NONE;
  int Total, Ticket;
  double StopLossLevel, TakeProfitLevel;



  if (EachTickMode && Bars != BarCount) TickCheck = False;
  Total = OrdersTotal();
  Order = SIGNAL_NONE;

  //+------------------------------------------------------------------+
  //| Variable Begin                                                   |
  //+------------------------------------------------------------------+


double Buy1_1 = iMA(NULL, 0, 10, 0, MODE_SMA, PRICE_CLOSE, Current + 0);
double Buy1_2 = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, Current + 0);

double Sell1_1 = iMA(NULL, 0, 10, 0, MODE_SMA, PRICE_CLOSE, Current + 0);
double Sell1_2 = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, Current + 0);



  
  //+------------------------------------------------------------------+
  //| Variable End                                                     |
  //+------------------------------------------------------------------+

  //Check position
  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) {
           //Close

           //+------------------------------------------------------------------+
           //| Signal Begin(Exit Buy)                                           |
           //+------------------------------------------------------------------+

           

           //+------------------------------------------------------------------+
           //| 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;
              continue;
           }
           //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;
                    continue;
                 }
              }
           }
        } else {
           //Close

           //+------------------------------------------------------------------+
           //| 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;
              continue;
           }
           //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;
                    continue;
                 }
              }
           }
        }
     }
  }

  //+------------------------------------------------------------------+
  //| Signal Begin(Entry)                                              |
  //+------------------------------------------------------------------+

  if (Buy1_1 >= Buy1_2) Order = SIGNAL_BUY;

  if (Sell1_1 <= Sell1_2) Order = SIGNAL_SELL;


  //+------------------------------------------------------------------+
  //| Signal End                                                       |
  //+------------------------------------------------------------------+

  //Buy
  if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
     if(!IsTrade) {
        //Check free margin
        if (AccountFreeMargin() < (1000 * Lots)) {
           Print("We have no money. Free Margin = ", AccountFreeMargin());
           return(0);
        }

        if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
        if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else 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("Error opening BUY order : ", GetLastError());
           }
        }
        if (EachTickMode) TickCheck = True;
        if (!EachTickMode) BarCount = Bars;
        return(0);
     }
  }

  //Sell
  if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
     if(!IsTrade) {
        //Check free margin
        if (AccountFreeMargin() < (1000 * Lots)) {
           Print("We have no money. Free Margin = ", AccountFreeMargin());
           return(0);
        }

        if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
        if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else 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("Error opening SELL order : ", GetLastError());
           }
        }
        if (EachTickMode) TickCheck = True;
        if (!EachTickMode) BarCount = Bars;
        return(0);
     }
  }

  if (!EachTickMode) BarCount = Bars;

  return(0);
}
//+------------------------------------------------------------------+

Bearbeitet von Mythos
code tags eingefügt, bitte für Sourcecode immer die entsprechenden tags verwenden

Geschrieben

ui, ok also der Code ist zwar "schön" aber ich glaub für einen Anfänger ist der ein bissl aufwändig zu verstehen.

 

Wenn du MQL lernen willst empfehl ich dir erstmal an kleineren eigenen Bsp zu experimentieren. Hier im Forum gibts einige gute Threads für total beginners.

 

Trotzdem zu deiner Frage:

 

 

am einfachsten du änderst den Wert von OPEN_SELL auf -1, also zu Beginn:

 


statt:
#define SIGNAL_SELL  2


schreibst du
#define SIGNAL_SELL  -1

 

dann kommt am Begin der start() Funktion die Deklaration "static int lastOrder= 0".

 

Dann erweiterst du den Check ob er einsteigen soll

 


von
if (Order == SIGNAL_BUY &&  ....)

auf
if(Order*lastOrder <= 0 && Order == SIGNAL_BUY && ....)

 

detto bei SELL. Und nicht vergessen nach dem erfolgreichen senden der Order den Wert von "lastOrder" richtig setzen (also "lastOrder= Order" einfügen).

 

Dann sollte es eigentlich einwandfrei laufen.

Geschrieben
  • Autor

Soweit so gut und nochmals danke fürs schnelle Antworten, aber "Und nicht vergessen nach dem erfolgreichen senden der Order den Wert von "lastOrder" richtig setzen (also "lastOrder= Order" einfügen"

 

Genau da schmeisst er mir die Fehler:

 

'lastOrder' - variable not defined E:\Programme\XTB-Trader 4\experts\rsi test.mq4 (188, 14)

'lastOrder' - variable not defined E:\Programme\XTB-Trader 4\experts\rsi test.mq4 (217, 14)

 

Hab nach lastOrder dann jeweils 1 und -1 eingefügt. Aber trotzdem Fehler beim kompilieren.

 

PS: Was den Code erlenen angeht, so versuch ich erstmal rauszufinden in welche Teile solch ein Code unterteilt ist. Variablen, Buy Logik etc. Hab auch das übersetzte Programmier Handbuch von xtb, aber die 300 Seiten gehören erstmal durchgelesen ;-)

Bearbeitet von Mythos
Zitat gelöscht, bitte nur notwendigen Teil zitieren

Geschrieben

Hi,

 

kleiner Hinweis: du musst nicht immer meinen gesamten Post zitieren, wenns geht auf die nötige Länge kürzen oder ganz weglassen, sonst bläht sich der Thread so auf, danke ;)

 

zu deinem Problem: Kling so als hättest du diesen Teil:

dann kommt am Begin der start() Funktion die Deklaration "static int lastOrder= 0".

nicht umgesetzt ;)

 

Hab nach lastOrder dann jeweils 1 und -1 eingefügt.

äh wie?

es du brauchst kein 1, oder -1 sondern nur die Zuweisung "lastOrder= Order;".

 

PS: Was den Code erlenen angeht, so versuch ich erstmal rauszufinden in welche Teile solch ein Code unterteilt ist. Variablen, Buy Logik etc. Hab auch das übersetzte Programmier Handbuch von xtb, aber die 300 Seiten gehören erstmal durchgelesen ;-)

Zum Handbuch von xtb sag ich besser nix, bin gerade so gut drauf ;)

 

Aber ich würde dir diesen Thread hier im Forum: Einstieg zu MT4 Programmierung empfehlen, der hilft dir sicher, der startet ziemlich komplett bei 0. Wenn du da noch Fragen hast, oder der Thread weitergeführt werden sollte, scheu dich nicht direkt dort zu fragen bzw. den Thread zu "reaktivieren" ;) Wir helfen immer gerne, es ist nur halt auch immer fad Monologe zu schreiben...

Geschrieben
  • Autor

Danke für Deine geopferte Zeit bisher ;-) Und Deine Empfehlung mit dem Thread für Einsteiger werd ich mir zu gemüte führen. Ja, das XTB Handbuch ist bisher nicht die Welt, aber bei dem ein oder anderen hat es mir genützt.

 

Hab die codes so eingefügt wie Du es mir gesagt hast aber bekomme jede Menge Fehlermeldungen beim kompilieren.

 

//+------------------------------------------------------------------+
//| This MQL is generated by Expert Advisor Builder |
//| http://sufx.core.t3-...AdvisorBuilder/ |
//| |
//| In no event will author be liable for any damages whatsoever. |
//| Use at your own risk. |
//| |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+

#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL -1
#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 = True;
extern double Lots = 1.0;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 10;
extern bool UseTakeProfit = True;
extern int TakeProfit = 10;
extern bool UseTrailingStop = False;
extern int TrailingStop = 30;

int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;

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

return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
static int lastOrder= 0
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;



if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;

//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+


double Buy1_1 = iMA(NULL, 0, 10, 0, MODE_SMA, PRICE_CLOSE, Current + 0);
double Buy1_2 = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, Current + 0);

double Sell1_1 = iMA(NULL, 0, 10, 0, MODE_SMA, PRICE_CLOSE, Current + 0);
double Sell1_2 = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, Current + 0);




//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+

//Check position
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) {
//Close

//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+



//+------------------------------------------------------------------+
//| 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;
continue;
}
//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;
continue;
}
}
}
} else {
//Close

//+------------------------------------------------------------------+
//| 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;
continue;
}
//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;
continue;
}
}
}
}
}
}

//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+

if (Buy1_1 >= Buy1_2) Order = SIGNAL_BUY;

if (Sell1_1 <= Sell1_2) Order = SIGNAL_SELL;


//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+

//Buy
if (Order*lastOrder <= 0 && Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else 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("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}

//Sell
if (Order*lastOrder <= 0 && Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}

if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else 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("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}

if (!EachTickMode) BarCount = Bars;

return(0);
}
//+------------------------------------------------------------------+

Bearbeitet von Mythos
Posts zusammengeführt

Geschrieben
Und wie ich den Code so schön einfüg wie Du es machst musste mir auch bei Gelegenheit mal erklären bitte ;-)

 

Du markierst den Code und dann gehst du auf "Insert Code Snippet"

das ist das vorletzte Symbol auf der rechten Seite im Editor

Geschrieben
  • Autor

Du markierst den Code und dann gehst du auf "Insert Code Snippet" < >

das ist das vorletzte Symbol auf der rechten Seite im Editor

 

thx ;-)

Geschrieben

Diese EA-Builder sind momentan scheinbar schwer in.

Hier hat jemand den gleichen Builder benutzt und ganz ähnliche Fragen gestellt... Schau's dir doch einfach mal an :shocked:

Geschrieben

Hab die codes so eingefügt wie Du es mir gesagt hast

 

Also im obigen Code nicht...

Einerseits fehlt der Strichpunkt zur Beendigung des Statements "static int lastOrder= 0;", andererseits seh ich nicht wo den Wert von lastOrder setzt.

 

Ich würd dir wirklich empfehlen erstmal ein bissl Grundlagen zu pauken, bzw. mit kleinen eigenen Beispielen anfangen. Es ist was ganz was anderes fertigen Code grob zu verstehen als ihn selber zu schreiben.

 

Und es gibt einen guten Grund warum man programmieren lernen muss. Da gibts sogar eigene Studienzweige dafür ;)

Geschrieben
  • Autor

Hätte man mir vor 20 Jahren gesagt das ich mich heute mal für EAs interessiere hätte ich ja vielleicht studiert ;-)

 

Ich weiss imemr noch nicht was Dieser "Wert von lastOrder" sein soll sprich "lastOrder" richtig setzen (also "lastOrder= Order" einfügen.

Bearbeitet von Mythos
doppelten Source gelöscht

Geschrieben

Ich weiss imemr noch nicht was Dieser "Wert von lastOrder" sein soll sprich "lastOrder" richtig setzen (also "lastOrder= Order" einfügen.

...und warum musst du deshalb den ganzen Code nochmal ranhängen? :shocked:

 

Hier im Forum gibt es wirklich guten Support und wir helfen gerne weiter. Die Sache ist nur die... jemand sagt dir jetzt die Lösung zu deiner Frage, du setzt es (nach mehrmaligem Nachfragen) um und bist einen Schritt weiter, hast aber nicht verstanden warum. Dann kommt die nächste Frage usw. usw. Wie dir Mythos schon erklärt hat, ohne Programmierkenntnisse geht's halt nicht. Deshalb ist das hier auch nicht zielführend, egal unter welchem Username auch immer...

Geschrieben

 

Ich weiss imemr noch nicht was Dieser "Wert von lastOrder" sein soll sprich "lastOrder" richtig setzen (also "lastOrder= Order" einfügen.

 

 

Wie gut ist denn dein Englisch ?

 

Probiere doch mal dich hier einzulesen, auf Deutsch wirst du kaum etwas gutes finden.

MQL

 

 

Dein Problem haben wir ja verstanden, aber das bedarf keines Codes mehr.

Geschrieben
  • Autor

War ja keine böse absicht von mir das ich den Code nochmal dran gehängt habe und das mit dem Support stimmt.

Klar, mir fehlen die Programmierkenntnisse, aber eine Lösung wäre für mich trotzdem hilfreich gewesen vielleicht das ein oder andere kleine dann nachzuvollziehen zu können.

 

Aber nun gut, dann geh ich nicht über LOS und bekomm keine 2000 und führe mir den Sticky Einstieg zu MT4 Programmierung zu gemüte und das ganze drum herum.

 

Trotzdem danke.

Geschrieben

 

Aber nun gut, dann geh ich nicht über LOS und bekomm keine 2000 und führe mir den Sticky Einstieg zu MT4 Programmierung zu gemüte und das ganze drum herum.

 

Trotzdem danke.

 

Da kommst du wie gesagt eh nicht drum herrum.

Selbst wenn dieser EA Top Ergebnisse bringen würde, er muß irgendwann angepasst/ Optimiert werden.

 

Und dann stehst du wieder vor neuen Fragen, daher kommst du am erlernen und wirklich verstehen gar nicht dran vorbei...

Geschrieben

Aber nun gut, dann geh ich nicht über LOS und bekomm keine 2000

Wir kriegen auch keine 2000 geschenkt, ich versteh den Unterton hier nicht ganz. Hast du ernsthaft erwartet das du ohne Grundkenntnisse und ohne wirklich Zeit zu investieren einen Gelddruck-EA produzierst/programmiert bekommst?

 

und führe mir den Sticky Einstieg zu MT4 Programmierung zu gemüte und das ganze drum herum.

 

Anders wirds wie gesagt nicht funktionieren. Entweder selber lernen, oder professionelle Programmierservices beauftragen.

Geschrieben
  • Autor

Wir kriegen auch keine 2000 geschenkt, ich versteh den Unterton hier nicht ganz. Hast du ernsthaft erwartet das du ohne Grundkenntnisse und ohne wirklich Zeit zu investieren einen Gelddruck-EA produzierst/programmiert bekommst?

 

 

 

Anders wirds wie gesagt nicht funktionieren. Entweder selber lernen, oder professionelle Programmierservices beauftragen.

 

Da gabs kein Unterton, das sagt man so.

 

Ich will ja kein EA produziert bekommen sondern versuche mir lediglich eine Art einfache Vorlage zu erstellen.

Geschrieben
versuche mir lediglich eine Art einfache Vorlage zu erstellen.

 

Blöde Frage: Und dann? Nehmen wir an du hast diese einfache Vorlage erstellt ohne wirklich MQL zu lernen, was dann?

Die Vorlage anpassen um einen EA zu schreiben? Aber wie ohne MQL-Kenntnisse?

 

Egal wie man es dreht und wendet, wenn du selber EAs bauen willst (und seis nur einer) musst du zumindest die Grundlagen von MQL beherrschen. Ich würd sogar noch weitergehen und sagen, das es defakto unmöglich ist, nur mit Grundlagenkenntnissen einen profitablen EA zu schreiben (als vollautomatisches System versteht sich).

Geschrieben
  • Autor

Gibt keine blöden Fragen.

 

Wenn die Grundvorraussetzungen in der Vorlage stehen zb MM oder wie gesagt nur eine Order pro Signal dann kann man anfangen und die Bedingungen sprich kreuzende MAs oder was auch immer für Kauf und Verkauf ja ganz einfach im Editor verändern oder neue einfügen. So hatte ich mir das eigentlich gedacht.

Bearbeitet von Paracorp

Geschrieben

Wenn die Grundvorraussetzungen in der Vorlage stehen zb MM oder wie gesagt nur eine Order pro Signal dann kann man anfangen und die Bedingungen für Kauf und Verkauf ja ganz einfach im Editor verändern. So hatte ich mir das eigentlich gedacht.

 

Ok, natürlich, sobald eine solche Vorlage steht, kann man die meisten EAs relativ schnell entwickeln (wenn man die Vorlage selber entwickelt hat). Aber fürs entwickeln der Vorlage brauchst du bereits viel Erfahrung im Entwickeln von EAs und mehr als Grundkenntnisse.

 

Und selbst mit der Vorlage ist das "einfach" sicher was anderes als du es dir derzeit vorstellst. Denn das umfasst dann mindestens das schreiben einer Funktion für die Einstiegskriterien. Also Kenntnisse der Syntax und Verständniss des Programmablaufs sind absolute Grundvorraussetzungen. Du siehst ja selber, ohne diese Grundlagen scheitert man schon am definieren einer Variablen.

Geschrieben

...kann man anfangen und die Bedingungen für Kauf und Verkauf ja ganz einfach im Editor verändern. So hatte ich mir das eigentlich gedacht.

...und genau das stimmt nicht. Du kannst dann vielleicht bestehende durch neue Indikatoren austauschen, aber selbst für so simple Erweiterungen wie filtern des Signals zur richtigen Zeit oder einfache Zusatzverknüpfungen muss man MQL können.

 

Glaub's einfach! Nur Indikatoren in einer bestimmten Kombination anzuordnen und in ein Grundgerüst zu packen bedeutet noch lange nicht, dass du damit auch nur einen Cent verdienen kannst.

Da gehört noch wesentlich mehr dazu...

Geschrieben

Wenn die Grundvorraussetzungen in der Vorlage stehen zb MM oder wie gesagt nur eine Order pro Signal dann kann man anfangen und die Bedingungen sprich kreuzende MAs oder was auch immer für Kauf und Verkauf ja ganz einfach im Editor verändern oder neue einfügen. So hatte ich mir das eigentlich gedacht.

 

Wenn es so einfach wäre, dann bräuchstest du nur einen fertigen EA aus dem Netz nehmen ( Sind zu tausenden vorhanden

und deine gewollten Parameter verändern.

 

Hier mal nen Link, da kannst du dir X EAs runterladen und deine Versuche starten.

 

EAs ( ca. 1700 verschiedene )

 

Das hat aber nix mehr mit Programmieren zu tun...

Und das meint Mythos unter anderem...

 

Wenn du diese bereits fertigen EAs nämlich wirklich an deine Bedürfnisse anpassen möchtest, brauchst du halt Knox How....

Geschrieben
  • Autor

@Mythos

 

Für komplexe Vorlagen geb ich Dir Recht mit dem was Du sagst. Da gehört mehr zu..

 

Aber für meine bisherige kleine Vorlage haben meine mini Kenntnisse auch gerreicht die einen oder anderen Einstiegskriterien was verschiedene Indikatoren rein und raus zu nehmen aus der Vorlage.

 

Thema ist ja jetzt auch eigentlich durch. Bedank mich aber nochmals für die Mühe und Hilfestellung gestern nacht noch von Dir.

 

Man liesst sich ja sicherlich noch das ein oder andere mal. ;-)

Bearbeitet von Paracorp

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.