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

 
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   и прочие ?

можно в личку

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

 

Добрый день!

Подскажите, пожалуйста, как определить TickValue?

 

У меня уже name определено:

   if(!m_symbol.Name(Symbol())) // sets symbol name

      return(INIT_FAILED);

//      double TTVV = double  TickValue() const

Как получить  TickValue?



 
klycko #:

У меня уже name определено:

   if(!m_symbol.Name(Symbol())) // sets symbol name

      return(INIT_FAILED);

//      double TTVV = double  TickValue() const

Как получить  TickValue?

double TTVV = m_symbol.TickValue();