Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 226

 

Alexey, ich danke dir für deine Antworten und deine Hilfe.

Neue Frage, ist es überhaupt möglich, Chart-Tabs in MT4 zu duplizieren? Das heißt, keine Vorlage, um die Chart-Parameter jedes Mal neu einzustellen, sondern eine vollständige Kopie der Registerkarte mit der ausgewählten Währung, dem Zeitrahmen und den Chart-Parametern. Gibt es so etwas oder nicht?

 
Rustam Bikbulatov:

Versuchen)

Kämpfen, suchen, finden und wieder verstecken!


ElenkaVladi:

Neue Frage.

Ja, gern geschehen.

Am einfachsten ist das Muster. Warum gefällt es Ihnen nicht? Sie haben den Zeitrahmen, die Skala, die Hintergrundfarbe und die Farbe der Candlesticks festgelegt, die gewünschten Indikatoren eingestellt und die Datei als default.tpl gespeichert. Wenn Sie nun ein neues Diagramm öffnen, ist alles für Sie vorbereitet.

 
Aleksei Stepanenko:


Das Einfachste ist die Vorlage. Warum gefällt es Ihnen nicht? Legen Sie den Zeitrahmen, die Skalierung, die Hintergrundfarbe und die Kerzenfarbe fest, zeichnen Sie die erforderlichen Indikatoren ein und speichern Sie die Datei als default.tpl. Wenn Sie nun ein neues Diagramm öffnen, ist alles für Sie vorbereitet.

Nein, die Frage scheint eine andere zu sein. Wenn ein Benutzer ein Diagramm öffnet und einen Indikator installiert, kennt er weder TF noch Symbol. Das Skript sollte das Symbol und die TF auswählen. (Gleichzeitig kann der Indikator geladen oder eine Vorlage ausgewählt werden).

 
Aleksei Stepanenko:

Kämpfen, suchen, finden und wieder verstecken!


Ja, gern geschehen.

Die einfachste Sache ist das Muster. Warum gefällt es Ihnen nicht? Sie legen den Zeitrahmen, die Skala, die Hintergrundfarbe und die Farbe der Candlesticks fest, setzen die gewünschten Indikatoren und speichern die Datei als default.tpl. Wenn Sie nun ein neues Diagramm öffnen, ist alles für Sie vorbereitet.

Ah, so funktioniert es, kein Gedanke an default.tpl. :))
 

Forum für Handel, automatisierte Handelssysteme und Strategietests

FAQ von Anfängern MQL4 MT4 MetaTrader 4

Igor Makanu, 2020.12.08 13:39

Sie haben in Ihrem Themahttps://www.mql5.com/ru/forum/334987 geantwortet.

Moderatorin mit SBhttps://www.mql5.com/ru/docs/standardlibrary/tradeclasses

Ich habe ein Beispiel auf der Grundlage der Hilfe geschrieben

Wenn es um die Frage geht, wie eine Position geschlossen werden kann, dann helfen Sie bittehttps://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions


oder SBhttps://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade

@makssub in PM mit der Bitte um MQL4-Code, dann dieser Code

#property strict
//+------------------------------------------------------------------+
void OnStart()
{
   while(!IsStopped())
   {
      int ticket = -1;
      string ord_sym = "";
      int max_pips = INT_MIN;
      for(int i = OrdersTotal() - 1; i >= 0; i--)
      {
         if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES) || OrderType() > OP_SELL) continue;
         string _sym      = OrderSymbol();
         double sym_point = SymbolInfoDouble(_sym, SYMBOL_POINT);
         double sym_price = OrderType() == OP_BUY ? SymbolInfoDouble(_sym, SYMBOL_BID) : SymbolInfoDouble(_sym, SYMBOL_ASK);
         int ord_pips     = fabs(PriceToInteger(OrderOpenPrice(), sym_point) - PriceToInteger(sym_price, sym_point));
         if(max_pips < ord_pips)
         {
            max_pips = ord_pips;
            ticket = OrderTicket();
            ord_sym = _sym;
         }
      }
      if(ticket < 0) Comment("");
      else Comment("Max pips in order = ", max_pips, " , Symbol = ", ord_sym, " , ticket = ", ticket);
      Sleep(123);
      RefreshRates();
   }
   Comment("");
}
//+------------------------------------------------------------------+
int PriceToInteger( const double Price, const double point )
{
   return((int)(Price / point + 0.1));
}
//+------------------------------------------------------------------+


wie man eine Ticketbestellung abschließt, suchen Sie hier:https://www.mql5.com/ru/forum/131859

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Alexey Viktorov:

Nun, in einfachen Worten geht es so:

Wir erstellen eine Variable vom Typ datetime und zeichnen darin den Zeitpunkt der aktuellen D1-Kerze auf, wenn wir den Auftrag mit Gewinn schließen. Und bevor wir eine weitere Order eröffnen, überprüfen wir den Wert dieser Variablen mit dem Zeitpunkt der aktuellen D1-Kerze. Dementsprechend können wir, wenn die aktuelle Uhrzeit höher ist, öffnen. Ansonsten rauchen wir Rauch Rauch Rauch.

Können Sie mir ein Beispiel zeigen, ich habe einfach nicht genug Erfahrung, um das umzusetzen, was Sie gesagt haben?
 
Hallo zusammen! Bitte empfehlen Sie ein MQL4-Tutorial auf dem neuesten Stand.
 
Nikolay Grigoryev:
Hallo zusammen! Bitte empfehlen Sie mir ein MQL4-Tutorial, das für heute relevant ist.

Es gibt nur ein Lehrbuch, das alte Kovalev-Lehrbuch. Das war bis 2016 oder so. Dann wurden viele Dinge von 5 auf 4 übertragen. Gott sei Dank wurde das Bestellsystem beibehalten. Es gibt keine Lehrbücher mehr (ich habe keine gefunden, und andere haben auch keine gefunden). Nur Artikel hier und Internetrecherchen.

 
Valeriy Yastremskiy:

Es gibt nur ein Lehrbuch, das alte Kovalev-Lehrbuch. Das war bis 2016 oder so. Dann wurden viele Dinge von 5 auf 4 übertragen. Gott sei Dank wurde das Bestellsystem beibehalten. Es gibt keine Lehrbücher mehr (ich habe keine gefunden, und andere haben auch keine gefunden). Nur Artikel hier und eine Suche im Internet.

Ich danke Ihnen!

 

Ich habe einen einfachen Indikator geschrieben. Beim Nulldurchgang wird die Linie nicht gezeichnet, obwohl die Puffer Werte haben. Können Sie mir bitte sagen, was ich falsch gemacht habe?

#property strict
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 clrGreen
#property indicator_color2 clrRed

//---- input parameters
extern int    FastEMA=12;  
extern int    SlowEMA=26;  
extern int    Signal=9;  

//---- buffers
double DiffBuffer_up[];
double DiffBuffer_dn[];
//
double MainBuffer[];
double SignalBuffer[];

ENUM_TIMEFRAMES TimeFrame;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   int    draw_begin=MathMax(FastEMA,SlowEMA);
   string short_name="MACD Stephen";
   //---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,DiffBuffer_up);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,DiffBuffer_dn);
   short_name=StringConcatenate(short_name," ("+(string)FastEMA+","+(string)SlowEMA+","+(string)Signal+")");
   IndicatorShortName(short_name);
   SetIndexDrawBegin(0,draw_begin);
   SetIndexDrawBegin(1,draw_begin);
   SetIndexLabel(0,"Up");
   SetIndexLabel(1,"Down");
   IndicatorDigits(6);
   SetLevelValue(0,0);
   
   TimeFrame=GetTF();
   
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{

   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
  int limit, iChart, iTF, delta=0;
  datetime TimeArray[];
  //if(TimeFrame>Period()) delta=(int)MathCeil(TimeFrame/Period());
  int counted_bars=IndicatorCounted();
  //---- check for possible errors
  if(counted_bars<0) return(-1);
  //---- the last counted bar will be recounted
  if(counted_bars>0) counted_bars--;
  limit=Bars-counted_bars+delta;

  ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
  ArraySetAsSeries(MainBuffer,true);
  ArraySetAsSeries(SignalBuffer,true);
  ArrayResize(MainBuffer,  100000);
  ArrayResize(SignalBuffer,100000);
  
  iTF=0;
  for(iChart=0; iChart<limit; iChart++)
  {
      while(Time[iChart]<TimeArray[iTF]) iTF++;
      MainBuffer[iChart]=EMPTY_VALUE;
      SignalBuffer[iChart]=EMPTY_VALUE;
      MainBuffer[iChart]  =iMACD(Symbol(),TimeFrame,FastEMA,SlowEMA,Signal,PRICE_CLOSE,MODE_MAIN,iTF);
      SignalBuffer[iChart]=iMACD(Symbol(),TimeFrame,FastEMA,SlowEMA,Signal,PRICE_CLOSE,MODE_SIGNAL,iTF);
      double diff=MainBuffer[iChart]-SignalBuffer[iChart];
      
      if (diff>0) {
         DiffBuffer_up[iChart]=diff;
         DiffBuffer_dn[iChart]=EMPTY_VALUE;
      }
      else {
         DiffBuffer_dn[iChart]=diff;
         DiffBuffer_up[iChart]=EMPTY_VALUE;
      }
  }
  return(0);
}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES GetTF() {

   switch (Period()) {
      case PERIOD_M1:  return PERIOD_M5;
      case PERIOD_M5:  return PERIOD_M15;
      case PERIOD_M15: return PERIOD_M30;
      case PERIOD_M30: return PERIOD_H1;
      case PERIOD_H1:  return PERIOD_H4;
      case PERIOD_H4:  return PERIOD_D1;
      case PERIOD_D1:  return PERIOD_W1;
      case PERIOD_W1:  return PERIOD_MN1;
   }
   
   return (ENUM_TIMEFRAMES)Period();

}
//+------------------------------------------------------------------+