Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1066

 
yiduwi:

Ich danke Ihnen.

Igor Makanu:...sollte den Pfeil nur dort platzieren, wo die Bedingung erfüllt ist...

Es wird jedoch auf die zweite Leiste gesetzt.


Überprüfen Sie die Indexierungsrichtung des Indikatorpuffers.

 
Artyom Trishkin:

Überprüfen Sie die Indexierungsrichtung des Indikatorpuffers.

Was ist zu prüfen, sollte dieser Code den Pfeil auf welche Leiste setzen?

 {
//---
   int limit=rates_total-prev_calculated;
   if(limit>1 || prev_calculated==0)
     {
      limit=rates_total-2;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--)
     {
      if(fabs(high[i+1]-high[i])<=_Point*(double)Pips) BufferDN[i]=high[i]; else BufferDN[i]=EMPTY_VALUE;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
yiduwi:

Was sollte ich überprüfen, sollte dieser Code den Pfeil auf welche Leiste setzen?

BufferUP und BufferDN - was ist die Indizierung?

Документация по MQL5: Операции с массивами / ArraySetAsSeries
Документация по MQL5: Операции с массивами / ArraySetAsSeries
  • www.mql5.com
//| Custom indicator initialization function                         | //| Custom indicator iteration function                              |
 
Artyom Trishkin:

BufferUP und BufferDN - was ist die Indizierung?

Ich habe es andersherum gemacht.

 for(int i=0;i<limit;i++) 

setzt sie immer noch auf den zweiten Takt.

 
yiduwi:

Ich habe es andersherum gemacht.

setzt sie immer noch auf den zweiten Takt.

Alle Arrays müssen in dieselbe Richtung zeigen

 
Artyom Trishkin:

Alle Arrays müssen in dieselbe Richtung zeigen

Nun, dann ist die erste Option richtig, wo liegt das Problem?

 
yiduwi:

Nun, dann ist die erste Option richtig, wo liegt das Problem?

Das Problem ist, dass Sie die vollständige Liste des Indikators nicht sehen können

 
yiduwi:

Dadurch wird er auf dem ersten Balken so dargestellt, aber der Pfeil erscheint nicht in Echtzeit, sondern erst nach dem Umschalten desf. Was ist los?

In OnInit() ArraySetAsSeries() für BufferUP und BufferDN, in OnCalculate() - ArraySetAsSeries() für High und Low

if(Grenze>1)

{

}

Kein Bedarf für prev_calculated==0

 
Artyom Trishkin:

In OnInit() ArraySetAsSeries() für BufferUP und BufferDN, in OnCalculate() ArraySetAsSeries() für High und Low

Danke.

 

Was ist an dem Code falsch? Der Versuch, das Ende des Tests zu erwischen

void MyHistory()
  {
//--- select history for access
//HistorySelect(0,TimeCurrent());
   HistorySelect(0,TimeTradeServer());
//---
   int    orders=HistoryDealsTotal();  // total history deals
   int    losses=0;                    // number of losses orders without a break

   for(int i=orders-1;i>=0;i--)
     {
      ulong ticket=HistoryDealGetTicket(i);
      if(ticket==0)
        {
         Print("HistoryDealGetTicket failed, no trade history");
         break;
        }
      //--- check symbol
      if(HistoryDealGetString(ticket,DEAL_SYMBOL)==_Symbol)
         continue;
      //--- check profit
      string   deal_comment=HistoryDealGetString(ticket,DEAL_COMMENT);

      if(deal_comment=="end of test")
        {
         Print("!!!!!!!!!!!!!!!  END TEST !!!!!!!!!!!!!!!!");
         break;
        }
/*
         if(deal_comment!="end of test")
            {
            return;
            }
            */
     }
//---

   return;

  }
Grund der Beschwerde: