Wenn CopyTicks während einer langen Ausführung im kalten Zustand (mit Upload vom Server) eine Orderänderung vornimmt, geschieht dies (nicht auf dem Server, sondern im Terminal - OnTradeTransaction) mit erheblicher Verzögerung.
Zum Beispiel, im normalen Modus 100 ms, im höheren Modus - 2000 ms.
Ich muss lernen, mit Zecken irgendwie sparsam umzugehen. Es klappt nicht.
Wie kann man CopyTicks schnell und ohne Hunderte von Megabytes zu verbrauchen, in die Nähe von Ticks bringen?
#property description"Если ваш робот использует тики (таких не встречал!),"#property description"то вы сталкиваетесь либо с тормозами,"#property description"либо с запредельным использованием памяти."#property description"Что не позволит вам спокойно поставить робота на VPS.\n"#property description"Для тех, кто считает возможным для себя участие в деле исправления этого бага,"#property description"просто опубликуйте результат выполнения этого скрипта по ссылке ниже.\n"#property description"https://www.mql5.com/ru/forum/342090/page81#comment_20534660"#property description"Эта ссылка доступна к копировнию в буфер обмена в Журнале (Эксперты)."#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279constbool Init = EventSetTimer(1);
// Вызывается CopyTicks для каждого символа из Обзора рынка.void CopyTicks_Test()
{
staticMqlTick Ticks[2000];
for (int i = SymbolsTotal(true) - 1; !IsStopped() && (i >= 0); i--)
{
conststring Symb = SymbolName(i, true);
if (!SymbolInfoInteger(Symb, SYMBOL_CUSTOM))
{
CopyTicks(Symb, Ticks, COPY_TICKS_ALL, TimeCurrent() * 1000, 1);
// CopyTicksRange(Symb, Ticks, COPY_TICKS_ALL, TimeCurrent() * 1000);
}
}
}
// Вызывается CopyTicksRange для каждого символа из Обзора рынка.void CopyTicksRange_Test()
{
staticMqlTick Ticks[2000];
for (int i = SymbolsTotal(true) - 1; !IsStopped() && (i >= 0); i--)
{
conststring Symb = SymbolName(i, true);
if (!SymbolInfoInteger(Symb, SYMBOL_CUSTOM))
{
// CopyTicks(Symb, Ticks, COPY_TICKS_ALL, TimeCurrent() * 1000, 1);CopyTicksRange(Symb, Ticks, COPY_TICKS_ALL, TimeCurrent() * 1000);
}
}
}
#define PRINT(A) Print(#A + " = " + (string)(A))
voidOnDeinit( constint )
{
PRINT(SymbolsTotal(true));
PRINT(TerminalInfoInteger(TERMINAL_MEMORY_USED));
Print("https://www.mql5.com/ru/forum/342090/page81#comment_20534660");
}
voidOnTimer()
{
staticint Count = 0;
_BV(CopyTicks_Test(), 1); // Очень много потребляет CPU, выполняется медленно, память не использует.
_BV(CopyTicksRange_Test(), 1); // Очень много потребляет RAM, выполняется быстроComment(TimeCurrent());
if (Count++ > 9)
ExpertRemove();
}
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Wenn CopyTicks während einer langen Ausführung im kalten Zustand (mit Upload vom Server) eine Orderänderung vornimmt, geschieht dies (nicht auf dem Server, sondern im Terminal - OnTradeTransaction) mit erheblicher Verzögerung.
Zum Beispiel, im normalen Modus 100 ms, im höheren Modus - 2000 ms.
Wie kann man CopyTicks schnell und ohne Hunderte von Megabytes zu verbrauchen, in die Nähe von Ticks bringen?
Suchbegriff: Oshibka 024.
Ich muss lernen, mit Zecken irgendwie sparsam umzugehen. Es klappt nicht.
Wie kann man CopyTicks durch die nächsten Ticks schnell machen und nicht hunderte von Megabytes verbrauchen?
Suchbegriff: Oshibka 024.
Danke, die Protokolle zeigen das CopyTicks-Problem gut.
Danke, die Protokolle zeigen das CopyTicks-Problem gut.
Sab, Spionage-Indikator arbeiten Sie nicht mit ihm, ich habe eine Menge Fragen
Durch id, anstelle von String Roboter bekommt arbeiten Symbol, aber heute 2 Terminals bekam unterschiedlichen Status auf Trades
auf M1 in spyro über calculated=, es wird geprüft, ob eine neue Berechnung vorliegt und dann an den Roboter gesendet
Sub, Spionage-Indikator arbeiten Sie nicht mit ihm, ich habe eine Menge Fragen
Nur unter MT4 - in KB liegt.
Nur unter MT4 - in KB liegt.
sehen Sie sich keine benutzerdefinierten Basen an, das ist etwas für Schwächlinge
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
MT5 und Geschwindigkeit in Aktion
Dzmitry Manannikov, 2021.02.05 14:38
Wenn Sie die Anzahl der Symbole erhöhen, werden Sie das Problem des hohen Speicherverbrauchs feststellen.
Ich schaue mir keine benutzerdefinierten Basen an, das ist etwas für Schwächlinge.
Ich werde nicht auf Beiträge antworten, die ich nicht verstehe.