[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 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);
}
//+-----------

 

У меня две копии платформы одного брокера. В каждой свой Демо счет и общая папка experts.

Если я открываю первую, потом закрываю ее, затем открываю вторую то во второй необходимо поновой набрать пароль.

Закрываю вторую и открываю первую - теперь нужен пароль для первой. Так это и должно быть?

Спасибо!

 
Necron писал(а) >>

high=iHigh(NULL,60,1); Или что-то не так?

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

 
Vinin >>:

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

Хорошо, буду разбираться. Спасибо!

 

Это опять я...Сильно уж не ругайте...Опыта по советникам у меня около двух недель...

Сделал трал в советнике по фракталам, а в журнале при тесте выдает ошибку OrderModify error 1, хотя лося исправно переносит по фракталам. Использовал функцию Кима 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 error 1 бывает, когда новые параметры точно соответствуют тем, что в ордере..

 
keekkenen >>:

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

Спасибо, keekkenen! Параметры разные. Ответ нашелся здесь. Совет (в ветке) забить на эту ошибку...NormalizeDouble тоже не помогает.

А что можете сказать по второй ошибке (по добавлениям)?

 
как в советники узнать сколько на данный момент бумажной прибыли, т.е прибыль по незакрытым позимциям?
 
dmmikl86 писал(а) >>
как в советники узнать сколько на данный момент бумажной прибыли, т.е прибыль по незакрытым позимциям?

У 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);
  }
//+------------------------------------------------------------------+

или правлилнее будет вставить код скрипта в советник?

Причина обращения: