[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 217

 
DanLett:

请告知在下列情况下该如何做。

在测试器中工作正常,一切按计划进行,但在realsk上却无法打开交易。

P.S. 真的需要一些帮助,这是一个生命或死亡的问题。


我不是专家,也许有一个问题?

ОrderSelect(i,SELECT_BY_POS,MODE_TRADES)
已被MODE_TRADES?
 

我的数学有什么问题?

int modOrder()
{
double currentPrice = Bid;
double currentStoploss = OrderStopLoss();
double profitLine=profitLine();
if (currentPrice >= profitLine)
  {
  OrderModify(getTicket(),0,currentStoploss+1*Point,0,0,Blue);
  }
  Alert("profit line ", profitLine);
  return (0);
}

我的currentPrice >= profitLine的意思是,如果profitLine ==或>,对吗?

但对我来说,如果>了至少一个点,它就能发挥作用。

 
将实数(双数)进行严格的平等比较,并不是对它们最好的做法。更正确的做法是将它们的差异与最大允许值进行比较。
 
olis: 我的数学有什么问题?
你有没有看 一下"常见问题"?
 
GaryKa:
你有没有看 一下"常见问题"?

是的,嗯...没有想到这一点。谢谢。(笑)。
 
Gek34:

尊敬的专家,关于指标的问题已被删除,解决方案来得很意外,我重复了计算,哎呀....一切都在运作。

但我还有一个,它是如何工作的,我想了解。代码见附件。

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow

extern int PerMa = 5;
extern int Shift = 0;
extern int Step = 15;

double ABuf45[],ABuf[],ABuf5[],ABuf15[];//,Stark[];
double Stark;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{ Stark=0;
//---- indicators
// IndicatorBuffers(4);

SetIndexBuffer(0,ABuf);
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int i,n;

//----
i=Bars-counted_bars-1;

while(i>=0)
{ RefreshRates();
//----
double Ma15=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,i);
double Ma45=iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,i);
double Ma=iMA(NULL,0,PerMa,0,MODE_EMA,PRICE_CLOSE,i);
//double Ma1=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i+1);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;Comment(Stark);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}//else{Stark=Stark;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;//Comment(Stark);

//----
i--;
}
return(0);
}


撤消了。我编造了各种各样的胡言乱语。事实证明,这要简单得多。我把Stark变量从启动函数中拿出来,这样它就不会在每次打勾 时都重置。
 

sig1 "信号 ,"买入 "命令被触发,"卖出 "挂单被置于 "买入 "订单之下

"买入 "头寸被关闭时,"卖出 "头寸也被删除。

但是当这个BUY没有关闭,而下一个BUY等被打开时,会发生什么?

首先设置的这个SELLSTOP必须以某种方式进行计算,以便在第一个BUY被关闭后将其关闭。

此外,如果价格突破了待定的,然后它收盘时没有损失,那么待定的已经被设置在与前者相同的位置。

-----------------------------------

并不能解决问题,因为在卖出关闭后,一个新的卖出将 以不同的主人打开 ,它将被删除

关闭购买后,我不知道如何。

 int i, k=OrdersTotal(),ti;
    for (i=0; i<k; i++){
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
    if(OrderType()== OP_SELLSTOP){
    ti = OrderMagicNumber();  }
    if(OrderType()== OP_BUY)
    if(OrderTicket()==ti) что дальше не пойму, как узнать о наличии ордера бай с нужным тикетом?

 
Top2n:

sig1 "信号 ,"买入 "命令被触发,"卖出 "挂单被置于 "买入 "订单之下

当 "买入 "头寸被关闭时,"卖出 "头寸也被删除。

但是当这个BUY没有关闭,而下一个BUY等被打开时,会发生什么?

首先设置的这个SELLSTOP必须以某种方式进行计算,以便在第一个BUY被关闭后将其关闭。

此外,如果价格突破了待定的,然后它收盘时没有损失,那么待定的已经被设置在与前者相同的位置。

-----------------------------------

并不能解决问题,因为在卖出关闭后,一个新的卖出将 以不同的主人打开 ,它将被删除

在购买结束后,我不知道如何。


那么......你用同样的选择来检查......

int i, k=OrdersTotal(), ti, tid;

for (i=0; i<k; i++){
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
       if (OrderType()== OP_SELLSTOP) {
          tid = OrderTicket(); // запомним тикет ордера селлстоп - если его придётся удалить...
          ti = OrderMagicNumber();  
          //  ищем ордер по тикету
          if (OrderSelect(ti, SELECT_BY_TICKET)==true) {
             // проверяем Закрылся ли этот ордер - это твоя Байка
             if (OrderCloseTime() > 0) {
                //  удаляем ордер Селлстоп - если связанная с ним байка Закрылась...
                OrderDelete(tid);
             }
          } 
       }
    }
}
 
你有很多的想法...相信我,你正在做的是废话......不要浪费你的时间...你的 "马丁格尔 "并不那么容易运作...
 
Aleksander:
你有很多的想法...相信我,你正在做的是废话......不要浪费你的时间...你的 "马丁格尔 "并不那么容易运作...
耶......谢谢)))。怎么可能不容易呢?