Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2519

 

Здравствуйте. Подскажите, как можно разделить параметры в коде, если в индикаторе используются зарезервированные слова дважды? Такие как:

       (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[])
  {
   int i=0;
   int limit=0,extreme_counter=0,extreme_search=0;
   int shift=0,back=0,last_high_pos=0,last_low_pos=0;
   double val=0,res=0;
   double curlow=0,curhigh=0,last_high=0,last_low=0;
//--- initializing
   if(prev_calculated==0)

 
Игорь #:

Здравствуйте. Подскажите, как можно разделить параметры в коде, если в индикаторе используются зарезервированные слова дважды? Такие как:

       (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[])
  {
   int i=0;
   int limit=0,extreme_counter=0,extreme_search=0;
   int shift=0,back=0,last_high_pos=0,last_low_pos=0;
   double val=0,res=0;
   double curlow=0,curhigh=0,last_high=0,last_low=0;
//--- initializing
   if(prev_calculated==0)

Я не понял суть вопроса

Может вы просто объявляете две переменные с одинаковым названием в одной области видимости или пытаетесь дать название переменной зарезервированным именем?

 

Коллеги подскажите оптимальный вариант подобный вопрос тут уже был недавно в этой или в подобной ветке - пока не могу найти ответ -  там автор сам типа решил что что то там домножить на стоимость пункта вроде и все...

в общем у меня три символа - причем ДЦ А возвращает нули по этим запросам по индексу доллара и СП 500. Подскажите как мне привести в единую систему

координат их движения - нужны коэффициенты актуальные из стоимости их тиков мне чтобы уравновешивать лоты

EURUSD     USDInd   US500

  // Пересчет изменения цены в изменение прибыли определяется следующим коэффициентом,
  // который впоследствии нужно будет умножить на объем сделки, выраженный в лотах
  Alert("Symbol1_Name TICKVALUE", MarketInfo(Symbol1_Name, MODE_TICKVALUE), " TICKSIZE ",MarketInfo(Symbol1_Name, MODE_TICKSIZE));
  Alert("Symbol2_Name TICKVALUE", MarketInfo(Symbol2_Name, MODE_TICKVALUE), " TICKSIZE ",MarketInfo(Symbol2_Name, MODE_TICKSIZE));
  Alert("Symbol3_Name TICKVALUE", MarketInfo(Symbol3_Name, MODE_TICKVALUE), " TICKSIZE ",MarketInfo(Symbol3_Name, MODE_TICKSIZE));
      
  if(EquityScale) 
     {
      Symbol1_K = MarketInfo(Symbol1_Name, MODE_TICKVALUE)/MarketInfo(Symbol1_Name, MODE_TICKSIZE);
      Symbol2_K = MarketInfo(Symbol2_Name, MODE_TICKVALUE)/MarketInfo(Symbol2_Name, MODE_TICKSIZE);
      Symbol3_K = MarketInfo(Symbol3_Name, MODE_TICKVALUE)/MarketInfo(Symbol3_Name, MODE_TICKSIZE);
     }
  else 
  { // Пересчет изменения цены в изменение прибыли обеспечивается коэффициентом SymbolХ.Vol
    Symbol1_K = 1;
    Symbol2_K = 1;
    Symbol3_K = 1;
  }
  



индик построение эквити во вложении.



нужна формула расчета их коэфф шага цены для уравновешивания объема входа - чтобы вход по объемам символов был сбалансированным. Спасибо за рассмотрение

моего запроса.

к автору  - не стучался... может тут оптимальный вариант расчета коэфф на вход получится сделать....


пока сам разбираюсь - проблема первая была в этом переводило в большие буквы - а у ДЦ отдача символа с маленькими буквами тоже....

То тем не менее значение MODE_TICKSIZE  равно "0" у EURUSD

  // Делаем названия инструментов регистро-нечувствительными
 
 // Symbol1_Name=StringUpper(Symbol1_Name);
 // Symbol2_Name=StringUpper(Symbol2_Name);
 // Symbol3_Name=StringUpper(Symbol3_Name);


короче пока нули рисует на EURUSD не могу разобраться почему??? ДЦ на А не может же такие нули отдавать по EURUSD... )

 Alert("EURUSD TICKVALUE", MarketInfo("EURUSD",MODE_TICKVALUE), " EURUSD TICKSIZE ",MarketInfo("EURUSD",MODE_TICKSIZE));
  Alert("USDInd TICKVALUE", MarketInfo("USDInd",MODE_TICKVALUE), " USDInd TICKSIZE ",MarketInfo("USDInd",MODE_TICKSIZE));
  
   double vbid    = MarketInfo("EURUSD",MODE_BID); 
   double vask    = MarketInfo("EURUSD",MODE_ASK); 
   double vpoint  = NormalizeDouble(MarketInfo("EURUSD",MODE_POINT),_Digits); 
   int    vdigits = (int)MarketInfo("EURUSD",MODE_DIGITS); 
   int    vspread = (int)MarketInfo("EURUSD",MODE_SPREAD);
   Alert("Размер контракта в базовой валюте инструмента=",MarketInfo(Symbol(),MODE_LOTSIZE)); 
   Alert("Размер мин изменения цены в валюте депозита TICKVALUE =",MarketInfo(Symbol(),MODE_TICKVALUE)); 
   Alert("Мин шаг изменения цены в пунктах MODE_TICKSIZE = ",NormalizeDouble(MarketInfo(Symbol(),MODE_TICKSIZE),_Digits)); 
   
                 
   Alert(" vpoint = ", vpoint," vdigits = ", vdigits); 
   //Alert(" MAXLOT = ", MAXLOT," MINLOT = ", MINLOT); 
   int    TICKSIZE = (double)MarketInfo("EURUSD",MODE_TICKSIZE);
   
   Alert(" spread = ", vspread," MODE_TICKSIZE = ", TICKSIZE); 
   



вот нули по Point и по TICKSIZE 

  Alert("EURUSD TICKVALUE", MarketInfo("EURUSD",MODE_TICKVALUE), " EURUSD TICKSIZE ",MarketInfo("EURUSD",MODE_TICKSIZE));
  
  
   double vbid    = MarketInfo("EURUSD",MODE_BID); 
   double vask    = MarketInfo("EURUSD",MODE_ASK); 
   double vpoint  = NormalizeDouble(MarketInfo("EURUSD",MODE_POINT),_Digits); 
   
   Alert("  vbid = ",MarketInfo("EURUSD",MODE_BID)); 
   Alert(" vask  = ", MarketInfo("EURUSD",MODE_ASK)); 
   Alert("Мин шаг изменения цены в пунктах MODE_TICKSIZE = ",NormalizeDouble(MarketInfo(Symbol(),MODE_TICKSIZE),_Digits)); 
   
                 
   Alert(" vpoint = ", vpoint," POINT = ",  NormalizeDouble(MarketInfo("EURUSD",MODE_POINT),_Digits)); 
    
   int    TICKSIZE = (double)MarketInfo("EURUSD",MODE_TICKSIZE);
   
   Alert(" MODE_TICKSIZE = ", TICKSIZE); 


Файлы:
 
знаю что там не нули - просто не могу вывести на экран актуальное значение  - прошу помочь - кто  знает - спс.
 
Roman Shiredchenko #:
int    TICKSIZE = (double)MarketInfo("EURUSD",MODE_TICKSIZE);

int?

 
Roman Shiredchenko #:
знаю что там не нули - просто не могу вывести на экран актуальное значение  - прошу помочь - кто  знает - спс.
Alert("EURUSD TICKVALUE", MarketInfo("EURUSD",MODE_TICKVALUE), " EURUSD TICKSIZE ",DoubleToString(MarketInfo("EURUSD",MODE_TICKSIZE),_Digits));
 
Vladislav Boyko #:

int?

да  нет... спс.

проверю...

 
Tretyakov Rostyslav #:

спс - тоже думал об этом не проверял...

 
Tretyakov Rostyslav #:
Alert("EURUSD TICKVALUE", MarketInfo("EURUSD",MODE_TICKVALUE), " EURUSD TICKSIZE ",DoubleToString(MarketInfo("EURUSD",MODE_TICKSIZE),_Digits));

cпс работает

Alert("EURUSD TICKVALUE", MarketInfo("EURUSD",MODE_TICKVALUE), " EURUSD TICKSIZE ",DoubleToString(MarketInfo("EURUSD",MODE_TICKSIZE),5));
Alert("EURUSD TICKSIZE", (int)MarketInfo("EURUSD",MODE_TICKSIZE), " EURUSD TICKSIZE ",DoubleToString(MarketInfo("EURUSD",MODE_POINT),5));


 
Vladislav Boyko #:

int?

нет там 5 знаков после запятой. так не будет работать.

Спс всем разобрался!