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.

Der EA Template

Geschrieben

So ich will hiermit beginnen, einen Tempate zu erstellen wo später nur mehr die Handelsbedingungen hinzugefügt werden müssen, also das "Geheimnis" lasse ich mal weg. :LLL: Das gehört jedem himself auch euch :hmmmm: .

 

Habe als Vorgabe meine Tradestation , tradesignal backtestkentnisse genommen und folgenden brauchbaren code zusammengeklaut :rofl: äääh kopiert. Das www ist ja so groß und nett, und tom-next.com der Diamant im www. :LLL:

 

Der Start:

 

extern double TakeProfit = 0;

extern int StopLoss = 0;

extern double Lots = 0;

extern int Trailing = 0;

extern int Step = 0;

 

// gefällt mir, mehr ist zum Beginn gar nicht nötig

 

// dann:

 

int start()

{

int cnt, ticket, total;

 

if(Bars<100)

{

Print("bars less than 100");

return(0);

}

 

 

// warum 100 Bars ? für was ist das nötig ? reichen nicht 50 oder 150 ?

 

 

 

if(TakeProfit<10)

{

Print("TakeProfit less than 10");

return(0); // check TakeProfit

}

 

 

// Warum darf ich nicht 5 TP machen? :wub: naja das Thema sollte nicht so wichtig sein...

 

// Jetzt kommen die "geheimen Code Variablen..."

Var1

Var2

Var3

Var4567890

 

 

 

// für was steht dies da unten? nagut wegen Orders offen, aber warum "1000* Lots" ? habe ich da etwas zu ändern wenn ich von Währungen zu Dax wechsle mit selben Code ?

 

 

total=OrdersTotal();

if(total<1)

{

// no opened orders identified

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

{

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

 

 

// Nächste Frage und dann reichts für heute;

 

// LONG POSITION

if (Var1 XXXXX && Var2 XXXX... ) // gibt es hier in MQL kein Crossover ? in Ninjatrader hab ich sowas gesehen..., hier habe ich es gelöst mit "letztes close tiefer neuem close, für crossover irgendein Dingsbums "

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"0",16384,0,Green);

 

 

 

// hier erkläre ich mir das so: Ticket=OrderSend soll Order an Broker sein, Symbol wohl das Instrument am chart z.b Euro/Usd , dann OpenBuy - das ist klar , Lots - hmmmm haben die anderen ausser Währungen auch Lots oder doch Ticks ? , Ask ist klar, 3 = ???? , Ask-StopLoss*Point - hmm 1,3205 - 20*Point ???? was bedeutet * point ? , dann Ask + ... detto vorher , "0" - wasistdenn0 ? , 16384 ist wohl sowas wie Magix Number , 0 - ????, Green ??-habe noch nichts grünes gesehen im chart.... ) ausser kerzen :LLL: ;

 

// boah wer mir das richtig erklärt dem sei mal gedankt, ein 1/4 vino vergönnt

 

 

 

Ahcja Broker für EA, da habe ich mich noch nicht festgelegt, da brauche ich auch später noch eure Hilfe, später, später, nach div. backtests... :top:

Featured Replies

Geschrieben
// warum 100 Bars ? für was ist das nötig ? reichen nicht 50 oder 150 ?

 

Kommt auf deinen Indikator an, wieviele bars der zurückrechnen soll/muss.

 

 

 

 

// für was steht dies da unten? nagut wegen Orders offen, aber warum "1000* Lots" ? habe ich da etwas zu ändern wenn ich von Währungen zu Dax wechsle mit selben Code ?

 

 

Ja.

Wenn du das Template universiell haben willst, musst du die einzelnen Instrumente extra berechnen.

In meinen Strategien habe ich teilweise in den Parametern drinne einstellbar, um was es sich handelt. So kann ich umschalten und 1 ist immer ein Kontkrat bei Futures oder 100.000 Einheiten bei FX.

 

 

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"0",16384,0,Green);

 

 

Zur Ordersend:

Parameters:

symbol - Symbol for trading.

cmd - Operation type. It can be any of the Trade operation enumeration.

volume - Number of lots.

price - Preferred price of the trade.

slippage - Maximum price slippage for buy or sell orders.

stoploss - Stop loss level.

takeprofit - Take profit level.

comment - Order comment text. Last part of the comment may be changed by server.

magic - Order magic number. May be used as user defined identifier.

expiration - Order expiration time (for pending orders only).

arrow_color - Color of the opening arrow on the chart. If parameter is missing or has CLR_NONE value opening arrow is not drawn on the chart.

 

Quelle: http://docs.mql4.com/trading/OrderSend

Geschrieben
  • Autor

Danke für die Antwort

 

.....So kann ich umschalten und 1 ist immer ein Kontrakt bei Futures oder 100.000 Einheiten bei FX.

Also Lots einstellbar: = 1 bei Kontrakt Future zb. Dax, Dow, Bund etc.

 

und 0.01 für 1000 Stk. in Währungen bzw. 0.1 für 10.000er , 1 für 100k Tranche. richtig ?

 

Aber was bei CFD Aktie ? auch 1 für 1 Stk. ?

 

 

.....Zur Ordersend:

 

 

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"0",16384,0,Green);

 

symbol - Symbol for trading. = Das ist der Chart wo EA drin ok, geht wohl auch hart hineinschreiben das Symbol, für: wenn hier signal im Chart dann kaufe anderes Symbol?

cmd - Operation type. ok

volume - Number of lots. ok

price - Preferred price of the trade. ok

slippage - richtet sich dies automatisch an Lotgröße aus ? oder muss es 3 oder 0.003 sein ?

stoploss - Stop loss level. - Das mit den Points ist mir noch nicht klar - 0.001 für Währungen und 1 für Fu.?

"0" comment - Order comment text. ok

magic - Order magic number. May be used as user defined identifier. ok

expiration - Order expiration time (for pending orders only). das verstehe ich nicht.

arrow_color - erscheint dieser Pfeil beim Backtesten auch oder nur im real oder demohandel ?

Geschrieben
Aber was bei CFD Aktie ? auch 1 für 1 Stk. ?

 

Was auch immer du willst. Du kannst auch die Menge grundsätzlich "einfach" lassen, dann gibst du eben bei Futures 1 an und bei FX 100.000 und bei CFDs 100 oder was auch immer...

Das kann man ja selbst dann programmieren und einstellen wie man es brauch. Man muss es nur genau wissen in welchen Fällen er wie viel Handelt.

 

.....Zur Ordersend:

Warte da mal auf die MT4-Cracks, ich arbeite (nicht mehr) mit MT4.

Geschrieben
.....Zur Ordersend:

symbol: Ja, das ist unabhängig vom Chart und du kannst was anderes kaufen, wenn du es "hart" hineinschreibst.

slippage: pips, also 3

stoploss: dies ist ein Preis, also z.B. 1.2200 und nicht Points

expiration: wenn deine Order nicht ausgeführt wurde, weil du nicht market eingestiegen bist, sondern z.B. mit einer Limitorder, dann ist das hier das Verfallsdatum

arrow_color: wird auch im visuellen Modus des Backtest angezeigt

 

RAiNWORM

Geschrieben
  • Autor

danke euch, das werde ich morgen mal zusammenfassen, mich irritierte nur dieses point immer:

 

 

Sample:

 

ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,

Geschrieben

Point ist in MQL ein fester Befehl, die kleinste Einheit. Also ein Pip.

Bei 4-stelligen Kursen ist es die 4. Zahl, bei 5-stelligen die 5. Zahl.

 

Wenn man über eine Variable also zB 25*Point eingibt bei 4-stelligen EURSD, bedeutet das nichts anderes als 0.0025.

 

Ask+25*point bedeutet also Askprice + 25*0.0001 (=0.0025).

 

=> 1.1234 +25 * 0.0001

=> 1.1259

 

Im Code brauchst du an diesen Stellen ja die Kurse. So kannst du den Kurs ausrechnen anhand von zB 25 Pips in der Parametereingabe.

Geschrieben
  • Autor

Grüß euch nun Abendprogramm vor nächstem Abendprogramm :hmmmm:

 

und weiter gehts nach einem manuellem euro trade :LLL: :rofl: , nun wieder basteln an EA

 

Also ich fasse zusammen:

 

Alles was mit

 

extern double oder integer (int) als erstes im Programm kommt sind die anfangs einzugebenden Variablen, die abgefragt werden. int oder double ist erklärbar aber ist das so wichtig ? Geschwindigkeitsvorteile ?

 

---> extern int MagicNumber = 123; // wieviel Stellen muss die Magic Nummer haben ? oder egal ?

