[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 416

 
vegetate писал(а)>>

你能告诉我如何从一个二维数组中传递一个维度到一个函数吗?

我对一些事情感到困惑。

int testarray[5][2] = {1,2,3,4,5,6,7,8,9,10};// хоть так и можно записать, но в уме нужно держать что это ТАБЛИЦА

void testfunc(int &inarray[][]){ // массив нужно передавать "как есть", но обрабатывать можно выбранную часть
string out_str="Result: "+inarray[i,0];

for (int i=1;i<5;i++){// еще нужно учитывать, что счет в массивах начинается с НУЛЯ. "первый - нулевой"
out_str += (", "+inarray[i,0]); // здесь бы использовал строковую функцию конкатенации
}
Print(out_str);
}
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
Print("Call first:");
testfunc(testarray);
Print("Call second:");
testfunc(testarray);
//----
return(0);
}
//+-----------

 

我有两份同一经纪人的平台。每个人都有自己的模拟账户 和一个名为专家的共享文件夹。

如果我打开第一个,然后关闭它,再打开第二个,我需要在第二个中再次输入密码。

我关闭第二个,打开第一个--现在我需要第一个的密码。它应该是这样的吗?

谢谢你!

 
Necron писал(а)>>

high=iHigh(NULL,60,1); 还是有什么问题?

一切都是正确的。但如果你想使用多个时间段或符号,你需要在你的EA中做出相应的逻辑。

 
Vinin >>:

Все правильно конечно. Но если нужно использовать несколько таймфреймов или инструментов, то нужно делать соотвествующую логику в советнике.

好的,我会研究的。谢谢你!

 

又是我......不要骂我太多......我有大约两周的EA经验......。

我已经根据分形创建了我的专家顾问,但在测试过程中,它一直在我的日志中显示OrderModify错误1,尽管我的麋鹿是根据分形正确移动的。我使用了Kim的FindNearFractal函数。代码如下。

   for( cnt=0; cnt< total; cnt++)
     {
      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
           // check for trailing stop
            if( TrailFractal)
              {
               OrderModify(OrderTicket(),OrderOpenPrice(), FindNearFractal(NULL,0,MODE_LOWER),0,0,Green);
                     return(0);
                            }
           }
         else // go to short position
           {
            // check for trailing stop
            if( TrailFractal)
              {              
                     OrderModify(OrderTicket(),OrderOpenPrice(), FindNearFractal(NULL,0,MODE_UPPER),0,0,Red);
                     return(0);
               
              }
           }
        }
并补充了另一个问题。代码如下。
     for(int i = 0; i < OrdersTotal(); i++)
   {
      // выбор ордера
      if(OrderSelect( i, SELECT_BY_POS) == false) continue;
      // not current symbol
      if(OrderSymbol() != Symbol()) continue;
  }
if(OrderType() == OP_SELL)
{
//при профите >20 pips добавится или докупится ...
 if(OrderProfit()>20)//////если поставить другое условие открывает много позиций
 OrderSend(Symbol(),OP_SELL, Lots,Bid,3, sl_sell,0,"Ma+Fr",16384,0,Red);
  PeriodForSleep=((Time[0]-Time[1])-(TimeCurrent()-Time[0]))*1000; 
Sleep( PeriodForSleep);
}
if(OrderType() == OP_BUY)
{
//при профите >20 pips добавится или докупится ...
 if(OrderProfit()>20)//////если поставить другое условие открывает много позиций
 OrderSend(Symbol(),OP_BUY, Lots,Ask,3, sl_buy,0,"Ma+Fr",16384,0,Lime);
   Sleep( PeriodForSleep);
}
如果我在添加条件中设置分形突破(或任何其他信号),而不是OrderProfit()>20,它就会打开许多头寸。我试着添加Sleep()--它没有 帮助。这里有什么问题呢?
 

OrderModify错误1通常发生在新的参数与订单中的参数完全匹配的情况下...

 
keekkenen >>:

обычно OrderModify error 1 бывает, когда новые параметры точно соответствуют тем, что в ордере..

谢谢你,keekkenen!参数是不同的。 答案就在这里。建议(在主题中)是钉住这个错误...NormalizeDouble也没有帮助。

而对于第二个错误(关于加法),你能说什么?

 
EAs如何知道目前有多少纸面利润,即未平仓的利润?
 
dmmikl86 писал(а)>>
你怎么知道目前EA中有多少纸面利润,即未平仓的利润?

KimIV有GetProfitOpenPosInPoint()函数。

 
khorosh >>:

У KimIV есть функция GetProfitOpenPosInPoint().

我可以这样做吗,它能行吗?

extern double Level_Profit = 200;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   double paper_money = AccountEquity()-AccountBalance();
   if ( paper_money > Level_Profit)
      {
       #include "scripts\s_close_all.mq4"
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+

还是将脚本代码插入到EA中会更好?

原因: