[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 48

 
orlovkem >>:

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

Сделайте проверку на текущем баре и на предыдущем, тогда сигнал будет один,

только при пересечении.

Тоисть если на текущем баре индикатор стал выше а на предыдущем был ниже

значится бай, и это будет вам только один бай при сигнале.

 
orlovkem >>:

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

Вы уверены, что советник покупает (продает) ? Пробовали? Судя по коду, ни одной сделки вообще быть не должно, а не то, что "покупает до тех пор пока на депозите имеются деньги". Или код не Вы писали ?

 
xeon >>:

Самый простой способ контролировать количество одновременно открытых ордеров

немного не то - ордера не открываются параллельно, просто после закрытия ордера открывается еще один в ту же самую сторону (в этот момент трэнд уже исчерпал свои силы и я в убытке)

((

 
VladislavVG >>:

Вы уверены, что советник покупает (продает) ? Пробовали? Судя по коду, ни одной сделки вообще быть не должно, а не то, что "покупает до тех пор пока на депозите имеются деньги". Или код не Вы писали ?


Код писал я, и покупает и продает. Пробовал на тестере стратегий.

 
satop >>:

Сделайте проверку на текущем баре и на предыдущем, тогда сигнал будет один,

только при пересечении.

Тоисть если на текущем баре индикатор стал выше а на предыдущем был ниже

значится бай, и это будет вам только один бай при сигнале.

Спасибо за совет, вроде бы понял что от меня требуется. Буду пробовать. Еще раз спасибо.

 
xruss >>:

немного не то - ордера не открываются параллельно, просто после закрытия ордера открывается еще один в ту же самую сторону (в этот момент трэнд уже исчерпал свои силы и я в убытке)

((

А вы выложите целиком фрагмент, который отвечает у вас за выбор последнего ордера и условие его проверки, - разберёмся. Так сложно что-то подсказать. Как вариант, можете после поступления сигнала одновременно с открытием позиции устанавливать флаг на запрет следующих сделок этого типа, и в блоке открытия позиций делать проверку на его наличие. Если флажок поднят - сделку пропускаем. При поступлении противоположного сигнала флаг снимается, но при первом успешном открытии позиции устанавливается новый - уже на запрет открытия сделок того типа, по которому поступил новый сигнал. И т.д.

 
orlovkem >>:

Код писал я, и покупает и продает. Пробовал на тестере стратегий.

Значит это не тот код, что Вы выложили на предыдущей странице. Тот код ничего не покупает и ничего не продает. Можете его скопировать, если не верите, и погонять в тестере.

Для меня, например, очевидно, что не существует пары чисел для которых одновременно выполнялись бы условия a>=b и a<b. Судя по Вашему эксперту для Вас это не только не очевидно, но для Вас очевидно, что такие числа существуют. Конечно же я могу ошибаться - тогда, если не сложно, приведите пример такой пары чисел. Только в этом случае ордер на покупку по Вашему алгоритму будет выставлен. Аналогично для продажи.

Успехов.

 
Everlost писал(а) >>

А вы выложите целиком фрагмент, который отвечает у вас за выбор последнего ордера и условие его проверки, - разберёмся. Так сложно что-то подсказать. Как вариант, можете после поступления сигнала одновременно с открытием позиции устанавливать флаг на запрет следующих сделок этого типа, и в блоке открытия позиций делать проверку на его наличие. Если флажок поднят - сделку пропускаем. При поступлении противоположного сигнала флаг снимается, но при первом успешном открытии позиции устанавливается новый - уже на запрет открытия сделок того типа, по которому поступил новый сигнал. И т.д.

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

Вот мой код:

//Учет ордеров истории
int ORDtype=-1;
double ORDprofit=0.001;
for(i=OrdersHistoryTotal();i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))
 {
  if(OrderSymbol()==Symbol())
  {
   if(OrderCloseTime()!=0)
   {
     ORDtype=OrderType();
     ORDprofit=OrderProfit();
   }
  }
 }
}    

....

if ((ORDtype==OP_SELL)||(ORDtype==-1)&&((ORDprofit<=0)||(ORDprofit==0.001))...
{
...
}
if ((ORDtype==OP_BUY)||(ORDtype==-1)&&((ORDprofit<=0)||(ORDprofit==0.001))...
{
...
}
 

Хотел сделать так чтоб эксперт не работал с 6 до 20 по брокеру, проверяя преред тем как отрубитца есть сделки или нет, если нет соответственно ждя пока они закроются, так то все работает только охото бы было еще алерт всобачить типа что торговля закончена когда эксперт перестает торговать, и если его делать вот так

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
  {
  if (OrdersTotal() == 0)
  Alert("Торговля закончена");
  return(0);
  }

то он на каждом тике начинает пищать естественно. Можно было бы сделать на однократное срабатывание при помощи констант, но тогда эта штука будет отрубать не тока алерт но и сам цикл вообще. Подскажите братья каким направлением пойти а, чет не соображу никак...

 
Dimoncheg >>:

Хотел сделать так чтоб эксперт не работал с 6 до 20 по брокеру, проверяя преред тем как отрубитца есть сделки или нет, если нет соответственно ждя пока они закроются, так то все работает только охото бы было еще алерт всобачить типа что торговля закончена когда эксперт перестает торговать, и если его делать вот так

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
  {
  if (OrdersTotal() == 0)
  Alert("Торговля закончена");
  return(0);
  }

то он на каждом тике начинает пищать естественно. Можно было бы сделать на однократное срабатывание при помощи констант, но тогда эта штука будет отрубать не тока алерт но и сам цикл вообще. Подскажите братья каким направлением пойти а, чет не соображу никак...

Один из вариантов :

if(TimeHour(TimeCurrent()) > 6 && TimeHour(TimeCurrent()) < 20 && Worktime == true)
   {
   if (OrdersTotal() == 0)
   if(NeedAlert){ Alert("Торговля закончена"); NeedAlert=false;}
   return(0);
   }
Переменную bool NeedAlert устанавливать в true при начале торговли.
Причина обращения: