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

 
biragr:

Спасибо за внимание, но я не понял суть вашего вопроса, можно в принципе и на вчера или завтра. Линию же можно на любую дату поставить, а когда график до нее дойдет тут то советник и сработает? Или я чего то не понимаю, если не сложно объясните.
Хорошо, вы поставили линию на дневках, а если на часовках? время открытия ордера будет определятся линией или строго задано? Линиями расписание на месяц нужно выставлять или достаточно эксперта по моей ссылке.
 
kolyango:

Помогите, пожалуйста! Нужно индикатор https://www.mql5.com/ru/code/10067 переделать в простой рабочий советник (как пример). Принцып действия:

На паре, на которую будет брошен советник, как только значение будет равным 0.9570 нужно открыть рыночный ордер на продажу 0.1 лота с мейджик номером(чтобы советники в разных окнах не путали ордера), Стоп-Лосс 100п., Тейк-Профит 200п.

Профессионалы, без Вас никуда!



Помогите начинающему!
 

kolyango:

На паре, на которую будет брошен советник, как только значение будет равным 0.9570 нужно открыть рыночный ордер на продажу 0.1 лота с мейджик номером(чтобы советники в разных окнах не путали ордера), Стоп-Лосс 100п., Тейк-Профит 200п.

Помогите начинающему!
Какой смысл писать одноразовый советник? Поставьте отложку и она сама сработает, так как Вы захотите. А советники настройте на мейджики, т.к. у отложки мейджик будет нулевым.
 
Reshetov:
Какой смысл писать одноразовый советник? Поставьте отложку и она сама сработает, так как Вы захотите. А советники настройте на мейджики, т.к. у отложки мейджик будет нулевым.

Мне нужно понять как такое сделать из индикатора...
 

подскажите, в чем ошибка? Проблема в том, что не всегда открывает ордер при пересечении линии, то есть иногда открывает, а иногда нет... хотя работает-то по одному принципу...

//+------------------------------------------------------------------+
//|                                                      Вайкофф.mq4 |
//|                                                   Sergey Kodolov |
//|                                              84232676421@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Sergey Kodolov"
#property link      "84232676421@mail.ru"



int total,sum,sumr;  
datetime TimeBarH, TimeBarL;

int Crossed (double nach, double kon, double cenaniz, double cenaverh)
{
   static int last_dir = 0;
   static int cur_dir = 0;
   
   if(nach<cenaverh && kon>cenaverh)cur_dir=1;
   if(nach>cenaniz && kon<cenaniz)cur_dir=2;
   
   if(cur_dir != last_dir)
   {
      last_dir=cur_dir;
      return(last_dir);
   }
   else
      return(0);
}


  
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }

  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
                     
bool NewBar = New(); //работаем только с нового бара

int volot = volotilnost(NewBar); //определяем волотильность
Hfr(NewBar,volot); //определяем фрактал верхний
Lfr(NewBar,volot); //определяем фрактал нижний

      double BuyLine, SellLine;
   
      BuyLine = ObjectGet("upline",OBJPROP_PRICE1);
      SellLine = ObjectGet("downline",OBJPROP_PRICE1);

int isCrossed = Crossed(Open[0],Bid,SellLine,BuyLine); //говорит о пересечении баром линии
OrderOpenFunction(isCrossed);



//----
   return(0);
  }
//+------------------------------------------------------------------+


bool New()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   //Print("lastbar = ",lastbar," curbar = ",curbar);
   if(lastbar!=curbar)
   {
      lastbar = curbar;
      //Print("ypa");
      return(true);
   }
   else
      return(false);
}

int volotilnost (bool NewBar)
{
   if(NewBar == true)
   {
      for(int i=0;i<=kolbar;i++)
      {
         sum = sum + MathAbs(High[i]-Low[i])*1000;
         //Print(sum);
      }
      sumr = sum/kolbar;
      Print(sumr);
      return(sumr);
   }   
}

void Hfr(bool NewBar, int volot)
{
   if(NewBar == true)
   {
      if(volot > kolbarv)
      {
         if(iHigh(Symbol(),TF,5)<iHigh(Symbol(),TF,4))
         {
            if(iHigh(Symbol(),TF,4)<iHigh(Symbol(),TF,3))
            {
               if(iHigh(Symbol(),TF,2)<iHigh(Symbol(),TF,3))
               {
                  if(iHigh(Symbol(),TF,1)<iHigh(Symbol(),TF,2))
                  {
                     ObjectDelete("upline");
                     ObjectCreate("upline",OBJ_HLINE,0,0,(iHigh(Symbol(),TF,3)));
                     TimeBarH = iTime(Symbol(),TF,3);
                  }
               }
            }
         }
      }   
   }   
}
         

void Lfr(bool NewBar, int volot)
{
   if(NewBar == true)
   {
      if(volot > kolbarv)
      {
         if(iLow(Symbol(),TF,5)>iLow(Symbol(),TF,4))
         {
            if(iLow(Symbol(),TF,4)>iLow(Symbol(),TF,3))
            {
               if(iLow(Symbol(),TF,2)>iLow(Symbol(),TF,3))
               {
                  if(iLow(Symbol(),TF,1)>iLow(Symbol(),TF,2))
                  {
                     ObjectDelete("downline");
                     ObjectCreate("downline",OBJ_HLINE,0,0,(iLow(Symbol(),TF,3)));
                     TimeBarL = iTime(Symbol(),TF,3);
                  }
               }
            }
         }
      }   
   }   
}

void OrderOpenFunction(int isCrossed)
{
   total = OrdersTotal();
   if(total<1)
   {
      if(isCrossed == 1)
      {
         OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"Покупка",Magic,0,Green);
      }
      if(isCrossed == 2)
      {
         OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"Продажа",Magic,0,Red);
      }
   }   
}
думаю, ошибка в isCrossed, но опнять не могу, где конкретно... часть кода я удалил (где запоминаю в массивы некоторые данные), чтоб не загромождать код, но если они понадобятся, то тоже с удовольствием их выложу
 
Добрый вечер! Ставлю отложеный ордер байлимит, стопа нет, пишет ошибка 130 !!!! Что это может быть? Или я опять что-то туплю? Подскажите пожалуста!
 

Всем здрасте.

Подскажите, как описать програмно факт пересечения главной и сигнальной линий стохастика?

 

Ну как-то примерно так, по моему разумению

F=iStochastic( Symbol(), 0, 5, 3, 3, MODE_SMA, 1,MODE_MAIN , 0) ;
   SIGNAL=iStochastic( Symbol(), 0, 5, 3, 3, MODE_SMA, 1,MODE_SIGNAL , 0) ;
   if (F==SIGNAL) {Урра!!!!; }
 

еще один вопросец, почему программа пишет, что объект существует, когда его на самом деле нет ( я просто смотрю на монитор и отчетливо объекта не вижу)

void DrawLines()
{
   ObjectCreate("line1",OBJ_TREND,0,ArrayH[1],iHigh(Symbol(),TF,iBarShift(Symbol(),TF,ArrayH[1])),ArrayH[2],iHigh(Symbol(),TF,iBarShift(Symbol(),TF,ArrayH[2])));
   Print(GetLastError());
}

в коде ArrayH[1] выдает количество секуд, iBarShift(Symbol(),TF,ArrayH[1]) - выдает номер бара, я все это посмотрел через Print(). А вот GetLastError выдает ошибку 4200 - что к чему не пойму =)

 
kolyango:

Мне нужно понять как такое сделать из индикатора...

Из индикатора никак
Причина обращения: