Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 428

 
vadynik:

Так мне и нужна формула), завтра буду пробовать,спасибо!

Было уже тут, и не раз. Должно помочь при смекалке:

как расчитать судя из свободных средств и лота сколько пунктов (в поинтах) может пройти цена в минус??? есть у кого нибудь такой код???
формула связи: Лот=Деньги/(Стоплос*Тик)
Деньги - заработанное/потерянное
Стоплос - в пунктах брокера
Тик - MarketInfo( MODE_TICKVALUE)
Отсюда крутите как хотите:
Стоплос=Деньги/(Лот*Тик)
Деньги=Лот*Стоплос*Тик


 
vitali-attila:
Здравствуйте. Скажите, пожалуйста, а где хранится файл с информацией о счете? Мне надо изменить стоплевел и спред для тестера стратегий. Если есть другой способ, расскажите про него.
СтопЛевел не меняется, а вот спред легко в настройках тестера - под выбором Периода есть выбор размера Спреда
 
Mr.Profit:

Приветствую, уважаемые!

А как узнать полное имя файла (с путем), в который пишет советник/скрипт с использованием FileOpen/FileWrite?

Конструкция TerminalPath() + "\\experts\\files\\" на Win7 x64 с включенным UAC указывает на "C:\Program Files (x86)\Alpari Limited MT4\experts\files\", в том время как хотелось бы получить "C:\Users\<CurrentUser>\AppData\Local\VirtualStore\Program Files (x86)\Alpari Limited MT4\experts\files\"

Та-ки - никто не в курсе?
 

Я бы попробовал конструкцию fileopen("%userprofile%\AppData\Local\VirtualStore"+обрезать строку TerminalPath()+"\\experts\\files\\"

А лучше заканчивать с виртуализацией.

 
splxgf:

Я бы попробовал конструкцию fileopen("%userprofile%\AppData\Local\VirtualStore"+обрезать строку TerminalPath()+"\\experts\\files\\"

А лучше заканчивать с виртуализацией.

Про виртуализацию - недопонял... Это все проистекает на обычном компе с Win7, если что (не на виртуалке).

Выковыривать часть пути из TerminalPath() и добавлять ее к %userprofile% - изврат, и будет работать только если терминал инсталлируется в Program Files. А вот если он проинсталлирован в X:\a\b\c\d - какую часть пути добавлять к %userprofiles%?

 
artmedia70:

Было уже тут, и не раз. Должно помочь при смекалке:

как расчитать судя из свободных средств и лота сколько пунктов (в поинтах) может пройти цена в минус??? есть у кого нибудь такой код???
формула связи: Лот=Деньги/(Стоплос*Тик)
Деньги - заработанное/потерянное
Стоплос - в пунктах брокера
Тик - MarketInfo( MODE_TICKVALUE)
Отсюда крутите как хотите:
Стоплос=Деньги/(Лот*Тик)
Деньги=Лот*Стоплос*Тик




Да, все получилось, благодарочка!
 
Mr.Profit:

Про виртуализацию - недопонял... Это все проистекает на обычном компе с Win7, если что (не на виртуалке).

Выковыривать часть пути из TerminalPath() и добавлять ее к %userprofile% - изврат, и будет работать только если терминал инсталлируется в Program Files. А вот если он проинсталлирован в X:\a\b\c\d - какую часть пути добавлять к %userprofiles%?

п.1. Отключить UAC или запустить с правами администратора.

В чем проблема и зачем нужен полный путь? Файловые функции в MT4 сами по себе завиртуализированы и ограничены каталогом experts\files.

Если нужна полноценная работа, то переходить на windows api https://www.mql5.com/ru/forum/112692 или смотрите п.1.

 
splxgf:

п.1. Отключить UAC или запустить с правами администратора.

В чем проблема и зачем нужен полный путь? Файловые функции в MT4 сами по себе завиртуализированы и ограничены каталогом experts\files.

Если нужна полноценная работа, то переходить на windows api https://www.mql5.com/ru/forum/112692 или смотрите п.1.

У меня скрипт формирует некий HTML-отчет. Есть непреодолимое ( ;-) ) желание по окончании формирования отчета автоматом открывать его в браузере посредством вызова ShellExecuteA() из shell32.dll - для этого полный путь и нужен.

п.1 не вариант, т.к. хотелось бы получить универсальное решение.

 
Ну тогда возможно попробовать создать файл средствами win api (CreateFileA), с некоторой долей вероятности он создастся в папке профиля пользователя, ну и затем вычислить полный путь по хендлу.
 

Ребят, проверьте пожалуйста функцию, меня терзают смутные сомнения по ее поводу

void CloseHalfOrders(int otype) // ф-ция закрытия половины ордеров сетки
{
  int count = 0; double CTbuy = CountTrades(OP_BUY); double CTsell = CountTrades(OP_SELL);
  double n = NormalizeDouble (CTbuy/2,1); double k = NormalizeDouble (CTsell/2,1); 
  for (int i =0; i<OrdersTotal();)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           if (count<n)
           OrderClose(OrderTicket(),OrderLots(),Bid,0,Lime);
           count++;
           Sleep(1000);
         } //if (otype == OP_BUY)
           if (otype ==OP_SELL)
           {
             if (count<k)
             OrderClose(OrderTicket(),OrderLots(),Ask,0,Lime);
             count++;
             Sleep(1000);
           }//if (otype ==OP_SELL)
         }//if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
           else i++;    
         }//if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
       }//for (int i =0; i<OrdersTotal();)
     }//void CloseHalfOrders(int otype)