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

 
pycha:

Hallo. Ich habe die Dokumentation durchsucht, konnte es aber nicht finden. Meine Frage ist folgende: Kann ich dieses Bild beim Start des EA in mein Logo ändern?

#Eigenschaftssymbol "\\\\Images\\xxx.ico";
 
evillive:
#Eigenschaftssymbol "\\\\Images\\\\xxx.ico";

Nach der Kompilierung wird die Symboldatei in die *.ex4-Datei eingebettet, so dass die Symboldatei nicht mehr nach der kompilierten Datei verschoben werden muss.
 
danke)))
 
roymax:
und es wurde in keiner Weise behoben?

Wie Sie sehen können.

Am logischsten und einfachsten ist es jedoch, den Werkzeugwechsel im MT-Fenster zu verbieten. Ich schlage also vor, dass wir es als Fehler betrachten :)

 
Mein Expert Advisor analysiert Charts für eine Reihe von Monaten, aber es gibt Charts, die die gesamte Historie auf einem Minutenchart anzeigen, und es gibt Charts, die nicht mehr als anderthalb Monate anzeigen, und selbst dann, wenn Sie den Chart manuell zurückblättern, blättert er nicht einmal über ein bestimmtes Datum hinaus.
 
pycha:
Mein Expert Advisor analysiert den Chart für eine bestimmte Anzahl von Monaten, aber es gibt Charts, die die gesamte Historie im Minutendiagramm zurückgeben, und es gibt Charts, die nicht mehr als eineinhalb Monate zurückgeben wollen, und selbst das ist, wenn Sie den Chart manuell zurückblättern, selbst über ein bestimmtes Datum hinaus blättert er nicht manuell.
Der Makler entscheidet genau, wie viel Geschichte er weitergeben will. Wenn die maximale Anzahl der Balken in den Terminaleinstellungen festgelegt ist und weniger Balken auf dem Diagramm vorhanden sind, wird der Broker nicht mehr geben.
 
Ich habe verstanden, danke.
 

Hallo liebe Forumsnutzer. Ich möchte eine Bitte äußern. Wäre jemand in der Lage, ein Stück Code mit einer funktionierenden iEnvelopesOnArray() Funktion zu posten? Alle meine bisherigen Versuche, sie zu bändigen, waren erfolglos. Ich vermute, dass die Entwickler daran schuld sind. Hier ist ein Indikator, mit dem Sie seine Arbeit überprüfen können.

//+------------------------------------------------------------------+
//|                                            Tester_EnvOnArray.mq4 |
//|     Copyright 2005 г. до нашей эры, MetaQuotes Software Company. |
//|                                              https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005 г. до нашей эры, MetaQuotes Software Company."
#property link        "https://www.mql4.com"
#property description "Пример индикатора для проверки работы функции iEnvelopesOnArray()"
#property strict

//--- indicator settings
#property  indicator_chart_window
#property  indicator_buffers 2
#property   indicator_color1  Green
#property   indicator_color2  Red

//--- indicator buffers
double     ExtEnvBuffer[];
double     ExtPriceBuffer[];

//--- bars minimum for calculation
#define  DATA_LIMIT  100

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit(void)
  {
  IndicatorShortName("EnvOnArr");
  
  //--- 1 additional buffer are used for counting.
  IndicatorBuffers(2);
  IndicatorDigits(Digits + 2);
  
  //--- drawing settings
  SetIndexStyle(0, DRAW_LINE);
  SetIndexDrawBegin(0, DATA_LIMIT);
  
  SetIndexStyle(1, DRAW_NONE);
  SetIndexDrawBegin(1, DATA_LIMIT);
  
  //--- all indicator buffers mapping
  SetIndexBuffer(0, ExtEnvBuffer);
  SetIndexBuffer(1, ExtPriceBuffer);
  
  //--- name for DataWindow and indicator subwindow label
  SetIndexLabel(0, NULL);
  SetIndexLabel(1, NULL);
  }
  
//+------------------------------------------------------------------+
//| EnvelopesOnArray                                                 |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,
                 const int prev_calculated,
                 const datetime & time[],
                 const double & open[],
                 const double & high[],
                 const double & low[],
                 const double & close[],
                 const long & tick_volume[],
                 const long & volume[],
                 const int & spread[])
  {
  int    i, limit;
  double prev = 0.0, Deviation = 1;
  
  //--- check for rates total
  if(rates_total <= DATA_LIMIT)
    return(0);
    
  //--- last counted bar will be recounted
  limit = rates_total - prev_calculated;
  
  if(prev_calculated > 0)
    {
    limit++;
    }
    
  //--- price counted in the 2-nd additional buffer
  for(i=0; i<limit-1; i++)
    ExtPriceBuffer[i] = close[i];
                       
  //--- price counted in the 1-st additional buffer
  for(i=0; i<limit-1; i++)
    ExtEnvBuffer[i] = iEnvelopesOnArray(ExtPriceBuffer, 0, 5, MODE_SMA, 0, 1, MODE_UPPER, i);
  
  //--- done
  return(rates_total);
  }
  
//+------------------------------------------------------------------+
Dateien:
 

Hallo zusammen. Ich erhalte während des Tests Fehler:

2014.12.25 18:04:31.125 2014.11.03 00:00 Test3 EURUSD,H4: ungültiges Ticket für OrderModify-Funktion

2014.12.25 18:04:31.125 2014.11.03 00:00 Test3 EURUSD,H4: OrderModify Fehler 4051

Ich habe es mehrmals überprüft, es gibt keinen Fehler (soweit ich sehen kann).

In diesem Teil des Programms kommt es zu Fehlern:

ModifyBuy, ModifySell, SelectBuy, SelectSell - haben den Typ bool

SendBuy, SendSell-int , int TP = 30


while(true)

 {

  

  SPREAD=MarketInfo(Symb,MODE_SPREAD);

  SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);//buy

  RefreshRates();

  if(NormalizeDouble(OrderOpenPrice()+TP*Point,Digits)<NormalizeDouble(Ask,Digits))

  {

  ModifyBuy=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(10-SPREAD)*Point,Bid+(30- SPREAD)*Point,0,0); 

  R=1;

  break;

  }//if2

    

  Timen=OrderCloseTime();

  if(Timen>0)

  {

  //--------------------------  

    Stop=StopLevel(Symb);

   StopLong();//значение Long2

   StopLoss_Func();//значение SL

//--------------------------  

   SendBuy=OrderSend(Symb,OP_BUYSTOP,Lote,Ask+Long2*Point,1,Bid-SL*Point,NULL);

   for(i=1;i>OrdersTotal();i++)

  {

   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)//Проверяем есть ли ордер

    {

     if(OrderSymbol()!=Symb) continue;     

     if(OrderType()==4)

      {

      OrderTicketBuy=OrderTicket();

      break;

      }

      else

      {

      continue;

      } 

     }

    }   

    continue;  

  }//if2

  

  SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET,MODE_TRADES);//sell

  RefreshRates();

  if(NormalizeDouble(OrderOpenPrice()-TP*Point,Digits)>NormalizeDouble(Bid,Digits))

  {

   

   ModifySell=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(10-SPREAD)*Point,Ask-(30- SPREAD)*Point,0,0);

   R=2;

   break; //спред

  }//if2

  

   Timen=OrderCloseTime();

  if(Timen>0)

  {

 //--------------------------  

    Stop=StopLevel(Symb);

   StopLong();

   StopLoss_Func();

//--------------------------  

   SendSell=OrderSend(Symb,OP_SELLSTOP,Lote,Bid-Long2*Point,1,Ask+SL*Point,NULL);

    for(i=1;i>OrdersTotal();i++)

  {

   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)//Проверяем есть ли ордер

    {

     if(OrderSymbol()!=Symb) continue;     

     if(OrderType()==6)

      {

      OrderTicketSell=OrderTicket();

      break;

      }

      else

      {

      continue;

      } 

     }

    }   

    continue; 

  }//if2

}//while1



Wenn Sie den gesamten Code benötigen, finden Sie ihn hier


Dateien:
test3_1.mq4  15 kb
 
Meine Herren! Können Sie mir den Code sagen, der das Testen eines EAs stoppt, wenn nicht genug Marge vorhanden ist, um eine Position zu eröffnen?
Ich danke Ihnen!