Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 192

 
Desead:

Конечно спасибо, но если лень прочитать вопрос, то смысл тогда вообще отвечать ? В двух функциях которые есть для работы с уровнями в индикаторе я могу изменить их значение, толщину, цвет и стиль. А вот к описанию доступа у меня нет. Повторюсь знает ли кто ответ. Может сталкивался ?

Прилепил картинку чтобы было видно что мне надо.


Не было и нету, вероятно, не будет никогда в таком виде.
 
yan720:

Тогда эта функция, по-Вашему, не будет работать? Испытания не проводил, но она, как мне кажется, является частью работающего кода (этот Илан явно пересобирали из чего-то худо-бедно отлаженного). Или всё же корявый код?




Пользуетесь:

void Modify_orders (double AverPrice, double SLoss, double TProfit){
   double Stoplevel =  MarketInfo(Symbol(),MODE_STOPLEVEL);
   datetime GTCount_1 = 0;
   datetime GTCount_2 = 0;
   int ppos = 0;
   if ((AverPrice != 0) == TRUE){
      for (ppos = OrdersTotal() - 1; ppos >= 0; ppos--){
          if (OrderSelect(ppos, SELECT_BY_POS, MODE_TRADES) == TRUE){
            if ((OrderSymbol() != Symbol() || OrderMagicNumber() != Magic || OrderType() >= 2) == TRUE) continue;
            if ((OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) == TRUE){ 
            if ((OrderType() == 0) == TRUE){ 
               if(Bid - SLoss < Stoplevel * Point){ SLoss = ND(Bid - Stoplevel * Point);}
               if(TProfit - Ask < Stoplevel * Point){ TProfit = ND(Ask + Stoplevel * Point);}
            }else if ((OrderType() == 1) == TRUE){ 
               if(SLoss - Ask < Stoplevel * Point){ SLoss = ND(Ask + Stoplevel * Point);}
               if(Bid - TProfit < Stoplevel * Point){ TProfit = ND(Bid - Stoplevel * Point);}
               }
                  GTCount_1 = GetTickCount();           
                  OrderModify(OrderTicket(), AverPrice, SLoss, TProfit, 0, Yellow);  
                  GTCount_2 = GetTickCount() - GTCount_1;
                   // Print("Modify time(ms):   ", GTCount_2, "   /  Ticket: ", OrderTicket()," /  Time: ", TimeToStr (TimeCurrent(), TIME_SECONDS), " /  Average price: ",AverPrice, " /  SL: ",SLoss, " /  TP: ",TProfit); 
                Sleep(33);                
                }
            }
        } 
    }
}
double ND(double value){
   return(NormalizeDouble(value, Digits));
}
 
digits:


Пользуетесь:

Ваша функция не обрабатывает ошибки торгового сервера. Функцию OrderModify() нужно оформить отдельной полноценной функцией с обработкой ошибок и адекватным реагированием на них.

И опять-таки зачем вот это?

if ((OrderSymbol() != Symbol() || OrderMagicNumber() != Magic || OrderType() >= 2) == TRUE) continue;
if ((OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) == TRUE){

зачем масло-масляное?

 
digits:


Пользуетесь:


нет, таким г не пользуемся.
 

Странно было бы, купив хлебушка по 20, прийти домой и изменить цену покупки до 5 рублей, а потом в кошельке увидеть приход 15 рублей разницы... Фантастика... ;)

Хлебушко хоть потом перепродать хоть за 35 р можно (15 р прибыли), а вот комиссию брокер точно не отдаст :=)

 

Доброго времени суток. Пару дней как начал изучать MQL, перечитал сайт, но не могу найти ответ. (не судите строго новичка )

Ребят подскажите как правильно написать функцию закрытия ордера. По всякому пробую и никак не закрывает.Вот простенький код который должен закрывать ордер при пересечение MA(5) и MA(21)

Спасибо.

double ma50;

double ma51;

double ma210;

double ma211;

double ma550;

double Stoh;

int start()

{

//Open Orders--------------------------------------------------------------------------------

{

ma50=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0);

ma51=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1);

ma210=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,0);

ma211=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,1);

ma550=iMA(NULL,0,55,0,MODE_EMA,PRICE_CLOSE,0);

Stoh=iStochastic(Symbol(),5,5,3,3,MODE_SMA,1,MODE_MAIN,0);

if(OrdersTotal()==0 && ma50 > ma51 && ma50 > ma210 && ma51 < ma211 && ma210 > ma550 )

OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,"BUY",123,0,Red);

}

//Close Orders--------------------------------------------------------------------------------

{

if(OrdersTotal()==1 && ma50 < ma210 )

if(OrderSelect(10,SELECT_BY_POS)==true)

OrderClose(OrderMagicNumber(),Lots,Bid,1,CLR_NONE);

}

}


 
AlexCY:

Доброго времени суток. Пару дней как начал изучать MQL, перечитал сайт, но не могу найти ответ. (не судите строго новичка )

Ребят подскажите как правильно написать функцию закрытия ордера. По всякому пробую и никак не закрывает.Вот простенький код который должен закрывать ордер при пересечение MA(5) и MA(21)

Спасибо.

Правильность кода непосредственно зависит от того что вы, конкретно вы, и никто другой, подразумиваете под етим термином.

Здесь вы привели попытку открытия ордера с такойже но чуть более некоректной попыткой его закрытия.

Единственно что могу посоветовать - идите изучайте язык далее, нечего спешить, ведь слишком маленькая база основная причина непонимания.

не коректные параметры в OrderClose. + при одном ордере OrderSelect берется с номером 0. + вы уверены что после открытия на следующий тик или чере два "ma50 < ma210" не будет исполнено скушав ваш спред?

а и код вставляется через кнопочку SRC на панеле инструментов.

 

Добрый день.

Нужно в коде индикатора отлавливать момент, когда на графике появляется новая трендовая, и получать имя этой трендовой.

Кроме отслеживания на каждом тике списка всех объектов, фиксации момента изменения кол-ва объектов и потом перебора всего списка в надежде найти только что нанесенный объект... есть ли другие, менее затратные способы? Если да, то как это попроще реализовать?

 
satorifx:

Добрый день.

Нужно в коде индикатора отлавливать момент, когда на графике появляется новая трендовая, и получать имя этой трендовой.

Кроме отслеживания на каждом тике списка всех объектов, фиксации момента изменения кол-ва объектов и потом перебора всего списка в надежде найти только что нанесенный объект... есть ли другие, менее затратные способы? Если да, то как это попроще реализовать?


а в часть гне непосредственно наносится обьект добавить ссылку на блок с обработкой вышеуказуемого?
 
ALXIMIKS:

а в часть гне непосредственно наносится обьект добавить ссылку на блок с обработкой вышеуказуемого?
Так собственно о какой части речь? У меня 2 способа нанесения трендовых: своим собственным скриптом (да - туда я могу что угодно добавить), и стандартная трендовая, наносимая средствами МТ4 (и вот сюда то я ничего добавить не могу). В том и задача, чтобы отследить нанесение трендовой любым способом.