[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 648

 
Es funktioniert immer noch nicht... Können Sie mir mehr Details für die Dummen geben? Schauen wir mal... Was soll ich meinem Code vorangestellt haben? Welche Variablen? Ich kann die Funktion nicht aufrufen... Haben Sie mehrere Wege zur Lösung des Problems geschrieben oder nur einen? Ich habe eine Schwäche für so etwas...
 
r772ra:

Sie können dies tun.....
Eine solche Variante wird nicht korrekt funktionieren, da NewBar nur beim ersten Tick des Balkens den Wert true liefert. Für die korrekte Arbeit ist es notwendig, die Zeilen FunNewBar(); if(!NewBar) return; innerhalb der Bedingung der Handelseröffnung und nach der erfolgreichen Eröffnung zu platzieren.
 
alsu:
Diese Variante wird nicht korrekt funktionieren, da NewBar nur beim ersten Tick des Balkens true ist. Um korrekt zu arbeiten, sollten wir die FunNewBar(); if(!NewBar) return; Zeile innerhalb der Bedingung der Handelseröffnung und nach erfolgreicher Eröffnung platzieren.
Allerdings wird es auch so nicht ganz korrekt sein. Kurz gesagt, die Variante von r772ra muss korrigiert werden, und besser noch, wir sollten einen grundlegend anderen Ansatz wählen, z. B. die Zeit des letzten geöffneten Auftrags in der Historie beobachten und sie mit der Zeit des aktuellen Balkens vergleichen - das wird viel zuverlässiger sein.
 
alsu:
Auch wenn sie nicht ganz korrekt sein wird. Kurz gesagt, die Variante von r772ra sollte korrigiert werden, und es ist besser, einen grundlegend anderen Ansatz zu verwenden, z.B. die Öffnungszeit der letzten Bestellung in der Historie zu beobachten und mit der Zeit des aktuellen Taktes zu vergleichen - das wird viel zuverlässiger sein

Es geht ungefähr so.

int BarOfLastOrder(int magic)
{
   int i,ot=OrdersTotal();
   
   for(i=ot-1; i>=0; i--);
   {
      OrderSelect(i,SELECT_BY_POS);
      if(OrderMagicNumber()==magic) return(iBarShift(0,0,OrderOpenTime()));
   }
   
   return(-1);
}

int start()
{

   ........

   int bar_of_last_order = BarOfLastOrder(magic); // указать магик, который использует советник

   switch(bar_of_last_order)
   {
      case 0:
         //последний ордер открыт на текущем баре
         ...
         break;
      case -1:
         //ордеров нет
         // здесь break не ставим, если ситуация "нет ордеров" и "последний ордер открыт не на текущем баре" нужно обрабатывать одинаково
         // в противном случае написать обработку и break;
      default:
         //последний ордер открыт не на текущем баре
         ...
         break;
   }

   .........

}
 
Ich danke Ihnen! Ich werde es ausprobieren...
 
7sintez:
Ich danke Ihnen! Ich werde es ausprobieren...
den Code optimiert
 
alsu:
den Code optimiert
Aha!!! Ich werde jetzt versuchen, etwas dagegen zu tun...
 

Juhu!!! Ich habe es geschafft

{
static datetime New_Time=0;
Neuer_Balken=false;
if(Neue_Zeit!=Zeit[0])
{
Neue_Zeit=Zeit[0];
Neuer_Balken=true;
}
}

 
7sintez:
Vielen Dank!!! Wird es funktionieren, wenn ich das Signal auf den ersten Minus-Balken nach der Eröffnung setze?

 
Ich danke Ihnen allen sehr für Ihre Hilfe! Die Codes habe ich noch nicht verwendet - ich habe sie in den Notizblock kopiert! Ich werde sie mir ansehen, wenn ich die Zeit dazu habe! Danke, Freunde, immer wieder!