Fehler, Irrtümer, Fragen - Seite 1740
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
2016.10.20 15:40:41 Core 1 connection closed
2016.10.20 15:40:16 History nothing to analyze
2016.10.20 15:40:16 Core 1 common synchronization completed
2016.10.20 15:40:16 Tester RTS-12.16,M1 (BCS-MetaTrader5): visual testing of Experts\fxsaber\Test9.ex5 from 2016.10.19 00:00 to 2016.10.20 00:00
2016.10.20 15:40:16 Core 1 authorized (agent build 1455)
2016.10.20 15:40:16 Core 1 connected
2016.10.20 15:40:16 Core 1 connecting to 127.0.0.1:3000
Wenn es plötzlich keine Geschichte gibt, warum gibt es dann einen einzigen Lauf von 28 (25 + 3) Sekunden? Es geht auch um die Cloud!
Dies geschah, während das Visualisierungsfenster geöffnet war, das ich sicher vergessen hatte. Das ergibt keinen Sinn.
Ich bin mit dem Testgerät nicht gefahren.
#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>
// Через MT5-Стандартную Библиотеку - only MT5
// Выставляет SellLimit и затем устаналивает ему 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/ru/code/16006
// Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
// Выставляет SellLimit и затем устаналивает ему 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); // Через MT5-Стандартную Библиотеку - only MT5
MT4Order(Price); // Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
FirstRun = false;
}
}
Das Ergebnis (bottom-up)
2016.10.20 16:49:14.987 2016.10.18 10:00:00 sell limit 1.00 RTS-12.16 at 100 (0 / 0 / 97600)
2016.10.20 16:49:14.987 2016.10.18 10:00:00 CTrade::OrderSend: modify #2 at 100.00000 (sl: 110.00000 tp: 90.00000) [invalid fill]
2016.10.20 16:49:14.987 2016.10.18 10:00:00 failed modify order #2 sell limit 1.00 at 100.00000 sl: 0.00000 tp: 0.00000 -> 100.00000, sl: 110.00000 tp: 90.00000 [Unsupported filling mode]
2016.10.20 16:49:14.987 2016.10.18 10:00:00 CTrade::OrderSend: sell limit 1.00 RTS-12.16 at 100 [done]
2016.10.20 16:49:14.986 2016.10.18 10:00:00 sell limit 1.00 RTS-12.16 at 100 (0 / 0 / 97600)
2016.10.20 16:49:14.985 RTS-12.16 : real ticks begin from 2016.10.18 00:00:00
Studierte die Standardbibliothek und schrieb einen Test EA
#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>
// Через MT5-Стандартную Библиотеку - only MT5
// Выставляет SellLimit и затем устаналивает ему 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/ru/code/16006
// Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
// Выставляет SellLimit и затем устаналивает ему 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); // Через MT5-Стандартную Библиотеку - only MT5
MT4Order(Price); // Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
FirstRun = false;
}
}
Das Ergebnis (von unten nach oben)
2016.10.20 16:49:14.987 2016.10.18 10:00:00 sell limit 1.00 RTS-12.16 at 100 (0 / 0 / 97600)
2016.10.20 16:49:14.987 2016.10.18 10:00:00 CTrade::OrderSend: modify #2 at 100.00000 (sl: 110.00000 tp: 90.00000) [invalid fill]
2016.10.20 16:49:14.987 2016.10.18 10:00:00 failed modify order #2 sell limit 1.00 at 100.00000 sl: 0.00000 tp: 0.00000 -> 100.00000, sl: 110.00000 tp: 90.00000 [Unsupported filling mode]
2016.10.20 16:49:14.987 2016.10.18 10:00:00 CTrade::OrderSend: sell limit 1.00 RTS-12.16 at 100 [done]
2016.10.20 16:49:14.986 2016.10.18 10:00:00 sell limit 1.00 RTS-12.16 at 100 (0 / 0 / 97600)
2016.10.20 16:49:14.985 RTS-12.16 : real ticks begin from 2016.10.18 00:00:00
Ich habe Ihren Code selbst ausgeführt (ohne MT4):
2016.10.20 19:05:31.150 2016.09.16 10:00:00 deal performed [#3 buy 1.00 RTS-12.16 at 96500]
2016.10.20 19:05:31.150 2016.09.16 10:00:00 deal #3 buy 1.00 RTS-12.16 at 96500 done (based on order #3)
2016.10.20 19:05:31.150 2016.09.16 10:00:00 stop loss triggered #2 sell 1.00 RTS-12.16 100 sl: 110 tp: 90 [#3 buy 1.00 RTS-12.16 at 110]
2016.10.20 19:05:31.148 2016.09.16 10:00:00 order performed sell 1.00 at 100 [#2 sell limit 1.00 RTS-12.16 at 100]
2016.10.20 19:05:31.148 2016.09.16 10:00:00 deal performed [#2 sell 1.00 RTS-12.16 at 100]
2016.10.20 19:05:31.148 2016.09.16 10:00:00 deal #2 sell 1.00 RTS-12.16 at 100 done (based on order #2)
2016.10.20 19:05:31.148 2016.09.16 10:00:00 order [#2 sell limit 1.00 RTS-12.16 at 100] triggered
2016.10.20 19:05:31.121 2016.09.16 10:00:00 CTrade::OrderSend: modify #2 at 100.00000 (sl: 110.00000 tp: 90.00000) [done]
2016.10.20 19:05:31.121 2016.09.16 10:00:00 order modified [#2 sell limit 1.00 RTS-12.16 at 100]
2016.10.20 19:05:31.121 2016.09.16 10:00:00 CTrade::OrderSend: sell limit 1.00 RTS-12.16 at 100 [done]
2016.10.20 19:05:31.121 2016.09.16 10:00:00 sell limit 1.00 RTS-12.16 at 100 (0 / 0 / 96650)
2016.10.20 19:05:31.118 RTS-12.16 : real ticks begin from 2016.09.16 00:00:00
2016.10.20 19:05:30.941 RTS-12.16,M1: testing of Experts\test_filling_mode.ex5 from 2016.09.16 00:00 to 2016.09.20 00:00 started
2016.10.20 19:05:30.941 RTS-12.16,M1 (Open-Broker): generating based on real ticks
2016.10.20 19:05:30.940 RTS-12.16,M1: history begins from 2015.01.15 10:08
2016.10.20 19:05:30.937 RTS-12.16,M1: history cache allocated for 645942 bars and contains 15277 bars from 2015.01.15 10:08 to 2016.09.15 23:49
#define SLTP (10 * _Point)
#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
static bool FirstRun=true;
if(FirstRun)
{
const double Price=SymbolInfoDouble(_Symbol,SYMBOL_BID)+100*_Point;
MT5Order(Price); // Через MT5-Стандартную Библиотеку - only MT5
//MT4Order(Price); // Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
FirstRun=false;
}
}
//+------------------------------------------------------------------+
// Через MT5-Стандартную Библиотеку - only MT5
// Выставляет SellLimit и затем устаналивает ему 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());
}
}
//+------------------------------------------------------------------+
Ich habe Ihren Code auf meinem System ausgeführt (ohne MT4):
Dies könnte der Fall sein.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Wanzen, Wanzen, Fragen
fxsaber, 2016.10.18 22:00
Fehler in der Web-Engine
Ich habe es nicht bemerkt.
Da es niemanden stört, außer natürlich ein paar Auserwählte, hat es wahrscheinlich eine höhere Priorität.
Soweit ich das beurteilen kann, ist diese Funktion ein Jahr alt.
{
public:
virtual string classname() const
{
return(typename(this));
}
};
class B : public A
{
public:
virtual string classname() const
{
return(typename(this));
}
};
void OnStart()
{
B b;
Print(b.classname());
}
Sie müssen in jeder geerbten Klasse dasselbe schreiben
{
return(typename(this));
}
Wird es möglich sein, solche Schwänze in MQL nicht zu ziehen?