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

  1. 实战:基于技术分析的Python算法交易

    译者 | Tianyu 出品 | AI科技大本营(ID:rgznai100) 本文是用 Python 做交易策略回测系列文章的第四篇.上个部分介绍了以下几个方面内容: 介绍了 zipline 回测框架 ...

  2. Python量化交易06——Fama-French三因子模型(Rmt,SMB,HML)

    参考书目:深入浅出Python量化交易实战 本次带来的是著名的获得了诺贝尔奖的三因子模型. 因子模型介绍 Fama和French从可以解释股票收益率的众多因素中提取出了三个重要的影响因子,即市场风险溢 ...

  3. 学习《深入浅出python量化交易交易实战》第一章(笔记)

    1.学习<深入浅出python量化交易交易实战>第一章 记录学习过程中的代码和一些坑 1.1 基础(名词解释) 1.1.1 CAPM (Capital Asset Pricing Moda ...

  4. python量化交易的框架_python量化交易框架easyquant试用体会

    在github上发现一个python写的,看上去简单实用的量化交易框架easyquant,作者是在他写的easytrader上实现了自动读取行情和交易登入,初步试验了雪球登入,效果还不错. 安装这个框 ...

  5. 你应该知道的21大Python量化交易工具

    技术可用性的快速增长使个人交易者也能够进行系统和算法交易.下面为大家分享2022年 Python 量化交易使用最广泛的21大交易平台和框架.经纪自营商.数据提供商和其他有用的交易库等,这些交易库适用于 ...

  6. 通过带Flask的REST API在Python中部署PyTorch

    通过带Flask的REST API在Python中部署PyTorch 在本文中,将使用Flask来部署PyTorch模型,并用讲解用于模型推断的 REST API.特别是,将部署一个预训练的Dense ...

  7. 福利 | 零基础学习Python量化交易 !(深圳)

    文末有数据派独家福利  投资界的人才需求 量化投资在中国已经进入到一个高速发展期.量化人才需求也成为众多金融企业的关注.金融科技企业发现中国目前正面临严重的金融科技专业人才短缺.而量化分析从业者,俗称 ...

  8. arcgis python 二次开发_我在部署ArcGIS API for Python时踩到的坑

    ArcGIS API for Python相比于其他ESRI产品,还是很年轻.我在部署时踩到了坑,网上也找不到解决方法,很是煞风景,也很打击学习的积极性. 今天回顾一下,做个总结吧.一方面自己备忘,另 ...

  9. python量化交易策略实例_Python进阶量化交易场外篇3——最大回撤评价策略风险...

    新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...

最新文章

  1. django 链接地址匹配流程
  2. 日志排查问题困难?分布式日志链路跟踪来帮你
  3. 常见Oracle HINT的用法
  4. phpcms数据库操作
  5. php前端开发语言,web前端编程语言有哪些?
  6. Windows下动态加载可执行代码原理简述
  7. C#实验室常用软件-Windows Live Writer
  8. net能和python结合吗_如何不用安装python就能在.NET里调用Python库
  9. 服务器与网页之间异步,在服务器端判断request来自Ajax请求(异步)还是传统请求(同步)...
  10. 手机MODEM 开发(33)---SIM卡基础知识
  11. 巴菲特发布2022年致股东公开信:盛赞苹果CEO
  12. iPhone在scrollview中双击定点放大的代码
  13. centos 6.4扩展挂载点磁盘空间
  14. [转载] Python学习笔记——用装饰器decorator和Memoization记忆化提高效率,原理讲清楚了
  15. 【SSM -MyBatis篇03】MyBatis Generator(MBG)配置属性详解(基于MyBatis3) - 逆向生成 - 配置MBG模板
  16. 「算法」FWT(快速沃尔什变换)
  17. 关于在pyomo框架下无法调用ipopt求解器解决方法
  18. 计算机二进制数的换算
  19. matlab解方程组方法,第二章解线性方程组的直接方法matlab用法
  20. [1002]:A+BII(大数计算)

热门文章

  1. 【安全资讯】Microsoft Authenticator为移动设备增添了密码自动填写功能
  2. win10 上用向日葵开机棒 ,或者其它应用WOL时不能不说的一些注意事项!
  3. APP端ios接入微信支付分享 universal links 配置流程
  4. Android核心破解原理详解
  5. 蓝桥杯嵌入式组第九届省赛练习(算是解决了长短按键,解决了高亮显示)
  6. nginx 解决CROS跨域
  7. 解析波士顿动力Handle机器人背后的技术(附PPT+视频)
  8. 五大房价上涨最快的英国城市
  9. unity学习开发小球吃方块小游戏(从制作到发布程序,超详细全教程包你学会)
  10. 大数据分析,足球运动的“料理师”