Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 138

 
Здравствуйте, а скажите можно в мт4 подключить на счет сигнал для копирования и робота и подключить все это дело к vps?
 
2002569:  Здравствуйте, а скажите можно в мт4 подключить на счет сигнал для копирования и робота и подключить все это дело к vps?

Да конечно можно!!!

 

Привет ребята. Подскажите кто превосходно знаком с программированием. 

Создаю при определенных условиях горизонтальную линию. Определю цену с помощью OLB для того чтобы OpenlineB использовать в другом коде в виде цены горизонтальки. В другом коде где она нужна выводится целым числом. Например цена 110,256 и показывает 110. Это узнал с помощью Comment. Почему не выводится точная цена, в чем проблема?

int OpenlineB() {
    double ma60=...;
    double ma=...;
    if((fMarketOrders(OP_BUY)==0)) { 
         ObjectCreate(0,"BUY",OBJ_HLINE,0,0,ma60+ma); }   
 int OLB=ObjectGet("BUY", OBJPROP_PRICE1);      
 return(OLB);}

int TRlineB(){
Comment(OpenlineB());
return(true);}
 
Rustam Bikbulatov:

Привет ребята. Подскажите кто превосходно знаком с программированием. 

Создаю при определенных условиях горизонтальную линию. Определю цену с помощью OLB для того чтобы OpenlineB использовать в другом коде в виде цены горизонтальки. В другом коде где она нужна выводится целым числом. Например цена 110,256 и показывает 110. Это узнал с помощью Comment. Почему не выводится точная цена, в чем проблема?

int double OpenlineB()

У вас функция возвращает целое число. Что получили, то и распечатало.
Ну и само собой далее в функции приводите к формату double.

 
Konstantin Nikitin:

У вас функция возвращает целое число. Что получили, то и распечатало.
Ну и само собой далее в функции приводите к формату double.

double OpenlineB() {
    double ma60=...;
    double ma=...;
    if((fMarketOrders(OP_BUY)==0)) { 
         ObjectCreate(0,"BUY",OBJ_HLINE,0,0,ma60+ma); }   
 int OLB=ObjectGet("BUY", OBJPROP_PRICE1);      
 return(OLB);}

Уже пробовал. выводит целое число

 
Konstantin Nikitin:

У вас функция возвращает целое число. Что получили, то и распечатало.
Ну и само собой далее в функции приводите к формату double.

int OpenlineB() {
    double ma60=iMA(NULL,1,5,0,1,0,1);
    double ma=(iMA(NULL,60,6205,0,1,2,1)-iMA(NULL,60,6205,0,1,3,1));
    if((fMarketOrders(OP_BUY)==0)) { 
         ObjectCreate(0,"BUY",OBJ_HLINE,0,0,ma60+ma); }   
 double OLB=ObjectGet("BUY", OBJPROP_PRICE1);      
 return(OLB);}

Я понял!!! Спасибо дорогой Константин!!!!!!!!!!!!!!!!!!

 
Rustam Bikbulatov:

Уже пробовал. Выходит целое число.

Попробуйте через ObjectGetDouble
И исправьте объявление функции на

double OpenlineB() {
 
Konstantin Nikitin:

Попробуйте через ObjectGetDouble

Все сделал!

double OpenLineB() {
    double ma60=iMA(NULL,1,5,0,1,0,1);
    double ma=(iMA(NULL,60,6205,0,1,2,1)-iMA(NULL,60,6205,0,1,3,1));
    if((fMarketOrders(OP_BUY)==0)) { 
         ObjectCreate(0,"BUY",OBJ_HLINE,0,0,ma60+ma); }   
 double OLB=ObjectGet("BUY", OBJPROP_PRICE1);      
 return(OLB);}

Спасибо!!!

 
Rustam Bikbulatov:

Все сделал!

Спасибо!!!

Можно чуток усечь

double OpenLineB() {
  double ma60=iMA(NULL,1,5,0,1,0,1);
  double ma=(iMA(NULL,60,6205,0,1,2,1)-iMA(NULL,60,6205,0,1,3,1));
  if(fMarketOrders(OP_BUY)==0) 
   ObjectCreate(0,"BUY",OBJ_HLINE,0,0,ma60+ma);
 return(ObjectGetDouble(0,"BUY",OBJPROP_PRICE));
}
 
Vitaly Muzichenko:

Можно чуток усечь

double OpenLineB() {
  if(fMarketOrders(OP_BUY)==0) {
    double ma60=iMA(NULL,1,5,0,1,0,1);
    double ma=(iMA(NULL,60,6205,0,1,2,1)-iMA(NULL,60,6205,0,1,3,1));
    ObjectCreate(0,"BUY",OBJ_HLINE,0,0,ma60+ma);
    return ma60+ma;
  }
 return(ObjectGetDouble(0,"BUY",OBJPROP_PRICE));
}

чтобы не дёргать лишнее... а иначе при каждом обращении вызываются данные индикатора из кеша
да и уровень линии "BUY" логичнее держать в своих переменных и не лазить за ними на чарт.

Причина обращения: