гарантированного способа нет, к сожалению
Позиции по стоплоссу закрывает сервер без явного уведомления клиента. Клиент может узнать об закрытии только по исчезновению позиции из терминала и появлению закрытой позиции в истории сделок.
Позиции по стоплоссу закрывает сервер без явного уведомления клиента. Клиент может узнать об закрытии только по исчезновению позиции из терминала и появлению закрытой позиции в истории сделок.
Вопрос к MetaQuotes Software
Большое спасибо за ответ! Сразу же рождается второй вопрос: "А можно ли сделать так, чтобы эксперт удалял отложенные ордера если баланс уменьшился на определённую сумму?"
Если это возможно, будте добры напишите как!!!
Заранее благодарен за ответ!
Большое спасибо за ответ! Сразу же рождается второй вопрос: "А можно ли сделать так, чтобы эксперт удалял отложенные ордера если баланс уменьшился на определённую сумму?"
Если это возможно, будте добры напишите как!!!
Заранее благодарен за ответ!
сделать можно
Это в принципе сделать легко. Запомните баланс в переменной(лучше даже глобальной) и потом при каждом вызове эксперта проверяйте - как она изменилась.
Это в принципе сделать легко. Запомните баланс в переменной(лучше даже глобальной) и потом при каждом вызове эксперта проверяйте - как она изменилась.
Вопрос к MetaQuotes Software
Будте добры, если вас не затруднит, напишите пример строки, когда баланс уменьшается на какое-либо значение и отложенный ордер удаляется! У меня что-то никак не выходит!
Зарание благодарен!
Будте добры, если вас не затруднит, напишите пример строки, когда баланс уменьшается на какое-либо значение и отложенный ордер удаляется! У меня что-то никак не выходит!
Зарание благодарен!
например так
if prevBalance < Balance-Delta and bPendingOrdersToBeDeleted=False then bPendingOrdersToBeDeleted=True;
...
if bPendingOrdersToBeDeleted and TotalTrades>0 then begin
for cnt=1 to TotalTrades begin
if OrderValue(cnt,VAL_TYPE) > OP_SELL then begin
DeleteOrder(OrderValue(cnt,VAL_TICKET),0);
Exit;
end;
end;
bPendingOrdersToBeDeleted=False;
end;
ошибся с условием. должно быть наоборот - "prevBalance-Balance>Delta"
Вопрос к MetaQuotes Software
// описание
Var: prevBalance(0);
prevBalance=Balance;
// правильно ли?
и я не понял что за переменная "bPendingOrdersToBeDeleted" и как её описать! (Версия MetaTrader 3.02)
// описание
Var: prevBalance(0);
prevBalance=Balance;
// правильно ли?
и я не понял что за переменная "bPendingOrdersToBeDeleted" и как её описать! (Версия MetaTrader 3.02)
Вопрос к MetaQuotes Software
// описание
Var: prevBalance(0);
prevBalance=Balance;
// правильно ли?
и я не понял что за переменная "bPendingOrdersToBeDeleted" и как её описать! (Версия MetaTrader 3.02)
Спасибо!
Денис
// описание
Var: prevBalance(0);
prevBalance=Balance;
// правильно ли?
и я не понял что за переменная "bPendingOrdersToBeDeleted" и как её описать! (Версия MetaTrader 3.02)
Спасибо!
Денис
Вопрос к MetaQuotes Software
// как будет в данном случае?
defines: MATrendPeriod(40),MATrendPeriod1(98),MATrendPeriod2(180);
var: MaCurrent(0),MaPrevious(0),MaCurrent1(0),MaPrevious1(0),MaCurrent2(0),MaPrevious2(0),MaPrevious00(0),MaPrevious11(0),prevBalance(0);
var: cnt(0);
If Bars<200 or TakeProfit<10 then Exit;
MaCurrent=iMA(MATrendPeriod,MODE_EMA,0);
MaPrevious=iMA(MATrendPeriod,MODE_EMA,1);
MaCurrent1=iMA(MATrendPeriod1,MODE_EMA,0);
MaPrevious1=iMA(MATrendPeriod1,MODE_EMA,1);
MaCurrent2=iMA(MATrendPeriod2,MODE_EMA,0);
MaPrevious2=iMA(MATrendPeriod2,MODE_EMA,1);
MaPrevious00=iMA(MATrendPeriod,MODE_EMA,2);
MaPrevious11=iMA(MATrendPeriod1,MODE_EMA,2);
prevBalance=Balance;
If TotalTrades<1 then
{
If FreeMargin<1000 then Exit;
If ........... then
{
SetOrder(OP_SELLLIMIT,Lots,Bid+20*Point,3,Ask+(stoploss+20)*Point,Bid-TakeProfit*Point,RED)
and
SetOrder(OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-(TakeProfit-90)*Point,RED)
and
SetOrder(OP_BUYLIMIT,Lots,Ask-60*Point,3,Bid-(stoploss+60)*Point,Ask+(TakeProfit-140)*Point,RED); // исполняем
Exit;
};
If ................ then
{
SetOrder(OP_BUYLIMIT,Lots,Ask-20*Point,3,Bid-(stoploss+20)*Point,Ask+TakeProfit*Point,RED)
and
SetOrder(OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+(TakeProfit-90)*Point,RED)
and
SetOrder(OP_SELLLIMIT,Lots,Bid+60*Point,3,Ask+(stoploss+20)*Point,Bid-(TakeProfit-140)*Point,RED); // исполняем
Exit;
};
Exit;
};
if prevBalance-Balance>84 and bPendingOrdersToBeDeleted=False then bPendingOrdersToBeDeleted=True;
if bPendingOrdersToBeDeleted and TotalTrades>0 then begin
for cnt=1 to TotalTrades begin
if OrderValue(cnt,VAL_TYPE) > OP_SELL then begin
DeleteOrder(OrderValue(cnt,VAL_TICKET),0);
Exit;
end;
end;
// спасибо!
// как будет в данном случае?
defines: MATrendPeriod(40),MATrendPeriod1(98),MATrendPeriod2(180);
var: MaCurrent(0),MaPrevious(0),MaCurrent1(0),MaPrevious1(0),MaCurrent2(0),MaPrevious2(0),MaPrevious00(0),MaPrevious11(0),prevBalance(0);
var: cnt(0);
If Bars<200 or TakeProfit<10 then Exit;
MaCurrent=iMA(MATrendPeriod,MODE_EMA,0);
MaPrevious=iMA(MATrendPeriod,MODE_EMA,1);
MaCurrent1=iMA(MATrendPeriod1,MODE_EMA,0);
MaPrevious1=iMA(MATrendPeriod1,MODE_EMA,1);
MaCurrent2=iMA(MATrendPeriod2,MODE_EMA,0);
MaPrevious2=iMA(MATrendPeriod2,MODE_EMA,1);
MaPrevious00=iMA(MATrendPeriod,MODE_EMA,2);
MaPrevious11=iMA(MATrendPeriod1,MODE_EMA,2);
prevBalance=Balance;
If TotalTrades<1 then
{
If FreeMargin<1000 then Exit;
If ........... then
{
SetOrder(OP_SELLLIMIT,Lots,Bid+20*Point,3,Ask+(stoploss+20)*Point,Bid-TakeProfit*Point,RED)
and
SetOrder(OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-(TakeProfit-90)*Point,RED)
and
SetOrder(OP_BUYLIMIT,Lots,Ask-60*Point,3,Bid-(stoploss+60)*Point,Ask+(TakeProfit-140)*Point,RED); // исполняем
Exit;
};
If ................ then
{
SetOrder(OP_BUYLIMIT,Lots,Ask-20*Point,3,Bid-(stoploss+20)*Point,Ask+TakeProfit*Point,RED)
and
SetOrder(OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+(TakeProfit-90)*Point,RED)
and
SetOrder(OP_SELLLIMIT,Lots,Bid+60*Point,3,Ask+(stoploss+20)*Point,Bid-(TakeProfit-140)*Point,RED); // исполняем
Exit;
};
Exit;
};
if prevBalance-Balance>84 and bPendingOrdersToBeDeleted=False then bPendingOrdersToBeDeleted=True;
if bPendingOrdersToBeDeleted and TotalTrades>0 then begin
for cnt=1 to TotalTrades begin
if OrderValue(cnt,VAL_TYPE) > OP_SELL then begin
DeleteOrder(OrderValue(cnt,VAL_TICKET),0);
Exit;
end;
end;
// спасибо!
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Помогите, если это возможно!
Как сделать, чтобы эксперт удалял отложенные ордера если предыдущая позиция закрылась по Stop Loss ? Заранее благодарен за помощь!
Денис. kupriyanov_denis@inbox.ru