Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 815
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
И когда, по-вашему, должен закрыться этот вот цикл
?
Исправил:
if(R==0)
{
while(true)
{
Sleep(30000);
Alert("Ошибка!");
DeleteBuy=OrderDelete(OrderTicketBuy);
DeleteSell=OrderDelete(OrderTicketSell);
return(1);
}
}
Расчет прибыли тоже.
Вставил в цикл while (true) сообщение и обработку ошибок. Цикл работает,сообщение пишется, ошибок нет. Но не проходит по условию, данные будто не обновляются.
Вставил в цикл while (true) сообщение и обработку ошибок. Цикл работает,сообщение пишется, ошибок нет. Но не проходит по условию, данные будто не обновляются.
Дам ещё подсказок.
Вот этот цикл рассматривает не все ордера, кроме того, если ордеров одного типа больше, чем один (например, выставлено три ордера байстоп), то что тогда будет?
Вот тут сначала рассматривается тип ордера, а уже потом этот ордер выбран, вобще-то должно быть наоборот, сначала выбрать ордер, а уже если ордер выбран - смотреть его тип и по-всякому над ним глумиться:
И в "свитче-который-типа-тралит-стоплосс", почему именно continue везде??? И когда будет исполнена вот эта строчка, в одном и во втором свитче?
Вот тут сначала рассматривается тип ордера, а уже потом этот ордер выбран, вобще-то должно быть наоборот, сначала выбрать ордер, а уже если ордер выбран - смотреть его тип и по-всякому над ним глумиться:
так вот:
if(R==1)//238
{
Alert("yes");
R=0;
SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);
}
if(R==2)//245
{
Alert("yes");
R=0;
SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);
}
И в "свитче-который-типа-тралит-стоплосс"( =D. Что Вам не нравиться? По моему норм вариант, очень наглядно. ), почему именно continue везде??? И когда будет исполнена вот эта строчка, в одном и во втором свитче?
Так он пробьется по условию:
Timen=OrderCloseTime();
if(Timen>0)
{
DeleteSell=OrderDelete(OrderTicketSell);
OldProfit=0;
WarBuy=true;
break;
}
Ну вообще да, break будет лучше смотреться в строке OrderClose. Тогда нужно будет еще прописать OrderDelete.
Дам ещё подсказок.
Вот этот цикл рассматривает не все ордера, кроме того, если ордеров одного типа больше, чем один (например, выставлено три ордера байстоп), то что тогда будет?
OrdersTotal от 1 идет, а OrderSelect от 0. Все верно.
Больше одного ордера одного типа на 1 фин инструменте? Исключено. Но посмотрю еще.
Нужно условие максимально приближенное к этому: "если MA==цене, то".
Такое пойдет:
if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))
P.S.: С Новым годом!
С Новым годом!
Недавно начал изучение MQL 4 и хотел задать вопрос:
Например у меня есть условие открытия ордера:
if (Bid>=SS+5*Point)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);
Теперь собственно вопрос : какое нужно прописать условие для открытия второго ордера в случае если у первого ордера прибыль 10 пунктов и более?
С Новым годом!
Недавно начал изучение MQL 4 и хотел задать вопрос:
Например у меня есть условие открытия ордера:
if (Bid>=SS+5*Point)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);
Теперь собственно вопрос : какое нужно прописать условие для открытия второго ордера в случае если у первого ордера прибыль 10 пунктов и более?
Поищите здесь, там множество функций почти на все случаи.
https://www.mql5.com/ru/forum/131859
С Новым годом!
Недавно начал изучение MQL 4 и хотел задать вопрос:
Например у меня есть условие открытия ордера:
if (Bid>=SS+5*Point)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);
Теперь собственно вопрос : какое нужно прописать условие для открытия второго ордера в случае если у первого ордера прибыль 10 пунктов и более?
Предварительно выбрав ордер OrderSelect (Тикет_первого_ордера, SELECT_BY_TICKET);
if(OrderOpenPrice()+10*Point==Ask)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);
Нужно условие максимально приближенное к этому: "если MA==цене, то".
Такое пойдет:
if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))
Ура, заработало кажется. Вставил в каждый цикл return и оператор "O" чтобы не проходил не нужные операции.
Одна проблема: ордера выставляет криво - не знаю как сформулировать условие.
здравствуйте, раньше задавал тут вопрос такой, сказали что проблема в трейдере. в тех поддержке сказали что это проблема в терминале. гляньте нет ли у вас такой же неприятности в метатрейдере 4. трейдер у меня форексстарт , если это имеет роль.
суть в чем, я написал торгового робота , который работает по минутному графику. он анализирует историю. на многих графиках история предоставляется где-то примерно на полтора месяца и больше нет, хотя на часовом - дневном - годичном графике история есть. есть еще такие случаи когда возвращает по определенную дату, далее обрыв, и граффик продолжается спустя пару месяцев назад, хотя на графиках повыше опять все есть.
как можно с этим бороться?
здравствуйте, раньше задавал тут вопрос такой, сказали что проблема в трейдере. в тех поддержке сказали что это проблема в терминале. гляньте нет ли у вас такой же неприятности в метатрейдере 4. трейдер у меня форексстарт , если это имеет роль.
суть в чем, я написал торгового робота , который работает по минутному графику. онанализирует историю. на многих графиках история предоставляется где-топримерно на полтора месяца и больше нет, хотя на часовом - дневном -годичном графике история есть. есть ещетакие случаи когда возвращает по определенную дату, далее обрыв, играффик продолжается спустя пару месяцев назад, хотя на графиках повышеопять все есть.
как можно с этим бороться?