forked from mnbvc188199/Warrior_EA
88 lines
7 KiB
MQL5
88 lines
7 KiB
MQL5
//+------------------------------------------------------------------+
| |
//| Cell.mqh |
| |
//| Copyright DNG® |
| |
//| https://www.mql5.com/en/users/dng |
| |
//+------------------------------------------------------------------+
| |
#property copyright "Copyright DNG®"
| |
#property link "https://www.mql5.com/en/users/dng"
| |
#property version "1.00"
| |
//+------------------------------------------------------------------+
| |
//| |
| |
//+------------------------------------------------------------------+
| |
#define HistoryBars 20 //Depth of history
| |
#define Buffer_Size 2112
| |
#define FileName "GoExploer"
| |
//+------------------------------------------------------------------+
| |
//| Cell |
| |
//+------------------------------------------------------------------+
| |
struct Cell
| |
{
| |
int actions[Buffer_Size];
| |
float state[HistoryBars * 12 + 9];
| |
int total_actions;
| |
float value;
| |
//---
| |
Cell(void);
| |
//---
| |
bool Save(int file_handle);
| |
bool Load(int file_handle);
| |
};
| |
//+------------------------------------------------------------------+
| |
//| |
| |
//+------------------------------------------------------------------+
| |
Cell::Cell(void)
| |
{
| |
ArrayInitialize(actions, -1);
| |
ArrayInitialize(state, 0);
| |
value = 0;
| |
total_actions = 0;
| |
}
| |
//+------------------------------------------------------------------+
| |
//| |
| |
//+------------------------------------------------------------------+
| |
bool Cell::Save(int file_handle)
| |
{
| |
if(file_handle <= 0)
| |
return false;
| |
if(FileWriteInteger(file_handle, 999) < INT_VALUE)
| |
return false;
| |
if(FileWriteFloat(file_handle, value) < sizeof(float))
| |
return false;
| |
if(FileWriteInteger(file_handle, total_actions) < INT_VALUE)
| |
return false;
| |
for(int i = 0; i < total_actions; i++)
| |
if(FileWriteInteger(file_handle, actions[i]) < INT_VALUE)
| |
return false;
| |
int size = ArraySize(state);
| |
if(FileWriteInteger(file_handle, size) < INT_VALUE)
| |
return false;
| |
for(int i = 0; i < size; i++)
| |
if(FileWriteFloat(file_handle, state[i]) < sizeof(float))
| |
return false;
| |
//---
| |
return true;
| |
}
| |
//+------------------------------------------------------------------+
| |
//| |
| |
//+------------------------------------------------------------------+
| |
bool Cell::Load(int file_handle)
| |
{
| |
if(file_handle <= 0)
| |
return false;
| |
if(FileReadInteger(file_handle) != 999)
| |
return false;
| |
value = FileReadFloat(file_handle);
| |
total_actions = FileReadInteger(file_handle);
| |
if(total_actions > Buffer_Size)
| |
return false;
| |
for(int i = 0; i < total_actions; i++)
| |
actions[i] = FileReadInteger(file_handle);
| |
int size = FileReadInteger(file_handle);
| |
if(size != (HistoryBars * 12 + 9))
| |
return false;
| |
for(int i = 0; i < size; i++)
| |
state[i] = FileReadFloat(file_handle);
| |
//---
| |
return true;
| |
}
| |
//+------------------------------------------------------------------+
|