在贸易交易中的处理 - 页 8

 
fxsaber:

从01:35和03:35看这个视频。


为什么我需要你自制的东西?你让我感到惊讶。以这样的编程知识,你无法理解OnTradeTransaction 处理程序

 
Alexey Viktorov:

为什么我需要你自制的东西?你让我感到惊讶。以这样的编程知识,你无法理解OnTradeTransaction 处理程序

和一个连任务都无法想象的人谈话是很难的。

 
Alexey Viktorov:

那么,是没有位置,还是用倒逗号?

这是很正常的情况,在净值方面--没有头寸(即总头寸==0.0)。

而从两个EA的角度来看--每个EA都有自己的开放位置

一个符号上可能有一个以上的专家顾问。另外,有些交易可能是通过手来完成的。

 
JRandomTrader:

这是很正常的情况,在净值方面--没有头寸(即总头寸==0.0)。

而从两个顾问的角度来看--每个人都有自己的公开立场

一个符号上可能有一个以上的专家顾问。另外,有些交易可能是通过手工完成的。

妻子拿着床头柜里的钱,买了一台电视。丈夫拿着电视,卖了它,把钱放在床头柜里。在净值化方面,没有电视。而根据你的逻辑,妻子拥有电视和床头柜里的钱。因此,他们决定是买另一台电视还是花这笔钱。

还是他们每人都有一台电视?毕竟,他们每个人都曾把它握在手中。夸大其词。


如果一个顾问开仓,另一个顾问平仓,它就会消失...忘记他们...没有任何立场。

 
Alexey Viktorov:

妻子拿着床头柜里的钱,买了一台电视。丈夫拿着电视,卖了它,把钱放在床头柜里。在净值化方面,没有电视。而根据你的逻辑,妻子拥有电视和床头柜里的钱。因此,他们决定是买另一台电视还是花这笔钱。

还是他们每个人都有一台电视机?毕竟,他们中的每一个人都曾在他们手中握过一个。我夸大其词。


如果一个顾问开仓,另一个顾问平仓,它就会消失...忘记他们...没有任何立场。

没有任何立场。

但在其逻辑中--每个EA都持有不同的立场。例如,一个人--"长线 "将坐等损失,而另一个人--"黄牛 "将同时在反趋势上采取自己的行动。

 
JRandomTrader:

没有任何立场。

但在他们的逻辑限度内--每个EA都持有自己的立场。例如,一个--"长线 "将等待损失,而另一个--"黄牛 "将去寻找反趋势。

显然,你是想把两种对冲策略的逻辑应用于净值化。更符合逻辑的顺序是如下。

在反趋势中的黄牛党关闭了一个头寸,并为他的假想头寸在预期的TP价格上设置了一个限价单。而如果这个限位开关起作用,位置就会全部恢复,但是!!!用不同的票。因此,将其视为该封闭头寸 的延续是不绝对正确的,长期的EA将无法将其确定为自己的。

另一件事是,黄牛党是否会在较小的体积下工作。那么,尽管开盘价会发生变化,但票价将保持不变。一般来说,不要试图简单地将策略转移到净值化套期保值,不会有什么好结果。这个比喻会起作用,但行动应该是不同的。应考虑到净值化的具体内容。

 
Alexey Viktorov:

显然,你是想把两种对冲策略的逻辑应用于净值化。一个更符合逻辑的顺序是如下。

在反趋势中的黄牛会平仓,并在预期的TP价格上为他的假想仓设置限价单。而如果这个限位开关起作用,位置就会全部恢复,但是!!!用不同的票。因此,将其视为该封闭头寸 的延续是不绝对正确的,长期的EA将无法将其确定为自己的。

如果黄牛党用较小的数值工作,则是另一回事。那么,尽管开盘价发生了变化,但门票将保持不变。一般来说,不要试图简单地将净值化策略转移到套期保值,不会有什么好结果。这个比喻会起作用,但行动应该是不同的。应考虑到净值化的具体内容。

这只是一个黄牛和多头的例子,在这个符号上可能有很多EA,它们可能有不同的手数。

"黄牛党在逆势中平仓,并在其假想头寸的预期TP的价格上设置限价开关"。- 但是,黄牛党为自己假设他有一个 "假想的位置"。

而事实上,总头寸已经改变了票面--所以长线顾问不需要它,他已经知道他有自己的头寸,这与总头寸没有关系。

因此,每一个EA的工作都不考虑谁在这个符号上和它一起工作,而不知道或不希望知道任何有关的事情。

是的,我并不是要为套期保值转移策略,因为我马上就开始使用MT5、FORTS和净值。我只是想让几个机器人能够在这个符号上进行交易,并且仍然能够在不干扰他们的情况下进行交易手。

 

JRandomTrader:

但对他自己来说,挥霍者认为他有一个 "假想的位置"。

这就是我要说的,你必须建立一个不同的网状结构逻辑。不应该有假想的 立场。我这样说只是因为我找不到另一个词来让你理解我。如果有补仓,那么就会考虑到头寸的总成交量和开仓的 新价格,如果有部分平仓,也会考虑到价格和成交量。

 
Alexey Viktorov:

这就是我要说的:你必须建立一个不同的网状结构逻辑。不应该有假想的 立场。我这么说只是因为我找不到另一个词来让你理解我。如果出现补仓,那么就会考虑到头寸的总成交量和新的开盘价;如果出现部分平仓,那么也是如此,就会考虑到总的价格和成交量。

然后,我们将不得不在机器人之间建立一些互动,并考虑到 "邻居 "的行动,他们今天是一样的,明天可能是不同的。而且目前还不清楚这将带来什么好处。

从机器人算法的角度来看,需要一个假想的位置:如果它已经打开,就应该关闭它。

 
JRandomTrader:

然后,我必须在机器人之间建立某种互动,并考虑到 "邻居",今天是一个,明天可能是另一个。而且目前还不清楚这将带来什么好处。

从机器人算法的角度来看,需要一个假想的位置:如果它打开了,就应该关闭它。

为了简化事情,是的。我同意。

那么 "运输经理 "还没有完全阐明问题和他的行动。

关于交易、自动交易系统和策略测试的论坛

在贸易交易中的处理

Ilya Child, 2019.02.07 20:08

晚上好。

伙计们,请帮助解决这个问题。这个问题可能并不新鲜,但我还没有找到任何明确的解决方案(无论是在实践中,还是在论坛上)。

我在终端中对2个不同的仪器运行2个不同的机器人。各地的魔法是不同的。机器人放置待定限额,程序OnTradeTransaction 允许我检测一个交易,并使用该交易放置待定止损单。

以下是贸易交易的代码

case TRADE_TRANSACTION_DEAL_ADD:
        {
         drop_info2("TRADE_TRANSACTION_DEAL_ADD\r\n"+TransactionDescription(trans));
         if((trans.deal_type==DEAL_TYPE_BUY || trans.deal_type==DEAL_TYPE_SELL) && trans.order!=0)
           {
            if(getIsDealOfExpert(trans.deal)) //функция проверки принадлежности сделки к роботу
              {
               drop_info2("Сделка наша");
               analyzeFilledOrder(trans.order,trans.volume); //процедура по выставлению отложенных стоп ордеров
              }
           }
        }
      break;

这是检查该交易是否属于机器人的函数的代码

bool getIsDealOfExpert(ulong dealTicket)
     {
      if(HistoryDealSelect(dealTicket) && HistoryDealGetInteger(dealTicket,DEAL_MAGIC)==magic_number && HistoryDealGetString(dealTicket,DEAL_SYMBOL)==symbol)
         return true;
      else
         return false;
     }

这是待定止损单的程序代码

void analyzeFilledOrder(ulong orderTicket,double volume)
  {
   bool isFindOrder=false;
   string fullComment;
   ENUM_ORDER_TYPE orderType;
   if(getIsOrderOfExpert(orderTicket,true)) //Если ордер из сделки уже в истории
     {
      fullComment=HistoryOrderGetString(orderTicket,ORDER_COMMENT);
      orderType=ENUM_ORDER_TYPE(HistoryOrderGetInteger(orderTicket,ORDER_TYPE));
      isFindOrder=true; //локальная переменная, если нашли в истории
     }
   if(!isFindOrder && getIsOrderOfExpert(orderTicket,false)) //Если не нашли ордер в истории и ордер есть не в истории
     {
      fullComment=OrderGetString(ORDER_COMMENT); 
      orderType=ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE));
      isFindOrder=true; //локальная переменная, если нашли не в истории
     }
   if(isFindOrder) //если хоть где-то нашли, то выставляем отложенные стоп ордера
     {
     //выставляем стоп ордера

这是搜索历史中的订单和历史外的订单的函数代码

bool getIsOrderOfExpert(ulong OrderTicket,bool isHistory)
     {
      bool is_expert=false;
      //если ордер находится в истории
      if(isHistory)
        {
         if(HistoryOrderSelect(OrderTicket) && HistoryOrderGetInteger(OrderTicket,ORDER_MAGIC)==magic_number && HistoryOrderGetString(OrderTicket,ORDER_SYMBOL)==symbol)
            is_expert=true;
        }
      else
        {
         if(OrderSelect(OrderTicket) && OrderGetInteger(ORDER_MAGIC)==magic_number && OrderGetString(ORDER_SYMBOL)==symbol)
            is_expert=true;
        }
      return is_expert;
     }

我把传入的交易信息按照终端收到的顺序放在日志中。现在我有一个问题,我在用模拟账户交易时遇到过。

有时交易的顺序如下 TRADE_TRANSACTION_ORDER_DELETE, then TRADE_TRANSACTION_DEAL_AD, then TRADE_TRANSACTION_HISTORY_AD。在这种情况下,止损单往往不会在交易执行后下达。我想这是因为该订单已经被删除,但还没有被添加到历史中。这意味着我们无法在历史或终端中找到该交易的订单。虽然这很值得怀疑,但事实是没有下止损单,因为机器人在所有维度搜索订单后没有找到它(isFindOrder=false)。交易的顺序可能是正确的,但订单仍然无处可寻。 在所有情况下,机器人都能正确检测到交易,但没有进入下单阶段。然而,它也偶尔会正确工作,下单

我已经尝试了不同的方法,没有任何效果。我现在考虑在待定下单程序开始时增加一个1秒钟的间隔。我不知道还有什么地方可以挖掘。

请分享你的经验和想法。

止损单是什么意思?是针对全部头寸,还是只针对该专家顾问所操作的部分?
原因: