//-----------------------------------------------------------------------------+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;
}
//-----------------------------------------------------------------------------+
//-----------------------------------------------------------------------------+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的代码库中。顺便说一句,如果脚本是准确的,而且开发者对它有信心,我们为什么要对一个正常人进行处理?
也许我不需要顺便添加它们,而开发者本人即artmedia70将添加到代码库中,它们将变成那里需要的,而我在那里没有账户,对评论将无法回答一个字,嗯?
非常感谢你。但这正是我所需要的。但红色和蓝色是什么,有什么用,它可能显示每个订单的重置点,对吗?当我试过之后,我会在第一时间把它加入到artmedia70的代码库中。
不,不在代码库中,不在任何方式中。我习惯于制作可靠的东西,而不是教程 :)
如果我给你看一个正常的脚本,你会告诉我,我和其他人一样,又写了各种'错误'......但是...你不能没有他们。这是用我们的钱做的工作。
蓝色和红色是封口标志的颜色。
不,没有必要设立猫咪基地。我习惯于制作可靠的东西,而不是教程 :)
如果我给你看一个正常的剧本,你会告诉我,我和其他人一样,写了各种各样的错误......。但是...你不能没有他们。这是用我们的钱做的工作。
蓝色和红色是关闭图标的颜色。
顺便说一下,如果一个正规的脚本很清楚,而且开发者对它很有信心,为什么还要处理它呢?
只有当开发者的程序能够处理交易服务器返回的错误时,他才会对自己的程序充满信心。如果不做错误处理,程序可能会在第一个错误时就跌倒。该错误不是程序错误,而是由贸易服务器返回的错误。例如--上面的脚本并没有得到新鲜的数据。因此,服务器可能会返回一个错误的价格。为此,应尽量在收盘前接收最新的交易环境--请执行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_BUY) {
double pp=MarketInfo(sy,MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pp,5,Blue);
}
}
}
return;
}
如果我只需要从所有可用的5个买单中删除3个买单,哪个值最高,脚本的大小就会变大?还有一个问题,如果我懒得问,因为这些检查都需要时间,我想知道有检查的脚本和没有检查错误的脚本相比,哪个脚本的滑坡概率更高?
现在我明白了,是的,这很重要。这里的网络不好,硬件也很年轻,所以依靠他们来完成百分之两百的工作其实并不明智,但风险是一种高尚的东西=)不过再次感谢你的补充,我会把它加到买和卖中。
这样的购买方式正确吗?
是的,但这还不是全部...;)
这个脚本,除了未处理的类似错误外,还将触及 "外来 "订单。也就是说,如果你有一个EA在这个符号上工作,脚本将关闭它的头寸,而EA将再次打开它们。这就是他们相互之间的 "斗争 "方式。
为了避免这种情况,有必要在魔法方面对脚本进行限制。也就是说,添加 一行if (OrderMagicNumber()>0)继续;那么该脚本将只对手动打开的订单起作用。
用于出售。
而且,为了实现 "正常 "的可靠性,还有很多东西需要完善。它将适时到来,不要怀疑。;)
是的,但这还不是全部...;)
这个脚本,除了其余未处理的类似错误外,还将触及 "外来 "订单。也就是说,如果你有一个在这个符号上工作的EA,脚本将关闭它的头寸,而EA将再次打开它们。这就是他们相互之间的 "斗争 "方式。
为了避免这种情况,有必要在魔法方面对脚本进行限制。例如,添加一行 if (OrderMagicNumber()>0) continue; 然后脚本将只处理手动打开的订单。