質問編集履歴
3
文法の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,23 +1,9 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
|
-
1、高値・安値・終値が前日の足より高ければ始値で買い
|
3
|
-
|
4
|
-
2、高値・安値・終値が前日の足より低ければ始値で売り
|
5
|
-
|
6
|
-
3、ポジションは1つ以上もたない
|
7
|
-
|
8
|
-
4、損切は前日の足の買いなら安値、売りなら高値
|
9
|
-
|
10
|
-
5、利確はエントリー位置から損切幅と同じだけ離れたところ(リスクリワード1:1)
|
11
|
-
|
12
|
-
というEAを作りたい。
|
13
|
-
|
2
|
+
買いポジションを持っている時に売りの条件がみたされたら決済したい。
|
14
|
-
|
15
3
|
### 発生している問題・エラーメッセージ
|
16
4
|
|
17
5
|
```
|
18
|
-
|
6
|
+
買いポジション、売りポジションを持っている時の判別方法がわからないため思っている処理ができない。
|
19
|
-
|
20
|
-
エラーとしてOrderSend error 130とでる。
|
21
7
|
```
|
22
8
|
|
23
9
|
### 該当のソースコード
|
@@ -38,64 +24,90 @@
|
|
38
24
|
|
39
25
|
}
|
40
26
|
|
41
|
-
|
42
27
|
extern int maxspread = 20;//スプレッド
|
28
|
+
extern int closeperiod = 20;//有効期限
|
29
|
+
extern double rot =0.1;//ロット
|
43
30
|
|
44
31
|
void OnTick()
|
45
32
|
{
|
46
33
|
|
47
|
-
//前日足の
|
34
|
+
//前日足の四本値
|
48
35
|
double H1 = iHigh(NULL,0,1);
|
49
36
|
double L1 = iLow(NULL,0,1);
|
50
37
|
double O1 = iOpen(NULL,0,1);
|
51
38
|
double C1 = iClose(NULL,0,1);
|
39
|
+
|
40
|
+
//週足の四本値
|
41
|
+
double WH1 = iHigh(NULL,PERIOD_W1,1);
|
42
|
+
double WL1 = iLow(NULL,PERIOD_W1,1);
|
43
|
+
double WO1 = iOpen(NULL,PERIOD_W1,1);
|
44
|
+
double WC1 = iClose(NULL,PERIOD_W1,1);
|
52
45
|
|
53
|
-
//前
|
46
|
+
//前週足の四本値
|
54
|
-
double
|
47
|
+
double WH2 = iHigh(NULL,PERIOD_W1,2);
|
55
|
-
double
|
48
|
+
double WL2 = iLow(NULL,PERIOD_W1,2);
|
56
|
-
double
|
49
|
+
double WO2 = iOpen(NULL,PERIOD_W1,2);
|
57
|
-
double
|
50
|
+
double WC2 = iClose(NULL,PERIOD_W1,2);
|
58
51
|
|
59
|
-
//
|
52
|
+
//月足の四本値
|
60
|
-
double
|
53
|
+
double MNH1 = iHigh(NULL,PERIOD_MN1,1);
|
54
|
+
double MNL1 = iLow(NULL,PERIOD_MN1,1);
|
55
|
+
double MNO1 = iOpen(NULL,PERIOD_MN1,1);
|
56
|
+
double MNC1 = iClose(NULL,PERIOD_MN1,1);
|
61
57
|
|
62
|
-
//
|
58
|
+
//前月足の四本値
|
59
|
+
double MNH2 = iHigh(NULL,PERIOD_MN1,2);
|
60
|
+
double MNL2 = iLow(NULL,PERIOD_MN1,2);
|
61
|
+
double MNO2 = iOpen(NULL,PERIOD_MN1,2);
|
63
|
-
double
|
62
|
+
double MNC2 = iClose(NULL,PERIOD_MN1,2);
|
64
63
|
|
65
|
-
//
|
64
|
+
int highestprice = iHighest(NULL,PERIOD_D1,MODE_HIGH,20,1);//最高値
|
66
|
-
|
65
|
+
int cheapestprice = iLowest(NULL,PERIOD_D1,MODE_LOW,20,1);//最安値
|
67
66
|
|
68
|
-
//
|
67
|
+
//最高値の4本値
|
68
|
+
double highestH = iHigh(NULL,0,highestprice);
|
69
|
-
double
|
69
|
+
double highestL = iLow(NULL,0,highestprice);
|
70
|
+
double highestO = iOpen(NULL,0,highestprice);
|
71
|
+
double highestC = iClose(NULL,0,highestprice);
|
70
72
|
|
71
|
-
int slipp = 10;
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
//
|
73
|
+
//最安値の4本値
|
74
|
+
double cheapestH = iHigh(NULL,0,cheapestprice);
|
75
|
+
double cheapestL = iLow(NULL,0,cheapestprice);
|
76
|
-
|
76
|
+
double cheapestO = iOpen(NULL,0,cheapestprice);
|
77
|
-
|
77
|
+
double cheapestC = iClose(NULL,0,cheapestprice);
|
78
|
-
|
78
|
+
|
79
|
-
//double insen2 = iOpen(Symbol(),0,2) > iOpen(Symbol(),0,2);
|
80
|
-
|
79
|
+
if(OrdersTotal() == 0)//ポジション制限
|
80
|
+
{
|
81
|
+
if(cheapestH < C1 && MarketInfo(NULL,MODE_SPREAD) < maxspread)//買いの条件とスプレッド制限
|
81
82
|
{
|
83
|
+
int Ticket = OrderSend(Symbol(),OP_BUYLIMIT,rot,cheapestH,10,cheapestL,0,NULL,1212,closeperiod,Magenta);//購入の処理
|
84
|
+
}
|
82
85
|
|
83
|
-
if(
|
86
|
+
if(highestL > C1 && MarketInfo(NULL,MODE_SPREAD) < maxspread)//売りの条件とスプレッド制限
|
84
87
|
{
|
85
|
-
|
88
|
+
int Ticket = OrderSend(Symbol(),OP_SELLLIMIT,rot,highestL,10,highestH,0,NULL,1111,closeperiod,Magenta);
|
86
89
|
}
|
90
|
+
}
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
if(highestL > C1)//買いポジションの決済
|
95
|
+
{
|
96
|
+
bool Close = OrderClose(1111,rot,Bid,10,Magenta);
|
97
|
+
}
|
87
98
|
|
88
|
-
if(
|
99
|
+
if(highestL > C1)//売りポジションの決済
|
89
100
|
{
|
90
|
-
|
101
|
+
bool Close = OrderClose(1212,rot,Ask,10,Magenta);
|
91
102
|
}
|
92
|
-
|
103
|
+
}
|
93
|
-
|
104
|
+
|
94
105
|
```
|
95
106
|
|
96
107
|
### 試したこと
|
97
108
|
|
98
109
|
|
110
|
+
|
99
111
|
### 補足情報(FW/ツールのバージョンなど)
|
100
112
|
|
101
113
|
ここにより詳細な情報を記載してください。
|
2
文法の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -82,16 +82,15 @@
|
|
82
82
|
|
83
83
|
if(kiriage && MarketInfo(NULL,MODE_SPREAD) < maxspread)//買いの条件とスプレッド制限
|
84
84
|
{
|
85
|
-
int Ticket = OrderSend(NULL,OP_BUY,0.01,slipp,L1,
|
85
|
+
int Ticket = OrderSend(NULL,OP_BUY,0.01,Ask,slipp,L1,Ask+rikakuB*Point,NULL,0,0,Red);//購入の処理
|
86
86
|
}
|
87
87
|
|
88
88
|
if(kirisage && MarketInfo(NULL,MODE_SPREAD) < maxspread)//売りの条件とスプレッド制限
|
89
89
|
{
|
90
|
-
int Ticket = OrderSend(NULL,OP_SELL,0.01,
|
90
|
+
int Ticket = OrderSend(NULL,OP_SELL,0.01,Bid,slipp,H1,Bid+rikakuS*Point,NULL,0,0,Yellow);//売却の処理
|
91
91
|
}
|
92
92
|
}
|
93
93
|
}
|
94
|
-
|
95
94
|
```
|
96
95
|
|
97
96
|
### 試したこと
|
1
文法の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -38,6 +38,9 @@
|
|
38
38
|
|
39
39
|
}
|
40
40
|
|
41
|
+
|
42
|
+
extern int maxspread = 20;//スプレッド
|
43
|
+
|
41
44
|
void OnTick()
|
42
45
|
{
|
43
46
|
|
@@ -65,24 +68,26 @@
|
|
65
68
|
//売りの場合の利確
|
66
69
|
double rikakuS = L1-H1;
|
67
70
|
|
68
|
-
int
|
71
|
+
int slipp = 10;
|
69
72
|
|
73
|
+
|
74
|
+
|
70
75
|
//陽線と陰線
|
71
76
|
//double yousen1 = iOpen(Symbol(),0,1) < iOpen(Symbol(),0,1);
|
72
77
|
//double yousen2 = iOpen(Symbol(),0,2) < iOpen(Symbol(),0,2);
|
73
78
|
//double insen1 = iOpen(Symbol(),0,1) > iOpen(Symbol(),0,1);
|
74
79
|
//double insen2 = iOpen(Symbol(),0,2) > iOpen(Symbol(),0,2);
|
75
|
-
if(OrdersTotal() == 0)
|
80
|
+
if(OrdersTotal() == 0)//ポジション制限
|
76
81
|
{
|
77
82
|
|
78
|
-
if(kiriage)//買いの条件と
|
83
|
+
if(kiriage && MarketInfo(NULL,MODE_SPREAD) < maxspread)//買いの条件とスプレッド制限
|
79
84
|
{
|
80
|
-
int Ticket = OrderSend(NULL,OP_BUY,0.01,
|
85
|
+
int Ticket = OrderSend(NULL,OP_BUY,0.01,slipp,L1,1,Ask+rikakuB*Point,NULL,1,Red);//購入の処理
|
81
86
|
}
|
82
87
|
|
83
|
-
if(kirisage)//売りの条件と
|
88
|
+
if(kirisage && MarketInfo(NULL,MODE_SPREAD) < maxspread)//売りの条件とスプレッド制限
|
84
89
|
{
|
85
|
-
int Ticket = OrderSend(NULL,OP_SELL,0.01,Bid,10,
|
90
|
+
int Ticket = OrderSend(NULL,OP_SELL,0.01,slipp,Bid,10,H1,Bid+rikakuS*Point,NULL,1,Yellow);//売却の処理
|
86
91
|
}
|
87
92
|
}
|
88
93
|
}
|
@@ -91,10 +96,6 @@
|
|
91
96
|
|
92
97
|
### 試したこと
|
93
98
|
|
94
|
-
損切の記述がおかしい所まではわかったので変更してみた。
|
95
|
-
前→買いの場合L1、売りの場合H1
|
96
|
-
現→買いの場合Ask-100*Point、Bid̟+100*Point
|
97
|
-
とりあえずなんとか動かないかとこのように変更。
|
98
99
|
|
99
100
|
### 補足情報(FW/ツールのバージョンなど)
|
100
101
|
|