----> auch habe ich gefunden: #define MAGIC 751518 // hier ist wohl nicht abfragbar hart hineinprogrammiert, stimmt ?

 

nun der 2. teil der Order Long:

 

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"0",16384,0,Green);

 

if(ticket>0) // bedeutet dass wenn Ticket > 0 das Order durch ist und ich im Rennen bin ?

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

// Ticket ? Sollte da nicht MagicNumber stehen , bzw. wo soll sie sonst stehen, habe sie ja oben definiert...?

 

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

}

 

Das erklär mir auch mal einer: SELECT_BY_TICKET,MODE_TRADES // steht nach Order select oben.

 

:wub: So das ist gerade die Hälfte meiner ersten Fragen, - und später dann kommen die iCustom Fragen,

ich Quälgeist der Community :LLL:

Geschrieben
int oder double ist erklärbar aber ist das so wichtig ? Geschwindigkeitsvorteile ?

 

int -> ganzzahliger Datentyp

double -> Gleitkommazahlen

 

Bei Integer hast du keine Rundungsfehler, dafür auch keine kommazahlen.

 

---> extern int MagicNumber = 123; // wieviel Stellen muss die Magic Nummer haben ? oder egal ?

Ist eine int, größe "egal" (solange int)

 

if(ticket>0) // bedeutet dass wenn Ticket > 0 das Order durch ist und ich im Rennen bin ?

so ungefähr, ja. Der Rückgabewert der OrderSend Funktion ist das Orderticket, wenn das Senden erfolgreich war, bzw. der negative Errorcode, wenn nicht erfolgreich.

 

// Ticket ? Sollte da nicht MagicNumber stehen , bzw. wo soll sie sonst stehen, habe sie ja oben definiert...?

Nein, die Magicnumber identifiziert eine Order nicht eindeutig (es können viele Orders die gleiche MagicNumber haben), das Orderticket ist eindeutig.

 

Das erklär mir auch mal einer: SELECT_BY_TICKET,MODE_TRADES // steht nach Order select oben.

Es steht nicht nach OrderSelect sondern sind Parameter von OrderSelect.

Infos zu OrderSelect findet man am besten in der Hilfe.

Zum Thema Parameter würde ich dir ein bissl Grundlagenstudium von C (oder zumindest MQL) empfehlen. Sonst wird das programmieren in MQL schwer.

 

hth

Geschrieben
  • Autor

Parameter kenne ich aber diese MQL ist für mich schlecht beschrieben.

 

ich bin es halt so gewohnt:

DrawArea(MACDF( Close, PeriodFast, PeriodSlow, Trigger ), 0, "MACDF", "Zero Line");

 

 

und um es mir ein wenig einfacher zu gestalten und schneller voranzukommen frage ich halt, ich bin sicher es gibt mehrere die mitlesen und eine einfachere Codeerklärung nützlich finden - bzw. bis jetzt gar nicht gewusst haben was ihr EA eigentlich macht.

 

 

 

MODE_TRADES (default)- order selected from trading pool (opened and pending orders),

MODE_HISTORY - order selected from history pool (closed and canceled order).

 

nun zur Frage:

SELECT_BY_POS - index in the order pool,

SELECT_BY_TICKET - index is order ticket.

 

index in the order pool ?

index is order ticket ?

Keine Ahnung was man mir damit sagen will... :hmmmm:

Geschrieben
nun zur Frage:

SELECT_BY_POS - index in the order pool,

SELECT_BY_TICKET - index is order ticket.

 

index in the order pool ?

index is order ticket ?

Keine Ahnung was man mir damit sagen will... :hmmmm:

 

Wenn man eine Order auswählen(finden) will, hat man zwei Möglichkeiten "danach zu suchen":

- Entweder direkt über das Ticket (wenn man es denn kennt), in dem Fall ist der Aufruf "OrderSelect(ticket,SELECT_BY_TICKET)" (der Parameter "index" enthält den Ticketwert den man will)

 

- Oder über den Index (also die Stelle in der Liste der Orders) im jeweiligen Pool (Pool = die Liste der Orders). Hier gibt es die zwei Pools: Die offenen Orders: MODE_TRADES und die bereits geschlossenen Orders: MODE_HISTORY. In dem Fall sieht der Aufruf so aus: "OrderSelect(index,SELECT_BY_POS,...)"

 

hth

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.