任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 219

 
artmedia70:
全买和全卖是两个不同的脚本。这一点从一开始就很清楚。问题是--它应该绝对关闭所有的职位吗?还是应该只关闭那些运行脚本的图表上的头寸?它应该关闭手动开立的头寸还是专家顾问开立的头寸,还是两者都关闭?

否则,他们可能会写下任何错误信息、检查等。我认为这个脚本不需要这样的东西。我不使用EA,我现在只做Trier,我在下个月的生活中没有计划上课,我决定检查外汇。
 
bambastik:
这都是绝对的,但要根据脚本所依据的图表类型,所以脚本应尽可能简单。我不使用专家顾问,我现在只是在试用,我不打算在下个月的生活中进行任何活动,这就是为什么我决定看一下外汇。

因此,在这种情况下,正是对交易错误的处理使一个好的脚本和一个教程之间产生了差异。你是想从中学习,还是想让它百分之百地发挥作用?

如果你只想知道原理,这里就是。

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()>1)      continue;
         if (OrderType()==OP_BUY)   OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
         if (OrderType()==OP_SELL)  OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

它同时关闭了买和卖。

完全没有错误处理。你可以为自己只关闭买入或只关闭卖出 - 删除一行。

嗯...只买。

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_BUY)   OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

用于出售。

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_SELL)  OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+
 

非常感谢你。这正是我所需要的。但红色和蓝色是什么,有什么用,它可能显示每个订单的重置点,对吗?当我试过之后,我会在第一时间把它加入到artmedia70的代码库中。顺便说一句,如果脚本是准确的,而且开发者对它有信心,我们为什么要对一个正常人进行处理?

也许我不需要顺便添加它们,而开发者本人即artmedia70将添加到代码库中,它们将变成那里需要的,而我在那里没有账户,对评论将无法回答一个字,嗯?

 
bambastik:

非常感谢你。但这正是我所需要的。但红色和蓝色是什么,有什么用,它可能显示每个订单的重置点,对吗?当我试过之后,我会在第一时间把它加入到artmedia70的代码库中。

不,不在代码库中,不在任何方式中。我习惯于制作可靠的东西,而不是教程 :)

如果我给你看一个正常的脚本,你会告诉我,我和其他人一样,又写了各种'错误'......但是...你不能没有他们。这是用我们的钱做的工作。

蓝色和红色是封口标志的颜色。

 
artmedia70:

不,没有必要设立猫咪基地。我习惯于制作可靠的东西,而不是教程 :)

如果我给你看一个正常的剧本,你会告诉我,我和其他人一样,写了各种各样的错误......。但是...你不能没有他们。这是用我们的钱做的工作。

蓝色和红色是关闭图标的颜色。


我明白关于cattobase的一切,也明白关于红色和蓝色的一切,总的来说再次非常感谢你的帮助,但我不会开始嚷嚷,除非是非常罕见的,互联网必须超越所有这些屈尊和飞翔,只携带思想,顺便说一下,你一个人可以比成千上万的人更尊重你,但它是抒情的)总的来说artmedia70非常感谢,非常脚本帮助,在cattobase与它我不会去。我有很多人在历史上都是这样想的,他们现在在哪里。我认为,这笔钱很快就会被取消,会留下一个虚拟和石灰,所以每个人都可以有一个账户,严格识别不超过一定的金额,其余的在预算中,等等。所以我对他们很酷,但从他们的活动过程是的,有趣。
 
bambastik:

顺便说一下,如果一个正规的脚本很清楚,而且开发者对它很有信心,为什么还要处理它呢?

只有当开发者的程序能够处理交易服务器返回的错误时,他才会对自己的程序充满信心。如果不做错误处理,程序可能会在第一个错误时就跌倒。该错误不是程序错误,而是由贸易服务器返回的错误。例如--上面的脚本并没有得到新鲜的数据。因此,服务器可能会返回一个错误的价格。为此,应尽量在收盘前接收最新的交易环境--请执行RefreshRates()命令,或者用MarketInfo(Symbol(),MODE_ASK)或MarketInfo(Symbol(),MODE_BID)获得的价格代替卖出或买入的收盘价

然后脚本将采取这种形式(对于Sell)。

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;
   
   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_SELL)  {
            double pp=MarketInfo(sy,MODE_ASK);
            OrderClose(OrderTicket(),OrderLots(),pp,5,Red);
            }
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

如果你试图处理服务器返回的其他错误,当你说--"你又做了...... "时,它将增长到这些值:)

 

现在我明白了,是的,这很重要。这里的网络不好,硬件也很年轻,所以依靠他们来完成百分之两百的工作其实并不明智,但风险是一种高尚的东西=)不过再次感谢你的补充,我会把它加到买和卖中。

它是否适合购买?

void start() {
string sy=Symbol();
int i, k=OrdersTotal()-1;

for (i=k; i>=0; i--) {
if (OrderSelect(i,SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()==OP_BUY) {
double pp=MarketInfo(sy,MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pp,5,Blue);
}
}
}
return;
}

如果我只需要从所有可用的5个买单中删除3个买单,哪个值最高,脚本的大小就会变大?还有一个问题,如果我懒得问,因为这些检查都需要时间,我想知道有检查的脚本和没有检查错误的脚本相比,哪个脚本的滑坡概率更高?

 
bambastik:

现在我明白了,是的,这很重要。这里的网络不好,硬件也很年轻,所以依靠他们来完成百分之两百的工作其实并不明智,但风险是一种高尚的东西=)不过再次感谢你的补充,我会把它加到买和卖中。

这样的购买方式正确吗?

是的,但这还不是全部...;)

这个脚本,除了未处理的类似错误外,还将触及 "外来 "订单。也就是说,如果你有一个EA在这个符号上工作,脚本将关闭它的头寸,而EA将再次打开它们。这就是他们相互之间的 "斗争 "方式。

为了避免这种情况,有必要在魔法方面对脚本进行限制。也就是说,添加 一行if (OrderMagicNumber()>0)继续;那么该脚本将只对手动打开的订单起作用。

用于出售。

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;
   
   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()>0)  continue;
         if (OrderSymbol()!=sy)     continue;
         if (OrderType()==OP_SELL)  {
            double pp=MarketInfo(Symbol(),MODE_ASK);
            OrderClose(OrderTicket(),OrderLots(),pp,5,Red);
            }
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

而且,为了实现 "正常 "的可靠性,还有很多东西需要完善。它将适时到来,不要怀疑。;)

 
artmedia70:

是的,但这还不是全部...;)

这个脚本,除了其余未处理的类似错误外,还将触及 "外来 "订单。也就是说,如果你有一个在这个符号上工作的EA,脚本将关闭它的头寸,而EA将再次打开它们。这就是他们相互之间的 "斗争 "方式。

为了避免这种情况,有必要在魔法方面对脚本进行限制。例如,添加一行 if (OrderMagicNumber()>0) continue; 然后脚本将只处理手动打开的订单。


我不知道怎么做,我永远不会去做专家顾问、指标、信号和其他的东西,所以我只是在玩Dota时感到无聊,开始戳图表,我喜欢看它的运动,非常漂亮,所以我只是这样,为了一般的发展,现在我明白了什么是由非自动和非顾问开出的神奇订单,虽然他们可能是同一个人;)
 
你能写出:一个脚本/顾问来关闭两个相反的订单在n*pips的利润?