Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 513
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Правильно я делаю.
y = OrderOpenPrice()-Ask;
Из цены последнего открытого ордера я вычитаю текущую цену?
int i_buy=0; int i_sell=0;
for(int i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol()){
switch(OrderType()){// Есть ли открыте ордера
case OP_BUY:
i_buy++;
break;
case OP_SELL:
i_sell++;
break;
}
y = OrderOpenPrice()-Ask;
}
}
if((i_buy==0 && i_sell==0) || y > Step) //--- нет открытых ордеров, открываем или расстояние от последнего ордера до текущей цены. Больше step
OrderSend(Symbol(), OP_BUY,StartLot,Ask,Slippage,0,Ask+TakeProfit*Point(),WindowExpertName()+" "+(string)0,0,0,clrBlue);
https://docs.mql4.com/ru/trading/orderselect https://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots
double z; //обьявляем переменную "z"
double y; //обьявляем переменную "y"
if(OrderSelect(10,SELECT_BY_POS)==true) //если выбранный ордер (по тикету) присутствует
{
OrderLots()=z //присвоить лот данного ордера переменной "z"
OrderOpenPrice()=y //присвоить цену открытия переменной "y"
}
попробуй так
Вот только не нужно путать народ и рассказывать хрень, пожалуйста. Говорите по тикету, а пишете выбор по индексу. А если выбирать по тикету, то pool указывать не нужно - функция его игнорирует и выбирает в любом из двух списков - в том, где он есть. А чтобы проверить из какого списка ордер выбран, нужно после успешного выбора проверить время закрытия ордера и, если оно больше нуля - то ордер уже закрыт, иначе - выбран из списка открытых позиций
Вы не присваиваете переменной значение лота, а наоборот - пытаетесь присваивать функции, возвращающей лот выбранного ордера, значение переменной - вообще нонсенс
Точно то же вы пытаетесь сотворить с функцией, возвращающей цену открытия.
artmedia70:
Подскажи, что я не так делаю. Вроде бы все верно.
if((i_buy==0 && i_sell==0) || y > Step)
Или (i_buy==0 && i_sell==0) или y > Step. Если,что та одно верно. Значит пропускаем, открываем ордер...
Если альпари - то никогда не можно было. Если другой ДЦ - от счёта зависит. Но по-любому это программист предусмотреть должен. Да и условия торговли изучать надо до того как начинать что-то делать, там всё написано.
В службе поддержки 8-800-200-01-31 объяснили, что в конце прошлой недели они исправили ошибку, позволявшую открывать ордера на счетах ECN одновременно с установкой SL и TP. Последнюю позицию я закрыл в четверг.
Вы правы в том, что в Регламенте торговых операций об этом ничего не сказано, и что теперь спасёт только OrderModify().
Спасибо за ответ.
artmedia70:
Подскажи, что я не так делаю. Вроде бы все верно.
if((i_buy==0 && i_sell==0) || y > Step)
Или (i_buy==0 && i_sell==0) или y > Step. Если,что та одно верно. Значит пропускаем, открываем ордер...
Практически не понял вопроса...
Вот чего там пропускаем - мне неведомо, а вот ордер открыть - эт можно... Т.е., если при соблюдении сего условия нужно открыть ордер, то
Могу сказать что тут у тя написано:
Открыть ордер если и i_buy и i_sell оба равны нулю. Ну или если кто-то из них не равен нулю, а может даже и оба не равны, но при этом y больше Step, то тоже открыть ордер
Практически не понял вопроса...
Вот чего там пропускаем - мне неведомо, а вот ордер открыть - эт можно... Т.е., если при соблюдении сего условия нужно открыть ордер, то
Могу сказать что тут у тя написано:
Открыть ордер если и i_buy и i_sell оба равны нулю. Ну или если кто-то из них не равен нулю, а может даже и оба не равны, но при этом y больше Step, то тоже открыть ордер
В цикле фор я правильно понимаю. Что перебираем от первого открытого ордера до последнего. Соответственно Цену я беру последнего ордера.
Еще вот. Прописал Alert("d") в OnTick. Запустил код в тестере,а звукового сигнала,окна нет.
В цикле фор я правильно понимаю. Что перебираем от первого открытого ордера до последнего. Соответственно Цену я беру последнего ордера.
Еще вот. Прописал Alert("d") в OnTick. Запустил код в тестере,а звукового сигнала,окна нет.
Добрый день!
Как бороться с "MetaEditor not found" при попытке редактирования советника? MetaTrader build 600.
Что-то не припомню подобных граблей в старых билдах...
Может ли это быть связано с тем, что комп, на котором это наблюдается, достаточно маломощный и загружен на 50-75% постоянно. Там крутятся 7 инстансов MT4, но при нормальных условиях (т.е. без дополнительной внешней нагрузки типа доступа через TeamViewer и попыток запуска MetaEditor) его performance хватает, и Task Manager, запущенный в фоне, на промежутке в минут 15-20 показывает avg CPU usage <=45-50%.
Эта грабля случается не в 100% случаев, и проявив незаурядное терпение и настойчивость, с 5го-10го-25го раза MetaEditor все-таки запускается. Но реально замумукивает по полчаса пытаться запустить MetaEditor.
Алерты в тестере выводятся в журнал тестера. А вот насчёт цикла, пропуска, выбора, перебора нихрена не понятно. Суть можно узнать того, что желаете в итоге?
Я просто хочу написать самого простого робота. Работающего по мартину, самостоятельно.
Вот в чем ошибка.
y = OrderOpenPrice()-Ask;
Получаю не целые числа как я думал. А к примеру 0.0044. Как получить 44, целое?
Я просто хочу написать самого простого робота. Работающего по мартину, самостоятельно.
Вот в чем ошибка.
y = OrderOpenPrice()-Ask;
Получаю не целые числа как я думал. А к примеру 0.0044. Как получить 44, целое?