[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 304
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Проблема в следующем - советник постоянно повторно открывает ордера, т.е. есть сигнал на бай - он окрывает ордер, потом закрывает его по профиту, а условия все еще сохраняются он его открывает вновь. нужно чтобы после других сигналов он открывался только.
я подумал что можно устранить с помощью обычного счетчика баей и селов - если ордер бай открылся счетчик +1, и новый бай нельзя открыть пока счетчик больше 0, обнуляется счетчик только после того как будет сел. но почему то не работает не могу понять почему??? посмотрите логику может я где-то ошибся?? метры mql точно сталкивались с подобной проблемой.
Т.е. на обном баре сигнал есть, но он уже использован?
Можно так
Попробуйте так
должно и так и так работать.
Для меня так понятнее.
Здравствуйте Все!
Извините за оффтоп, тема востребована, потому и пишу сюда, может подскажете? Зациклился.
Как, используя только элементарные операции (+-*/%), произвести возведение в степень (в т.ч. вещественную) вещественного числа? Например, виндовый калькулятор при возведении 1.2 в степень 1.2 дает результат 1,2445647472039777218169154111826. Интересует алгоритм, язык не имеет значения, любой. Переведу сам.
ЗЫ. Сколько контрольных по программированию не делал, такую задачу вижу впервые, хотя может для кого-то это и тривиально?
Всем добрый день!
Обыскал много форумов и статей google ,но ответ так и не нашел
Решил написать советник для торговли на двух противоположных ордерах на М1
Идея проста :выставляются два противоположных ордера с небольшим ТР,далее при срабатывании ТР одного из них для второго включается таймер в виде количества баров(допустим 5)-он и будет по сути временным SL. Рассчет на то,что если валюта будет двигаться в том же направлении-то потери после срабатывания временного SL по второму ордеру будут минимальны,если же график развернется-то мы в плюсе по двум позициям .Так как используется M1 то количество открытых ордеров даже за сутки огромно-на это и ставка.
ПРОБЛЕМА же заключается в том,что я не знаю как написать кусок кода,в котором будет "при срабатывании ТР одного из них для второго включается таймер в виде количества баров"
на данный момент работает только таймер для двух ордеров сразу,но от этого толка нет
PS уже месяц не могу разрешить эту проблему,помогите советом или кодом:)
вот код советника
extern int SL=100;
extern int TP=100;
extern double StartLot=0.1;
extern double StopLot=1.0;
extern int bar_time=20;
double Lot()
{
double lt;
if(OrdersHistoryTotal()==0) return (StartLot);
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderProfit()<0)
{
lt=OrderLots()*2;
if(lt>StopLot) return (StartLot);
else return (lt);
}
else
return (StartLot);
}
else
return (StartLot);
}
int start()
{
double lot;
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)
{
int order;
{
lot=Lot();
order=OrderSend(Symbol(),OP_BUY,lot,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);
order=OrderSend(Symbol(),OP_SELL,lot,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,0,Green);
}
}
//вот здесь должно быть что-то что является решением проблемы и связующим звеном
{
int bars = iBarShift( Symbol(), PERIOD_M1, OrderOpenTime() ) ;
if ( iTime( Symbol(), PERIOD_M1, bars ) > OrderOpenTime() ) { bars ++; }
if ( bars >= bar_time )
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5,White);
}
return(0);
}
Спасибо заранее
Т.е. на обном баре сигнал есть, но он уже использован?
Можно так
Здравствуйте Все!
Извините за оффтоп, тема востребована, потому и пишу сюда, может подскажете? Зациклился.
Как, используя только элементарные операции (+-*/%), произвести возведение в степень (в т.ч. вещественную) вещественного числа? Например, виндовый калькулятор при возведении 1.2 в степень 1.2 дает результат 1,2445647472039777218169154111826. Интересует алгоритм, язык не имеет значения, любой. Переведу сам.
ЗЫ. Сколько контрольных по программированию не делал, такую задачу вижу впервые, хотя может для кого-то это и тривиально?
https://docs.mql4.com/ru/math/MathPow не? Или элементарные операции это условие задачи. тогда вариант http://bpascal.ru/download/desc/436.php если уж совсем все на ручнике делать, то реализовать экспоненту и логарифм своими функциями.
Вы используете while(i>=0), значит при появлении новой свечи i=1 (ну чтоб наверняка данные предыдущей свечи рассчиталась по зафиксированным данным один раз).
Зачем вводить some_time=D'1971.01.11 00:00'; используйте Bars, IndicatorCounted не глучит у меня (ну и ошибка наверно из за этого first_t_bar).
Ваш алгоритм и вам его лечить.
"Я в програмировании новичек." с 2007года )).
Все таки не понятно почему моя конструкция работает нормально, а стандартная нет. some_time=D'1971.01.11 00:00'; тут используется один раз при запуске. Потом дата меняется на другую, да это здесь и не причем т.к. в одном случае работает, а в другом нет. Я позже переделаю индикатор. Это измененный вариант другого индикатора. Спасибо за ответ!
Всем добрый день!
Обыскал много форумов и статей google ,но ответ так и не нашел
Решил написать советник для торговли на двух противоположных ордерах на М1
Идея проста :выставляются два противоположных ордера с небольшим ТР,далее при срабатывании ТР одного из них для второго включается таймер в виде количества баров(допустим 5)-он и будет по сути временным SL. Рассчет на то,что если валюта будет двигаться в том же направлении-то потери после срабатывания временного SL по второму ордеру будут минимальны,если же график развернется-то мы в плюсе по двум позициям .Так как используется M1 то количество открытых ордеров даже за сутки огромно-на это и ставка.
ПРОБЛЕМА же заключается в том,что я не знаю как написать кусок кода,в котором будет "при срабатывании ТР одного из них для второго включается таймер в виде количества баров"
на данный момент работает только таймер для двух ордеров сразу,но от этого толка нет
PS уже месяц не могу разрешить эту проблему,помогите советом или кодом:)
вот код советника
................................................
Спасибо заранее
1. Если есть закрытая позиция по тейку, ...
1.1 Если её тип OP_BUY, ...
1.1.2 Если есть открытая позиция OP_SELL, ...
1.1.3 Если время текущего бара минус время бара открытия позиции Sell больше или равно количеству баров для задержки, ...
1.1.4. Закрываем позицию Sell
1.2 Если её тип OP_SELL, ...
1.2.2 Если есть открытая позиция OP_BUY, ...
1.2.3 Если время текущего бара минус время бара открытия позиции Buy больше или равно количеству баров для задержки, ...
1.2.4. Закрываем позицию Buy
Всем доброго вечера, извиняюсь за ранее за тупой вопрос)
Возможно ли в советнике, в котором есть переменная, допустим "А", ей присваивается значение цены в данный момент и он торгует. Изменить данное значение на любое историческое, допустим взять любое значение месячной давности, и вывести нужные значения по анализу истории . Пробовал делать это на тестере стратегий, но много сомнений по его правильности. Или же придется переделывать и работать с массивами!? Всем спасибо.
p.s. Хочу узнать т.к. в справочнике и учебнике MQL не нашел.