MQL4 - automated forex trading   /  

Форум

Как тестер учитывает свопы

К списку тем Авторизуйтесь или зарегистрируйтесь, чтобы создать новую тему

avatar
4498
KimIV 03.02.2006 13:32 
Исходная задача: получить распределение прибыли по дням недели.
Для решения написал модуль, подключаемый к советнику директивой компилятора include:
//+------------------------------------------------------------------+ //| b-SharingDoW.mqh | //| Ким Игорь В. aka KimIV | //| http://www.kimiv.ru | //| | //| 03.02.2006 Sharing the Deals on Weekdays. | //| Распределение сделок по дням недели. | //| | //| Для использования добавить строки: | //| - вне функций : #include <b-SharingDoW.mqh> | //| - в функции deinit(): WriteDealsInfo(); | //+------------------------------------------------------------------+ //------- Внешние параметры модуля ----------------------------------- extern string _P_b_SharingDoW = "---------- Параметры модуля b-SharingDoW"; extern bool sdUseModule = False; extern string sdOutFileName = "SharingDoW.csv"; //------- Глобальные переменные модуля ------------------------------- //+------------------------------------------------------------------+ //| Сбор и запись в файл информации о распределении сделок. | //+------------------------------------------------------------------+ void WriteDealsInfo() { double op[5]={0,0,0,0,0}, ou[5]={0,0,0,0,0}; int nd, vs[5]={0,0,0,0,0}; string text=""; if (IsTesting() && sdUseModule) { text="Показатель;ПН;ВТ;СР;ЧТ;ПТ"; WritingLineInFile(sdOutFileName, text); for (int i=0; i<HistoryTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { nd=TimeDayOfWeek(OrderOpenTime())-1; if (OrderProfit()>0) op[nd]+=OrderProfit(); else ou[nd]+=OrderProfit(); if (OrderSwap()>0) op[nd]+=OrderSwap(); else ou[nd]+=OrderSwap(); vs[nd]++; } } } } text="Чистая прибыль"; for (i=0; i<5; i++) { text=text+";"+DoubleToStr(op[i]+ou[i], 2); } WritingLineInFile(sdOutFileName, text); text="Общая прибыль"; for (i=0; i<5; i++) { text=text+";"+DoubleToStr(op[i], 2); } WritingLineInFile(sdOutFileName, text); text="Общий убыток"; for (i=0; i<5; i++) { text=text+";"+DoubleToStr(ou[i], 2); } WritingLineInFile(sdOutFileName, text); } } //+------------------------------------------------------------------+ //| Запись строки в файл | //+------------------------------------------------------------------+ void WritingLineInFile(string FileName, string text) { int file_handle=FileOpen(FileName, FILE_READ|FILE_WRITE, " "); if (file_handle>0) { FileSeek(file_handle, 0, SEEK_END); FileWrite(file_handle, text); FileClose(file_handle); } } //+------------------------------------------------------------------+

Организуйте багтрекинг и техсаппорт для своей компании

В TeamWox имеются все для того чтобы организовать багтрекинг. Интегрировав модуль Сервисдеск с веб-сайтом, Вы сможете получать заявки своих клиентов напрямую в TeamWox. Более того, вся переписка с клиентами автоматически распознается и попадает в архив, где ее без труда можно найти в будущем.


avatar
4498
KimIV 03.02.2006 13:38 
Эксперименты с этим модулем выявили несоответствие в методе учёта свопов. Я положительные свопы прибавляю к прибыли, а отрицательные - к убыткам. Тестер же все свопы прибывляет к прибыли. Внёс в модуль такие изменения:
nd=TimeDayOfWeek(OrderOpenTime())-1; if (OrderProfit()>0) op[nd]+=OrderProfit(); else ou[nd]+=OrderProfit(); op[nd]+=OrderSwap(); vs[nd]++;

Теперь итоги соответствуют итогам тестера.

К чему я это написал? Да так... для сведения... кто не знает... я не знал, теперь знаю :-)

avatar
49
3172552 07.02.2006 02:35 
О! Ничего себе? А разработчики не могли бы сами это сделать? Спасибо Игорь, теперь блин все результаты надо пересматривать...

avatar
313
SKif 07.02.2006 02:37 
К чему я это написал? Да так... для сведения... кто не знает... я не знал, теперь знаю :-)
ОК, спасибо!)

avatar
313
SKif 07.02.2006 02:52 
К чему я это написал? Да так... для сведения... кто не знает... я не знал, теперь знаю :-)
ОК, спасибо. Будем знать.

avatar
313
SKif 07.02.2006 02:52 
цйуйцу

avatar
169
Editor 09.02.2006 15:43 
Что такое "цйуйцу"?

avatar
313
SKif 09.02.2006 16:00 
Editor:
Что такое "цйуйцу"?

http://www.metatrader4.com/ru/forum/6760/?edit=31674
К списку тем  

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий