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

 
Извините, но я работал на Rumuse, а теперь осваиваю МТ4 . Пока здесь я " Чайник " . 11 .09 . 2012 г . котировки остановились и не могу запустить . Подскажите, пожайлуста, в чём дело ? Спасибо !
 
vitor:
Извините, но я работал на Rumuse, а теперь осваиваю МТ4 . Пока здесь я " Чайник " . 11 .09 . 2012 г . котировки остановились и не могу запустить . Подскажите, пожайлуста, в чём дело ? Спасибо !
Откройте новый demo счёт, если не поможет, то переустановите терминал.
 
Здравствуйте, скажите как отключить советника если ордер открытый им - же, закрыт трейдером или по SL или TP.
 
eropov:
Здравствуйте, скажите как отключить советника если ордер открытый им - же, закрыт трейдером или по SL или TP.
Понимаете, советники на то и советники, что не нужно им советовать... а если ордер открыт, то не переживайте, дядя Коля прийдет и всё закроет.
 

BeerGod

Понимаете, советники на то и советники, что не нужно им советовать... а если ордер открыт, то не переживайте, дядя Коля прийдет и всё закроет.

Значит остановить работу советника не возможно?

 
eropov:

BeerGod

Значит остановить работу советника не возможно?

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


 

BeerGod

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

Я пишу сова который открывает ордер со SL и TP.

Нужно условие, если ордер закрылся по TP или закрыт трейдером нужно остановить выполнение работы советника. Как это реализовать программно?

 

Помогите решить задачу, почему если в цикле всего 2 прохода i сначала равна 0, а затем сразу равна 4?

for(i=0,g=0,c=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
    if(OrderMagicNumber() == MasterMagicNumber)
      {
      starttime = OrderOpenTime();
      ArrayResize(prices,ArraySize(prices)+TradesCount);
      if(OrderSelect(i+1,SELECT_BY_POS,MODE_TRADES))
      if(OrderMagicNumber() == MasterMagicNumber) endtime = OrderOpenTime();
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      times[i] = starttime;
      times[i+1] = endtime;
      tickets[i] = OrderTicket();
      symbol = OrderSymbol();
      Alert(i);
      while(g < TradesCount*(i+1))
        {
        if(OrderType() == OP_BUY)
          {
          if(g == TradesCount*i)
            {
            prices[g] = OrderOpenPrice()-LowOpen*Point;
            }else
            {
            prices[g] = prices[g-1]-step*Point;
            }
          }
        if(OrderType() == OP_SELL)
          {
          if(g == TradesCount*i)
            {
            prices[g] = OrderOpenPrice()+HighOpen*Point;
            }else
            {
            prices[g] = prices[g-1]+step*Point;
            }
          }
        g++;
        }
      }
    }

Из этого скрипта алерт выводит 0, 4.

 
Помогите решить задачу, почему если в цикле всего 2 прохода i сначала равна 0, а затем сразу равна 4?

Насколько я понял код

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;

делает break, то есть мы переходим в начало цикла и увеличиваем i по условию цикла

наверно так

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) {i--; break; }

 
Добрый день, подскажите пожалуйста, есть ли простой советник на основе двух средних? Без всяких фильтров, трейлингов, стопов и всего такого. То есть, если короткая пересекла длинную снизу вверх, открыввется ордер на покупку и закрывается ордер на продажу и наоборот, когда короткая пересекла длинную сверху вниз, открыввется ордер на продажу и закрывается ордер на покупку.
Причина обращения: