In Magento 2 you can create order and quote programmatically. You can create this function in helper, controller and in Model. It depands upon you where you want to create. In my example, i am creating this in a controller. See the Below example:
1) First you need to create an array of customer billing address and shipping address.
you can get address details from customer address.
$OrderDetails= [
'currency_id' => 'USD',
'email' => '[email protected]',
'shipping_address' => [
'customer_address_id'=>XXXX,
'firstname'=> 'Test',
'lastname'=>'Customer',
'company'=>'Test Pvt. Ltd.',
'street'=>'601,test street',
'city'=>'srdr',
'country_id'=>'US',
'region'=>'CA',
'region_id'=>5,
'postcode'=>123456,
'telephone'=>1234567890,
'fax'=>XXXXXX,
'same_as_billing'=>1,
'save_in_address_book'=>1],
'billing_address' => [
'customer_address_id'=>XXXX,
'firstname'=> 'Test',
'lastname'=>'Customer',
'company'=>'Test Pvt. Ltd.',
'street'=>'601,test street',
'city'=>'srdr',
'country_id'=>'US',
'region'=>'CA',
'region_id'=>5,
'postcode'=>123456,
'telephone'=>1234567890,
'fax'=>XXXXXX,
'same_as_billing'=>0,
'save_in_address_book'=>1],
'items' => [
['product_id' => '1', 'qty' => 1],
];
2) Now create a controller and paste below code in your controller. And change module namespace according to your module.
Run php bin/magento setup:di:compile when you add any dependency injection.Because without php bin/magento setup:di:compile it throws error in code.
Hope this will helps you!

