Почему то берется прибыль, не та которая должна быть.....когда закрывается лот, обрано когда прибыль должна быть 30пп в прибыли пишется совершенно другое....хрень какая то
Че за бред: "по сути дела просчитать разницу между открытием ордера и его закрием) и просуммировать??????" ...
А на каких объемах? не надо знать что ли? Цена пункта - разная будет...
Прибыль считается не в пунктах, но в валюте, в зависимости от проторгованных объемов позиций.
Почему то берется прибыль, не та которая должна быть.....когда закрывается лот, обрано когда прибыль должна быть 30пп в прибыли пишется совершенно другое....хрень какая то
Правьте - здесь считается общий убыток (лосс) по истории закрытых ПОДРЯД ордеров в убыток.
У Вас будет чуть по другому, но принцип тот же.
//---------------------расчет по истории ордеров номера очередной итерации-----------------------------------------------
Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
Sum_Loss = 0; // суммарный убыток по этим итерациямdatetime
Time_at_History_Current = 0,
Time_at_History_Previos = 0;
if(OrdersHistoryTotal() != 0)
{
for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
{
OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера// для последующего его анализа при подсчете количества итераций
{
double lastLoss = OrderProfit();
Sum_Loss=Sum_Loss+lastLoss; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime();
}
//Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));//Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
{
Time_at_History_Previos = Time_at_History_Current ;
Iteration++;
//Print("Iteration at History в условии сравнения = ", Iteration);
}
else// они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
{
if(OrderProfit() >= 0)
break;
}
}
}
}
}
так мне и нужно в пунктах, лот постояный 1....а вот почему то прибыль или убыток не соответствует действительному.....вот и хочу проще прсчитать кол-во пунктов прибыли и просадки просуммировать и получить результат=)
так мне и нужно в пунктах, лот постояный 1....а вот почему то прибыль или убыток не соответствует действительному.....вот и хочу проще прсчитать кол-во пунктов прибыли и просадки просуммировать и получить результат=)
так мне и нужно в пунктах, лот постояный 1....а вот почему то прибыль или убыток не соответствует действительному.....вот и хочу проще прсчитать кол-во пунктов прибыли и просадки просуммировать и получить результат=)
Ну если лот постоянный, разделите прибыль тестера на Point. Будет прибыль в пунктах.
Последняя опубликованная Кимовская функция GetPotentialLossInCurrency (https://forum.mql4.com/ru/11287/page107) учитывает только открытые ордера:
if (OrderType()==OP_BUY) {
pl+=(OrderOpenPrice()-OrderStopLoss())/po*OrderLots()*tv;
}
if (OrderType()==OP_SELL) {
pl+=(OrderStopLoss()-OrderOpenPrice())/po*OrderLots()*tv;
}
я попытался ее немного расширить, включив туда и учет отложенных ордеров (попросту дописав остальные типы):
if (OrderType()==OP_BUY || OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP) {
pl+=(OrderOpenPrice()-OrderStopLoss())/po*OrderLots()*tv;
}
if (OrderType()==OP_SELL || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP) {
pl+=(OrderStopLoss()-OrderOpenPrice())/po*OrderLots()*tv;
}
но отложенные ордера не учитываются. Они что, считаются как-то по другому? В документации ничего об этом не говорится....
Зачем так-то? Выводите в одном Comment`е все флаги сразу.
Вот тут:
int start()
{
//----RefreshRates(); // Обновление данных
Symb=Symbol();
int cnt, ticket, total;
int ABuy=0; // флаг на покупку /продажу int ASell=0;
Comment(".....Вот сюда и пишите вывод всех флагов......");
if (NewBar() == true)
{
x=x0; //передаем данные
x1=x01;
x2=x02;
Почему то берется прибыль, не та которая должна быть.....когда закрывается лот, обрано когда прибыль должна быть 30пп в прибыли пишется совершенно другое....хрень какая то
Че за бред: "по сути дела просчитать разницу между открытием ордера и его закрием) и просуммировать??????" ...
А на каких объемах? не надо знать что ли? Цена пункта - разная будет...
Прибыль считается не в пунктах, но в валюте, в зависимости от проторгованных объемов позиций.
Почему то берется прибыль, не та которая должна быть.....когда закрывается лот, обрано когда прибыль должна быть 30пп в прибыли пишется совершенно другое....хрень какая то
Прибыль ордера не в пунктах, а в валюте депозить.
Правьте - здесь считается общий убыток (лосс) по истории закрытых ПОДРЯД ордеров в убыток.
У Вас будет чуть по другому, но принцип тот же.
Прибыль ордера не в пунктах, а в валюте депозить.
так мне и нужно в пунктах, лот постояный 1....а вот почему то прибыль или убыток не соответствует действительному.....вот и хочу проще прсчитать кол-во пунктов прибыли и просадки просуммировать и получить результат=)
Правьте - здесь считается общий убыток (лосс) по истории закрытых ПОДРЯД ордеров в убыток.
У Вас будет чуть по другому, но принцип тот же.
спсаибо, щас разберусь=)
так мне и нужно в пунктах, лот постояный 1....а вот почему то прибыль или убыток не соответствует действительному.....вот и хочу проще прсчитать кол-во пунктов прибыли и просадки просуммировать и получить результат=)
Еще раз:
Прибыль ордера не в пунктах, а в валюте депозита.
так мне и нужно в пунктах, лот постояный 1....а вот почему то прибыль или убыток не соответствует действительному.....вот и хочу проще прсчитать кол-во пунктов прибыли и просадки просуммировать и получить результат=)
Ну если лот постоянный, разделите прибыль тестера на Point. Будет прибыль в пунктах.
Последняя опубликованная Кимовская функция GetPotentialLossInCurrency (https://forum.mql4.com/ru/11287/page107) учитывает только открытые ордера:
я попытался ее немного расширить, включив туда и учет отложенных ордеров (попросту дописав остальные типы): но отложенные ордера не учитываются. Они что, считаются как-то по другому? В документации ничего об этом не говорится....Выведите Comment`ами все флаги на график и будет видно почему сделка открывается.
вставил, теперь сдеки вообще не совершает.
вставил, теперь сдеки вообще не совершает.
Зачем так-то? Выводите в одном Comment`е все флаги сразу.
Вот тут: