Работа завершена

Время выполнения 5 часов
Отзыв от заказчика
Good and fast programmer, quickly responds to messages, stays on point.
Отзыв от исполнителя
Great customer, very friendly and kindly.

Техническое задание

I have been using bittrex bot for over a year and few days ago it started to report BAD REQUEST (400) error. (my code did not change, something changed in Bittrex)

this is my mql code:

int nonce = TimeGMT();
string uri = "https://bittrex.com/api/v1.1/market/getopenorders?apikey="+api_key+"&nonce="+nonce; 
StringToCharArray(uri, uri_char, 0, WHOLE_ARRAY, CP_UTF8); 
string output = CryptCreateSHA512Hash(uri,api_secret); 
ArrayResize(uri_char, ArraySize(uri_char)-1);
string headers = "apisign:"+output; 
int res=WebRequest("POST",uri, headers,private_api_timeout,uri_char, result_char, result_headers);
result = CharArrayToString(result_char,0,WHOLE_ARRAY);
if(res!=200)
{
   Print2("Authorization error #"+(string)res+", LastError="+(string)GetLastError());
   Print2("result = "+result);
   Print2("ERROR: Positions NOT LOADED from all pairs!");
} else {
...
}

reports:

Authorization error #400, LastError=0
result2 = Bad Request

php example, that works:

<?php

$apikey='xxx';
$apisecret='xxx'; 
$nonce=time(); 
$uri='https://bittrex.com/api/v1.1/market/getopenorders?apikey='.$apikey.'&nonce='.$nonce; 
$sign=hash_hmac('sha512',$uri,$apisecret); 
$ch = curl_init($uri); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('apisign:'.$sign)); 
$execResult = curl_exec($ch); 
$obj = json_decode($execResult);

if (curl_error($ch)) {
    $error_msg = curl_error($ch);
    echo 'error='.$error_msg;
} else {
    echo 'execResult='.$execResult;
}

?>

returns:

{"success":true,"message":"","result":[]}execResult=1


When I wrote their customer support, they replied:

Hi,

The the V1.1 API has been changed to no longer accept request bodies. You must use the API as documented with a query string.

https://support.bittrex.com/hc/en-us/articles/115003723911-Developer-s-Guide-API

Best Regards,

But I still can't catch what am I doing wrong in my code. Another response from service desk, after me implying that their method doesn't work for me:

HI,

Our developers are working to resolve this issue. Please see the information below. 

There is a workaround to use GetOrdersEx which does not require a POST.

## API POST Account/GetOrders

* Method : POST
* URL : https://bittrex.com/api/v1.1/Account/GetOrders?apikey=xxx&nonce=1234
* HEADER :
  * apisign : signature with hmac(sah512) fro above URL
* BODY format :
  * {"orders":["xxxxxxxx-2f68-405b-bfd3-fb19b362feea","xxxxxxxx-3583-48e5-951f-29b3ed04b65f"]}
* LIMIT : orders count <= 1000

I need someone to make my code great again and make it work with Bittrex API, as it used to.

Откликнулись

1
Разработчик 1
Оценка
(5)
Проекты
5
20%
Арбитраж
2
0% / 100%
Просрочено
1
20%
Свободен
2
Разработчик 2
Оценка
(69)
Проекты
93
34%
Арбитраж
10
40% / 30%
Просрочено
5
5%
Свободен
Похожие заказы
Create a bot that can trade and read indicators easy to read for first time users. Bot that can be used on a phone and connect to MT5. It should be easy to install or use on any device especially phone and laptop, preferably the bot that can run over night and controllable when needed
//———————————————————————————————————————————————————————————————————— struct S_MCAV { double matureSum; double totalSum; double value; void Init () { matureSum = 0.0; totalSum = 0.0; value = 0.5; } void AddContext (int ctx) { totalSum += 1.0; if (ctx == 1) matureSum += 1.0; } void ApplyDecay (double rate) { matureSum *= rate; totalSum *= rate; } void Update () {

Информация о проекте

Бюджет
30 - 60 USD
Сроки выполнения
от 1 до 2 дн.