Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Он не подходит, там нет информации за 10 лет.
Дык и у Вас не то
Переменная t изменится и будет ахтунг
Её надо запомнить перед началом закрытия серии
color ProfitColor;
datetime t;
// START //
//t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров
if(LastProfitCL(-1)<0) ProfitColor=Red;
if(LastProfitCL(-1)>0) ProfitColor=LimeGreen;
if(LastProfitCL(-1)==0)ProfitColor=DarkGray;
ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15);
ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(LastProfitCL(-1),2)),10,"Arial",ProfitColor);
// END START //
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(i=OrdersHistoryTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue;
if (op<0 || OrderType()==op)
{
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
return(LastProfit);
}
Дык и у Вас не то
Переменная t изменится и будет ахтунг
Её надо запомнить перед началом закрытия серии
Вы пробовали?
Там запоминает перед закрытием, в момент поступления сигнала на закрытие
Он не подходит, там нет информации за 10 лет.
Текущая прибыль, , вся история.
К то муже, индюк можно настроить на любую дату, время.
Попробуйте
return(LastProfit);Comment( LastProfitCL(-1, 0) );
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
if(t<=OrderCloseTime()) {
t=OrderCloseTime();
LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}}}}
}
Профит запоминает каждый новый, но потом что то считает не известное. На скрине №3 должно быть 4, а не 190
Вы пробовали?
Там запоминает перед закрытием, в момент поступления сигнала на закрытие
Так тоже 190
Профит запоминает каждый новый, но потом что то считает не известное. На скрине №3 должно быть 4, а не 190
Вот код, у меня отрабатывает хорошо, но возможно из-за правильного закрытия серии
Так тоже 190
Команда на закрытие ордеров где расположена?
Вы прописали там переменную t?
Команда на закрытие ордеров где расположена?
Вы прописали там переменную t?
t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеровЭто всё есть конечно
t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
Это всё есть конечно
t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
Нет, эту строчку убираем. Здесь уже расчет профита, работать так не будет.
Где команда на закрытие в коде - туда, только не такую строку
Читайте выше