質問編集履歴
1
個人情報保護のため変更します。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
MT4
|
1
|
+
MT4 が機能しない
|
test
CHANGED
@@ -1,78 +1,5 @@
|
|
1
1
|
### 前提
|
2
|
-
MetaTrade4で自動売買プログラムを作っています。
|
3
|
-
簡単な売買システムに オリジナルの関数を加えようとしましたが
|
4
|
-
注文を一切出さず機能しません。
|
5
|
-
FXTF社のMT4 ドル円の5分足でテストしました。
|
6
|
-
何時間も葛藤しているのですがさっぱりわかりません。
|
7
|
-
事前に関数だけでも出力テストしましたが機能していました。
|
8
2
|
|
9
|
-
|
10
|
-
### 実現したいこと
|
11
|
-
1日一回しかトレードしないように作ったDayEnd()関数が使えるようにしたい
|
12
|
-
|
13
|
-
### 発生している問題・エラーメッセージ
|
14
|
-
エラーはありません
|
15
|
-
なので、関数が間違っているのだと思います。
|
16
|
-
|
17
|
-
### 該当のソースコード
|
18
|
-
|
19
|
-
```ここに言語名を入力
|
20
|
-
#define MAGICMA 20131111
|
21
|
-
|
22
|
-
//問題の関数
|
23
|
-
int DayEnd()
|
24
|
-
{
|
25
|
-
for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
|
26
|
-
{
|
27
|
-
if( OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == false ) return( 0 );
|
28
|
-
if( OrderMagicNumber() != MAGICMA ) continue ;
|
29
|
-
if( OrderSymbol() != Symbol() ) continue ;
|
30
|
-
if(TimeDay(TimeCurrent()) != TimeDay(OrderCloseTime())) {Print("DayEnd"); return( 1 );}
|
31
|
-
}
|
32
|
-
return( 0 );
|
33
|
-
}
|
34
|
-
//+------------------------------------------------------------------+
|
35
|
-
//ポジションチェック
|
36
|
-
void OnTick()
|
37
|
-
{ if(PosiCheck(Symbol())==0) CheckForOpen(); }
|
38
|
-
//+------------------------------------------------------------------+
|
39
|
-
//移動平均線を下に回ったら売り
|
40
|
-
void CheckForOpen()
|
41
|
-
{
|
42
|
-
double ma;
|
43
|
-
int res;
|
44
|
-
ma=iMA(NULL,0,10,0,MODE_SMA,PRICE_CLOSE,0);
|
45
|
-
if(Open[1]>ma && Close[1]<ma)
|
46
|
-
{
|
47
|
-
if( DayEnd()==1 ) {
|
48
|
-
res=OrderSend(Symbol(),OP_SELL,0.01,Bid,3,Bid+60*Point,Bid-60*Point,"",MAGICMA,0,Red);
|
49
|
-
}
|
50
|
-
return;
|
51
|
-
}
|
52
|
-
}
|
53
|
-
//+------------------------------------------------------------------
|
54
|
-
//+------------------------------------------------------------------+
|
55
|
-
int PosiCheck(string symbol)
|
56
|
-
{
|
57
|
-
int buys=0,sells=0;
|
58
|
-
for(int i=0;i<OrdersTotal();i++)
|
59
|
-
{
|
60
|
-
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
|
61
|
-
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
|
62
|
-
{
|
63
|
-
if(OrderType()==OP_BUY) buys++;
|
64
|
-
if(OrderType()==OP_SELL) sells++;
|
65
|
-
}
|
66
|
-
}
|
67
|
-
if(buys>0) return(buys);
|
68
|
-
else return(-sells);
|
69
|
-
}
|
70
|
-
//+------------------------------------------------------------------+**
|
71
|
-
```
|
72
|
-
|
73
|
-
### 試したこと
|
74
|
-
|
75
|
-
ここに問題に対して試したことを記載してください。
|
76
3
|
|
77
4
|
### 補足情報(FW/ツールのバージョンなど)
|
78
5
|
|