Попробуйте проинициализировать переменные b_orders и s_orders:
int b_orders = 0, s_orders = 0;
Все очень просто - вы слишком рано даете новое значение переменной PrevTime и до SELL дело просто не доходит.
Нужно сделать так:
datetime PrevTime = 0; //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int order_type, order_magic; int b_orders = 0, s_orders = 0; if (PrevTime==Time[0]) return(0); for (int i=1; i<=OrdersTotal(); i++) //Цикл по всем ордерам,.. { //отражённым в терминале if(OrderSelect(i-1,SELECT_BY_POS)==true) //Если есть следующий { // Здесь должен выполняться анализ характеристик ордеров //-------------------- order_type=OrderType(); order_magic=OrderMagicNumber(); if(order_type==0 && order_magic==magic) // выбран ордер buy {b_orders++;} if(order_type==1 && order_magic==magic) // выбран ордер sell {s_orders++;} //-------------------- } } //-------------------------------------------------------------------- // настройки alligator double jaw = iAlligator(NULL, 0, jaw_period, jaw_shift, teeth_period, teeth_shift, lips_period, lips_shift, MODE_SMMA, PRICE_MEDIAN, MODE_GATORJAW, j); double teeth = iAlligator(NULL, 0, jaw_period, jaw_shift, teeth_period, teeth_shift, lips_period, lips_shift, MODE_SMMA, PRICE_MEDIAN, MODE_GATORTEETH, j); double lips = iAlligator(NULL, 0, jaw_period, jaw_shift, teeth_period, teeth_shift, lips_period, lips_shift, MODE_SMMA, PRICE_MEDIAN, MODE_GATORLIPS, j); //---- // настройки MACD double macd_0 = iMACD(NULL, 0, fast_ema, slow_ema, signal, PRICE_CLOSE, MODE_MAIN, j); double macd_1 = iMACD(NULL, 0, fast_ema, slow_ema, signal, PRICE_CLOSE, MODE_MAIN, j+1); //-------------------------------------------------------------------- // открытие ордеров if (Bid<jaw && Bid<teeth && Bid<lips && s_orders==0) // открытие sell { OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, Ask+SL*Point, 0, "sell_ALL&MACD", magic, 0, CLR_NONE); } if (Ask>jaw && Ask>teeth && Ask>lips && b_orders==0) // открытие buy { OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, Bid-SL*Point, 0, "buy_ALL&MACD", magic, 0, CLR_NONE); } PrevTime=Time[0]; //---- return(0); }
спасибо. помогло
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
начал писать советника. запускаю на тестере визуализацию. и почему то открывает только позиции buy. не могу понять в чем проблема. подскажите
заранее благодарен!