Yury Kirillov: Versuchen Sie, in Ihrem Expert Advisor alle möglichen Arten des Empfangs von Ticks und OnTick und CopyTicks zu verwenden, und vergleichen Sie dann die Ergebnisse und verwenden Sie die am besten geeignete Methode.
Und was hat OnTick() damit zu tun? Es ist nicht dazu gedacht, alle Zecken zu empfangen, sondern um die Tatsache des Zeckenempfangs zu verarbeiten. Sie brauchen hier nicht einmal etwas zu vergleichen, da OnTick() nicht bei jedem Tick aufgerufen wird und nicht alle Daten der MqlTick-Struktur empfangen kann.
Der Servicedesk bot an, es mit dem neuen Build 1545 zu versuchen. Aber das Ergebnis hat sich nicht geändert, wie zuvor, die Abfrage von Ticks von 10 Uhr bis 11 Uhr für einige Papiere liefert Null Arrays, und dann die Daten beginnen, aus irgendeinem Grund aus 11.00 kommen. Vielleicht sind die Häkchen danach schon "normal" bei der Abfrage, aber das ist nicht relevant.
Das ist so ziemlich die einzige Botschaft, die sie vermitteln. Es ist nun schon eine ganze Weile her, dass der Service Desk nicht mehr reagiert hat. Ist es normal, meine Nachrichten zu ignorieren?
antru: Das ist so ziemlich die einzige Botschaft, die sie vermitteln. Es ist jetzt schon eine ganze Weile her, dass der Service Desk nicht mehr reagiert hat. Ist es normal, meine Nachrichten zu ignorieren?
Was das Ignorieren Ihrer Nachrichten betrifft, so haben Sie den falschen Zweig. Es gibt einen separaten Thread über SD. Erinnern Sie sie daran, indem Sie einen Kommentar zur Bewerbung schreiben. Haben Sie den Code und andere Beweise dem BSB beigefügt?
Alexey Kozitsyn: Was das Ignorieren Ihrer Beiträge betrifft, so sind Sie im falschen Thema. Es gibt einen separaten Thread über SD. Erinnern Sie sie daran, indem Sie einen Kommentar auf die Bewerbung schreiben. Haben Sie dem BSB den Code und andere Beweise vorgelegt?
Ja, natürlich, sogar den Code erklärt... Schweigen... Danke für den Tipp, ich werde ihn in einem separaten Thread veröffentlichen.
Debugging-Code zur Überprüfung von CopyTicksRange erstellt. Da die Servicestelle ständig schweigt, habe ich mich gefragt, ob es einen Fehler im Code gibt. Meine Augen müssen glasig geworden sein... Bitte betrachten Sie sie mit neuen Augen.
Im Folgenden finden Sie den Code und im Anhang die Ergebnisse. Erste Zip - Start von Metatrader vor dem Handel, die zweite Zip - Start um 10:30 Uhr EST (Zeit in Debug-Dateien war 3 Stunden weniger).
Ich verstehe nicht, warum beim ersten Reißverschluss keine Zecken auf irgendeinem Papier zurückkamen.
Überhaupt nicht. Leute, wie bekommt man das Band in Echtzeit? Vielleicht erfinde ich das Rad neu und mache etwas falsch, können Sie mir einen Beispielcode geben, wie man Zecken auf Papieren in Echtzeit erhält?
Aus irgendeinem Grund werden die Ticks für den aktuellen Tag überhaupt nicht mehr angezeigt, sowohl nach dem alten als auch nach dem neuen Algorithmus... und unabhängig davon, ob das Menüband im Fenster eingeschaltet ist oder nicht...
Hier ist der Code, in den ich Ihre Funktion eingefügt habe...
//+------------------------------------------------------------------+//| Smelchak.mq5 |//| Pavel&Antru |//| |//+------------------------------------------------------------------+#property copyright"Pavel&Antru"#property link""#property version"1.00"bool g_bEnterInfoSent = false;
datetime g_dEndOfTheDay;
datetime g_dDayBegin;
long LastTime = 0; // time_msc-время последнего тика (самого свежего), полученного из историиint Count = 0; // Количество тиков в последенем запросе, у которых time_msc == LastTime// Возвращает свежие тики, пришедшие после предыдущего вызоваint GetFreshTicks( MqlTick &Ticks[], constuint flags = COPY_TICKS_TRADE, constuint count = 100000 )
{
int Res = 0;
MqlTick NewTicks[];
constint NewAmount = CopyTicks(Symbol(), NewTicks, flags, LastTime, count);
if ((NewAmount > 0) && (Count < NewAmount))
{
Res = ArrayCopy(Ticks, NewTicks, 0, Count);
// Взяли крайнее время из текущей истории
LastTime = NewTicks[NewAmount - 1].time_msc;
Count = 1;
// Находим (Count) в текущей истории количество тиков со временем LastTimefor (int i = NewAmount - 2; i >= 0; i--)
{
if (NewTicks[i].time_msc < LastTime)
break;
Count++;
}
}
return(Res);
}
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
EventSetTimer(3);
MqlDateTime startTime;
TimeGMT(startTime);
startTime.hour = 7;
startTime.min = 0;
startTime.sec = 0;
g_dDayBegin = StructToTime(startTime);
startTime.hour = 17;
startTime.min = 0;
startTime.sec = 0;
g_dEndOfTheDay = StructToTime(startTime);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
}
//+------------------------------------------------------------------+voidOnTimer()
{
MqlDateTime mdt;
datetime dCurrent = TimeCurrent(mdt);
if (!g_bEnterInfoSent && mdt.hour + 3 == 9)
{
MqlDateTime startTime;
TimeGMT(startTime);
startTime.hour = 7;
startTime.min = 0;
startTime.sec = 0;
g_dDayBegin = StructToTime(startTime);
startTime.hour = 17;
startTime.min = 0;
startTime.sec = 0;
g_dEndOfTheDay = StructToTime(startTime);
g_bEnterInfoSent = true;
}
if (g_bEnterInfoSent && mdt.hour + 3 == 22)
{
g_bEnterInfoSent = false;
}
datetime lastTime = TimeCurrent();
if (true)
{
MqlTick tick[];
int nResult = GetFreshTicks(tick);
MqlDateTime tickTime;
if (ArraySize(tick))
{
TimeToStruct(tick[0].time, tickTime);
string sTicksFileName = StringFormat("%s.ticks.%.04d.%.02d.%.02d.csv", Symbol(), tickTime.year, tickTime.mon, tickTime.day);
int nTicksOutputFile = FileOpen(sTicksFileName, FILE_READ | FILE_WRITE | FILE_CSV, ',');
if (nTicksOutputFile == INVALID_HANDLE) nTicksOutputFile = FileOpen(sTicksFileName, FILE_WRITE | FILE_CSV, ',');
if (nTicksOutputFile != INVALID_HANDLE)
{
FileSeek(nTicksOutputFile, 0, SEEK_END);
MqlDateTime tickTime;
for (int i = 0; i<ArraySize(tick); i++)
{
TimeToStruct(tick[i].time, tickTime);
FileWrite(nTicksOutputFile, StringFormat("%.04d.%.02d.%.02d %.02d:%.02d:%.02d.000", tickTime.year, tickTime.mon, tickTime.day,
tickTime.hour, tickTime.min, tickTime.sec),
tick[i].bid,
tick[i].ask,
tick[i].last,
tick[i].volume,
((tick[i].flags & TICK_FLAG_BUY) ? "Buy" : "") +
((tick[i].flags & TICK_FLAG_SELL) ? "Sell" : ""));
}
FileClose(nTicksOutputFile);
}
g_dDayBegin = dCurrent;
}
}
}
Daraufhin habe ich es mit zwei Papieren, ALRS und AFLT, durchgeführt. Die Zecken kamen erst in den letzten Tagen zurück. Für heute keine. Was könnte das sein?
Aus irgendeinem Grund werden die Ticks für den aktuellen Tag überhaupt nicht mehr angezeigt, sowohl nach dem alten als auch nach dem neuen Algorithmus... und unabhängig davon, ob das Ribbon im Fenster eingeschaltet ist oder nicht...
Hier ist der Code, in den ich Ihre Funktion eingefügt habe...
Daraufhin habe ich es mit zwei Papieren, ALRS und AFLT, durchgeführt. Die Zecken kamen erst in den letzten Tagen zurück. Für heute keine. Was könnte das sein?
In den Fenstern in der Multifunktionsleiste gibt es Häkchen, ich habe 100000 letzte Häkchen gespeichert - keine Häkchen für heute
Versuchen Sie, in Ihrem Expert Advisor alle möglichen Arten des Empfangs von Ticks und OnTick und CopyTicks zu verwenden, und vergleichen Sie dann die Ergebnisse und verwenden Sie die am besten geeignete Methode.
Das ist so ziemlich die einzige Botschaft, die sie vermitteln. Es ist jetzt schon eine ganze Weile her, dass der Service Desk nicht mehr reagiert hat. Ist es normal, meine Nachrichten zu ignorieren?
Was das Ignorieren Ihrer Beiträge betrifft, so sind Sie im falschen Thema. Es gibt einen separaten Thread über SD. Erinnern Sie sie daran, indem Sie einen Kommentar auf die Bewerbung schreiben. Haben Sie dem BSB den Code und andere Beweise vorgelegt?
Ja, natürlich, sogar den Code erklärt... Schweigen... Danke für den Tipp, ich werde ihn in einem separaten Thread veröffentlichen.
Debugging-Code zur Überprüfung von CopyTicksRange erstellt. Da die Servicestelle ständig schweigt, habe ich mich gefragt, ob es einen Fehler im Code gibt. Meine Augen müssen glasig geworden sein... Bitte betrachten Sie sie mit neuen Augen.
Im Folgenden finden Sie den Code und im Anhang die Ergebnisse. Erste Zip - Start von Metatrader vor dem Handel, die zweite Zip - Start um 10:30 Uhr EST (Zeit in Debug-Dateien war 3 Stunden weniger).
Ich verstehe nicht, warum beim ersten Reißverschluss keine Zecken auf irgendeinem Papier zurückkamen.
Überhaupt nicht. Leute, wie bekommt man das Band in Echtzeit? Vielleicht erfinde ich das Rad neu und mache etwas falsch, können Sie mir einen Beispielcode geben, wie man Zecken auf Papieren in Echtzeit erhält?
Leute, wie bekommt man den Feed in Echtzeit?
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Mysteriöser Aktienindikator
fxsaber, 2016.10.04 11:28
Aus irgendeinem Grund werden die Ticks für den aktuellen Tag überhaupt nicht mehr angezeigt, sowohl nach dem alten als auch nach dem neuen Algorithmus... und unabhängig davon, ob das Menüband im Fenster eingeschaltet ist oder nicht...
Hier ist der Code, in den ich Ihre Funktion eingefügt habe...
Daraufhin habe ich es mit zwei Papieren, ALRS und AFLT, durchgeführt. Die Zecken kamen erst in den letzten Tagen zurück. Für heute keine. Was könnte das sein?
Aus irgendeinem Grund werden die Ticks für den aktuellen Tag überhaupt nicht mehr angezeigt, sowohl nach dem alten als auch nach dem neuen Algorithmus... und unabhängig davon, ob das Ribbon im Fenster eingeschaltet ist oder nicht...
Hier ist der Code, in den ich Ihre Funktion eingefügt habe...
Daraufhin habe ich es mit zwei Papieren, ALRS und AFLT, durchgeführt. Die Zecken kamen erst in den letzten Tagen zurück. Für heute keine. Was könnte das sein?
In den Fenstern in der Multifunktionsleiste gibt es Häkchen, ich habe 100000 letzte Häkchen gespeichert - keine Häkchen für heute