[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 768
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
мне просто надо функцию вызвать и все, надо просто одна строчка " если ордеров больше на один чем .... то" и все а вы тут целую функцию мне предлагаете
вот как у меня хранятся данные о ордерах
Это несложная запишите в библиотеку .
На вход подаются тип подсчитываемого ордера и его магик, возвращает кол-во открытых или установленных ордеров .
можно использовать например так
if ((FastEma - SmallEma) > Compartor*Point && ChPos(OP_BUY,1111) < OpenPosition)
Это несложная запишите в библиотеку .
На вход подаются тип подсчитываемого ордера и его магик, возвращает кол-во открытых или установленных ордеров .
можно использовать например так
if ((FastEma - SmallEma) > Compartor*Point && ChPos(OP_BUY,1111) < OpenPosition)
такая функция у меня есть и она мне не нужна, мне надо
просто одна строчка " если ордеров больше на один чем .... то" и все
мои даные с такойже функции которую вы показали хранятся тут
а вот как выглядит она сама
Кажется догнал
static int aaa = OrdersHistoryTotal()+ OrdersTotal()
if (ваше условие && aaa < OrdersHistoryTotal()+ OrdersTotal() )
{
операторы
aaa=OrdersHistoryTotal()+ OrdersTotal()
}
Если так,то с учетом магиков все равно лучше в функцию . Вы можете озвучить над чем колдуете . Логика какая то странноватая если правильно понял,нужно производить действия если открылся еще один ордер .Не проще ли открывать ордера не более чем OpenPosition .
П С Ваша функция ворвращает общее кол-во открытых ордеров и выставленных отложек .Сколько ордеров OP_BUY, если при этом есть OP_BUYLIMIT OP_SELLLIMIT OP_SELL и др она не выдает .
да стем я разобрался, теперь проблема с функцией if не как не пойму в чем прокол де я шо е так зделал
общем суть таkая шо первое значение исполnяется к ниму притензий нет
а вот это не кaк не хочет if (HaveBuyLimitOrderEnd== true)
{ModifyBuyStopOrder(PRAskS); // Выбираем
} }
словами это звучит так если есть ордер HaveBuyLimitOrderEnd то модарнизируем его с переменой ценой PRAskS
вот чтото не правельnо а что не могу понять, значение HaveBuyLimitOrderEnd беру из void Myorders() код выше постом
а да в это значение if(bt==1&&bl==7) является главным тобиш если оно истино исполняем все шо ниже
да скорей всего чтото с HaveBuyLimitOrderEnd== true ибо ставил OrderLots()==3*Lot все работает токо оно наченает модифиирывать все ордера с лотом 0.3
Обратите внимание, что выделено красным . Тип торговых ордеров одинаков, а переменные в труе устанавливаются разные, так и должно быть .
да так и должно быть ибо там разне функции открытия и запрос я делаю не по OrderType() а запрашую флаг тобиш открыт ли он, но проблема скорее Hе в этой функции ибо остальные запросы тоже не фурычат это я первый пo п авшийся кинул, И ОНО ПО ТОЙ ФУНКЦИИ НOРМАЛЬНО ОТКРЫВАЕТ
ТАК ЧТО ПРОБЛЕМА ИМЕНО С ЗАПРОСОМ В ОПЕРАТОРЕ
Похоже проблема в другом месте. Но надо веь код наверно увидеть.
Похоже проблема в другом месте. Но надо веь код наверно увидеть.
точно не в другом все остальное работает роблема имено в том что запрос (HaveBuyLimitOrderEnd== true) не правельный вот и ломаю гоову как ему еще сказать что надо модифицирывать и удалять,
или само построение зпроса не верно
if(bs==1&&bl==3)
{OpenBuyLimitOrderEnd(Lot*15,PRAskL);
if (HaveBuyLimitOrderEnd== true)
{ModifyBuyStopOrder(PRAskS);
} }
да так и должно быть ибо там разне функции открытия и запрос я делаю не по OrderType() а запрашую флаг тобиш открыт ли он, но проблема скорее Hе в этой функции ибо остальные запросы тоже не фурычат это я первый пo п авшийся кинул, И ОНО ПО ТОЙ ФУНКЦИИ НOРМАЛЬНО ОТКРЫВАЕТ
ТАК ЧТО ПРОБЛЕМА ИМЕНО С ЗАПРОСОМ В ОПЕРАТОРЕ
А вот интересно в функциях выделенных красным устанавливается флаг HaveBuyLimitOrderEnd в труе .Если нет то вам надо перед if вызвать Myorders(). Иначе фиг знает что там находится . И на всякий случай , флаги (переменные )
HaveBuyOrder = false;
HaveSellOrder = false;
HaveBuyStopOrder = false;
HaveSellStopOrder = false;
HaveBuyLimitOrder = false;
HaveSellLimitOrder = false;
HaveBuyLimitOrderEnd = false;
HaveSellLimitOrderEnd = false;
должны быть определены на глобальном уровне .
А вот интересно в функциях выделенных красным устанавливается флаг HaveBuyLimitOrderEnd в труе .Если нет то вам надо перед if вызвать Myorders(). Иначе фиг знает что там находится . И на всякий случай, флаги (переменные )
HaveBuyOrder = false;
HaveSellOrder = false;
HaveBuyStopOrder = false;
HaveSellStopOrder = false;
HaveBuyLimitOrder = false;
HaveSellLimitOrder = false;
HaveBuyLimitOrderEnd = false;
HaveSellLimitOrderEnd = false;
должны быть определены на глобальном уровне .
это на глабальном уровне
bool HaveBuyOrder; // флаг наличия открытых рыночных ордеров на покупку
bool HaveSellOrder; // флаг наличия открытых рыночных ордеров на продажу
bool HaveBuyStopOrder; // флаг наличия открытых отложеных ордеров на покупку
bool HaveSellStopOrder; // флаг наличия открытых отложеных ордеров на продажу
bool HaveBuyLimitOrder; // флаг наличия открытых отложеных ордеров на покупку
bool HaveSellLimitOrder; // флаг наличия открытых отложеных ордеров на продажу
bool HaveBuyLimitOrderEnd; // флаг наличия открытых отложеных ордеров на покупку
bool HaveSellLimitOrderEnd; // флаг наличия открытых отложеных ордеров на продажу
это в функции открытия ордера
ticket = OrderSend(Curr_symb,OP_BUYSTOP, Lot, PRAskS, Slippage, SL, TP, 0, Magic, 0, CLR_NONE);
if (ticket > 0) {
HaveBuyStopOrder = true;
if (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES)) Print("функция для выставления ордера BuyStop : ", OrderOpenPrice());
}
else Print("Ошибка № ", GetLastError(), " функция для выставления ордера BuyStop",MarketInfo(Curr_symb,MODE_ASK));
return(ticket);
}
ТАК ЧТО ГОВАРЮШ ВСЕ ОСТАЛЬНОЕ РАБОТАЕТ