как получить спрос и предложение от .Net ClrWrapper

Я использую MetaTrader4.Manager.Wrapper

Я хочу получить всю валюту (символ в MT4) и их бид и аск из MT4. Я пытался использовать:

public IList<Symbol> Get()
    {
        using (var metatrader = new ClrWrapper(new ConnectionParameters
        {
            Login = serverdata.Login,
            Password = serverdata.Password,
            Server = serverdata.Server
        }, serverdata.path))
        {
            var Refresh = metatrader.SymbolsRefresh();

            IList<Symbol> Live = metatrader.SymbolsGetAll();
            return Live;

        }
    }

Из кода я получил имя: AUDCAD, AUDCHF, EURCHF и т. д., но BidTickValue и AskTickValue возвращают 0,0.

Я попытался использовать этот ответ, но Symbol возвращает null, а Bid возвращает 0 .

Есть ли другой способ получить значение Name и Bid и Ask? И что значит режим прокачки? Спасибо перед


person Chang Hong    schedule 06.03.2017    source источник


Ответы (2)


Прокачка — это режим МТ4, когда вы подписываетесь на разные события, а сервер МТ4 присылает вам обновления, не запрашивая их вручную.

Например: котировки, сделки, пользователи.

SymbolsGetAll вернет вам котировки только тогда, когда вы находитесь в режиме прокачки, и вернет последнюю полученную котировку.

Если вы не собираетесь использовать режим прокачки, вы можете получить последнюю котировку методом пользователя ChartRequest, но это будет намного медленнее.

person Uriil    schedule 06.03.2017
comment
Если я использую ChartRequest, я получаю значение ставки только с помощью Mode = ChartRequestMode.RangeLast в period = ChartPeriod.M1. Как я могу получить значение запроса? Я также пытаюсь использовать режим прокачки. Вот код: - person Chang Hong; 07.03.2017
comment
imgur.com/a/WHndk (код). я копирую и вставляю из вашего примера в github. Все, что я получаю, это то же самое без режима прокачки. Можете ли вы привести какой-нибудь пример, чтобы получить ставку и спросить, используя веб-API asp.net + MetaTrader4.Manager.Wrapper? @Уриил - person Chang Hong; 07.03.2017
comment
Вот пример: github.com/Uriil/MetaTrader4.Manager .Wrapper/вики/ - person Uriil; 07.03.2017
comment
я использую ваш пример, но в symbolsInfos возвращает ноль. - person Chang Hong; 07.03.2017
comment
если я использую ChartRequest, я получаю значение Open от Rateinfo. После того, как я сравню его с обзором рынка, значение Open = Bid ​​в обзоре рынка, как мне получить значение Ask? @uriil - person Chang Hong; 07.03.2017
comment
@ChangHong, чтобы получить запрос, вам нужно добавить ставку, которую вы можете получить из структуры конфигурации символа. По поводу symbolInfos == null. Пожалуйста, предоставьте мне пример с временными учетными данными, чтобы я мог его проверить. Потому что я думаю, что вы что-то упускаете, и приведенный выше код работает для меня. - person Uriil; 07.03.2017
comment
я меняю Console на Debug и он выходит, теперь как его вернуть, потому что я использую веб-API и не могу его вернуть. Какая структура конфигурации одного символа? - person Chang Hong; 07.03.2017
comment
Это слишком широкий вопрос, и мы не можем обсуждать его в комментариях. - person Uriil; 07.03.2017
comment
там в любом случае? может электронная почта? Можете ли вы объяснить более подробно, как получить аск? - person Chang Hong; 07.03.2017

Вы можете получать котировки с предложением и запросом напрямую без API менеджера. Просто вы можете отправить сокет на сервер MT4. Вот пример:

// 1. Start Session.
$ptr=fsockopen('127.0.0.1',443);
// error check
if (!$ptr){
  echo "Connection error";
  exit;
}
// 2. Send request to MT4
fputs($ptr,"WQUOTES-EURUSD,GBPUSD,USDJPY,\nQUIT\n");
// 3. Reading and processing server responses
while(!feof($ptr))
  {
   // read line of symbols
   $line=fgets($ptr,128); 
   // the symbol of the end of result transfer
   if($line=="end\r\n") break; 
   // process
   print $line; 

  }
// 4. Session completion
  fclose($ptr);

Приведенное выше напечатает котировки в следующем формате: символ направления цена цена цена цена время.

person M.Hatoum    schedule 07.04.2017