Спасибо - учту... OpenOrder - внешняя переменная. В том и фокус что при любой фильтрации должен выходить расчёт
именно под установленное кол-во ордеров.
проверил принтом через старт ...выдаёт сумму 3х (OpenOrder - 3) первых правильно...
...дальше тупик...
17:18:28 2009.09.21 15:30 11 EURJPY_FX,M30: ПРОБА : -174.32
17:18:28 2009.09.21 16:00 11 EURJPY_FX,M30: ПРОБА : -174.32
17:18:28 2009.09.21 16:30 11 EURJPY_FX,M30: ПРОБА : -174.32
17:18:28 2009.09.21 17:00 11 EURJPY_FX,M30: ПРОБА : -174.32
17:18:28 2009.09.21 17:30 11 EURJPY_FX,M30: ПРОБА : -174.32
и т.д
прогнал Print("ПРОБА : ",(opBUY+opSELL)); ...всё равно не могу понять...
opBUY и opSELL принимают значения от нуля и выше - всё правильно
(prof+loss) в сумме любые значения...но он выдаёт результат правильно один раз, а дальше его клинит.
.....и меня уже от него тоже...
17:54:21 2009.10.01 12:00 11 EURJPY_FX,M30: SELL order opened : 131.15
17:54:21 2009.10.02 12:00 11 EURJPY_FX,M30: close #1 sell 0.10 EURJPY_FX at 131.150 at price 130.027
17:54:21 2009.10.02 12:30 11 EURJPY_FX,M30: ПРОБА : 0
17:54:21 2009.10.02 13:00 11 EURJPY_FX,M30: ПРОБА : 1
17:54:21 2009.10.02 13:30 11 EURJPY_FX,M30: ПРОБА : 2
17:54:21 2009.10.07 17:00 11 EURJPY_FX,M30: open #2 buy 0.10 EURJPY_FX at 130.741 ok
17:54:21 2009.10.07 17:00 11 EURJPY_FX,M30: BUY order opened : 130.741
17:54:21 2009.10.08 00:30 11 EURJPY_FX,M30: open #3 sell 0.10 EURJPY_FX at 130.125 ok
17:54:21 2009.10.08 00:30 11 EURJPY_FX,M30: SELL order opened : 130.125
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
скриптом выводит правельно ... а в советнике не работает.
double ProfitLossHistory(string sy="", int op=-1, int mn=-1)
{
double opBUY=0,opSELL=0,pBUY=0,lBUY=0,pSELL=0,lSELL=0,prof=0,loss=0;
if (sy=="0") sy=Symbol();
for (int i=OrdersHistoryTotal();i>=0;i--){
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if ((opBUY+opSELL) < OpenOrder ) {
double pro=OrderProfit()+OrderSwap()+OrderCommission();
if (OrderType()==OP_BUY)
{ opBUY++;
if (pro>=0)
{ prof+=pro; pBUY++; }
else
{ loss+=pro; lBUY++; }
}
if (OrderType()==OP_SELL)
{
opSELL++;
if (pro>=0)
{ prof+=pro; pSELL++; }
else
{ loss+=pro; lSELL++; }
} } } } } } }
return ((prof+loss));
}