весма недурственно! а есть возможность прикрутить к этой версии динамический лот?за год.
трал true
ATR true
весма недурственно! а есть возможность прикрутить к этой версии динамический лот?за год.
трал true
ATR true
весма недурственно! а есть возможность прикрутить к этой версии динамический лот?
да, но в ней нет многих опций. можно, конечно, и руками, но....))
да, но в ней нет многих опций. можно, конечно, и руками, но....))
ну, в целом вы правы, сделок не много, можно и руками вмешатьсяЛично мне эта версия не нравится) Робот и так не совсем безопасный, а с динамикой вообще всё может закончится намного быстрее.
Я отталкивался от кол-ва непрерывных проигрышей и меня интересовала при этом макс. просадка.
И пока в этом плане интереснее версия с фиксированным лотом)
Вот мой тест-репорт с депо в килобакс и лот размером в 0.2
Просадку чем ниже в 40 % не получается добиться
Да ты прав, хотел написать что общее кол-во убыточных сделок всегда выходит в области 40 процентовВроде на картинке просадка 20%)
Время сервера какое в алпари?
Если GMT 0, то время торговли надо изменить: старт 6, финиш 21
В советнике 3.2.0 по умолчанию стоит для GMT+2: старт 8, финиш 23
lease:
Да ты прав, хотел написать что общее кол-во убыточных сделок всегда выходит в области 40 процентов
И время GMT+2, спасибо.
А исходник, как есть вариант поделиться или никак уже?lease:
смотрел , все что там есть и в этой ветке одно и тоже.моей версией никак. Есть на буржуйском форуме куча разных вариантов в mq4
ветка автора: _https://www.forexfactory.com/showthread.php?t=840339
double profitToday = GetProfitForDay(0);
l_name_8 = gs_104 + "7";
if (ObjectFind(l_name_8) == -1) {
ObjectCreate(l_name_8, OBJ_LABEL, 0, 0, 0);
ObjectSet(l_name_8, OBJPROP_CORNER, 1);
ObjectSet(l_name_8, OBJPROP_XDISTANCE, 10);
ObjectSet(l_name_8, OBJPROP_YDISTANCE, 155);
}
ObjectSetText(l_name_8, "Процент прибыли: " + DoubleToStr(profitToday / GetProfitTodayInPercent() * 100.0, 2)+"%", 10, "Courier New", White);
double GetProfitTodayInPercent()
{
double profitToday = GetProfitForDay(0);
double balanceToday = AccountBalance() - profitToday;
return 100.0 * profitToday/balanceToday;
Сейчас немного по-другому все прописывается - как в 5-м языке и смотри документацию. Но у меня и по-старому работает, как у тебя, только я не делаю проверку на наличие объекта, а создаю лейбл каждый раз. Попробуй убрать if... с кривыми скобками (обе скобки!).ошибок нет но при компиляции но на графики просто выводиться LABEL
я новичок подскажите что не так тут.
Ошибка так получаетсяСейчас немного по-другому все прописывается - как в 5-м языке и смотри документацию. Но у меня и по-старому работает, как у тебя, только я не делаю проверку на наличие объекта, а создаю лейбл каждый раз. Попробуй убрать if... с кривыми скобками (обе скобки!).
Если прописать так:Ошибка так получается
double profitToday = GetProfitForDay(0);
l_name_8 = gs_104 + "7";
if(ObjectFind(0,l_name_8)>=0) ObjectDelete(0,l_name_8);
ObjectCreate(l_name_8, OBJ_LABEL, 0, 0, 0);
ObjectSet(l_name_8, OBJPROP_CORNER, 1);
ObjectSet(l_name_8, OBJPROP_XDISTANCE, 10);
ObjectSet(l_name_8, OBJPROP_YDISTANCE, 155);
ObjectSetText(l_name_8, "Процент прибыли: " + DoubleToStr(profitToday / GetProfitTodayInPercent() * 100.0, 2)+"%", 10, "Courier New", White);
Если прописать так:
ошибки быть не должно.PHP:double profitToday = GetProfitForDay(0); l_name_8 = gs_104 + "7"; if(ObjectFind(0,l_name_8)>=0) ObjectDelete(0,l_name_8); ObjectCreate(l_name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(l_name_8, OBJPROP_CORNER, 1); ObjectSet(l_name_8, OBJPROP_XDISTANCE, 10); ObjectSet(l_name_8, OBJPROP_YDISTANCE, 155); ObjectSetText(l_name_8, "Процент прибыли: " + DoubleToStr(profitToday / GetProfitTodayInPercent() * 100.0, 2)+"%", 10, "Courier New", White);
Тогда такой вариант точно рабочий:так же просто выводит на график LABEL
if(ObjectFind(0,l_name_8)<0)
{
ObjectCreate(0,l_name_8,OBJ_LABEL,0,0,0);
ObjectSetInteger(0,l_name_8,OBJPROP_XDISTANCE,10);
ObjectSetInteger(0,l_name_8,OBJPROP_YDISTANCE,155);
ObjectSetInteger(0,l_name_8,OBJPROP_BACK,false);
ObjectSetInteger(0,l_name_8,OBJPROP_COLOR,clrWhite);
ObjectSetInteger(0,l_name_8,OBJPROP_FONTSIZE,10);
ObjectSetString(0,l_name_8,OBJPROP_FONT,"Courier New");
}
ObjectSetString(0,l_name_8,OBJPROP_TEXT,"Процент прибыли: " + DoubleToStr(profitToday / GetProfitTodayInPercent() * 100.0, 2)+"%");
Тогда такой вариант точно рабочий:
Хоть предыдущий вариант у меня нормально работает.PHP:if(ObjectFind(0,l_name_8)<0) { ObjectCreate(0,l_name_8,OBJ_LABEL,0,0,0); ObjectSetInteger(0,l_name_8,OBJPROP_XDISTANCE,10); ObjectSetInteger(0,l_name_8,OBJPROP_YDISTANCE,155); ObjectSetInteger(0,l_name_8,OBJPROP_BACK,false); ObjectSetInteger(0,l_name_8,OBJPROP_COLOR,clrWhite); ObjectSetInteger(0,l_name_8,OBJPROP_FONTSIZE,10); ObjectSetString(0,l_name_8,OBJPROP_FONT,"Courier New"); } ObjectSetString(0,l_name_8,OBJPROP_TEXT,"Процент прибыли: " + DoubleToStr(profitToday / GetProfitTodayInPercent() * 100.0, 2)+"%");
void DrawStats() {
double ld_0 = GetProfitForDay(0);
string l_name_8 = gs_104 + "1";
if (ObjectFind(l_name_8) == -1) {
ObjectCreate(l_name_8, OBJ_LABEL, 0, 0, 0);
ObjectSet(l_name_8, OBJPROP_CORNER, 1);
ObjectSet(l_name_8, OBJPROP_XDISTANCE, 10);
ObjectSet(l_name_8, OBJPROP_YDISTANCE, 120);
}
ObjectSetText(l_name_8, "Cегодня: " + DoubleToStr(ld_0, 2), 9, "Courier New", Gold);
ld_0 = GetProfitForDay(1);
l_name_8 = gs_104 + "2";
if (ObjectFind(l_name_8) == -1) {
ObjectCreate(l_name_8, OBJ_LABEL, 0, 0, 0);
ObjectSet(l_name_8, OBJPROP_CORNER, 1);
ObjectSet(l_name_8, OBJPROP_XDISTANCE, 10);
ObjectSet(l_name_8, OBJPROP_YDISTANCE, 135);
}
ObjectSetText(l_name_8, "Вчера: " + DoubleToStr(ld_0, 2), 9, "Courier New", Gold);
ld_0 = GetProfitForDay(2);
l_name_8 = gs_104 + "3";
if (ObjectFind(l_name_8) == -1) {
ObjectCreate(l_name_8, OBJ_LABEL, 0, 0, 0);
ObjectSet(l_name_8, OBJPROP_CORNER, 1);
ObjectSet(l_name_8, OBJPROP_XDISTANCE, 10);
ObjectSet(l_name_8, OBJPROP_YDISTANCE, 150);
}
ObjectSetText(l_name_8, "Позавчера: " + DoubleToStr(ld_0, 2), 9, "Courier New", Gold);
ld_0 = 0;
for (int id_day = 0; id_day < DayOfWeek(); id_day ++)
ld_0 = ld_0 + GetProfitForDay(id_day);
l_name_8 = gs_104 + "4";
if (ObjectFind(l_name_8) == -1) {
ObjectCreate(l_name_8, OBJ_LABEL, 0, 0, 0);
ObjectSet(l_name_8, OBJPROP_CORNER, 1);
ObjectSet(l_name_8, OBJPROP_XDISTANCE, 10);
ObjectSet(l_name_8, OBJPROP_YDISTANCE, 165);
}
ObjectSetText(l_name_8, "Неделя: " + DoubleToStr(ld_0, 2), 9, "Courier New", Gold);
ld_0 = 0;
for (int id_day = 0; id_day < Day(); id_day ++)
ld_0 = ld_0 + GetProfitForDay(id_day);
l_name_8 = gs_104 + "5";
if (ObjectFind(l_name_8) == -1) {
ObjectCreate(l_name_8, OBJ_LABEL, 0, 0, 0);
ObjectSet(l_name_8, OBJPROP_CORNER, 1);
ObjectSet(l_name_8, OBJPROP_XDISTANCE, 10);
ObjectSet(l_name_8, OBJPROP_YDISTANCE, 180);
}
ObjectSetText(l_name_8, "Месяц: " + DoubleToStr(ld_0, 2), 9, "Courier New", Gold);
l_name_8 = gs_104 + "6";
if (ObjectFind(l_name_8) == -1) {
ObjectCreate(l_name_8, OBJ_LABEL, 0, 0, 0);
ObjectSet(l_name_8, OBJPROP_CORNER, 1);
ObjectSet(l_name_8, OBJPROP_XDISTANCE, 10);
ObjectSet(l_name_8, OBJPROP_YDISTANCE, 195);
}
ObjectSetText(l_name_8, "Баланс: " + DoubleToStr(AccountBalance(), 2), 11, "Courier New", Gold);
}
double GetProfitForDay(int ai_0) {
double ld_ret_4 = 0;
for (int l_pos_12 = 0; l_pos_12 < OrdersHistoryTotal(); l_pos_12++) {
if (!(OrderSelect(l_pos_12, SELECT_BY_POS, MODE_HISTORY))) break;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderCloseTime() >= iTime(Symbol(), PERIOD_D1, ai_0) && OrderCloseTime() < iTime(Symbol(), PERIOD_D1, ai_0) + 86400) ld_ret_4 = ld_ret_4 + OrderProfit() + OrderCommission() + OrderSwap();
}
return (ld_ret_4);
}