Расчет цены символа, при которой произойдет стоп аут - страница 3

 
FEEX #:

с какими условия нужно эти две строки обыграть - не могу сообразить((((

Считайте суммарные объемы по символу. Если объемы продаж больше, то один вариант. Если покупок - второй...

 
Yevhenii Levchenko #:

Считайте суммарные объемы по символу. Если объемы продаж больше, то один вариант. Если покупок - второй...

Сова торгует только buy, или только sell, т.е сумарных объемов продажи/покупки не будет. Если я Вас правильно понял.

Я там в предыдущем посте дописал еще.. Посмотрите, плиз, в конце... 
Вы уже сделали почти всё, даже больше, кроме самого главного) Осталось пол шага, которые я сделать не могу, в силу отсутствия наличия необходимых и достаточных знаний. 

 
Вот:
Файлы:
ZolotoAM2.mq4  36 kb
 
Yevhenii Levchenko #:
Вот:

вроде он)
Подскажите тогда как из этого: string info = StringFormat("SO_SO begins at: %f",lots > 0 ? Bid - u_shift_3 * _Point : Ask + u_shift_3 * _Point);

   Comment(info);

получить переменную, которая выводит цену SO?

дело в том, что вывод    Comment(info); не совсем подходит, нужна переменная отдельная, чтобы еще линию к ней привязать. И вообще я не пользуюсь системой   Comment для вывода инфы, у меня другой способ:
 SM("StopOut price           : " + DoubleToString(u_shift_3,Digits)); // вывод на график
отдельная функция, где каждый параметр отдельной строкой выводится, а для этого нужна переменная.. Я не знаю как из вашего варианта слепить переменную.

 
FEEX #:

Вот оно:

double price = lots > 0 ? Bid - u_shift_3 * _Point : Ask + u_shift_3 * _Point;
 
Yevhenii Levchenko #:
double price = lots > 0 ? Bid - u_shift_3 * _Point : Ask + u_shift_3 * _Point;

оно меня убьет..... пихал double price; и  double price=0; и ничего

Сорри, сделал

double price = lots > 0 ? Bid - u_shift_3 * _Point : Ask + u_shift_3 * _Point;
   if(price!=0) {
      if(ObjectFind("SO_Line")==-1) {
         ObjectCreate(0,"SO_Line",OBJ_HLINE,0,0,price);
         ObjectSetInteger(0,"SO_Line",OBJPROP_COLOR,Red);
         ObjectSetInteger(0,"SO_Line",OBJPROP_STYLE,0);
         ObjectSetInteger(0,"SO_Line",OBJPROP_WIDTH,2);
         ObjectSetInteger(0,"SO_Line",OBJPROP_BACK,true);
      } else
         ObjectMove(0,"SO_Line",0,0,price);
   }

double price = lots > 0 ? Bid - u_shift_3 * _Point : Ask + u_shift_3 * _Point; - выше "линии" должно быть.. Я уже вообще перестал соображать)))
Спасибо Вам за терпение, теперь это то, что нужно))) слив четко совпадает с ценой слива и соответственно линия это показывает) там есть небольшой разбег 5 пунктиков по 5-му знаку, но это мелочь!!! 


 Еще раз огромное спасибо, "конец моим страданиям и разочарованиям" (с)

 
FEEX #:

Спасибо Вам за терпение, теперь это то, что нужно))) слив четко совпадает с ценой слива и соответственно линия это показывает) там есть небольшой разбег 5 пунктиков по 5-му знаку, но это мелочь!!!

 Еще раз огромное спасибо, "конец моим страданиям и разочарованиям" (с)

Успехов! :)
 
Yevhenii Levchenko #:
Успехов! :)

я дико извиняюсь, заметил один нюанс: если открыты ордера sell, то сумма всех лотов открытых ордеров идет с минусом/ Не должно быть знака минус независимо sell или buy ордера) лот - он и в Африке лот))
All volume trade now = - 0.23.
если открыты ордера buy, то всё нормально: All volume trade now = 0.23


 double lots=0;
   if (GetLot(0) > 0) {
      lots=GetLot(0);
   }
   if (GetLot(1) > 0) {
      lots=GetLot(1);
   }
   lots = GetLot(0) - GetLot(1);
   if(lots == 0) return;

вот это отвечает за lots (сумма всех лотов.)

 
FEEX #:

я дико извиняюсь, заметил один нюанс: если открыты ордера sell, то сумма всех лотов открытых ордеров идет с минусом
All volume trade now = - 0.23.
если открыты ордера buy, то всё нормально: All volume trade now = 0.23


вот это отвечает за lots (сумма всех лотов.)

Так и задумано

 
Yevhenii Levchenko #:

Так и задумано

а как убрать "минус"? не может лот быть отрицательным))

нужно чтобы независимо от sell или buy рисовало  All volume trade now = 0.23.