Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 457

 
чуток ошибся в описании сначала ..должно рисовать если в 1/3 закроется
 
ребят, обнова ещё не вышла?
 
Господа программисты,разъясните плиз у индикаторов стохастик имеются уровни 20, 80. Или MACD с уровнем 0.
так вот вопрос как взять значение индикатора когда он находится ниже 20 или выше 80 основная и сигнальная линия.либо пересекаются за этими уровнями.значение индикаторов я вроде бы взял,а вот что дальше с ними делать не знаю.

Stoh=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_MAIN,0);
StohSignal=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_SIGNAL,0);

Macd=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_MAIN,0);
MacdSignal=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_SIGNAL,0);
 
denis77515:
Господа программисты,разъясните плиз у индикаторов стохастик имеются уровни 20, 80. Или MACD с уровнем 0.
так вот вопрос как взять значение индикатора когда он находится ниже 20 или выше 80 основная и сигнальная линия.либо пересекаются за этими уровнями.значение индикаторов я вроде бы взял,а вот что дальше с ними делать не знаю.

Stoh=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_MAIN,0);
StohSignal=iStochastic(Symbol(),PERIOD_H1,Kperiod,Dperiod,slowing,MODE_SMA,0,MODE_SIGNAL,0);

Macd=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_MAIN,0);
MacdSignal=iMACD(Symbol(),PERIOD_H4,fast_ema_period,slow_ema_period,signal_period,PRICE_CLOSE,MODE_SIGNAL,0);


Учебник изучаем

хотя, наверное поздно, сегодня обновляемся

пример из учебника

//--------------------------------------------------------------------
// grafobjects.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int start()                            // Спец. функция start
  {
//--------------------------------------------------------------- 1 --
   int Sit;
   double MACD_M_0,MACD_M_1,           // Главная линия, 0 и 1 бар
   MACD_S_0,MACD_S_1;                  // Сигнальная линия, 0 и 1 бар
   string Text[4];                     // Объявление строков. массива
   color  Color[4];                    // Объявление массива цветов

   Text[0]= "Открытие Buy";            // Текст для различных ситуаций
   Text[1]= "Открытие Sell";
   Text[2]= "Удерживаем Buy";
   Text[3]= "Удерживаем Sell";

   Color[0]= DeepSkyBlue;              // Цвет объекта ..
   Color[1]= LightPink;                // .. для различных ситуаций
   Color[2]= Yellow;
   Color[3]= Yellow;
//--------------------------------------------------------------- 2 --
   ObjectCreate("Label_Obj_MACD", OBJ_LABEL, 0, 0, 0);// Создание объ.
   ObjectSet("Label_Obj_MACD", OBJPROP_CORNER, 1);    // Привязка угол
   ObjectSet("Label_Obj_MACD", OBJPROP_XDISTANCE, 10);// Координата Х
   ObjectSet("Label_Obj_MACD", OBJPROP_YDISTANCE, 15);// Координата Y
//--------------------------------------------------------------- 3 --
   MACD_M_0 =iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);  // 0 бар
   MACD_S_0 =iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);// 0 бар
   MACD_M_1 =iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);  // 1 бар
   MACD_S_1 =iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);// 1 бар
//--------------------------------------------------------------- 4 --
   // Анализ ситуации 
   if(MACD_M_1<MACD_S_1 && MACD_M_0>=MACD_S_0)// Персеч. снизу вверх
      Sit=0;
   if(MACD_M_1>MACD_S_1 && MACD_M_0<=MACD_S_0)// Персеч. сверху вниз
      Sit=1;
   if(MACD_M_1>MACD_S_1 && MACD_M_0>MACD_S_0) // Главная выше сигн.
      Sit=2;
   if(MACD_M_1<MACD_S_1 && MACD_M_0<MACD_S_0) // Главная ниже сигн.
      Sit=3;
//--------------------------------------------------------------- 5 --
   // Изменение свойств объекта
   ObjectSetText("Label_Obj_MACD",Text[Sit],10,"Arial",Color[Sit]);
//--------------------------------------------------------------- 6 --
   return;                             // Выход из start()
  }
//--------------------------------------------------------------- 7 --
int deinit()                           // Спец. функция deinit
   {
   ObjectDelete("Label_Obj_MACD");     // Удаление объекта
   return;                             // Выход из deinit()
   }
//--------------------------------------------------------------- 8 --
 
double close_price(int nomer_bara)
{
if(nomer_bara<1)
{
Alert("нельзя анализировать текущий бар");
}
else
{
if(iClose(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)<iHigh(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)/3)//возвращает 1/3 если цена текущего бара закрылась ниже 1/3 его спреда 
{
return(1/3);
}
if(iClose(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)>iHigh(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)/3&&(iClose(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)<iHigh(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)*2)/3)//возвращает 2/3 если цена текущего бара закрылась ниже 2/3 и выше 1/3 его спреда 
{
return(2/3);
}

if((iClose(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)>(iHigh(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara))*2)/3&&iClose(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)<iHigh(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara))//возвращает 1 если цена текущего бара закрылась выше 2/3 его спреда
{
return(1);
}
}

}

 if(close_price(1)==1/3)// в случае если цена закрылась внизу то нарисовать линию на этом баре
   {
 SetVLine(Red, "", Time[1], STYLE_SOLID, 2);
   }
и так вся проблема заключается в том что линия рисуется на каждом баре не пойму какого черта... помогите пожалуйста
линия рисоватся должна на том баре в котором цена закрылась внизу тоесть 1/3 бара
 

Здравствуйте! Собираюсь переустановить виндоус, но при переносе папки советников на харддрайв, экспертов, написанных недавно нет! Подскажите, как лучше поступть?

*сохранить код в документе и после создать их заново не берусь, так как их много, да и не хочу потерять данные из-за возможного человеческого фактора :)

 
День добрый! Помогите пожалуйста!!! программист, который писал советник пропал пришлось допиливать самому... и осталась одна не реализованная функция. Советник работает по пробоям уровней поддержки сопротивления + фибо уровни как второй сигнал, соответственно по фибо в ходим. В советнике работает функция, которая следит, чтобы на фибо входили только один раз, потом она перерисовывается с появлением новых вершин. в итоге получается есть сигнал, но он не сработал по каким то ограничения или мало пунктов для установки минимального положенного дц тейк профита. новой вершины не образовалось фибо не перерисовалась, цена пробегает разворачивается и на обратном ходе делает сделку в бай когда нужен уже селл.. Помогите пожалуйста, подскажите или киньте ссылочку на советник.... Требуется ограничение для входа сделку чтобы для бай цена пробивала уровень только снизу вверх, а для сел сверху вниз. Заранее Спасибо большое!!!!!
 

Ребят, помогите пожалуйста, есть функция, которая выдают лот последнего открытого ордера (который еще не закрыт). Можете ее модифицировать так, чтобы она возвращала лот предпоследнего (по временной шкале) открытого ордера (тоже еще не закрытого)? Только сделать это без использования массивов..

double FindLastLots (int otype)
{
  double oldopenprice,oldlots;
  int oldticket;
  
  ticket = 0;
  
  for (int i = OrdersTotal()-1; i>=0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) 
    {
      if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
      {
         oldticket = OrderTicket();
         if (oldticket>ticket)
         {
            oldlots = OrderLots();
            ticket = oldticket; 
         } 
      }  
    }
  }
  return (oldlots);
}
 
Trader7777:

Ребят, помогите пожалуйста, есть функция, которая выдают лот последнего открытого ордера (который еще не закрыт). Можете ее модифицировать так, чтобы она возвращала лот предпоследнего (по временной шкале) открытого ордера (тоже еще не закрытого)? Только сделать это без использования массивов..

У вас и тут массивов нету. Код не слишком-то надёжен. Вы ищете последний, находящейся в списке открытых ордеров. ИМХО, привязываться к этому не очень надёжно. Самый садёжный способ найти последний открытый - по времени его открытия (оно наименьшее из всех)
 
А можно ли как-то хитро вызвать линию тренда горячей клавишей?
Причина обращения: