This commit is contained in:
2026-03-05 01:50:37 +03:30
parent 63281ee006
commit 59a718a1b5
16 changed files with 2199 additions and 9 deletions
+125
View File
@@ -27,6 +27,86 @@
"labels": [],
"checkboxes": [],
"comments": []
},
{
"id": "17260152-05db-4ae2-9d26-cd3d9ee75863",
"listId": "43249367-151b-4e78-bea5-b3c3f41b60ab",
"title": "Make Each Modules Separately and Attach Process on Each them ...",
"description": "there are several modules, documents them one by one and make all of them as runnable standalone ...",
"labels": [],
"checkboxes": [
{
"id": "2f40c757-baa3-40b1-a804-853c78fae93e",
"title": "XCAlert",
"checked": false
},
{
"id": "03287c82-52da-4084-be05-9ddead05f3c2",
"title": "XCTrade",
"checked": false
},
{
"id": "cbf27d79-5cab-4b10-b48c-e9317a6c7dff",
"title": "XCSessionDetector",
"checked": false
},
{
"id": "68f70f06-d649-48d3-8050-6024d1f6b0b3",
"title": "XCAccount",
"checked": false
},
{
"id": "ab337067-5b35-475e-a16e-48de97a79452",
"title": "XCVolume",
"checked": false
},
{
"id": "f618df8d-5d6c-4b4d-a6e1-b2f550a77509",
"title": "XCDataCollector",
"checked": false
},
{
"id": "9aea1e42-e9c9-4efd-85a8-3930335011b4",
"title": "XCRestrictions",
"checked": false
},
{
"id": "7e08c5e9-74f6-40c6-9a81-b60503d5a625",
"title": "XCBaseSignaller",
"checked": false
},
{
"id": "cfcc6686-0b3c-48e7-80f6-d3485f7ad717",
"title": "XCTarget",
"checked": false
},
{
"id": "40a72aea-865d-48b5-a48b-fe9972e8152d",
"title": "XCTradeManager",
"checked": false
}
],
"comments": []
},
{
"id": "05e10aba-f8b4-485c-9c79-bcfb4a58e80b",
"listId": "43249367-151b-4e78-bea5-b3c3f41b60ab",
"title": "Document XCAlert",
"description": "XCAlert is a Module for Alerting Tools Enabling.\nin this task we have to complete it's Documentations and then also we have to complete XCDataCollector and make it Usable.",
"labels": [],
"checkboxes": [
{
"id": "888d7a95-44c3-4388-9446-8e5d78a0a0d1",
"title": "add Log Saving Methods",
"checked": false
},
{
"id": "38bfd420-21fb-436a-abc6-7239da6559ae",
"title": "add Support for Per File Logging",
"checked": false
}
],
"comments": []
}
]
},
@@ -34,6 +114,26 @@
"id": "0c9df632-b6cd-4d3f-9c08-fbe7010ecc4e",
"title": "Test",
"cards": [
{
"id": "e487c35e-b69d-41b4-bdae-ef8502ecc1dc",
"listId": "0c9df632-b6cd-4d3f-9c08-fbe7010ecc4e",
"title": "Document XCDataCollector",
"description": "since DataCollector is a most commonly used Module in other Modules as Dependency, it is very important to make them completely documented and also add required Features to it.",
"labels": [],
"checkboxes": [
{
"id": "3357aca6-1906-44e2-8c9c-1c8d3b576f43",
"title": "Add Suppoprt for CSV Read and Writing",
"checked": true
}
],
"comments": [
{
"id": "4e454ff4-88d3-41ea-b5d7-0d7cbf70c660",
"comment": "CSV since implemented based on Custom Specified Structures. this module provides all requirements implemented."
}
]
},
{
"id": "5549ff02-ce37-476f-9d91-ed190ca15e90",
"listId": "0c9df632-b6cd-4d3f-9c08-fbe7010ecc4e",
@@ -51,6 +151,31 @@
"labels": [],
"checkboxes": [],
"comments": []
},
{
"id": "504383b7-0a6d-4c78-afe4-be3cf59ed2bd",
"listId": "0c9df632-b6cd-4d3f-9c08-fbe7010ecc4e",
"title": "Complete Restrictions Class ...",
"description": "",
"labels": [],
"checkboxes": [
{
"id": "7e422b9e-e5f4-4ea7-ab6e-b2225b8d9a67",
"title": "add multiple symbol support",
"checked": true
},
{
"id": "65f6807b-f664-4e30-be27-06799032f16e",
"title": "add mutiple tf support",
"checked": true
},
{
"id": "c8a8c345-7dc2-48c8-bc04-11ccf221493f",
"title": "implement Process function",
"checked": true
}
],
"comments": []
}
]
},
+246
View File
@@ -0,0 +1,246 @@
<mxfile host="65bd71144e">
<diagram id="ivtA9_kKpv2f2q23DiRT" name="Page-1">
<mxGraphModel dx="1437" dy="1143" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="7" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="6">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="2" value="XCAlert" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="40" y="200" width="120" height="40" as="geometry"/>
</mxCell>
<mxCell id="5" style="edgeStyle=none;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="3" target="2">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="20" y="20"/>
<mxPoint x="20" y="100"/>
<mxPoint x="20" y="220"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="3" value="XTradeFramework Modules" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;" vertex="1" parent="1">
<mxGeometry x="40" width="760" height="40" as="geometry"/>
</mxCell>
<mxCell id="9" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="6" target="8">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="11" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="6" target="10">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="880" y="220"/>
<mxPoint x="880" y="300"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="13" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="6" target="12">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="880" y="220"/>
<mxPoint x="880" y="380"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="16" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="6" target="14">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="880" y="220"/>
<mxPoint x="880" y="460"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="18" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="6" target="15">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="880" y="220"/>
<mxPoint x="880" y="540"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="32" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="6" target="31">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="35" value="" style="edgeStyle=none;html=1;strokeColor=#FF0000;" edge="1" parent="1" source="6" target="31">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="6" value="Providing Alert Mechanism" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="560" y="200" width="240" height="40" as="geometry"/>
</mxCell>
<mxCell id="24" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="8" target="23">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="8" value="LogAlert()" style="whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="920" y="200" width="140" height="40" as="geometry"/>
</mxCell>
<mxCell id="26" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="10" target="25">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="10" value="TerminalAlert()" style="whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="920" y="280" width="140" height="40" as="geometry"/>
</mxCell>
<mxCell id="28" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="12" target="27">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="12" value="MailAlert()" style="whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="920" y="360" width="140" height="40" as="geometry"/>
</mxCell>
<mxCell id="30" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="14" target="29">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="14" value="PushAlert()" style="whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="920" y="440" width="140" height="40" as="geometry"/>
</mxCell>
<mxCell id="19" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#0082FF;" edge="1" parent="1" source="15" target="14">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1080" y="540"/>
<mxPoint x="1080" y="460"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="20" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#0082FF;" edge="1" parent="1" source="15" target="12">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1080" y="540"/>
<mxPoint x="1080" y="380"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="21" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#0082FF;" edge="1" parent="1" source="15" target="10">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1080" y="540"/>
<mxPoint x="1080" y="300"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="22" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#0082FF;" edge="1" parent="1" source="15" target="8">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1080" y="540"/>
<mxPoint x="1080" y="220"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="15" value="SendAlert()" style="whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="920" y="520" width="140" height="40" as="geometry"/>
</mxCell>
<mxCell id="23" value="Sending Logs as Print" style="whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1160" y="200" width="200" height="40" as="geometry"/>
</mxCell>
<mxCell id="25" value="Sending Log to Terminal" style="whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1160" y="280" width="200" height="40" as="geometry"/>
</mxCell>
<mxCell id="27" value="Sending Log as Mail" style="whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1160" y="360" width="200" height="40" as="geometry"/>
</mxCell>
<mxCell id="29" value="Sending Log as Push Notification" style="whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1160" y="440" width="200" height="40" as="geometry"/>
</mxCell>
<mxCell id="34" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#FF0000;" edge="1" parent="1" source="31" target="33">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="20" y="320"/>
<mxPoint x="20" y="100"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="31" value="" style="rhombus;whiteSpace=wrap;html=1;rounded=1;" vertex="1" parent="1">
<mxGeometry x="640" y="280" width="80" height="80" as="geometry"/>
</mxCell>
<mxCell id="39" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="33" target="38">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="33" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;XCDataCollector&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="40" y="80" width="120" height="40" as="geometry"/>
</mxCell>
<mxCell id="43" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="38" target="42">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="53" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="38" target="45">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1440" y="100"/>
<mxPoint x="1440" y="180"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="54" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="38" target="46">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1440" y="100"/>
<mxPoint x="1440" y="260"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="55" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="38" target="47">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1440" y="100"/>
<mxPoint x="1440" y="340"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="56" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="38" target="49">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1440" y="100"/>
<mxPoint x="1440" y="420"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="57" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="38" target="50">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1440" y="100"/>
<mxPoint x="1440" y="500"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="58" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="38" target="51">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1440" y="100"/>
<mxPoint x="1440" y="580"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="59" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="38" target="52">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1440" y="100"/>
<mxPoint x="1440" y="660"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="38" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;Save and Retrieve Data&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="560" y="80" width="240" height="40" as="geometry"/>
</mxCell>
<mxCell id="42" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;Save()&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1480" y="80" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="45" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;Append()&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1480" y="160" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="46" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;Read()&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1480" y="240" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="47" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;IsExists()&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1480" y="320" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="49" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;GetFileHandlerForRead()&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1480" y="400" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="50" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;GetFileHandlerForWrite()&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1480" y="480" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="51" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;GetFilePath()&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1480" y="560" width="160" height="40" as="geometry"/>
</mxCell>
<mxCell id="52" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;Path()&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1480" y="640" width="160" height="40" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
View File
+11
View File
@@ -0,0 +1,11 @@
# XCAlert
it is a module which used for Providing Logs in SaherElm's XTrade Framework.
## Maintainer
Hadi Khazaee asl
[https://www.saherelm.ir](https://www.saherelm.ir)
[hadi_khazaee_asl@yahoo.com](mailto:hadi_khazaee_asl@yahoo.com)
View File
+80
View File
@@ -0,0 +1,80 @@
# XCDataCollector
it is a module which used for Save and Retrieve Data in SaherElm's XTrade Framework.
this tool helps all required modules to save data for next usage and analytics.
we can implement Save To File and Read From File actions to all Structures and Classes and Modules.
## Dependencies
there is no Dependencies on this modules.
## Instancing
there is not any args in Constructor.
## Instructions
- using Path Action of instance for Setting File Path;
- using Save, Append, Read for File Manipulations;
## Actions
### Path
is aProperty Setter and Getter Action for Setting Collector Path.
for setter it's have an input Parameters (string value) which Specified the File's Path.
### GetFilePath(string fileName)
retrieve Full path (including provided file name) based on Current Configured Path for instance.
### GetFileHandlerForWrite(string filePath)
retrieve File Handler by Write Access for Writing Data to File.
you have to provide Fully File Path for access Handler.
this for Use Implementing Custom Collecting Senarios out of Instance Box.
commonly it's used by built in Actions for Regular Saving Data.
### GetFileHandlerForRead(string filePath)
retrieve File Handler by Read Access for Reading Data from File.
you have to provide Fully File Path for access Handler.
this for Use Implementing Custom Retrieving Senarios out of Instance Box.
commonly it's used by built in Actions for Regular Reading Data.
### Save(string fileName, string content)
Save Specified Content to Specified File Nmae.
here the file name must Contains fully file path including file name.
it's only one time writing file. if it's file exists before overwrite it's content.
### Append(string fileName, string content)
Append Specified Contonet to end of Specified File.
here the file name must Contains fully file path including file name.
if file Exists, add to end of it. if not, Create file at Specified Provided path, then write content.
### Read(string fileName, string &content)
Read all of File Content at once from Specified File.
here the file name must Contains fully file path including file name.
content arg is a reference string variable to hold file content.
### Read(string fileName, string &content[])
Read all of File Content Lines at once from Specified File.
here the file name must Contains fully file path including file name.
content arg is a reference string array variable to hold file content lines.
### IsExists(string fileName)
Check Specified File Exists or not ...
here the file name must Contains fully file path including file name.
## Maintainer
Hadi Khazaee asl
[https://www.saherelm.ir](https://www.saherelm.ir)
[hadi_khazaee_asl@yahoo.com](mailto:hadi_khazaee_asl@yahoo.com)
View File
View File
View File
+11
View File
@@ -0,0 +1,11 @@
# XCTrade
it is a module which used for Providing Trade Related Actions in SaherElm's XTrade Framework.
## Maintainer
Hadi Khazaee asl
[https://www.saherelm.ir](https://www.saherelm.ir)
[hadi_khazaee_asl@yahoo.com](mailto:hadi_khazaee_asl@yahoo.com)
View File
View File