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

 

Всем привет!


Мой вопрос новичка.

У меня есть индикатор, который отображает на графике данные из внешних файлов. Вот мои вопросы:

1. Как открыть стандартный диалог выбора файла?

2. Как обойти ограничение на папки, из которых можно открыть файлы из кода (experts/files)?

3. Как сделать на графике элемент управления, нажав на который можно было бы отключить скрипт. Главный вопрос - как сделать ЭУ, ну например кнопку какую-нибудь или что-то еще, чтобы через нее взаимодействовать с пользователем)?


Спасибо!

 

Объясните нубу, в чем ошибка!

Делаю простой скрипт на демо в Финаме, что бы показывал цену Alert(BId);

Все работает, но почему-то выводит цену с 4 знаками после запятой, хотя котировки идут с 5 знаками на паре EURUSD. Так же расчеты iMA идут тоже с 4 знаками, а не с 5-ю.

Что делаю не правильно, подскажите????

 
Onesto:

Объясните нубу, в чем ошибка!

Делаю простой скрипт на демо в Финаме, что бы показывал цену Alert(BId);

Все работает, но почему-то выводит цену с 4 знаками после запятой, хотя котировки идут с 5 знаками на паре EURUSD. Так же расчеты iMA идут тоже с 4 знаками, а не с 5-ю.

Что делаю не правильно, подскажите????

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

Alert(DoubleToStr(Bid,Digits));

 
sanderz:

Всем привет!


Мой вопрос новичка.

У меня есть индикатор, который отображает на графике данные из внешних файлов. Вот мои вопросы:

1. Как открыть стандартный диалог выбора файла?

2. Как обойти ограничение на папки, из которых можно открыть файлы из кода (experts/files)?

3. Как сделать на графике элемент управления, нажав на который можно было бы отключить скрипт. Главный вопрос - как сделать ЭУ, ну например кнопку какую-нибудь или что-то еще, чтобы через нее взаимодействовать с пользователем)?


Спасибо!

1-2.Стандартный это какой? Хотя в любом случае по первым двум вопросам придется юзать WinAPI и/или внешнюю DLL.

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

Самое простое курить исходники, визуальных примочек в кодебазе полно.

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

1-2.Стандартный это какой? Хотя в любом случае по первым двум вопросам придется юзать WinAPI и/или внешнюю DLL.

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

Самое простое курить исходники, визуальных примочек в кодебазе полно.

Спс.
 
splxgf:

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

Alert(DoubleToStr(Bid,Digits));


Спасибо, теперь понятно.

А при расчетах в теле эксперта, данные идут с 5-ю или с 4-мя?

 
Onesto:


Спасибо, теперь понятно.

А при расчетах в теле эксперта, данные идут с 5-ю или с 4-мя?

Расчеты ведутся с нормальным количеством знаков, проверяется элементарно Alert(Bid*100000);
 

Уважаемые, я снова с вопросом:

double hc=(iHigh(NULL,0,1)-iClose(NULL,0,1));
double cl=(iClose(NULL,0,1)-iLow(NULL,0,1));

if((iClose(NULL,0,1)<iOpen(NULL,0,1))&&(hc>cl))

pre12=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,Ask+100*Point,"",0,0,CLR_NONE);


Такая незадача: позиции открываются по 17-40 раз в 1 минуту, хотя тестирую на 15 минутках-графиках. И, предполагается, что ордер должен открываться не чаще, чем 1 раз в 15 минут. Т.к. только тогда выполняется условие, что закрытие предыдущей свечи ниже её открытия.

Почему так?

 
NaVolne:

Уважаемые, я снова с вопросом:

if((iClose(NULL,15,1)<iOpen(NULL,15,1))&&(hc>cl))

pre12=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,Ask+100*Point,"",0,0,CLR_NONE);


Такая незадача: позиции открываются по 17-40 раз в 1 минуту, хотя тестирую на 15 минутках-графиках. И, предполагается, что ордер должен открываться не чаще, чем 1 раз в 15 минут. Т.к. только тогда выполняется условие, что закрытие предыдущей свечи ниже её открытия.

Почему так?


я полагаю, что бы ордер открывался раз в 15 минут, в начале

в области объявления переменных

double OpenBar=0; 

 

int start()
   {
    //Проверка на начало нового бара
    double CurOpenBar=iOpen(NULL,PERIOD_M15,0);  
    if (OpenBar==CurOpenBar) {return;} else {OpenBar=CurOpenBar;}
    //ваш код
   }


что то в таком роде...

а так ведь условие ваше выполняется на каждом тике, вот и ордер открывается на каждом тике...

Причина обращения: