Не выставляются лось с тейком Помогите - страница 3

 

Код вот такой Больше мне ничего не надо...

int stoploss=20;
int teykprofit=25;
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
OpenShort();
//----
return(0);
}
//+------------------------------------------------------------------+
int OpenShort() // Функция открытия короткой позиции
{
int SL=Bid+stoploss*Point;
int TP=Bid-teykprofit*Point;
OrderSend(Symbol(),OP_SELL,0.05,Bid,3,SL,TP,"",0,0,CLR_NONE);
}
return;

 

1. Обрабатывай ошибки после выполнения торговых фунций.

OrderSend(Symbol(),OP_SELL,0.05,Bid,3,SL,TP,"",0,0,CLR_NONE);

Print(GetLastError());

2. Посмотри StopLevel для пары

3. ПОДПРАВЬ int на double

int SL=Bid+stoploss*Point;
int
TP=Bid-teykprofit*Point;

 

было бы не плохо SL и TP обьявить как double....

 

Объявил как вещественное. Не работает :(

Ошибка 130...что бы это значило :(

 
AYuBelov писал(а) >>

Объявил как вещественное. Не работает :(

Ошибка 130...что бы это значило :(

130 - неправильные стопы :)

А что грит MarketInfo(Symbol(), MODE_STOPLEVEL); ?

А лучше перед отслылкой ордера подставь:

Print("Bid:",Bid," SL:",SL," TP:", TP, " STOPLEVEL:", MarketInfo(Symbol(), MODE_STOPLEVEL), " Point:", Point);

и чё получмлось выложи

 

Попробовал вот так Ошибка 130 исчезла но лось и тейк не выставляются все равно :(((

int OpenShort() // Функция открытия короткой позиции
{
double SL=Bid+stoploss*Point;
double TP=Bid-teykprofit*Point;
int Ticket=OrderTicket();
double Price =OrderOpenPrice();
OrderSend(Symbol(),OP_SELL,0.05,Bid,3,0,0,"",0,0,CLR_NONE);
OrderModify(Ticket,Price,SL,TP,0);
Print(GetLastError());
}
return;

Ордер открывается, но не модифицируется.....^(

 
Эээх поднимем веточку. Ребят ну мож кто знающий наткнется :(
 
перед отслылкой ордера подставь:

Print("Bid:",Bid," SL:",SL," TP:", TP, " STOPLEVEL:", MarketInfo(Symbol(), MODE_STOPLEVEL), " Point:", Point);

и чё получмлось выложи

 

2008.12.05 15:07:57 SL GBPUSD,H1: Bid:1.4687 SL:1.4707 TP:1.4662 STOPLEVEL:0 Point:0.0001
2008.12.05 15:07:59 SL GBPUSD,H1: open #9799949 sell 0.05 GBPUSD at 1.4687 ok
2008.12.05 15:07:59 SL GBPUSD,H1: invalid ticket for OrderModify function
2008.12.05 15:07:59 SL GBPUSD,H1: 4051

Вот так получилось

 
AYuBelov писал(а) >>

2008.12.05 15:07:57 SL GBPUSD,H1: Bid:1.4687 SL:1.4707 TP:1.4662 STOPLEVEL:0 Point:0.0001
2008.12.05 15:07:59 SL GBPUSD,H1: open #9799949 sell 0.05 GBPUSD at 1.4687 ok
2008.12.05 15:07:59 SL GBPUSD,H1: invalid ticket for OrderModify function
2008.12.05 15:07:59 SL GBPUSD,H1: 4051

Вот так получилось

2008.12.05 15:07:59 SL GBPUSD,H1: invalid ticket for OrderModify function
OrderSelect () забыл

int Ticket=OrderTicket();

-----------------------------------------------

А по логике код примерно такой

 
double SL=Bid+stoploss*Point;
double TP=Bid-teykprofit*Point;
double Price = Bid;
int Ticket=OrderSend(Symbol(),OP_SELL,0.05,Price,3,0,0,"",0,0,CLR_NONE);

if (Ticket>-1) {
   if (!OrderModify(Ticket,Price,SL,TP,0)) {
      Print("Modify error:", GetLastError());
   } 
} else {
   Print("Send order error:", GetLastError());
}

Причина обращения: