Господа знатоки, ответьте пожалуйста!!!
Замените
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
на
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);И ещё перед этим циклом я бы обновил содержимое переменной cnt.
ТОгда почему этот эксперт "EURUSD" работает. отличие от первого только в том что там другой индикатор. все остальное также!!!!!????
extern double Lots = 0.1; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double P_up0,P_down0,P_up1,P_down1; double Macd_m,Macd_s,Pivot1,Macd_m2,Macd_s2,ao3,ao2,ao1,st_m1,st_s1; int i, cnt, ticket, total; bool flag=true; if(Bars<100) { Print("bars less than 100"); return(0); } // Проверяем стоит ли открываться cnt=OrdersHistoryTotal()-1; for(i=cnt;i>=0;i--) { if(!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY )) continue; if(OrderOpenTime()>=Time[0]) { // Time[0] - если позиция открывается на нулевом баре текущего символа flag=false; break; } } cnt=OrdersTotal()-1; for(i=cnt;i>=0;i--) { if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if(OrderOpenTime()>=Time[0]) { // Time[0] - если позиция открывается на нулевом баре текущего символа flag=false; break; } } P_up0=iCustom(0,0,"Ценовой канал",5,0,0); P_down0=iCustom(0,0,"Ценовой канал",5,1,0); P_up1=iCustom(0,0,"Ценовой канал",5,0,1); P_down1=iCustom(0,0,"Ценовой канал",5,1,1); Macd_m=iMACD(0,0,5,34,5,PRICE_CLOSE,MODE_MAIN,1); Macd_s=iMACD(0,0,5,34,5,PRICE_CLOSE,MODE_SIGNAL,1); Macd_m2=iMACD(0,0,5,34,5,PRICE_CLOSE,MODE_MAIN,2); Macd_s2=iMACD(0,0,5,34,5,PRICE_CLOSE,MODE_SIGNAL,2); ao1=iAO(0,0,1); ao2=iAO(0,0,2); ao3=iAO(0,0,3); st_m1=iStochastic(0,0,10,3,3,MODE_SMA,0,MODE_MAIN,1); st_s1=iStochastic(0,0,10,3,3,MODE_SMA,0,MODE_SIGNAL,1); Pivot1=iCustom(0,0,"Пивот по сессиям",30,2,12,9,6,"00:15","06:15", "13:00",0,250,0,true,White,0,1); //задали все данные // Проверка свободной маржи if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } total=OrdersTotal(); // Условие открытие позиции BUY if(Macd_m2>Macd_s2&&Macd_m>Macd_s&&Macd_m2<0&&ao2<0&&st_m1>st_s1&&st_m1<40) { if((total>0) || (!flag)) return(0); ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",0,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Alert("Покупка: ",OrderOpenPrice()); } else Alert("ошибка:по цене ",OrderOpenPrice()); return(0); } // Условие открытие позиции SELL if(Macd_m2>Macd_s2&&Macd_m<Macd_s&&Macd_m2>0&&ao2>0&&st_m1<st_s1&&st_m1>60) { if((total>0) || (!flag)) return(0); ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",0,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Alert("Покупка: ",OrderOpenPrice()); } else Alert("ошибка:по цене ",OrderOpenPrice()); return(0); } for(i=cnt;i>=0;i--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) {// длинная позиция открыта // условие закрытие длинной позиции if(P_down1>P_down0) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); return(0); } } else { // условие закрытия короткой позиции if(P_up1<P_up0) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); return(0); } } } } return(0); }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, знатоки.
Все бьюсь почему мой эксперт не закрывает позиции? Открывает одну по первому сигналу и все!