Советники: Martin - страница 10

 
Все сражаюсь с таблицей. Таблицу удалил. Удалились и уровни бай-сел. Пытался восстановить, но сейчас на этих уровнях стоят профиты, причем кр. и синего цвета. Может Вы сбросите мне советник с удаленной таблицей (или хотя бы нижней частью). Может еще кому-то пригодиться. Заранее благодарен.
 
Кажется получилось. Все ненужное мне удалил.
 
15750:
Кажется получилось. Все ненужное мне удалил.

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

...
int start() {
   if (timeprev == Time[0]) return (0);
   timeprev = Time[0];
...

https://www.mql5.com/ru/forum/111497/page701#comment_3073805

https://www.mql5.com/ru/forum/110340

Оставшиеся объекты можно удалить в списке объектов(Ctrl+B) в меню графика. На следующем баре(свече) они снова появятся если прописаны в коде.
[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда.
[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда.
  • www.mql5.com
Здрасти, вот зарегился и решил сразу создать тему. Будет думаю правильно, так как у самого куча вопросов...
 
1.Подскажите как это строка ,влияет на лотность, почему именно 24
l = MathFloor(AccountEquity() / Equity_per_lot) * MarketInfo(Symbol(), 24);

2. Я ставлю параметр Equity_per_lot - равный изначальному количеству депозита, например 3000. Надо ли его из менять при увеличении баланса т.е ставить 4000, затем 5000 ?

3. Где  найти эту  функцию "На М30 - редко будет срабатывать одна функция, которая закрывает все плюсовые сделки на пятницу в 21 час по серверному времени, выше таймфрейм - эта функция не работает." в коде ?


4.Подскажите, где в коде условия открытия ордеров.

 
NightTrader:
1.Подскажите как это строка ,влияет на лотность, почему именно 24
l = MathFloor(AccountEquity() / Equity_per_lot) * MarketInfo(Symbol(), 24);

2. Я ставлю параметр Equity_per_lot - равный изначальному количеству депозита, например 3000. Надо ли его из менять при увеличении баланса т.е ставить 4000, затем 5000 ?

3. Где  найти эту  функцию "На М30 - редко будет срабатывать одна функция, которая закрывает все плюсовые сделки на пятницу в 21 час по серверному времени, выше таймфрейм - эта функция не работает." в коде ?


4.Подскажите, где в коде условия открытия ордеров.

1. mqlh

 В Equity_per_lot ставится значение средств(рис. 2 в шапке), через которое начальный лот будет увеличиваться на шаг изменения размера лота. AccountEquity() - сумма собственных средств текущего счета. MathFloor - ближайшее снизу целое числовое значение(убирает дробную часть после точки).

2. Менять это значение не нужно. Если средств стало в 2(и более) раза больше значения Equity_per_lot, то начальный лот увеличится также https://www.mql5.com/ru/forum/38067#comment_1218418

3. 

...
int start() {
   if (timeprev == Time[0]) return (0); // срабатывание остального кода на следующем баре(свече) (один раз на первой цене каждого бара по ТФ)
   timeprev = Time[0];
...
   if (DayOfWeek() == 5 && Hour() == 21) {
      for (cnt = 0; cnt < OrdersTotal(); cnt++) {
         ordprof = 0;
         OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         ordprof = OrderProfit() + OrderSwap() + OrderCommission();
         if (ordprof > 0) {
            if (OrderSymbol() == Symbol()) {
               if (OrderType() == OP_BUY) {
                  RefreshRates();
                  OrderClose(OrderTicket(), OrderLots(), Bid, In, White);
               }
               if (OrderType() == OP_SELL) {
                  RefreshRates();
                  OrderClose(OrderTicket(), OrderLots(), Ask, In, White);
               }
            }
         }
      }
   }
...

 4. 

...
   if (CountBuyTrades() > 0) b = FindLastBuyPrice() - In * Point;
   if (AccountFreeMarginCheck(Symbol(), OP_BUY, bl) >= 0) {
      if (CountBuyTrades() == 0) b = Ask;
      if (b >= Ask) {
         RefreshRates();
         OrderSend(Symbol(), OP_BUY, bl, Ask, In, 0, 0, "Martin ("+In+")", In, 0, Blue);
         b = FindLastBuyPrice() - In * Point;
      }
   }
   if (CountSellTrades() > 0) s = FindLastSellPrice() + In * Point;
   if (AccountFreeMarginCheck(Symbol(), OP_SELL, sl) >= 0) {
      if (CountSellTrades() == 0) s = Bid;
      if (s <= Bid) {
         RefreshRates();
         OrderSend(Symbol(), OP_SELL, sl, Bid, In, 0, 0, "Martin ("+In+")", In, 0, Red);
         s = FindLastSellPrice() + In * Point;
      }
   }
...
Советники: Martin
Советники: Martin
  • www.mql5.com
Форум трейдеров MQL5.community
 

Что-то не могу понять. Выставил параметры Interval-37, Profit-95. Открылись позиции -интервал 114 и профит 114. И далее при торговле не наблюдаю выставленных 37/95.

 
Советник обновлен (новый советник прикреплен внизу комментария) 

Исправлено: При закрытии советником ордеров с другим MagicNumber(Interval), также вместе закрывает все прибыльные ордера на том же торговом инструменте(паре), где закрывает с другим MagicNumber.

Старый код:

...
      if (OrderMagicNumber() != In && ordprof > 0) {
         if (OrderSymbol() == Symbol()) {
            if (OrderType() == OP_BUY) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, In, White);
            }
            if (OrderType() == OP_SELL) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, In, White);
            }
         }
      }
...

Новый код:

...
      if (OrderMagicNumber() != In && ordprof > 0) {
         if (OrderSymbol() == Symbol()) {
            if (OrderType() == OP_BUY) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, In, White);
               for (int cnt1 = 0; cnt1 < OrdersTotal(); cnt1++) {
                  ord = 0;
                  OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);
                  ord = OrderProfit() + OrderSwap() + OrderCommission();
                  if (ord > 0) {
                     if (OrderSymbol() == Symbol()) {
                        if (OrderType() == OP_BUY) {
                           RefreshRates();
                           OrderClose(OrderTicket(), OrderLots(), Bid, In, White);
                        }
                     }
                  }
               }
            }
            if (OrderType() == OP_SELL) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, In, White);
               for (cnt1 = 0; cnt1 < OrdersTotal(); cnt1++) {
                  ord = 0;
                  OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);
                  ord = OrderProfit() + OrderSwap() + OrderCommission();
                  if (ord > 0) {
                     if (OrderSymbol() == Symbol()) {
                        if (OrderType() == OP_SELL) {
                           RefreshRates();
                           OrderClose(OrderTicket(), OrderLots(), Ask, In, White);
                        }
                     }
                  }
               }
            }
         }
      }
...


 

Файлы:
martin.mq4  18 kb
martin_test.mq4  18 kb
 
А можно ли сделать еще версию, чтобы советник не подхватывал чужие ордера ?
 
15750:
А можно ли сделать еще версию, чтобы советник не подхватывал чужие ордера ?
Можно https://www.mql5.com/ru/job/new
 
Здравствуйте. Не нашел ответа: на основании чего открываются ордера!?
Спасибо.
Причина обращения: