0
Ой, да пожалуйста…
118.559 lot 0.5 своп 1.22$
117.559 lot 0.2 своп 0 (лот свежий, еще не ночевал :)  )
avatar

Fargo

  • 26 марта 2015, 13:53
0
Я же расписал выше — лот это сколько раз нужно взять эту цену для расчета

А для йены это сколько будет в деньгах? Котирока 118,559, объем 0,5?
И как для нее учесть своп в размере допустим 1,22$
avatar

Fargo

  • 26 марта 2015, 13:11
+1
нет
в первом слагаемом денег нет
там чисто математическое среднее считается
возьмем три лота:
номер объем цена
1 ____ 2 ____ 3
2 ____ 4 ____ 5
3 ____ 1 ____ 7

по формуле (2*3+4*5+1*7)/(2+4+1)
тоже самое (3+3+5+5+5+5+7)/(1+1+1+1+1+1+1)
Денег здесь нет
avatar

Fargo

  • 26 марта 2015, 13:00
0
Тогда формула не верная — получается что из котировки вычитаются деньги
avatar

Fargo

  • 26 марта 2015, 12:45
0
А своп вы в чем берете? в пунктах?
avatar

Fargo

  • 26 марта 2015, 12:33
0
Можно даже не приводить все к мин.лоту, а сразу рассчитать стоимость пункта для всего объема не сбалансированной позиции, т.е. для Dlot
avatar

Fargo

  • 26 марта 2015, 12:17
0
Ну если вся проблема в плавающей величине стоимости одного пункта, то решение в том что бы найти его на нужном нам уровне.

Для этого находим уровень БУ без учета свопов (так как это сделано в том же ZeroLevel).

Потом рассчитываем стоимость пункта на уровне zero (для минимального лота).
И корректируем найденный уровень БУ на величину необходимую для учета свопов и комиссий.

Для этого всю сумму свопов делим на разницу между объмами бай и селл — что даст нам величину свопов на 1 мин. лот.
Разделив полученное на стоимость одного пункта для мин.лота — получаем сколько нужно пройти этим мин. лотом что бы компенсировать своп. Т.е. это будет величина коррекции найденого ранее уровня БУ.
avatar

Fargo

  • 26 марта 2015, 10:28
0
Там нужно в расчетах для усредняемого ордера брать только нужную часть профита.
Т.е. для первого ордера Protit_1*K_order.
И объем также Lots_1*K_order

Ну тоесть как бы считаем что у нас усредняемый ордер не объемом 1,0 а например 0.2 — если мы хотим усреднить 20% от первого ордера (K_order=0.2)
avatar

Fargo

  • 26 марта 2015, 10:15
+1
Полистал интернет и понял что для кроссов рассчитать ticvalue на заданном уровне с какой либо приемлемой точностью не реально…
Пункт = Размер тика * Размер лота * Текущую котировку базовой валюты относительно USD / Текущую котировку пары.

Вот эта переменная (Текущую котировку базовой валюты относительно USD) превращает расчет в гадание на кофейной гуще. Так что можно смело брать значение ticvalue из MarketInfo, что бы хоть как то учитывать свопы. *pardon* 

Буду рад, если я ошибаюсь
avatar

Fargo

  • 26 марта 2015, 10:10
+1
Да, как то я это не учел *think* 

Тогда для минимизации погрешности так.
1.1. Находим уровень БУ как обычно, без свопов и комиссий.
if (lots!=0) zeroprice=sum/lots;

1.2. Здесь же отдельно считаем сумму свопов и комиссий, а также объемы позиций LostBuy, LotsSell

SSVP+=OrderCommission()+OrderSwap();
DLot=LostBuy-LotsSell;

2. Находим стоимость одного пункта для мин лота на этом уровне.

double lot_size = MarketInfo(Symbol(), MODE_LOTSIZE);
double min_lot = MarketInfo(Symbol(), MODE_MINLOT);
double point_size= MarketInfo(Symbol(), MODE_POINT);

tic_val=(lot_size*min_lot*point_size)/zeroprice;

3. Приводим накопленую сумму свопов(комиссий) к минимальному лоту и делим на стоимость пункта. Таким образом получаем коррекцию к найденому ранее уровню БУ.

DZP= (((SSVP*min_lot)/DLots)/tic_val)*Point;

4. Корректируем

if (DLot>0){ //бай перевешивает
ZLev= zeroprice-DZP ;} //уровень безубытка для Buy ордеров
if (DLot<0){
ZLev=zeroprice+ DZP;}

Вроде так получается. Погрешность конечно будет, но уже меньше.
Ну и пункты 2,3,4 можно совместить в одной зубодробительной формуле <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; '>&nbsp; '>&nbsp; 

ПС: Это относится к парам USD/Валюта. А вот как для кроссов рассчитать второй пункт я пока не придумал.
avatar

Fargo

  • 26 марта 2015, 01:15
+1
А на каких парах tickvalue меняется?
На кроссах?
Тогда не знаю *???* . Если только высчитывать приблизительно

Эту формулу не я придумывал, а нашел на просторах (сам долго искал)
Да…
Для общего БУ делается так:
<code>Отдельно считается ProfitBay, ProfitSell, LostBuy, LotsSell

DLot=LostBuy-LotsSell;
if (DLot>0){ //бай перевешивает 
ZLev= Bid - ((ProfitBay+ProfitSell)/ (tickvalue * DLot) * Point);}  //уровень безубытка для Buy ордеров 
if (DLot<0){ 
ZLev=Ask + ((ProfitBay+ProfitSell)/ (tickvalue * DLot) * Point);}   //уровень безубытка для SELL ордеров  
</code>

avatar

Fargo

  • 25 марта 2015, 21:52
0
Красивая линия эквити *good* 
Систему будешь обнародовать?
avatar

Fargo

  • 25 марта 2015, 14:57
+2
Глянул индюк *spokuha* 
Мне не очень понравилась формула расчета БУ используемая там. Какие то жестко заданные коэфф = 100000
Лучше адаптировать вот такое:
double tickvalue = MarketInfo(Symbol(), MODE_TICKVALUE);
//-----цикл по ордерам
Profit+=OrderProfit()+OrderCommission()+OrderSwap();
Lots += OrderLots();
//-----конец цикла
UrZPb = Bid - (Profit / (tickvalue * Lots) * Point);  //уровень безубытка для Buy ордеров  
UrZPs = Ask + (Profit / (tickvalue * Lots) * Point);   //уровень безубытка для SELL ордеров 
avatar

Fargo

  • 25 марта 2015, 14:25
0
Ждем с не терпением *friends* 
avatar

Fargo

  • 25 марта 2015, 12:04
+2
А тогда какой смысл в советнике, который не зарабатывает? *???* 

ПС: Эх, если бы я мог загонять цену туда куда хочу… :D 
avatar

Fargo

  • 25 марта 2015, 08:02
0
Так и присходит. *yes* 
Каждый следующий ордер рассчитывается по формуле РазмерПоследнегоОрдера*MKoef+НачЛот*SKoef
Я применяю MKoef=2 и SKoef=1
Идея в следующем: пусть ширина коридора 10, если первый бай не закрылся по ТП и цена дошла до отложки в селл, уже есть убыток. Мы его фиксируем селлом объемом равным первоначальному баю.(равнозначно закрытию бай в убыток) Чтобы отработать уже потерянное за те же 10 пунктов, открываем еще один такой объем. Итого имеем первоначальный лот умноженный на два. Ну и для того что бы немного заработать добавляется минимальный (стартовый) лот.
Если селл не отработал и цена вернулась к баю, все повторяется с новой силой.
Вот и получается такая формула.
Как то так…
avatar

Fargo

  • 24 марта 2015, 21:45
0
Дерзай *good*  Исходник есть
avatar

Fargo

  • 24 марта 2015, 21:33
0
положил, ссылка выше.
Единственная пара на которой выдержал 2014 год USDJPY. С настройками ТП=50п, канал 30 п. А вот начальное депо не помню — нужно подбирать. Но не очень большое. На центовике например реально такое разместить. Только вот прибыльность по сравнению с риском — ни в какие ворота. Что то на уровне 40-50% в год.
avatar

Fargo

  • 24 марта 2015, 19:53
0
Да они закрываются. Просто депо может не хватить на открытие очередного перекрывающего ордера.
В случае когда цена долго болтается в пределах заданного канала. Идет очень быстрое нарастание позиций
бай 0,01 — селл 0,04 — бай 0,09 -селл 0,19 — бай 0,29 — селл 0,59 — бай 1,19 -селл 2,39 -бай 4,79 -селл 9,59 — бай 19,19 — селл 38,39 — бай 76,79
+ к этому фиксируется каждым лотом убыток от предыдущего объем*ширину канала (см. выше картинку)
И все депо кончилось, здравствуй стоп-аут.
avatar

Fargo

  • 24 марта 2015, 19:47
0
Ну я вообще то Oxy предложил <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 
Ну вот можешь погонять с выходом по ТП. opentraders.ru/downloads/645/
Но это не совсем то что ты просил
avatar

Fargo

  • 24 марта 2015, 19:30