Мои приветствия.
Народ, а почему я не могу создать тему?
otapk, пользователи с количеством сообщений меньше 10 несколько ограничиваются в правах... И одно из ограничений как раз запрет создания новых тем, чтобы не спамили.
Отправлено 18 March 2011 - 23:56
Мои приветствия.
Народ, а почему я не могу создать тему?
Отправлено 19 March 2011 - 00:03
Спасибо, с этой проблемой я уже разобрался, там на самом деле была затыка в -Corridor это числовое значение, оно должно быть в пунктах и я просто промограл, сейчас поправил.. Теперь новая проблемка. что то с lasttime. На этот раз я выложил другой кусок кода, но и на старый проблема тоже распространяется. По идее lasttime должен запоминать время открытия последнего ордера, чтобы брать информацию только из последнего открытого ордера. Но видимо я что-то не то сделал..
Отправлено 19 March 2011 - 00:24
Сделай функцию определения времени открытия последнего ордера ( например TimeLastOpen()) и вставь вместо int LastTime; - > int LastTime = TimeLastOpen(); те Присвой это время (а не НОЛЬ) переменной lasttime. и тд.
В последнем тексте int LastTime при переборе ордеров всегда равно OrderOpenTime() выбранного ордера
Отправлено 19 March 2011 - 00:37
Потому что любая сделка (1-я поданная на проверку будет подходить условию if (LastTime < OrderOpenTime(). тк LastTime при инициализации (int LastTime;) равна нулю.Ребят, помогите пожалуйста, объясните где ошибка, почему этот кусок не работает?
double NextLots() {
int LastTime;
double NLot;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS)) {
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if (LastTime < OrderOpenTime()) {
LastTime = OrderOpenTime();
NLot = OrderLots() * 2;
return (NLot);
}
}
}
}
}
Он почему то умножает лот первой сделки, а не последней..
Отправлено 19 March 2011 - 00:40
Попробую еще раз:1. Пара чего?
2. Отображаемые уровни от чего, в чем (%, пипсы, попугаи...)?
3. Окно оcновное (цены) или в отдельном окне? Разность - величина значительно меньшая, чем значение стохастиков - значит будет ниже (и значительно) или (если отрицательная - то где?).
т.е. разность можно изобразить только на отдельном окне. Вот.
Отправлено 19 March 2011 - 00:42
Потому что любая сделка (1-я поданная на проверку будет подходить условию if (LastTime < OrderOpenTime(). тк LastTime при инициализации (int LastTime;) равна нулю.
Отправлено 19 March 2011 - 01:02
Все понятно и доходчиво объяснил. Но не совсем.Попробую еще раз:
Мы имеем два финансовых инструмента , к примеру EUR/USD и GBP/USD и соответственно два стохастика; нужно чтобы эти два стохастика отображались в одном окне;
Разность - abs( stoch(eur/usd) - stoch(gbp/usd)) ,
Как только эта разность больше 80, то звуковой сигнал.
Отправлено 19 March 2011 - 01:16
Отправлено 19 March 2011 - 14:32
вынеси return(NLot); за цикл...Ребят, помогите пожалуйста, объясните где ошибка, почему этот кусок не работает?
double NextLots() {
int LastTime;
double NLot;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS)) {
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if (LastTime < OrderOpenTime()) {
LastTime = OrderOpenTime();
NLot = OrderLots() * 2;
return (NLot);
}
}
}
}
}
Он почему то умножает лот первой сделки, а не последней..
Отправлено 19 March 2011 - 15:24
if (OrdersTotal()>1 && OrdersTotal()<Max_orders) {
for (int a=0; a<OrdersTotal(); a++) {
if (OrderSelect(a, SELECT_BY_POS)) {
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
if (LastTime < OrderOpenTime()) {
LastTime = OrderOpenTime();
if (OrderProfit()==-Corridor*OrderLots()*10) {
if(OrderType()==OP_BUY)
OrderSend(Symbol(), OP_SELL, NextLots(), Bid, Slippage, Bid + (2*Corridor)*Point, Bid - Corridor * Point, NameExpert, Magic, 0, colorOpenSell);
if(OrderType()==OP_SELL)
OrderSend(Symbol(), OP_BUY, NextLots(), Ask, Slippage, Ask - (2*Corridor)*Point, Ask + Corridor * Point, NameExpert, Magic, 0, colorOpenBuy);
}
}
}
}
}
}
Отправлено 19 March 2011 - 17:10
сделай так...Michelangelo, спасибо огромное!! Блин вот так всегда, тупая мелкая ошибка, и начинаешь думать что код неправильный вообще))
Можешь еще помочь с той же самой ошибкой, только в другом куске, уже торговом?if (OrdersTotal()>1 && OrdersTotal()<Max_orders) {
for (int a=0; a<OrdersTotal(); a++) {
if (OrderSelect(a, SELECT_BY_POS)) {
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
if (LastTime < OrderOpenTime()) {
LastTime = OrderOpenTime();
if (OrderProfit()==-Corridor*OrderLots()*10) {
if(OrderType()==OP_BUY)
OrderSend(Symbol(), OP_SELL, NextLots(), Bid, Slippage, Bid + (2*Corridor)*Point, Bid - Corridor * Point, NameExpert, Magic, 0, colorOpenSell);
if(OrderType()==OP_SELL)
OrderSend(Symbol(), OP_BUY, NextLots(), Ask, Slippage, Ask - (2*Corridor)*Point, Ask + Corridor * Point, NameExpert, Magic, 0, colorOpenBuy);
}
}
}
}
}
}
Тоже самое, берет тип сделки не из последней сделки, а из первой.. Тут return-а нет, и я хз просто как сделать..
P.S все в общем, разобрался, вынес эту надоевшую LastTime в отдельную bool функцию, теперь все работает)
int ticket=-1; if (OrdersTotal()>1 && OrdersTotal()<Max_orders) { for (int a=0; a<OrdersTotal(); a++) { if (OrderSelect(a, SELECT_BY_POS)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if (LastTime < OrderOpenTime()) { LastTime = OrderOpenTime(); ticket=OrderTicket(); } } } } } if(OrderSelect(ticket,SELECT_BY_TICKET)){ if (OrderProfit()==-Corridor*OrderLots()*10) { if(OrderType()==OP_BUY) OrderSend(Symbol(), OP_SELL, NextLots(), Bid, Slippage, Bid + (2*Corridor)*Point, Bid - Corridor * Point, NameExpert, Magic, 0, colorOpenSell); if(OrderType()==OP_SELL) OrderSend(Symbol(), OP_BUY, NextLots(), Ask, Slippage, Ask - (2*Corridor)*Point, Ask + Corridor * Point, NameExpert, Magic, 0, colorOpenBuy); } }т.е. ты вводишь переменную ticket и находишь самый последний ордер... цикл закончен - результат номер последнего ордера...
Отправлено 19 March 2011 - 21:56
Спасибо за помощь Ночку погуглил и версия 3.11 на компе . Там есть ex4. файлы , думаю посвежей .Облегчу немного работу Уважаемому , вот советник по индикаторам Sniper но, без Megatrenda.
Извините, сам не проверял.
Отправлено 19 March 2011 - 21:57
Отправлено 20 March 2011 - 01:41
Доброго времени суток! Уважаемые программисты помогите прикрепить к этому советнику:
1. Трейлинг стоп с заданным шагом
2. Время торговли
3. Магик
3. Манименеджмент (использование в открытых сделках не более % от капитала). true/false
Отправлено 20 March 2011 - 02:17
if (ExistPositions()) { if (AccountProfit()>=Corridor*Lot()*10) { bool result; double price; int error; if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)) { while(ExistPositions()) { if(OrderType()==OP_BUY) price=Bid; else price=Ask; result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE); if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); } else error=0; if(error==135) RefreshRates(); else break; } } else Print( "Error when order select ", GetLastError()); } return(0);}