[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 223

 

Всем привет.

У меня есть скрипт, который закрывает все имеющиеся ордера.

Мне непонятны в нём три строки:

Если не трудно, пожалуйста переведите на русский-удобоваримый язык для новичка.

Учебник я учил, но такие длинные логические выражения мне не попадались.

Скрипт я прикрепляю. Спасибо.

Файлы:
 

Попробую "перевести" для вас первую запись:

if(((OrderSymbol() == Symbol() && OnlyThisSymbol) || !OnlyThisSymbol))

"Если хотя бы одно из выражений 1. или 2. истинно, то ... "
1.инструмент ордера совпадает с инструментом графика и внешняя переменная OnlyThisSymbol имеет значение равное true
2.внешняя переменная OnlyThisSymbol имеет значение равное false.

Теперь смысл этой записи:
До закрытия идет перебор закрываемых ордеров по позициям с различными фильтрами. Эта запись -- фильтр по инструменту. Ввод значения внешней переменной OnlyThisSymbol дает выбор пользователю -- закрывать ордера только по инструменту графика или ордера по любому инструменту.

 
alsu:

Не совсем так. Дело в том, что переменная Experts уже имеет тип int, следовательно, преобразование типа должно произойти ДО присвоения ей значения, т.е. компилятор

* вынул из коробочки значение типа double (оно не имеет имени в вашей программе, а записывается просто в некий известный компилятору адрес в оперативной памяти или в регистр процессора)

* проделал все необходимые изменения со значением вышеуказанной переменной и записал новое значение (уже типа int!) в переменную Experts,

* приписал это значение (типа int!) переменной New_Experts. Они имеют одинаковый тип, следовательно, тут просто переброска значения из одной ячейки памяти в другую.


P.S. Очень радует наличие персон, которые настолько подробно осмысливают свои деяния. На самом деле, без шуток. Обращайтесь еще.


Доброго времени суток... Разбирая Ваше последнее и предпоследнее сообщения, зашел в тупик. В частности (Ваше сообщение из предыдущего ответа): "Далее, когда мы достали значение из коробки, оно имеет тип double, но если дана команда записать результат в переменную типа int, компилятор автоматически проделает все необходимые действия, чтобы положить значение в новую коробочку." И Ваше сообщение из последнего ответа: "Дело в том, что переменная Experts уже имеет тип int...". Мы же ее преобразовали в тип double в тот момент, когда "положили" ее в коробочку GV-переменной?

Заранее благодарю за ответ

 

Подскажите, друзья. Есть ли в MQL4 возможность программным путем задавать величину Баланса счета, а не только в начальных условиях тестера?

Чтобы понятен был вопрос, поясню для чего это нужно. Для того, чтобы в ходе оптимизации Советник как переменную менял и размер Баланса счета.

 

Добрый день.

Пытаюсь создать индюк для отображения Sl и Tp на графике из расчёта (H-L)/2, что-то не получается - рисует по закрытию бара, в чём косяк?

За основу был взят индюк ATR.

//+------------------------------------------------------------------+
//|                                                          Tp/Sl.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Red
#property indicator_color2 Green
#property indicator_color3 Red
#property indicator_color4 Green
//---- input parameters
extern int PeriodMM=25;
//---- buffers
double SlBuffer[];
double TpBuffer[];
double SlBuffer2[];
double TpBuffer2[];
double TempBuffer[];
double TempBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- 1 additional buffer used for counting.
   IndicatorBuffers(4);
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,SlBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,TpBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,SlBuffer2);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,TpBuffer2);
   SetIndexBuffer(4,TempBuffer);
   SetIndexBuffer(5,TempBuffer2);
//----
   SetIndexDrawBegin(0,PeriodMM);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Average True Range                                               |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=PeriodMM) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=PeriodMM;i++)
      SlBuffer[Bars-i]=0.0;
      TpBuffer[Bars-i]=0.0;
      SlBuffer2[Bars-i]=0.0;
      TpBuffer2[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      double close = Close[i];
      TempBuffer[i]=(high-low)/2;
      TempBuffer2[i]=(high-low)/2*2.5;
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      SlBuffer[i]=Close[i]+iMAOnArray(TempBuffer,Bars,PeriodMM,0,MODE_SMA,i);
      TpBuffer[i]=Close[i]+iMAOnArray(TempBuffer2,Bars,PeriodMM,0,MODE_SMA,i);
      SlBuffer2[i]=Close[i]-iMAOnArray(TempBuffer,Bars,PeriodMM,0,MODE_SMA,i);
      TpBuffer2[i]=Close[i]-iMAOnArray(TempBuffer2,Bars,PeriodMM,0,MODE_SMA,i);
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Товарищи не могу понять, почему не создаются CSV файлы, раньше все работало.
//+------------------------------------------------------------------+
//|                                                          TP1.mq4 |
//|                                                      S.I.Shlikov |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "S.I.Shlikov"
#property link      ""
int init()  
  {
   int h=FileOpen("H"+(Period()/60)+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";");
    if(h<1)
      {
      Print("Файл не найден : ", GetLastError());
      return(false);
      }
   FileSeek(h, 0, SEEK_END);
   FileWrite(h,"Date","EURUSD","GBPUSD","NZDUSD","USDJPY","EURJPY","GBPJPY","USDCHF","EURCHF","GBPCHF");
   FileClose(h);        
  }
int start()
  {
   int h=FileOpen("H"+(Period()/60)+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";");
    if(h<1)
      {
      Print("Файл не найден : ", GetLastError());
      return(false);
      }
   string Wtime=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES);
   FileSeek(h, 0, SEEK_END);
   FileWrite(h,Wtime,DoubleToStr(iClose("EURUSD",Period(),0),MarketInfo("EURUSD",MODE_DIGITS)),
                     DoubleToStr(iClose("GBPUSD",Period(),0),MarketInfo("GBPUSD",MODE_DIGITS)),
                     DoubleToStr(iClose("NZDUSD",Period(),0),MarketInfo("NZDUSD",MODE_DIGITS)),
                     
                     DoubleToStr(iClose("USDJPY",Period(),0),MarketInfo("USDJPY",MODE_DIGITS)),
                     DoubleToStr(iClose("EURJPY",Period(),0),MarketInfo("EURJPY",MODE_DIGITS)),
                     DoubleToStr(iClose("GBPJPY",Period(),0),MarketInfo("GBPJPY",MODE_DIGITS)),
                     
                     DoubleToStr(iClose("USDCHF",Period(),0),MarketInfo("USDCHF",MODE_DIGITS)),
                     DoubleToStr(iClose("EURCHF",Period(),0),MarketInfo("EURCHF",MODE_DIGITS)),
                     DoubleToStr(iClose("GBPCHF",Period(),0),MarketInfo("GBPCHF",MODE_DIGITS))
                     );
   FileClose(h);   
   return(0);
  }
 
orb:
Товарищи не могу понять, почему не создаются CSV файлы, раньше все работало.

а какой номер ошибки?
 
sergeev:

а какой номер ошибки?
нет номера ошибки...просто файлы не создаются, ищу в ALPARI\tester\files\
 
orb:
нет номера ошибки...просто файлы не создаются, ищу в ALPARI\tester\files\

ну дык поищите в другой
 
sergeev:

ну дык поищите в другой
уже посмотрел.
Причина обращения: