Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1157

 

Bitte helfen Sie - es gibt ein Stück Code wie dieses


   if(Bars<=RSIPeriod) return(0);
   if(TF!=0)
   {
      string name = WindowExpertName();
      for(i=0; i<Bars-counted_bars+1; i++)
      {
         int barIndex = iBarShift(NULL,TF,Time[i],false);
         RSIBuffer[i]=       iCustom(Symbol(),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down,0,0,barIndex);        
         PosBuffer[i]=       iCustom(Symbol(),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down,0,1,barIndex);
         NegBuffer[i]=       iCustom(Symbol(),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down,0,2,barIndex);
         RSI_Up_Buffer[i]=   iCustom(Symbol(),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down,0,3,barIndex);
         RSI_Down_Buffer[i]= iCustom(Symbol(),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down,0,4,barIndex);
         
         Worms_Up[i]=        iCustom(Symbol(),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down,0,5,barIndex);        
         Worms_Down[i]=      iCustom(Symbol(),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down,0,6,barIndex);
         Delta[i]=           iCustom(Symbol(),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down,0,7,barIndex);
         Calc[i]=            iCustom(Symbol(),TF,name,Variant,RSIPeriod,Levl_Up,Levl_Down,0,8,barIndex);         
      }
      return(0);
   }


Normalerweise funktioniert alles gut, aber ich habe hier einen Fehler - ich kann ihn nicht reproduzieren - der Fehler im Code beginnt mit Time[I] Klammern

2017.07.25 21:09:57.266 Worms_UpDn_RSI_OSC_Calc AUDCAD,M15: array out of range in 'Worms_UpDn_RSI_OSC_Calc.mq4' (104,47)

Was ist der Grund für den Fehler und wie kann er behoben werden?
 
Aleksey Vyazmikin:

Bitte helfen Sie - es gibt ein Stück Code wie dieses



Normalerweise funktioniert alles gut, aber ich habe hier einen Fehler - ich kann ihn nicht reproduzieren - der Fehler im Code beginnt mit Time[I] Klammern

2017.07.25 21:09:57.266 Worms_UpDn_RSI_OSC_Calc AUDCAD,M15: array out of range in 'Worms_UpDn_RSI_OSC_Calc.mq4' (104,47)

Was sind die Ursachen des Fehlers und wie kann er behoben werden?

Versuchen Sie,Bars durchBars(Symbol(), TF) zu ersetzen;

Sie erhalten Daten aus einem anderen Zeitrahmen, aber die Anzahl der Balken wird vom aktuellen Zeitrahmen übernommen.

 
Vitaly Muzichenko:

Versuchen Sie,Bars durchBars(Symbol(), TF) zu ersetzen;

Sie erhalten Daten aus einem anderen Zeitrahmen und nehmen die Anzahl der Balken des aktuellen Zeitrahmens, aber die Daten, die Sie erhalten, können weniger sein, daher der Fehler


Ich danke Ihnen! Ich glaube, das wird helfen!

 
Andrey Sokolov:

Achtung, richtige Antwort:

Support-Team2017.07.20 13:37
Produkte, die nicht mit der neuesten Version des Meta-Editors kompiliert wurden, können nicht an das Diagramm angehängt werden.

Mein EA hat nach dem letzten Update im Tester im nicht-visuellen Modus aufgehört zu funktionieren. Ich musste einige Dinge neu machen.

 
Andrey Sokolov:

Grüße.

Ist es möglich, die Geschichte mit einem Spread zu testen?


Sie wird im Prüfgerät eingestellt. Oder brauchen Sie einen echten Floating Spread?

 
Alexey Volchanskiy:

So ist es im Prüfgerät eingestellt. Oder wollen Sie einen echten Floating Spread?

Real
 
Andrey Sokolov:
Real
Real im Tester (historisch) wird Ihnen nur in MT5 zur Verfügung stehen
 

Hallo! Ich schreibe einen EA für die Platzierung von Pending Orders auf Fraktalen. Es werden jedoch nur Kaufaufträge erteilt. Wie sollte ich sie korrigieren? Ich hänge den EA und den Indikator an.

Dateien:
Fractal_1.mq4  13 kb
RFractals.ex4  10 kb
 
scomoroh:

Hallo! Ich schreibe einen EA, um schwebende Aufträge auf Fraktalen zu platzieren. Es werden jedoch nur Kaufaufträge eröffnet. Wie kann man sie korrigieren?

Es ist alleshier.

 

Hallo.

Könnten Sie helfen, zwei Fehler zu korrigieren.

1. 1 Auftrag sollte auf einem Balken geöffnet werden (wird jetzt zufällig geöffnet)

2. Um 1 Auftrag mit einem bestimmten Volumen korrekt zu öffnen (jetzt wird er mit verschiedenen Volumen geöffnet)

Die Idee ist, dass dieser EA sollte ein Geschäft von 10% der Kaution auf einer Bar öffnen (ich hatte so gehofft), aber es ist nicht geschehen.

Ich habe lange daran gearbeitet, und ich freue mich über die Ergebnisse.

//+------------------------------------------------------------------+
//|                                                      1237654.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             [url]https://www.mql5.com[/url] |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
extern int tf_bar = 0; //таймфрейм на котором будет браться значение бара
extern int magic = 123;
extern double stop = 0;
extern double StopLoss = 0;
extern double TakeProfit =0;
extern double Prots= 0.10;

int ticket,Symbol;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int mper[10]={0,1,5,15,30,60,240,1440,10080,43200};//массив таймфрейма
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick()
  {
      double Min_Lot=MarketInfo(Symbol(),MODE_MINLOT);// Мин. стоим. лотов
      double Step   =MarketInfo(Symbol(),MODE_LOTSTEP);//Шаг изменен лотов
      double Free   =AccountBalance();       // Свободн средства
      double One_Lot=MarketInfo(Symbol(),MODE_MARGINREQUIRED);//Стоим.лота
  
   double Lot=MathFloor(Free*Prots/One_Lot/Step)*Step;// Лоты
        
        
        
  
  if ( Close[0]>Close[1])
//if (! NumberOfBarOpenLastPos(NULL,mper[tf_bar],OP_BUY, magic) ==0) 



{//запрет неск. сделок на 1 баре
     stop = Ask - StopLoss * Point;
     ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,0,"Buy",magic,0,Lime);
     
     }//закрываем скобку NumberOfBarOpenLastPos
     
 if ( Close[0]<Close[1])   
     
//if (!NumberOfBarOpenLastPos(NULL,mper[tf_bar],OP_SELL, magic)  ==0) 
{//запрет неск. сделок на 1 баре
     ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,0,0,0,"Sell",magic,0,Red);
     
     }//закрываем скобку NumberOfBarOpenLastPos
     return;
   
  }
//+------------------------------------------------------------------+


//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  [url=http://www.kimiv.ru]Автоматизация торговли на финансовых рынках - Главная[/url]                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара открытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
 




int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t=0;
  
  int      i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++)                                    {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))      {
      if (OrderSymbol()==sy)                             {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op)                   {
            if (mn<0 || OrderMagicNumber()==mn)          {
              if (t<OrderOpenTime()) t=OrderOpenTime();
              }}}}}}
  return(iBarShift(sy, tf, t, True));}