это тут должно быть обращение? И как правильно это сделать. Или эта команда не нуждается в функции 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).
Перед отправкой торгового запроса на сервер у вас должны быть уже подсчитаны цены СтопЛосс и ТейкПрофит. Они у вас, как я вижу, хранятся в переменных, соответственно sl и tp
Вот и запустите функцию, вставив в неё имена ваших переменных:
Она вам их скорректирует, если что...
А уже после вызова этой функции можете вызывать функцию открытия позиции
Использую функция PriceOpenNearPos () от KimIV. Заметил, чтоиногдатеряетсяближайшая позиция и используется другаяпозиция. Поэтомуя сделалкоддля теста где в журнале можно увидеть, как теряетсяближайшая позиция. Пожалуйста, проверьтепочемуэто происходит.
В соответствии с условиями, позиции не должны перекрывать друг друга но при запуске тестера видно что позиции перекрываются. (usdjpy 5m).
Проверил... в тестере... Всё хорошо. Покажите сами, как позиции теряются. Или подробнее поясните, что именно вы называетет потерей позиций.
Во вложении готовый для тестрования советник со всеми дополнительными функциями.
Смотрим приложение. В соответствии с условиями, позиции не должны перекрывать друг друга, но в терминале видно что 3 и 9 позиции открыти по одной и той же цене (так же 4, 6, 8). Дальше смотрим лог фаили, видно что в какое-то момент теряется позиция 98.179 и появляется другая - 98.301. Поэтому и позиции перекрываются.
Смотрим приложение. В соответствии с условиями, позиции не должны перекрывать друг друга, но в терминале видно что 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);
}
Игорь, а где-то есть выложенные ваши новые библиотеки, с новыми вашими функциями или с внесёнными поправками в некоторые ваши функции?
Другими словами - обновлённые библиотеки с уже внесёнными поправками и дополнениями...
Выложенных пока нет... всё как-то-не досуг.. А так-то да... я постоянно что-нибудь да в них подправляю. И новых написал штук 30, а то и больше. Выкладываю здесь потиху, когда есть время и желание)))
ЗЫ. Могу на мыло отправить все либры, as is, а то если опубликовывать, надо описание готовить или хотя бы перечень и назначение функций указать...
Выложенных пока нет... всё как-то-не досуг.. А так-то да... я постоянно что-нибудь да в них подправляю. И новых написал штук 30, а то и больше. Выкладываю здесь потиху, когда есть время и желание)))
ЗЫ. Могу на мыло отправить все либры, as is, а то если опубликовывать, надо описание готовить или хотя бы перечень и назначение функций указать...
Во... эт интересно будет поковырять :) Я в личку мыльце положу.
Здравствуйте, коллеги, я пока изучаю коды, не хорошо могу разобрать тонкости и в некотором затруднении.
Как я понимаю, надо сделать обращение к этой функции для коррекции параметров перед выставлением ордера.
есть такая строка на открытие ордера:
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
Вот и запустите функцию, вставив в неё имена ваших переменных:
Она вам их скорректирует, если что...
А уже после вызова этой функции можете вызывать функцию открытия позиции
Добрый день.
Использую функция PriceOpenNearPos () от KimIV. Заметил, что иногда теряется ближайшая позиция и используется другая позиция. Поэтому я сделал код для теста где в журнале можно увидеть, как теряется ближайшая позиция. Пожалуйста, проверьте почему это происходит.
В соответствии с условиями, позиции не должны перекрывать друг друга но при запуске тестера видно что позиции перекрываются. (usdjpy 5m).
Перед отправкой торгового запроса на сервер у вас должны быть уже подсчитаны цены СтопЛосс и ТейкПрофит. Они у вас, как я вижу, хранятся в переменных, соответственно sl и tp
Вот и запустите функцию, вставив в неё имена ваших переменных:
Она вам их скорректирует, если что...
А уже после вызова этой функции можете вызывать функцию открытия позиции
Спасибо, разобрался. :)
Добрый день.
Использую функция PriceOpenNearPos () от KimIV. Заметил, что иногда теряется ближайшая позиция и используется другая позиция. Поэтому я сделал код для теста где в журнале можно увидеть, как теряется ближайшая позиция. Пожалуйста, проверьте почему это происходит.
В соответствии с условиями, позиции не должны перекрывать друг друга но при запуске тестера видно что позиции перекрываются. (usdjpy 5m).
Проверил... в тестере... Всё хорошо. Покажите сами, как позиции теряются. Или подробнее поясните, что именно вы называетет потерей позиций.
Во вложении готовый для тестрования советник со всеми дополнительными функциями.
Смотрим приложение. В соответствии с условиями, позиции не должны перекрывать друг друга, но в терминале видно что 3 и 9 позиции открыти по одной и той же цене (так же 4, 6, 8). Дальше смотрим лог фаили, видно что в какое-то момент теряется позиция 98.179 и появляется другая - 98.301. Поэтому и позиции перекрываются.
Смотрим приложение. В соответствии с условиями, позиции не должны перекрывать друг друга, но в терминале видно что 3 и 9 позиции открыти по одной и той же цене (так же 4, 6, 8). Дальше смотрим лог фаили, видно что в какое-то момент теряется позиция 98.179 и появляется другая - 98.301. Поэтому и позиции перекрываются.
Благодарю за Ваш код, предоставленные материалы и терпение!
Исправил функцию. Вот новая версия:
Вот как она теперь работает... перекрытий нет
Благодарю за Ваш код, предоставленные материалы и терпение!
Исправил функцию. Вот новая версия:
Вот как она теперь работает... перекрытий нет
Спасибо, все работает ! :)
Исправил функцию. Вот новая версия:
Игорь, а где-то есть выложенные ваши новые библиотеки, с новыми вашими функциями или с внесёнными поправками в некоторые ваши функции?
Другими словами - обновлённые библиотеки с уже внесёнными поправками и дополнениями...
Игорь, а где-то есть выложенные ваши новые библиотеки, с новыми вашими функциями или с внесёнными поправками в некоторые ваши функции?
Другими словами - обновлённые библиотеки с уже внесёнными поправками и дополнениями...
Выложенных пока нет... всё как-то-не досуг.. А так-то да... я постоянно что-нибудь да в них подправляю. И новых написал штук 30, а то и больше. Выкладываю здесь потиху, когда есть время и желание)))
ЗЫ. Могу на мыло отправить все либры, as is, а то если опубликовывать, надо описание готовить или хотя бы перечень и назначение функций указать...
Выложенных пока нет... всё как-то-не досуг.. А так-то да... я постоянно что-нибудь да в них подправляю. И новых написал штук 30, а то и больше. Выкладываю здесь потиху, когда есть время и желание)))
ЗЫ. Могу на мыло отправить все либры, as is, а то если опубликовывать, надо описание готовить или хотя бы перечень и назначение функций указать...