多币种顾问问题

 

晚上好!

我正在考虑将两对组合成一个EA。我已经做到了。

但我突然有了疑虑。我是这样做的。

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
double A = iRSI("GBPUSD", 0, .....);
double B = iRSI("GBPUSD", 0, .....);
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
//------------------------------------------------------
if (GBP) {//если есть разрешение true
if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }

在网上和策略测试器中,一切都在运作!这就是为什么我们要把它作为一种 "工具"。也许这不是很正确的做法。

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
//------------------------------------------------------
if (GBP) //если есть разрешение true{
 
double C = iRSI("GBPUSD", 0, .....);
double D = iRSI("GBPUSD", 0, .....); 
 if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
 if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }
第二个选项在测试器中似乎也能工作。

但什么是最好的方法呢?

 
rid:

晚上好!


我正在考虑将两对组合成一个EA。我已经做到了。


但我突然有了疑虑。我是这样做的。

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
double A = iRSI("GBPUSD", 0, .....);
double B = iRSI("GBPUSD", 0, .....);
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
//------------------------------------------------------
if (GBP) {//если есть разрешение true
if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }

在网上和策略测试器中,一切都在运作!这就是为什么我们要把它作为一种 "工具"。也许这不是很正确的做法。

extern bool    GBP=true;
extern bool    EUR=true;
- - - - - - - - - - - - - - - - - - - -
int start()
  {
//------------------------------------------------------
if (GBP) //если есть разрешение true{
 
double C = iRSI("GBPUSD", 0, .....);
double D = iRSI("GBPUSD", 0, .....); 
 if (A<B)
{
double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)     }}}
//----------------------------------------------------------  
if (EUR) { //если есть разрешение true
 
double C = iRSI("EURUSD", 0, .....);
double D = iRSI("EURUSD", 0, .....);
 if (C>D)
{
double   BID = MarketInfo("EURUSD", MODE____BID);
 double   ASK = MarketInfo("EURUSD", MODE____ASK);
 double POINT =MarketInfo("EURUSD",MODE____POINT);
(ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...)      }}}
//------------------------------------------------------------
return(0);  
  }
第二个选项在测试器中似乎也能工作。

但什么是最好的方法呢?




我通常在开始时计算所有的指标值,即变体1,这更容易,你不会感到困惑,代码也更有条理。
 

谢谢你!对于答案。还有一个问题。拖曳式止损不愿意工作。它们在测试器中单独工作!

但在网上,它对一双人来说是有效的。但对于另一个人来说,它产生了错误--就在连接专家顾问之后。

但成交了--只是在第二对上没有拖网。

错误130 修改SL

int start()
  {
РАСЧЁТ  ИНДИКАТОРОВ 
{
ПОКУПКА/ПРОДАЖА
  }
 
for (int j=0; j<OrdersTotal(); j++)                                    {
    if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES))                     {
     if (OrderSymbol()=="GBPUSD" && OrderMagicNumber()==Magic1)          {
ИДЕТ КОД 1 ТРЕЙЛИНГА.
   }
 
for (int r=0; r<OrdersTotal(); r++)                                    {
    if (OrderSelect(r, SELECT_BY_POS, MODE_TRADES))                     {
     if (OrderSymbol()=="EURUSD" && OrderMagicNumber()==Magic2)          {
ИДЕТ КОД 2 ТРЕЙЛИНГА
}
 
return(0);  
  }
后面的代码是相同的,但外部和内部变量的字符不同。

我无法理解什么是错的。也许有人会告诉我?

 
像这样试试
int start()
{
//РАСЧЁТ  ИНДИКАТОРОВ 
 
//ПОКУПКА/ПРОДАЖА
  
 
for (int j=0; j<OrdersTotal(); j++)
  {
    if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES))
       {
          if (OrderSymbol()=="GBPUSD" && OrderMagicNumber()==Magic1)         
              {
                  ИДЕТ КОД 1 ТРЕЙЛИНГА.
              }
          if (OrderSymbol()=="EURUSD" && OrderMagicNumber()==Magic2)   
              {
                  ИДЕТ КОД 2 ТРЕЙЛИНГА
              }
        }
   }
 
 
  return(0);  
}
 
将代码结构化,人们和你都会更容易理解。
 

我会试试的,谢谢你。

 

它似乎在起作用!

暂时没有错误。等待利润来检查拖网的情况。

更多问题。如果你不介意的话。

现在还没有最简单的多货币实验的例子。 而在有这些例子的地方,它们也不是为软弱的人准备的。要了解所有的事情太复杂了。

我的代码里有一个。

 double   BID = MarketInfo("GBPUSD", MODE_BID);
 double   ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);
//-------Проверяем условие на покупку-------------
if  (

然而,在本网站的罕见例子中,当类似的块状物出现时,有一条线。

RefreshRates();
 double BID = MarketInfo("GBPUSD", MODE_BID);
 double ASK = MarketInfo("GBPUSD", MODE_ASK);
 double POINT =MarketInfo("GBPUSD",MODE_POINT);

我还插入了这一行。它编制了。但我没有注意到性能上的任何变化。

这里需要多少呢?也许应该把它留在我的EA中。它对所有蜱虫都有效。而且它使用了一个数组的值--

//------заполняем массив значениями RSI GBPUSD -----------
 double RSI_array[30];
int    i=0;
while (i<31)
 {
RSI_array[i]=iRSI("GBPUSD",0,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i);
i++;

 
多币种专家顾问的原理大致如下。
1.在计算指标时要指定具体货币和时间间隔,例如:iRSI("GBPUSD",60,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i); //但这里有一个错误
2.使用MarketInfo获得价格、点数等。
3. 使用iLow(...)而不是Low[0],例如
并适用于所有货币对。
好运。
 

发现错误!而不是 "0" - 我把货币的指标变量 - 专家顾问工作的时间框架。

我的专家顾问似乎工作得很顺利。而且拖网也很有效。

还有最后一个问题,我希望。我又插入了一个。但它不是内置的指标,而是一个自定义的指标。在测试器中,这对组合是有效的。但在网上,它不会!它显示的东西很奇怪:几乎每秒钟都有这个指标被放置和删除。.....。- 有什么建议吗?

//***************************************************************

kLerk !在本周所有的专家中,你是唯一一个对我的问题作出回应的人。而我得到的答案是我基本满意的。( 关于RefreshRates()的问题除外 )

请把你的电子邮件地址放在这里。

为了表示感谢,我将送你一个简单的交易 "圣杯"--EA!这是我的好朋友发明的。(同意)我用它进行手动确认。我把它作为手动确认来使用。 我只使用两个内置的诱导指标。

毫无讽刺意味的是,--它真的几乎是一个 "圣杯"(在某些工作技巧上),--你在收到它之后几分钟就会发现然而--让大家看一看。

符号---------

期间30分钟(M30) 2007.01.02 11:00 - 2007.08.15 00:00

所有刻度线模型(基于所有最小的可用周期,对每个刻度线进行分形插值)。

建模质量 67.35

初始存款10000.00

净利润 4009.24

总利润 6335.06 总损失 -2325.82

利润率 2.72 预期回报率 21.44

最大缩水 245.63 (2.18%) 相对缩水 2.18% (245. 63)

交易总额 187

空头头寸(胜率) 71 (80.28%)

多头头寸(胜率) 116 (68.10%)

盈利的交易(占所有交易的百分比) 136 (72.73%)

亏损交易(占全部的百分比) 51 (27.27%)

最大的盈利交易145.02,亏损交易-47。77

平均获利交易46.58,亏损交易-45.60

最大的连续胜场数(利润) 9 (586. 96)

连续损失(亏损) 4 (-189.99)

而这里是上一年2006年11/12月的样本外测试图。

 
rid:

为了表示感谢,我将送你一个简单的交易"圣杯"--一个顾问!

祝贺你, 克勒克,你免费得到了圣杯!
 
<< 打印一些难以理解的东西:几乎每秒钟都有这个指标被放入和移除......。- >>

最有可能的是,调用自定义指标 的实际参数与列表中用extern键列出的正式参数不一致(数字、顺序、类型......)。这是一个很常见的错误。