Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1019

 
Artyom Trishkin:
Print() en mode visuel

Super ! Merci ! Tout s'est arrangé. J'ai vérifié toutes les variables en même temps.

 
Roni Iron:

Bonjour !

Quelles sont les options pour obtenir des données de ce type :

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

Ask, Bid - il suffit de le préciser. Il n'y a pas besoin d'être trop compliqué, et il n'y a qu'un seul volume dans le Forex.

iVolume

Renvoie la valeur du volume en ticks de la barre (spécifiée par le paramètre shift) du graphique correspondant.

long  iVolume( 
   string           symbol,          // символ 
   int              timeframe,       // период 
   int              shift            // сдвиг 
   );
 
Bonjour, pourriez-vous me conseiller, lorsque j'installe un indicateur personnalisé dans MQL4, tout fonctionne, mais lorsque je passe à un autre timeframe, seul le deinit (du timeframe précédent) fonctionne, et le init ne fonctionne pas sur un nouveau, c'est-à-dire que le programme ne redémarre pas, il s'efface juste de la fenêtre. Lorsque je règle manuellement l'indicateur sur la nouvelle période, tout se passe bien. Quel peut être le problème ?
 

C'est exactement l'astuce - le forex a un volume en tick d'une barre, mais il n'y a pas de volume de transaction en tick. Mais les sources de cotations en tick (Ducascopy, etc.) donnent les valeursAskVolume,BidVolume après les valeurs de prix sous la forme 0.32,0.12 (et il n'est pas clair si c'est 2 chiffres avec des virgules ou 4.

Merci !

 
Existe-t-il une astuce pour créer un fichier CSV sans séparateurs ?
 

Bonjour.

Veuillez me conseiller, j'ai réécrit mon code pour MQL5, qui était écrit pour MQL4.

J'ai deux EMA, un pour un.

Jen'ai pas eu d'erreur lors de la compilation, mais il ne montre pas les mêmes résultats que dans MQL4.

J' ai parcouru le manuel deMQL5, mais je n'y comprends rien.

//+------------------------------------------------------------------+
//|                                                           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:

Bonjour.

Veuillez me conseiller, j'ai réécrit mon code pour MQL5, qui était écrit pour MQL4.

J'ai deux EMA, un pour un.

Jen'ai pas eu d'erreur lors de la compilation, mais il ne montre pas les mêmes résultats que dans MQL4.

Je me suis déjà cassé les yeux dans le manuelMQL5, je n'y comprends rien.

Dans mql5, les tampons doivent être retournés, car ils vont à l'envers.

Ajouter une construction et lire à son sujet

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

Dans mql5, il faut inverser les tampons, ils vont à l'envers.

Ajouter une construction et lire à son sujet

Merci, je vais l'essayer maintenant.
 

Veuillez m'aider, où se trouve l'erreur ?

Pourquoi, lorsqu'une condition if est passée à une fonction, celle-ci jure " 'all_clouse' - fonction non définie".

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

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

Veuillez m'aider, où se trouve l'erreur ?

Comment se fait-il que dans une condition if avec un saut vers une fonction, il est indiqué " 'all_clouse' - fonction non définie" ?

Parce que vous devez introduire des paramètres dans la fonction et que vous l'appelez vide All_clouse()

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