文章 "MQL5 Cookbook: 多币种EA交易 - 简洁而快速的途径" - 页 3

 
//+------------------------------------------------------------------+
//|| 计算追踪止损位
//+------------------------------------------------------------------+
double CalculateTrailingStop(int symbol_number,ENUM_POSITION_TYPE position_type)
  {
//--- 用于计算的变量
   double    level       =0.0;
   double    buy_point   =low[symbol_number].value[1];  // 购买价值低
   double    sell_point  =high[symbol_number].value[1]; // 卖出值高

这样做是不正确的。如果仓位和柱状价格开盘时出现缺口,止损将无法正确设置。

 
Jose:

文章简洁易懂,并提供了 .set 文件中的设置。我在符号执行模式 方面遇到了一个问题,特别是检查是即时还是市场的条件,只有在检查后才允许打开订单,我不得不将其删除,但一切正常。

我有一个问题。我看到过很多不同的高级方法,比如这个方法,它们从一开始就忽略了所提供的 Expert、ExpertSignal、ExpertTrade.... 结构,尽管它们花了很多代码(我想也花了很多时间)复制其中的一些功能。有谁能向我解释一下吗?

大家好!

我正试着测试这个 EA,但在 Strategy Tester 中得到了以下信息:"开仓出错:4753 - 1 未找到头寸"。我不明白这是为什么。当执行文件 "TradeFunctions.mqh "第 159 行中的 "trade.PositionOpen "函数时,就会出现这种情况。谁能帮帮我?

 

您能告诉我作者描述的位置反转 发生在哪里吗?以下是他的代码和描述

//--- 如果有一个位置
   else
     {
      //--- 获取位置类型
      GetPositionProperties(symbol_number,P_TYPE);
      //--- 如果位置与信号相反且位置反转已启用
      if(pos.type==opposite_position_type && Reverse[symbol_number])
        {
         //--- 获取位置音量
         GetPositionProperties(symbol_number,P_VOLUME);
         //--- 调整音量
         lot=pos.volume+CalculateLot(symbol_number,Lot[symbol_number]);
         //--- 让我们颠倒一下位置
         OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);
         return;
        }

查看OpenPosition(OpenPosition_symbol_number,lot,order_type,position_open_price,sl,tp,comment) 函数

//+------------------------------------------------------------------+
//|| 打开一个位置|
//+------------------------------------------------------------------+
void OpenPosition(int symbol_number,
                  double lot,
                  ENUM_ORDER_TYPE order_type,
                  double price,
                  double sl,
                  double tp,
                  string comment)
  {
//--- 设置贸易结构中的主编号
   trade.SetExpertMagicNumber(MagicNumber);
//--- 以点为单位设置滑移大小
   trade.SetDeviationInPoints(CorrectValueBySymbolDigits(Deviation));
//--- 即时执行和市场执行模式
// *** 从第 803 版开始,止损和获利水平 ***
// *** 可在 SYMBOL_TRADE_EXECUTION_MARKET 模式下开仓时设置 ***
   if(symb.execution_mode==SYMBOL_TRADE_EXECUTION_INSTANT ||
      symb.execution_mode==SYMBOL_TRADE_EXECUTION_MARKET)
     {
      //--- 如果位置未打开,则打印相关信息
      if(!trade.PositionOpen(Symbols[symbol_number],order_type,lot,price,sl,tp,comment))
         Print("开仓时出错:",GetLastError()," - ",ErrorDescription(GetLastError()));
     }
  }
这只是一个锁定!没有反转......手数递增也是如此!您能解释一下吗,也许我错了?
 
Tango_X:

您能告诉我作者描述的位置反转 发生在哪里吗?以下是他的代码和描述

查看OpenPosition(OpenPosition_symbol_number,lot,order_type,position_open_price,sl,tp,comment) 函数;

这只是一个锁定!没有反转......手数递增也是如此!您能解释一下吗,也许我说错了?

有两种类型的交易账户:净额结算和对冲。

行动这是净额交易。对冲账户有
买入 1.0卖出 2.0卖出 1.0买入 1.0 并卖出 2.0
 
Vladimir Karputov:

交易账户有两种类型:净额结算和套期保值。

行动成为净额结算成为对冲账户
买入 1.0卖出 2.0卖出 1.0买入 1.0 并卖出 2.0

买入谢谢

 
"TimeframeToString "不存在,文章中也没有声明,请用 "EnumToString "代替。