Скачать MetaTrader 5

помогите разобраться Symbol()

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Увеличивай свой рейтинг. Выполняй заказы в сервисе Фриланс!
Ilnaz
440
Ilnaz 2011.08.10 18:42 

у меня такой вопрос писал код эксперта что бы сразу открывал два ордера на разных валютных парах. как прописать в ordersend ?

 так :

OrderSend("GBPUSD", OP_SELL, lots, Bid, 3, sl*Point, tp*Point); но как я понял gbpusd в этом случай яв-ся string и не воспринимается как символ.

заранее благодарен.

Maxim Zaguzov
1431
Maxim Zaguzov 2011.08.10 19:02  
zan:

у меня такой вопрос писал код эксперта что бы сразу открывал два ордера на разных валютных парах. как прописать в ordersend ?

так :

OrderSend("GBPUSD", OP_SELL, lots, Bid, 3, sl*Point, tp*Point); но как я понял gbpusd в этом случай яв-ся string и не воспринимается как символ.

заранее благодарен.

Функция Symbol() возвращает переменную типа string. Поэтому "GBPUSD" воспримется как строка и как символ в функции открытия ордера.
Alexander
2441
Alexander 2011.08.10 19:02  
Не боись, воспримется правильно. С ценами у тебя конечно нестыковочка, поэтому бери букварь и внимательно читай.
Maxim Zaguzov
1431
Maxim Zaguzov 2011.08.10 19:06  
Roger:
Не боись, воспримется правильно. С ценами у тебя конечно нестыковочка, поэтому бери букварь и внимательно читай.
Солидарен! На цены даже и не смотрел! :D
Ilnaz
440
Ilnaz 2011.08.10 19:12  
а что с ценами, т.е. он берет цену куда прикреплен советник, а не того симовла который записан
Maxim Zaguzov
1431
Maxim Zaguzov 2011.08.10 19:21  
zan:
а что с ценами, т.е. он берет цену куда прикреплен советник, а не того симовла который записан
Да. Проплывите по форуму через поиск и Я уверен, что Вы найдёте неоднократно ответ на Свой вопрос.
Ilnaz
440
Ilnaz 2011.08.10 19:53  

спасибо я нашел в учебнике)

int start() // Спец. функция start
{
double bid =MarketInfo("GBPUSD",MODE_BID); // Запрос значения Bid
double ask =MarketInfo("GBPUSD",MODE_ASK); // Запрос значения Ask
double point =MarketInfo("GBPUSD",MODE_POINT);//Запрос Point
// Открытие BUY
OrderSend("GBPUSD",OP_BUY,0.1,ask,3,bid-15*Point,bid+15*Point);
Alert (GetLastError()); // Сообщение об ошибке
return; // Выход из start()
}
 

Ilnaz
440
Ilnaz 2011.08.10 20:28  
в чем тут ошибка ???))) голова не работает
int start()
{
//----
double total = OrdersTotal();
// double SLs, TPs, SLGBb,TPGBb;

double bid ; // Запрос значения Bid
double ask ; // Запрос значения Ask
double point;//Запрос Point
double stoplevel = MarketInfo( Symbol(),MODE_STOPLEVEL);
double stoplevel_i;

// if (bid-sl*point >= stoplevel_i)SLGBb=sl;//gbpusd

// if (tp*point-bid >= stoplevel_i) TPGBb = tp;//gbpusd

// if (sl*Point-Ask >= stoplevel) SLs = sl;

// if (Ask-tp*Point >= stoplevel) TPs = tp;


if ( total == 0 )
{
stoplevel_i = MarketInfo( "GBPUSD", MODE_STOPLEVEL);
bid =MarketInfo("GBPUSD",MODE_BID); // Запрос значения Bid
ask =MarketInfo("GBPUSD",MODE_ASK); // Запрос значения Ask
point =MarketInfo("GBPUSD",MODE_POINT);//Запрос Point



// Открытие BUY
// OrderSend("GBPUSD",OP_BUY,lots,ask,3,ask - 40*point, ask + 10*point);
// Alert (GetLastError());


  OrderSend(Symbol(),OP_SELL,lots,Bid,3,Ask-40*Point,Ask+50*Point);//--пишет что ошибка 130 при проходе 
Alert (GetLastError());


//
}
//----
return(0);
}
Alexander
2441
Alexander 2011.08.10 20:36  

Между двумя открытиями рыночных ордеров необходимо обновлять данные. После первого открытия поставь

bid =MarketInfo("GBPUSD",MODE_BID);

Ilnaz
440
Ilnaz 2011.08.10 20:42  
Roger:

Между двумя открытиями рыночных ордеров необходимо обновлять данные. После первого открытия поставь

bid =MarketInfo("GBPUSD",MODE_BID);



у меня работает только один ordersend на продажу, который по gbpusd отключена (ссылка)
Alexander
2441
Alexander 2011.08.10 20:43  
Тогда просто поставьте RefreshRates().
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий