[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 568

 
Catrock >>:

Скажите пожалуйста, как реализовать условие.-

If( есть отложенные ордера) то делаем то и то ;

 for(int i=0; i<OrdersTotal();i++)
  {
  OrderSelect(i,SELECT_BY_POS);
  if(OrderType()==2||3||4||5) // Есть ли отложники?
   {
   // Действия
   }
  }
 

Dankeschön) Doch damit war die Situation nicht gelöst.

Folgende Situation: Ich hatte einen schwebenden Auftrag des Typs 5(Sell Stop) und dann erreichte der Preis diesen und er wurde zu einem Marktauftrag. Hat sich die Auftragsart geändert? D.h. hat sich 5 in seinen Eigenschaften verändert?

Wenn ich die oben genannte Kombination einfüge, ändern die "Aktionen" immer noch die Merkmale des offenen Auftrags, was sie aber nicht sollten. Deshalb möchte ich es zu einer Bedingung machen, so dass die Aktionen nur auf schwebende Aufträge angewendet werden.

         if(OrdersTotal())                                              // Если стоят ордера в списке
         {
             OrderSelect(0, SELECT_BY_POS);                             // Выбираем первый
             if(OrderType()==(2||3||4||5))                              // Если он не открытый то можем модифицировать
             {
               Alert("Что то делаю с ордером =)");
               if (PricePointNew>PricePointOld)
               OrderModify( Ticket, PricePointNew-5*0.0001, PriсeStopNew+8*0.0001 , PricePointNew-Profit*0.0001 ,0 ,Green);
                else Print("OrderModify 1 вернул ошибку - ",GetLastError());
            
               if (PricePointNew<PricePointOld)
               OrderModify( Ticket, PricePointNew-5*0.0001, PriсeStopNew+8*0.0001 , PricePointNew-Profit*0.0001 ,0 ,Green);
               else Print("OrderModify 2 вернул ошибку - ",GetLastError());
            
               if(PriсeStopNew>PriсeStopOld && (PriсeStopNew-PriсeStopNew)<(Stop*0.0001))
               OrderModify( Ticket, PricePointNew-5*0.0001, PriсeStopNew+8*0.0001 , PricePointNew-Profit*0.0001 ,0 ,Green);
               else Print("OrderModify 3 вернул ошибку - ",GetLastError());
         
             if(PriсeStopNew<PriсeStopOld)
             OrderModify( Ticket, PricePointNew-5*0.0001, PriсeStopNew+8*0.0001 , PricePointNew-Profit*0.0001 ,0 ,Green);
             else Print("OrderModify 4 вернул ошибку - ",GetLastError());         
            }
         }
         else                               // Если нет ордеров, то ставим
         {
            f = OrderSend(Symbol(), 5, 0.01,(PricePointNew-5*Point*10) , 1,(PriсeStopNew+8*Point*10) ,(PricePointNew-Profit*Point*10));
            OrderSelect( 0, SELECT_BY_POS);
            Ticket =  OrderTicket();
 
Wenn der Verkaufsstopp ausgeführt wird, erhält er den Typ 1 und wird von einem schwebenden Auftrag zu einem Marktauftrag.
 

Ich kann es nicht herausfinden.

Ich habe die Zeit in das Array eingegeben, aber der Drucker druckt 0 =(

for (i=0; i<=10; i++)
   {
     datetime Array[i] = iTime(NULL,0,i);
     Print("Время: ",Array[i]);
   }
Drucken gibt Nullen aus... Was ist los?
 
Dann sitze ich fest)) Wenn ich Expert Advisor im Tester mit Visualisierung ausführe, ändert sich die Marktorder immer noch, ich verstehe nicht warum... Ich habe einen großen Code gemacht, anscheinend gibt es irgendwo einen algorithmischen Fehler.
 
Noterday >>:

Не могу понять

Загоняю в массив время, а принтом выводится 0 =(

Принт выводит нули... Что не так?

das Array muss außerhalb der Schleife deklariert werden und die Größe muss festgelegt sein (oder es muss angegeben werden, dass es sich um ein Indikator-Array handelt)

datetime Array[10];
int start() 
{
for (int i=0; i<=10; i++)
   {
     Array[i] = iTime(NULL,0,i);
     Print("Время: ",Array[i]);
   }


}
 
Catrock >>:
Тогда я застрял)) Запускаю эксперт в тестере с визуализацией, рыночный ордер все равно меняется, непонятно почему.. Нагородил большой код, видимо ошибка где то алгоритмическая.
was genau ändert sich an der Marktordnung? Machen Sie sich klarer, was Sie erreichen wollen.
 
Techno >>:

массив надо объявлять вне цикла и размер должен быть фиксированный(либо указание что речь о индикаторном массиве)

funktioniert immer noch nicht.... Wie schreibt iTime die Zeit in ein Array? In Sekunden ab 1970 oder "jjjjj:mm:tt hh:mm"
 
Noterday >>:
всё равно не работает.... как iTime записывает время в массив? В секундах о 1970 или "yyyy:mm:dd hh:mm"
mit diesem Design, ja, in Sekunden. Für mich funktioniert das alles. Kompilieren und prüfen Sie nur diesen Teil des Codes.
 

Bei einem Marktauftrag ändern sich zu diesem Zeitpunkt die Take-Profit- und Stop-Loss-Werte. Das sollten sie nicht.

In meinem System können nur schwebende Aufträge geändert werden. Wenn der Auftrag zu einem Marktauftrag wird, sind die Änderungen nicht zulässig. Der Expert Advisor verwendet insgesamt einen Auftrag.