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

 
Vitalie Postolache:

Übergeben Sie dann das Argument an die Funktion, da es bereitgestellt wird. Auch wenn es besser ist, ihn zu streichen, ist er eine Tautologie.

Und nicht alle Aufträge in der Schleife werden neu berechnet.

for(i=OrdersTotal()-1; i>=0; i--)
Ich habe eine gute Idee, sie mit ihren eigenen EAs zu vergleichen, weil sie nicht so einen guten Preis haben.
Ich habe es korrigiert, ein Argument eingefügt, es in den globalen Bereich gestellt, jetzt erzeugt es eine Warnung, dass dieses Argument bereits als Eingabe in anderen Funktionen verwendet wird

Das Ticket mit Überschreiben, ausgehend von der letzten Bestellung mit einem Martin.

und dann, wie man die globale Deklaration "count" ausblendet, in Zeile...

es ist interessant, dass es so funktioniert, wie es sollte.

Bisher zeigt der Tester recht gute Ergebnisse, und manchmal "unüberwindbare Fehler im Expert Advisor".

 

Grüße.

Ich bin über eine Aufnahme in diesem Format gestolpert:

if (OrderSelect(ticket, SELECT_BY_TICKET)) OrderModify(ticket, OrderOpenPrice(), SL, TP, 0;

D.h. hier wurde der bedingte Operator durch eine Handelsfunktion vom Typ bool anstelle eines Ausdrucks ersetzt. Verstehe ich das richtig, dass ein solches Schreiben gleichbedeutend ist mit :

if(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0};?

Ich habe sowohl in der Hilfe als auch im Lernprogramm nachgesehen - ich habe kein solches Format gefunden.

Kann ich auf diese Weise direkt Funktionen eines anderen Typs anstelle eines Ausdrucks schreiben? Und wenn ja, wie würde der Algorithmus aussehen?

 
trader781:
Ich habe das Problem behoben, ein Argument gesetzt, es in den globalen Bereich gesetzt, jetzt erzeugt es eine Warnung, dass dieses Argument bereits als Eingabe in anderen Funktionen verwendet wird

Ticket mit Überschreibung, Arbeit vom letzten Auftrag mit martin

und dann, wie man die Deklaration von 'count' entfernt, versteckt die globale Deklaration in der Zeile ...

Es ist interessant, dass es so funktioniert, wie es sollte.

Bisher zeigt der Tester recht gute Ergebnisse, und manchmal "unüberwindbare Fehler im Expert Advisor".

Bitte zeigen Sie mir die korrigierte Version, denn die Vermutung kommt ohne den Code heraus.
 
spoiltboy:

Grüße.

Ich bin über eine Aufnahme in diesem Format gestolpert:

if (OrderSelect(ticket, SELECT_BY_TICKET)) OrderModify(ticket, OrderOpenPrice(), SL, TP, 0;

D.h. hier wurde die bedingte if-Anweisung durch eine Handelsfunktion vom Typ bool anstelle eines Ausdrucks ersetzt. Verstehe ich das richtig, dass ein solches Schreiben gleichbedeutend ist mit :

if(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0};?

Ich habe sowohl in der Hilfe als auch im Lernprogramm nachgesehen - ich habe kein solches Format gefunden.

Kann ich auf diese Weise direkt Funktionen eines anderen Typs anstelle eines Ausdrucks schreiben? Wenn ja, wie würde der Algorithmus aussehen?

Genau soif(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; funktioniert nicht. Die Bedingung darf nicht aus der Klammer fallen.

Aberwenn(OrderSelect(ticket,SELECT_BY_TICKET)==true) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; Sie können.

 
Vitalie Postolache:

Genau so,wenn(OrderSelect(ticket,SELECT_BY_TICKET))==true {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; wird nicht funktionieren. Die Bedingung darf nicht aus der Klammer fallen.

Aberwenn(OrderSelect(ticket,SELECT_BY_TICKET)==true) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; Sie können.

Ja, ich habe einen Druckfehler in einer Klammer übersehen. Ansonsten ist die Frage relevant.
 
Vitalie Postolache:
Bitte zeigen Sie mir die korrigierte Version, denn ohne den Code ist es nur eine Vermutung.

Ja.

Ich habe sozusagen beendet, was ich konnte. Die Beschreibung ist fertig. Ziel ist es zu verstehen, warum es nicht so funktioniert, wie ich es möchte.

Dateien:
count.mq4  19 kb
 
//+------------------------------------------------------------------+
//|                                                      ОТЛОЖКИ.mq4 |
//+------------------------------------------------------------------+
extern double StopLoss     = 1000; //Стоплосс ордера  
extern double TakeProfit   = 1500; //Тейкпрофит ордера
extern double TrailingStop = 1000; // трал
extern int    Delta        = 100; //Расстояние от цены для установки ордера
extern double LOT          = 0.1; //Объём позиции
extern int    Magic        =200;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  if (TrailingStop!=0) Trailing();
  
   //ИНДИКАТОР RSI
   double RSI0=iRSI(NULL,0,5,PRICE_CLOSE,0);
   double RSI1=iRSI(NULL,0,5,PRICE_CLOSE,1);
  
   int b,s,p,res;
   double BuyPrice=Ask+Delta*Point;
   double SellPrice=Bid-Delta*Point;
  
   for (int i=0; i<OrdersTotal(); i++)
    {
     if (OrderSelect(i, SELECT_BY_POS)==true)
      {  
        if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
        if (OrderType()==OP_BUYSTOP) b++;
        if (OrderType()==OP_SELLSTOP) s++;        
      }  
    }
      double SL,TP;
//---- buy stop
   if(RSI0>50&&RSI1<50)
     {
          
      res=OrderSend(Symbol(),OP_BUYSTOP,LOT,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_SELLSTOP,Blue);
     }        
//---- sell stop  
   if(RSI0<50&&RSI1>50)
     {

      res=OrderSend(Symbol(),OP_SELLSTOP,LOT,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_BUYSTOP,Red );
     }
//---- buy stop делете
      if(RSI0<50&&RSI1>50)
    {
     OrderDelete( OrderTicket());
    
    }
//---- sell stop делете
      if(RSI0>50&&RSI1<50)
    {
     OrderDelete( OrderTicket());
    
    }
//----
   return(0);
  }
//--------------------------------------------------------------------
//---------ФУНКЦИЯ ТРАЛА----------------------------------------------
//--------------------------------------------------------------------

void Trailing()
{
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if(OrderSymbol()==Symbol()||OrderMagicNumber()==Magic)
       if(OrderType()==OP_BUY)
         {
          if(TrailingStop>0)  
            {                
              if(Bid-OrderOpenPrice()>TrailingStop)
               {
                 if(OrderStopLoss()<Bid-TrailingStop)
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop,OrderTakeProfit(),0,Green);
                  }
               }
            }
         }
        
        if(OrderType()==OP_SELL)
         {
           if(TrailingStop>0)  
            {                
              if((OrderOpenPrice()-Ask)>TrailingStop)
               {
                 if((OrderStopLoss()>(Ask+TrailingStop)) || (OrderStopLoss()==0))
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop,OrderTakeProfit(),0,Red);
                  }
               }
            }
         }  
   }
}
//+------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------+--------------------------------------------------------------------+
Aufträge werden nicht gelöscht, bitte helfen Sie mir
 

Aufträge werden nicht gelöscht, bitte helfen Sie mir
Wie haben Sie ein Ticket für eine ungeöffnete Bestellung erhalten?
 
trader781:
und wie haben Sie das Ticket für die ungeöffnete Bestellung erhalten?
Ich kriege es einfach nicht rein.
for (int i=0; i<OrdersTotal(); i++)
    {
     if (OrderSelect(i, SELECT_BY_POS)==true)
      {  
        if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
        if (OrderType()==OP_BUYSTOP)
             if (сигнал_bue) OrderDelete(OrderTicket());
                 else b++;
        if (OrderType()==OP_SELLSTOP)
             if (сигнал_sell) OrderDelete(OrderTicket());
                 else s++;
      }  
    }
 
Movlat Baghiyev:
Ich kriege es einfach nicht rein.
for (int i=0; i<OrdersTotal(); i++)
    {
     if (OrderSelect(i, SELECT_BY_POS)==true)
      {  
        if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
        if (OrderType()==OP_BUYSTOP)
             if (сигнал_bue) OrderDelete(OrderTicket());
                 else b++;
        if (OrderType()==OP_SELLSTOP)
             if (сигнал_sell) OrderDelete(OrderTicket());
                 else s++;
      }  
    }
Ich weiß nicht, wie ich es erklären soll. Aber es ist definitiv ein Meisterwerk.
Grund der Beschwerde: