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

 

Jetzt ist nicht klar, was von der Funktion zurückgegeben wird

return(OrdOpenTimeBuy);

 
Roger:

Jetzt ist nicht klar, was von der Funktion zurückgegeben wird

return(OrdOpenTimeBuy);

Ist es besser?

//=========== OrdTimeBuy_b(int MAGIC) ===============================================================
//  Функция возвращает время открытия последнего рыночного Buy-ордера, принадлежащего MAGIC или 777 
//---------------------------------------------------------------------------------------------------
datetime OrdTimeBuy_b(int MAGIC)
 {
  string SMB=Symbol();
  datetime OrdOpenTimeBuy=0;
  int i;
  for(i=0;i<OrdersTotal();i++)
   {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderSymbol()==SMB)
       {
        if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777)
         {
          if(OrderType()==OP_BUY)
           {
            if(OrdOpenTimeBuy<OrderOpenTime())
             {
              OrdOpenTimeBuy=OrderOpenTime();
             }  
           }  
         }  
       }          
     }
   }
   if(OrdOpenTimeBuy==0) return(0);
   return(OrdOpenTimeBuy);
 }
//=====================================================================================================


//===========  Локальная низинка  =================================================================
  double LowestPoint_b(int MAGIC)
   {  
    datetime OrdOpenTimeBuy=OrdTimeBuy_b(MAGIC);  
    int ShiftBuy=0;
    double LowestPoint=0;
    if (OrdOpenTimeBuy!=0)
     {  
      ShiftBuy=iBarShift(NULL,PERIOD_M1,OrdOpenTimeBuy,true);
      LowestPoint=iLow(NULL,PERIOD_M1,iLowest(NULL,PERIOD_M1,MODE_LOW,ShiftBuy,0));
     } 
    return(LowestPoint);
   }  
//=================================================================================================
 
nemo811:

Ist das besser?


Ja, das wird reichen.
 
Roger:
sergeev:

Ich danke Ihnen.

Ich habe diese Fehler behoben, aber der EA ist immer noch fehlerhaft. Lasst uns weiter graben :)

 
nemo811:

Ich danke Ihnen.

Ich habe diese Fehler behoben, aber der EA ist immer noch fehlerhaft. Wir werden weiter graben :)


Ich dachte, die Datei metaeditor.exe sei gelöscht worden und Sie würden manuell nach Fehlern suchen.

Wenn es ein EA ist, wird es definitiv nicht funktionieren. Sie haben keine Startfunktion in Ihrem Code.

 

Mein Kopf ist völlig durcheinander.

Ich habe diesen Code geschrieben:

  RefreshRates();
  bool ticket2=false;
  if(st_TrStop>0 && SchSellStop777_b()>0) {
   double LowestPoint=LowestPoint_b(MAGIC);
   double ee=0;
   for (i=OrdersTotal()-1;i>=0;i--) {//Начало цикла
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError(i);}
    else{//начало работы с выбранным ордером
     if(OrderSymbol()==SMB && OrderMagicNumber()==MAGIC) {
     if(OrderType()==OP_BUY) {//находится вверху, едет вниз  
     Last_OrderOpBuy(MAGIC);
     if(((Ask-(st_BU+ad.Spred+1)*Point)>=OrderOpenPrice()) ||
        ((Ask-(st_TrStop-1-ad.Spred)*Point)>=LowestPoint)) {

     if((Ask-(st_BU+ad.Spred+1)*Point)>=OrderOpenPrice())
      {
       Price_SS=NormalizeDouble(OrderOpenPrice()+(ad.Spred+1)*Point,Digits);
      }
     else
      { 
       Price_SS=NormalizeDouble(LowestPoint-1*Point,Digits);     
      }  

     if(ChastZakr)
      {
       if(SchBuy>1)
        {  
         OrderClose(OrdTicketBuy,OrderLots(),MarketInfo(OrderSymbol(), MODE_BID),Proskalz,CLR_NONE);
         Alert(SMB,": произведено частичное закрытие Buy-позиции, тикет: ",OrdTicketBuy,".");
         ee=SchBuyLots-OrderLots();
        }   
       else
        {  
         if(SchBuyLots+SchBuyLots777>MinLot)
          { 
           OrderClose(OrdTicketBuy,NormalizeDouble(OrderLots()/2,2),MarketInfo(OrderSymbol(), MODE_BID),Proskalz,CLR_NONE);
           Alert(SMB,": произведено частичное закрытие Buy-ордера, тикет: ",OrdTicketBuy,".");
           ee=SchBuyLots-NormalizeDouble(OrderLots()/2,2);
          }  
        }  
      }
     else
      {   
       ee=SchBuyLots;
      }

      DeleteOtlozhMAGIC(MAGIC);
      DeleteOtlozh777();
      ticket2=OrderSend(Symbol(),OP_SELLSTOP,ee,Price_SS,Proskalz,0,0,"MAGIC_" + MAGIC,MAGIC,0);
        if(ticket2!=0 && ticket2!=-1) {
          Alert (SMB,": установлен траловый SellStop.");
          Print(SMB,": установлен траловый SellStop.");
         }
        if(ticket2==0 || ticket2==-1) {
          GLE=GetLastError();
          ED=ErrorDescription(GLE);
          Alert (SMB,": ошибка №",GLE," установки тралового SellStop.");
          Alert (SMB,": описание ошибки - ",ED);
          Print (SMB,": ошибка №",GLE," установки тралового SellStop."); 
          Print (SMB,": описание ошибки - ",ED);
         }
       }       
      }       
     }  
    }  
   }  
  }
 

Es ist fehlerhaft. Aber wenn Sie eine bestimmte Zahl in die Bedingung eingeben..:

     if(((Ask-(st_BU+ad.Spred+1)*Point)>=OrderOpenPrice()) ||
        ((Ask-(st_TrStop-1-ad.Spred)*Point)>=LowestPoint)) {

...statt LowestPoint funktioniert alles wie am Schnürchen.

Die Suche nach LowestPoint wird im obigen Beitrag beschrieben.

Bitte helfen Sie mir, es ist der zweite Tag der Ausgrabung.

Vielen Dank im Voraus.

 
sergeev:

Ich dachte, Ihre Datei metaeditor.exe sei gelöscht worden und Sie würden manuell nach Fehlern suchen.

Wenn es sich um einen EA handelt, wird es definitiv nicht funktionieren, da Sie die Startfunktion nicht in Ihrem Code haben.

Sie sind sehr akribisch, aber auch dafür danke ich Ihnen.

Ich gebe nur den Teil des Codes an, an dem ich interessiert bin. Wenn Sie den gesamten EA posten, kann die Frage verloren gehen :)

Ich danke Ihnen.

 
Sie prüfen den Wert nicht mit -1
ShiftBuy
 
MESSAGE, Gibt es eine Funktion, wie ihighest nur für MACD
 
CLAIN:
MESSAGE, Gibt es eine Funktion wie ihighest nur für MACD

Ich bin noch nicht darauf gestoßen, aber es ist möglich, zu schreiben... Dies wäre etwa der Höchstwert der Hauptlinie für die letzten 10 Takte, den aktuellen nicht mitgezählt:

double Hi ()
{ int i,j; H=0;
while (i<=10)
{if (H<iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)) 
H=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1);
i++;}
return(H);
}