Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 226

 

Alexey, grazie per le tue risposte e il tuo aiuto.

Nuova domanda, è possibile duplicare le schede dei grafici in MT4? Cioè, non un modello per impostare i parametri del grafico ogni volta, ma una copia completa della scheda con la valuta selezionata, il timeframe e i parametri del grafico. Esiste o no una cosa del genere?

 
Rustam Bikbulatov:

Provare)

Combattere, cercare, trovare e ri-nascondere!


ElenkaVladi:

Nuova domanda.

Sì, non c'è di che.

Il più semplice è il modello. Perché non ti piace? Hai impostato il timeframe, la scala, il colore dello sfondo, il colore delle candele, hai impostato gli indicatori richiesti e l'hai salvato come default.tpl. Ora, quando apri un nuovo grafico, tutto è pronto per te.

 
Aleksei Stepanenko:


La cosa più semplice è il modello. Perché non ti piace? Impostare il timeframe, la scala, il colore dello sfondo, il colore delle candele, abbozzare gli indicatori necessari e salvarlo come default.tpl. Ora, quando apri un nuovo grafico, tutto è pronto per te.

No, la domanda sembra essere diversa. Quando un utente apre un grafico e installa un indicatore, non conosce né TF né simbolo. Lo script dovrebbe selezionare il simbolo e il TF. (E l'indicatore può essere caricato allo stesso tempo, o può essere selezionato un modello).

 
Aleksei Stepanenko:

Combattere, cercare, trovare e ri-nascondere!


Sì, non c'è di che.

La cosa più semplice è il modello. Perché non ti piace? Si imposta il timeframe, la scala, il colore dello sfondo, il colore delle candele, si impostano gli indicatori necessari e si salva come default.tpl. Ora, quando apri un nuovo grafico, tutto è pronto per te.

Ah, è così che funziona, senza pensare a default.tpl. :))
 

@makssub in PM chiedendo il codice MQL4, poi questo codice

#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));
}
//+------------------------------------------------------------------+


come chiudere un ordine di biglietti qui cerca:https://www.mql5.com/ru/forum/131859

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

Beh, in parole semplici, va così:

Creiamo una variabile di tipo datetime e vi registriamo il tempo della candela D1 corrente quando chiudiamo l'ordine con un profitto. E prima di aprire un altro ordine, controlliamo il valore di questa variabile con il tempo della candela D1 corrente. Di conseguenza, se il tempo corrente è più alto, possiamo aprire. Altrimenti, fumiamo fumo fumo fumo.

Puoi mostrarmi un esempio, non ho abbastanza esperienza per implementare quello che hai detto?
 
Ciao a tutti! Si prega di consigliare un tutorial MQL4, aggiornato.
 
Nikolay Grigoryev:
Ciao a tutti! Potete consigliarmi un tutorial MQL4 che sia aggiornato ora?

c'è solo un libro di testo, il vecchio libro di testo di Kovalev. Era fino al 2016 o giù di lì. Poi molte cose del 5 sono state trasferite al 4. Grazie a Dio il sistema degli ordini è stato mantenuto. Non ci sono più libri di testo (io non ne ho trovati, e nemmeno altri). Solo articoli qui e ricerche su internet.

 
Valeriy Yastremskiy:

c'è solo un libro di testo, il vecchio libro di testo di Kovalev. Era fino al 2016 o giù di lì. Poi molte cose del 5 sono state trasferite al 4. Grazie a Dio il sistema degli ordini è stato mantenuto. Non ci sono più libri di testo (io non ne ho trovati, e nemmeno altri). Solo articoli qui e una ricerca su internet.

Grazie!

 

Ho scritto un semplice indicatore. Quando attraversa lo zero, non traccia la linea, anche se i buffer hanno dei valori. Potete per favore dirmi dove ho sbagliato.

#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();

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