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

 
Ekburg:

Вот здорова... я конечно рад, что проблема стала у Вас решаться, но моё сообщение Вы почему то не заметили, где я сказал то же самое, чуть другими словами, и сразу сказал на недочёты, кроме закрытия файла, не сразу увидел где это у Вас происходит:)

Про книгу не сказал куда отправить?
 
Vinin:

Про книгу не сказал куда отправить?


точно! я и забыл из-за праздников!:) спасибо что напомнил!

 
Vinin:

Про книгу не сказал куда отправить?

написал в ЛС почту
 
Скажите, как узнать, какой минимальный TP можно поставить в данный момент времени?
 
Trader7777:
Скажите, как узнать, какой минимальный TP можно поставить в данный момент времени?

int STOPLEVEL=MarketInfo(NULL,MODE_STOPLEVEL);
 
спасибо) знал, что Маркет инфо, не знал, какой параметр задать в функцию.
 
Trader7777:
спасибо) знал, что Маркет инфо, не знал, какой параметр задать в функцию.
В редакторе наводите курсор на название функции и нажимаете F1. Открывается справочная информация по данной функции.
 
Здравствуйте. Не удалось найти на форуме, поэтому пишу сюда. Пытаюсь на основе учебного советника получить новый. Советник, который приводится в качестве примера торгует по пересечению МА. Две штуки с разными периодами. Медленный МА и быстрый МА. Когда быстрый пересекает снизу вверх медленный, то покупка, если наоборот сверху вниз, то продажа. Хочу прикрутить к стандартным условиям торговли чтобы дополнительно отслеживался результат сделки. Если позиция закрылась по стоп-лоссу с убытком или 0, то советник тут же открывал бы противоположную позицию, а не ждал следующего пересечения. Другими словами открыли позицию на покупку, получили убыток по стоп-лоссу (ну не пошел рынок куда нам хотелось) и тут же на уровне стоп-лосса открыли на продажу. Знаю, что советник такой все равно сливной будет, но тут хочется понять какой же код должен быть написан. Надеюсь на помощь профи. За ранее спасибо.
 
petya33r:
Здравствуйте. Не удалось найти на форуме, поэтому пишу сюда. Пытаюсь на основе учебного советника получить новый. Советник, который приводится в качестве примера торгует по пересечению МА. Две штуки с разными периодами. Медленный МА и быстрый МА. Когда быстрый пересекает снизу вверх медленный, то покупка, если наоборот сверху вниз, то продажа. Хочу прикрутить к стандартным условиям торговли чтобы дополнительно отслеживался результат сделки. Если позиция закрылась по стоп-лоссу с убытком или 0, то советник тут же открывал бы противоположную позицию, а не ждал следующего пересечения. Другими словами открыли позицию на покупку, получили убыток по стоп-лоссу (ну не пошел рынок куда нам хотелось) и тут же на уровне стоп-лосса открыли на продажу. Знаю, что советник такой все равно сливной будет, но тут хочется понять какой же код должен быть написан. Надеюсь на помощь профи. За ранее спасибо.

На уровне стоплосса отложенный ордер в обратную сторону поставить.
 
evillive:

На уровне стоплосса отложенный ордер в обратную сторону поставить.


Хотелось бы без отложенного. На просторах интернета удалось нарыть вот такой код советника. Он открывает противоположную позицию при получении убытка, НО скрестить его с условиями торговли по двум МА у меня не получается.

#property copyright "Copyright © 2013, MoneyInNetwork.ru"
#property link      "http://moneyinnetwork.ru"
extern string s1 = "Объем для первой сделки серии, лот";
extern double Lot = 0.1;
extern string s2 = "Уровень стоп-лосса, пипсов";
extern double stoploss = 100;
extern string s3 = "Уровень тейк-профита, пипсов";
extern double takeprofit = 500;
extern string s4 = "Уникальная метка для ордеров, открываемых только этим советником";
extern double MagicNumber = 600;
extern string s5 = "Максимальное отклонение от запрошенной цены, пипсов";
extern double slip = 15;
 
int init()
{
   return(0);
}
 
int deinit()
{
   return(0);
}
 
int start()
{ 
  //инициализация параметров
  int ticket = 0;
  int old_order_type = OP_SELL;
 
  //ищем среди всех открытых ордеров открытый советником ордер 
  RefreshRates();
  for ( int trade = OrdersTotal() - 1; trade >= 0; trade-- ) 
  {
      //проверяем есть ли среди всех открытых ордеров именно тот ордер, который открыт данным советником.
      if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && (OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
      {
          //если есть незакрытый ордер - выходим
          return (0);        
      }
  }
  //нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер 
  for ( trade = OrdersHistoryTotal() - 1; trade >= 0; trade-- ) 
  {
     if ( OrderSelect(trade, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
     {
         old_order_type = OrderType();
         if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         {
                break; //прекращаем поиск
         }
     }
  }
  //если раньше покупали, то теперь продаем
  if ( old_order_type == OP_BUY )
  {
      ticket = OrderSend(Symbol(), OP_SELL, Lot,  NormalizeDouble(Bid, Digits), slip, NormalizeDouble(Ask+stoploss*Point, Digits), NormalizeDouble(Ask-takeprofit*Point, Digits), "Martingale-Sell", MagicNumber, 0, Red);
      Sleep (2000); //задержка в 2 секунды для обработки запроса торговым сервером брокера
      return (0);  
  }
  //если раньше продавали, то теперь покупаем
  if ( old_order_type == OP_SELL )
  {
      ticket = OrderSend(Symbol(), OP_BUY, Lot, NormalizeDouble(Ask, Digits), slip, NormalizeDouble(Bid-stoploss*Point, Digits), NormalizeDouble(Bid+takeprofit*Point, Digits), "Martingale-Buy", MagicNumber, 0, Green);
      Sleep (2000); //задержка в 2 секунды для обработки запроса торговым сервером брокера
      return (0);  
  }               
}  
Причина обращения: