Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Хочешь изучить язык MQL5? 300 статей помогут тебе!
protr
358
protr 2015.08.25 13:25 

Здравствуйте. Не могу вывести спред... почемуто дает ноль или во втором варианте от 1 до 4.. при том что спред 12 - 20 пунктов... в 5 занках. Спасибо.

void OnTick()
  {
//---------1  
     Print("Ask ",NormalizeDouble (Ask,6));
     Print("Bid ",NormalizeDouble (Bid,6));
     
     double Spread_1 = NormalizeDouble (Ask - Bid,5);
     
     Print ("                     Spread_1 ",Spread_1);
     
//---------2
     int Spread_2 = MarketInfo("EURUSD",MODE_SPREAD);
     Print ("                     Spread_2 ",Spread_2);
         
     }
    
      
  }
Artyom Trishkin
Модератор
73972
Artyom Trishkin 2015.08.25 14:32  
protr:

Здравствуйте. Не могу вывести спред... почемуто дает ноль или во втором варианте от 1 до 4.. при том что спред 12 - 20 пунктов... в 5 занках. Спасибо.

Попробуйте:

void OnTick()
  {
   int spread=(int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
   int digits=(int)SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
   double ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   double bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
   //---
   Comment(
           "\nSymbol: "+_Symbol+
           "\nAsk-Bid: "+DoubleToString(ask-bid,digits)+
           "\nSpread: "+IntegerToString(spread)
          );
  }

Это по текущему символу.

Кстати, а вы на каком символе запускаете свой код?

Alexey Volchanskiy
16221
Alexey Volchanskiy 2015.08.25 14:39  
protr:

Здравствуйте. Не могу вывести спред... почемуто дает ноль или во втором варианте от 1 до 4.. при том что спред 12 - 20 пунктов... в 5 занках. Спасибо.

Вот так все работает, смотри коммент в коде

     Print("Ask ",NormalizeDouble (Ask,6));
     Print("Bid ",NormalizeDouble (Bid,6));
     
     string Spread_1 = DoubleToString(Ask - Bid,5);
     
     Print ("                     Spread_1 ",Spread_1);
     
//---------2
     //string Spread_2 = DoubleToString( MarketInfo("EURUSD",MODE_SPREAD), 5); // !!!!!!!!!!!!!!!!!!! а точно символ называется именно так, без всяких суффиксов?
     string Spread_2 = DoubleToString( MarketInfo(Symbol(),MODE_SPREAD), 5);
     Print ("                     Spread_2 ",Spread_2);
2015.08.25 15:36:30.652 ScalpHunter EURUSD.e,M1:                      Spread_2 4.00000
2015.08.25 15:36:30.652 ScalpHunter EURUSD.e,M1:                      Spread_1 0.00004
2015.08.25 15:36:30.652 ScalpHunter EURUSD.e,M1: Bid 1.14859
2015.08.25 15:36:30.652 ScalpHunter EURUSD.e,M1: Ask 1.14863
2015.08.25 15:36:30.629 ScalpHunter EURUSD.e,M1:                      Spread_2 3.00000
2015.08.25 15:36:30.629 ScalpHunter EURUSD.e,M1:                      Spread_1 0.00003
2015.08.25 15:36:30.629 ScalpHunter EURUSD.e,M1: Bid 1.14859
2015.08.25 15:36:30.629 ScalpHunter EURUSD.e,M1: Ask 1.14862
Yuri Evseenkov
2291
Yuri Evseenkov 2015.08.25 15:20  
protr:

Здравствуйте. Не могу вывести спред... почемуто дает ноль или во втором варианте от 1 до 4.. при том что спред 12 - 20 пунктов... в 5 занках. Спасибо.

Да работает Ваш код. На МТ4 проверил.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий