l1*p1 + l2*p2 + l3*p3 = (l1+l2+l3) * p4;
p4 - достижения безубыточности
Отсюда уровень безубыточности я могу вычислить.
Теперь допустим я знаю уровень и мне надо вычислить p3 = p4 - 10*Point;
Мне надо вычислить l3.
Получаем:
(l1+l2+l3)*p4 - l3*p3 = l1*p1 + l2*p2
l3 = (l1*p1 + l2*p2 - l1*p4 - l2*p4) / (p4 - p3)
l1*p1 + l2*p2 + l3*p3 = (l1+l2+l3) * p4;
p4 - достижения безубыточности
Отсюда уровень безубыточности я могу вычислить.
Теперь допустим я знаю уровень и мне надо вычислить p3 = p4 - 10*Point;
Мне надо вычислить l3.
Получаем:
(l1+l2+l3)*p4 - l3*p3 = l1*p1 + l2*p2
l3 = (l1*p1 + l2*p2 - l1*p4 - l2*p4) / (p4 - p3)
Приятно пообщаться с умным человеком:)
Хочу поиграть с Мартингейлом.
Как вычислить размер лота, чтобы через 10 пунктов закрыть все ордера в плюсе?
Да тут как бы какой момент. У меня не одня позиция в минусе а несколько с разным лотом и ценой открытия. Так что немного не то...
Да тут как бы какой момент. У меня не одня позиция в минусе а несколько с разным лотом и ценой открытия. Так что немного не то...
По формулам получаются скачки в закрытии, а хочется уменьшить риски... Вот не могу понять что не так...
double lotBeBacks(int strateg, int typeToProfit) { double BuyProfits = 0.0; double SellProfits = 0.0; for(int i = OrdersTotal(); i >= 0; i--) { if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)!=true) continue; if(OrderSymbol()!=Symbol()) continue; if(OrderMagicNumber() != strateg) continue; if(OrderType()==OP_BUY) { BuyProfits += OrderProfit(); } if (OrderType()==OP_SELL) { SellProfits += OrderProfit(); } } double buyLot = 0.0; double sellLot = 0.0; // -------------------------------------------------- // if (typeToProfit == BUYPOSITION) { buyLot = MathAbs(BuyProfits) / 10 / MarketInfo(Symbol(),MODE_TICKVALUE); return (buyLot); } if (typeToProfit == SELLPOSITION) { sellLot = MathAbs(SellProfits) / 10 / MarketInfo(Symbol(),MODE_TICKVALUE); return (sellLot); } return (0); }
Да тут как бы какой момент. У меня не одня позиция в минусе а несколько с разным лотом и ценой открытия. Так что немного не то...
//+----------------------------------------------------------------------------+ double LevelWL(string sy) { // Рассчёт БУ для множества разнонаправленных позиций по символу double lbu=0, lbB=0, lbS=0, LevelWL=0, SymbolProfit=0; double LotB=0, LotS=0, SumLots, tv=MarketInfo(sy,MODE_TICKVALUE); double pa=MarketInfo(sy,MODE_ASK), pb=MarketInfo(sy,MODE_BID); int i, k=OrdersTotal()-1, sp=MarketInfo(sy,MODE_SPREAD), pt=MarketInfo(sy,MODE_POINT); for(i=k; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS)) { if(OrderSymbol()!=sy) continue; if(OrderType()>1) continue; SymbolProfit+=(OrderProfit()+OrderCommission()+OrderSwap()); if(OrderType()==OP_BUY) {numB++; LotB+=OrderLots();} if(OrderType()==OP_SELL) {numS++; LotS+=OrderLots();} } } SumLots=LotB-LotS; if(SumLots==0) return(0); lbB=pb+(MathAbs(SymbolProfit)/(tv*MathAbs(SumLots)))*pt; lbS=pa-(MathAbs(SymbolProfit)/(tv*MathAbs(SumLots))-sp)*pt; LevelWL=lbB; if(SumLots<0) LevelWL=lbS; return(LevelWL); } //+----------------------------------------------------------------------------+
Спасибо. Кое-что для меня урок: SymbolProfit+=(OrderProfit()+OrderCommission()+OrderSwap());
Остальное туманно. Как насчёт только баев???
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Хочу поиграть с Мартингейлом.
Как вычислить размер лота, чтобы через 10 пунктов закрыть все ордера в плюсе?