Форум трейдеров » Торговые роботы, советники, индикаторы » Помогите исправить код експерта
+ Подписаться
  1. 3
    Комментарии
    2
    Темы
    3
    Репутация Pro
     
    Новичок

    2 Медалей

    Помогите исправить код експерта

    //+------------------------------------------------------------------+
    //| SHE_Lucky.mq4 |
    //| Copyright © 2006, strategy.alfamoon |
    //| http://expertmillionaire.ru/ |
    //+------------------------------------------------------------------+

    double a, b;
    bool first=false;
    extern int Shift = 3;
    extern int Limit = 5;

    //----------------------------------------------------------------------------
    int start(){


    if (Ask-a>=Shift*Point)
    {OrderSend(Symbol(),OP_SELL,GetLots(),Bid,3,Bid+15 *Point,0,"",0,0,CLR_NONE);}
    if (b-Bid>=Shift*Point)
    {OrderSend(Symbol(),OP_BUY,GetLots(),Ask,3,Ask-15*Point,0,"",0,0,CLR_NONE);}

    a=Ask;
    b=Bid;

    CloseAll();
    return(0);}
    //-----------------------------------------------------------------------------
    void CloseAll() {
    for (int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--) {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderSymbol() == Symbol()) {
    if ((OrderProfit()>0)) {
    if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NON E);
    if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NON E);
    }
    else {
    if((OrderType()==OP_BUY) && (((OrderOpenPrice()-Ask)/Point) > Limit))
    OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NON E);
    if((OrderType()==OP_SELL) && (((Bid-OrderOpenPrice())/Point) > Limit))
    OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NON E);
    }
    }
    return (0);}
    }
    //--------------------------------------------------------------------------
    double GetLots() {
    return (NormalizeDouble(AccountFreeMargin()/10000,1));
    //
    }
    //-------------------------------------------------------------------------


    Помогите исправить код чтобы он открывался не раз
    Его надо постоянно декомпилировать чтобы он работал
    Раз открыл сделку и все надо декомпилировать и будет еще одна!!!
    Недоступно! Pro 0
    Поделиться
    Просмотров: 2,314
  2. 1,401
    Комментарии
    13
    Темы
    1408
    Репутация Pro
    Аватар для Karakurt  
    Мастер форумных наук

    5 Медалей
    Я Вам скажу, где ошибка, а уж исправлять Вы как-нибудь сами...

    double a, b;
    Здесь при первом проходе a=0 и b=0 (на будущее: лучше указывать явно).

    if (Ask-a>=Shift*Point)
    Здесь при первом проходе Ask - 0 > 3 пипсов, и условие выполняется.

    a=Ask;
    Здесь Вы запоминаете Ask, и при каждом новом тике снова сравниваете. Получается Ask - Ask старый > 3 (сдвиг). На валютах за один тик цена редко уходит дальше 3-х пипсов, и условие не выполняется. Потом Вы снова запоминаете текущий Ask... и далее по кругу.

    Интересно, а хоть один BUY у Вас выполнился? Т.к. 0 - Bid - число отрицательное и больше 3-х быть не может. :)

Вверх
РегистрацияX

чтобы писать, читать, комментировать