Fehler, Irrtümer, Fragen - Seite 308

 
aharata:
Versuchen Sie, in der Hilfe über BarsCalculated zu lesen, die übrigens das richtige Beispiel liefert.

Versuchen wir es mit diesem hier. Ich danke Ihnen!
 
Im_hungry:

das heißt, solange CopyBuffer>0 ist, berechnen wir es, und der neue Parameter (Close())

erscheint, wenn die Position geschlossen ist. Mit anderen Worten, wir müssen While in einer Schleife durchlaufen. Das sieht dann so aus.

Ich würde es so formulieren: "Solange CopyBuffer<0 ist, wiederholen wir den Aufruf dieser Funktion".

Die While (vhandle>0)-Zeile scheint keine besondere Last zu tragen, denn im Falle des ersten CopyBuffer<0 wird sie return(0);

Ich würde in dieser Richtung arbeiten:

if(!PositionSelect(Symbol1) && !PositionSelect(Symbol2))
  {
   for(uchar u=0;u<100;u++)  //запускаем цикл с ограниченным количеством шагов
    {
     if(CopyBuffer(vhandle,0,0,50,Sp1Buffer) && CopyBuffer(vhandle,1,0,50,Sp2Buffer))
      {
       return(true);  //дождались копирования буферов - выходим
      }
     else
      {
       if(u==99) //т.е. выявляем последний шаг нашего цикла for, который не принёс ожидаемых результатов
         {
          Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError());
          return(0);
         }
       Sleep(50);  //засыпаем ненадолго (хотя я сам не сторонник использования Sleep в теле OnTick)
      }
    }
  }

Im Allgemeinen etwas in dieser Richtung, je nach Ermessen des Autors. Wie zu Recht erwähnt, könnte ein Referenzhandbuch nicht schaden.

 
aharata:
Versuchen Sie, in der Hilfe über BarsCalculated nachzulesen, dort ist übrigens das richtige Beispiel angegeben.

Vielen Dank für die Empfehlung gemacht - funktioniert, scheint keine Bugs zu haben (1 Monat getestet)

Hier ist mein funktionierender Code für das erste Paar

void OnTick()
{ 
   if (isNewBar()==true && proverkaHANDLA()==true)
     {
      if (!PositionSelect(Symbol1))
         {
          BSOpen();
         }
     }    
}
//+==================================================================+
bool proverkaHANDLA()
{
  ArraySetAsSeries(Sp1Buffer,true);
  ArraySetAsSeries(Sp2Buffer,true);
  vhandle=iCustom(NULL,0,"МТ5",Symbol1,100,Lots,1,Close());
  ResetLastError();
  int copied0=CopyBuffer(vhandle,0,0,50,Sp1Buffer);
  int copied1=CopyBuffer(vhandle,1,0,50,Sp2Buffer);
  if(copied0<=0 || copied1<=0)
     {
      Sleep(50);
      for(int i=0;i<100;i++)
        {
         if(BarsCalculated(vhandle)>0)
         break;
         Sleep(50);
        }
      copied0=CopyBuffer(vhandle,0,0,50,Sp1Buffer);
      copied1=CopyBuffer(vhandle,1,0,50,Sp2Buffer);
      if(copied0<=0 || copied1<=0)
        {
         Print("Не удалось скопировать Буфера индюков :-)",GetLastError(),
         "copied0",copied0,"copied1=",copied1);
         return (false); 
        }
       Print("Удалось скопировать Буфера :-)copied0",copied0,"copied1=",copied1);
       return (true);
     }
   Print("Удалось скопировать Буфера. Sp1Buffer=",ArraySize(Sp1Buffer),
         "Sp2Buffer=",ArraySize(Sp2Buffer));
   return (true);
}
 
Yedelkin:

Ich würde sagen: "Solange CopyBuffer<0, wiederhole den Aufruf dieser Funktion".

Die While (vhandle>0)-Zeile scheint keine große Last zu sein, denn im Falle des ersten CopyBuffer<0 würde sie(0) zurückgeben;

Ich würde in dieser Richtung arbeiten:

Im Grunde genommen liegt so etwas im Ermessen des Autors. Wie Sie richtig bemerkt haben, kann ein Nachschlagewerk nicht schaden.

Es ist sogar noch einfacher: Wir wollen sehen, welcher der beiden Ansätze besser und schneller ist - das werden wir tun,

Danke an alle! Gehen wir zum Test.

 
Entwickler, bitte beachten Sie die Anwendung #33601 (es gibt eine "tolle Funktion" über die Hebelwirkung in verschiedenen Betriebssystemen)...
 
Interesting:
Entwickler, bitte beachten Sie die Anfrage #33601 (es gibt ein "großartiges Feature" zur Hebelwirkung in verschiedenen Betriebssystemen)...

Vielleicht verwenden Sie Terminals, die ursprünglich von anderen Brokern installiert wurden? Bitte fügen Sie Ihrer Bewerbung weitere Details hinzu.
 
Rosh:
Vielleicht verwenden Sie Terminals, die ursprünglich von anderen Brokern installiert wurden? Bitte fügen Sie Ihrer Bewerbung weitere Details hinzu.
Ich wurde über die Terminals aufgeklärt und darüber, was ich am Ende bekommen muss.
 

Frage an die Entwickler.

Bei den Spreads ist alles klar, sie werden in Balken gespeichert und der Tester kann die gesamte Historie unter Berücksichtigung der sich ändernden Spreads durchlaufen (wenn die Historie normal geladen ist), aber was ist mit Swaps?

Was passiert also, wenn der Makler/Händler die Swap-Sätze oder die Provisionen ändert?

Ich verstehe, dass die Situation ein wenig absurd ist, aber trotzdem.

Wenn ich richtig verstehe, jetzt Tester als in MT4 wird Swaps und Kommission letzten .... nehmen

PS

Nochmals präzisiert, jetzt mit Screenshots....

 
Interesting:

Frage an die Entwickler.

Bei den Spreads ist alles klar, sie werden in Balken gespeichert und der Tester kann die gesamte Historie unter Berücksichtigung der sich ändernden Spreads durchlaufen (wenn die Historie normal geladen ist), aber was ist mit Swaps?

Das heißt, was passiert, wenn ein Makler/Händler den Umfang der Swaps oder der Provisionen ändert?

Der Verlauf von Swaps und Provisionen wird nicht gespeichert, diese Einstellungen werden von der letzten Verbindung übernommen.
 
Rosh:
Swap- und Provisionshistorie werden nicht gespeichert, diese Einstellungen werden von der letzten Verbindung übernommen
Verstehe, das habe ich mir auch gedacht. Hoffen wir, dass sie sich nicht oft/gar nicht ändern.
Grund der Beschwerde: