Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1544

 
Aleksandr Slavskii #:

Создать текстовый документ. написать в нём такую строку:

затем заменить расширение файла текстовый документа с txt на bat

А как потом в моем скрипте запустить эту команду?

Я не очень большой программист.

Как эту команду вставить, например, вот в такой скрипт?

//+------------------------------------------------------------------+

//|                                                    delFolder.mq5       |

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| Script program start function                                    |

//+------------------------------------------------------------------+

void OnStart()

  {

//---

   

  }

//+------------------------------------------------------------------+


 
klycko #:

Как эту команду вставить, например, вот в такой скрипт?

Не заметил, что разговор про скрипт.

Если в скрипт, то так:

#define MAX_PATH 260
struct FILETIME
  {
   uint              dwLowDateTime;
   uint              dwHighDateTime;
  };
struct FIND_DATAW
  {
   uint              dwFileAttributes;
   FILETIME          ftCreationTime;
   FILETIME          ftLastAccessTime;
   FILETIME          ftLastWriteTime;
   uint              nFileSizeHigh;
   uint              nFileSizeLow;
   uint              dwReserved0;
   uint              dwReserved1;
   short             cFileName[MAX_PATH];
   short             cAlternateFileName[14];
  };

#import "kernel32.dll"
int  DeleteFileW(const string file_name);
long FindFirstFileW(const string file_name, FIND_DATAW &find_file_data);
int  FindNextFileW(long find_file, FIND_DATAW &find_file_data);
int  FindClose(long find_file);
#import
//+------------------------------------------------------------------+
void OnStart()
  {
   DeleteFile(TerminalInfoString(TERMINAL_DATA_PATH) + "\\Tester\\cache");
  }
//+------------------------------------------------------------------+
void DeleteFile(string Path)
  {
   FIND_DATAW FindData;
   FindData.cFileName[0] = 0;
   const long handle = FindFirstFileW(Path + "*.*", FindData);
   if(handle != INVALID_HANDLE)
     {
      do
        {
         DeleteFileW(Path + ShortArrayToString(FindData.cFileName));
        }
      while(FindNextFileW(handle, FindData));
      FindClose(handle);
     }
  }
//+------------------------------------------------------------------+
Не забудьте разрешить dll в настройках
 
Aleksandr Slavskii #:

Не заметил, что разговор про скрипт.

Если в скрипт, то так:

Не забудьте разрешить dll в настройках

Спасибо большое! Попробую и потом расскажу о результатах.

 
klycko #:

Спасибо большое! Попробую и потом расскажу о результатах.

Добрый день, Александр!

Создал ниже приведенный скрипт из вашего текста и запустил его.

Я добавил для контроля в ваш текст строки:

         bool PrDelete = DeleteFileW(Path + ShortArrayToString(FindData.cFileName));

         Print ("PrDelete=",PrDelete);


В кеше у меня 3 файла.

Скрипт их не удалил и дважды выдал false.


Может это оттого, что в MQL5 запрещены операции вне песочницы?


Кстати, строка 31 выглядит незаконченной.

#import


С уважением, Александр

//+------------------------------------------------------------------+

//| Delirium.mq5 |

//+------------------------------------------------------------------+

#property strict

#property script_show_inputs

#define MAX_PATH 260

struct FILETIME

{

uint dwLowDateTime;

uint dwHighDateTime;

};

struct FIND_DATAW

{

uint dwFileAttributes;

FILETIME ftCreationTime;

FILETIME ftLastAccessTime;

FILETIME ftLastWriteTime;

uint nFileSizeHigh;

uint nFileSizeLow;

uint dwReserved0;

uint dwReserved1;

short cFileName[MAX_PATH];

short cAlternateFileName[14];

};


#import "kernel32.dll"

int DeleteFileW(const string file_name);

long FindFirstFileW(const string file_name, FIND_DATAW &find_file_data);

int FindNextFileW(long find_file, FIND_DATAW &find_file_data);

int FindClose(long find_file);

#import

//+------------------------------------------------------------------+

void OnStart()

{

DeleteFile(TerminalInfoString(TERMINAL_DATA_PATH) + "\\Tester\\\cache");

}

//+------------------------------------------------------------------+

void DeleteFile(string Path)

{

FIND_DATAW FindData;

FindData.cFileName[0] = 0;

const long handle = FindFirstFileW(Path + "*.*", FindData);

if(handle != INVALID_HANDLE)

{

do

{

bool PrDelete = DeleteFileW(Path + ShortArrayToString(FindData.cFileName));

Print ("PrDelete=",PrDelete);

}

while(FindNextFileW(handle, FindData));

FindClose(handle);

}

}

//+------------------------------------------------------------------+
 
klycko #:

Добрый день, Александр!

Блин. Извиняюсь. Поторопился. Надо добавить два слэша в конец строки, вот так:

"\\Tester\\cache\\"
 

Александр, огромное спасибо!

Все заработало.

Вы решили мою большую проблему.

 
Vladimir Karputov #:

Интересный вопрос. Чтобы лучше понять это я вручную открыл позицию и указал комментарий '123456' - затем закрыл позицию и запустил скрипт History Deals and Orders. А теперь обратите внимание, что комментарий присутствует только у ордера (торгового приказа) на основе которого произошла сделка приведшая к появлению позиции и у сделки которая произошла в результате исполнения ордера):


Значит при закрытии позиции (в OnTradeTransaction тип транзакции TRADE_TRANSACTION_DEAL_ADD) нужно выбирать из торговой истории все ордера относящиеся к этой позиции и искать первопричинный ордер - благодаря которому и появилась эта позиция.

Это потому что не было ордера-сделки, изменяющего коммент. А если б таковая была, то и там был бы коммент. Получается, надо проверять все сделки по позиции и искать ненулевой коммент, начиная с последней сделки, принадлежащей позиции.

 

Здравствуйте, может кто подскажет 

где торгуются, в каких ДЦ "непопулярный валюты", такие как: 

HKD, AED, KWD, SAR, PLN, DKK, RON   и прочие ?

можно в личку

 
Открываете на демо обзор рынка и смотрите
 
Roman Kutemov #:

Здравствуйте, может кто подскажет 

где торгуются, в каких ДЦ "непопулярный валюты", такие как: 

HKD, AED, KWD, SAR, PLN, DKK, RON   и прочие ?

можно в личку

По ним спреды в половину дневного движения