Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1019

 
Artyom Trishkin:
Print() in modalità visiva

Grande! Grazie! Tutto ha funzionato. Controllate tutte le variabili in una volta sola.

 
Roni Iron:

Buon pomeriggio!

Quali sono le opzioni per ottenere dati di questo tipo:

Ora (UTC), Ask, Bid, AskVolume, BidVolume

Ask,Bid - è sufficiente specificare. Non c'è bisogno di complicarsi troppo, e c'è solo 1 volume nel Forex.

iVolume

Restituisce il valore del volume di tick della barra (specificata dal parametro shift) del grafico corrispondente.

long  iVolume( 
   string           symbol,          // символ 
   int              timeframe,       // период 
   int              shift            // сдвиг 
   );
 
Salve, potreste consigliarmi, quando installo un indicatore personalizzato in MQL4, tutto funziona, ma quando passo ad un altro timeframe funziona solo deinit (dal timeframe precedente), e init non funziona su uno nuovo, cioè il programma non si riavvia, si rimuove solo dalla finestra. Quando imposto manualmente l'indicatore sul nuovo timeframe tutto va bene. Quale può essere il problema?
 

Questo è esattamente il trucco - il forex ha un volume in tick di una barra, ma non c'è un volume di scambio in tick. Ma le fonti di quotazioni tick (Ducascopy, ecc.) danno i valoriAskVolume,BidVolume dopo i valori di prezzo nella forma 0.32,0.12 (e non è chiaro se si tratta di 2 cifre con virgole o 4.

Grazie!

 
C'è qualche trucco per creare un file CSV senza separatori?
 

Salve.

Per favore consigliatemi, ho riscritto il mio codice per MQL5, che era stato scritto per MQL4.

Ho due EMA, uno per uno.

Non ho errori durante la compilazione, ma non mostra gli stessi risultati di MQL4.

Ho guardato il manualeMQL5, ma non ci capisco niente.

//+------------------------------------------------------------------+
//|                                                           MA.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot 1
#property indicator_label1  "MA 1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrLime
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot 2
#property indicator_label2  "MA 2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrYellow
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//
input int PER=8; //Period
//
double         MA_1[];
double         MA_2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,MA_1,INDICATOR_DATA);
      SetIndexBuffer(1,MA_2,INDICATOR_DATA);
         IndicatorSetInteger(INDICATOR_DIGITS,2);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
   program(rates_total,prev_calculated,close);
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+---EMA

double EMA(double N,double P,double EMA0=0)//формула
  {
   double  A=2/(N+1);                      //расчета
   return(A*P+(1-A)*EMA0);                 //ЕМА
  }
//+---
void program(int rates_total,int prev_calculated,const double &close[])
  {

   int Y=rates_total-prev_calculated;
   if(prev_calculated==0) Y=Y-PER-1;

   for(Y=Y; Y>=0; Y=Y-1)

     {
     
      MA_1[Y]=EMA(PER,close[Y],MA_1[Y+1]);//первая
      MA_2[Y]=EMA(PER,MA_1[Y],MA_2[Y+1]);//на неё вторая

     }
   return;
  }
//+------------------------------------------------------------------+
 
imknk:

Salve.

Per favore consigliatemi, ho riscritto il mio codice per MQL5, che era stato scritto per MQL4.

Ho due EMA, uno per uno.

Non ho errori durante la compilazione, ma non mostra gli stessi risultati di MQL4.

Mi sono già rotto gli occhi nel manualeMQL5, non ci capisco niente.

In mql5, i buffer devono essere capovolti, perché vanno all'indietro.

Aggiungere una costruzione e leggerne il contenuto

ArraySetAsSeries(MA_1,true);
Документация по MQL5: Пользовательские индикаторы / SetIndexBuffer
Документация по MQL5: Пользовательские индикаторы / SetIndexBuffer
  • www.mql5.com
[in]  Тип данных, хранящихся в индикаторном массиве. По умолчанию INDICATOR_DATA (значения рассчитанного индикатора). Может также принимать значение INDICATOR_COLOR_INDEX, тогда данный буфер предназначен для хранения индексов цветов для предыдущего индикаторного буфера. Можно задать до 64 цветов в строке #property indicator_colorN. Значение...
 
Vitaly Muzichenko:

In mql5 bisogna capovolgere i buffer, vanno avanti e indietro.

Aggiungere una costruzione e leggerne il contenuto

Grazie, lo proverò ora.
 

Per favore aiutatemi, dov'è l'errore?

Perché quando una condizione if viene passata a una funzione, giura " 'all_clouse' - funzione non definita"

if(buy>=position)
 {
   All_clouse();  // 'All_clouse' - wrong parameters count

 }
..............
дальше код
..............
Уже за пределами OnTick
void All_clouse(int a,double x, double y)
  {
.............
   } к самой функции закрытия ордеров у него претензий нет.
 
Gilmor:

Per favore aiutatemi, dov'è l'errore?

Perché in una condizione if con un salto a una funzione dice " 'all_clouse' - funzione non definita"?

Perché avete bisogno di inserire dei parametri nella funzione e la state chiamando vuota All_clouse()

void All_clouse(int a,double x, double y)