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

 
我怎样才能在我的EA的代码中规定它们与我的每个货币对一起工作?我不知道我是否有不同的符号,或者我是否有不同的货币对。
 
logut:
我怎样才能在我的EA的代码中规定它们与我的每个货币对一起工作?我有一个不同的符号,但它不起作用。
我不确定我是否对不同的货币对使用单一的符号,但相同的符号就足够了。
 
你好。我写了一个EA,它在测试器中显示了良好的结果。编译时没有错误。它依附于欧元美元。
在真正的交易中,交易没有打开,当打开交易的条件出现时,它会给出一个信息。
2015.02.11 14:03:03.656 '1435109': 订单买入 0.01 EURUSD 开盘价 sl: 1.12697 tp: 1.13747 失败 [无效 S/L 或 T/P]
按照我的理解,这意味着这不是一个有效的停止或采取。手动下达带有给定止损和取舍的订单。在价格和停止之间有一段距离
在价格和点之间有几倍的距离。所有停止和电流的计算都是归一化的。可能是什么原因,我不明白,请帮助我理解。
以下是该计划。
int start()
{
//------------------------------------------------------------------------------------------------

如果(OrdersTotal()>0)
返回。
double monymax8=High[ArrayMaximum(High,3,0)]。
如果(我删除了条件本身,因为它不是原因,因为程序到达了OrderSend函数)。

{ double stop_sell8=monymax8+Point;
double STOP_S8=NormalizeDouble(stop_sell8,Digits)。
双倍利润_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid)。
double PROFIT_S8=NormalizeDouble(profit_sell8,Digits)。
double my_lot8=AccountBalance()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000。
double LOT8=NormalizeDouble(my_lot8,2)。
OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8)。
}
//------------------------------------------------------------------------------------------------
返回。
}

 
Rogoza:
你好。我写了一个EA,它在测试器中显示了良好的结果。编译时没有错误。它依附于欧元美元。
在真正的交易中,交易没有打开,当打开交易的条件出现时,它会给出一个信息。
2015.02.11 14:03:03.656 '1435109': 订单买入 0.01 EURUSD 开盘价 sl: 1.12697 tp: 1.13747 失败 [无效 S/L 或 T/P]
按照我的理解,这意味着这不是一个有效的停止或采取。手动下达带有给定止损和取舍的订单。在价格和停止之间有一段距离
在价格和点之间有几倍的距离。所有停止和电流的计算都是归一化的。可能是什么原因,我不明白,请帮助我理解。
以下是该计划。
int start() 
 {
 
//------------------------------------------------------------------------------------------------
if (OrdersTotal()>0)
   return;
   
   double monymax8=High[ArrayMaximum(High,3,0)];
   
       
        if (само условие я убрал так как не в нём причина, раз программа доходит до функции  OrderSend)
        {   double stop_sell8=monymax8+Point;
            double STOP_S8=NormalizeDouble(stop_sell8,Digits);
            double profit_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid);
            double PROFIT_S8=NormalizeDouble(profit_sell8,Digits);
            double my_lot8=AccountBalance()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
            double LOT8=NormalizeDouble(my_lot8,2);
           
             
           OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8);
            
                   
        }
      
 //------------------------------------------------------------------------------------------------
   return;
 } 

你的代码格式是这样的。有一个SRC按钮用于此。

它没有打开,因为在这些账户类型中,没有止损的订单首先被打开,然后OrderModify()。

 
evillive:
只有在同一个符号上有几个 "交易者 "时才需要魔力,但这足以检查这个符号。
我明白了。现在我担心的是如何使EA成为多币种?
 
AlexeyVik:

你的代码格式是这样的。有一个SRC按钮用于此目的。

它没有打开,因为在这些账户类型中,没有止损的订单首先被打开,然后OrderModify()。

非常感谢!我将重写代码。
 
logut:
所以我明白了,现在我的问题是如何使EA成为多币种?
打开kodobase,在那里找到一个多货币EA,并弄清楚它是如何工作的。
 

一般来说,我在某件事情上真的很纠结,想不出该怎么做。

我有变量line1、line2、line3等。我想通过for循环语句 来计算每个变量的值。

如何进行正确的变量列举行?我试着以 "行 "+"i "的方式进行,但结果当然是无稽之谈。

for(int i=1;i<=111111111111;i++)
        {
            if("line"+"i">0)counter++;
        }
 
可能更好的做法是建立一个数组line[],然后循环浏览。
 

为什么会显示错误的对象?它应该是一个指向左边三角形https://docs.mql4.com/ru/constants/objectconstants/arrows 代码3,但出现了一个指向上方的箭头Wingdings代码241。

obj

程序代码(我有ObjectSet(objName, OBJPROP_ARROWCODE, 3);)

void f_ArrowClose(
                  datetime closeTime,
                  int action,          //íàïðàâëåíèå
                  double lots,
                  string symb,
                  double openPrice,
                  double closePrice,
                  double profit)
{
      color c;
      string op="";
      if(action==1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_BUY";
      }
      else if(action==-1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_SELL";
      }
      
      string objName = StringConcatenate("#", closeTime, " ", op, " ", lots, " ", symb, " at ", openPrice, " close at ", closePrice);
      ObjectCreate(objName, OBJ_ARROW, 0, closeTime, closePrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 3);
      //ObjectSetText(objName, StringConcatenate("Profit: ", profit));
}
原因: