Подскажите пожалуйста, как писать правильно (Новичку)
Обьясните пожалуйста, почему у меня ордера не открываются, с учетом 1 позиции, и не закрываются...
ERR_TRADE_TOO_MANY_ORDERS | 148 | Количество открытых и отложенных ордеров достигло предела, установленного брокером. |
ERR_REQUOTE | 138 | Новые цены |
Подскажите пожалуйста, как писать правильно (Новичку)
Зарание извеняюсь за свой русский язык я не из СНГ.
int start() { int Magic=7612; int kolpos=0; int ticket=0; double Lot=0.1; //+------------------------------------------------------------------+ // Checking if ONLY ONE position opened //+------------------------------------------------------------------+ for (int pos=0; pos<OrdersTotal();pos++) { OrderSelect(pos,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) kolpos++; } //+------------------------------------------------------------------+ // Order BUY signal //+------------------------------------------------------------------+ if(High[1]<High[0]&&kolpos==0) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,0,1111,0,Green); else Print("OrderSend_BUY ERROR = ", GetLastError()); //+------------------------------------------------------------------+ // Order SELL signal //+------------------------------------------------------------------+ if(Low[1]>Low[0]&&kolpos==0) OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,0,1111,0,Green); else Print("OrderSend_SELL ERROR = ", GetLastError()); //+------------------------------------------------------------------+ // Close by profit //+------------------------------------------------------------------+ if(OrderSelect(0, SELECT_BY_POS)==true) Print("Profit for the order 0 ",OrderProfit()); //+------------------------------------------------------------------+ if(OrderProfit()>5) OrderClose(OrderTicket(),0.1,Bid,3,Blue); //+------------------------------------------------------------------+ return(0); }Обьясните как работать с OrderSelect() и OrderProfit() что бы закрывались на 100% , читатал документацию...не совсем понятно...
alehandro:
Спасибо документацию я тоже умею читать :)
и понимать?
Обьясните как работать с OrderSelect() и OrderProfit() что бы закрывались на 100% , читатал документацию...не совсем понятно...
int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
против реквот попробуйте увеличить slippage
не открываете ордеров больше чем разрешает брокер
int start() { int Magic=7612; int kolpos=0; int ticket=0; double Lot=0.1; //+------------------------------------------------------------------+ // Checking if ONLY ONE position opened //+------------------------------------------------------------------+ for (int pos=0; pos<OrdersTotal();pos++) { OrderSelect(pos,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) kolpos++; } //+------------------------------------------------------------------+ // Order BUY signal //+------------------------------------------------------------------+ if(High[1]<High[0]&&kolpos==0) OrderSend(Symbol(),OP_BUY,0.1,Ask,7,0,0,0,1111,0,Green); else Print("OrderSend_BUY ERROR = ", GetLastError()); //+------------------------------------------------------------------+ // Order SELL signal //+------------------------------------------------------------------+ if(Low[1]>Low[0]&&kolpos==0) OrderSend(Symbol(),OP_SELL,0.1,Bid,7,0,0,0,1111,0,Green); else Print("OrderSend_SELL ERROR = ", GetLastError()); //+------------------------------------------------------------------+ // Close by profit //+------------------------------------------------------------------+ if(OrderSelect(0, SELECT_BY_POS)==true) Print("Profit for the order 0 ",OrderProfit()); //+------------------------------------------------------------------+ if(OrderProfit()>15||OrderProfit()>-15) OrderClose(OrderTicket(),0.1,Bid,7,Blue); //+------------------------------------------------------------------+ return(0); }
// Получается какой то балаган.
Поделитесь пожалуйста каму не жалко миханизмом управления открытия и закрытия ордеров у меня он как видите совсем не какой...
Управления количеством одновременно открытых ордеров, закрытие (CloseOrder) при достижении определеного плюса минуса...
Буду очень вам блогодарен.
Как пишите, то и имеете...
int start() { int Magic=7612; int kolpos=0; int ticket=0; double Lot=0.1, ld_Price; //+------------------------------------------------------------------+ // Checking if ONLY ONE position opened //+------------------------------------------------------------------+ for (int pos = OrdersTotal() - 1; pos >= 0; pos--) { OrderSelect(pos,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue; //+------------------------------------------------------------------+ // Close by profit //+------------------------------------------------------------------+ if (OrderProfit() > 15 || OrderProfit() < -15) { if (OrderType() == OP_BUY) ld_Price = Bid; else if (OrderType() == OP_SELL) ld_Price = Ask; if (OrderClose (OrderTicket(), OrderLots(), ld_Price, 7, Blue)) continue; } //+------------------------------------------------------------------+ kolpos++; } if (kolpos > 0) return (0); //+------------------------------------------------------------------+ // Order BUY signal //+------------------------------------------------------------------+ if (High[1] < High[0]) { ticket = OrderSend (Symbol(), OP_BUY, Lot, Ask, 7, 0, 0, "", Magic, 0, Green); if (ticket <= 0) Print("OrderSend_BUY ERROR = ", GetLastError()); else return (0); } //+------------------------------------------------------------------+ // Order SELL signal //+------------------------------------------------------------------+ if (Low[1] > Low[0]) { ticket = OrderSend (Symbol(),OP_SELL, Lot, Bid, 7, 0, 0, "", Magic, 0, Green); if (ticket <= 0) Print("OrderSend_SELL ERROR = ", GetLastError()); } //+------------------------------------------------------------------+ return (0); }
Тарас Большое вам спасибо,
Еще если можно...
Подскажите пожалуйста как лучше вставить условие СПРЕДА в этот код, когда спред большой что бы позиции не открывались...
int start() { int Magic=7612; int kolpos=0; int ticket=0; double Lot=0.1, ld_Price; //+------------------------------------------------------------------+ // Checking if ONLY ONE position opened //+------------------------------------------------------------------+ for (int pos = OrdersTotal() - 1; pos >= 0; pos--) { OrderSelect(pos,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue; //+------------------------------------------------------------------+ // Close by profit //+------------------------------------------------------------------+ if (OrderProfit() > 15 || OrderProfit() < -15) { if (OrderType() == OP_BUY) ld_Price = Bid; else if (OrderType() == OP_SELL) ld_Price = Ask; if (OrderClose (OrderTicket(), OrderLots(), ld_Price, 7, Blue)) continue; } //+------------------------------------------------------------------+ kolpos++; } if (kolpos > 0) return (0); //+------------------------------------------------------------------+ // Order BUY signal //+------------------------------------------------------------------+ if (High[1] < High[0]) { ticket = OrderSend (Symbol(), OP_BUY, Lot, Ask, 7, 0, 0, "", Magic, 0, Green); if (ticket <= 0) Print("OrderSend_BUY ERROR = ", GetLastError()); else return (0); } //+------------------------------------------------------------------+ // Order SELL signal //+------------------------------------------------------------------+ if (Low[1] > Low[0]) { ticket = OrderSend (Symbol(),OP_SELL, Lot, Bid, 7, 0, 0, "", Magic, 0, Green); if (ticket <= 0) Print("OrderSend_SELL ERROR = ", GetLastError()); } //+------------------------------------------------------------------+ return (0); }
extern double spread;
spread=MarketInfo(Symbol(),MODE_SPREAD);
if(spread>2);
Типо того.. что бы не довал открывать...
Как лучше внедрить это условие в код (выше),?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Обьясните пожалуйста, почему у меня ордера не открываются, с учетом 1 позиции, и не закрываются...