Значит есть код. Задача его такая. Открывается Рыночный Бай ( СЛ и ТП по 40 пунктов.). От цены открытия Бая на одинаковой дистанции должен открыться БайСтоп и СеллСтоп. Так вот, где то в ценах ошибки. Так как летят ошибки в журнале 4107 . Ткните носом, где я туплю. Вроде уже и на бумажке расписывал цены, а всё равно бок.
Всем откликнувшимся, заранее спасибо.
Код советника прикреплён
И такая фигня в Илане прописана:
if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Red); if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Red); if (OrderType() == OP_BUYSTOP) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Red); if (OrderType() == OP_SELLSTOP) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Red);
Отложенные ордера удаляются OrderDelete(), а не закрываются.
И где Вы так организовывать цикл перебора ордеров учились:
for (int i=1; i<= OrdersTotal(); i++) { if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
Перебор организовывается от последнего к первому.
Переменная spread объявлена как init, а вычисляется:
Spread= NormalizeDouble(Ask,Digits)-NormalizeDouble(Bid,Digits);
Нормализовывать нужно не Ask или Bid (для СТОПов)
NormalizeDouble(Ask,Digits) - New_Stop(MarketLoss)*Point
а передаваемое в торговую функцию значение:
NormalizeDouble (Ask - New_Stop(MarketLoss)*Point,Digits)
Чтобы:
OpnBuyPrice=OrderOpenPrice();
Нужно провести процедуру выделения ордера OrderSelect().
Это что сразу бросилось в глаза. Тяжело читать чужой код в котором не "видно" типа переменной, где не упорядочена структура кода.
Значит есть код. Задача его такая. Открывается Рыночный Бай ( СЛ и ТП по 40 пунктов.). От цены открытия Бая на одинаковой дистанции должен открыться БайСтоп и СеллСтоп. Так вот, где то в ценах ошибки. Так как летят ошибки в журнале 4107 . Ткните носом, где я туплю. Вроде уже и на бумажке расписывал цены, а всё равно бок.
Всем откликнувшимся, заранее спасибо.
Код советника прикреплён
Не особо вникал в логику и правописание, но не увидел в прикрепленном тексте перед " // выход из старт " return(0);
Мелким шрифтом:- как-бээ..... компактнее надо писать.... плотнее, что-ли.
Кстати, Ask и Bid по определению нормализованы.
И не уверен, можно ли вызывать функцию внутри OrderSend(), сам так никогда не делал.
И такая фигня в Илане прописана:
Отложенные ордера удаляются OrderDelete(), а не закрываются.
И где Вы так организовывать цикл перебора ордеров учились:
Перебор организовывается от последнего к первому.
Переменная spread объявлена как init, а вычисляется:
Нормализовывать нужно не Ask или Bid (для СТОПов)
а передаваемое в торговую функцию значение:
Чтобы:
Нужно провести процедуру выделения ордера OrderSelect().
Это что сразу бросилось в глаза. Тяжело читать чужой код в котором не "видно" типа переменной, где не упорядочена структура кода.
Не особо вникал в логику и правописание, но не увидел в прикрепленном тексте перед " // выход из старт " return(0);
Мелким шрифтом:- как-бээ..... компактнее надо писать.... плотнее, что-ли.
Кстати, Ask и Bid по определению нормализованы.
И не уверен, можно ли вызывать функцию внутри OrderSend(), сам так никогда не делал.
нет. аск и бид не нормализованы.
и что вы имеете ввиду "компактнее"? просто у меня параметры ОрдерСенд записаны в столбик для наглядности
нет. аск и бид не нормализованы.
и что вы имеете ввиду "компактнее"? просто у меня параметры ОрдерСенд записаны в столбик для наглядности
Результаты операций с аск и бид не нормализованы, Ask и Bid по определению нормализованы.
Компактнее это значит компактнее.
Попробуйте уменьшить кол-во пробельных строк между блоками
ух ) спасибо. буду крутить. но вы там не сказали, почему отложки не открываются
OpnBuyPrice=OrderOpenPrice();
Нужно провести процедуру выделения ордера OrderSelect(). Вы цену отложки считаете от OpnBuyPrice, а там пусто. Пропринтуйте для интереса.Print ("OpnBuyPrice = ", OpnBuyPrice);
Чтобы: Нужно провести процедуру выделения ордера OrderSelect(). Вы цену отложки считаете от OpnBuyPrice, а там пусто. Пропринтуйте для интереса.
да, я понял. просто это уже стонадцатый варинат. а в каком то цена вычислялась.
вот делаю так
TotalBuy=0; TotalBuyStop=0; TotalSellStop=0; for(int i=1; i<=OrdersTotal(); i++) { if (OrderSelect(i-1,SELECT_BY_POS)==true) { if (OrderSymbol()!=Symbol() || OrderMagicNumber() != Magic) continue; { if (OrderType() == OP_BUY) { OpnBuyPrice=OrderOpenPrice(); TotalBuy++; } if (OrderType() == OP_BUYSTOP) { TotalBuyStop++; } if (OrderType() == OP_SELLSTOP) { TotalSellStop++; } } } Comment(" ", "\n TotalBuy = ",TotalBuy, "\n TotalBuyStop = ",TotalBuyStop, "\n TotalSellStop = ",TotalSellStop, "\n OpnBuyPrice = ", OpnBuyPrice); if (TotalBuy>1) Opn_B=false; if (TotalBuyStop>1) Opn_BS=false; if (TotalSellStop>1) Opn_SS=false; }
в какой части бок? ато если просто исправите, то не запомню. и как сделать перебор ордеров в обратном порядке?
ЗЫ перебор взят из учебника по МКЛ
да, я понял. просто это уже стонадцатый варинат. а в каком то цена вычислялась.
вот делаю так
в какой части бок? ато если просто исправите, то не запомню. и как сделать перебор ордеров в обратном порядке?
ЗЫ перебор взят из учебника по МКЛ
В оригинальном коде строчка была закоментирована - теперь правильно. Цикл перебора ордеров в обратном порядке:
for (int i=OrdersTotal() - 1; i >= 0; i-) { if (!OrderSelect (i, SELECT_BY_POS)) continue;
В оригинальном коде строчка была закоментирована - теперь правильно. Цикл перебора ордеров в обратном порядке:
спасибо. я, кстати, разобрался, почему цена открытия ордера не считалась. Потому что я, балда, поставил тип переменной int вместо double . теперь ещё пару косячков решить и будет отлично. всем, кто отписал большое спасибо
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Значит есть код. Задача его такая. Открывается Рыночный Бай ( СЛ и ТП по 40 пунктов.). От цены открытия Бая на одинаковой дистанции должен открыться БайСтоп и СеллСтоп. Так вот, где то в ценах ошибки. Так как летят ошибки в журнале 4107 . Ткните носом, где я туплю. Вроде уже и на бумажке расписывал цены, а всё равно бок.
Всем откликнувшимся, заранее спасибо.
Код советника прикреплён