Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как реализовать в этом советнике задумку, что бы ---->
Alert
срабатывал один раз, при открытии нового ордера ?
//после открытия сделки один алерт ;)
OrderSend(Symbol(), OP_BUY, LotsToBid, NormalizeDouble(Ask,Digits), Slippage, SL, TP, NULL, STUPID, 0, Blue);
Alert("OrderSend OP_BUY");
Ы . Что это значит чет не нашел нигде LotsToBid
м?
На месте LotsToBid должен стоять тип торговой операции
LotsToBid --- это количество лотов на покупку
Вот вам код
//после открытия сделки один алерт ;)
OrderSend(Symbol(), OP_BUY, LotsToBid, NormalizeDouble(Ask,Digits), Slippage, SL, TP, NULL, STUPID, 0, Blue);
Alert("OrderSend OP_BUY");
Ы . Что это значит чет не нашел нигде LotsToBid
м?
На месте LotsToBid должен стоять тип торговой операции
))
В своем "//Что-то делаем" советнике ищите OrderSend и после-перед функции-функцией открытия позиции ставьте алерт.
Т.е. когда советник открывает позицию выскочит алерт.
))
Зачем циклы листать ордера и прочее?!
))
В своем "//Что-то делаем" советнике ищите OrderSend и после-перед функции-функцией открытия позиции ставьте алерт.
Т.е. когда советник открывает позицию выскочит алерт.
))
Зачем циклы листать ордера и прочее?!
//после открытия сделки один алерт ;)
OrderSend(Symbol(), OP_BUY, LotsToBid, NormalizeDouble(Ask,Digits), Slippage, SL, TP, NULL, STUPID, 0, Blue);
Alert("OrderSend OP_BUY");
Ы . Что это значит чет не нашел нигде LotsToBid
м?
На месте LotsToBid должен стоять тип торговой операции
Упс .. Туплю )
Просто мозги уже вскипели ХД
Зачем циклы листать ордера и прочее?!
Чтобы при открытии нового ордера, один раз сработал алерт . Независимо от тиков.
LotsToBid --- это количество лотов на покупку
Вот вам код
//+------------------------------------------------------------------+
//| Graal.mq4 |
//| Copyright © 2011, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
datetime lastBuy = 0;
datetime lastSell = 0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
while(!IsStopped())
{
RefreshRates();
int total = OrdersTotal();
datetime ddBuy = 0;
datetime ddSell = 0;
for(int i=0; i < total; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
int cmd=OrderType();
//---- buy or sell orders are considered
datetime dd = OrderOpenTime();
if((cmd==OP_BUY)&&(dd>lastBuy))
{
ddBuy = dd;
//////////////
//////////////
Alert("Открылся бай а надо селл :)");
//////////////
//////////////
//////////////
}
if((cmd==OP_SELL)&&(dd>lastSell))
{
ddSell = dd;
//////////////
//////////////
Alert("Открылся сел а надо было байть. эх...");
//////////////
//////////////
//////////////
}
}
}
///// Сделано именно так для случая если в одно и то же время будет два ордера Бай
if (ddBuy!=0) lastBuy = ddBuy;
if (ddSell!=0) lastSell = ddSell;
Alert("Буду писать пока жив..");
Sleep(1000);
}
//----
return(0);
}
//+------------------------------------------------------------------+
У меня открыто 3-и ореда
1-й селл
2-й бай
3-й отложеный байстоп
И постоянно срабатывает эта часть кода
///// Сделано именно так для случая если в одно и то же время будет два ордера Бай
if (ddBuy!=0) lastBuy = ddBuy;
if (ddSell!=0) lastSell = ddSell;
Alert("Буду писать пока жив..");
Sleep(1000);
Мне не очень ясно,зачем она нужна?
Строку Alert("Буду писать пока жив.."); ---- Можете удалить
Главное в том что Alert("Открылся бай а надо селл :)"); и Alert("Открылся сел а надо было байть. эх..."); срабатывает лишь один раз для каждого ордера??
Ваша задача выполлена?
Главное не удаляйте
Иначе ваши ордера будут обрабатываться по многу раз.
И
Иначе компьютер просто зависнет.Я бы вам рекомендовал ознакомиться с самым сердцем программирования - Логикой.
https://docs.mql4.com/ru/basis/operators
https://book.mql4.com/ru/basics/operators
Оператор если.
if......(uslovie)................{ operacii }
если (условие истина) то {делаем операции}
Цикл
while(uslovie)................. {operacii}
пока (условие истина) то {делаем операции}
И все больше для написания программы ничего и не нужно ;)
Все остальные специальные функции можно смотреть в справочнике.
Строку Alert("Буду писать пока жив.."); ---- Можете удалить
Главное в том что Alert("Открылся бай а надо селл :)"); и Alert("Открылся сел а надо было байть. эх..."); срабатывает лишь один раз для каждого ордера??
Ваша задача выполлена?
тестирую ) Пока все работает хорошо )
Посредством вашего скрипта, теперь я буду лучше понимать этот язык програмирования.
В любом случаи благодарю вас что откликнулись на мой крик о помощи, показали свой вариант скрипта, и дали новые знания о языке mql4.