Ответить
04.09.2013, 07:48
Регистрация: 12.06.2012 / Адрес: Россия / Сообщений: 242
Поблагодарили 3,254 раз(а) / Репутация: 3291
Нет, не подходит, нужно закладывать формулы расчета в Excel , выводится только результат на график.
04.09.2013, 08:40
Регистрация: 13.03.2009 / Сообщений: 2,329
Поблагодарили 1,949 раз(а) / Репутация: 2026
Нет, не подходит, нужно закладывать формулы расчета в Excel , выводится только результат на график.
В ячейках файла в таком случае находятся не результат, а формулы. При открытии файла будут извлечены именно они. Результат считает и отображает сам excel, в файле результатов нет.
Я посоветую эти формулы внести в код программы на mql, тогда excel вообще не нужен будет.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
04.09.2013, 08:41
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Нет, не подходит, нужно закладывать формулы расчета в Excel , выводится только результат на график.
Ну тогда напиши программку на VB. Язык встроенный в Excel, достаточно богат для таких задач. Пусть он вычисляет и записывает данные в csv а оттуда возьмёт МТ своими средствами.
Ну или, я-бы попробовал такую связку:
В книге Excel все вычисления а в файле csv (он со значком Excel и по умолчанию в нём открывается) поставить ссылку на результат вычисления, =книга,страница,ячейка. Может прокатит...

ps: ну вот, Андрей развеял мои надежды. Да, этого я не учёл. Тогда остаётся писать на VB.

Последний раз редактировалось AlexeyVik; 04.09.2013 в 08:43.
eevviill , Ugar , Юла 
04.09.2013, 09:29
Регистрация: 13.03.2009 / Сообщений: 2,329
Поблагодарили 1,949 раз(а) / Репутация: 2026
Ну тогда напиши программку на VB. Язык встроенный в Excel, достаточно богат для таких задач. Пусть он вычисляет и записывает данные в csv а оттуда возьмёт МТ своими средствами.
Ну или, я-бы попробовал такую связку:
В книге Excel все вычисления а в файле csv (он со значком Excel и по умолчанию в нём открывается) поставить ссылку на результат вычисления, =книга,страница,ячейка. Может прокатит...

ps: ну вот, Андрей развеял мои надежды. Да, этого я не учёл. Тогда остаётся писать на VB.
Практически всё что считается в excel, можно посчитать в mql.
Но если мы не ищем лёгких путей, то можно написать прогу на VB.
А ещё можно программно запустить и открыть файл в экселе, снять скриншот с экрана, из графического файла распознать текст, преобразовать в дробные значения...
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
04.09.2013, 12:38
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Практически всё что считается в excel, можно посчитать в mql.
Но если мы не ищем лёгких путей, то можно написать прогу на VB.
А ещё можно программно запустить и открыть файл в экселе, снять скриншот с экрана, из графического файла распознать текст, преобразовать в дробные значения...
Надеюсь это беззлобная подъё***
Не думаешь-же ты что реально так придёт кому-то в голову сделать...
В Excel есть волшебная клавиша F9 встаёшь на формулу нажимаешь на неё и вместо формулы результат вычисления. А программно перевести все результаты формул в числа совсем плёвое дело.
Ну не зря ведь человек хочет из Excel перетащить на график, значит есть тому причина. И нисколько этот вариант не сложней чем считать в MQL.
Юла 
04.09.2013, 13:14
Регистрация: 13.03.2009 / Сообщений: 2,329
Поблагодарили 1,949 раз(а) / Репутация: 2026
Надеюсь это беззлобная подъё***
Не думаешь-же ты что реально так придёт кому-то в голову сделать...
В Excel есть волшебная клавиша F9 встаёшь на формулу нажимаешь на неё и вместо формулы результат вычисления. А программно перевести все результаты формул в числа совсем плёвое дело.
Ну не зря ведь человек хочет из Excel перетащить на график, значит есть тому причина. И нисколько этот вариант не сложней чем считать в MQL.
Да, никакой злобы. Это конечно шутка. А если кроме шуток, то можно вообще не использовать промежуточный CSV файл. Можно используя VB и виндовые библиотеки, через оперативку транслировать прямо в программу на MQL.
Только всё это наверное не для уроков по MQL. Вернее к урокам по MQL придётся прибавить уроки по VB.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
04.09.2013, 17:07
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Да, никакой злобы. Это конечно шутка. А если кроме шуток, то можно вообще не использовать промежуточный CSV файл. Можно используя VB и виндовые библиотеки, через оперативку транслировать прямо в программу на MQL.
Только всё это наверное не для уроков по MQL. Вернее к урокам по MQL придётся прибавить уроки по VB.
Ага... А потом С++, делфи, фортран... Ну и ещё чего нибудь.
А в моих словах главное было что подъё***, а что она беззлобная я и так понимал.
Юла 
05.09.2013, 06:16
Регистрация: 12.06.2012 / Адрес: Россия / Сообщений: 242
Поблагодарили 3,254 раз(а) / Репутация: 3291
А у меня и без вас все получилось, сделала скрипт. В помощи не нуждаюсь.
05.09.2013, 06:31
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
А у меня и без вас все получилось, сделала скрипт. В помощи не нуждаюсь.
Молодца.
08.10.2013, 00:27
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 596
Поблагодарили 708 раз(а) / Репутация: 711
Я никого лошарами не обзывал и не собираюсь учить кого то кодить. Уметь самому и уметь учить, это разные навыки. То что я умею писать программы ещё не означает что смогу кого то этому научить. И наоборот. Олимпийский чемпион завоёвывает золотые медали, а его тренер вряд ли сможет то же самое. Зато он смог обучить, натренеровать чемпиона. По этому, учит тот кто сам не может, это не обзывательство, а нормальная реальность.
Просто я подумал что если начинать с расширений файлов то до программирования вы долго не доберётесь. А между тем, начинающему программисту не терпится написать первую программу, пусть бестолковую, но работающую.
Ладно, прошу прощения что влез. Я уже говорил что учить не умею. Значит влез не в своё дело.
при всем уважении к вам как к программисту, хочу поспорить на счет олимпийских чемпионов и тренеров - в 99% случаев бывшие чемпионы становятся тренерами, ибо кто научит спорстсмена лучше , чем сам спортсмен прошедший эту школу с низу до верху, он досконально знает все препятствия на пути, ибо нет лучшего учителя чем жизнь...аналогично если начальник прошел путь от рабочего, он гораздо лучше во всем разбирается, чем выпускник ВУЗа.....
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
10.10.2013, 08:01
Аватар для Dom
Dom Dom на форуме
Регистрация: 09.03.2009 / Сообщений: 1,033
Поблагодарили 2,481 раз(а) / Репутация: 2480
Здравствуйте!Уважаемые программисты!Помогите пожалуйста!Я часто использую пользовательские функции Кирилла.У меня выставлено два противоположных ордера,один из них закрылся по TakeProfit,мне надо удалить второй.Я делаю так:
Код:
 if(isCloseLastPosByTake(NULL,-1,Magic)==true){
               if(ExistPositions(NULL,-1,Magic)==false){                                                         
       if(NumberOfOrders(NULL,-1,Magic)==1){
           DeleteOrders(NULL,-1,Magic);
           return(0);
      }}}
он не удаляется.Первая функция это:"Возвращает флаг закрытия последней позиции по тейку."Что я не так делаю?
И второй вопрос.Советник работает нормально,неделю,две,затем бах на спокойном рынке открывает позицию,противоположную той,которая запрограммирована.Я не знаю,как с этим бороться.
10.10.2013, 08:13
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Здравствуйте!Уважаемые программисты!Помогите пожалуйста!Я часто использую пользовательские функции Кирилла.У меня выставлено два противоположных ордера,один из них закрылся по TakeProfit,мне надо удалить второй.Я делаю так:
Код:
 if(isCloseLastPosByTake(NULL,-1,Magic)==true){
               if(ExistPositions(NULL,-1,Magic)==false){                                                         
       if(NumberOfOrders(NULL,-1,Magic)==1){
           DeleteOrders(NULL,-1,Magic);
           return(0);
      }}}
он не удаляется.Первая функция это:"Возвращает флаг закрытия последней позиции по тейку."Что я не так делаю?
И второй вопрос.Советник работает нормально,неделю,две,затем бах на спокойном рынке открывает позицию,противоположную той,которая запрограммирована.Я не знаю,как с этим бороться.
Дом если бы это был не ты, то я бы почти нагрубил бы. Потому что есть соответсвующая ветка.
Противоположные это 2 отложки?
Рыночные?
Я бы решал это так.
Искал бы последний закрытый ордер. И если он закрытый по ТП, то
брал с него данные(бай или сел, если надо то лоты).
И потом бы сравнивал с последним открытым ордером.
Твоя проблема навреное в том. Глянь где есть
PHP код:
OrderClosePrice()==OrderTakeProfit() 
нормализируй их
PHP код:
NormalizeDouble(OrderClosePrice(),Digits)==NormalizeDouble(OrderTakeProfit(),Digits
Ах да. Я кажется понял. Если ты на ЕСН это делаешь, то там редко когда цена закрытия равна ТП или СЛ. Так что последний закрытый ордер прийдётся искать по коментарию к ордеру. Иксать буквы tp
Короче покажи функцию isCloseLastPosByTake

Последний раз редактировалось eevviill; 10.10.2013 в 08:17.
Dom 
10.10.2013, 10:36
Аватар для _SERG_
_SERG_ _SERG_ на форуме Активный участник
Регистрация: 21.07.2009 / Сообщений: 264
Поблагодарили 82 раз(а) / Репутация: 82
Здравствуйте!Уважаемые программисты!Помогите пожалуйста!Я часто использую пользовательские функции Кирилла.У меня выставлено два противоположных ордера,один из них закрылся по TakeProfit,мне надо удалить второй.Я делаю так:
Код:
 if(isCloseLastPosByTake(NULL,-1,Magic)==true){
               if(ExistPositions(NULL,-1,Magic)==false){                                                         
       if(NumberOfOrders(NULL,-1,Magic)==1){
           DeleteOrders(NULL,-1,Magic);
           return(0);
      }}}
он не удаляется.Первая функция это:"Возвращает флаг закрытия последней позиции по тейку."Что я не так делаю?
И второй вопрос.Советник работает нормально,неделю,две,затем бах на спокойном рынке открывает позицию,противоположную той,которая запрограммирована.Я не знаю,как с этим бороться.
Про второй вопрос.

У меня такая ситуация встречалась, когда якобы случайно открывался ордер.
Пришлось проверять все переменные отвечающие за открытие позиций, и как они обновляются в советнике.
Dom , eevviill 
10.10.2013, 11:44
Аватар для Dom
Dom Dom на форуме
Регистрация: 09.03.2009 / Сообщений: 1,033
Поблагодарили 2,481 раз(а) / Репутация: 2480
Дом если бы это был не ты, то я бы почти нагрубил бы. Потому что есть соответсвующая ветка.
Противоположные это 2 отложки?
Рыночные?
Я бы решал это так.
Искал бы последний закрытый ордер. И если он закрытый по ТП, то
брал с него данные(бай или сел, если надо то лоты).
И потом бы сравнивал с последним открытым ордером.
Твоя проблема навреное в том. Глянь где есть
PHP код:
OrderClosePrice()==OrderTakeProfit() 
нормализируй их
PHP код:
NormalizeDouble(OrderClosePrice(),Digits)==NormalizeDouble(OrderTakeProfit(),Digits
Ах да. Я кажется понял. Если ты на ЕСН это делаешь, то там редко когда цена закрытия равна ТП или СЛ. Так что последний закрытый ордер прийдётся искать по коментарию к ордеру. Иксать буквы tp
Короче покажи функцию isCloseLastPosByTake
Извините,что не в этой ветке,голова уже не соображает.Спасибо,что ответили,буду разбираться.Функция:
Код:
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
}
10.10.2013, 12:00
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Извините,что не в этой ветке,голова уже не соображает.Спасибо,что ответили,буду разбираться.Функция:
...
Ну значит так как я говорил. Потом сделаю проверку по коментарию.
Dom 
10.10.2013, 12:55
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Ну значит так как я говорил. Потом сделаю проверку по коментарию.

Скрытый текст

PHP код:
bool isCloseLastPosByTake(string sy=""int op=-1int mn=-1
{
int time_close;
int latest_closed_order;
for(
int h=OrdersHistoryTotal()-1;h>=0;h--)
{
if(
OrderSelect(h,SELECT_BY_POS,MODE_HISTORY))
{
if((
OrderSymbol()==sy || sy=="") && (OrderType()==op || op==-1) && (OrderMagicNumber()==mn || mn==-1))
 {
if(
OrderCloseTime()>time_close)
{
if(
OrderType()==OP_BUY || OrderType()==OP_SELL)
{
time_close=OrderCloseTime();
latest_closed_order=h;
}
}
}

}
 
 
 if(
OrderSelect(latest_closed_order,SELECT_BY_POS,MODE_HISTORY))
 {
 if(
StringFind(OrderComment(),"[tp]",0)!=-1)
 return(
true);
 }

  
  return(
False);

[свернуть]

Последний раз редактировалось eevviill; 10.10.2013 в 13:45.
Dom 
10.10.2013, 17:28
Аватар для Dom
Dom Dom на форуме
Регистрация: 09.03.2009 / Сообщений: 1,033
Поблагодарили 2,481 раз(а) / Репутация: 2480

Скрытый текст

PHP код:
bool isCloseLastPosByTake(string sy=""int op=-1int mn=-1
{
int time_close;
int latest_closed_order;
for(
int h=OrdersHistoryTotal()-1;h>=0;h--)
{
if(
OrderSelect(h,SELECT_BY_POS,MODE_HISTORY))
{
if((
OrderSymbol()==sy || sy=="") && (OrderType()==op || op==-1) && (OrderMagicNumber()==mn || mn==-1))
 {
if(
OrderCloseTime()>time_close)
{
if(
OrderType()==OP_BUY || OrderType()==OP_SELL)
{
time_close=OrderCloseTime();
latest_closed_order=h;
}
}
}

}
 
 
 if(
OrderSelect(latest_closed_order,SELECT_BY_POS,MODE_HISTORY))
 {
 if(
StringFind(OrderComment(),"[tp]",0)!=-1)
 return(
true);
 }
 
 
  return(
False);

[свернуть]
eevviill!Нет слов.Огромное спасибо!Мне бы долго пришлось с этим разбираться.Премного благодарен!!!
10.10.2013, 17:46
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
eevviill!Нет слов.Огромное спасибо!Мне бы долго пришлось с этим разбираться.Премного благодарен!!!
Пожалуйста. Но мне Гамбер(надеюсь правильно на руский транслировал) замечание сделал как лучше. Не порядковый номер записывать, а тикет.
PHP код:
latest_closed_order=OrderTicket();
}
}
}

}
 
 
 if(
OrderSelect(latest_closed_order,SELECT_BY_TICKET,MODE_HISTORY)) 
Dom 
10.10.2013, 23:38
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 596
Поблагодарили 708 раз(а) / Репутация: 711
1.3) {} (квадратные скобки) - применяются для начала фунции и конца.
1.4) () (скобки) - в них(не всегда) записываются свойства операции.
не вытерпел, извините, при всем уважении есть одна неточность, думаю для тех кто начинает изучать язык нельзя запоминать неверные значения...незнаю ваши слова или цитата от куда то, в любом случае это неверно, потому что еще из математики известно:
скобки [ ] называются квадратными, ибо они и похожи на квадрат,
скобки { } называются фигурными, потому что они реально фигурные, а не квадратные....надеюсь без обид, просто переживаю за тех кто запоминает неверные понятия...
а вот скобки ( ) - обычные скобки!
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 10.10.2013 в 23:57.
11.10.2013, 05:18
Аватар для Dom
Dom Dom на форуме
Регистрация: 09.03.2009 / Сообщений: 1,033
Поблагодарили 2,481 раз(а) / Репутация: 2480
Пожалуйста. Но мне Гамбер(надеюсь правильно на руский транслировал) замечание сделал как лучше. Не порядковый номер записывать, а тикет.
PHP код:
latest_closed_order=OrderTicket();
}
}
}

}
 
 
 if(
OrderSelect(latest_closed_order,SELECT_BY_TICKET,MODE_HISTORY)) 
Понял!Спасибо!
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 10:15. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO