//CloseOrder void CloseOrder() {double PR=0; while(!IsTradeAllowed()) Sleep(10); RefreshRates(); if(OrderType()==OP_BUY) PR=Bid; if(OrderType()==OP_SELL) PR=Ask; if(!OrderClose(OrderTicket(),OrderLots(),PR,Slippage,CLR_NONE)) Print("Order close error: ",GetLastError()); return;} //Close all Orders void CloseAllOrders() { for(int i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { CloseOrder(); } return;}
не проверяет символ не проверяет magicnumber....
тогда что произойдет, если использовать его в реальном времени с разными советниками на нем?
не проверяет символ не проверяет magicnumber....
тогда что произойдет, если использовать его в реальном времени с разными советниками на нем?
Вы имеете в виду запуск двух советников с одного счета?
Вы имеете в виду запуск двух советников с одного счета?
Привет!
Я новичок в mql 4 и я сделал простой кросс-советник 2 EMA, который я тестировал на демо-счете, но немного боюсь получить его на реальном счете.
Тестирование его на малых лотах в масштабе 1h займет слишком много времени, а тестировать его на минутных масштабах дорого, потому что минимальный лот у моего брокера составляет около 7 usd.
Поэтому я буду благодарен, если вы посмотрите на это и, возможно, укажете на некоторые очевидные ошибки, которые я мог допустить.
Приятно видеть, что кто-то проверяет возвращаемые значения торговых функций без подсказки... но вам нужно больше информации, если вы получаете ошибку, чтобы вы могли диагностировать, что вызвало проблему, вы не можете вернуться в прошлое в живой ситуации, чтобы проверить, каким был Spread или какой уровень Freeze был в то время....
if(tic < 0) Print("Open order error: ", GetLastError());
... это хорошо, но вам нужно больше, какие переменные вам нужно распечатать, чтобы вы могли определить причину любой ошибки, которую вы получите? Когда вы определите, что вам может понадобиться, добавьте их все в вызов Print(), убедившись, что вы используете правильное количество десятичных дробей (DoubeToStr(value, digits)) для любых двойных переменных, таких как Ask, Bid и т.д.
Приятно видеть, что кто-то проверяет возвращаемые значения торговых функций без подсказки...
Извините, но я не понял эту часть. Единственное, что я понял, это то, что мне нужно добавить как можно больше переменных к вызову Print(). Понял, спасибо.
deVries, тоже спасибо за совет, теперь я понял, что вы имели в виду.
Есть ли еще что-нибудь, что нужно исправить?
конечно, есть
// check if new bar opened if (LastBars == Bars) return(0); else LastBars = Bars;
предположим, что у вас уже есть максимум баров (есть предел).....
конечно, есть
предположим, что у вас уже есть максимум баров (есть предел).....
Хорошо, тогда как мне лучше поймать момент, когда открывается новая свеча?
проверить время последнего бара Time[0]
выполните поиск по NewBar и вы найдете несколько примеров
Спасибо, я нашел это https://www.mql5.com/en/code/10370
if(Cmd==OP_BUY) {PR=Ask; if(TakeProfit>0) TP=Ask + Ask*TakeProfit/100; if(StopLoss>0) SL=Ask - Ask*StopLoss/100; if(SL<0) SL = 0; if(TP<0) TP = 0; clr = Green;}
Я не думаю, что это правильно
как вы получаете 100 пунктов тейкпрофита и 150 пунктов стоплосса?
обновить смотрите " так стоп лосс и тейк профит не в пунктах, а в процентах от бида или аска."
все равно, как вы получаете действительную цену таким образом... если ваш символ имеет 5 цифр, результат будет часто на 2 цифры больше.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет!
Я новичок в mql 4 и я сделал простой 2 EMA кросс-советник, который я тестировал на демо-счете, но немного боюсь получить его на реальном.
Тестирование его на малых лотах в масштабе 1h займет слишком много времени, а тестировать его на минутных масштабах дорого, потому что минимальный лот у моего брокера составляет около 7 usd.
Поэтому я буду благодарен, если вы посмотрите на него и, возможно, укажете на некоторые очевидные ошибки, которые я мог допустить.
Этот советник предназначен для торговли на рынке Bitcoin/USD, который чрезвычайно волатилен (цена может колебаться на + - 30% в день), поэтому стоп-лосс и тейк-профит выставляются не в пунктах, а в процентах от бида или аск.
Переменные и прочее:
Эта функция определяет размер лота, в соответствии с % от депо, который разрешено использовать на ордер (int Risk).
Это функция, которая открывает новый ордер, Cmd - buy или sell.
Здесь я закрываю 1 ордер или закрываю все ордера:
Эта функция используется для расчета разницы быстрой и медленной ЕМА (быстрая ЕМА - медленная ЕМА):
А вот и основная часть:
Я собираюсь добавить трейлинг-стоп, и рассмотреть возможность сравнения EmaDiff не с нулем, а с каким-то небольшим значением, чтобы не получить обрезание, когда медленная и быстрая EMA очень близко друг к другу и пересекаются на каждом баре.