Если скажем за 10 лет прибыль на торговом счете составила 500% (цифры условные) - как рассчитать среднегодовую прибыль, так же принимая во внимание что вся полученная прибыль реинвестировалась? Спасибо!
frixer: Здравствуйте всем, С Новым Годом. Ребят помогите не могу ни как сделать чтобы ордер ставился только один раз, если условие которое выполняется после чего ставиться ордер, нужно чтобы потом если есть ордер уже чтобы второй раз он не ставился. Если можно примером.
Если скажем за 10 лет прибыль на торговом счете составила 500% (цифры условные) - как рассчитать среднегодовую прибыль, так же принимая во внимание что вся полученная прибыль реинвестировалась? Спасибо!
Корень десятой степени из 6, потом вычесть 1 и умножить на 100. Получим 19.62% в год.
Да читал но под мой алгоритм не получается все равно пихает ордера на каждом тике вот код
//+------------------------------------------------------------------+//| trade v1.mq4 |//| |//| frixer@yandex.ru |//+------------------------------------------------------------------+//--- input parameters//extern int Время;//extern int Input;//extern int SL;//extern int TP;//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
//----int bars = 9; // количество баровint gmt = 16; // время входаdoubleinput = 0.0010; // вход на рынокdouble sl = 100; // уровень SL от высоты коробки в %double tp = 100;
int lot=1;
int topOrder,bottomOrder;
if (Hour()==gmt) // проверяем свечу
{
double Shift_high = iHighest(NULL,PERIOD_H1,MODE_HIGH,bars,0); //поиск бара с максимальной ценой из bars начиная с 0-го бараdouble Shift_low = iLowest (NULL,PERIOD_H1,MODE_LOW ,bars,0); //поиск бара с минимальной ценой из bars начиная с 0-го бараdouble Price_high = iHigh (NULL,PERIOD_H1,Shift_high); // присвоение переменной максимального значение ценыdouble Price_low = iLow (NULL,PERIOD_H1,Shift_low); // присвоение переменной минимального значение ценыdouble Hinput = Price_high + input; // вверхняя граница входаdouble Linput = Price_low - input; // нижняя граница входаdouble height_box = Price_high - Price_low; // высота коробки barsdouble volumeSL = height_box / 100 * sl; // уровень SL зависит от %
topOrder=OrderSend(Symbol(),OP_BUYSTOP,lot,Hinput,3,Price_high-(height_box/100*sl),Price_high+(height_box/100*tp),"BUY",16384,0,Green);
if (topOrder<0)
{
Print("Верхний ордер ошибка #", GetLastError());
return(0);
}
}
//----return(0);
//----return(0);
}
//+------------------------------------------------------------------+
Можете набросать пример, буду очень благодарен, я попробовал таким способом (знакомый посоветовал) не получается
int Orerov=0;
int Orderov_all = OrdersTotal(); // всего ордеров в терминалеfor (int n = 0;n<Orderov_all;n++) // начало цикла перебора ордеров
{
if(OrderSelect(n,SELECT_BY_POS)==TRUE) // выбран первый в списке ордерif(Comm == OrderComment()) // условие совпадения комментария
{
Tip= OrderType(); // тип
Cena=NormalizeDouble(OrderOpenPrice(),4); // цена
Ticket= OrderTicket(); // тикет
Stop=NormalizeDouble(OrderStopLoss(),4); // стоп-лосс
LOT=NormalizeDouble(OrderLots(),1); // размер лота
Orderov=1; //
}
}
frixer: Здравствуйте всем, С Новым Годом. Ребят помогите не могу ни как сделать чтобы ордер ставился только один раз, если условие которое выполняется после чего ставиться ордер, нужно чтобы потом если есть ордер уже чтобы второй раз он не ставился. Если можно примером.
if (OrdersTotal() > 0) {
return(0);
}
// Если установлен хоть один ордер, то никакой код после этого комментария уже не выполнится
Основная проблема в том, что iBars не загружает цены периода, отличного от текущего...
все уловки MQL типа IndicatorCounted и RefreshRates
Действуют только для текущего периода, т.е. iBars берет из истории, а история загружается только путем смены периода на графике. Что делать? Есть в MQL какой-то инструмент загрузки баров других периодов (отличных от текущего) в фоновом режиме?
Основная проблема в том, что iBars не загружает цены периода, отличного от текущего...
Ваша основная проблема в том, что iBars загружает не цены, а количество известных баров для заданного периода. Причем, как я только что проверил, делает это вполне корректно и в тестере и на графике.
Если скажем за 10 лет прибыль на торговом счете составила 500% (цифры условные) -
как рассчитать среднегодовую прибыль, так же принимая во внимание что вся полученная прибыль реинвестировалась?
Спасибо!
Здравствуйте всем, С Новым Годом. Ребят помогите не могу ни как сделать чтобы ордер ставился только один раз, если условие которое выполняется после чего ставиться ордер, нужно чтобы потом если есть ордер уже чтобы второй раз он не ставился. Если можно примером.
Пример из учебника - Ваш случай.
Если скажем за 10 лет прибыль на торговом счете составила 500% (цифры условные) -
как рассчитать среднегодовую прибыль, так же принимая во внимание что вся полученная прибыль реинвестировалась?
Спасибо!
Пример из учебника - Ваш случай.
Да читал но под мой алгоритм не получается все равно пихает ордера на каждом тике вот код
Можете набросать пример, буду очень благодарен, я попробовал таким способом (знакомый посоветовал) не получается
Здравствуйте всем, С Новым Годом. Ребят помогите не могу ни как сделать чтобы ордер ставился только один раз, если условие которое выполняется после чего ставиться ордер, нужно чтобы потом если есть ордер уже чтобы второй раз он не ставился. Если можно примером.
Корень десятой степени из 6, потом вычесть 1 и умножить на 100. Получим 19.62% в год.
Спасибо!
Вобщем вопрос такой,
Имею многопериодный индикатор.
для того, чтобы оптимизировать вычисления использую следующий цикл
// TimeFrames[i] массив с периодами
for (i=0; i<NumTimeFrames; i++)
{if (total_bars[i] != iBars(instrument, TimeFrames[i]) )
{
// тут вычисления индиктора
total_bars[i] = iBars(instrument, TimeFrames[i]);
}
}
Основная проблема в том, что iBars не загружает цены периода, отличного от текущего...
все уловки MQL типа IndicatorCounted и RefreshRates
Действуют только для текущего периода, т.е. iBars берет из истории, а история загружается только путем смены периода на графике. Что делать? Есть в MQL какой-то инструмент загрузки баров других периодов (отличных от текущего) в фоновом режиме?
п.с. надеюсь не сумбурно объяснил ((Основная проблема в том, что iBars не загружает цены периода, отличного от текущего...