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

 

И еще barma  проверте

//--------------------------------------------------------------- 5 --
// торговые критерии
if(vverh>0)
  {
   Opn_B=true;
   Cls_S=true;
   Opn_S=false;
   Cls_B=false;
  }
if(vverh>0)
  {
   Opn_S=true;
   Cls_B=true;
   Opn_B=false;
   Cls_S=false;
  }
  
//--------------------------------------------------------------- 6 --
правильно ли вы прописали условия
 

Господа! Всем добрый вечер(ночи ,утра, дня)!

Подскажите пожалуйста ответ на простой для Вас вопрос.

Какая функция возвращает цену открытия ордера , который:

- закрылся последним

- закрылся именно по стоп-лоссу

Спасибо за помощь.

 
solnce600:

Господа! Всем добрый вечер(ночи ,утра, дня)!

Подскажите пожалуйста ответ на простой для Вас вопрос.

Какая функция возвращает цену открытия ордера , который:

- закрылся последним

- закрылся именно по стоп-лоссу

Спасибо за помощь.



такой функции нет - тут небольшой  код писать нужно
 
artmedia70:

Переменными можно обойтись только, если проверяем стратегию в тестере.

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



Артём, а можно пример? Ведь функцией можно даже заменить переменную. А переменной функцию не заменить :) 

 

solnce600:

 


Господа! Всем добрый вечер(ночи ,утра, дня)!

Подскажите пожалуйста ответ на простой для Вас вопрос.

Какая функция возвращает цену открытия ордера , который:

- закрылся последним

- закрылся именно по стоп-лоссу

Спасибо за помощь.



Есть такая ветка там много чего, интересного.

Эта функция возвращает флаг закрытия последней позиции по стопу 

 

Большое спасибо за подсказку.

Я этой функцией как раз и пользуюсь.

Мне нужно после закрытия ордера по стопу закодировать открытие рыночных ордеров по цене

открытия последнего закрытого по стопу ордера.

Я пытался запомнить цену открытия последнего закрытого по стопу ордера в переменной
if (isCloseLastPosByStop()==True)                                            //если посл.орд.SELL  закрылся по стопу(стоп данного ордера SELL = 295 п.)

double PrStop = (Bid - 0.0295);                                              // от цены срабатывания СТОП-ЛОССА вычитаем 295 п. 
                                                                             // и запоминаем это значение,(т.е. цену открытия ордера)в переменной  PrStop         
if (Bid == PrStop )                                                          //если цена Bid будет равна значению PrStop
OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point,"jfh",123 );//открыть ордер.

Но ,когда цена равна значению PrStop ордер не выставляется.

Я так же пытался выставить ордер при условии что цена ниже значения  PrStop.

Но ордер опять не выставлялся.

if (Bid < PrStop ) 

Мне кажется,что причина может быть в том,что пока следующий ордер не закроется  НЕ ПО СТОП -ЛОССУ

isCloseLastPosByStop () НА КАЖДОМ ТИКЕ будет возвращать True и в переменную  PrStop будет попадать

НА КАЖДОМ ТИКЕ  НОВОЕ ЗНАЧЕНИЕ.

Все функции Кима я внимательно просмотрел.Но судя по их названиям ,как мне кажется,подходящих для решения моей проблемы я не нашел.

Буду  оооочень признателен Всем , кто наставит меня на путь истинный.

 

Подскажите пожалуйста! Только начинаю делать первые шаги в программировании.

Как быстрее будет работать функция?  (функция вызывается 2 раза)  

- если ее вызывать из библиотеки

- когда она описана за пределами ф. start() прямо в советнике

- если она на ходится прямо в самой  ф. start() 

 

solnce600, Андрей, Вы же имеете в руках последнюю позицию, закрытую по СЛ! А кто Вам мешает узнать всё о ней, что хотите, чуть-чуть подправив функцию:

double GetOOPCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
  datetime t; 
  double   ocp, osl, OOP;
  double p = 0;
  int    i, j=-1, k=OrdersHistoryTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
        if (op<0 || OrderType()==op) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            j=i;
//            p = OrderProfit()+OrderCommission()+OrderSwap();
            OOP = OrderOpenPrice();
  } } } } }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    ocp=NormalizeDouble(OrderClosePrice(), 5);
    osl=NormalizeDouble(OrderStopLoss(), 5);
//    if (ocp==osl) return(p);
    if (ocp==osl) return(OOP);
  }
  return(0);
}
Я закомментировал две строчки, которые мне дают профит от закрытия, а добавил две строчки, чтобы получить цену открытия этой закрытой позиции. Я не проверял, но должно работать, как всё работает, когда подставляю то, что мне нужно! Проверьте!
 
borilunad:

solnce600, Андрей, Вы же имеете в руках последнюю позицию, закрытую по СЛ! А кто Вам мешает узнать всё о ней, что хотите, чуть-чуть подправив функцию:

Я закомментировал две строчки, которые мне дают профит от закрытия, а добавил две строчки, чтобы получить цену открытия этой закрытой позиции. Я не проверял, но должно работать, как всё работает, когда подставляю то, что мне нужно! Проверьте!

 

Большое спасибо за оперативную помощь.

Буду Вам так же ооочень признателен если подкинете мне идею по поводу.....

Моя стратегия очень простая

.- Если цена от начала свечи ( iOpen (Symbol (),0,0) прошла вверх(вниз) большее расстояние(300 п.) быстрее чем меньшее  расстояние(10 п.) в противоположную сторону

-То после того как цена развернется и пойдет в противоположную сторону, по цене свечи ( iOpen (Symbol (),0,0) на открытии  каждой свечи открывать рыночные ордера.

Для реализации этого замысла первое что приходит  в голову

1.По цене открытия каждой свечи выставлять рыночный ордер с большим стопом и маленьким профитом.

2.Если ордер закрылся быстрее по стопу,чем по профиту  -  выставить рыночный ордер по цене открытия ордера закрывшегося по стопу.

Данный метод позволяет выявить свечи по ценам  открытия которых позже  нужно выставлять рыночные ордера.....Но для этого я должен выставлять рыночные

ордера с большим стопом и маленьким профитам  НА ОТКРЫТИИ КАЖДОЙ СВЕЧИ.

А выставлять ордера на открытии каждой свечи в реальной торговле мне не нужно.

Первое что приходит в голову

- Открывать ордера на открытии каждой свечи на демосчете к графику которого будет прикреплен один советник.

- А на реальном счете к графику которого будет прикреплен другой  советник открывать только ордера по вышеописанным условиям.

Но торговать на двух счетах и на двух советниках - как мне кажется,тоже не самый удобный и оптимальный вариант.Хотелось бы торговать на одном счете и на одном советнике.

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

Спасибо.

 
solnce600:

Большое спасибо за оперативную помощь.

Буду Вам так же ооочень признателен если подкинете мне идею по поводу.....

Моя стратегия очень простая

.- Если цена от начала свечи ( iOpen (Symbol (),0,0) прошла вверх(вниз) большее расстояние(300 п.) быстрее чем меньшее  расстояние(10 п.) в противоположную сторону

-То после того как цена развернется и пойдет в противоположную сторону, по цене свечи ( iOpen (Symbol (),0,0) на открытии  каждой свечи открывать рыночные ордера.

Для реализации этого замысла первое что приходит  в голову

1.По цене открытия каждой свечи выставлять рыночный ордер с большим стопом и маленьким профитом.

2.Если ордер закрылся быстрее по стопу,чем по профиту  -  выставить рыночный ордер по цене открытия ордера закрывшегося по стопу.

Данный метод позволяет выявить свечи по ценам  открытия которых позже  нужно выставлять рыночные ордера.....Но для этого я должен выставлять рыночные

ордера с большим стопом и маленьким профитам  НА ОТКРЫТИИ КАЖДОЙ СВЕЧИ.

А выставлять ордера на открытии каждой свечи в реальной торговле мне не нужно.

Первое что приходит в голову

- Открывать ордера на открытии каждой свечи на демосчете к графику которого будет прикреплен один советник.

- А на реальном счете к графику которого будет прикреплен другой  советник открывать только ордера по вышеописанным условиям.

Но торговать на двух счетах и на двух советниках - как мне кажется,тоже не самый удобный и оптимальный вариант.Хотелось бы торговать на одном счете и на одном советнике.

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

Спасибо.

Ну, конечно, Вы тут нагородили так, как будто заметили всё такое наяву, в чём сомневаюсь! Не разбираясь досконально в Вашей надумке, предлагаю Вам попробовать, предварительно отслеживая свечи в условиях, и, если эти условия совпадают с Вашими, выставлять отложки на желаемых дистанциях от открытия нулевой свечи, а выставление стопов и профитов производите, модифицируя сразу после выставления, применяя таким же образом другую функцию Кима по определению данных последнего выставленного ордера! Выстройте внимательно свою логику, экспериментируйте и дерзайте! Удачи!