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

 
Подскажите - а for внури for(а) работает?
 
elmucon:
Подскажите - а for внури for(а) работает?
Работает. Даже работают все остальные операторы.
 
Zhunko:
Работает. Даже работают все остальные операторы.

блаагодарю!
 
Приветствую! Подскажите фрагмент кода для эксперта, который использует для входа сигнал индикатора, строящго не линию, а стрелки (то есть стиль индикатора определяется как SetIndexStyle(0, DRAW_ARROW, EMPTY, 3) ). Нужно чтобы при стрелке вниз шла продажа, при стрелке вверх - покупка. Стандартными методами у меня почему-то не получилось(
 

Подскажите плиз, как можно изменить период rsi (по умолчанию 14)?

Спасибо


//+------------------------------------------------------------------+
//|                                                  RSI_to_File.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.ru/"

#property show_inputs
string SymbolsArray[11]={"","USDCHF","GBPUSD","EURUSD","USDJPY","CHFJPY","EURGBP","EURCHF","EURJPY","GBPJPY","GBPCHF"};

//+------------------------------------------------------------------+
//| string SymbolByNumber                                   |
//+------------------------------------------------------------------+
string GetSymbolString(int Number)
  {
//----
   string res="";
   res=SymbolsArray[Number];   
//----
   return(res);
  }

//+------------------------------------------------------------------+
//| возвращает период                                                |
//+------------------------------------------------------------------+
int PeriodNumber(int number)
   {
   int per_min;
   switch (number)
      {
     
      case 5: per_min=PERIOD_H4;break;
      default: per_min=PERIOD_D1;break;
      }
   return(per_min);   
   }

//+------------------------------------------------------------------+
//|   выводит в файл котировки + значения индикатора                 |
//+------------------------------------------------------------------+
void RSI_output(string SymbolName,int PeriodMinutes)
   {
   int size=iBars(SymbolName,PeriodMinutes);
//----
   if (size==0) return;
   int handle=FileOpen(SymbolName+PeriodMinutes+"_RSI.csv",FILE_WRITE|FILE_CSV);
   if (handle<0) return;
   FileWrite(handle,"Time;RSI");
   for (int i=size-1;i>=0;i--)
      {
      FileWrite(handle,TimeToStr(iTime(SymbolName,PeriodMinutes,i))
         ,iCustom(SymbolName,PeriodMinutes,"RSI",0,i));
      }
   FileClose(handle);      
//----
   return;
   }
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
  int SymbolCounter,PeriodCounter; 
//----
   for (SymbolCounter=1;SymbolCounter<13;SymbolCounter++)
      {
      for (PeriodCounter=2;PeriodCounter<=6;PeriodCounter++)
         {
         //Print("NewBar on ",GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter),"M");
         RSI_output(GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter));
         }
      }
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

 

Ребята ткните пальцем где мне зарегистрироваться что бы можно было воспользова лся OPLI online где взять логин и пароль ???

 
Вот смотрите, я получил время функцией
ObjectGet("qwerty",OBJPROP_TIME2);
Получилось 1323452400. Как я понял время это в секундах, значить если я отниму от этого времени 600, то новое местоположение будет на 10 баров назад на 5-минутном графике, но на самом деле новая координата сдвинулась всего на 1 бар, почему так происходит? А чтобы сдвиг был на 10 баров надо отнять примерно 3000, где здесь логика?
 

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

Регулятор лота Уважаемого voix_kas. Немного переделанного мной.

double GetLot(int FastPeriodMA,int SlowPeriodMA) {
int i;
static double Lot = 0;
static double PrevBalance = 0;
static double BalanceOld[0];
static double BalanceNew[0];
if (NormalizeDouble(PrevBalance - AccountBalance(), 2) != 0) {
ArrayResize(BalanceNew, ArraySize(BalanceOld) + 1);
for (i = 0; i <= ArraySize(BalanceOld) - 1; i++)
BalanceNew[i] = BalanceOld[i];
BalanceNew[ArraySize(BalanceOld)] = AccountBalance();
ArrayResize(BalanceOld, ArraySize(BalanceOld) + 1);
ArrayCopy(BalanceOld, BalanceNew);
PrevBalance = AccountBalance();

if (ArraySize(BalanceNew) > SlowPeriodMA) {
double FastMA = 0, SlowMA = 0;
for (i = ArraySize(BalanceNew) - FastPeriodMA; i <= ArraySize(BalanceNew) - 1; i++)
FastMA += BalanceNew[i];
FastMA /= FastPeriodMA;
for (i = ArraySize(BalanceNew) - SlowPeriodMA; i <= ArraySize(BalanceNew) - 1; i++)
SlowMA += BalanceNew[i];
SlowMA /= SlowPeriodMA;
if (FastMA > SlowMA){ Lot = 5;Print(" FastMA ",FastMA,"; SlowMA= ",SlowMA); } 
else Lot = 0.01;
}
}
if (Lot < MarketInfo(Symbol(), MODE_MINLOT)) Lot = MarketInfo(Symbol(), MODE_MINLOT);
else if (Lot > MarketInfo(Symbol(), MODE_MAXLOT)) Lot = MarketInfo(Symbol(), MODE_MAXLOT);
return (Lot);
}
 
001:

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

Регулятор лота Уважаемого voix_kas. Немного переделанного мной.


И на каждом тике размер массивов увеличивается?

И может проще индикатора баланса сделать. А в советнике уже к нему обращаться

 
Vinin:


И на каждом тике размер массивов увеличивается?

И может проще индикатора баланса сделать. А в советнике уже к нему обращаться


Можно, но советник работает медленей при этом. Да и с выводом на экран тоже ерунда получается, он отрисовывает ТОЛЬКО когда сделка закрылась, а как сделать чтобы он существовал как непрерывная линия баланса я не пойму, может кто подскажет?
Причина обращения: