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

 
rapid_minus:

请澄清一下,我完全糊涂了。

我找到了一个脚本,可以用盈利或减去的方式关闭订单,但我不明白其中的逻辑--在外部变量中设置了bool close_only_profit_orders=false,然后在f-i start中用否定法检查。如果(OrderType()==OP_BUY && (!close_only_profit_orders || order_prof>0).也就是说,如果它不是假的,或者存在有利润的订单,那么OrderClose()函数就会随之而来。但是在代码的任何地方,都没有让变量close_only_profit_orders变成真的条件。那么它是用来做什么的?


这个变量没有任何东西可以找到。这是程序员的想象,只有开发者知道你的EA里有什么。我只能猜测会发生这种情况的原因,以及如何检查它。我刚刚遇到一个EA,它在开始工作之前愚蠢地关闭了所有交易对的所有订单。嗯,那是程序员的想象力。因此,如果你的专家顾问会像它应该的那样工作,我们必须寻找它被写入关闭订单的地方,以及什么原因。也许,不同的魔术师会有帮助。
 

请帮助解决这个问题。

int n1=.....。

int n2=.....。

M1[i]=iMA(NULL,0,n1,n2,MODE_SMA,PRICE_CLOSE,i)。

我在注释中显示n1和n2的值,值是正确的,但鼠标没有正确绘制,没有在整个图表上显示。但如果我用手输入n1和n2的值,而不是这些变量的值,一切都会照常绘制。我不明白,当变量的值是正确的时候,这怎么可能呢?我怎样才能使图表向右偏移?现在,它只画到零条,即当前的零条。

 
Alexandr24:

请帮助解决这个问题。

int n1=.....。

int n2=.....。

M1[i]=iMA(NULL,0,n1,n2,MODE_SMA,PRICE_CLOSE,i)。

我在注释中显示n1和n2的值,值是正确的,但鼠标没有正确绘制,没有在整个图表上显示。但如果我用手输入n1和n2的值,而不是这些变量的值,一切都会照常绘制。我不明白,当变量的值是正确的时候,这怎么可能呢?我怎样才能使图表向右偏移?现在,它只画到零条,即当前的零条。

如果n1不等于TF的值,那么我就明白为什么它不能正确绘制。但是,向右移动 会使n2加起来! 检查了!
 
borilunad:
如果n1不等于TF值,那么我就明白为什么它不能正确绘制。而向右移动将使n2带有减号。

我不明白TF和它有什么关系,n1是计算指标的平均周期。我是一个 很好的人,我知道我的工作是什么,我的工作是什么,我的工作是什么,我的工作是什么,我的工作是什么,我的工作是什么,我的工作是什么,我的工作是什么,我的工作是什么,我的工作是什么。

UPD.我把0代替了n2,移位的效果很好,但n1有点奇怪:(

 
double  iMA(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   int          ma_period,        // период - n1    
   int          ma_shift,         // сдвиг средней - n2
   int          ma_method,        // метод усреднения
   int          applied_price,    // тип цены
   int          shift             // сдвиг
   );

这就对了!是我弄错了,但如果你做得对,为什么会不成功呢!?

 
borilunad:

这就对了!是我错了,但如果你做得对,为什么就不能成功呢!?

是的,我也对这个悖论感到困惑。如果我重新启动终端,马车就会呈现出应有的样子,但每次重新启动都很不方便。

UPD我通过按右键和选择菜单中的 "刷新 "解决了这个问题,但如果我在代码中按下编译,绘图就乱了......但这是小事一桩,我就刷新一下:))

 
Alexandr24:

我也对这个悖论感到困惑。如果我重新启动终端,那么马车就会照常绘制,但每次重新启动都很不方便。

UPD 通过右击并在菜单中选择 "刷新 "解决了这个问题,但如果我在代码中按下编译,马车就会画错......但这是个小问题,我就刷新一下 :)

向我展示代码,而不仅仅是碎片
 

我自己解决了,谢谢你的意见 :)

 
大家好!
我在论坛和互联网上搜索了一下--没有找到。这就是为什么我有一个问题要问你。

1.EA在同一价格开出(基于与MA的交叉)多个(3个)市场订单(例如,在1.1180买入)。

在MA被越过之前,这些订单是买入止损订单。

2.然后,专家顾问应该将这三个Takeprofit订单设置为不同的水平(根据标准的Fibo指标,它们只有在与MA相交时才能确定)。

让我们假设这些水平如下。
Ur1 = 1.1200
Ur2 = 1.1220
Ur3 = 1.1240

现在有一个问题。
如何为未结订单设置这些定义的水平?

我在论坛上找到了这样的结构(见下文),但我想不出更多的东西。如果我不确定我在寻找什么,我宁愿有一些关于如何做这个的提示。
我需要另一个计数器?但怎么做呢?或者我必须使用数组、majicies或...????

double Ur1 = 1.1200
double Ur2 = 1.1220  
double Ur3 = 1.1240
for(int i=OrdersTotal()-1;i>=0;i--) 
{
   if(OrderSelect(i, SELECT_BY_TICKET, MODE_TRADES)==false) continue;
   if(OrderSymbol()!=Symbol()) continue;
      if(OrderType()!=0) continue;
                   
   // вот тут мы можем работать с нашим ордером
   
   if (OrderTicket() = ???? );
 
 bool mod_Buy1 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur1,0,clrNONE);
 bool mod_Buy2 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur2,0,clrNONE);
 bool mod_Buy3 = OrderModify (OrderTicket(???),OrderOpenPrice (), NULL,Ur3,0,clrNONE);


}  

 
vadimvborisov:
你如何在这些给定的水平上放置开放的三单?

1.是什么阻碍了你在开仓时为订单设置适当的止损点?
2.这个mod_Buy1/2/3是什么?- 你明白上述for-cycle的目的吗?