Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 647

 
simpleton:

Если нужны другие вычисления, кроме цены общей позиции, можно "вернуть" значения S1 и S2 в вызываемую функцию, передав сами переменные по ссылке, а из функции возвращать признак ошибки. То есть, прототип вызываемой функции мог бы выглядеть так: "bool fun(double &S1, double &S2);". Вызывающая функция заводит переменные, передаёт их в fun(), и, если fun() вернула true, использует значения переданных переменных (которые сами по себе могут называться и по-другому) как S1 и S2.

Спасибо! Вас понял. Разве, что с ошибкой по OrderSelect, не понятно как остановить кроме как  continue.

Удалил поздно сообщение, сделал почти также как описали.

double CenaUsrednenija(const int type,const int Magic){
double nn=0,bb=0;
 double factb=0;
  int total=OrdersTotal();

for(int i=total-1; i>=0; i--)
  {
    if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;  

   if(OrderSelect(i,SELECT_BY_POS))
     {
      if(OrderSymbol()==Symbol())
        {
         if(OrderType()==type && OrderMagicNumber()==Magic)
           {
            double op=OrderOpenPrice();
            double llot=OrderLots();
            double itog=op*llot;
            bb=bb+itog;
            nn=nn+llot;
            factb=NormalizeDouble(bb/nn,_Digits);
        //  Print("  type= ",type," Цена открытия= ",op, " Лот= ",llot, " itog=op*llot= ",itog, " factb=bb/nn= ",factb);
        
           }
        }
     }
  }  return(factb);  
}  
 

Не могу написать функцию, такого плана.

- Если ордер SELL в убытке -1000пип. , то открываем такой же ордер SELL на расстоянии 1000п. от первого. Если еще -1000п то еще открываем и т.д.

 
Top2n:

Не могу написать функцию, такого плана.

- Если ордер SELL в убытке -1000пип. , то открываем такой же ордер SELL на расстоянии 1000п. от первого. Если еще -1000п то еще открываем и т.д.


а в чём сложность возникла? Выбираете нужный ордер OrderSelect-ом , по тикету например.Сравниваете прибыль по нему OrderProfit-ом, потом отправляете запрос на открытие ещё одного ордера OrderSend.
 
Top2n:

Не могу написать функцию, такого плана.

- Если ордер SELL в убытке -1000пип. , то открываем такой же ордер SELL на расстоянии 1000п. от первого. Если еще -1000п то еще открываем и т.д.


по этому условию второй ордер открывать надо по текущей цене, она как раз примерно на 1000 пунктов от цены открытия первого, так что ничего сложного - простой приказ на открытие новой позиции.
 
Господа может кто подскажет, где найти архив котировок по качественней.  
 
Top2n:
Господа может кто подскажет, где найти архив котировок по качественней.  

Качаем Tickstory и им уже с Дукаскопии тики скачиваем, потом можно экспортировать в МТ4, но только это временно, терминал переписывает опять своими файлами. То есть это только для тестера, чтобы качество моделирования 99,9% было.
 
evillive:

Качаем Tickstory и им уже с Дукаскопии тики скачиваем, потом можно экспортировать в МТ4, но только это временно, терминал переписывает опять своими файлами. То есть это только для тестера, чтобы качество моделирования 99,9% было.

Да, тема, спасибо большое!)
 

Не могу понять в чем ошибка с WindowTimeOnDropped(). Нет значений при сбрасывании на график( все время =0). Написал маленький код для проверки.


//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- input parameters

double xBuffer[];
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,xBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="Mouse";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//----
   return(0);
  }

int start()
  {
  datetime Mouse=WindowTimeOnDropped();
  Alert(" Mouse= ",Mouse);
  xBuffer[0]=Mouse;
  return(0);
  }
 
Коллеги, подскажите, каким образом в ЕА можно проигнорировать событие onChartEvent(...) ?

Беда в том что если при запущенном ЕА сменить временной период графика, ЕА заного инициализируется и по новой открывает сделки. В свою очередь сделки которые были открыты до этого остаются "без присмотра".

Как бороться? Нужно каким-то чудо образом перерисовать график, но при этом подцепить к нему ранее инициализированного ЕА.

 
intrade:
Коллеги, подскажите, каким образом в ЕА можно проигнорировать событие onChartEvent(...) ?

Беда в том что если при запущенном ЕА сменить временной период графика, ЕА заного инициализируется и по новой открывает сделки. В свою очередь сделки которые были открыты до этого остаются "без присмотра".

Как бороться? Нужно каким-то чудо образом перерисовать график, но при этом подцепить к нему ранее инициализированного ЕА.


Прописать точные недвусмысленные условия открытия!
Причина обращения: