[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 463

 

大家好!

你能告诉我如何教专家顾问记住有一个开单的事实(在关闭订单后)。全局逻辑变量是合适的,但只适用于一种仪器。如果我在一个终端有一个以上的符号,变量就会改变,不能像预期那样工作。

 
demlin:

大家好!

你能告诉我如何教专家顾问记住有一个开单的事实(在关闭订单后)。全局逻辑变量是合适的,但只适用于一种仪器。如果我在一个终端有一个以上的符号,变量就会改变,不能像预期那样工作。


所以每个工具都有自己的全局变量)。
 
tol64:

所以每个工具都有自己的全局变量)。
这是有道理的,那么我怎样才能让程序生成名称呢?我不想手动将60个变量塞进代码中)))。
 

大家好!

我有困难...我一直在研究这个问题,我一直想在欧元/美元上开一个空单,我一直想在MA之前开一次空单,而且前一根蜡烛的收盘价低于MA,但订单没有打开,我现在在测试器中工作,订单像个好人一样打开了。

代码中的错误在哪里--我不明白,我已经专门插入了条件,如果订单没有打开--尝试打开10次,但似乎没有帮助,请帮助一个初学者...

void CheckForOpensell()
  {
   double maopensell;
   int    ticketsell=0;


//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   maopensell=iMA(NULL,TF,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
   if(Open[1]>maopensell && Close[1]<maopensell)
   for (int it=1; it<=10; it++)
    {
      while (!IsTradeAllowed()) Sleep(5000); 
      RefreshRates();
      ticketsell=OrderSend(Symbol(),OP_SELL,LotsOptimizedsell(),Bid,3,0,0," MA Sell M"+TF,MAGICMA,0,Red);
      if(ticketsell>0)
         {
          OrderModify (ticketsell,OrderOpenPrice(),Bid+StopLoss*Point,Bid-TakeProfit*Point,0,Gold);
          return;  
         }
      
      else
       {
        int err=GetLastError();
        if (err==128 || err==142 || err==143 || err==144) 
         {
           Sleep(2000);
           Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
           continue;
         }
        if (err==146) while (IsTradeContextBusy()) Sleep(2000);
        Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
        if (err==2 || err==64 || err==65 || err==4110 || err==4111) break;
        Sleep(2000);
       }
      
     }
  }
 
Abylhat:

大家好!

我有困难...我每天24小时在图表上使用EA,今天下午在欧元/美元上我有一个开空头的条件,(前一根蜡烛的开盘价高于MA,其收盘价低于MA),但订单没有打开,我现在在测试器中运行这部分--订单打开得很好。

如果订单没有打开,我试着打开了10次,但没有帮助,请帮助一个初学者......


很有可能问题出在这个方面

 if(Volume[0]>1) return;

有这种情况的信号可能被跳过。但在测试器中,它们肯定会工作。

测试器中没有跳勾现象。

 
Vinin:


很有可能问题出在这一部分

有这种情况的信号可能会被错过。但它们肯定会在测试器中工作。

测试器中没有跳勾现象


谢谢你,你能告诉我如何以不同方式设置条件吗?
 
Abylhat:

谢谢你,你能告诉我如何以不同方式设置条件吗?

int start(){
   static int prevtime=0;
   if (Time[0]==prevtime) return(0);
   prevtime=Time[0];

//
   return(0);
}
你可以用TimeCurrent()代替Time[0]。
 
demlin:

大家好!

你能告诉我,如何教专家顾问记住有一个订单是开放的(在订单关闭后)。全局逻辑变量是合适的,但只适用于一种仪器。如果在一个终端中有几个符号,变量就会发生变化,不能像预期那样工作。

专家顾问是否同时交易几个符号?

如果他/她只交易一个工具,可以在全局变量 的名称中加入专家顾问的魔术号码。

 
rlx:

专家顾问是否同时交易一个以上的工具?

如果它只交易一个,可以把专家顾问的魔法号码加到全局变量名称中。

专家顾问在同一时间交易多个工具
 
Vinin:

你可以用TimeCurrent()代替Time[0]。

谢谢,我将申请并测试....