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

 
valeryk:

bool NewBar()
{static datetime newbar;
 bool res=false;
 if(newbar==0)newbar=Time[0];
 if(newbar!=Time[0]){res=true;newbar=Time[0];}
 return(res);
}

Наличие нового бара . 

 

Я так понял что значек ставиться по цене открытия бара. А мне нужно что бы по цене закрытия.
И ваш код я так и не смог вставить, потому что не програмист. Особенно ругается вот на это bool NewBar() 
 
supernyb:
Я так понял что значек ставиться по цене открытия бара. А мне нужно что бы по цене закрытия.
И ваш код я так и не смог вставить, потому что не програмист. Особенно ругается вот на это bool NewBar() 
Обратите внимание на время котировки, и время устаноки значка, 15 минут, как думаете может за это время изменится Close[0] 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(NevBar()) 
     {
     //в этом блоке размещайте ваш код
     }    
//----
   return(0);
  }
//-----------------------------------------------------------------------------+
// Функция контроля нового бара                                                |
//-----------------------------------------------------------------------------+
bool NevBar(){
   static int PrevTime=0;
   if (PrevTime==Time[0]) return(false);
   PrevTime=Time[0];
   return(true);} 
 

Прошу еще разок. Здравствуйте, взял за основу скрипт из учебника С.Ковалева. Хочу, сделать эксперта, чтобы открыл сделку, поставил стоплос, тейк профит и после этого ждал окончания сделки(т.е. выполнения стопа или профита), а только после этого снова открыл сделку. Попробовал с помоющью цикла и прерывания цикла. Подскажите как можно сделать. ДУмал может проще  сразу не ставить стоплос и тейкпрофит, а чтобы цена закрывалась когда подойдет к определнному уровню, но пока так не хочу, т.к. боюсь проскальзывания, а мне каждый пунк важен. В итге получилось, что открыв одну сделку или бывает сразу пару(тоже не правльно что то?), после закрытия сделки, новых сделок не открывает. Или подскажите, как прописать, чтобы программа ждала выполнения стоп-лоса или текйпрофита, а ТОЛЬоко после шла дальше?

//+------------------------------------------------------------------+
int start()       //---- функеция старт           
  {
  double     //---- объявляю переменные
  x,
  y;
  //+------------------------------------------------------------------+
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point);    //---- рыночный ордер на покупку и выставление стопа и профита на 15 пунктов от цены открытия
 //+------------------------------------------------------------------+ 
   while(x!=Ask-15*Point||y!=Ask+15*Point)                          //---- условия при котором хочу чтобы сделки не выполнялись пока предыдущая сделка не закрыта, т.е. можно 
   {                                                                //----- держать открытой ТОЛЬКО одну сделку
   continue;                                                         //---- прерывание условия и переход к следующему шагу
   }
  //+------------------------------------------------------------------+
   return;                                                          //---- функция return
    }
//+------------------------------------------------------------------+

 

Если Вам все равно, стоп или тейк, может просто проверять есть открытые ордера или нет?

if(OrdersTotal()<1) 

 

 Подскажите, что можно сделать в такой ситуации. Есть индикатор. Чтобы набросить его на график приходится сначала ставить вертикальную линию, потом вызывать свойства, копировать число, потом уже вводить это число в индикатор.

Хотелось бы чтобы индюк ставился туда куда кликаешь мышью.

Или, в крайнем случае, чтобы можно было передвинуть мышью на графике.


Файлы:
indicator.mq4  3 kb
 
Begemot7:

Прошу еще разок. Здравствуйте, взял за основу скрипт из учебника С.Ковалева. Хочу, сделать эксперта, чтобы открыл сделку, поставил стоплос, тейк профит и после этого ждал окончания сделки(т.е. выполнения стопа или профита), а только после этого снова открыл сделку. Попробовал с помоющью цикла и прерывания цикла. Подскажите как можно сделать. ДУмал может проще  сразу не ставить стоплос и тейкпрофит, а чтобы цена закрывалась когда подойдет к определнному уровню, но пока так не хочу, т.к. боюсь проскальзывания, а мне каждый пунк важен. В итге получилось, что открыв одну сделку или бывает сразу пару(тоже не правльно что то?), после закрытия сделки, новых сделок не открывает. Или подскажите, как прописать, чтобы программа ждала выполнения стоп-лоса или текйпрофита, а ТОЛЬоко после шла дальше?

int ticket=-1;
int start()       //---- функеция старт            
  {
  double     //---- объявляю переменные 
  x,
  y;
  bool sel;
  //+------------------------------------------------------------------+
  sel=false;
  if(ticket>=0)
   {
    sel=OrderSelect(ticket,SELECT_BY_TICKET);if(!sel) ticket=-1;
   }
  if(ticket<0 || (sel && ticket>=0 && OrderCloseTime()>0)) ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point);
   return;                                                          //---- функция return 
    }

А лучше вот так ( на случай перезапуска советника):

int ticket=-1;
int init()
 {
  if(GlobalVariableCheck("TICKET")) ticket=GlobalVariableGet("TICKET");
  else ticket=-1;
 }
int start()          
 {
  bool sel;
  sel=false;
  if(ticket>0)
   {
    sel=OrderSelect(ticket,SELECT_BY_TICKET);if(!sel) ticket=-1;
   }
  if(ticket<=0 || (sel && ticket>0 && OrderCloseTime()>0))
   {
    ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point);
    if(ticket>0) GlobalVariableSet("TICKET",ticket);
   }
   return; 
  }
 
r772ra:
Обратите внимание на время котировки, и время устаноки значка, 15 минут, как думаете может за это время изменится Close[0] 


Спасибо это то что нужно! Я сделал как вы сказали и всё получилось!  Еще в старпрайс занес Close[1] вместо Close[0]. и получилось что значек отрисовывается по ценам закрытия. При этом не ждёт один бар как я думал, что бы отрисоваться. 
 
001:

Хотелось бы чтобы индюк ставился туда куда кликаешь мышью.

Получить координаты точки, на которую был брошен индикатор, можно при помощи функций:

WindowXOnDropped() 

WindowYOnDropped() 

Цену и время: 

WindowPriceOnDropped()

WindowTimeOnDropped() 

 
valeryk:

bool NewBar()
{static datetime newbar;
 bool res=false;
 if(newbar==0)newbar=Time[0];
 if(newbar!=Time[0]){res=true;newbar=Time[0];}
 return(res);
}

Наличие нового бара . 

 


Вот что сказал гуру по поводу твоего кода!

В твоем варианте не инициализируется нулем static datetime newbar, а это неправильно.

 
Sepulca:

А лучше вот так ( на случай перезапуска советника):

ИМХО - лучше найти поиском свой ордерочек и посмотреть - в рынкете он иль закрылся и как закрылся, по тейку, по стопу или вручную. Отсюда дальше и плясать в разные стороны.

Тогда уж точно всё будет точно. А глобальные переменные можно и потерять...

Причина обращения: