пока нет , но пытаюсь
может и разберусь , пока получается но есть трудности ...
может и разберусь , пока получается но есть трудности ...
тип даных ...
Ну как ктонибудь зделал под делфи апи ? У меня почти все работает кроме SendOrder все дело в типе переменой , вот как на с+
struct SendOrderInfo // Объединенная команда посылки ордера
{
char req_code; // код команды в протоколе
int order; // ордер
char symbol[8]; // инструмент
int volume; // объем
char cmd; // команда OP_BUY....OP_SELL_STOP
double price; // цена исполнения
double sl,tp; // стопы
int crc; // контрольная сумма
};
какие они должны быть в делфи особено интересно char cmd; у меня в нем вся проблема ...
Ну как ктонибудь зделал под делфи апи ? У меня почти все работает кроме SendOrder все дело в типе переменой , вот как на с+
struct SendOrderInfo // Объединенная команда посылки ордера
{
char req_code; // код команды в протоколе
int order; // ордер
char symbol[8]; // инструмент
int volume; // объем
char cmd; // команда OP_BUY....OP_SELL_STOP
double price; // цена исполнения
double sl,tp; // стопы
int crc; // контрольная сумма
};
какие они должны быть в делфи особено интересно char cmd; у меня в нем вся проблема ...
все равно ошибку выдает...
говорит что цена изменилась, хотя смотрю цены одинаковые кк при вызове функии так и через МТ. Я вижу ты тут больше всех в этом вопросе разбираешся так может выложишь свои исходники , примеры . где можно будет посмотреть описание функций и т.д.
говорит что цена изменилась, хотя смотрю цены одинаковые кк при вызове функии так и через МТ. Я вижу ты тут больше всех в этом вопросе разбираешся так может выложишь свои исходники , примеры . где можно будет посмотреть описание функций и т.д.
TSendOrderInfo
обрати внимание на директиву #pragma pack(1) в metatraderapi.h
после #pragma pack(1) - = packed record,
после #pragma pack(8) - = record
из за неправильного описания структур может выдаваться мусор.
PSendOrderInfo = ^TSendOrderInfo;
TSendOrderInfo = packed record
Req_Code : byte;
Order : integer;
Symbol : array [1..8] of char ;
Volume : integer;
Cmd : byte; //OP_BUY....OP_SELL_STOP
Price : double;
SL,TP : double;
Crc : integer;
end;
обрати внимание на директиву #pragma pack(1) в metatraderapi.h
после #pragma pack(1) - = packed record,
после #pragma pack(8) - = record
из за неправильного описания структур может выдаваться мусор.
PSendOrderInfo = ^TSendOrderInfo;
TSendOrderInfo = packed record
Req_Code : byte;
Order : integer;
Symbol : array [1..8] of char ;
Volume : integer;
Cmd : byte; //OP_BUY....OP_SELL_STOP
Price : double;
SL,TP : double;
Crc : integer;
end;
BriefUserInfo и TradeRecord
функции возврощают не извесно что. вот как я описал переменые
PBriefUserInfo = ^TBriefUserInfo;
TBriefUserInfo = packed record
login : integer; // логин
isdemo : integer; // демо?
name : array [0..63] of Char; // имя
company : array [0..63] of Char; // компания
balance : double; // баланс
equity : double; //
credit : double; // кредит
margin : double; // маржа
freemargin : double; // свободная маржа
profit : double; // прибыль
marginmode : integer; //
margincall : integer; // уровень маржинкола
margintype : byte; // тип маржинкола 0-%,1-$
allow_flags : integer; // флаги разрешений
leverage : integer;
end;
PTradeRecord = ^TTradeRecord;
TTradeRecord = record
order : integer; // номер ордера
login : integer; // кому принадлежит
symbol : array [0..7] of char; // символ
digits : short; // кол-во знаков после запятой
cmd : short; // команда
volume : integer; // объем
open_time : dword; // время открытия
open_price : double; // цена открытия
close_time : dword; // время закрытия
close_price : double; // цена закрытия
sl,tp : double; // StopLoss TakeProfit
commission : double; // комиссия
agent_commission : double; // агентская комиссия, финальный расчет при закрытии позиции
storage : double; // своп
profit : double; // профит
comment : array [0..31] of char; // коментарий
end;
вот так функции
TMtGetTrades = function(const p:integer):integer; cdecl;
TMtGetTradeRecords = function(const p:integer; var p2:TBriefUserInfo; var p3:integer):TTradeRecord; cdecl;
в итоге переменые содержат мусор :-( Смотрю, смотрю вроде все правелно в чем же дело ?
функции возврощают не извесно что. вот как я описал переменые
PBriefUserInfo = ^TBriefUserInfo;
TBriefUserInfo = packed record
login : integer; // логин
isdemo : integer; // демо?
name : array [0..63] of Char; // имя
company : array [0..63] of Char; // компания
balance : double; // баланс
equity : double; //
credit : double; // кредит
margin : double; // маржа
freemargin : double; // свободная маржа
profit : double; // прибыль
marginmode : integer; //
margincall : integer; // уровень маржинкола
margintype : byte; // тип маржинкола 0-%,1-$
allow_flags : integer; // флаги разрешений
leverage : integer;
end;
PTradeRecord = ^TTradeRecord;
TTradeRecord = record
order : integer; // номер ордера
login : integer; // кому принадлежит
symbol : array [0..7] of char; // символ
digits : short; // кол-во знаков после запятой
cmd : short; // команда
volume : integer; // объем
open_time : dword; // время открытия
open_price : double; // цена открытия
close_time : dword; // время закрытия
close_price : double; // цена закрытия
sl,tp : double; // StopLoss TakeProfit
commission : double; // комиссия
agent_commission : double; // агентская комиссия, финальный расчет при закрытии позиции
storage : double; // своп
profit : double; // профит
comment : array [0..31] of char; // коментарий
end;
вот так функции
TMtGetTrades = function(const p:integer):integer; cdecl;
TMtGetTradeRecords = function(const p:integer; var p2:TBriefUserInfo; var p3:integer):TTradeRecord; cdecl;
в итоге переменые содержат мусор :-( Смотрю, смотрю вроде все правелно в чем же дело ?
Эта запись не пакуется
Может, я и ошибаюсь- но #pragma8 стоит перед описанием этого типа... Соответственно, слово packed явно лишнее...
Может, я и ошибаюсь- но #pragma8 стоит перед описанием этого типа... Соответственно, слово packed явно лишнее...
все равно не работает :)
блин что такое, никак не хочет работать, что за невезение, жизнь не удалась, и кому я теперь нужен ;-( может хоть кто даст рабочий кусок где бы возврощалась информация по открытым ордерам ;-o
блин что такое, никак не хочет работать, что за невезение, жизнь не удалась, и кому я теперь нужен ;-( может хоть кто даст рабочий кусок где бы возврощалась информация по открытым ордерам ;-o
не тормози
function TMTAPI.GetTradeRecords(var BUI: TBriefUserInfo; out Count: Integer) : ATradeRecord;
var
ATR : ATradeRecord;
PATR : PATradeRecord;
begin
PATR := FMtGetTradeRecords(FPSockHandle, @BUI, @Count);
if PATR = nil then Exit;
CopyMemory(@ATR, PATR, Min(Count, MaxTradeRecordCount)*SizeOf(TTradeRecord));
HeapFree(GetProcessHeap, 0, PATR);
Result := ATR;
end;
function TMTAPI.GetTradeRecords(var BUI: TBriefUserInfo; out Count: Integer) : ATradeRecord;
var
ATR : ATradeRecord;
PATR : PATradeRecord;
begin
PATR := FMtGetTradeRecords(FPSockHandle, @BUI, @Count);
if PATR = nil then Exit;
CopyMemory(@ATR, PATR, Min(Count, MaxTradeRecordCount)*SizeOf(TTradeRecord));
HeapFree(GetProcessHeap, 0, PATR);
Result := ATR;
end;
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
...и если есть, то может кто поделится?
Заранее благодарен.