Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Кажется получилось. Все ненужное мне удалил.
Просто надо было подождать, когда появится следующий бар(свеча), на котором срабатывает весь код советника.
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) в меню графика. На следующем баре(свече) они снова появятся если прописаны в коде.2. Я ставлю параметр Equity_per_lot - равный изначальному количеству депозита, например 3000. Надо ли его из менять при увеличении баланса т.е ставить 4000, затем 5000 ?
3. Где найти эту функцию "На М30 - редко будет срабатывать одна функция, которая закрывает все плюсовые сделки на пятницу в 21 час по серверному времени, выше таймфрейм - эта функция не работает." в коде ?4.Подскажите, где в коде условия открытия ордеров.
1.Подскажите как это строка ,влияет на лотность, почему именно 24
2. Я ставлю параметр Equity_per_lot - равный изначальному количеству депозита, например 3000. Надо ли его из менять при увеличении баланса т.е ставить 4000, затем 5000 ?
3. Где найти эту функцию "На М30 - редко будет срабатывать одна функция, которая закрывает все плюсовые сделки на пятницу в 21 час по серверному времени, выше таймфрейм - эта функция не работает." в коде ?4.Подскажите, где в коде условия открытия ордеров.
1.
В 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;
}
}
...
Что-то не могу понять. Выставил параметры Interval-37, Profit-95. Открылись позиции -интервал 114 и профит 114. И далее при торговле не наблюдаю выставленных 37/95.
Старый код:
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);
}
}
}
}
}
}
}
...
А можно ли сделать еще версию, чтобы советник не подхватывал чужие ордера ?