Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1833

 

Jungs, ich brauche schwebende Aufträge, um ihren Wert jede Minute zu aktualisieren, Änderung von etwas war krumm, beschlossen, zu löschen und jede Minute in beide Richtungen, in der Tester funktioniert gut, aber im wirklichen Leben, irgendwie nicht liefern. Korrigieren oder helfen statt löschen, ändern zu tun.


      if(TimeCurrent()>TimeCheck_sn && TimeCurrent()<TimeCheck_en && Ogranichitel > 0)
        {

         if(IsNewCandle())
           {

            if(OrderOfSymbol>0 && OrderType() ==  OP_BUYSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);

            if(OrderOfSymbol>0 && OrderType() ==  OP_SELLSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);


            if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsSellAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_SELLSTOP, LotSk, Bid-(Skachok*Point), Slippage, 0, Bid-((Skachok+TPsk)*Point), "открыт ордер на продажу", Magic, 0, Red);
                  Print("OpenOrderSuccess");
                  
            if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsBuyAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_BUYSTOP, LotSk, Ask+(Skachok*Point), Slippage, 0, Ask+((Skachok+TPsk)*Point), "открыт ордер на покупку", Magic, 0, Blue);
                  Print("OpenOrderSuccess");


            if(OrderType() ==  OP_BUYSTOP && OrderOfSymbol>0)
               ticket2 = OrderModify(OrderTicket(), (Ask+(Skachok*Point)), 0, (Ask+((Skachok+TPsk)*Point)), 0);

            if(OrderType() ==  OP_SELLSTOP && OrderOfSymbol>0)
               ticket2 = OrderModify(OrderTicket()+1, (Bid-(Skachok*Point)), 0, (Bid-((Skachok+TPsk)*Point)), 0);
           }
        }


      if(TimeCurrent() == TimeCheck_en)
        {


         if(IsNewCandle())
           {
            if(OrderOfSymbol>0 && OrderType() ==  OP_BUYSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);

            if(OrderOfSymbol>0 && OrderType() ==  OP_SELLSTOP)
               ticket2 =  OrderDelete(OrderTicket(),Violet);
           }


        }
 
Порт-моне тв schwebende Aufträge, um ihren Wert jede Minute zu aktualisieren, Änderung von etwas war krumm, beschlossen, zu löschen und jede Minute in beide Richtungen, in der Tester funktioniert gut, aber im wirklichen Leben, irgendwie nicht liefern. Korrigieren oder helfen statt löschen, ändern zu tun.


Gehen Sie besser auf die Änderung zurück und erklären Sie, was erforderlich ist
 
Tretyakov Rostyslav #:
Gehen Sie besser auf die Änderung zurück und erklären Sie, was erforderlich ist.

Der Auftrag sollte jedes Mal auf eine neue Kerze in beide Richtungen mit einem Satz Einzug in Punkte und auf takeprofit (wie ein Klassiker) geändert werden, wenn es durchdringt (ein Durchbruch auf Nachrichten), dann öffnet sich der Auftrag (die zweite Bestellung kann automatisch geschlossen werden), aber bis es öffnet, dann ändern Sie wieder und wieder; und all dies innerhalb eines bestimmten Zeitrahmens in den Parametern des Beraters angegeben.

 
Порт-моне тв #:

Der Auftrag sollte jedes Mal auf eine neue Kerze in beide Richtungen mit einem bestimmten Einzug in Punkte und auf Take-Profit (wie ein Klassiker) geändert werden, wenn es durchdringt (ein Durchbruch auf Nachrichten), dann öffnet sich der Auftrag (die zweite Bestellung kann automatisch geschlossen werden), aber bis es öffnet, dann wieder ändern und wieder; und all dies innerhalb eines bestimmten Zeitrahmens in der EA-Parameter angegeben.

Und wie werden die ersten Aufträge erteilt?
 
Tretyakov Rostyslav #:
Wie werden die ersten Aufträge erteilt?
if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsSellAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_SELLSTOP, LotSk, Bid-(Skachok*Point), Slippage, 0, Bid-((Skachok+TPsk)*Point), "открыт ордер на продажу", Magic, 0, Red);
                  Print("OpenOrderSuccess");
                  
            if(Close[1]>Open[1] && CountOrders()==0)
               if(NewsBuyAllow == true)
                  ticket2 = OrderSend(Symbol(),OP_BUYSTOP, LotSk, Ask+(Skachok*Point), Slippage, 0, Ask+((Skachok+TPsk)*Point), "открыт ордер на покупку", Magic, 0, Blue);
                  Print("OpenOrderSuccess");
 
Порт-моне тв #:
Lassen Sie mich einen Blick darauf werfen.
 
Порт-моне тв #:
Sie haben für beide Auftragsarten die gleiche Kondition
if(Close[1]>Open[1] && CountOrders()==0)
 
Tretyakov Rostyslav #:
Sie haben für beide Auftragsarten die gleiche Kondition

Ist das so gewollt, in beide Richtungen, oder muss ich etwas hinzufügen?

 
Порт-моне тв #:

Ist das so gewollt, in beide Richtungen, oder muss ich etwas hinzufügen?

Hier...Änderung einmal bei der Bareröffnung

Was die Eröffnung anbelangt, so ist "Close[1]>Open[1]" überhaupt nicht erforderlich, wenn Sie nach den Nachrichten handeln.

auf der einen Seite "Schließen[1]>Öffnen[1]", und auf der anderen Seite "Schließen[1]<Öffnen[1]".

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Close[1]>Open[1] && CountOrders()==0)
     {
      if(NewsSellAllow == true)
        {
         ticket2 = OrderSend(Symbol(),OP_SELLSTOP, LotSk, Bid-(Skachok*Point), Slippage, 0, Bid-((Skachok+TPsk)*Point), "открыт ордер на продажу", Magic, 0, Red);
         Print("OpenOrderSuccess");
        }
     }
   if(Close[1]>Open[1] && CountOrders()==0)
     {
      if(NewsBuyAllow == true)
        {
         ticket2 = OrderSend(Symbol(),OP_BUYSTOP, LotSk, Ask+(Skachok*Point), Slippage, 0, Ask+((Skachok+TPsk)*Point), "открыт ордер на покупку", Magic, 0, Blue);
         Print("OpenOrderSuccess");
        }
     }
   if(newbar!=Time[0])
     {
      ModifyOrder();
      newbar=Time[0];
     }
  }
//+------------------------------------------------------------------+
//| Подсчет открытых ордеров                                         |
//+------------------------------------------------------------------+
int CountOrders(int ot=-1) 
  {
   int cnt=0;
   int i=OrdersTotal()-1;
   for(int pos=i;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol&&OrderMagicNumber()==Magic)
           {
            if(OrderType()==ot||ot==-1) cnt++;
           }
        }
     }
   return(cnt);
  }
//+------------------------------------------------------------------+
//| Модификация ордера                                               |
//+------------------------------------------------------------------+
void ModifyOrder()
  {
   int i=OrdersTotal()-1;
   for(int pos=i;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol&&OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUYSTOP&&OrderOpenPrice()!=Ask+(Skachok*Point))
              {
               if(OrderModify(OrderTicket(), Ask+(Skachok*Point), 0, Ask+((Skachok+TPsk)*Point)))
                 {Print("Ордер модифицирован");}
               else
                 {Print("Ошибка модификации ордера:", GetLastError());}
              }
            if(OrderType()==OP_SELLSTOP&&OrderOpenPrice()!=Bid-(Skachok*Point))
              {
               if(OrderModify(OrderTicket(), Bid-(Skachok*Point), 0, Bid-((Skachok+TPsk)*Point)))
                 {Print("Ордер модифицирован");}
               else
                 {Print("Ошибка модификации ордера:", GetLastError());}
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
 
Tretyakov Rostyslav #:

Hier...Änderung einmal bei der Bareröffnung

Was die Eröffnung anbelangt, so ist "Close[1]>Open[1]" überhaupt nicht erforderlich, und wenn die Kerze einen Wert hat, dann

auf einer Seite "Schließen[1]>Öffnen[1]" und auf der anderen Seite "Schließen[1]<Öffnen[1]".

Danke, ich werde es morgen früh versuchen.

Grund der Beschwerde: