Полезные функции от KimIV - страница 119

 
M2012K:

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

Как я понимаю, надо сделать обращение к этой функции для коррекции параметров перед выставлением ордера.

есть такая строка на открытие ордера:

 if(buy == true && Open[0]>UpTr  && Trade) {

 buy=OrderSend(Symbol(),OP_BUYSTOP,LOT(),NormalizeDouble(op,Digits),slippage,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"T",Magic,0,MediumBlue);

это тут должно быть обращение? И как правильно это сделать. Или эта команда не нуждается в функции CorrectingPrice()?

Заранее благодарю. 

Перед отправкой торгового запроса на сервер у вас должны быть уже подсчитаны цены СтопЛосс и ТейкПрофит. Они у вас, как я вижу, хранятся в переменных, соответственно sl и tp    

Вот и запустите функцию, вставив в неё имена ваших переменных:

CorrectingPrice(Symbol(), OP_BUY, Ask, sl, tp);

Она вам их скорректирует, если что...

А уже после вызова этой функции можете вызывать функцию открытия позиции

 

Добрый день.

Использую функция PriceOpenNearPos () от KimIV. Заметил, что иногда  теряется ближайшая позиция и используется другая позиция. Поэтому я сделал код для теста где в журнале можно увидеть, как теряется ближайшая позиция. Пожалуйста, проверьте почему это происходит.

int    magic    = 665544;

bool flag = false;

 

int start()

  {

//----

if((PriceOpenNearPos(NULL, OP_BUY, magic) != 0

&& PriceOpenNearPos(NULL, OP_BUY, magic)- 0.1 <  Bid

&& PriceOpenNearPos(NULL, OP_BUY, magic)+ 0.1 > Bid))

flag = true;

else

flag = false;

 

Print("::::::::::::::::::::::::: flag = ",  flag );

Print("PriceOpenNearPos(NULL, OP_BUY, magic)= ", PriceOpenNearPos(NULL, OP_BUY, magic));

 

if(!flag)

OpenPosition(NULL, OP_BUY, 0.1,0,0,magic);  

//----

   return(0);

  }

В соответствии с условиями, позиции не должны перекрывать друг друга но при запуске тестера видно что позиции перекрываются. (usdjpy 5m).

 
artmedia70:

Перед отправкой торгового запроса на сервер у вас должны быть уже подсчитаны цены СтопЛосс и ТейкПрофит. Они у вас, как я вижу, хранятся в переменных, соответственно sl и tp    

Вот и запустите функцию, вставив в неё имена ваших переменных:

Она вам их скорректирует, если что...

А уже после вызова этой функции можете вызывать функцию открытия позиции


Спасибо, разобрался. :)
 
abeiks:

Добрый день.

Использую функция PriceOpenNearPos () от KimIV. Заметил, что иногда  теряется ближайшая позиция и используется другая позиция. Поэтому я сделал код для теста где в журнале можно увидеть, как теряется ближайшая позиция. Пожалуйста, проверьте почему это происходит.

В соответствии с условиями, позиции не должны перекрывать друг друга но при запуске тестера видно что позиции перекрываются. (usdjpy 5m).


Проверил... в тестере... Всё хорошо. Покажите сами, как позиции теряются. Или подробнее поясните, что именно вы называетет потерей позиций.

Во вложении готовый для тестрования советник со всеми дополнительными функциями. 

Файлы:
 

Смотрим  приложение. В соответствии с условиями, позиции не должны перекрывать друг друга, но в терминале видно что 3 и 9 позиции открыти по одной и той же цене (так же 4, 6, 8). Дальше смотрим лог фаили, видно что в какое-то момент теряется позиция 98.179 и появляется другая - 98.301. Поэтому и позиции перекрываются.

 
abeiks:

Смотрим  приложение. В соответствии с условиями, позиции не должны перекрывать друг друга, но в терминале видно что 3 и 9 позиции открыти по одной и той же цене (так же 4, 6, 8). Дальше смотрим лог фаили, видно что в какое-то момент теряется позиция 98.179 и появляется другая - 98.301. Поэтому и позиции перекрываются.


Благодарю за Ваш код, предоставленные материалы и терпение!

Исправил функцию. Вот новая версия:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.07.2013                                                     |
//|  Описание : Возвращает цену открытия ближайшей к рынку позиции.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double PriceOpenNearPos(string sy="", int op=-1, int mn=-1) {
  double mi, oop=0, p;
  int    i, k=OrdersTotal(), pp=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (OrderType()==OP_BUY)  mi=MarketInfo(OrderSymbol(), MODE_ASK);
            if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
            p=MarketInfo(OrderSymbol(), MODE_POINT);
            if (pp<0 || pp>MathAbs(OrderOpenPrice()-mi)/p) {
              pp=MathAbs(OrderOpenPrice()-mi)/p;
              oop=OrderOpenPrice();
            }
          }
        }
      }
    }
  }
  return(oop);
}

 Вот как она теперь работает... перекрытий нет

 

Файлы:
 
KimIV:


Благодарю за Ваш код, предоставленные материалы и терпение!

Исправил функцию. Вот новая версия:

 Вот как она теперь работает... перекрытий нет

 


Спасибо, все работает ! :)
 
KimIV:


Исправил функцию. Вот новая версия:

Игорь, а где-то есть выложенные ваши новые библиотеки, с новыми вашими функциями или с внесёнными поправками в некоторые ваши функции?

Другими словами - обновлённые библиотеки с уже внесёнными поправками и дополнениями...

 
artmedia70:

Игорь, а где-то есть выложенные ваши новые библиотеки, с новыми вашими функциями или с внесёнными поправками в некоторые ваши функции?

Другими словами - обновлённые библиотеки с уже внесёнными поправками и дополнениями...


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

ЗЫ. Могу на мыло отправить все либры, as is, а то если опубликовывать, надо описание готовить или хотя бы перечень и назначение функций указать... 

 
KimIV:


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

ЗЫ. Могу на мыло отправить все либры, as is, а то если опубликовывать, надо описание готовить или хотя бы перечень и назначение функций указать... 

Во... эт интересно будет поковырять :) Я в личку мыльце положу.