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

 

Подскажите формулу расчета совокупной позиции. К примеру открыта позиция по акции SBER:

1. направление BUY
2. объем 15 лотов
3. цена открытия 170.05

отправляем еще одну заявку по SBER:

1. направление BUY
2. объем 25 лотов
3. цена открытия 172.10

Вопрос в том, что цена открытия совокупной позиции будет пересчитана и будет между 170.05 и 172.10, интересует расчетная формула новой цены.

 
Konstantin:

Подскажите формулу расчета совокупной позиции. К примеру открыта позиция по акции SBER:

1. направление BUY
2. объем 15 лотов
3. цена открытия 170.05

отправляем еще одну заявку по SBER:

1. направление BUY
2. объем 25 лотов
3. цена открытия 172.10

Вопрос в том, что цена открытия совокупной позиции будет пересчитана и будет между 170.05 и 172.10, интересует расчетная формула новой цены.

 =(170,05*15+172,1*25)/(15+25)

 

С одним из последних обновлений перестал компилироваться код в МТ4. При этом в МТ5 компилится без проблем, и ничего МТ5-специфичного в нём, насколько я понимаю, нет. Подскажите, плз, к чему это?


Пример кода, который компилируется в МТ5, но не в МТ4:

class Class1 { };

int OnInit()
{
    Class1 *arr1[], *arr2[];
    ArrayResize(arr1, 2);
    arr1[0] = new Class1();
    arr1[1] = new Class1();
    
    ArrayCopy(arr2, arr1);//Ошибка "arr1 - structures containing objects are not allowed" в MT4
    
    delete(arr1[0]); delete(arr1[1]);
    return(INIT_SUCCEEDED);
}


P. S.: Metatrader4 build 1090, Metatrader 5 build 1596

 
-Aleks-:

 =(170,05*15+172,1*25)/(15+25)

у меня получается расчет такой:
double _profit = (172.10 - 170.05) * 15;   // считаем полученную прибыль по первой позиции
double _profit_summ = _profit / (15 + 25); // считаем совокупную прибыль по объему
double _lev_op = 170.05 + _profit_summ;    // получаем цену открытия
как в итоге правильно?
 
Mist13:

С одним из последних обновлений перестал компилироваться код в МТ4. При этом в МТ5 компилится без проблем, и ничего МТ5-специфичного в нём, насколько я понимаю, нет. Подскажите, плз, к чему это?


Пример кода, который компилируется в МТ5, но не в МТ4:


P. S.: Metatrader4 build 1090, Metatrader 5 build 1596

где то тут писали, что с вводом новых правил по структурам и union, использовать функцию копирования массивов по отношению к массивам указателей будет не корректно
 
Konstantin:
где то тут писали, что с вводом новых правил по структурам и union, использовать функцию копирования массивов по отношению к массивам указателей будет не корректно
Ясно, спасибо. Не думал, что это связано с введением union'ов - связь как-то не очевидна. Впрочем, если не вылезут более серьёзные проблемы с совместимостью, то и ладно, это мелочи.
 
Konstantin:
у меня получается расчет такой:
как в итоге правильно?

 

Не ясно в чем сомнения - моя логика простая - посчитать сколько потратили на покупку активов всего (если забыть о марже) и поделить на общее количество купленных единиц - будет средняя цена одного актива - т.е. безубыток.

 

Запомнилось, что разработчики говорили о возможности обмена данными между агентами. Где посмотреть пример?

Вроде, канал фреймами односторонний - от агентов в терминал, но не наоборот.

 
Ошибка выполнения
void OnStart()
{
  int Array[];
  
  Array[ArrayResize(Array, ArraySize(Array) + 1) - 1] = 0; // array out of range
}
 
Ошибка выполнения
struct INT
{
  int Array[];
};

void OnStart()
{
  INT i = {0}; //  Если убрать "= {0}" - ошибка выполнения исчезает
  
  Print(ArrayResize(i.Array, 5)); // -1
}