[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 375

 
artmedia70:
Time[номер_бара];

Спасибо! Попробую прописать :)
 
nemo811:
Вы учли цену, по которой открываются ваши ордера (Ask или Bid)?

говорю ж. прописываю, чтоб открывался ордер по одной цене, а он открывается на 1-2 пипса позднее. причем не всегда
 
myrzila:

говорю ж. прописываю, чтоб открывался ордер по одной цене, а он открывается на 1-2 пипса позднее. причем не всегда

Да, в некоторых ДЦ отложки могут срабатывать с проскальзыванием. Сам в такое не верил, пока ни увидел своими глазами. Мы тогда с другом занимались скальпингом в одном из ДЦ. Сделка жила в рынке не более минуты и тут же закрывалась. Поскольку подавляющее большинство сделок закрывались в плюсе, то ДЦ это было не выгодно. Этот ДЦ чтоб не скандалить и прекратить терять деньги выплатил нам заработанное и ввёл проскальзывание на отложки, как и проскальзывание на срабатывание стоп-приказов, зарубив тем самым нам всю торговлю. Вот так бывает. Так что обратитесь к своему ДЦ и сросите у них. почему отложки у Вас открываются не по той цене, по которой они выставлены.
 

Добрый день!

Возвращаюсь к вопросу, в котором не смог сам разобраться. Как программно определить пополнение/снятие за определенный период?

Т.е., если взять торговый период от 25 ноября и перебрать все ордера за это время, можно определить пополнения/снятия за этот период. А тут и вопрос: как вычислят?

extern string            DayX="25.11.2011 00:00";   

if(TimeCurrent()>StrToTime(DayX)) //если текущее время старше момента начала периода
     {
      for(i=0; i<StrToTime(OrdersHistoryTotal()); i++)
       {
         if(OrderOpenTime()<StrToTime(DayX)) continue;
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()==6)
          {
            jjjj=+ //а вот здесь загвоздка, что-же суммировать? профит по OrderType()==6????????
          }
       }
     }
 
forexnew:

Добрый день!

Возвращаюсь к вопросу, в котором не смог сам разобраться. Как программно определить пополнение/снятие за определенный период?

Т.е., если взять торговый период от 25 ноября и перебрать все ордера за это время, можно определить пополнения/снятия за этот период. А тут и вопрос: как вычислят?


Если OrderProfit() больше нуля - доливка, меньше - снятие
 
Vinin:

Если OrderProfit() больше нуля - доливка, меньше - снятие

Спасибо! Т.е. можно определить какие доливки и снятия были по отдельности?!

extern string            DayX="25.11.2011 00:00";   

if(TimeCurrent()>StrToTime(DayX)) //если текущее время старше момента начала периода
     {
      for(i=0; i<StrToTime(OrdersHistoryTotal()); i++)
       {
         if(OrderOpenTime()<StrToTime(DayX)) continue;
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()==6 && OrderProfit()>0)
          {
            Profit1=+OrderProfit(); //доливки
          }

         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()==6 && OrderProfit()<0)
          {
            Profit2=+OrderProfit(); //снятия          
          }
       }
     }
 

Почему функция расчета максимального лота возвращает "0" для инструмента #DD ? Причем это случается не всегда.

double MaxmaxLots(int cmd) 
{
    double result = 0;
    double lotStep = MarketInfo(SymbolMax[nnnn], MODE_LOTSTEP);
    double v = MarketInfo(SymbolMax[nnnn], MODE_MINLOT);
    double mult = 100;
    
    while (true) {
        if (AccountFreeMarginCheck(SymbolMax[nnnn], cmd, v + lotStep * mult) > 0) { 
            v = v + lotStep * mult;
        } else {
            mult = mult / 10;
            
            if (mult < 1) {
                if (AccountFreeMarginCheck(SymbolMax[nnnn], cmd, v) > 0) {  
                    result = v;
                }
                break;
            }
        }
    }
    
    return(result);
}    
 
forexnew:

Спасибо! Т.е. можно определить какие доливки и снятия были по отдельности?!


extern string            DayX="25.11.2011 00:00";   

if(TimeCurrent()>StrToTime(DayX)) //если текущее время старше момента начала периода
     {
      for(i=0; i<StrToTime(OrdersHistoryTotal()); i++)
       {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)=false) continue;
         if(OrderOpenTime()<StrToTime(DayX)) continue;
         if(OrderType()!=6) continue;

         if(OrderProfit()>0)
          {
            Profit1=+OrderProfit(); //доливки
          }
         else 
          {
            Profit2=+OrderProfit(); //снятия          
          }
       }
     }
 
int start()

  {
  DrowDownAlert=iCustom(NULL, 0, "Equity_v7",4,0);  
   

 double a=TotalLots(0);
 double b=TotalLots(1);
  Comment (a,b);
  return(0);
  }

//----------------------- подсчёт объема позиций----------------------------//
void TotalLots(bool zet)
{
   double total=0,total1=0;
   int slippage=20;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
      if (OrderType()==OP_BUY ) total=total+OrderLots();
      if (OrderType()==OP_SELL) total1=total1+OrderLots();
   }
 if (zet==0) return (total); else return (total1) ;  
 
}
Почему ошибкак выводит что возврат функции имеет нулевой результат, в чём ошибка???
 
nikelodeon:
Почему ошибкак выводит что возврат функции имеет нулевой результат, в чём ошибка???

//----------------------- подсчёт объема позиций----------------------------//
int TotalLots(bool zet)
{
   double total=0,total1=0;
   int slippage=20;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
      if (OrderType()==OP_BUY ) total=total+OrderLots();
      if (OrderType()==OP_SELL) total1=total1+OrderLots();
   }
 if (zet==0) return (total); else return (total1) ;  
 
}
Причина обращения: