Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 766

 
Vinin:
Вы уверены что ArraySetAsSeries() возвращает то что Вам надо. Или думаете то что нужно. Может до расчета и дело не доходит

Расчёт происходит, Alert никогда не срабатывает,  все вызовы  ArraySetAsSeries() возвращают True. Отображаются только последние бары в количестве BarsAtOnce, а дальше, после первого возврата из функции OnCalculate, терминал думает, что посчитаны все бары (в соответствии с журналом).

Решение простое - завести свою переменную, аналогичную prev_calculated, но однако, интересно, почему не работает штатная?

Эффект наблюдается на 711 и 745 версиях (других в наличии нет)

 
Vinin:
Похоже просто индикаторы кушают ресурсы. Расчетов стало больше. Хотя - ну не нужны они особо, но требуют
Закрыл все окна графиков кроме одного. Удалил все индикаторы. Перезапустил пустой терминал (без индикаторов и советников) и одним графиком. - Не помогает! Загрузка процессора та же - 29%.
 
logut:
мне input double lots = 0.01;
input int takeprofit = 100;
input int stoploss = 100;
 extern int magic = 123;
//----------------+
int start()
{


 


//---------------+


int ticket=OrderSend(Symbol(),OP_BUYLIMIT,lots,Ask,3,Ask +stoploss* Point, Ask + takeprofit* Point,NULL,123,120,CLR_NONE);






return(0);

нужна подсказка как написать советник с отложкой я в этом деле новичок месяц голову ломаю есть набросок
Советник реализует некую стратегию. Стратегия подразумевает условия входа в рынок и выхода из него. Поэтому, нельзя ставить вопрос: как написать советника для отложенных ордеров? Можно задать вопрос: как написать процедуру открытия отложенных ордеров? А дальше, отложенные ордера -  что это? Вот Вам и отвечают: отложенные ордера устанавливаются на некотором расстоянии от текущей цены. Поэтому в переменных команды/функции OrderSend() для отложенных ордеров нельзя ставить текущую цену (Ask/Bid). А надо ставить цену на некоем растоянии от текущей цены с учетом требований/ограничений Вашего Дилингового Центра
 
ikatsko:
Советник реализует некую стратегию. Стратегия подразумевает условия входа в рынок и выхода из него. Поэтому, нельзя ставить вопрос: как написать советника для отложенных ордеров? Можно задать вопрос: как написать процедуру открытия отложенных ордеров? А дальше, отложенные ордера -  что это? Вот Вам и отвечают: отложенные ордера устанавливаются на некотором расстоянии от текущей цены. Поэтому в переменных команды/функции OrderSend() для отложенных ордеров нельзя ставить текущую цену (Ask/Bid). А надо ставить цену на некоем растоянии от текущей цены с учетом требований/ограничений Вашего Дилингового Центра
я попробовал поставить PRICE_OPEN но как указать на какое растояние
 
logut:
я попробовал поставить PRICE_OPEN но как указать на какое растояние
Это и есть главный вопрос стратегии, Вашей стратегии, которую Вы хотите реализовать в виде советника. Например, есть текущая цена инструмента (например, EURUSD). По Вашей стратегии, например, предполагается, что если цена пойдет вверх на 20 пунктов, то (!) обязательно потом цена начнет снижаться. Поэтому Вы ставите отложенный ордер на расстоянии 20 пунктов от текущей цены. 
 
ikatsko:
Это и есть главный вопрос стратегии, Вашей стратегии, которую Вы хотите реализовать в виде советника. Например, есть текущая цена инструмента (например, EURUSD). По Вашей стратегии, например, предполагается, что если цена пойдет вверх на 20 пунктов, то (!) обязательно потом цена начнет снижаться. Поэтому Вы ставите отложенный ордер на расстоянии 20 пунктов от текущей цены. 

Молодец. Пять балов.

 
ikatsko:
Это и есть главный вопрос стратегии, Вашей стратегии, которую Вы хотите реализовать в виде советника. Например, есть текущая цена инструмента (например, EURUSD). По Вашей стратегии, например, предполагается, что если цена пойдет вверх на 20 пунктов, то (!) обязательно потом цена начнет снижаться. Поэтому Вы ставите отложенный ордер на расстоянии 20 пунктов от текущей цены. 

Ждите шквал вопросов. Что такое пункт, кто такой цена Ask, Bid, хто есть дилинговый центр, что значит стратегия ... короче - жуть... В конечном итоге, тыкнете в сцыль на Учебник.

 
logut:
мне input double lots = 0.01;
input int takeprofit = 100;
input int stoploss = 100;
 extern int magic = 123;
//----------------+
int start()
{


 


//---------------+


int ticket=OrderSend(Symbol(),OP_BUYLIMIT,lots,Ask,3,Ask +stoploss* Point, Ask + takeprofit* Point,NULL,123,120,CLR_NONE);






return(0);

нужна подсказка как написать советник с отложкой я в этом деле новичок месяц голову ломаю есть набросок
Руль, багажник, как быть Москва?
 
logut:
я попробовал поставить PRICE_OPEN но как указать на какое растояние

Можно я Вам помогу? Это у меня хорошо получается! Вставить Ваш код с кнопкой SRC и смотрите, как красиво! 

input double lots = 0.01;
input int takeprofit = 100;
input int stoploss = 100;
 extern int magic = 123;
//----------------+
int start()
{


 


//---------------+


int ticket=OrderSend(Symbol(),OP_BUYLIMIT,lots,Ask,3,Ask +stoploss* Point, Ask + takeprofit* Point,NULL,123,120,CLR_NONE);






return(0);

} 

Вам же остаётся только с помощью знаний из Учебника и Документации заполнить всё недостающее! Все всегда начинали так же, и Вы не исключение. Желаю успехов в учении!

 
AlexeyVik:

А прежде чем повторять чью-то чушь не можешь проверить?

Не важно по какому времени функция StringToTime() отсчитывает прошедшие секунды от 01.01.1970 00:00:00 по GMT, UTC, времени сервера или локальному времени, главное что от этой даты до указанного времени прошло XXX секунд. А когда ты для проверки ставишь контрольное время то это время отсчитывается так-же от 01.01.1970 00:00:00 по указанному тобой времени. То-есть в условии if(TimeCurrent() >= StringToTime("23:15") это означает что если по времени сервера от 01.01.1970 00:00:00 прошло секунд столько-же или больше чем контрольное XXX секунд. И никакой путаницы в этом нет.

Специально для тебя сделал скрин, почитай комментарий и потом поэкспериментируй. 

Твоя проблема может заключаться в том, что торговля может заканчиваться в 23:00

Не сразу заметил ответ. Ну если честно я не совсем понял что ты имеешь в виду, утверждая что в этом нет путаницы.

То есть как "не важно по какому времени функция StringToTime() отсчитывает прошедшие секунды"?

Функция берет по сути вообще левую дату  (я считаю что дата локального ПК - левая) и сравнивает с ней текущее время сервера брокера, почему это может быть не важно? 

Из приведенного скрина коммент говорит о том что время на твоем локальном компе опережает время брокера на 1 час, то есть сдвиг по GMT больше. Если бы он был на X часов меньше, то было бы критично, как в случае о котором я писал, про пятницу.

А по поводу окончания времени торговли. Я полагаю что для функции StringToTime() не должно иметь значение когда брокер заканчивает торговый день или неделю... 

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