[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 207

 

Расчёт маржи на 1 лот весьма прост:

  double МАРЖА=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
  double МАРЖАИНИ=MarketInfo(Symbol(),MODE_MARGININIT);
  double МАРЖАПОДД=MarketInfo(Symbol(),MODE_MARGINMAINTENANCE);
  double МАРЖАЛОК=(MarketInfo(Symbol(),MODE_MARGINHEDGED)*2)/MarketInfo(Symbol(),MODE_LOTSIZE);

Возвращаемые значения в валюте депозита.

!!! имейте ввиду, что могут возращаться 0 и это есть норма.

Некоторые дилинги не используют маржЫ инициализации и\или поддержки.

А также используется "нулевая маржа" перекрытых...

*

Инфо-тип расчёта перекрытых, по принципу, вариант:

  string МАРЖАЛОКИД="na";
  if(МАРЖАЛОК==0)    МАРЖАЛОКИД="0";
  if(МАРЖАЛОК==1)    МАРЖАЛОКИД="1";
  if(МАРЖАЛОК==0.5)  МАРЖАЛОКИД="1D";
  if(МАРЖАЛОК==2)    МАРЖАЛОКИД="2";  
 
kombat >>:

Расчёт маржи на 1 лот весьма прост:....

Он не того хотел. Ему надо посчитать маржу открытых ордеров раздельно по инструментам. То есть просуммировать лоты по инструментам и умножить на маржу инструмента.

 
granit77 >>:

Он не того хотел. Ему надо посчитать маржу открытых ордеров раздельно по инструментам. То есть просуммировать лоты по инструментам и умножить на маржу инструмента.

Ну дык просто, по каждому инструменту своё: суммлот*маржа

Маржу знаем, суммлот вот:

double SumLot(){ double buy=0, sell=0, sl; int y;
for(y=0;y<OrdersTotal();y++) {OrderSelect(y,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderType()==0) buy+=OrderLots();
if(OrderSymbol()==Symbol() && OrderType()==1) sell+=OrderLots();
} return(buy-sell);}
 
kombat писал(а) >>

Расчёт маржи на 1 лот весьма прост:

Возвращаемые значения в валюте депозита.

!!! имейте ввиду, что могут возращаться 0 и это есть норма.

Некоторые дилинги не используют маржЫ инициализации и\или поддержки.

А также используется "нулевая маржа" перекрытых...

*

Инфо-тип расчёта перекрытых, по принципу, вариант:

Спасибо.

А чем отличается маржа инициализации и поддержки от обычной маржи - для чего их используют?

 
Finbest >>:

Спасибо.

А чем отличается маржа инициализации и поддержки от обычной маржи - для чего их используют?

Это интструментарий фучерсов.

м.ини = требуемая маржа для открытия

м.подд = отображаемая после открытия

Расчёты довольно сложные и специфичные, поэтому ориентируюсь на торг.условия дилинга.

м.подд обычно ~75% от м.ини, примеры тут...

 

Ещё один вариант смотреть маржу раздельно по инструментам.

(слегка подрихтованый iExposure )

Файлы:
 

Привет. Помогите пожалуста.

написал такую програмку.. она неработает..


double ves[][6], hour[][6];
ArrayCopyRates(ves, Symbol(), Period());// массив имеет все данные с графика

int day= Day();
int hou= Hour();
da= day;
for (; q<= da; q++, w--){
    if (TimeDay(ves[q][0])== w && TimeHour(ves[q][0])== hou){
       ArrayCopy(hour, ves, e, q);
       e++;
    }
}

у меня есть два массива. масив ves это тайм-массив. 

что мне надо........

берем нынешний час. из ves копируем в hour. все 6 данных.

берем вчерашний день тотже час (вчерашнего дня) из ves копируем в hour.

и так далее..

 

Ребята, помогите, никак не могу понять как сделать.

Есть цикл расчитывающий уровни между LOW и HI с шагом Step.

for ( double c = LOW; c < HI; c = c + Step)

теперь мне нужно каждый уровень где-то запомнить, чтобы потом было легко его вытащить и сравнить с нынешней ценой. Очень прошу в виде кода, не от лени, а т.к. пока не увижу пример все равно не пойму как сделать. Спасибо!

 

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

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

Вычисляется он так Lots=MathMin(20,NormalizeDouble(MathMax(Lots,AccountEquity( ) /3000),1));

ТЕСТ


Символ EURCHF (Euro vs Swiss Franc)
Период 1 Минута (M1) 2009.08.30 23:02 - 2009.08.31 09:34 (2009.08.30 - 2009.09.05)
Модель Все тики (наиболее точный метод на основе всех наименьших доступных таймфреймов)
Параметры min=0.1;

Баров в истории 1519 Смоделировано тиков 2156 Качество моделирования 24.95%
Ошибки рассогласования графиков 0




Начальный депозит 450.00



Чистая прибыль -8.00 Общая прибыль 0.00 Общий убыток -8.00
Прибыльность 0.00 Матожидание выигрыша -2.00

Абсолютная просадка 32.00 Максимальная просадка 38.00 (8.33%) Относительная просадка 8.33% (38.00)

Всего сделок 4 Короткие позиции (% выигравших) 1 (0.00%) Длинные позиции (% выигравших) 3 (100.00%)

Прибыльные сделки (% от всех) 3 (75.00%) Убыточные сделки (% от всех) 1 (25.00%)
Самая большая прибыльная сделка 0.00 убыточная сделка -8.00
Средняя прибыльная сделка 0.00 убыточная сделка -8.00
Максимальное количество непрерывных выигрышей (прибыль) 3 (0.00) непрерывных проигрышей (убыток) 1 (-8.00)
Максимальная непрерывная прибыль (число выигрышей) 0.00 (0) непрерывный убыток (число проигрышей) -8.00 (1)
Средний непрерывный выигрыш 3 непрерывный проигрыш 1

Время Тип Ордер Объём Цена S / L T / P Прибыль Баланс
1 2009.08.31 00:16 buy 1 0.30 1.5161 1.5127 1.5163
2 2009.08.31 00:37 close 1 0.30 1.5161 1.5127 1.5163 0.00 450.00
3 2009.08.31 00:44 buy 2 0.30 1.5158 1.5124 1.5161
4 2009.08.31 02:58 close 2 0.30 1.5158 1.5124 1.5161 0.00 450.00
5 2009.08.31 03:14 buy 3 0.40 1.5152 1.5118 1.5154
6 2009.08.31 03:30 close 3 0.40 1.5152 1.5118 1.5154 0.00 450.00
7 2009.08.31 06:45 sell 4 0.40 1.5151 1.5185 1.5149
8 2009.08.31 08:18 close 4 0.40 1.5153 1.5185 1.5149 -8.00 442.00








































































 
001 >>:

Ребята, помогите, никак не могу понять как сделать.

Есть цикл расчитывающий уровни между LOW и HI с шагом Step.

for ( double c = LOW; c < HI; c = c + Step)

теперь мне нужно каждый уровень где-то запомнить, чтобы потом было легко его вытащить и сравнить с нынешней ценой. Очень прошу в виде кода, не от лени, а т.к. пока не увижу пример все равно не пойму как сделать. Спасибо!

Как вариант:

double c, levels[];
int nCount = 1+(HI - LOW)/Step;
ArrayResize(levels, nCount);

for (c = LOW, nCount = 0; c < HI; c += Step, nCount++) {
    levels[nCount] = c;
}

// Use:
for (int j = 0; j < nCount; j++) {
    if (levels[j] > ...) {
        //...
    }
}
Причина обращения: