第一批关键功能之一就是以编程方式打开交易。既然您已经了解了如何打开与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> datetime
account <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&