質問編集履歴

1

個人情報保護のため変更します。

2022/04/27 11:58

投稿

fxtrader.masa
fxtrader.masa

スコア34

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