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
Ausführen im Testprogramm mt4orders_exampleexpert.mq5
Als ich die Bibliothek schrieb, war ich weit davon entfernt, das volle Ausmaß möglicher Probleme mit Benutzern zu erkennen. Vor Ihnen haben alle von ihnen ohne Anleitung gearbeitet.
Prägnante Beispiele der EA-Konvertierung finden sich nicht nur in der Bibliotheksbeschreibung, sondern auch in deren Diskussion - in den Kommentaren (dort noch deutlicher).
Dank ilan1_4_strict.mq4 klappte alles, aber meine EAs gaben 75 Fehler. Die Fehler sind von dieser Art:
Dank mit ilan1_4_strict.mq4 alles funktioniert, aber meine ea gab 75 Fehler. Die Fehler sind von dieser Art:
Werfen Sie zumindest den gesamten Grafikteil heraus.
Warum brauchen Sie es in der Tester überhaupt?
Schmeißen Sie zumindest alle Grafiken raus.
Wozu braucht man sie überhaupt im Testprogramm?
Dank mit ilan1_4_strict.mq4 alles funktioniert, aber meine ea gab 75 Fehler. Die Fehler sind von dieser Art:
In der Diskussion gesagt und in der Beschreibung gibt es solche Worte
Diese Arbeit betrifft nur das Auftragssystem.
Die Frage nach der Möglichkeit, eine solche komplette Bibliothek zu erstellen, wenn MQL4-Code in MetaTrader 5 ohne Änderungen funktionieren kann, wurde nicht gelöst.
Achtung!
Die Bibliothek ist in nur einer Datei enthalten - MT4Orders.mqh. Alle anderen Dateien sind als Beispiele für die Verwendung der Bibliothek beigefügt. Diese Dateien werden nicht benötigt, um mit der Bibliothek zu arbeiten.
Während des Übergangs MT4->MT5 ist das schwierigste Hindernis das neue Bestellsystem. MT4Orders beseitigt diese Schwierigkeit vollständig. Die anderen Unterschiede sind nicht so entmutigend. Da sie leicht umgeschrieben werden können - es gibt bequeme Referenzdaten zu diesem Thema. Nun, die Korrektheit der Arbeit der Bibliothek wurde wie folgt demonstriert
Mehrere MT4/5-Advisors verschiedener Typen wurden (von kodobase) als Anwendungsbeispiel genommen: pips, news, martin, multicurrency, etc.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien.
Fehler, Bugs, Fragen
fxsaber, 2016.10.20 15:54
#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>
// Über MT5-Standardbibliothek - nur MT5
// Setzt SellLimit und setzt dann seinen SL/TP
void MT5Order( const double Price )
{
CTrade Trade;
if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE)
Trade.SetTypeFilling(ORDER_FILLING_RETURN);
Trade.OrderOpen(_Symbol, ORDER_TYPE_SELL_LIMIT, 1, 0, Price, 0, 0, ORDER_TIME_GTC, 0, __FUNCTION__);
const ulong Ticket = Trade.ResultOrder();
if (Ticket > 0)
{
COrderInfo Order;
if (Order.Select(Ticket))
Trade.OrderModify(Order.Ticket(), Order.PriceOpen(), Order.PriceOpen() + SLTP, Order.PriceOpen() - SLTP, Order.TypeTime(), Order.TimeExpiration());
}
}
#include <MT4Orders.mqh> // https://www.mql5.com/de/code/16006
// Über MT4-OSJS - plattformübergreifende Variante (MT4/5)
// Setzt SellLimit und setzt dann seinen SL/TP
void MT4Order( const double Price )
{
const int Ticket = OrderSend(_Symbol, OP_SELLLIMIT, 1, Price, 0, 0, 0, __FUNCTION__);
if ((Ticket > 0) && OrderSelect(Ticket, SELECT_BY_TICKET))
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + SLTP, OrderOpenPrice() - SLTP, OrderExpiration(), clrNONE);
}
void OnTick()
{
static bool FirstRun = true;
if (FirstRun)
{
const double Price = SymbolInfoDouble(_Symbol, SYMBOL_BID) + 100 * _Point;
MT5Order(Price); // Über MT5-Standardbibliothek - nur MT5
MT4Order(Price); // Über MT4-OSJS - plattformübergreifende Variante (MT4/5)
FirstRun = false;
}
}
Die gelb hervorgehobene MT4Order Funktion macht das Gleiche wie die MT5Order Funktion. In jedem Forum wird der gelbe Code sofort verstanden, der alternative MT5-Code nicht.
Und wie man für MT5 schreibt - das entscheidet jeder für sich selbst. Ich z.B. benutze MT4Orders und in seltenen Fällen auch reines (SB hat schwache Funktionalität) MQL5. Beide Schreibstile funktionieren parallel. Aber wenn man nur über MT4Orders schreibt, ist das Order-System plattformübergreifend. Daher übe ich, Code zu schreiben, der auf beiden Plattformen ohne Änderungen läuft.
Ich übe also, Code zu schreiben, der auf beiden Plattformen unverändert läuft.
Forum über Handel, automatisierte Handelssysteme und das Testen von Handelsstrategien
Wie kann man den letzten Schlusskurs einer Order ermitteln (MQL5)?
fxsaber, 2016.12.05 10:25 AM
void OnStart()
{
if (OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY))
Alert(OrderClosePrice());
}
{
int oldticket=0;
int Ticket=0;
ArrayResize(Mas_LOT,OrdersTotal(),3);
ArrayInitialize(Mas_LOT,0);
for(int i=0; i <= OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)){
if (OrderSymbol()==Symbol()&& OrderMagicNumber() == Magik){
Mas_LOT[i][0] = OrderTicket();
Mas_LOT[i][1] = OrderLots();
Mas_LOT[i][2] = OrderType();
Mas_LOT[i][3] = (OrderProfit() + OrderSwap() + OrderCommission());
Mas_LOT[i][4] = OrderStopLoss();
Mas_LOT[i][5] = OrderOpenPrice();
Mas_LOT[i][6] = OrderTakeProfit();
}}}}
wie man es am besten für mt5 mit MT4Orders.mqh Bibliothek konvertiert
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Neue Version von MetaTrader 5 build 1525: Darstellung der Historie in Form von Positionen und Verbesserung des Testers
fxsaber, 2017.01.27 19:20
Ausführen eines plattformübergreifenden Skripts
#property strict
#include <MT4Orders.mqh>
void OnStart()
{
MqlTick Tick;
if (SymbolInfoTick(_Symbol, Tick) && (OrdersTotal() == 0) &&
(OrderSend(_Symbol, OP_BUY, 1, Tick.ask, 0, 0, 0) > 0))
{
const double Lots[] = {0.6, 0.3, 0.1};
for (int i = 0; i < ArraySize(Lots); i++)
if (OrderSelect(0, SELECT_BY_POS) && SymbolInfoTick(_Symbol, Tick))
OrderClose(OrderTicket(), Lots[i], Tick.bid, 0);
const int Total = OrdersHistoryTotal();
for (int i = 0; i < Total; i++)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
OrderPrint();
}
}
Zuerst auf MT5-Hedge. Wir bekommen so einen schönen MT4-Ausdruck
#114769087 2017.01.27 19:57:25 buy 0.60 EURUSD 1.06838 0.00000 0.00000 2017.01.27 19:57:25 1.06829 0.00 0.00 -5.40 0
#114769088 2017.01.27 19:57:25 buy 0.30 EURUSD 1.06838 0.00000 0.00000 2017.01.27 19:57:25 1.06829 0.00 0.00 -2.70 0
#114769089 2017.01.27 19:57:25 buy 0.10 EURUSD 1.06838 0.00000 0.00000 2017.01.27 19:57:26 1.06829 0.00 0.00 -0.90 0
und einen klassischen Bericht
Zur Bestätigung führen wir das gleiche Skript auf MT4 aus.
Klassischer MT4-Bericht
Und der Ausdruck des Skriptprotokolls
#170039287 2017.01.27 20:00:57 buy 0.60 EURUSD 1.06854 0.00000 0.00000 2017.01.27 20:00:57 1.06836 0.00 0.00 -10.80 to #170039289 0
#170039289 2017.01.27 20:00:57 buy 0.30 EURUSD 1.06854 0.00000 0.00000 2017.01.27 20:00:58 1.06836 0.00 0.00 -5.40 to #170039290 0
#170039290 2017.01.27 20:00:57 buy 0.10 EURUSD 1.06854 0.00000 0.00000 2017.01.27 20:00:58 1.06836 0.00 0.00 -1.80 from #170039289 0
Sie können deutlich sehen, dass das Skriptprotokoll in MT4 und MT5 übereinstimmt - es funktioniert plattformübergreifend.
ZY Wenn die Skriptlogik für MT5 über SB geschrieben wird, wird das Skript nicht korrekt funktionieren. Im Allgemeinen ist es sogar schwierig zu sagen, wie man eine so einfache MQL4-Logik für MT5 schreiben kann.
Auswahl nach Symbol und Majic funktioniert nicht
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
}
OrderSelect nicht funktioniert nicht wählen Sie eine Bestellung (Ticket von Index), um mit ihm zu arbeiten, einfaches Beispiel im Anhang und es funktioniert nicht auf mt5 aus irgendeinem Grund