В архиве два индикатора и советник над которым работаю(test-cifr).Индикаторы сами по себе пашут,а в советник вставить не могу((.Цель советника только вывод значений.Помогите пожалуйста понять почему не вставляется и как вставить
Как можно вывести на графике надпись по текущему инструменту Прибыль/убыток открытых ордеров.
Сложно осуществлять проверку в эксперте, открывал ли он позиции или нет (включение/выключение терминала) и чтобы подхватывал последний объем лота до закрытия терминала.
Если прошедших сделок то через функцию orderprofit и дальше суммировать всю историю сделок.А так в окне торговли вроде есть все.
Интересно ,а по моему вопросу есть у кого ответы?
Копируй весь код в советник
как-то так
//+------------------------------------------------------------------+//| Xrust.mq4 |//| Copyright 2013, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2013, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"externint TimeFrame=0;//Если=0, то текушийexternstring FrApNam="Ap";//Имя линии соотв.Фракталу вверхexternstring FrDnNam="Dn";//Имя линии соотв.Фракталу внизexterncolor ClAp=Blue;//Цвет линии соотв.Фракталу вверхexterncolor ClDn=Red;//Цвет линии соотв.Фракталу вниз//-----------------------------------------------------------------------------+double FrApPrise,FrDnPrise;
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----if(TimeFrame==0){TimeFrame=Period();}
IndicatorShortName("Factal_Level_Xrust"+TimeFrame);
FrApNam=StringConcatenate(FrApNam,TimeFrame);
FrDnNam=StringConcatenate(FrDnNam,TimeFrame);
//----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----ObjectDelete(FrDnNam);
ObjectDelete(FrApNam);
Comment(" ");
//----return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
//----
LineAp();
LineDn();
int diap=MathRound((FrApPrise-FrDnPrise)/Point);
Comment("\n"," LineDn = ",FrDnPrise,
"\n", " LineAp = ",FrApPrise,
"\n"," diap = ",diap );
//----return(0);
}
//+------------------------------------------------------------------+//-----------------------------------------------------------------------------+// Ищет горизонтальную линию по имени перерисовывает если изменилась цена | //-----------------------------------------------------------------------------+void LineDn(){
FrDnPrise=0;
double FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
//Comment(FrPrise);if(ObjectFind(FrDnNam)==0){
if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrDnPrise=FrPrise;
ObjectDelete(FrDnNam);
SetHLine(ClDn,FrDnNam,FrDnPrise,0,1);
WindowRedraw();
return;}
//-----------------------------------------------------------------------------+// Ищет горизонтальную линию по имени перерисовывает если изменилась цена | //-----------------------------------------------------------------------------+void LineAp(){
FrApPrise=0;
double FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
if(ObjectFind(FrApNam)==0){
if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrApPrise=FrPrise;
ObjectDelete(FrApNam);
SetHLine(ClAp,FrApNam,FrApPrise,0,1);
WindowRedraw();
return;}
//-----------------------------------------------------------------------------+ // Киму Респект и уважуха !!! | //+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.10.2006 |//| Описание : Поиск ближайшего фрактала. Возвращает ценовой уровень. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий ТФ) |//| mode - тип фрактала (MODE_LOWER|MODE_UPPER) |//+----------------------------------------------------------------------------+double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
if (sy=="" || sy=="0") sy=Symbol();
double f=0;
int d=MarketInfo(sy, MODE_DIGITS), s;
if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;
for (s=2; s<100; s++) {
f=iFractals(sy, tf, mode, s);
if (f!=0) return(NormalizeDouble(f, d));
}
Print("FindNearFractal(): Фрактал не найден");
return(0);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 30.03.2008 |//| Описание : Установка объекта OBJ_HLINE горизонтальная линия |//+----------------------------------------------------------------------------+//| Параметры: |//| cl - цвет линии |//| nm - наименование ("" - время открытия текущего бара) |//| p1 - ценовой уровень (0 - Bid) |//| st - стиль линии (0 - простая линия) |//| wd - ширина линии (0 - по умолчанию) |//+----------------------------------------------------------------------------+void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (p1<=0) p1=Bid;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0);
ObjectSet(nm, OBJPROP_PRICE1, p1);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_STYLE , st);
ObjectSet(nm, OBJPROP_WIDTH , wd);
}
или
с помощью функций
intObjectFind( string name) //Поиск объекта с указанным именемdouble ObjectGet( string name, int prop_id) //Функция возвращает значение указанного свойства объекта
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Cпасибо и вам здравия желаю artmedia70
Здравствуйте.
Как можно вывести на графике надпись по текущему инструменту Прибыль/убыток открытых ордеров.
Сложно осуществлять проверку в эксперте, открывал ли он позиции или нет (включение/выключение терминала) и чтобы подхватывал последний объем лота до закрытия терминала.
Спасибо.
Драсти, нет знающих??
Если прошедших сделок то через функцию orderprofit и дальше суммировать всю историю сделок.А так в окне торговли вроде есть все.
Интересно ,а по моему вопросу есть у кого ответы?
В том коде есть один недочёт. Вот, выдернул из контекста:
Все дело в том, что выражение
Следовательно и значение лота округлится до одного знака после запятой.
Хотя, почитайте, мож поможет.
Очень надеюсь на это. Благодарю. Проштудирую указанную ветку, для закрепления данного момента. Не хочется оставлять пробелы.
Драсти, нет знающих??
Ну как я понимаю всё элементарно. Достаточно элементарных знаний.
1. Делаете перебор ордеров.
2. Проверяете ордер открыт, т.е. время закрытия ордера отноительно нуля.
3. Если ордер открыт выводите его данные нужны, прибыль, тип, и тд..
Если прошедших сделок то через функцию orderprofit и дальше суммировать всю историю сделок.А так в окне торговли вроде есть все.
Интересно ,а по моему вопросу есть у кого ответы?
Копируй весь код в советник
как-то так
или
с помощью функций
ищем обьект . Иначе никак.Да нет,он вставляется но значение выдает абсолютно с потолка
Попробуйте убрать настройки индикаторов в коде советника. Тогда настройки будут браться из кода прописанного в индикаторе.
У меня тоже были левые значения убрал настройки из кода и нормально.