使用MT5 API和Python进行交易
第一批关键功能之一就是以编程方式打开交易。既然您已经了解了如何打开与MT5的连接并提取数据。在今天的帖子中,我将向您展示如何使用MT5 API和Python进行交易。
验证仪器是否存在
让我们从上一篇文章的连接代码开始:
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python"><span style="color:#c72c4c">import</span> MetaTrader5 <span style="color:#c72c4c">as</span> mt5
<span style="color:#c72c4c">from</span> datetime <span style="color:#c72c4c">import</span> datetimeaccount <span style="color:#c72c4c">=</span> <em><span style="color:#407b08">int</span></em><span style="color:#5f5f5f">(</span>YOUR ID HERE<span style="color:#5f5f5f">)</span>mt5<span style="color:#5f5f5f">.</span>initialize<span style="color:#5f5f5f">(</span><span style="color:#5f5f5f">)</span>
authorized<span style="color:#c72c4c">=</span>mt5<span style="color:#5f5f5f">.</span>login<span style="color:#5f5f5f">(</span>account<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span> authorized<span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span><span style="color:#407b08">"Connected: Connecting to MT5 Client"</span><span style="color:#5f5f5f">)</span>
<span style="color:#c72c4c">else</span><span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span><span style="color:#407b08">"Failed to connect at account #{}, error code: {}"</span><span style="color:#5f5f5f">.</span><em><span style="color:#407b08">format</span></em><span style="color:#5f5f5f">(</span>account<span style="color:#5f5f5f">,</span> mt5<span style="color:#5f5f5f">.</span>last_error<span style="color:#5f5f5f">(</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">)</span></code></span></span>
让我们通过建立一个使用帐号的名为connect的方法来进行清理:
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python"><span style="color:#c72c4c">import</span> MetaTrader5 <span style="color:#c72c4c">as</span> mt5
<span style="color:#c72c4c">from</span> datetime <span style="color:#c72c4c">import</span> datetime<em><span style="color:#c72c4c">def</span></em> <span style="color:#0077aa">connect</span><span style="color:#5f5f5f">(</span>account<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>account <span style="color:#c72c4c">=</span> <em><span style="color:#407b08">int</span></em><span style="color:#5f5f5f">(</span>account<span style="color:#5f5f5f">)</span>mt5<span style="color:#5f5f5f">.</span>initialize<span style="color:#5f5f5f">(</span><span style="color:#5f5f5f">)</span>authorized<span style="color:#c72c4c">=</span>mt5<span style="color:#5f5f5f">.</span>login<span style="color:#5f5f5f">(</span>account<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span> authorized<span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span><span style="color:#407b08">"Connected: Connecting to MT5 Client"</span><span style="color:#5f5f5f">)</span><span style="color:#c72c4c">else</span><span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span><span style="color:#407b08">"Failed to connect at account #{}, error code: {}"</span><span style="color:#5f5f5f">.</span><em><span style="color:#407b08">format</span></em><span style="color:#5f5f5f">(</span>account<span style="color:#5f5f5f">,</span> mt5<span style="color:#5f5f5f">.</span>last_error<span style="color:#5f5f5f">(</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">)</span>
</code></span></span>
接下来,您将要创建另一个方法,并使用以下签名将其命名为open_position:
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python"><em><span style="color:#c72c4c">def</span></em> <span style="color:#0077aa">openPosition</span><span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">,</span> order_type<span style="color:#5f5f5f">,</span> size<span style="color:#5f5f5f">,</span> tp_distance<span style="color:#c72c4c">=</span><span style="color:#990055">None</span><span style="color:#5f5f5f">,</span> stop_distance<span style="color:#c72c4c">=</span><span style="color:#990055">None</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span></code></span></span>
在开始交易之前,建议添加一些安全检查。这是要确保要执行其订单的工具存在并且可以与经纪人进行交易:
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python"><em><span style="color:#c72c4c">def</span></em> <span style="color:#0077aa">open_position</span><span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">,</span> order_type<span style="color:#5f5f5f">,</span> size<span style="color:#5f5f5f">,</span> tp_distance<span style="color:#c72c4c">=</span><span style="color:#990055">None</span><span style="color:#5f5f5f">,</span> stop_distance<span style="color:#c72c4c">=</span><span style="color:#990055">None</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>symbol_info <span style="color:#c72c4c">=</span> mt5<span style="color:#5f5f5f">.</span>symbol_info<span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span> symbol_info <span style="color:#c72c4c">is</span> <span style="color:#990055">None</span><span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">,</span> <span style="color:#407b08">"not found"</span><span style="color:#5f5f5f">)</span><span style="color:#c72c4c">return</span><span style="color:#c72c4c">if</span> <span style="color:#c72c4c">not</span> symbol_info<span style="color:#5f5f5f">.</span>visible<span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">,</span> <span style="color:#407b08">"is not visible, trying to switch on"</span><span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span> <span style="color:#c72c4c">not</span> mt5<span style="color:#5f5f5f">.</span>symbol_select<span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">,</span> <span style="color:#990055">True</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span><span style="color:#407b08">"symbol_select({}}) failed, exit"</span><span style="color:#5f5f5f">,</span>pair<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">return</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">,</span> <span style="color:#407b08">"found!"</span><span style="color:#5f5f5f">)</span></code></span></span>
为确保此代码有效,让我们尝试连接并打开不存在的仪器上的位置:
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python"><span style="color:#c72c4c">>></span><span style="color:#c72c4c">></span> connect<span style="color:#5f5f5f">(</span><span style="color:#990055">39672374</span><span style="color:#5f5f5f">)</span>
Connected<span style="color:#5f5f5f">:</span> Connecting to MT5 Client
<span style="color:#c72c4c">>></span><span style="color:#c72c4c">></span> open_position<span style="color:#5f5f5f">(</span><span style="color:#407b08">"Fake_Pair"</span><span style="color:#5f5f5f">,</span> <span style="color:#407b08">"BUY"</span><span style="color:#5f5f5f">,</span> <span style="color:#990055">1</span><span style="color:#5f5f5f">)</span>
Fake_Pair <span style="color:#c72c4c">not</span> found</code></span></span>
当我们使用参数“ Fake_Pair”调用open_position方法时,它未能按预期找到该对。
现在尝试使用有效的货币对,例如“ EURUSD”:
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python"><span style="color:#c72c4c">>></span><span style="color:#c72c4c">></span> connect<span style="color:#5f5f5f">(</span><span style="color:#990055">39672374</span><span style="color:#5f5f5f">)</span>
Connected<span style="color:#5f5f5f">:</span> Connecting to MT5 Client
<span style="color:#c72c4c">>></span><span style="color:#c72c4c">></span> open_position<span style="color:#5f5f5f">(</span><span style="color:#407b08">"EURUSD"</span><span style="color:#5f5f5f">,</span> <span style="color:#407b08">"BUY"</span><span style="color:#5f5f5f">,</span> <span style="color:#990055">1.0</span><span style="color:#5f5f5f">)</span>
EURUSD found!</code></span></span>
您可以在上面看到这对货币对已经找到并且可以交易了。
执行订单
现在,我们准备使用带有Python的MT5 API进行交易。您需要做的第一件事是获取您正在交易的工具的“点”。该点定义为工具可能发生的最小价格变动幅度。
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python">point <span style="color:#c72c4c">=</span> symbol_info<span style="color:#5f5f5f">.</span>point
volume_step <span style="color:#c72c4c">=</span> symbol_info<span style="color:#5f5f5f">.</span>volume_step</code></span></span>
接下来,创建一个if语句来检查您的订单是买还是卖。这很重要,因为根据您是购买还是出售,止损和获利的计算方法有所不同。
方法签名中的止损和获利是距原始价格的点差。对于MT5,您需要提供止损并获利价格(如果您使用止损并获利–它们也可以留为空白)。要计算此值,您必须采用当前价格,然后将止损/获利乘以点,再加上或减去。下面是一个示例:
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python"><span style="color:#c72c4c">if</span><span style="color:#5f5f5f">(</span>order_type <span style="color:#c72c4c">==</span> <span style="color:#407b08">"BUY"</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>order <span style="color:#c72c4c">=</span> mt5<span style="color:#5f5f5f">.</span>ORDER_TYPE_BUYprice <span style="color:#c72c4c">=</span> mt5<span style="color:#5f5f5f">.</span>symbol_info_tick<span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">.</span>ask<span style="color:#c72c4c">if</span><span style="color:#5f5f5f">(</span>stop_distance<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>sl <span style="color:#c72c4c">=</span> price <span style="color:#c72c4c">-</span> <span style="color:#5f5f5f">(</span>stop_distance <span style="color:#c72c4c">*</span> point<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span><span style="color:#5f5f5f">(</span>tp_distance<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>tp <span style="color:#c72c4c">=</span> price <span style="color:#c72c4c">+</span> <span style="color:#5f5f5f">(</span>tp_distance <span style="color:#c72c4c">*</span> point<span style="color:#5f5f5f">)</span>
<span style="color:#c72c4c">if</span><span style="color:#5f5f5f">(</span>order_type <span style="color:#c72c4c">==</span> <span style="color:#407b08">"SELL"</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>order <span style="color:#c72c4c">=</span> mt5<span style="color:#5f5f5f">.</span>ORDER_TYPE_SELLprice <span style="color:#c72c4c">=</span> mt5<span style="color:#5f5f5f">.</span>symbol_info_tick<span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">.</span>bid<span style="color:#c72c4c">if</span><span style="color:#5f5f5f">(</span>stop_distance<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>sl <span style="color:#c72c4c">=</span> price <span style="color:#c72c4c">+</span> <span style="color:#5f5f5f">(</span>stop_distance <span style="color:#c72c4c">*</span> point<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span><span style="color:#5f5f5f">(</span>tp_distance<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>tp <span style="color:#c72c4c">=</span> price <span style="color:#c72c4c">-</span> <span style="color:#5f5f5f">(</span>tp_distance <span style="color:#c72c4c">*</span> point<span style="color:#5f5f5f">)</span></code></span></span>
现在,该调用实际提交订单的API了。为此,我们将使用MT5 API中的order_send()方法。但是首先,让我们建立我们的请求。可以在此处找到MT5 API可用方法的完整列表。
该请求是具有以下键的字典:
- 行动
- 符号
- 卷
- 类型
- 价钱
- 魔法
- 评论
- type_time
- 类型填充
如果您想知道神秘的参数“ magic”是什么意思,它实际上只是一个客户ID(可以设置为任何数字)。在我们的例子中,请求的编码如下:
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python">request <span style="color:#c72c4c">=</span> <span style="color:#5f5f5f">{</span><span style="color:#407b08">"action"</span><span style="color:#5f5f5f">:</span> mt5<span style="color:#5f5f5f">.</span>TRADE_ACTION_DEAL<span style="color:#5f5f5f">,</span><span style="color:#407b08">"symbol"</span><span style="color:#5f5f5f">:</span> pair<span style="color:#5f5f5f">,</span><span style="color:#407b08">"volume"</span><span style="color:#5f5f5f">:</span> <em><span style="color:#407b08">float</span></em><span style="color:#5f5f5f">(</span>size<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">,</span><span style="color:#407b08">"type"</span><span style="color:#5f5f5f">:</span> order<span style="color:#5f5f5f">,</span><span style="color:#407b08">"price"</span><span style="color:#5f5f5f">:</span> price<span style="color:#5f5f5f">,</span><span style="color:#407b08">"sl"</span><span style="color:#5f5f5f">:</span> sl<span style="color:#5f5f5f">,</span><span style="color:#407b08">"tp"</span><span style="color:#5f5f5f">:</span> tp<span style="color:#5f5f5f">,</span><span style="color:#407b08">"magic"</span><span style="color:#5f5f5f">:</span> <span style="color:#990055">234000</span><span style="color:#5f5f5f">,</span><span style="color:#407b08">"comment"</span><span style="color:#5f5f5f">:</span> <span style="color:#407b08">"My first trade"</span><span style="color:#5f5f5f">,</span><span style="color:#407b08">"type_time"</span><span style="color:#5f5f5f">:</span> mt5<span style="color:#5f5f5f">.</span>ORDER_TIME_GTC<span style="color:#5f5f5f">,</span><span style="color:#407b08">"type_filling"</span><span style="color:#5f5f5f">:</span> mt5<span style="color:#5f5f5f">.</span>ORDER_FILLING_IOC<span style="color:#5f5f5f">,</span>
<span style="color:#5f5f5f">}</span></code></span></span>
要发送请求,请使用order_send()方法:
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python"> result <span style="color:#c72c4c">=</span> mt5<span style="color:#5f5f5f">.</span>order_send<span style="color:#5f5f5f">(</span>request<span style="color:#5f5f5f">)</span></code></span></span>
最后,您将要检查您的订单是否成功。您可以转到MT5桌面应用程序并检查您的帐户,或者在order_send下添加以下代码来执行此操作:
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python"><span style="color:#c72c4c">if</span> result<span style="color:#5f5f5f">.</span>retcode <span style="color:#c72c4c">!=</span> mt5<span style="color:#5f5f5f">.</span>TRADE_RETCODE_DONE<span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span><span style="color:#407b08">"Failed to send order :("</span><span style="color:#5f5f5f">)</span><span style="color:#c72c4c">else</span><span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span> <span style="color:#5f5f5f">(</span><span style="color:#407b08">"Order successfully placed!"</span><span style="color:#5f5f5f">)</span></code></span></span>
测试我们的代码
如果您在本教程中一直遵循,那么您应该具有与以下代码相似的内容:
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python"><span style="color:#c72c4c">import</span> MetaTrader5 <span style="color:#c72c4c">as</span> mt5
<span style="color:#c72c4c">from</span> datetime <span style="color:#c72c4c">import</span> datetime<em><span style="color:#c72c4c">def</span></em> <span style="color:#0077aa">connect</span><span style="color:#5f5f5f">(</span>account<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>account <span style="color:#c72c4c">=</span> <em><span style="color:#407b08">int</span></em><span style="color:#5f5f5f">(</span>account<span style="color:#5f5f5f">)</span>mt5<span style="color:#5f5f5f">.</span>initialize<span style="color:#5f5f5f">(</span><span style="color:#5f5f5f">)</span>authorized<span style="color:#c72c4c">=</span>mt5<span style="color:#5f5f5f">.</span>login<span style="color:#5f5f5f">(</span>account<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span> authorized<span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span><span style="color:#407b08">"Connected: Connecting to MT5 Client"</span><span style="color:#5f5f5f">)</span><span style="color:#c72c4c">else</span><span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span><span style="color:#407b08">"Failed to connect at account #{}, error code: {}"</span><span style="color:#5f5f5f">.</span><em><span style="color:#407b08">format</span></em><span style="color:#5f5f5f">(</span>account<span style="color:#5f5f5f">,</span> mt5<span style="color:#5f5f5f">.</span>last_error<span style="color:#5f5f5f">(</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">)</span><em><span style="color:#c72c4c">def</span></em> <span style="color:#0077aa">open_position</span><span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">,</span> order_type<span style="color:#5f5f5f">,</span> size<span style="color:#5f5f5f">,</span> tp_distance<span style="color:#c72c4c">=</span><span style="color:#990055">None</span><span style="color:#5f5f5f">,</span> stop_distance<span style="color:#c72c4c">=</span><span style="color:#990055">None</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>symbol_info <span style="color:#c72c4c">=</span> mt5<span style="color:#5f5f5f">.</span>symbol_info<span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span> symbol_info <span style="color:#c72c4c">is</span> <span style="color:#990055">None</span><span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">,</span> <span style="color:#407b08">"not found"</span><span style="color:#5f5f5f">)</span><span style="color:#c72c4c">return</span><span style="color:#c72c4c">if</span> <span style="color:#c72c4c">not</span> symbol_info<span style="color:#5f5f5f">.</span>visible<span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">,</span> <span style="color:#407b08">"is not visible, trying to switch on"</span><span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span> <span style="color:#c72c4c">not</span> mt5<span style="color:#5f5f5f">.</span>symbol_select<span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">,</span> <span style="color:#990055">True</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span><span style="color:#407b08">"symbol_select({}}) failed, exit"</span><span style="color:#5f5f5f">,</span>pair<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">return</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">,</span> <span style="color:#407b08">"found!"</span><span style="color:#5f5f5f">)</span>point <span style="color:#c72c4c">=</span> symbol_info<span style="color:#5f5f5f">.</span>point<span style="color:#c72c4c">if</span><span style="color:#5f5f5f">(</span>order_type <span style="color:#c72c4c">==</span> <span style="color:#407b08">"BUY"</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>order <span style="color:#c72c4c">=</span> mt5<span style="color:#5f5f5f">.</span>ORDER_TYPE_BUYprice <span style="color:#c72c4c">=</span> mt5<span style="color:#5f5f5f">.</span>symbol_info_tick<span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">.</span>ask<span style="color:#c72c4c">if</span><span style="color:#5f5f5f">(</span>stop_distance<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>sl <span style="color:#c72c4c">=</span> price <span style="color:#c72c4c">-</span> <span style="color:#5f5f5f">(</span>stop_distance <span style="color:#c72c4c">*</span> point<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span><span style="color:#5f5f5f">(</span>tp_distance<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>tp <span style="color:#c72c4c">=</span> price <span style="color:#c72c4c">+</span> <span style="color:#5f5f5f">(</span>tp_distance <span style="color:#c72c4c">*</span> point<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span><span style="color:#5f5f5f">(</span>order_type <span style="color:#c72c4c">==</span> <span style="color:#407b08">"SELL"</span><span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>order <span style="color:#c72c4c">=</span> mt5<span style="color:#5f5f5f">.</span>ORDER_TYPE_SELLprice <span style="color:#c72c4c">=</span> mt5<span style="color:#5f5f5f">.</span>symbol_info_tick<span style="color:#5f5f5f">(</span>pair<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">.</span>bid<span style="color:#c72c4c">if</span><span style="color:#5f5f5f">(</span>stop_distance<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>sl <span style="color:#c72c4c">=</span> price <span style="color:#c72c4c">+</span> <span style="color:#5f5f5f">(</span>stop_distance <span style="color:#c72c4c">*</span> point<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span><span style="color:#5f5f5f">(</span>tp_distance<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">:</span>tp <span style="color:#c72c4c">=</span> price <span style="color:#c72c4c">-</span> <span style="color:#5f5f5f">(</span>tp_distance <span style="color:#c72c4c">*</span> point<span style="color:#5f5f5f">)</span>request <span style="color:#c72c4c">=</span> <span style="color:#5f5f5f">{</span><span style="color:#407b08">"action"</span><span style="color:#5f5f5f">:</span> mt5<span style="color:#5f5f5f">.</span>TRADE_ACTION_DEAL<span style="color:#5f5f5f">,</span><span style="color:#407b08">"symbol"</span><span style="color:#5f5f5f">:</span> pair<span style="color:#5f5f5f">,</span><span style="color:#407b08">"volume"</span><span style="color:#5f5f5f">:</span> <em><span style="color:#407b08">float</span></em><span style="color:#5f5f5f">(</span>size<span style="color:#5f5f5f">)</span><span style="color:#5f5f5f">,</span><span style="color:#407b08">"type"</span><span style="color:#5f5f5f">:</span> order<span style="color:#5f5f5f">,</span><span style="color:#407b08">"price"</span><span style="color:#5f5f5f">:</span> price<span style="color:#5f5f5f">,</span><span style="color:#407b08">"sl"</span><span style="color:#5f5f5f">:</span> sl<span style="color:#5f5f5f">,</span><span style="color:#407b08">"tp"</span><span style="color:#5f5f5f">:</span> tp<span style="color:#5f5f5f">,</span><span style="color:#407b08">"magic"</span><span style="color:#5f5f5f">:</span> <span style="color:#990055">234000</span><span style="color:#5f5f5f">,</span><span style="color:#407b08">"comment"</span><span style="color:#5f5f5f">:</span> <span style="color:#407b08">""</span><span style="color:#5f5f5f">,</span><span style="color:#407b08">"type_time"</span><span style="color:#5f5f5f">:</span> mt5<span style="color:#5f5f5f">.</span>ORDER_TIME_GTC<span style="color:#5f5f5f">,</span><span style="color:#407b08">"type_filling"</span><span style="color:#5f5f5f">:</span> mt5<span style="color:#5f5f5f">.</span>ORDER_FILLING_IOC<span style="color:#5f5f5f">,</span><span style="color:#5f5f5f">}</span>result <span style="color:#c72c4c">=</span> mt5<span style="color:#5f5f5f">.</span>order_send<span style="color:#5f5f5f">(</span>request<span style="color:#5f5f5f">)</span><span style="color:#c72c4c">if</span> result<span style="color:#5f5f5f">.</span>retcode <span style="color:#c72c4c">!=</span> mt5<span style="color:#5f5f5f">.</span>TRADE_RETCODE_DONE<span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span><span style="color:#5f5f5f">(</span><span style="color:#407b08">"Failed to send order :("</span><span style="color:#5f5f5f">)</span><span style="color:#c72c4c">else</span><span style="color:#5f5f5f">:</span><span style="color:#c72c4c">print</span> <span style="color:#5f5f5f">(</span><span style="color:#407b08">"Order successfully placed!"</span><span style="color:#5f5f5f">)</span>
</code></span></span>
要测试上面的代码是否有效,您需要调用这两种方法。在下面的示例中,我使用1标准手,300的止盈距离和100的止损距离开立EURUSD的交易:
<span style="color:#4c4c4c"><span style="color:#1f1e1e"><code class="language-python"><span style="color:#c72c4c">>></span><span style="color:#c72c4c">></span> connect<span style="color:#5f5f5f">(</span><span style="color:#990055">39672374</span><span style="color:#5f5f5f">)</span>
Connected<span style="color:#5f5f5f">:</span> Connecting to MT5 Client
<span style="color:#c72c4c">>></span><span style="color:#c72c4c">></span> open_position<span style="color:#5f5f5f">(</span><span style="color:#407b08">"EURUSD"</span><span style="color:#5f5f5f">,</span> <span style="color:#407b08">"BUY"</span><span style="color:#5f5f5f">,</span> <span style="color:#990055">1</span><span style="color:#5f5f5f">,</span> <span style="color:#990055">300</span><span style="color:#5f5f5f">,</span> <span style="color:#990055">100</span><span style="color:#5f5f5f">)</span>
EURUSD found!
Order successfully placed!</code></span></span>
如果您回到MT5桌面应用程序,则应该在您的帐户上进行新交易:
您可以在此处看到买入价为1.21717,止损比买入价(1.21617)低100点,止盈为300(1.22017)多。
在这里还是要推荐下我自己建的Python学习群:721195303,群里都是学Python的,如果你想学或者正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2021最新的Python进阶资料和零基础教学,欢迎进阶中和对Python感兴趣的小伙伴加入!
使用MT5 API和Python进行交易相关推荐
- 实战:基于技术分析的Python算法交易
译者 | Tianyu 出品 | AI科技大本营(ID:rgznai100) 本文是用 Python 做交易策略回测系列文章的第四篇.上个部分介绍了以下几个方面内容: 介绍了 zipline 回测框架 ...
- Python量化交易06——Fama-French三因子模型(Rmt,SMB,HML)
参考书目:深入浅出Python量化交易实战 本次带来的是著名的获得了诺贝尔奖的三因子模型. 因子模型介绍 Fama和French从可以解释股票收益率的众多因素中提取出了三个重要的影响因子,即市场风险溢 ...
- 学习《深入浅出python量化交易交易实战》第一章(笔记)
1.学习<深入浅出python量化交易交易实战>第一章 记录学习过程中的代码和一些坑 1.1 基础(名词解释) 1.1.1 CAPM (Capital Asset Pricing Moda ...
- python量化交易的框架_python量化交易框架easyquant试用体会
在github上发现一个python写的,看上去简单实用的量化交易框架easyquant,作者是在他写的easytrader上实现了自动读取行情和交易登入,初步试验了雪球登入,效果还不错. 安装这个框 ...
- 你应该知道的21大Python量化交易工具
技术可用性的快速增长使个人交易者也能够进行系统和算法交易.下面为大家分享2022年 Python 量化交易使用最广泛的21大交易平台和框架.经纪自营商.数据提供商和其他有用的交易库等,这些交易库适用于 ...
- 通过带Flask的REST API在Python中部署PyTorch
通过带Flask的REST API在Python中部署PyTorch 在本文中,将使用Flask来部署PyTorch模型,并用讲解用于模型推断的 REST API.特别是,将部署一个预训练的Dense ...
- 福利 | 零基础学习Python量化交易 !(深圳)
文末有数据派独家福利 投资界的人才需求 量化投资在中国已经进入到一个高速发展期.量化人才需求也成为众多金融企业的关注.金融科技企业发现中国目前正面临严重的金融科技专业人才短缺.而量化分析从业者,俗称 ...
- arcgis python 二次开发_我在部署ArcGIS API for Python时踩到的坑
ArcGIS API for Python相比于其他ESRI产品,还是很年轻.我在部署时踩到了坑,网上也找不到解决方法,很是煞风景,也很打击学习的积极性. 今天回顾一下,做个总结吧.一方面自己备忘,另 ...
- python量化交易策略实例_Python进阶量化交易场外篇3——最大回撤评价策略风险...
新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...
最新文章
- django 链接地址匹配流程
- 日志排查问题困难?分布式日志链路跟踪来帮你
- 常见Oracle HINT的用法
- phpcms数据库操作
- php前端开发语言,web前端编程语言有哪些?
- Windows下动态加载可执行代码原理简述
- C#实验室常用软件-Windows Live Writer
- net能和python结合吗_如何不用安装python就能在.NET里调用Python库
- 服务器与网页之间异步,在服务器端判断request来自Ajax请求(异步)还是传统请求(同步)...
- 手机MODEM 开发(33)---SIM卡基础知识
- 巴菲特发布2022年致股东公开信:盛赞苹果CEO
- iPhone在scrollview中双击定点放大的代码
- centos 6.4扩展挂载点磁盘空间
- [转载] Python学习笔记——用装饰器decorator和Memoization记忆化提高效率,原理讲清楚了
- 【SSM -MyBatis篇03】MyBatis Generator(MBG)配置属性详解(基于MyBatis3) - 逆向生成 - 配置MBG模板
- 「算法」FWT(快速沃尔什变换)
- 关于在pyomo框架下无法调用ipopt求解器解决方法
- 计算机二进制数的换算
- matlab解方程组方法,第二章解线性方程组的直接方法matlab用法
- [1002]:A+BII(大数计算)
热门文章
- 【安全资讯】Microsoft Authenticator为移动设备增添了密码自动填写功能
- win10 上用向日葵开机棒 ,或者其它应用WOL时不能不说的一些注意事项!
- APP端ios接入微信支付分享 universal links 配置流程
- Android核心破解原理详解
- 蓝桥杯嵌入式组第九届省赛练习(算是解决了长短按键,解决了高亮显示)
- nginx 解决CROS跨域
- 解析波士顿动力Handle机器人背后的技术(附PPT+视频)
- 五大房价上涨最快的英国城市
- unity学习开发小球吃方块小游戏(从制作到发布程序,超详细全教程包你学会)
- 大数据分析,足球运动的“料理师”