[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 86

 
nemo811:
Спасибо. Так будет правильно?

Да. Так думаю.
 
А нет. Sum=0 надо ставить перед оператором For.
 
6166961669:

Доброго времени суток,ребят,скажите сколько будет стоить заказать советник???

Ах да и вообще возможно сделать так чтобы он работал сразу на 2х разных валютах(одновременно на двух графиках)причем открывал по каждому разные сделки.

Например на первом ПОКУПАЛ а на втором наоборот продавал?

А по закритию одной из сделок открывал противоположенную уже открытой сделке....

И может кто знает может есть такой советник в природе, а то просто неплохая мысль в голову пришла.....


Всё можно сделать. Пишите в личку. Договоримся.
 
FOReignEXchange:
А нет. Sum=0 надо ставить перед оператором For.

Всё заработало. Благодарю. По ходу нашёл ещё одну ошибку.

Чейчас потягаю малость - вдруг ещё что выползет - и выложу результат в общую базу.

Ещё раз спасибо за помощь.

 
nemo811:

Всё заработало. Благодарю. По ходу нашёл ещё одну ошибку.

Чейчас потягаю малость - вдруг ещё что выползет - и выложу результат в общую базу.

Ещё раз спасибо за помощь.


Не за что. Обращайтесь.
 

To: FOReignEXchange

Если я в данный момент исполнения программы

extern bool Buy = true;

extern double PriceBuy = 0;

int start()
{
if (Buy)
{OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
PriceBuy = ??????????????????;}

return;
}

Укажу присвоение" PriceBuy = ??????????????????;" - "PriceBuy = Ask;"

Смогу ли я быть уверен, что с ходом программы(допустим открытие нового ордера с заданными условиями)

"PriceBuy" Будет иметь то же значение???

 
OTPOK:

To: FOReignEXchange

Если я в данный момент исполнения программы

extern bool Buy = true;

extern double PriceBuy = 0;

int start()
{
if (Buy)
{OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
PriceBuy = ??????????????????;}

return;
}

Укажу присвоение" PriceBuy = ??????????????????;" - "PriceBuy = Ask;"

Смогу ли я быть уверен, что с ходом программы(допустим открытие нового ордера с заданными условиями)

"PriceBuy" Будет иметь то же значение???


Как это extern double PriceBuy = 0 ? В глобальных переменных указываются только постоянные числа. Если это оттуда убрать вообще, то ответить на вопросы можно так:

Если пременной PriceBuy нигде не присваиваются другие значения, то значение PriceBuy = Ask; будет действовать до тех пор, пока вычисления не дойдут снова до открытия нового ордера. Как вычисления до туда снова дойдут переменной будет присвоено новое значение PriceBuy = Ask; которое будет соответсвовать цене Ask в момент открытия нового ордера.

А в чём проблемма то? Это же ясно.

 
FOReignEXchange:


Как это extern double PriceBuy = 0 ? В глобальных переменных указываются только постоянные числа.

Не путайте, пожалуйста, Наших Новичков.

Во-первых: переменная PriceBuy в данном случае является внешней переменной. А внешняя переменная по определению является глобальной!

Во-вторых: внешней переменной Вы можете присвоить любое значение в коде советника, но тогда потеряется её смысл (быть внешней переменной). А вот глобальные переменные как раз и применяются, чтобы хранить и изменять их значения в пределах всего кода (область видимости - вся программа). Подробнее.

В-третьих: если в торговой функции OrderSend указан Slippage и Мы хотим открыть ордер Buy, то не обязательно, что ордер откроется именно по цене Ask, так как на исполнение торгового приказа, отданного функцией OrderSend, уходит определённое время и цена может уйти от данного значения.

Поэтому более правильным будет код, который уже приводили на предыдущей странице, цитирую:

abolk:
extern bool Buy = true;
extern double PriceBuy = 0; 
int start() 
{
   if(Buy) 
   {
     int ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
        PriceBuy=OrderOpenPrice();
   }
   return(0); 
}
 
MaxZ:

Поэтому более правильным будет код, который уже приводили на предыдущей странице, цитирую:


Кому как нравится. У всех разный почерк. Может быть у Вас всё там правильно, но мне кажется это коряво.

Я бы так не стал делать.

Во-первых, не совсем понимаю зачем нужно объявлять переменуую там и какой в этом смысл мне тоже не понятно.

Во-вторых, строчка PriceBuy = Ask; находится сразу за функцией OrderSend. И, насколько я понимаю, как только заканчивается выполнение этой функции, вычисления передаются сразу на следующую строчку. Не думаю, что цена Ask может изменится. Я стараюсь писать всё как можно проще, сокращая кол-во символов, если это не мешает нормальному функционированию программы. Можно присвовить значение также как и у Вас, не вижу тут проблеммы. Написал, что первое и простое пришло в голову.

 
Ну да. Точно. Не правильно обозвал переменную. Согласен. С теорией у Вас хорошо. А с логикой что-то не совсем.