AlGuru: Подскажите пожалуйста. Как указать в советнике закрытие на следующей свечке?
datetime Time[] -Массив-таймсерия, содержащий время открытия каждого бара текущего графика. Time[0] - время открытия последнего бара. Если время OrderOpenTime() открытия ордера меньше Time[0] - значит, ордер открыт на прошлом баре, и такой ордер в соответствии с Вашей стратегией пора закрыть
STARIJ: datetime Time[] -Массив-таймсерия, содержащий время открытия каждого бара текущего графика. Time[0] - время открытия последнего бара. Если время OrderOpenTime() открытия ордераменьшеTime[0] - значит, ордер открыт на прошлом баре, и такой ордер в соответствии с Вашей стратегией пора закрыть
Либо о нём забыли, и он был открыт год назад, например ;)
STARIJ: datetime Time[] -Массив-таймсерия, содержащий время открытия каждого бара текущего графика. Time[0] - время открытия последнего бара. Если время OrderOpenTime() открытия ордера меньше Time[0] - значит, ордер открыт на прошлом баре, и такой ордер в соответствии с Вашей стратегией пора закрыть
Спасибо! Только решил проблему функцией iTime. C массивами пока не дружу )).
STARIJ: datetime Time[] -Массив-таймсерия, содержащий время открытия каждого бара текущего графика. Time[0] - время открытия последнего бара. Если время OrderOpenTime() открытия ордераменьшеTime[0] - значит, ордер открыт на прошлом баре, и такой ордер в соответствии с Вашей стратегией пора закрыть
Либо о нём забыли, и он был открыт год назад, например ;)
А если время открытия ордера было неделю назад? То оно точно не на прошлой свече (если график не недельный). Его тоже закрывать?
Конечно всё зависит от требований вашей ТС, но я бы пошёл иным путём...
Это дополнительное условие. Закрывается позиция при пересечении цены линии МА. Просто бывает что цена открывается прямо на линии и происходит на каждом тике открытие и закрытие позиции. Решал проблему путем закрытия позиции не раньше следующей свечки.
Подскажите пожалуйста как закодировать в тестере стратегий следующее действие
Общий смысл
1.Открывается ордер N -X ( объем = 0.1)
2.Еслиименно этот ордер закрывается по СЛ, то. для компенсации потерь, сразу по цене закрытия по СЛ ордера N X , открывается ордер N - X1 ( объем = 0.3)
МНЕ НУЖНО
3 Если ордер ( объем = 0.3) закрывается по СЛ - запомнить только значение часа открытия ордера N -X для компенсации потерь по которомуон и был открыт .
Умею открывать оба ордера, но не могу до конца дойти своим умом, как запомнить значение часа закрывшегося по СЛ ордера объемом 0.1 лот.
ПРИМЕЧАНИЕ , связанное с закрытием ордеров на одном тике.
Бывает иногда что на одном тике закрываются по СЛ больше одного ордера и объемом 0.1 и объемом 0.3.
Если на одном тике закрывается по СЛ , например 3 ордера по 0.1, то вместо открытия 3 ордеров по 0.3. - открывается только 1 ордер по 0.3 лота
В этом случае при закрытии по СЛ только 1 ордера по 0.3 лота я не получу значений часа открытия двух ордеров по 0.1 лота для компенсации потерь по которым они и был открыты.
То есть, мне нужно что бы, в этом случае, открылось именно 3 ордера по 0.3 лота, а не один.
А бывает, что на одном тике закрываются по СЛ , например 3 ордера объемом 0.3 лота, не смотря на то, что соответствующие им ордера по 0.1. лота открылись на разных тиках( но просто по одной цене)
В этом случае программа опять же сохраняет нужное мне значение часа только одного последнего ордера объемом 0.1 лот .
А мне нужно что бы программа запоминала значение часа каждого закрытого по СЛ ордера объемом 0.1 лот.
Вот мой код, который нужно довести до ума.
Спасибо за помощь.
int A2;
int A1;
int A;
int start()
{
int ot = OrdersTotal();
int Ht = OrdersHistoryTotal();
if(Bid == iOpen(NULL,PERIOD_H1,0))
if ( A!= Hour() )
{
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
A = Hour();
}
//**************************************************************************************int Счет=0, Номер=OrdersHistoryTotal()-1;
//int A1=0;for( ; Номер>=0; Номер--)
{
if(!OrderSelect(Номер, SELECT_BY_POS, MODE_HISTORY)) continue;
A1=OrderOpenTime();
if(OrderProfit()>=0) break;
Счет++;
if(Счет ==1&&A2!=OrderOpenTime())
{
A2=OrderOpenTime();
OrderSend(Symbol(),OP_SELL,0.3,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
}
}
//************************************************************************************** return;
}
Вот пример ситуации в которой на одном тике закрываются несколько ордеров
08:51:38.9062017.03.2713:09:44 Tester: stop loss #200at 1.08858 (1.08856 / 1.08858)
208:51:38.9062017.03.2713:09:441 = 1 = 1 = 1 EURUSD,M1: open #214sell 0.30 EURUSD at 1.08856 sl: 1.09258 tp: 1.08658 ok
008:51:38.9062017.03.2713:10:28 Tester: stop loss #192at 1.08879 (1.08877 / 1.08879)
008:51:38.9062017.03.2713:10:28 Tester: stop loss #193at 1.08879 (1.08877 / 1.08879)
208:51:38.9062017.03.2713:10:281 = 1 = 1 = 1 EURUSD,M1: open #215sell 0.30 EURUSD at 1.08877 sl: 1.09279 tp: 1.08679 ok
008:51:38.9062017.03.2713:10:29 Tester: stop loss #194at 1.08880 (1.08878 / 1.08880)
Это дополнительное условие. Закрывается позиция при пересечении цены линии МА. Просто бывает что цена открывается прямо на линии и происходит на каждом тике открытие и закрытие позиции. Решал проблему путем закрытия позиции не раньше следующей свечки.
Такую проблему нужно решать путём проверки: а есть ли, или была ли уже открыта и закрыта позиция на этом самом баре.
Иначе вы всё в кучу накидаете. Сигнальная функция должна отсылать сигналы, а торговая функция уже должна проверять валидность сигнала.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
datetime Time[] -Массив-таймсерия, содержащий время открытия каждого бара текущего графика. Time[0] - время открытия последнего бара. Если время OrderOpenTime() открытия ордера меньше Time[0] - значит, ордер открыт на прошлом баре, и такой ордер в соответствии с Вашей стратегией пора закрыть
datetime Time[] -Массив-таймсерия, содержащий время открытия каждого бара текущего графика. Time[0] - время открытия последнего бара. Если время OrderOpenTime() открытия ордера меньше Time[0] - значит, ордер открыт на прошлом баре, и такой ордер в соответствии с Вашей стратегией пора закрыть
Спасибо! Только решил проблему функцией iTime. C массивами пока не дружу )).
Спасибо! Только решил проблему функцией iTime. C массивами пока не дружу )).
Покажите как решили.
Просто есть кое-что, чего вы могли и не учесть:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам
Artyom Trishkin, 2017.05.25 19:43
STARIJ:
datetime Time[] -Массив-таймсерия, содержащий время открытия каждого бара текущего графика. Time[0] - время открытия последнего бара. Если время OrderOpenTime() открытия ордера меньше Time[0] - значит, ордер открыт на прошлом баре, и такой ордер в соответствии с Вашей стратегией пора закрыть
Покажите как решили.
Просто есть кое-что, чего вы могли и не учесть:
OrderOpenTime() < iTime(Symbol(), 0, 0)
OrderOpenTime() < iTime(Symbol(), 0, 0)
А если время открытия ордера было неделю назад? То оно точно не на прошлой свече (если график не недельный). Его тоже закрывать?
Конечно всё зависит от требований вашей ТС, но я бы пошёл иным путём...
А если время открытия ордера было неделю назад? То оно точно не на прошлой свече (если график не недельный). Его тоже закрывать?
Конечно всё зависит от требований вашей ТС, но я бы пошёл иным путём...
Это дополнительное условие. Закрывается позиция при пересечении цены линии МА. Просто бывает что цена открывается прямо на линии и происходит на каждом тике открытие и закрытие позиции. Решал проблему путем закрытия позиции не раньше следующей свечки.
Всем доброго времени суток!
Подскажите пожалуйста как закодировать в тестере стратегий следующее действие
Общий смысл
1.Открывается ордер N -X ( объем = 0.1)
2.Если именно этот ордер закрывается по СЛ, то. для компенсации потерь, сразу по цене закрытия по СЛ ордера N X , открывается ордер N - X1 ( объем = 0.3)
МНЕ НУЖНО
3 Если ордер ( объем = 0.3) закрывается по СЛ - запомнить только значение часа открытия ордера N -X для компенсации потерь по которому он и был открыт .
Умею открывать оба ордера, но не могу до конца дойти своим умом, как запомнить значение часа закрывшегося по СЛ ордера объемом 0.1 лот.
ПРИМЕЧАНИЕ , связанное с закрытием ордеров на одном тике.
Бывает иногда что на одном тике закрываются по СЛ больше одного ордера и объемом 0.1 и объемом 0.3.
Если на одном тике закрывается по СЛ , например 3 ордера по 0.1, то вместо открытия 3 ордеров по 0.3. - открывается только 1 ордер по 0.3 лота
В этом случае при закрытии по СЛ только 1 ордера по 0.3 лота я не получу значений часа открытия двух ордеров по 0.1 лота для компенсации потерь по которым они и был открыты.
То есть, мне нужно что бы, в этом случае, открылось именно 3 ордера по 0.3 лота, а не один.
А бывает, что на одном тике закрываются по СЛ , например 3 ордера объемом 0.3 лота, не смотря на то, что соответствующие им ордера по 0.1. лота открылись на разных тиках( но просто по одной цене)
В этом случае программа опять же сохраняет нужное мне значение часа только одного последнего ордера объемом 0.1 лот .
А мне нужно что бы программа запоминала значение часа каждого закрытого по СЛ ордера объемом 0.1 лот.
Вот мой код, который нужно довести до ума.
Спасибо за помощь.
Вот пример ситуации в которой на одном тике закрываются несколько ордеров
Это дополнительное условие. Закрывается позиция при пересечении цены линии МА. Просто бывает что цена открывается прямо на линии и происходит на каждом тике открытие и закрытие позиции. Решал проблему путем закрытия позиции не раньше следующей свечки.
Такую проблему нужно решать путём проверки: а есть ли, или была ли уже открыта и закрыта позиция на этом самом баре.
Иначе вы всё в кучу накидаете. Сигнальная функция должна отсылать сигналы, а торговая функция уже должна проверять валидность сигнала.
Здравствуйте. Почему уменя отоброжение волютных пар euro vs usd в числах 149,16325 ане в 1,0616?