Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1044

 
LRA:

int Flags=FILE_WRITE+FILE_TXT+FILE_COMMON;

int Info = FileOpen(fName,Flags);

FileWrite(Info,What's Up); Auf dem anderen Terminal, lesen. Cursor bei FileOpen und F1 - Hilfe anfordern

Danke, ich werde es mir ansehen!
 

Hallo zusammen.

Mein Zeitreihen-Array wird in der Zeichenfolge der Handelsereignisdefinition nicht aktualisiert (wenn eine neue Kerze erscheint), bzw. sein Wert ändert sich nicht, wenn eine neue Kerze erscheint.

if(T[i]!=iTime(NULL,TF[i],1))

T[i] wird zum ersten Mal beim Start des Expert Advisors gesetzt, und dann, wenn eine neue Kerze erscheint, wird der Wert aktualisiert.

Der Parameter I wird auf der Grundlage der Eingangsparameter festgelegt.

Was ist interessant, die Version, wo ich mehrere TFs verwendet, um zu arbeiten, und musste eine for-Schleife verwenden, weil das, alles funktionierte gut, aber es scheitert hier - es ist nicht aktualisiert, und das ist es...(

 
Igemon:

Hallo zusammen.

Mein Zeitreihen-Array wird in der Zeichenfolge der Handelsereignisdefinition nicht aktualisiert (wenn eine neue Kerze erscheint), bzw. sein Wert ändert sich nicht, wenn eine neue Kerze erscheint.

T[i] wird zum ersten Mal beim Start des Expert Advisors gesetzt, und dann, wenn eine neue Kerze erscheint, wird der Wert aktualisiert.

Der Parameter I wird auf der Grundlage der Eingangsparameter festgelegt.

Interessant ist, dass ich mehrere TFs verwendet habe, um in der Version zu arbeiten, in der ich eine for-Schleife verwenden musste, und es hat gut funktioniert, aber jetzt schlägt es fehl - es wird einfach nicht aktualisiert...(

Offenbar wurde sie nicht richtig aus der Schleife gezogen...

Hier ist eine benutzerdefinierte Funktion zur Definition eines neuen Balkens

bool NewBar(int tf, datetime &lastbar)
{
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

Eingabevariablen:

tf - Diagrammperiode oder Periodenwert zur Bestimmung des Auftretens eines neuen Balkens.

lastbar - eine Variable, die als Referenz übergeben wird, um den Zeitpunkt des letzten Taktes zu speichern.

void OnTick()
{
// хотим определить наступление нового дня
 static datetime lastDay, lastHour;
 bool newDay, newHour;
 newDay = NewBar(PERIOD_D1, lastDay);
 if(newDay)
 Print("наступил новый день");
// и нового часа
 newHour = NewBar(PERIOD_H1, lastHour);
 if(newHour)
 Print("наступил новый час");
}
 
AlexeyVik
bool NewBar(int tf, datetime &lastbar)
{
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

Beim ersten Aufruf durch den EA meldet er sofort einen neuen Balken. Behoben durch Hinzufügen von Funktionsaufrufen zu OnInit()

Beim ersten Aufruf durch das Skript meldet es sofort einen neuen Takt, danach ist es immer falsch. Behoben durch Hinzufügen von RefreshRates() am Anfang der Funktion

 
LRA:

Beim ersten Aufruf durch den EA meldet er sofort einen neuen Balken. Behoben durch Hinzufügen von Funktionsaufrufen zu OnInit()

Beim ersten Aufruf durch das Skript meldet es sofort einen neuen Takt, danach ist es immer falsch. Behoben durch Hinzufügen von RefreshRates() am Anfang der Funktion

1. Beim ersten Aufruf ist es ganz normal, dass, wenn es keine Balken gab, der neu erschienene Balken der neue sein wird. Gegebenenfalls, wenn es die Strategie erfordert, kann man auf diese Weise einen neuen Balken und einige weitere ablehnen. Auf einen Blick, ohne nachzudenken, stelle ich zwei weitere vor.

static datetime lastDay = iTime(_Symbol, PERIOD_D1, 0);, lastHour = iTime(_Symbol, PERIOD_H1, 0);

oder

if(lastbar != curbar && lastbar > 0)

2. Warum sollte das Skript einen neuen Balken definieren? Inwieweit ist das dumm?

 

Aber warum funktioniert es hier nicht...((( Ich denke, es ist in Ordnung(

extern int TFrame=1;

datetime T[6];
int TF[6]={1,5,15,30,60,240};
int i=TFrame-1;

int OnInit()
   {
   T[0]=iTime(NULL,1,1);
   T[1]=iTime(NULL,5,1);
   T[2]=iTime(NULL,15,1);
   T[3]=iTime(NULL,30,1);
   T[4]=iTime(NULL,60,1);
   T[5]=iTime(NULL,240,1);
   for(int q=0;q<=5;q++)
      Print(T[q]);
   return(INIT_SUCCEEDED);
   }
 
void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
 

Igemon:

void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
Entschuldigen Sie, Ygemon, aber warum dieser Leichtsinn? Welcher freundliche Mensch hat Ihnen das geraten?
 
Einen guten Tag an alle. Könnte mir bitte jemand einen Rat geben: Wie kann ich sicherstellen, dass der EA ordnungsgemäß funktioniert, d. h. dass er einen bestimmten Algorithmus ausführt, wenn das Terminal neu gestartet oder die Internetverbindung getrennt wird?
 
artmedia70:
Entschuldigen Sie, Ygemon, aber warum dieser Leichtsinn? Welcher freundliche Mensch hat Ihnen das geraten?
Was ist daran falsch? Ich habe nur den Rest des Codes nicht eingefügt, weil dort alles normal ist. Die Schleife ist erforderlich, um nicht auf Ticks abhängen, bei der Definition von Ereignissen, nicht auf den PC neu zu starten ist Schlaf bei 100 mlsec