Can you post some of your code here in case someone else needs to perform the same task?
What I end up with is this template:
fprintf(obj1,'%s\r\n',':SOURCE1:APPL:SEQ');
fprintf(obj1,'%s\r\n',':SOURCE1:FUNC:SEQ:FILT STEP');
fprintf(obj1,'%s\r\n',':SOURCE1:TRACe:DATA:DAC16 VOLATILE,END,#23200001c2cac4231529e534141ca1ac0e53fb967aff6e1b22699d6a2dd00000a');
fprintf(obj1,'%s\r\n',':SOURCE1:VOLT:UNIT VPP');
fprintf(obj1,'%s\r\n',':SOURCE1:VOLT 4');
fprintf(obj1,'%s\r\n',':SOURCE1:FUNC:SEQ:SRAT 20000');
fprintf(obj1,'%s\r\n','OUTP2 OFF');
fprintf(obj1,'%s\r\n','OUTP1 ON');
Documentation is really bad as from the documentation I would never guess which function should I select if I want to play arbitrary wave (first two commands).
Command 3 is bit cryptic in the beginning, but it makes sense when you read between the lines of the guide

For shorter waveforms (minimum is 16 points), command needs to have an "END" flag.
Data parameter starts with #. (#
23200001c2cac4231529e534141ca1ac0e53fb967aff6e1b22699d6a2dd00000a) then it has numeric number, which represents the number of digits of the size of the data (

) in my case it was
2 as I have
32 bytes of data (3 and 2).
And after number of bytes (numeric value as well), data points are in HEX (4 characters per point; 2 bytes). Also there seems to be an error in the documentation because it says that values for the points can be between 0000 and 3fff, which is 14 bit value, not the 16 bit! And what Rigol software generated and can be seen in the stream I attached, has points (d6a2 dd00) that are 16 bit ?!