[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 406

 

Est-ce que quelqu'un d'autre a une telle restriction sur l'accès à Five.

Ou alors c'est comme ça que je me fais hacher pour de soi-disant "inscriptions multiples" au championnat ! :-)


 
Roman.:

1. De même.

2. Apprenez à utiliser Google !

Merci beaucoup ! Cela semble avoir fonctionné.

 
Vinin:


Avez-vous essayé de gérer les erreurs ?

Il y a plusieurs conditions.

1. Le deuxième instrument doit être ouvert dans l'aperçu du marché. Et mieux encore, si un graphique avec la bonne échelle de temps est ouvert (mais pas nécessairement).

2) L'erreur 4066 doit être absente.

3) L'ensemble du code, et pas seulement une partie de celui-ci, dans laquelle vous pensez que le problème se situe, doit être soumis à l'examen.

Merci pour la réponse. il y a beaucoup d'erreurs. je vous ai donné une section de code, car sans elle la compilation réussit. voici le code en entier :
//+------------------------------------------------------------------+
//|                                                   PriseRatio.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
//для часовиков aud/usd (прикрепляется) и nzd/usd
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DarkViolet
//--- input parameters
extern int       ProcessDeep=1000;
//--- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
 //----расчет отношения цен
    double a, b;
    int i;
    double Ratio(double a, double b) 
    {a = iClose(NULL, PERIOD_H1, i);
     b = iClose("NZDUSD",PERIOD_H1,i);
    return (a/b);
    }
    
 
 //----оптимизация
    int counted_bars=IndicatorCounted(),
       limit;
 
    if(counted_bars>0)
      counted_bars--;
   
    limit=Bars-counted_bars;
   
    if(limit>ProcessDeep)
      limit=ProcessDeep;
  
    for(int i=0;i<limit;i++)
    {
      ExtMapBuffer1[i]=Ratio(а,b);
    }
//----
   

   return(0);
  }
 
eternal2:
Je vous ai donné un fragment de code, car la compilation est réussie sans lui. Voici le code complet :


Pourquoi avez-vous décidé que MQL4 supporte l'imbrication des fonctions ?

//+------------------------------------------------------------------+
//|                                                   PriseRatio.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+

#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DarkViolet
//--- input parameters
extern int       ProcessDeep=1000;
//--- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),
       limit;
 
    if(counted_bars>0)
      counted_bars--;
   
    limit=Bars-counted_bars;
   
    if(limit>ProcessDeep)
      limit=ProcessDeep;
  
    for(int i=0;i<limit;i++)
    {
      ExtMapBuffer1[i]=Ratio("NZDUSD",i);
    }
//----
   

   return(0);
  }
  
double Ratio(string lsSymbol, int lnPos) {
   double res=0;
   int shift=iBarShift(lsSymbol, 0, Time[lnPos]);
   double a = iClose(NULL, 0, lnPos);
   double b = iClose(lsSymbol,0,shift);
   if (b>0) res=a/b;
   return (res);
}
  
 
Vinin:


Qu'est-ce qui vous fait penser que MQL4 supporte les fonctions imbriquées ?

Merci, mais pourriez-vous expliquer quelle fonction a été imbriquée et commenter votre code ?
 
//+------------------------------------------------------------------+
//|                                                      _Symbol.mq4 |
//|           Copyright © 2012. XrustSolution. mail:xrustx@gmail.com |
//|          https://www.youtube.com/user/opmlv http://forexrust.info |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012. XrustSolution. mail:xrustx@gmail.com"
#property link      "https://www.youtube.com/user/opmlv http://forexrust.info"
//+------------------------------------------------------------------+
//| Super Global Variables                                           |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_width1 0
#property indicator_width2 0
//+------------------------------------------------------------------+
//| Extern Variables                                                 |
//+------------------------------------------------------------------+
extern   color    Chart_Color                             = Teal     ;
extern   string   SYMBOL                                  = "USDCHF" ;
extern   bool     Mirror                                  = false    ; 
extern   bool     Sinshronise_Daily_Weekly                = true     ;
extern   double   Scale_Multyplier                        = 1        ; 
extern   int      Bars_Back                               = 2000     ;       
//+------------------------------------------------------------------+
//|   Defines & Global variavles                                     |
//+------------------------------------------------------------------+
#define empty  EMPTY_VALUE
//+------------------------------------------------------------------+
string _sy;
int    _per;
//--- buffers
double hi[];
double lo[];
double op[];
double cl[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init(){_sy = StringUpper(SYMBOL);
   if(StringLen(_sy)<4){_sy = Symbol();}
   IndicatorShortName(_sy);
   IndicatorDigits(MarketInfo(_sy,MODE_DIGITS));
   if(Sinshronise_Daily_Weekly){
      _per = PERIOD_D1;
   }else{
      _per = PERIOD_W1;
   }
   if(Scale_Multyplier==0){
      Scale_Multyplier=1;
   }
   if(Scale_Multyplier > 1000){
      Scale_Multyplier=1000;
   }
    //---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,0,Chart_Color);
   SetIndexBuffer(0,hi);
   SetIndexEmptyValue(0,EMPTY_VALUE);
   SetIndexLabel(0,_sy);
   SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,0,Chart_Color);
   SetIndexBuffer(1,lo);
   SetIndexEmptyValue(1,EMPTY_VALUE);
   SetIndexLabel(1,_sy);
   SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,1,Chart_Color);
   SetIndexBuffer(2,op);
   SetIndexEmptyValue(2,EMPTY_VALUE);
   SetIndexLabel(2,_sy);
   SetIndexStyle(3,DRAW_HISTOGRAM,EMPTY,1,Chart_Color);
   SetIndexBuffer(3,cl);
   SetIndexEmptyValue(3,EMPTY_VALUE);
   SetIndexLabel(3,_sy);
    //----
return;}
//+------------------------------------------------------------------+
void deinit(){return;}
//+------------------------------------------------------------------+
void start(){    
    //---- Стандартный набор переменых 
    static int pretime=0;
    static double prerp = 0;     
   int i, ii = 0, counted = IndicatorCounted();
   if (counted > 0) counted--;
   int limit = Bars - counted;
   int per   = Period();
   string sy = Symbol();
   string txt="";
   //---- Предварительные расчеты и объявления
   double op_1,op_2,_hi,_lo,_op,_cl;
   double ss = iOpen(sy,_per,0)/iOpen(_sy,_per,0);
   if(ss<1){ss=ss*MathPow(10,(Digits-MarketInfo(_sy,MODE_DIGITS)));}
   double sm, mno = (Point/MarketInfo(_sy,MODE_POINT))*ss*Scale_Multyplier;
   if(Bars_Back!=0){limit=Bars_Back;}
   if(limit < 5){limit=5;}
   //---- Масштабирование ширины гистограммы
    int width = GetChartScale();
    SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,0);
    SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,0);
   SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,width);
   SetIndexStyle(3,DRAW_HISTOGRAM,EMPTY,width);
    //---- Основной расчет индикатора
   for(i=0;i<limit;i++){
      //---- Пропускаем отсутвующие бары (синхронизация)
      while(iBarShift(_sy,per,iTime(sy,per,ii),true)<0){
         ii++;
         continue;
      }
      //---- Вычисляем смещение для точки синхронизации цены
      op_1 = iOpen(sy ,_per,iBarShift(sy ,_per,iTime(sy,per,ii)));
      op_2 = iOpen(_sy,_per,iBarShift(_sy,_per,iTime(_sy,per,i))); 
      sm = op_1 - op_2 * mno;    
      //---- Читаем данные символа  
      _hi = sm + iHigh(_sy,per,i)*mno;
      _lo = sm + iLow(_sy,per,i)*mno;
      _op = sm + iOpen(_sy,per,i)*mno;
      _cl = sm + iClose(_sy,per,i)*mno;
      //---- Переворачиваем чарт
      if(Mirror){
         _hi += 2 * (op_1-_hi);
         _lo += 2 * (op_1-_lo); 
         _op += 2 * (op_1-_op); 
         _cl += 2 * (op_1-_cl);       
      }
      //---- Отображаем график
      hi[ii] = _hi;
       lo[ii] = _lo;
      op[ii] = _op;
       cl[ii] = _cl;
       //---- Обработка дожи
       if(op[ii]==lo[ii]){op[ii]+=Point;}
       ii++;
   }
    //----
return;}
//+------------------------------------------------------------------+
//|   includes                                                       |
//+------------------------------------------------------------------+
#import "user32.dll"
    bool GetWindowRect(int h, int& pos[4]);
#import
//+------------------------------------------------------------------+
//|          Function  : int GetChartScale()[1,2,4,6,13]             |
//|          Copyright © 2012, XrustSolution.  mail:xrustx@gmail.com |
//|          https://www.youtube.com/user/opmlv http://forexrust.info |
//+------------------------------------------------------------------+
//|          Description: Return bar width in current chart scale    |
//+------------------------------------------------------------------+
int GetChartScale(){
    int h = WindowHandle(Symbol(), Period());
    int rect[4];
    if(h==0) return(1);
    GetWindowRect(h, rect);
    int wW  = rect[2] - rect[0]; // ширина окна
    int bpc = WindowBarsPerChart();
    if(bpc==0) return(1);
    int scale = MathFloor((wW-48)/bpc);
    switch(scale){
        case  1 :    return(0);
        case  2 :    return(1);
        case  4 :    return(2);
        case  8 :    return(4);
        case 16 :    return(7);
        case 32 :    return(14);
        default :   return(1);
    }
    return(1);
}
//+------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru         |
//+------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                           |
//|  Описание : Возвращает строку в ВЕРХНЕМ регистре                 |
//+------------------------------------------------------------------+
string StringUpper(string s) {
  int c, i, k=StringLen(s), n;
  for (i=0; i<k; i++) {
    n=0;
    c=StringGetChar(s, i);
    if (c>96 && c<123) n=c-32;    // a-z -> A-Z
    if (c>223 && c<256) n=c-32;   // а-я -> А-Я
    if (c==184) n=168;            //  ё  ->  Ё
    if (n>0) s=StringSetChar(s, i, n);
  }
  return(s);
}
//+------------------------------------------------------------------+
 
FAQ:

Puis-je parler russe ? Je suis un débutant.

veuillez commenter certains codes :

double Ratio(string lsSymbol, int lnPos) {
   double res=0;
   int shift=iBarShift(lsSymbol, 0, Time[lnPos]);
   double a = iClose(NULL, 0, lnPos);
   double b = iClose(lsSymbol,0,shift);
   if (b>0) res=a/b;
   return (res);
 

Salutations !

Pouvez-vous me dire ce qui ne va pas avec le code... il y a une erreur dans le prix de l'ordre en attente. je ne comprends pas ce qui ne va pas. comment puis-je y remédier ?

Dossiers :
thsayn.mq4  15 kb
 
Bonjour" Je n'arrive pas à ajouter une fonction personnalisée à un EA. Si quelqu'un sait où lire comment ajouter et en général sur les fonctions personnalisées s'il vous plaît écrivez !
 
lowech:
Bonjour" Je n'arrive pas à ajouter une fonction personnalisée à un EA. Si quelqu'un sait où lire comment ajouter et en général sur les fonctions personnalisées s'il vous plaît écrivez !

Au secours ! F1 !