Подскажите пожалуйста . как правильно подсчитать объем последнего ордеров чтоб советник не ошибся в расчетах. вот я например выбираю последний ордер беру его лот ,добавляю число и открываю новый ордер. беда в том советник постоянно выполняет не верные расчеты и у меня следюший лот открываеться с неправильным объемым
вот мой ко подсчета и открывания лота:
Попробуйте последний ордер с помощью этой функции получить.
//+------------------------------------------------------------------+ // Получим последний по времени открытый ордер //+------------------------------------------------------------------+ int getLastTicket(){ datetime time=0; int t=-1; for(int i=OrdersTotal()-1; i>=0; i--){ if(OrderSelect(i, SELECT_BY_POS)){ // выбираем ордер if(OrderSymbol()==Symbol()){ // если наш символ if(OrderOpenTime()>time){ // время выбранного ордера больше чем известные другие time=OrderOpenTime(); // запоминаем большее время t=OrderTicket(); // и запоминаем тикет } } } } return(t); }
беда в том советник постоянно выполняет не верные расчеты и у меня следюший лот открываеться с неправильным объемым
Всё бредово
Попробуйте последний ордер с помощью этой функции получить.
спосибо за ответ . ну блин чо то не получило с . в тесторе такаеже ошибка
double Lots=0.0, LotsBuy=0.0, LotsSell=0.0; datetime t=0,tb=0,ts=0; for(int i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(t<OrderOpenTime()) {t=OrderOpenTime();Lots=OrderLots();} //Последний объём лота любой позиции if(OrderType()==OP_BUY) { if(tb<OrderOpenTime()) {tb=OrderOpenTime();LotsBuy=OrderLots();} //Последний объём лота buy } if(OrderType()==OP_SELL) { if(ts<OrderOpenTime()) {ts=OrderOpenTime();LotsSell=OrderLots();} //Последний объём лота sell } }
открытия с учётом предыдущего лота
int send=OrderSend(Symbol(),OP_BUY,LotBuy+0.01,Ask,10,0,0,"Buy",Magic,0,Blue); send=OrderSend(Symbol(),OP_SELL,LotSell+0.01,Bid,10,0,0,"Sell",Magic,0,Red);
это вам помогло
это вам помогло
Это вам должно помочь, мне то это зачем))
Это вам должно помочь, мне то это зачем))
сожелению тестор опять такой жу ошибку делает. ну серавно спосибо за сторание
сожелению тестор опять такой жу ошибку делает. ну серавно спосибо за сторание
Какую ошибку именно?
Подробней какой принцип открытий пошагово должен быть.
Какую ошибку именно?
Подробней какой принцип открытий пошагово должен быть.
мне нужно чтоб следюший объем лота бы больше переведюшего и во на оприделеным этапе ордера открываеться одим лотом
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите пожалуйста . как правильно подсчитать объем последнего ордеров чтоб советник не ошибся в расчетах. вот я например выбираю последний ордер беру его лот ,добавляю число и открываю новый ордер. беда в том советник постоянно выполняет не верные расчеты и у меня следюший лот открываеться с неправильным объемым
вот мой ко подсчета и открывания лота:
int TOTAL=OrdersTotal();//
int df=TOTAL-1;
if(OrderSelect(df,SELECT_BY_POS,MODE_TRADES)==true )
{
double lotsss = OrderLots();
lotsss=lotsss+0.01;//////////вот тут не правильно считаеться
int boyy = (int)(lotsss/lotstep); // округлили до целого числа шагов изменения лота
lotsss = (double)boyy * lotstep; // теперь имеем правильный объем, кратный шагу изменения лота
RefreshRates();
int boy=OrderSend(Symbol(), OP_BUY, lotsss, Ask, 3, 0,0);