Ошибки, баги, вопросы - страница 3367

 
Nikolay Shorin #:
int ticket=OrderSend(_Symbol,OP_BUY,fmax((AccountBalance()/DepoPerLot)*0.01),Ask,30,0,0,"",0,0,clrNONE);

fmax принимает два значения и из них выбирает наибольшее. У Вас там всего одно значение.

Документация по MQL5: Математические функции / MathMax
Документация по MQL5: Математические функции / MathMax
  • www.mql5.com
MathMax - Математические функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
class A: public CObject
   {};
   
   class B:  public CObject
   {};
   
   CObject *w = true ? new B() : new A(); //':' - invalid cast operation

А почему так нельзя?

 
tyup #:

А почему так нельзя?

Не знаю, но можно так.

CObject *w = true ? new B() : (CObject*)(new A());
 
fxsaber #:

Не знаю, но можно так.

Благодарю.

 
Помогите разобраться пожалуйста.

Я подписан на трейдера, через сервис MQL 5
Меня так же установлена утилита, которая увеличивает копируемый лот. Проблема в том, что я единственный клиент из 30 таких же, подписанных на этого трейдера, у которого сделки были закрыты с минусом в 60%. Закрыты были разом, как буд-то поступил сигнал

Прикрепляю логи, журнал, так же номера сделок

Если для детального расследования нужно что-то ещё - сообщите пожалуйста что это

Скриншот сделок провайдера, последнее закрытие было 10.07
Скриншот моих сделок, закрытие произошло 18.07


 
petrivasyuk #:
Помогите разобраться пожалуйста.

Я подписан на трейдера, через сервис MQL 5
Меня так же установлена утилита, которая увеличивает копируемый лот. Проблема в том, что я единственный клиент из 30 таких же, подписанных на этого трейдера, у которого сделки были закрыты с минусом в 60%. Закрыты были разом, как буд-то поступил сигнал

Прикрепляю логи, журнал, так же номера сделок

Если для детального расследования нужно что-то ещё - сообщите пожалуйста что это

Скриншот сделок провайдера, последнее закрытие было 10.07
Скриншот моих сделок, закрытие произошло 18.07


Тяжело читать текстовые логи картинками :)
Тем более, что на первом скриншоте сделки от 10 числа, а логи картинкой - за 18-е ...

Вот на вскидку:

  • Сигнальная система автоматически высчитывает лот подписчика в зависимости от балансов счетов подписчика/провайдера и плеча счета подписчика/провайдера. Если система видит, что у подписчика открыты ордера с лотом, который больше, чем сама система посчитала, то система производит коррекцию этим позиций, закрывая их частично (как бы исправляя ситуацию) - "position corrected sucessfully". Я у вас это в логах увидел.
  • Кроме того, система смотрит - открыта ли какая-то сделка у подписчика которая открыта у провайдера.
    То есть, если у вас закроется (сами закрыли, или вы копируете стоп лосс и тейк профит в настройках и у вас там по sl или tp закрылось),
    а у провайдера - еще открыта, то система опять откроет эту сделку, но уже по невыгодной (рыночной на данный момент) цене. Вряде случаев не рекомендуется ставить "галочку" в настройках по копированию sl и tp.
  • То же самое и к позициям, которые у  вас на счету есть, а у провайдера они закрыты (система их закроет).

Попробуйте посмотреть логи и найти еще причины сами, так как в логах все должно быть написано.

 

Пытаюсь рассчитать значения скользящего среднего Халла для предпоследнего бара и получаю некорректное значение. Помогите, пожалуйста, разобраться, в чем причина?

double workLwmp[][3];
double   HmaLength =   120;   
double   HmaPower  =    1;  
//==================================================================
void OnInit()
{
   int rates_total = Bars(_Symbol,_Period);
   int num_bar=1;

   int HalfPeriod = (int)MathFloor(HmaLength/2);
   int HullPeriod = (int)MathFloor(MathSqrt(HmaLength));

   datetime time = iTime(_Symbol,_Period,num_bar);
   double price = iClose(_Symbol,_Period,num_bar);
   double hma = iLwmp(2.0*iLwmp(price,HalfPeriod,HmaPower,rates_total,num_bar,0)-iLwmp(price,HmaLength,HmaPower,rates_total,num_bar,1),HullPeriod,HmaPower,rates_total,num_bar,2);
      
   Print(hma);
}
//==================================================================
double iLwmp(double price, double period, double power, int bars, int r, int instanceNo=0)
{
   if (ArrayRange(workLwmp,0)!= bars) ArrayResize(workLwmp,bars);

   workLwmp[r][instanceNo] = price;
   double sumw = MathPow(period,power);
   double sum  = sumw*price;
   for(int k=1; k<period && (r-k)>=0; k++)
   {
      double weight = period-k;
      sumw  += MathPow(weight,power);
      sum   += MathPow(weight,power)*workLwmp[r-k][instanceNo];  
   }   
            
   return(sum/sumw);
}
//==================================================================
 

опечатка в описании функции GetPointer.


опечатка в описании функции GetPointer (см. прицеп)

 

Возможно ли в такой ситуации задать пустой "прибавку" к имени переменной?

#define MACROS(A,B) Value##B = A;

void OnStart()
{
  int Value;
  int ValueNew;
  
  MACROS(1, New)
  
  // Нужно через макрос Value = 1;
  MACROS(1,)
  MACROS(1)
}
 
Подскажите по синтаксису.
struct A
{
  int i;
};

struct B : public A
{
  int j;
  
  void operator =( const A &a )
  {
    this.A::(operator =)(a); // Какой синтаксис?
    this.j = 0;
  }
};

void OnStart()
{
  A a;
  B b;
  
  b = a;
}