แจ้งเตือนราคา ตัวอย่าง
ออบเจ็กต์ API แจ้งเตือนราคาขยายฟังก์ชันการสำรวจราคาและสามารถใช้เพื่อทำสิ่งต่อไปนี้:
สร้างระบบและแอปพลิเคชันแจ้งเตือนการเทรด กำหนดค่าการเทรดแบบมีเงื่อนไขในอัลกอริทึม ติดตามความรู้สึกของตลาด ปรับปรุงกลยุทธ์การบริหารความเสี่ยง สร้างการแจ้งเตือน โค้ดนี้แสดงให้คุณเห็นวิธีสร้างและเรียกใช้การแจ้งเตือน:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 using System ;
using cAlgo.API ;
using cAlgo.API.Internals ;
namespace cAlgo.Plugins
{
[Plugin(AccessRights = AccessRights.None)]
public class SimplePriceAlert : Plugin
{
private PriceAlert _upperAlert ;
private PriceAlert _lowerAlert ;
protected override void OnStart ()
{
PriceAlerts . Added += OnAlertAdded ;
PriceAlerts . Updated += OnAlertUpdated ;
PriceAlerts . Removed += OnAlertRemoved ;
PriceAlerts . Triggered += OnAlertTriggered ;
var symbol = Symbols . GetSymbol ( "EURUSD" );
var pip = symbol . PipSize ;
_upperAlert = PriceAlerts . Add (
symbol ,
symbol . Ask + 2 * pip ,
PriceAlertQuoteType . Ask ,
PriceAlertCondition . HigherOrEqual
);
_lowerAlert = PriceAlerts . Add (
symbol ,
symbol . Bid - 2 * pip ,
PriceAlertQuoteType . Bid ,
PriceAlertCondition . LowerOrEqual
);
Print ( $"Added upper alert at Ask >= {symbol.Ask + 2 * pip}" );
Print ( $"Added lower alert at Bid <= {symbol.Bid - 2 * pip}" );
}
private void OnAlertAdded ( PriceAlertAddedEventArgs args )
{
Print ( $"Alert added. Id: {args.PriceAlert.Id}, Price: {args.PriceAlert.Price}" );
}
private void OnAlertUpdated ( PriceAlertUpdatedEventArgs args )
{
Print ( $"Alert updated. Id: {args.PriceAlert.Id}" );
}
private void OnAlertRemoved ( PriceAlertRemovedEventArgs args )
{
Print ( $"Alert removed. Id: {args.PriceAlert.Id}" );
}
private void OnAlertTriggered ( PriceAlertTriggeredEventArgs args )
{
Print ( $"Alert triggered! Id: {args.PriceAlert.Id}, Symbol: {args.PriceAlert.Symbol.Name}, Target: {args.PriceAlert.Price}" );
}
}
}
ดำเนินการเทรดโดยใช้การแจ้งเตือน คุณสามารถเขียนโค้ดอัลกอริทึมเพื่อดำเนินการเทรดเมื่อมีการเรียกใช้การแจ้งเตือนราคา
protected override void OnStart ()
{
PriceAlerts . Triggered += PriceAlerts_Triggered ;
}
private void PriceAlerts_Triggered ( PriceAlertTriggeredEventArgs obj )
{
var symbol = obj . PriceAlert . Symbol ;
ExecuteMarketOrder ( TradeType . Buy , symbol . Name , 10000 );
Print ( $"Price alert triggered, trade executed for {symbol.Name}" );
}
จัดการการเทรดแบบไดนามิก คุณสามารถเขียนโค้ดอัลกอริทึมเพื่อแก้ไขระดับ Stop Loss และ Take Profit สำหรับโพสิชันที่เปิดอยู่แบบไดนามิกเมื่อมีการเรียกใช้การแจ้งเตือน ด้วยวิธีนี้ ระดับ Stop Loss และ Take Profit จะถูกย้ายหรือปรับเมื่อราคาของสัญลักษณ์เข้าใกล้ระดับสำคัญ ซึ่งช่วยให้การเทรดดำเนินต่อไปได้ตามที่ต้องการ
private void PriceAlerts_Triggered ( PriceAlertTriggeredEventArgs obj )
{
var positions = Positions . FindAll ( "My position" , obj . PriceAlert . Symbol . Name , TradeType . Buy );
foreach ( var position in positions )
{
position . ModifyStopLossPrice ( obj . PriceAlert . Price - 50 * obj . PriceAlert . Symbol . PipSize );
}
}
สร้างตัวจัดการการแจ้งเตือนราคา ปลั๊กอินนี้เพิ่มเครื่องมือสำหรับจัดการการแจ้งเตือนราคาไปยังแผงสัญลักษณ์ที่ใช้งานอยู่:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 using System ;
using cAlgo.API ;
using cAlgo.API.Collections ;
using cAlgo.API.Indicators ;
using cAlgo.API.Internals ;
namespace cAlgo.Plugins
{
[Plugin(AccessRights = AccessRights.None)]
public class PriceAlertsTest : Plugin
{
private PriceAlert _priceAlert ;
protected override void OnStart ()
{
var panel = new StackPanel { Orientation = Orientation . Vertical };
var addButton = new Button { Text = "Add Alert" };
addButton . Click += addButton_Click ;
panel . AddChild ( addButton );
var removeButton = new Button { Text = "Remove Alert" };
removeButton . Click += removeButton_Click ; ;
panel . AddChild ( removeButton );
var updateButton = new Button { Text = "Update Alert" };
updateButton . Click += updateButton_Click ;
panel . AddChild ( updateButton );
var showSymbolAlertsCountButton = new Button { Text = "Show # Of Active Chart Symbol Alerts" };
showSymbolAlertsCountButton . Click += showSymbolAlertsCountButton_Click ;
panel . AddChild ( showSymbolAlertsCountButton );
var findAddedAlertButton = new Button { Text = "Find Added Alert" };
findAddedAlertButton . Click += findAddedAlertButton_Click ;
panel . AddChild ( findAddedAlertButton );
var block = Asp . SymbolTab . AddBlock ( "Price Alerts Test" );
block . Child = panel ;
PriceAlerts . Added += PriceAlerts_Added ;
PriceAlerts . Removed += PriceAlerts_Removed ;
PriceAlerts . Updated += PriceAlerts_Updated ;
PriceAlerts . Triggered += PriceAlerts_Triggered ;
Print ( $"Price Alerts #: {PriceAlerts.Count}" );
}
private void findAddedAlertButton_Click ( ButtonClickEventArgs obj )
{
Print ( $"Added Alert Id: {PriceAlerts.Find(_priceAlert.Id).Id}" );
}
private void showSymbolAlertsCountButton_Click ( ButtonClickEventArgs obj )
{
if ( ChartManager . ActiveFrame is not ChartFrame { Chart : var chart })
return ;
var symbol = chart . Symbol ;
Print ( $"Active chart symbol '{symbol.Name}' price alerts count: {PriceAlerts.FindAll(symbol.Name).Length}" );
}
private void PriceAlerts_Triggered ( PriceAlertTriggeredEventArgs obj )
{
Print ( $"Price alert triggered, Id: {obj.PriceAlert.Id}" );
}
private void PriceAlerts_Updated ( PriceAlertUpdatedEventArgs obj )
{
Print ( $"Price alert updated, Id: {obj.PriceAlert.Id}" );
}
private void PriceAlerts_Removed ( PriceAlertRemovedEventArgs obj )
{
Print ( $"Price alert removed, Id: {obj.PriceAlert.Id}" );
}
private void PriceAlerts_Added ( PriceAlertAddedEventArgs obj )
{
Print ( $"Price alert added, Id: {obj.PriceAlert.Id}" );
}
private void removeButton_Click ( ButtonClickEventArgs obj )
{
PriceAlerts . Remove ( _priceAlert );
}
private void updateButton_Click ( ButtonClickEventArgs obj )
{
if ( ChartManager . ActiveFrame is not ChartFrame { Chart : var chart })
return ;
var symbol = chart . Symbol ;
_priceAlert . Update ( symbol , symbol . Ask - ( 100 * symbol . PipSize ), PriceAlertQuoteType . Ask , PriceAlertCondition . LowerOrEqual , true , "Updated message" );
}
private void addButton_Click ( ButtonClickEventArgs obj )
{
if ( ChartManager . ActiveFrame is not ChartFrame { Chart : var chart })
return ;
var symbol = chart . Symbol ;
_priceAlert = PriceAlerts . Add ( symbol , symbol . Bid + ( 100 * symbol . PipSize ), PriceAlertQuoteType . Bid , PriceAlertCondition . HigherOrEqual );
}
}
}
ก่อนหน้า ตัวแปลงสกุลเงิน ต่อไป ข้อความและการสมัครสมาชิก