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

 

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

 так :

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

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

 
zan:

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

так :

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

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

Функция Symbol() возвращает переменную типа string. Поэтому "GBPUSD" воспримется как строка и как символ в функции открытия ордера.
 
Не боись, воспримется правильно. С ценами у тебя конечно нестыковочка, поэтому бери букварь и внимательно читай.
 
Roger:
Не боись, воспримется правильно. С ценами у тебя конечно нестыковочка, поэтому бери букварь и внимательно читай.
Солидарен! На цены даже и не смотрел! :D
 
а что с ценами, т.е. он берет цену куда прикреплен советник, а не того симовла который записан
 
zan:
а что с ценами, т.е. он берет цену куда прикреплен советник, а не того симовла который записан
Да. Проплывите по форуму через поиск и Я уверен, что Вы найдёте неоднократно ответ на Свой вопрос.
 

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

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()
}
 

 
в чем тут ошибка ???))) голова не работает
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);
}
 

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

bid =MarketInfo("GBPUSD",MODE_BID);

 
Roger:

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

bid =MarketInfo("GBPUSD",MODE_BID);



у меня работает только один ordersend на продажу, который по gbpusd отключена (ссылка)
 
Тогда просто поставьте RefreshRates().
Причина обращения: