1 :
Trader@Live! :
2013/08/31(土) NY:AN:NY.AN ID:hL+A90th
2 :
Trader@Live! :2013/09/05(木) 04:17:23.44 ID:CSbNY91y
2
3 :
Trader@Live! :2013/09/20(金) 19:52:05.12 ID:zfSHpAkX
すいません 巨大なヒストリーデータをCドライブ以外に保存する方法はありませんか?
>>3 windows シンボリックリンク で検索するといい
>>4-5 おお、ありがとうございます
早速やってみます
7 :
jjjjjjjfx :2013/09/22(日) 19:12:13.66 ID:kUuns4D2
メタトレーダーのOrderSend()関数について質問します。 最後のパラメーターは、チャート上の建玉バーに矢印を表示させるものですが、例えば、「Red」と記入しても、 発注時にデモトレード画面で何も表示されません。何が原因か分からず泣いてます。 ちなみに、OrderClose()関数ではきちんと表示されます。 どなたか原因の分かる方がいらしたらご教示願います。
8 :
Trader@Live! :2013/09/23(月) 12:19:41.07 ID:DRUbauP8
自作インジが重くて困ってます 現在、レートが更新される度に再計算してるのですが これを 新足が作成された時だけ計算して、計算頻度を減らしたいのですが どう書いたら良いでしょうか? アドバイスお願いします
Time[0]を記録しておいて 記録した日時とTime[0]が違ったら実行する みたいな感じにすればいいんじゃね
10 :
Trader@Live! :2013/09/23(月) 14:47:17.82 ID:DRUbauP8
>>9 ありがとう
やってみて、再計算の頻度は減ったんだけど
やっぱり重い
計算過程が多すぎるのと5通貨表示させてるのが問題なのかなぁ・・・
12 :
Trader@Live! :2013/09/23(月) 16:38:04.05 ID:DRUbauP8
計測期間短くして、チャートを5分足から30分足に変えたら、軽くなった ループ時間が長すぎたみたいだ
13 :
10 :2013/09/24(火) 00:30:01.79 ID:8epMVXHc
datetime var = iTime(NULL,0,0); int NowHour = TimeHour(var); int NowMinute = TimeMinute(var); if(LastCheck!=(NowHour*60+NowMinute)){ while(i <= Bars) { 計算色々 } int LastCheck = NowHour*60+NowMinute; } ///////////////////////////////////////// 上のソースで計算部分を新足作成された時に1度だけする様にしたんだけど、 うまく動いてないみたい。。。 どこか間違えてます?
int Nowbar; /////// int start() { if(Nowbar!=Bars)){ while(i <= Bars) { 計算色々 } Nowbar = Bars; } ////////
LastCheck が while の中で定義されてるから、上の if では参照できてないのと i の値あたりに問題あるんじゃね?
static datetime t;
if (Time[0] != t) {
計算色々
t = Time[0];
}
>>14 それ、オプションで足の数の最大を1000とかにしてても問題ないの?
>>16 確認してみたら、チャートの最大数を5000にしてMT4立ちあげると
Bars=5000
で、新しい足が形成されると5001、5002、ってなってく
チャートの最大数ってMT4立ちあげ時の数字で
それ以降は加算されてくみたいお
18 :
10 :2013/09/24(火) 01:17:40.11 ID:8epMVXHc
ありがとう〜
>>16 の「static」使ったら出来ました〜
感謝です
>>17 チャートの最大数じゃなくてヒストリーの方でも?
ヒストリーってバックテスト上でのこと? それでも増えるみたい。
オプションに足の数の設定は2か所あるでしょ。それのヒストリーの方。
と思ったけど何か違うな 待っててください
ヒストリー内の最大バー数を1000にしても 1000以上カウントされるみたいですお 今、メインで使ってるMT4でバックテスト中なので綺麗に足が揃ってるMT4がないから ちゃんと調査できませんお
ちゃんと1000以降も更新されるみたいお
まじか。 じゃぁ起動中は足を増える限り保持して終了時に切り捨てたりしてるのかな。
26 :
Trader@Live! :2013/09/26(木) 12:30:41.76 ID:bAbn3RE7
<<<8月 1.2.3.4.5.6.(略).25.26.27.28.29.30.31 >
>>10 月
こう言う横長のカレンダープラグインってないですか?
誤爆してたorz
すみません、教えてください int X[]; int i=0; while(i <= 100){ if(条件){X[i]++;} i++; } Comment(X[1]); このソースでX[1]を出力したのですが、値が0として出力されます 条件にはあっていても、カウントアップされてない様なのですが、どこか間違えてるでしょうか?
配列Xのサイズ/初期値を宣言していないので問題になる。
>>29 色々やってみたのですが、わかりません・・・
具体的にどう書けば良いのでしょうか?
あ、出来たのかも・・・ この場合 nt X[100]; と宣言したら表示されました。 これで良かったんですか?
>>31 初期値も入れとかないとね
0が入ってる保証はないよ
int X[100];の下に
ArrayInitialize(X,0);
チャートの背景に、通貨ペア名をデカデカと表示しておきたいんですが そういうスクリプト(?)ってありますか?
35 :
Trader@Live! :2013/10/02(水) 05:08:23.34 ID:heo7pjoV
ipad版の、背景色を黒にする方法、 あと左に出る発注パネルを右にする方法とかってありますか?
>>34 背景ちうか、テキストオブジェクトで描いてるのはみたことあるぞ
37 :
*_* :2013/10/03(木) 12:50:38.33 ID:fQZw8rwy
短期と長期の2種類の単純移動平均線(例えば3日と20日等)の乖離率を表示できるインジケータを探してます。 単純にMQLは勉強始めたばかりでよくわからないですが、単純にMACDのソース中のEMAをSMAに変えれば使用できるものでしょうか?
38 :
*_* :2013/10/03(木) 12:50:59.28 ID:fQZw8rwy
短期と長期の2種類の単純移動平均線(例えば3日と20日等)の乖離率を表示できるインジケータを探してます。 単純にMQLは勉強始めたばかりでよくわからないですが、単純にMACDのソース中のEMAをSMAに変えれば使用できるものでしょうか?
39 :
*_* :2013/10/03(木) 13:30:02.22 ID:fQZw8rwy
38です。見つかりました。
こんにちは。 質問させて下さい。 バックテスト用のヒストリカルデータをFXDDからダウンロードして使用しているのですが、データに抜けがあります。例えば最新だと、2013.04.13 - 2013.05.19の期間が丸々ない状態です。信頼性のあるデータを作るには、皆さんどうされていますか?
>>40 地道にいろんなブローカーに口座を開設して、
日々、リアルタイムに真のヒストリカルデータを貯めてゆくことだ。
自分自身の手でデータを集めるのが一番確実だ。
>>41 ありがとうございます。
常にMT4を起動し、利用する通貨ペアのリアルタイムデータを取得する、ということですね。
なるほどです。
取りあえず
>>42 をNGIDにぶち込んでおくべきことは確か。
>>42 取得するのは1Mだけでいいよ、
テスト時にスクリプトで上位時間足を生成しないと
各足参照しているようなEAだとモデリング品質が上がらないから。
10年後には Tickの動きもテストで再現できるだろうから、 1Mで妥協しても良いのかな?とぉもったり。
なんちゃってティックだからねw
サブウィンドウで他の時間足を見るインディケーターって無いですか? 5分足と15分足を同時に見たいんだけど。
探せばある・・とだけ。
3日くらい探してるけど一向に見つかりません。
質問です。FXproのMT4で金や日経225、ダウ、原油を表示させているのですが、 原油だと#CLX3と表示されてしまいます。慣れるしかないのでしょうか? 名称変更なんかはできないのえしょうか?
できまえん
>>51 それって、そのチャートを作ったあとにでっかく”原油”とかってインジ貼れば?
そしてそのチャートをテンプレートで保存すりゃいいだけだと思うけど?
54 :
Trader@Live! :2013/10/17(木) 07:03:10.39 ID:BeJtAdO+
質問です モバイル環境でオリジナルインジケータを使いたいのですが 泥やりんごのスマホアプリでもMT4が使えるようですが インジケータはまだ30ほどのようで、もちろんオリジナルは使えません。 WINDOWSPHONEとかなら表示できるのでしょうか それともSURFACEとかのモバイルパソコンまで行かないと無理でしょうか より小さく持ち運べるものでオリジナルインジケータを使いたいのですが。
>>54 自宅のPCで動かして、その画面をスマフォで観る。リモートデスクトップとか、チームビューアーとか。
あるいは、自宅のPCからチャート画像をうpして、それをスマフォで見る。
しかない。
>>55 それかvpsしかないということですね。
まあある程度のモバイルpcならMetaTraderくらいは動かせそうだけど
Auto Fibo のデフォルトの色 黄色→緑にしたいのですが どこを修正すればいいですか? 教えていただける方いませんか? (色を▲から選択できることは知ってますが、 根本的にC言語みたいな所?から直したいです) *何といって説明したらよいかわからないのでC言語と言ってるだけです
ストラテジーテスターの ビジュアルモードってとこマックスにしても 以前よりかなり遅いんだけど 早くする方法ない? スキップじゃなくて
>>58 おれもだわ、明らかにスペックの高いやつで走らせてるのにスペック低いやつより遅くなったりしてる。
誰か知らないかな
コロナチャートという信号処理を応用したトレーディングシグナルの中の、 CoronaSwingPositionというインジケータ値をicustom関数を使って取り込み、 当インジケーターの値が4以上なら売りシグナル、-4以下なら買いシグナルを矢印で 生じるようにインジケーターを作成したのですが、何もチャート上に表示されません。 コロナチャートのコードと説明は下記になります。 forexwinners.net/forex/corona-indicators/ yamazakura32.blog59.fc2.com/blog-entry-31.html www.forexmt4.com/mt_yahoo/Corona/CORONACHARTS.pdf ※URLの頭を貼り付けると書き込みエラーになりました。 コードは下記となりますが、問題がどこにあるのか分かりません。 どなたか解決のためのアドバイス・ヒントをくださいませ。
62 :
61 :2013/10/21(月) 09:32:56.38 ID:2AEQwtvv
#property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Aquamarine #property indicator_color2 Red #property indicator_color3 Blue double BufCoronaSwing[]; double BufBuy[]; double BufSell[]; int init() { SetIndexBuffer(0, BufCoronaSwing); SetIndexBuffer(1, BufBuy); SetIndexBuffer(2, BufSell); SetIndexLabel(0,"CoronaSwingPosition"); SetIndexLabel(1,"BuySignal"); SetIndexLabel(2,"SellSignal"); SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID, 1, Red); SetIndexArrow(1,233); SetIndexStyle(2, DRAW_ARROW, STYLE_SOLID, 1, Blue); SetIndexArrow(2,234); return(0); }
63 :
61 :2013/10/21(月) 09:37:22.26 ID:2AEQwtvv
int start() { int counted_bar = IndicatorCounted(); int limit = Bars-counted_bar; if(counted_bar == 0) limit -= 100; //100バーからシグナル表示 for(int i=limit-1; i>=0; i--) { BufCoronaSwing[i] = iCustom(NULL,0,"CoronaSwingPosition",0,0,4,NULL,NULL,NULL,NULL,1,0,0,0); } if(counted_bar == 0) limit -= 100; //100バーからシグナル表示 for(i=limit-1; i>=0; i--) { BufBuy[i] = EMPTY_VALUE; if(BufCoronaSwing[i] < -4) BufBuy[i] = Open[i]; BufSell[i] = EMPTY_VALUE; if(BufCoronaSwing[i] > 4) BufSell[i] = Open[i]; } return(0); }
インジでiCustom使えるん?ごめんチラ見しかしてないから検証してないけど
>>61 一番疑わしいiCustom()で値が取れているのかいないのかくらい書かないと
BufCoronaSwing[i] = iCustom(NULL,0,"CoronaSwingPosition",0,0,4,NULL,NULL,NULL,NULL,1,0,0,0);
この部分を
BufCoronaSwing[i] = 5; や BufCoronaSwing[i] = -5; に変更して矢印が描画されるようならiCustom()の問題でしょう
(index0のラインはプライスとは関係のない値なのでもともと描画されないはず)
上のテストで矢印が描画されたときは、CoronaSwingPositionをチャートに描画して、
そのときのパラメータとiCustom()を見比べるくらいかな
66 :
61 :2013/10/22(火) 00:59:39.12 ID:rPTngvDM
返信ありがとうございます。さっそく定数を入れてみると、 びっちり始値の所に赤矢印(青矢印)が表示されていましたw うーむ…。元コードやパラメータと睨めっこするしかないか…。
>>53 ありがとうございます!
なるほど、インジでそういうのあるんですね。
探してみたんですが良くわかりませんでした。
申し訳ないんですがやりやすいインジありませんか?
トレードをしない時間を以下のように、 カンマ左が時間、右が分という形(CSV)で保存しています。 「2,30 4:30 5;30 ・ ・ ・」 MQLのif文で表現すると、 if(Hour()==2&&Minute()==30)TRADE=0; if(Hour()==4&&Minute()==30)TRADE=0; if(Hour()==5&&Minute()==30)TRADE=0; となりますが、 時間一覧は300行近くありif文も300行になるのですが、何か完結に表現できる方法はないでしょうか。
>>68 int NGtime[};
で、配列宣言して、
ArrayResize(NGtime, 300);
で配列確保して、
NGTime[0] = 2*60 +30;
NGTime[1] = 4*60 +30;
NGTime[2] = 5*60 +30;
・・・
となるように、CSV読み込み時に代入ループを回す。
んで、判定条件は、
TRADE = 1;
int tm = Hour()*60 + Minute();
for(int i = 0;i<配列サイズ数 ;i++){
if(NGTime[i] == tm){
TRADE = 0;
break;
}
}
>>69 おお、配列を使うんですね。
MQLではまだ使ったことなかったのですが、
別の言語で概念は分かるのでコードの意味は分かります。
配列に読み込んだ時間一覧をfor文で照合する感じですね。
CSV読込の仕方はググってあとは回答のコードを参考に書き上げてみます。
かなり簡潔なコードになりそうです。
分かりやすい解説で助かりました。
本当にありがとうございました。
すみません、あれからずっとCSVの読込についてコード書いて試行錯誤してたのですが、 結局CSVから配列変数に値を格納することが出来ませんでした。 色んなサイトを参考に書いてみて、 //--------------------------------- int NGTime[]; int init() { ArrayResize(NGTime,300); int handle=FileOpen("NGTime.csv",FILE_CSV|FILE_READ); if(handle>0){ int i=0;FileSeek(handle,0,SEEK_SET); while(!FileIsEnding(handle)){ NGTime[i] = FileReadNumber(handle); if(FileIsEnding(handle)==TRUE)break; i++; FileClose(handle); } //--------------------------------- としてみたのですがフリーズします。 多分致命的なミスがあると思うのですが分かりません。 上手く読み込むのはどうしたら良いでしょうか。 ご指摘頂けると有り難いです。
何とかあれこれ試して配列変数に格納出来ました。 お騒がせしました・・・。
MT4から5分間隔で4本値とインジケータの値をcsvファイルとして出力する スクリプトを下記のように作成いたしましたが、このことでご質問がございます。 extern datetime StartTime; // 開始日時 datetime EndTime; // 終了日時 extern string customind = "Custom_Indicator";//呼び出し先indicatorのファイル名 extern int iperiod = 5;//呼び出し先indicatorの時間足 1,5,15,30,60,240,1440,10080,43200 double Custom_Indicator; int start() { int handle = FileOpen(Symbol()+Period()+".csv", FILE_CSV|FILE_WRITE, ','); if(handle < 0) return(-1); int iStart = iBarShift(NULL, 0, StartTime); EndTime = TimeCurrent(); int iEnd = iBarShift(NULL, 0, EndTime); FileWrite(handle, "Date", "Time", "Open", "High", "Low", "Close", "Custom_Indicator"); for(int i=iStart; i>=iEnd; i--) { string sDate = TimeYear(Time[i]) + "/" + TimeMonth(Time[i]) + "/" + TimeDay(Time[i]); string sTime = TimeHour(Time[i]) + ":" + TimeMinute(Time[i]); double Custom_Indicator = iCustom(NULL, iperiod, customind, 0, i); FileWrite(handle, sDate, sTime, Open[i], High[i], Low[i], Close[i], Custom_Indicator); } FileClose(handle); MessageBox("End of OutputIndicators"); return(0); }
@5分おきにcsvファイルを自動的に出力できるようにする。 Aエクセル側でcsvファイルを取り込んで自動的に更新する。 上記の作業を行いたいのですが、@についてはコードを、 Aについては何か上手い方法はございませんでしょうか。 Aに関しては、excel[データ]-[外部データの取り込み]-[テキストファイル] からcsvファイルをインポートし、プロパティから5分毎に更新する設定にすれば良いのですが、 Windows7を使っているため、MT4からcsvファイルがエキスポートされるfilesフォルダが互換モードを クリックしないと表示されません。そのため、excelインポートのファイル選択時には何も表示されず、 files配下のCSVファイルを選択できません。しかも、MT4のcsvファイル出力先変更方法も不明です。 どなたか@とAについて良いお知恵がございましたら、ご教示くださいませ。
@スクリプトでやろうとせず、インジとして作る。 5分足で足が更新されたら、というのがまぁ簡単(精密ではないが) A?俺はwin8だしよくわからんがMT4のインストール先を変えるとか?? とりあえずExcel2007とwin8 64bitで テキストファイルのインポート選んでみたら MT4フォルダ内Experts内files内にあるcsvファイルが普通に見られた。 それより、以下俺が昔やったことで気になる点がひとつ。 Excelでcsvファイルを開いているときって MT4からそのファイルにアクセスしたら失敗しなかったけ? 上書きするだけなら大丈夫なのかな、それとも 外部データの取り込みという形ならおk? まぁその点は問題ないことを確認しているんなら老婆心失礼した。
どこで聞いたらいいのかわからないのでこちらで質問させてもらいます MT4を開いたら「旧バージョン」と表示されて接続されなくなりました 前にこうなった時はUPDATEの更新をしてください的なダイアログが出て それを押したら更新されて使えるようになったと記憶してます ですが今回はそういったものが何もでません どうしたらいいのかわからないのでとりあえずファイルの中の「LiveUpdate.exe」と いうのをクリックしてみたのですが何も起きません 最近PCの調子がちょっと悪いと思っていたのですがそのせいでしょうか? わかる方いたらお願いします
そのMT4はどれくらいぶりに起動した? 最近使っていたなら、しばらく前から 自動(強制)アップデート式に切り替わっているので そういった事が起こりにくいはずだけど。 あとは使用している業者からインストーラーを 再ダウンロードしてインストールすればいいと思うけど 設定を移動したりするのは…俺は詳しくないので 検索か過去のレスでも確認してくれ。あるいは誰か教えてあげて
78 :
76 :2013/11/02(土) 15:40:15.56 ID:HPNaxcfy
>>77 返事ありがとうございます
起動したのは1週間ぶりです
アップデートが自動になっていたのですか
気づきませんでした もしかして何回かされていたのでしょうか
>使用している業者からインストーラーを・・・
できればいいのですが事情があってそれはできないのです
引き続きわかる方お願いします
EAを入れる前に既に待機注文がある場合、 そのチケット番号を取得するにはどうすれば良いですか? 市場注文(ポジション)であれば、for分とOrderSelect(ticket,SELECT_BY_POS)で取得できるのですが。
すみません、MODE_TRADESで解決しました。
以下は1次元配列のcsvファイルを読み込むロジックなのですが、 2次元配列のcsvファイルを読み込む場合はどこをどのように修正すれば良いでしょうか。 test.csvを配列変数DATAに取り込みます。 //ここから int handle = FileOpen("test.csv", FILE_CSV | FILE_READ, ","); int cnt = 0; while(true) { FileReadString(handle); if(FileIsEnding(handle)) break; if(FileIsLineEnding(handle)) cnt++; } Count = cnt-1; if(cnt == 1) NoData=true; else //array set { NoData = false; ArrayResize(DATA Count); ArrayInitialize(DATA, 0); FileSeek(handle, 0, SEEK_SET); while(true) { FileReadString(handle); //subject if(FileIsLineEnding(handle)) break; } for(int i=0; i<cnt-1; i++) { DATA[i] = FileReadNumber(handle); } ArraySort(DATA); }
>>81 2次元の配列のCSVをとりあえず、そのロジックで全部読み込める?
もし、読めるなら、全部読み込んだ配列から、
二次元配列に上手くコピーしなおせば良いと思う。
>>81 CSVファイルのフォーマットと、MQL4側の配列フォーマットをまず定義してくれ。
要するに、「何を?」「どういう形で?」読めればいいのか分からんと何も言いようがない。
>>82 2次元配列のcsvは読み込めますが1列目しか読み込んでいません。
>>83 csvはカンマ区切りで、
0,288
1,925
2,355
・
・
・
という内容で、
これをDATA[x][y]という配列変数に取り込みたいです。
>>84 DATA[0][0] == 0
DATA[0][1] == 288
DATA[1][0] == 1
DATA[1][1] == 925
DATA[2][0] == 2
DATA[2][1] == 355
と格納されればいいの?
だとしたら、FileReadArrayの引数にDATA渡すだけで読み込めたはず。
なんらかの事情で1個ずつ読み込みたいなら
DATA[i] = FileReadNumber(handle);
↓
DATA[i / ArrayRange(DATA, 1)][i % ArrayRange(DATA, 1)] = FileReadNumber(handle);
としてもいけると思うけど・・・・・・
>>85 その形式で格納したいと考えています。
FileReadArrayはバイナリ形式でないと読み込めないらしく、
色々試したのですが(主にcsvをバイナリ形式にする方法が分からず)結局扱えず1個ずつ読み込むことにしています。
バイナリファイルが扱えるようになれば、FileReadArrayの方が便利だと考えています。
頂いた、
DATA[i / ArrayRange(DATA, 1)][i % ArrayRange(DATA, 1)] = FileReadNumber(handle);
はエラーが出ています。
申し訳ないのですがDATAの[][]の内容が私には理解出来ず修正の方法が分かりません。
>>86 DATAはちゃんと2次元配列(int DATA[][2])として定義されてる?
[]の中身は・・・・・・
まずArrayRangeは(0インデックスで)N次元目の要素数を返す関数。
っで、int DATA[][2]; ArrayRange(DATA, 1); の場合は2になる。
っで、iが0, 1, 2, 3, 4, 5と増えていくとすると
i = 0 の時、i / 2 = 0、i % 2 = 0 で、DATA[0][0] を指すことになる。
i = 1 の時、i / 2 = 0、i % 2 = 1 で、DATA[0][1] を指すことになる。
i = 2 の時、i / 2 = 1、i % 2 = 0 で、DATA[1][0] を指すことになる。
i = 3 の時、i / 2 = 1、i % 2 = 1 で、DATA[1][1] を指すことになる。
i = 4 の時、i / 2 = 2、i % 2 = 0 で、DATA[2][0] を指すことになる。
i = 5 の時、i / 2 = 2、i % 2 = 1 で、DATA[2][1] を指すことになる。
>>87 これは解説を頂かないと分かりませんでした。
何とトリッキーな代入。私では到底思いつくことはなかったです。
ご指摘の通り2次元配列の定義がされてないことが原因でした。
ということで無事DATAに2次元配列test.csvを読み込むことが出来ました。
FileReadArrayについては、もう少し納得のいくまでググってみたいと思います。
とても丁寧に解説して頂きとても助かりました。
本当にありがとうございました。
おつかれ
オブジェクトの操作のために、n本分未来のバーのdatetime値を得たいのですがやり方が思い付きません。 (1)Time[-1*n] 全然ダメ (2)Time[0]+(Time[0]-Time[1])*n 週明けなどの時ダメ (3)Time[0]+Period()*n (2)と同様 良い方法ありましたら教えて教えていただけると助かります。
>>90 datetimeは1が1秒だよ
60足せば1分先。
>>91 そうなのですが、例えば週末のバーのひとつ未来のバーのdatetime値は、単純にPeriod()秒を足した値ではなく2日分の時間を加算する必要がありスマートなコードとならず困っています。
また、業者によっては4時間足が飛び飛びの時刻規(00:00,04:00,11:00,15:00,19:00,23:00)となっている場合もあり、そういう場合でもスマートに対応出来るコードにしたいのです。
>>92 おれの週末判定の方法は
まず先週末を探して
それと同じ曜日、時間を週末としてるでも夏時間とかあるから完璧じゃないね
他に方法あったらおれも知りたいな
>>92 -----------------------------------------------
まず、ある時刻が休みかどうかを判定する関数を作る。
bood IsHoliday(datetime tm )
次に、その関数を利用して、未来に対して 休日をスキップしつつ
足をカウントできる関数を作る。
datetime GetNextNbarTime(int n)
-----------------------------------------------
基本的な考え方はこれで良いよね。
(3)Time[0]+Period()*60*n と書くところを GetNextNbarTime(n) と書けば良いだけになるから。
あとは、IsHolidayの中身を
土曜6時〜月曜6時
の単純な判定処理にするか、
CSVから休日データを読み込んで判定するか、
自分の必要に応じて複雑化させればいい。
>>93 >>94 なるほど、夏時間も考慮が必要ですね。
先輩方の意見を纏めるとやはり週末を自力でスキップするしか無さそうですね。
ありがとうございました。
96 :
Trader@Live! :2013/11/24(日) 00:36:58.04 ID:J2wsM20i
dat落ちしそうなのでageます、申し訳ありません ご教示いただきたいのですが、 ku-chartをストラテジテスタで再現したいのですが、MT4では複数通貨のデータを同時に扱うことができないようで、 d.hatena.ne.jp/FxNONO/20130327/1364360742 からStrategy Testerで複数通貨ペアを扱えるライブラリをダウンロードして使ってみましたが そこで公開されているKu-chart-Maker2-nonoGetPrice.mq4はオリジナルのものと計算方法を変えてあるそうで 実際にオリジナルのものと比較しても挙動が違います そこで、オリジナルのKu-chartを「よんでね.txt」にしたがって書き換えようと思いましたが プログラミングには暗いのでどうしてもうまくいきません。 できれば、このバージョンを ux.getuploader.com/fai_fx/download/287/Ku-chart-Maker2b.mq4 ストラテジテスタで動作するようにしたいので、どこをどのようにすればよいか お知恵を拝借させていただければと思いますので、よろしくお願いいたします。
96の書き込みですが 規制のため、リンク2つの前にhttpが抜けています、すみません
>>96 テスターでも少し制限はあるが複数通貨は扱える。
できないのは他の通貨でオーダーを出すこと。
>>96 なるほど!!
他の通貨の情報をhistoryデータから取得するライブラリーを作り、ソース上のiClose()などを作成したライブラリーの関数(nonoClose()など)に置き換えることで動作させる仕組みですね。
勉強になります。
添付ファイル内のものはKu-ChartソースのiMA()の箇所をMA_nonoGetPrice(オリジナルのMoving AverageのソースのClose[]などの箇所をnonoClose()に変えsymbolやヒストリファイル情報を渡せるようにしたもの)に換えているだけのように見えます。
Ku-Chartのオリジナルソースは見たことがありませんがiMA()やiClose()などの箇所を一つ一つ変えて行けば完成するのでは?と思います。
>>98 ライブラリーを作らないで他通貨のデータをストラテジーテスター利用時に得る隠し技があるのですか?
是非その技を知りたいです。
>>99 隠しも何も、普通に参照できるけど?
[0]のデータが正しく更新されない以外に問題は知らないな。
参照するシンボル名を間違ってるんじゃないか?
>>100 ストラテジーテスターのビジュアルモードを実行中に一時停止ボタンを押して複数の通貨ペアを使うインディケーターを追加すると確かに正しく表示されますね。
ただ、その状態から一時停止ボタンを押してバーを進めると、私の環境だとテスターで選択している通貨ペアは正しく表示されますが、他の通貨ペアは一時停止ボタンを押したときの情報のまま(古い値)が取得されてしまいます。
念のためにiClose(通貨ペア,0)もiClose(通貨ペア,1)など[0]以外の値も使ってみたのですがバーが先に進んでも一時停止時点の値が取得されてしまいます。
MT4ではなくMT5の場合や、ブローカーの仕様の違いなど、何か見落とし事項ありますでしょうか?
そもそもVisual modeに後からdropされたインジケーターはサポートされて いないんじゃないか。 おれが言ったのはEAの中から参照する時の話。
そもそも、インジケータってどういう使い方が標準なのですかね。 iCustom()で使えるが、Visual modeにdropすると使えない関数があったり、 逆にVisual modeにdropでないと、インジ表示できなかったり。
チャートに入れて使うのが標準?だろ。 visual modeに入れないと表示できないものなんて見たことないんだが。
EAでiCustomで入れても表示しないの意味すた
visual modeへのdropには対応していないとしてもまだ疑問があるのか?
インジケータってどういう使い方が基本なの? @iCustom やiMAとかで EAや他のインジに組み込む。 Avisual modeへのdropして、テクニカルを画面に映し出す。 バックテストなどで、@で利用できていた変数が、Aでも使えるんじゃね。 と思っていたら使えなかったり。 まあ、よく分かってないんだな。
>>105 visual modeを止めた時の話だと仮定すると、表示されないのは
タイムフレームが違っているからだろう。
うむ、質問の意図がまったくわからん。 とりあえず、質問は1つづつにしてくれないか。
そうだな。 あなたの作ったインジ[.mq4]は、iCustomで使っているのが多い? それとも、チャートにドロップしてテクニカルをみてる方が多い?
そんなこと聞いても解決しないだろw
一番いいのはこういうコードを書いたが思ったように動かない。
こう動くと思ったけど結果はこうだった、とか書くこと。
それに一般的な話は既に答えた
>>104
蒟蒻問答・・・
113 :
Trader@Live! :2013/11/25(月) 00:08:21.44 ID:hetc47CK
最初の
>>96 さんの質問がKu-ChartをStrategy Testerで表示したいと
あったので、Strategy Testerのビジュアルモードでインディケーターを
表示するときの話だと解釈して、
>>99 と
>>101 を書いていました。
>>100 さんの回答はEAの話とのことで、下記サンプルプログラムを動かし意味が分かりました。
確かに他通貨のデータが表示されました。
『[0]のデータが正しく更新されない』というのも、選択している通貨ペア以外
のClose[0]がtickごとの呼び出し時に更新されないという意味だったのですね。
理解出来ました。
ありがとうございます。
--- sampleEA.mq4 ---
string Close10Str(string sym)
{
string str =
sym +
" Close[1] = " + DoubleToStr(iClose(sym,Period(),1),MarketInfo(sym,MODE_DIGITS)) +
" Close[0] = " + DoubleToStr(iClose(sym,Period(),0),MarketInfo(sym,MODE_DIGITS));
return(str);
}
int start()
{
string msg =
Close10Str("EURUSD") + "\n" +
Close10Str("GBPUSD") + "\n" +
Close10Str("USDJPY") + "\n" +
Close10Str("EURJPY") + "\n" +
"";
Comment(msg);
return(0);
}
最初から、個別の問題の解決法を聞いているわけではないんだけどな。
>>104 が答えならOK。サンクス。
なんかよくわからんがそうなのか。
>>107 でも変数とか書いてたのでてっきりプログラムでの利用方法についての
質問だとおもってたんだが違ったのかw
話は変わるが、バックテストしててt/pになったポジの利益がどうも指値と
ずれることがたまにあっておかしいなと思ってたらこれはスワポが考慮され
てるのか。しかも週末は3倍ついてるとか、初めて気が付いたw
>>113 そう。[0]は常にその時点での最新(つまり、ヒストリーファイルに記録され
ている値そのまま)が取れてしまうので、[0]に依存しないEAであれば複数通
貨を利用したものテストすることができると思う。
これに気づかないと爆益EAを手に入れたつもりになる。
これはチャートに表示されたインジケーターをみてこのインジケーターで
爆益!と思うのと同じこと。
117 :
Trader@Live! :2013/11/28(木) 18:19:23.76 ID:OVNzyrcJ
豊嶋久道先生の近著「FXメタトレーダー4&5」では入門編・実践編では 対応していなかったカウントダウンでの問題(成行き注文関数中に損切り、 利確が入らないという問題)は新たにライブラリーを用意することで解決 されたようである。他人の作ったライブラリー関数をそのまま使うのは、潔し としない人がいるのは仕方がないが、そのこと以外にライブラリーを使うデメ リットあったら教えてほしい。
そのライブラリを理解する必要がある。 そのライブラリの作法に則る必要がある。 バグがあるかも知れない。 ウィルスが仕込まれてるかもしれない。
119 :
Trader@Live! :2013/11/28(木) 19:20:33.52 ID:OVNzyrcJ
>>118 なるほど、固有のリスクがあるということと汎用性が低下するということ
ですね。ありがとう。
>>116 これはClose[0]を使わずBid,Askを使った方が
よりリアルトレードに近いバックテスト結果を得られるということですか?
× if(iBands(NULL,0,20,2,0,PRICE_LOW,MODE_LOWER,0)>Close[0])...
○ if(iBands(NULL,0,20,2,0,PRICE_LOW,MODE_LOWER,0)>Ask)...
みたいに。
私もプログラムいじっててClose[0]の方が利益が高いことには気づいてたのですが。
違う。 テスターで動かす場合に他通貨の[0]が正しく取れないって話。
>>121 他通貨を参照する時の話ですか・・・。
自分の疑念と重なったようで少し見当違いしておりました。
ちなみに、Close[0]と同じなのはBidなのでAskを使うと 利益が変わるのはある話。
>>123 おお、本当ですね。
よくこれを知らずにプログラムしてたなという感じです。
勉強になりました。
自前のDLLでOrdersend,Ordercloseに代わるものを作成して 発注処理にかかる時間をより短くしたいのです
>>125 諦めなさい。
定期的にサーバと通信して、
ネゴシエーションを繰り返さないようにすれば、
発注処理に掛かる時間を減らせるらしいけどね。
レイテンシのことはよく考えるけど発注の内部ロジックまでは・・・。 多分普通のLANケーブルを1m単価1万円級の高級LANケーブルにするのと同じくらいの効果しか期待できない。
>>125 自前の処理を速くしてもブローカーの処理が問題になるのは
かつてのアービトラージで実証済み。
無駄な妄想と時間を他のものに使いなさいなw
MT4が出た当時はシングルコアCPUがメインでしたが、 今はマルチコアが普通です DLLでマルチコア対応することで高速化も可能? 特に指標時の応答性が改善されると思ってます
回答無視して次の質問てようやるわ・・・。
DLLでマルチコア対応すると、改善効果は高いでしょうね。 おそらく光の速さを超えるかもしれない。
132 :
Trader@Live! :2013/12/08(日) 09:19:15.28 ID:0zUBMd/5
まささんという方が作ったトラリピ用EAを使っているんだが、最近M2J社の特許 紛争に巻き込まれて、そのEAを公開しなくなった。また、少し進化させたもの を商材会社が販売していたが、それも中止に追い込まれている。 まささんに訊けないので、誰かおしえて! EAでは int start()直後にdoTraprepeatifDoneなる関数を使っているのだが、 その関数は、#includeのなかの stdlib.mqhで定義されていないのになぜ使える のか?また、その何行か後では、int doTrapRepeatifDoneとint変数扱いで 使われてもいる。このあたりの関連性分かる人教えて!
>>132 startのあるソースに記述されてんじゃないの?
134 :
Trader@Live! :2013/12/08(日) 13:34:25.24 ID:susFGWey
初心者スレから転載です。MT4にあるインジの件です ATRのカスタムインジケータについて教えてください。 if(counted_bars<1) for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0; の箇所があるのですが counted_barsが1より小さい条件はcounted_barsが0の時と考えて差し支えないですか 上記部分の意味を教えてください。0.0というのもピンとこないです。 よろしくお願い致します。
スクリプトでIsTradeAllowed()を実行すると、土日でトレードできない状態なのに、 Trueを返します。 以前、「エキスパートがトレードを許可されて、トレードのスレッドが占有されていない場合は、TRUE を返し、そうでない場合は、FALSE を返します。 という関数だから」と言う返信を受けました。 土日でエキスパートがトレードを許可されていないので、やはりFALSEだと思うのですが、 違うのでしょうか。
>>135 仕様を決めるのはMetaQuotesであってあなたではない
それだけのこと
>>135 土日でも注文だせないとこまるんじゃねーすか
>>136 どの部分を読んで私が仕様を決めたと感じたか分かりませんが、差し支えなければ、
私の質問に対するMetaQuotes社の仕様を教えて頂けないでしょうか。
>>137 いや土日で注文だせない事は確認済みです。
実際エキスパートの方でIsTradeAllowed()の戻り値を見ると、
しっかりFALSEを返します。
何故かスクリプトだとTrueを返すんですよね。
スクリプトだと常にTrueを返す仕様となっているんでしょうか。
>>138 以前回答を貰ったんでしょ。リファレンスは読んだのかい?
リファレンスも読まないでここで仕様にけち付けたってどうしようもない
MQLが気に入らなければ他を使えばいいし、気に入る関数を自分で実装してもいい
EAも条件が揃えば土日でもtrueを返すよ
>>137 最初にもらった解答が全てのように思うんだが・・・。
トレードのスレッドが占有されて無くてEAが取引を許可されてたら(ニコニコマークになってたら)true、それ以外はfalseって関数だろ。
「実際に注文が出せるか」はこの関数ではチェックしない。
>>142 重箱の隅を突付いて申し訳ない
リファレンスの the expert is allowed to trade の部分が曖昧で具体的に何を指すかは不明瞭
関係しそうなのはEA全体に影響するMT4のツール-オプション-エキスパートアドバイザーにある、
「エキスパートアドバイザーを有効にする」と「自動売買を許可する」ですが、
これはIsTradeAllowed( )には関係ないようです→ニコニコマークでは判断できない
個別チャートのエキスパートアドバイザー-設定...-全般にある「自動売買を許可する」のほうが
IsTradeAllowed( )に影響を与えるようです
サーバーとの接続の有無や取引時間内であることなどは関数の戻り値に影響を与えないという仕様なら、
質問者もそれを受け入れるしかないでしょう
それを妥当と考えるか理不尽と感じるかは勝手ですが
日経などCFDのチャートをしっかり表示してるブローカーってある? 色々ググって幾つもブローカー試したけど 一番マシなとこでもローソク足が飛び飛びでまともに表示されないし
>>141 リファレンスを読んだ上で質問させて頂いています。
MQLを気に入らないとは一言も言っておらず、何故スクリプトではFLASEを返すのかと言う点が
気になったので質問させて頂いた次第です。
間違えました。 何故スクリプトではTRUEを返すのかと言う点が気になったので、 質問させて頂いた次第です。
>>144 大変勉強になりました。
丁寧なご回答ありがとうございます。
最近MQ4のプログラミングを勉強し始めて、ネットを徘徊しているうちにポジションを一つしかとらないプログラムなら書けるようになりました。 今作成しているものはポジションが決済されるまでは次のポジションを取らないので 取引条件に本当に期待値があるのかどうか測りかねています。 そこでポジション数の制限を無くし、条件を満たした場合は全部ポジションを取っていくという方法をとりたいのですが その方法が良くわからないため書き込みさせていただきました よく以下のような記述を見かけるのですが、リファレンスを見ても部分的にしか理解できず困っています 分かる人には簡単すぎる内容だと思い、申し訳ないのですが以下の記述の意味を詳しく解説していただけないでしょうか? CurrentPosition=-1; for(cnt=0;cnt < OrdersTotal();cnt++){ OrderSelect(cnt,SELECT_BY_POS); if(OrderSymbol() == Symbol()) CurrentPosition=cnt; 宜しくお願いします。
CurrentPositionを-1で初期化しておいて、 for文で全部のポジションを呼び出す 現在と同じシンボルのポジションならcntをCurrentPositionに保存する ループ後にCurrentPositionが-1なら該当なし
151 :
Trader@Live! :2013/12/13(金) 12:38:07.35 ID:MJbQfs/T
”FXメタトレーダー実践”という本のフィルターシグナルでモーメンタムを 使おうと思っていますがコンパイルでエラーになってしまいます。どうしたらいいでしょうか。 教えてください(>_<) extern int MomPeriod = 20; // モメンタムの期間 // フィルター関数 int FilterSignal(int signal) { // モメンタムの計算 double mom1 = iMomentum(NULL, 0, MomPeriod, PRICE_CLOSE, 1); int ret = 0; if(signal > 0 && mom1 > 100) ret = signal; if(signal < 0 && mom1 < 100) ret = signal; return(ret); }
153 :
Trader@Live! :2013/12/13(金) 13:29:22.42 ID:MJbQfs/T
>>152 ↓のように表示されましたがどう直してよいかわかりません。教えていただけるとうれしいです。
Function "FilterSignal" is not referenced and will be removed from exp-file
訳
機能(「FilterSignal」)は参考文献として載せられず、exp-ファイルから取り除かれるだろう。
>>153 その関数は使われてないから消してもいいぞってことじゃないか
>>153 それとそれはエラーじゃないからコンパイルはできるよ
できないなら他のところにミスがあるんでしょう
156 :
Trader@Live! :2013/12/13(金) 14:56:56.10 ID:MJbQfs/T
>>154 何とか直してコンパイルできました。(^^ゞ
スタート関数に「エントリーシグナルのフィルター」が書いていませんでした。
157 :
Trader@Live! :2013/12/13(金) 14:59:54.77 ID:MJbQfs/T
>>154 何とか直してコンパイルできました。(^^ゞ
スタート関数に「エントリーシグナルのフィルター」が書いていませんでした。
このツール使って儲かってますか?
159 :
Trader@Live! :2013/12/15(日) 22:55:14.63 ID:ql9ypI+y
初心者だけどrsi20で買って70で決済、80で売って30で決済という簡単なシステムを作りたいんだけど これでいいですか?収益グラフが変になります。(下は主な部分のみです。) // 外部パラメータ extern double Lots = 0.1; extern int Slippage = 3; extern int RSIPeriod = 14; // RSIの期間 // エントリー関数 int EntrySignal(int magic) { // オープンポジションの計算 double pos = MyCurrentOrders(MY_OPENPOS, magic); // RSIの計算 double rsi1 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 1); int ret = 0; if(pos <= 0 && rsi1 < 20) ret = 1; if(pos >= 0 && rsi1 > 80) ret = -1; return(ret); } // エグジット関数 void ExitPosition(int magic) { // オープンポジションの計算 double pos = MyCurrentOrders(MY_OPENPOS, magic); // RSIの計算 double rsi1 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 1); int ret = 0; if(pos < 0 && rsi1 < 30) ret = 1; if(pos > 0 && rsi1 > 80) ret = -1; // オープンポジションの決済 if(ret != 0) MyOrderClose(Slippage, magic); }
160 :
Trader@Live! :2013/12/15(日) 22:56:33.56 ID:ql9ypI+y
追加 「メタトレーダー実践」という本のリスト4.2ジェネリックシステム2です
>>159 保有中のポジションのチェックがないからエントリーシグナル発生中にtickごとにポジションをとる。
162 :
Trader@Live! :2013/12/16(月) 16:33:30.50 ID:1oMeoB8G
>>161 説明があまりわかりません。初心者ですいません
どこを変えればよいですか?
その前にさ、「収益グラフが変になります。」じゃどう変なのか本人以外にはわからない。 どういうグラフを期待したのにどうなったのか説明したほうがいいと思うよ。
164 :
Trader@Live! :2013/12/16(月) 18:52:51.51 ID:/hsMge4P
収益グラフの何が変かは知らんけど 少なくとも >rsi20で買って70で決済 ってことなら、 ExitPosition(int magic) の中はこうすべきじゃね? × if(pos > 0 && rsi1 > 80) ret = -1; ○ if(pos > 0 && rsi1 > 70) ret = -1;
165 :
Trader@Live! :2013/12/17(火) 22:19:27.63 ID:vt/ZKYqJ
>>164 間違えました。
厳しい条件でエントリー、危なくなったら決済が私の投資スタンスなのでこのようなシステムを作ろうと思っています
// 外部パラメータ
extern double Lots = 0.1;
extern int Slippage = 3;
extern int RSIPeriod = 14; // RSIの期間
// エントリー関数
int EntrySignal(int magic)
{
// オープンポジションの計算
double pos = MyCurrentOrders(MY_OPENPOS, magic);
// RSIの計算
double rsi1 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 1);
int ret = 0;
if(pos <= 0 && rsi1 < 20) ret = 1;
if(pos >= 0 && rsi1 > 80) ret = -1;
return(ret);
}
// エグジット関数
void ExitPosition(int magic)
{
// オープンポジションの計算
double pos = MyCurrentOrders(MY_OPENPOS, magic);
// RSIの計算
double rsi1 = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, 1);
int ret = 0;
if(pos < 0 && rsi1 < 30) ret = 1;
if(pos > 0 && rsi1 > 70) ret = -1;
// オープンポジションの決済
if(ret != 0) MyOrderClose(Slippage, magic);
}
166 :
Trader@Live! :2013/12/17(火) 22:33:07.32 ID:vt/ZKYqJ
>>164 初歩的なミスでした。(^^ゞ
質問する側なのにすみません。
でもなんで
>>159 の時は収益グラフが変(売り買いが繰り返される)になったんだろ
retが1でも-1でもMyOrderClose(Slippage, magic)で呼んでるけど、意味あるのか微妙じゃない? MyOrderCloseの中で方向見てるならこの関数自体意味ないし、見てないなら多分これが原因だと思うけど
>>165 だから収益グラフの何が気に入らないのか書かないと、他人には全然わからないって。
一度もエントリしないのか、予想の100倍以上のポジションを持ってしまうのか。
それとも売買結果が大きなマイナスになるのが気に入らないのか。
イグジット条件がRSIの30と70だけじゃそのうち決済はされるでしょうけど、
その時にはとんでもないマイナスになっている可能性もかなりある。
ごめん 勘違い MyCurrentOrders(MY_OPENPOS, magic);が多分、買いでプラス、売りでマイナスを返すならエントリーもエグジットも問題ないか 自分で作ったのか、何かを参考にしたのかわからないけど、 多分売り買いが繰り返されるのはMyCurrentOrders()に問題がある
170 :
168 :2013/12/17(火) 22:59:55.10 ID:dQVoghUF
あれ?ちょっと微妙だけど解決したのかな? リロードしてなかったのでよけいなこと書いちゃったね。 解決したのならごめん。忘れて。
int counted_bars=IndicatorCounted(); int limit=Bars-counted_bars-1; このlimitは、足が増えた分、0から1ずつ増えるという意味でいいのですか? 最初の総数であるbarsから、カウントされていない数を引いたという意味だから、 インジが開始されてからカウントされた足の数を返すという意味でしょうか?
IndicatorCounted()は計算済みの本数だよ。 Barsが総数だからそれから引いた残りが計算しないといけない本数。
たとえばインジが起動したとき足の総数が10本あったとしたら、一番最初は動いているわけだから barsは10、indicatorCounted()は9で、1本足が増えたらbarsは11、ind〜は9のまま、limitは11−9−1=1という理解でいいですか?
IndicatorCounted()の最初は0だよ。
え@@;
過去5本分の陰線と陽線の差を5本だけ表示させる計算はこうでいいですか? int start() { int oo,i,k; int counted_bars=IndicatorCounted(); int limit = Bars - counted_bars -1; i=Bars-5+1; if(counted_bars>5-1) i=Bars-counted_bars-1; oo=0; k=i+5-1; while(k>=i) { if(Open[k]<Close[k]) { oo=oo+1; } else if(Open[k]>Close[k]) { oo=oo-1; } else if ((Open[k]==Close[k])) { oo=oo+0; } rr[k]=oo; SetIndexLabel(1,oo); k--; } return(0); }
MT4で、2年以上自作EAを動かしているものですが、 int Ticket; while(IsTradeContextBusy()) Sleep(10); Ticket = OrderSend(...); OrderSendが成功しても、Ticketに-1もしくは0が返されることはあるのでしょうか? 今回初めてこういった現象が発生したのですが、、、MT4はカウントダウン方式の業者です。
OrderSend()のエラーは-1だけ。GetLastError()の結果は? エラーならログに出てるはずだけど、わからないならここに貼れば。
Sleep()したらRefreshRates()呼ばないとエラーになる可能性はある。 その書きようだと今回の件とは関係ないんだろうけど。
エラー処理ルーチンは使ってないけど、操作履歴にエラーは出ていない。 実際、オーダーは通っているし、問題は、単ポジのEAなのに2ポジのオーダー が通ってしまっていること。Ticket>0(トレードプールにポジがある)の場合は、 エントリーできないように対策もしてあるんだけど。訳がわからない。
最初の質問と矛盾してないか。 こっちが訳がわからん。お前のエラー処理ルーチンなんて知らんよ... もう少し整理して質問しろ。 0は有効なticketなんだからTicket>0の場合てのがまずいんじゃないのか。 トレードプールてのもの何のことかわからんけど。
あぁ、プールってのはOederSelect()の対象か。 poolなんて表現してたんだな。
>>180 ログは2か所あるけど、両方見た?
というk、そもそもエラーじゃないんだろ。
どっちにしろ、そのEAにバグがある可能性が100%だと思う。
みんなww OrderSend()のログは残ってるだろうからそのあたりのログを 調べるとか、そのポジのマジック番号を調べて本当にそのEAの 管理下で複数ポジになったのかとかも調べてみたら。
>>185 操作履歴、エキスパートログともチェック済。マジックはチェックできないけど、
エントリーコメントではチェック済。同一口座で複数のEAを走らせているけど、同
時刻に他のEAはポジを持とうとしていない orz
どういうケースでそうなるのか調べてみたら。 その結果の質問が 「OrderSendが成功しても、Ticketに-1もしくは0が返されることはあるのでしょうか?」 であれば、そもそも-1ならエラーだし、0はあり得る、が答え。
>>187 確かに。
ターミナルウインドウの「取引」タブの「注文番号」には、0より大きい番号(チケット番号)が
表示されてたけれど、内部変数Ticketには、何らかの理由で、0が代入されたということから、再
考してみるわ、ありがとう。
質問させてください。 売買条件を満たした場合に ・過去10本以内の足で既にエントリーしていた場合は売買条件を満たしてもエントリーしない ・過去10本以内の足でポジションを取っていなかった場合はエントリーする という事をやりたいのですが、どういう記述をすればよいのかわかりません。 何か方法があれば教えていただければと思います。
こんな感じ。breakのコメントは保証はないけど外してもいいかな。 datetime t; for (int i = OrdersTotal() - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderOpenTime() > t) { t = OrderOpenTime(); //break; } } } if (t < Time[10]) { OrderSend(...); }
裁量や他のEAが出したオーダーは気にせず、そのEAがオーダーを出してなければ、というだけの条件でいいなら グローバル変数を1個用意しておいて、 ポジションを持ったときに注文時間かその足のopen時間を保存、 その後条件を満たしたときはその変数をTime[9]と比べる、とかでもできるよ。
189です。 回答ありがとうございます。 今出先なので帰ってからあらためて読みます ありがとうございます
>>187 以下のように訂正して、デモ口座で動かしてみるよ。参考になったよ。
//注文送信関数 <2013.12.19>訂正
bool OrderEntry(int type,double lots,int slippage,string comment,int magic)
{
bool OrderSended = false;
int Ticket;
if(type == OP_BUY)
{
while(IsTradeContextBusy()) Sleep(10);
Ticket = OrderSend(Symbol(),type,lots,MarketInfo(Symbol(),MODE_ASK),slippage,0,0,comment,magic,0,Blue);
}
if(type == OP_SELL)
{
while(IsTradeContextBusy()) Sleep(10);
Ticket = OrderSend(Symbol(),type,lots,MarketInfo(Symbol(),MODE_BID),slippage,0,0,comment,magic,0,Red);
}
if(Ticket >= 0)//関数OrderSendが成功しても極稀にチケット番号を返さない事象が発生する("0"のまま)様なので,if(Ticket > 0)を訂正<2013.12.19>
OrderSended = true;
if(Ticket == -1)//if(Ticket <= 0)を訂正<2013.12.19>
OrderSended = false;
if(OrderSended == true)
return(true);
if(OrderSended == false)
return(false);
}
増えた足の数を取得する方法はありますか?
>>190 さん
for文で直近のポジションのエントリー時刻 t を調べ、下段のif文で10本前の足の時刻と比較し
t が10本前の足よりも小さければ(1970年からの経過秒数が小さければ)ポジションを取る
という事ですね
>>191 さん
その条件で考えていました。
なので、教えて頂いた方法でも書いてみようと思います
初心者なので時間がかかりましたが、ようやく理解できました。
すごく助かりました。ありがとうございました。
>>193 多分別のところの問題があるんじゃないかなぁ。
>>194 void start()
{
static int lastBar;
int addedBar = Bar - lastBar;
Print("addedBar= ", addedBar);
lastBar = Bar;
}
1週間ばかし悩んでるのだが教えてくれ。 4つ前から1ずつ増やして斜線を延ばしたいのだが1つ前からずっと0になるんだどうすればいいですか int start() { int k=0; int counted_bars=IndicatorCounted(); int limit = Bars - counted_bars -1; int i=3; if(counted_bars>0) i=Bars-counted_bars-1; while(i>=0) { rr[i]=k; k++; i--; }
void start() { for (int i = 3; i >= 0; i--) { rr[i] = 3 - i; } }
>>198 走らせたらずっと最初の3本だけ斜線で後ろは全部ゼロになったっす。
うまくいったわけだな。
値が3で止まっており、「斜線を延ばしたい」という要件を満たしてないっす
4つ前から伸ばしてるだろ。
斜線が止まってるので延ばしてるとはいえないっす誰かタスケテ
ちゃんと説明しろ。 説明できないなら図で示せ。
../ ./ / ↑起動直後がこう(高さが3)で、足が増えるたびに .../ ../ ./ / ↑4,5,6〜と高さを増やしたいです。高さ=rr[i]みたいな図を描きたいですところが今まで試すとどうしても ....../ ...../ ____/ ↑高さが3で止まってしまいrr[4]以降が0なんですよね〜おねがいします。
誰か教えてくれよ〜頼むからさあ〜〜〜
>>205 initで
arrayinitialize(rr,0);
int time=0;
int start(){
if(time==Time[1]){return(0);}
tiime=Time[1];
int i;
for(i=100;i>0;i--){//シフト
rr[i]=rr[i-1];
}
rr[0]=rr[1]+1;
return(0);
}
直で書いたけどたぶんコンパイル通るかな
>>206 ほらよ。
void start()
{
static datetime t;
static int n = 3;
if (t != Time[0]) {
for (int i = 0; i <= n; i++) {
rr[i] = n - i;
}
t = Time[0];
n++;
}
}
>>207 >>209 中身がよくわからんがどうもありがとうございます!
4kプラスほどある本を買ってきて何とか自分でも作り上げました。動くかどうかは月曜待ち。
ところで足を指定した平均値は足が増えると値は変わるんですかね?
例えばiMA(NULL,0,MAperiod,0,MAmethod,PRICE_CLOSE,3)で、4つ目の足の終値の平均値を求める式は、
一つ足が増えたら増えた時点での4つ目の足の値を返すんですかね??
>>210 そう。iMA()とかの関数はすべて最新の足を0とした位置で指定する。
>>212 逆引きハンドブックみながらソースみると素人でも中身読めるようになりますか?
6
MT4で15分おきにタイマーが鳴るようなインジありませんでしょうか? PCから時間を取り正確には足の出来る前の14分から15分おきに29分44分という具合にアラートが鳴り 音も選べたらいいのですが、、 外為オプション専用タイマー で検索していただくと出てくると思うのですが ウラルが何故かはれないので、、 例えば上記のサイトにあるソフトは10分事になるのですが これは00分からの10分間隔でしか融通がききません。足ができる瞬間を確認でkません これの改良版みたいなものはありませんでしょうか よろしくお願いします
>>215 vector で 普通のタイマーソフトを探してみたらどう・・?
>>215 extern int second=25;//足更新25秒前に鳴らす
int time=0;
int start(){
if(Time[0]<=2*Time[1]-Time[2]-second||time==Time[1]){return(0);}
time=Time[1];
PlaySound("sound.wav");//MT4のSoundフォルダにファイルを用意
return(0);}
確かめてないけどこれでいけるんじゃね
>>217 今動作確認はできないけど、ちょっと違ったかも
extern int second=25;//足更新25秒前に鳴らす
int time=0;
int start(){
if(TimeCurrent()<=Time[0]+Time[1]-Time[2]-second||time==Time[1]){return(0);}
time=Time[1];
PlaySound("sound.wav");//MT4のSoundフォルダにファイルを用意
return(0);}
>>215 >>217 Neko殿はお優しいですね。
インジケータなら先頭に一行追加しておく必要有りです。
#property indicator_chart_window
>>216 ありがとうございます ソフトはどんな高スペPCでも全て遅れるんです
>>218 >>219 ありがとうございます
すぐに確認できませんが、、、なにかありましたら又教えて頂けたらありがたいです
>>221 ありがとうございます
試してみます!!
MT4で作るならスクリプトにするとかしないとね。 インジケーターだとtickがこなければ動かないので。
斜線何とか出来上がったよみんなありがとう。
>>213 2ヶ月前までCのfor文くらいしか分かってなかったけど作りたいインジがあったんで一所懸命勉強したわ。
標準インジを色々改良してくと中身が見えてきたりするよ!逆引きで理解が高まった感じっす
取りあえずその少年みたいな喋り方やめろ
226 :
Trader@Live! :2013/12/25(水) 08:36:01.72 ID:dTwJEbhg
チャートが動かんww
227 :
Trader@Live! :2013/12/25(水) 08:36:58.47 ID:MBk+Wwa8
>>215 私の場合は、情報表示用に常に開いている1分足チャートに
下のサンプルのようなインディケーター(M15_alerm.mq4)を入れてます。
( 関係ない機能を削除し15分足専用に纏めました。 )
Byouyomi_sound(Byouyomi.wav)は、60秒の音声wavファイルを自作し、
"バー確定1分前→30秒前→20秒前→10・9・8・7・6・5・4・3・2・1・0"
のように新しいバーが出来るまでカウントダウンするようにしています。
( Byouyomi_minutes分前に鳴り出します。 )
バー確定時には、M15_sound(M15_alerm.wav="15分足確定")が鳴ります。
tick通知が正確に来ないで微妙に秒がずれる場合もありますが、
カウントダウンとM15_soundの2つの音とバー確定の目視をするためか
それほど不便を感じたことはありません。
--- M15_alerm.mq4 ---
#property indicator_chart_window
extern string M15_sound = "M15_alerm.wav";
extern string Byouyomi_sound = "Byouyomi.wav";
extern int Byouyomi_minutes = 1;
datetime old_Time1 = 0;
int
init()
{
old_Time1 = 0;
return(0);
}
int
start()
{
if (Time[1] <= old_Time1) {
return(0);
}
old_Time1 = Time[1];
int day_minutes = TimeHour(Time[0]) * 60 + TimeMinute(Time[0]);
if (day_minutes % (15) == 0) {
PlaySound(M15_sound);
} else if ((day_minutes+(Byouyomi_minutes)) % (15) == 0) {
PlaySound(Byouyomi_sound);
}
return(0);
}
同じくチャートが動かん 初めてだ
クリスマス ブローカー依存だけど数少ないFXの祝日みたいなもの
そうなんですか。ググったらそんな感じの情報がたくさん; 教えて頂きありがとうございました
MT4動かないんだが
動かん、何時頃動き始めるのか教えて。
233 :
Trader@Live! :2013/12/26(木) 08:33:26.30 ID:2hROqREj
んー、mt4が無いとポジションが持てない
俺もMT4が無いと取引しにくい。いつになったら動くのか教えてエロい人。
海外のクリスマスが開けてから。
23日、24日は海外も通常営業なのに全く動かず そんで今日はまだ海外止まったままなのにドル円50PP近く動くとかww ホント、なに要因で誰のどこの国のポジションで価格動いてるのか意味不明だな クリスマスどうこう以前に、一部の指標イベント日を除いて11月から全然動かねえだろ そんでなんで今海外クリスマス空けてなくて、2時間ちょいで50PPも動いてんだこれ
流動性が低い時に、大きな注文が入ると カバー先銀行が妥当なプライスを出しにくくなって、大きく動いちゃうんだよ。
238 :
Trader@Live! :2013/12/26(木) 11:16:57.39 ID:NNMQpo3D
>>234 ご利用業者のホームページに記載されている年末年始のお知らせを見ると稼働状況が分かります。
OANDA Japan
12/26 07:00〜
01/01 〜03:00
01/02 07:00〜
FXTF
12/26 08:00〜
01/01 〜02:00
01/02 07:00〜
( 注意:FXTFは(火)〜(金)に10分間(06:55〜07:55)の利用停止時間帯があり )
Alpari Japan
12/26 16:00〜
01/01 〜03:00
01/02 07:00〜
Forex.com
12/26 20:00〜
01/01 〜06:00
01/02 07:00〜
GJ!
5年目なんだが・・毎年mt4動かねええと、焦って質問スレにきてる気がする クリスマスだからお休みっていう感覚は来年も忘れてるだろうな俺
クリスマスは祝日という習慣が日本に無いのが原因かもだねぇ・・
XPでMT5が動かなくなった
244 :
Trader@Live! :2013/12/26(木) 16:05:07.69 ID:2hROqREj
移動平均崩壊ww 今日は使えないな
MT5動き出した
246 :
Trader@Live! :2013/12/26(木) 17:45:15.66 ID:Zfibp5sk
cやphpなどでspritf("%.2f",val);こういう感じのことをやりたいのですが doubleの1をstringの"1.00"に変換するいい方法ありますか?
いまMT4起動したらデータが飛んでるw
>>246 DoubleToStr(val, 2)
249 :
Trader@Live! :2013/12/26(木) 17:56:17.09 ID:hU1YXy1t
fxcmでmt4のデモ口座つくったのですが、mt4がインストールできません。 フォルダだけできて中身が空です。 誰か分かる方いませんか?
インストロールから出直せばOK
251 :
Trader@Live! :2013/12/26(木) 17:58:12.16 ID:Zfibp5sk
12,3時間データ飛んでるな
エンジニアがクリスマス休暇のためまた飛ぶ恐れがあるとかないとか
質問するところが見当たらないからここに書き込むんだけど、VTトレーダーが使えないくなってるけど、対処法知ってる人いる?
MT4インストール出来ない〜〜〜〜 本家サーバー止まってるのかな???
>>256 自分もそれで困ってたんだけど
サイバーエージェントのmt4だけインストールできたよ。
258 :
Trader@Live! :2013/12/27(金) 10:53:33.14 ID:NqXXhdU6
質問させてください。 初心者用サイトなどで解説を見ていると int Ticket; if( kakoa > kakob && gennzaia <= gennzaib) { Ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, 0, "Sell", 0, 0, Blue); } のように、最初にint Ticket; と宣言してから、ポジションを取る時に Ticket = OrderSend() のように記述してあるのですが、なぜTicketを宣言するのか、その理由が分かりません。 OrderSend()だけでも注文は執行されますよね? int Ticket; と宣言せず if 内の処理で 『Ticket = OrderSend()』 の部分を 『OrderSend()』と書くのと何が違うのでしょうか? 以上です。よろしくお願いします。
OrderSendは注文が成功するとチケット番号を、失敗すると-1を返す。 つまりTicketにはチケット番号(192832みたいな数)や-1が入る。 注文が成功したかどうか確認して、if(Ticket<0)...として注文が失敗した時の処理を書いたり、チケット番号で注文やポジを管理するために変数に格納している。
>>260 即レスありがとうございます。
書いて下さった説明を読んでTicketを宣言する意味が理解できました。
ありがとうございました。
ある時間足だけ(15分足だけとか)斜めに引いたラインがやたらずれてることがあるんだけどこれはしゃーないの?
263 :
Trader@Live! :2013/12/30(月) 13:59:57.40 ID:Jx7EQrAn
>>262 ずれてる時間足(短期の時間足)よりも長期の時間足に合わせてラインを引いた場合は、
長期の時間足の開始時間の位置に設置されるから、それよりも短期の時間足で表示した場合は意図した位置よりずれる。
たとえば、ある4時間足の高値にラインの開始位置を設定した後に表示を15分足にすると、
実際の高値の位置が4時間のうちの2時間半だとしても、4時間足の開始時間の位置にラインが設置される。
それと、長期の時間足でラインを引いて、短期の時間足で表示してときにチャートのデータ不足で正しく表示されずにずれる。
とかかな。
そしてかなり遡ってスクロールさせたりしてたら直った なんだこれ チャートシフトの関係かな?
それ、M5の足が無かっただけじゃないのか。
267 :
Trader@Live! :2013/12/30(月) 21:36:44.42 ID:Jx7EQrAn
>>265 俺(2つ目に上げたの)や
>>266 が言ったように足不足だね。
ライン引くのに必要な期間の足を準備すればOK。
あ、誤字あった。
>短期の時間足で表示してときに
短期の時間足で表示したときに
あざっす 直せるんだねこれ
269 :
Trader@Live! :2013/12/31(火) 21:57:39.81 ID:jcGxq8I2
通貨の強弱をはかるインジケーター、k-chartとccfpをMT4に入れてみたの ですが、FXCMのMT4では正しく表示されますが、FOREXのMT4だと全く表示 されません。これはどうしてでしょうか? 何か対策はありますか?
>>269 通貨名が、 EURUSD から EURUSDFXF みたいに違うからでは?
インジケーターの勉強したいんだけど、辞典もしくは特集した本はないですか?
自己解決アマゾンで見つけた
274 :
Trader@Live! :2014/01/02(木) 22:40:24.59 ID:h7A5jbRg
>>273 FXメタトレーダーベストインジケータパック 2013って本
インジの勉強したいのに丁度よさそう。
ところでreturn(0)ってプログラムを終了するって意味でいい?
if(Volume[0]==0)return(0);
としたら足の開始時にだけ閉じるってことだよね?
return(0)はその返値を0としてその関数から戻る文。 ちょっと質問の意味がわからんが、Volume[]が0になるかどうかは サーバー次第なのでそういう書き方はよくないね。
0になるかどうかって、データが飛ぶこともあるのか。 ↓足の出現時に値をリセットしようとしてみたんだけど。 1tickごとの平均を求めようとしたんだけど動かないんだどこか変? double j=0; double b=0; int i=0; int start() { double a; int counted_bars=IndicatorCounted(); if(counted_bars<=0||Volume[0]==0){ b=Close[0]; j=0.0; i=0; } a=Close[0]-b; j=j+a; tck[0]=j/i; i++; b=Close[0]; }
足の開始はVolume=1じゃない でも1がないときもあるんだけどね
>>277 足の更新はVolumeじゃなくてバーの開始時間を使え
動かないのは tck[0]=j/i; のとこでゼロで除算してるからだ
開始時間がわからないからhigh[]=-low[]にしてみた。 ゼロ除算はif文で回避してみた。でもなんかおかしい。 double j=0; double b=0; int i=1; int start() { double a,j; int counted_bars=IndicatorCounted(); if(counted_bars<=0||High[0]==Low[0]){ b=Close[0]; j=0.0; i=0; } a=Close[0]-b; j=10*(j+a); if(i>0)tck[0]=j/i; i++; b=Close[0]; }
質問お願いします。 MT4でストップを設定すれば損切りは出来るかと思いますが、これを終値でストップを割ったら損切りするようなインジケータやスクリプトはないでしょうか?例えば100円を終値で割ったらその瞬間ストップ発動といった具合です。 わかりづらかったらすいません。 ググっても分からなかったので誰か教えて頂ければ幸いです。
>>281 できる。作るとしたらこんな仕様かな。
設定に必要なデータはストップロス値
スクリプトがドロップされたら入力画面が出てストップ値を設定する。
ドロップされた通貨ペアが少しでも両建てされていた場合は処理しないで終了する。
処理中の場合は右上に以下のように表示(例)する。
ストップロス:95.2(色は白)
ストップロスの条件を達成した場合は、赤字にする。
ロスカットの条件(ロング)
Low[0]<ロスカット値 安値がロスカット値を下回った場合
ロスカットの条件(ショート)
High[0]>ロスカット値 高値がロスカット値を上回った場合
次の足のOpen[0]で損切りする。
内部処理
ロスカット条件
time !=0 && Time[0]>ltime 次の足でロスカットする。
ロスカットが決定したときにTime[0]を変数ltimeに記録する。
先にif文の処理をしてからロスカットかどうか調べる
こうしないと、次の足でロスカット条件が成立していた場合、ltimeが書き換わり
ロスカットしなくなる。
さぁだれかコードをww
ロスカット条件 time != 0じゃなくてltime !=0
ひっでぇ仕様だな、しかし。 そもそも顧客の要望をまったく理解していないし。
早速ありがとうございます。 しかしプログラミング知識のない私には少し難易度が高いようです。教えて頂いたレスを元に少し調べてみます。 しかし裁量では終値ってかなり大事だと思うんですがネット上に転がってないところを見るとあまり需要ないのかな?
286 :
Trader@Live! :2014/01/03(金) 22:08:11.28 ID:Giras7Zp
>>281 スクリプトやインディケーターではなく、EAで実現するのが良いと思います。
下のEA281sample.mq4を、管理するポジションのUSDJPY×対象時間足のチャートに貼り付けて、
LowerPrice=100.0、LowerPriceBreakAction=1 とすれば、終値が100.0を割ったときに
ロングポジションが決済されると思います。
--- EA281sample.mq4 --- (改行多すぎエラーが出たので改行取りました)
extern int ManagementMagicCode = 0;
extern double UpperPrice = 0.0;
extern int UpperPriceBreakAction = 0; // 1:Close All Buy Positions, 2:Close All Sell Positions, 3:Close All Buy/Sell Positions
extern double LowerPrice = 0.0;
extern int LowerPriceBreakAction = 0;
extern int Slippage = 3;
datetime old_Time1 = 0;
int start() {
if (/* Volume[0] <= 1 || */ Time[1] > old_Time1) { // バーの始値か?
if (UpperPrice > 0.0 && Close[1] > UpperPrice) { CloseAllPositions(ManagementMagicCode, UpperPriceBreakAction); }
if (LowerPrice > 0.0 && Close[1] < LowerPrice) { CloseAllPositions(ManagementMagicCode, LowerPriceBreakAction); }
}
old_Time1 = Time[1];
return(0);
}
int CloseAllPositions(int magic, int closeMode /* 1:Buy, 2:Sell, 3:Buy&Sell */ ) {
int tCount = OrdersTotal();
int ret = 0;
for (int i = tCount - 1; i >= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) { ret = -1; continue; }
if (OrderSymbol() != Symbol()) { continue; }
if (magic != 0 && magic != OrderMagicNumber()) { continue; }
if (OrderType() == OP_BUY && (closeMode&1) == 1) {
RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage)) { ret = -1; }
}
if (OrderType() == OP_SELL && (closeMode&2) == 2) {
RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage)) { ret = -1; }
}
}
return(ret);
}
ロスカットの条件(ロング) Close[0]<ロスカット値 && Time[0]+(Period()*60)-n秒前 < TimeCurrent() ロスカットの条件(ショート) Close[0]>ロスカット値 && Time[0]+(Period()*60)-n秒前 < TimeCurrent() 以上の条件のときにロスカットする
皆様ありがとうございます!参考にしてやってみます。
ストラテジーテストをやっているところなのですが、 テストをやっても結果が真っ白になります。 ヒストリカルデータはちゃんと作りました。 何が原因なのでしょうか?
オリジナルEAを作ってテストをしているのですが、 バックテストというのが全く上手くできません。 結果が真っ白になります。 MT4にはじめから入っている「MACDナントカ」というのだけが 結果が出るのですが、なぜですか? ネットで拾ったモノでテストしても 結果が真っ白になります。 どなたか教えてください。
まずEAをどこかに アップロードしなはれ
292 :
290 :2014/01/07(火) 02:18:34.50 ID:eX4UO7cZ
>>291 まずバックテストで真っ白になる原因を教えてください。
まず、ログにはなんて出てるんだよ。
売買してないってことでは? 画面キャプチャをうp希望
295 :
290 :2014/01/07(火) 03:02:48.85 ID:eX4UO7cZ
>>293 バックテストのログなんか出るんですか?
ターミナルの操作履歴には
インジケータが動いたというログしかありません。
>>294
296 :
290 :2014/01/07(火) 03:11:26.08 ID:eX4UO7cZ
「MACD sample」っていう初めから入ってるEAは ちゃんと結果が出るのに ネットで落としたやつとかでテストすると 全部真っ白になるのはなぜなのでしょうか?
>>292 そのために上げろといってるのだが…
ま、がんばって。
298 :
290 :2014/01/07(火) 04:35:24.38 ID:eX4UO7cZ
>>298 キーワードが付いててダウンロードできないんだが?
なんで、 ex4 ファイルだけなんだよ^^;
>>300 まず、お前が上げたファイルはex4ファイルで、これは製作者以外中身を確認できないファイルな。
だからここに上げて誰も回答できない。
で、真っ白になるっていうのは
サンプルのMACDでテストすると折れ線グラフで結果が表示されるのに、
そのEAでは折れ線グラフが表示されずに真っ白な結果になるって事でいいな?
その原因は恐らく取引が行われていないから。取引が行われない理由は、
■1テスト方法をミスしているか、■2期間内に売買サインが出ていないから、■3もしくはプログラム自体にミスがあるか。
□1、MACDサンプルではテストできているみたいなのでテスト方法は問題ないだろう(一応、テスト期間や通貨ペアその他の項目を見直せ)
□2、ここでは回答できない
□3、ここでは回答できない
>>290 で
>オリジナルEAを作ってテストをしているのですが
と言っているが、お前が作ったEAじゃないよな?どこからかダウンロードしたEAだろ?
ならば動かない原因はそのEAを公開してる奴に質問しろ。
なぜならお前がアップロードしたのは、製作者以外中身を見れないものだから。
もし、拡張子が「.ex4」ではなくて「.mq4」のファイルがあるならアップし直せ。mq4ファイルなら中身を確認する事ができるから。
>>302 mq4をあぷしました。
その通り、このEAだけ真っ白になります。
全くのオリジナルなんですが。
>>303 「最適化結果」タブで右クリックして「マイナスの結果を表示しない」がチェックされていればチェックを外す
こういうこと?
うちのGCI止まっててデモアカウントも作れないんですがみなさんどうですか?
306 :
Trader@Live! :2014/01/08(水) 10:05:08.92 ID:usHqzdp6
GCIがこわれた? デモ口座できない
>>305 同じです
ブロコみたいに潰れたのかなw
liveアカウント申請したけど運転免許証 だけでよかっただろうか、パスポートも いるように見えたけど。 言われたら送ろう。 ダウ、ナス、ハンセン、米10年、金、原油、 が見たい…。
GCI、元に戻ったようですね、 駄目な間はFXProを使っていました。 ダウ先と日経先物のコードが違うし、10年T先物もないけど、とりあえずの避難先にはよいと思います。
310 :
Trader@Live! :2014/01/08(水) 19:24:06.53 ID:usHqzdp6
だけど ローソク足が大部分抜けてる
1tickごとの値幅平均を示すインジをやっと作り上げた。あと上下どちらに振れたかのインジもつくった。 組み合わせるとなかなか面白い。
雑談は他スレでどうぞ
314 :
Trader@Live! :2014/01/12(日) 01:39:58.45 ID:lZVWXMPO
なんかインジ作りたいんだけどアイディアくれ
とりあえずMTF化しまくれば
>>314 日本語のニュースを表示するインジを作ってください
ここ超えたら転換するっていうボーダーラインでも作ってみようかな
metalang.exeがたまに127を返して終わるんだけどなんだろこれ。
>>318 ローソクのhighやlowの位置で判定しようかなあ。一定期間の値動きの幅とか。
EA開発研究スレでやれば?
なんでもMTF化はできると思うけど、あんまメリットがわからんのよね。 ボーダーラインは2種類作ったけど平均線使ったやつのほうが若干反応が早かった。
323 :
Trader@Live! :2014/01/17(金) 20:30:12.51 ID:Ls+pfiXY
Liquidity Connection というのはどこのブローカーもしくはサーバーでしょうか?
325 :
Trader@Live! :2014/01/18(土) 04:04:16.55 ID:smj4KXc1
何故MT5は普及しないの?(´・ω・`)
普及したところで君には無関係w
>>325 > むかしむかし、とある日本の証券会社が MT5の魅力にいち早く気づきました。
> その証券会社は、日本初の MT5-FX採用業者を目指して、
> いっぱいいっぱい MT5 のテストをしました。
>
> 社内テストをし、デモ口座を公開し、遂に、モニターユーザによる
> 実口座での運用テストまでこぎつけました。
>
> そして1年が過ぎた頃、、突然、大証FXの廃止計画が発表されました。
> この瞬間、MT5を大証FXに対応させるための全ての労力と時間が水の泡と消えました。
>
> 困った証券会社は、店頭FXを行う資格をとり、関連会社から MT4 を譲渡してもらいました。
> そして無事、 MT4 で FX業務を続けることができましたとさ。 めでたしめでたし
こんな話しもあるからな。導入には時間が掛かるんだよ。
MT5はチャート見るの専用に使ってる 軽いし良いよ
329 :
Trader@Live! :2014/01/18(土) 18:47:43.68 ID:DkOjR2no
>>327 >
>>325 > > むかしむかし、とある日本の証券会社が MT5の魅力にいち早く気づきました。
> > その証券会社は、日本初の MT5-FX採用業者を目指して、
> > いっぱいいっぱい MT5 のテストをしました。
> >
> > 社内テストをし、デモ口座を公開し、遂に、モニターユーザによる
> > 実口座での運用テストまでこぎつけました。
> >
> > そして1年が過ぎた頃、、突然、大証FXの廃止計画が発表されました。
> > この瞬間、MT5を大証FXに対応させるための全ての労力と時間が水の泡と消えました。
> >
> > 困った証券会社は、店頭FXを行う資格をとり、関連会社から MT4 を譲渡してもらいました。
> > そして無事、 MT4 で FX業務を続けることができましたとさ。 めでたしめでたし
>
>
> こんな話しもあるからな。導入には時間が掛かるんだよ。
東証FXがMT5に対応すればいいだけの話だろうが。
330 :
だるまたんJP_FromTheBarrel ◆damaru5/aw :2014/01/19(日) 00:04:05.73 ID:wc7OWB6M
雲(先行スパン1と2の間)を塗り潰さないMTF一目均衡表を作ってくらはいm(*^□^*)m
>>324 ○重複質問やくだらない質問でも優しく誘導してあげるか
さっさと回答して次の質問に行きましょう。
○説教、雑談は控えるように。
>>331 わざわざスレまで貼って優しく優しく誘導入ってるのになんで説教されたと思ったの?
>>332 「ゆとりはこっち行け」
これがダメだったとか?w
334 :
Trader@Live! :2014/01/22(水) 02:14:37.07 ID:0gw6Y9gV
MT4で米10年債のチャートの出し方教えてください
335 :
だるまたんJP_FromTheBarrel ◆damaru5/aw :2014/01/22(水) 03:58:51.38 ID:ZEPGvAWg
336 :
Trader@Live! :2014/01/22(水) 04:46:25.69 ID:Nj0wypQQ
iPhoneのmt4だとポジの一部決済ができるんだけど。pcの方は一度に10枚ポジったら一度に10枚全部決済しかないの? 一部決済が見当たらない。
ごめん、アイフォの下りは忘れてくれ・・・。 当然PCも一部決済は可能だ。 建玉ダブルクリック→「注文の発注」画面→数量に決済したい数量を入力→成行決済。
極論するとチャートツールって 大人の投資家連中が飯のタネとなる養分を釣るために考案された ただのエサでしょ?
>>339 極論すると、FXそれ自体が
大人の銀行や証券会社が飯のタネとなる養分を釣るために考案した
ただのエサなんですよ
付属のメタエディタで書いているのですが、例えば部分的に int A = 2 ; int B = 3 ; int X = 2 * 3 ; print ( X ) ; というコードを書いた後に、想定通りの動きをしているかどうかのテスト手順として ・まずはtest.mq4という部分動作テスト用に作ってあるファイルにコードをコピペ ・コンパイルする ・テスターの[エキスパートアドバイザ]からコンパイルしたtest.mp4を選択してスタートボタンでテストスタート ・[操作履歴タブ]を選択して、プリントされている(X)の値を確認する という手順を踏んで確認しています しかしこの方法だと手間がかかるため、もう少し手間がかからない方法があるのでは、と思っています。 みなさんは部分的に動作テストをする場合、どういう手順を踏んでいますか? コンパイルしてからもっと簡単な手順で動作テストする方法があれば教えてください
それでできるテストなら関数にしておいてinit()から呼べばいいのでは?
345 :
Trader@Live! :2014/01/23(木) 05:02:01.64 ID:Tmd2vd6L
>>338 さんくす
今までやり方わからなくて困ってたから助かった
「VQ2」の別ウインドウ表示されるのを一時的に全チャートで停止させたいんですが、 分析ツールから削除する以外に方法はないでしょうか?
VQ2.ex4 を一度削除して、MT4再起動するとか。
>>336 決済注文で抜きたいロット数入力して決済する
チャートのログが溜まり過ぎて起動が遅くなったためヒストリーの中を全部消したら 動作が不安定になり再インストール チャートの組やインジ点プレは保持されるので組表示させたらCPU100%張り付きで起動不可 しょうがないので1つ1つチャートを表示させてインジテンプレを当てる 最後の1つになって節目の価格にライン引いたらまた100%張り付き発生 もう1回やり直し みなさんどうしてます?
それはどれかのインジが無限ループかそれに近い状態になってるだけでは。 ヒストリーが多くて困ることはないからなぁ。
>>349 config/terminal.ini を消去
アリ、こんどやってみる
vps上でインジのサインでメール発信させて携帯(iPhone)で受け取る設定にして順調にメール受信出来てたのだけど、 MT4がフリーズしてどうしようもなくなったのでフォルダを削除して再インストールしたらメール届くのが遅くなってしまいました。 何度インストールし直しても同じで 1時間以上経ってやっと受信する状態で困ってます。 フリーズしたMT4のフォルダはゴミ箱からも完全削除しました。 どうすれば直りますか?
>>353 メールを大量に送信してしまったのなら意図的に遅延してるのかもしれません。
メールの送信時間と受信時間を比較してください。
方法
1.送信元のSMTPサーバを変更する または、受信サーバーを変更する
>>353 MTAはローカルのを使ってる?
外部サーバ使ってるならローカルのを使ってみたら
356 :
Trader@Live! :2014/01/25(土) 14:28:51.24 ID:bsO1Hvjt
質問だけど mt4で自動的に取引可能な最大ロット数で取引するにはどうしたらいいの? いつもいちいちロット数の数字を設定してるんだけど
サブウインドウ1と3の表示位置を入れ替えるとかはどうやればいいんでしょうか?
>>358 一度MT4を終了して、チャート設定ファイルを書き換える
360 :
Trader@Live! :2014/01/28(火) 21:54:52.86 ID:URfBUqJj
>>360 どんなスケジュールにも遅れはつきものだ。
>>360 最新のMQL5リファレンス見てたんだが、昔見た時よりスゲー拡張されてて
殆どフルセットのC++クラスが使えるようになってる。
MT4ストアみたいなのが作られるね 多重起動が出来なくなりそう
MT4 build 574の変更点が大規模で笑ってしまったよ フォルダ構成も言語仕様もごっそり変わってる if文の挙動変えてしまって大丈夫なのか? ソース上書きしたらUTF-16にされてるしw
旧runtimeを使うから互換性あるって書いてるけど、#property strict て書かなければそうなるのかなぁ。詳細の方にはそういうの書いてないから 心配。
インジケーターからある指定した日付を 自動的にチャートを動かして表示する方法ってありますか?
おはようございます。初歩的な質問ですみませんが //------------------------- int count = 0; int start() { print(count); //count = 3; retun(0); } //-------------------------- 上の処理を実行すると、print(count) で[0]が表示されますが 途中コメントアウトしてる部分のコメントアウトを外すとprint(count)でいきなり[3]が表示されます [count = 3;]よりも[print(count);]の方が上にあるので、最初の一度だけはcount[0]になると思っていました。 最初からcount[3]になる理由が分からないので解説していただけるとありがたいです。 お願いします。
>>367 スクリプトで実行するとゼロだねぇ
その現象が起きたのは インジ?
>>368 スクリプトで試すと0でしたね。
>>367 の現象はエキスパートアドバイザーで書いたものです。
すみません、新規ファイルの作成からやりなおしてもう一度試したら今度はちゃんと0になりました。 他の部分に記述ミスがあったみたいです。 本当に申し訳ありません…
以下が実際のコードですが、やはり
>>267 の状況になります
//--------------------------------
int count = 0;
int start()
{
print(count);
if (count < iBars(NULL, PERIOD_D1))
{
Print("TUUKATEST");
//(計算処理)
count = iBars(NULL, PERIOD_D1); //これで日足が更新された最初だけifを通貨すると考えてた
}
/*
注文処理
*/
retun(0);
}
//----------------------------------
int startのすぐ下に[print(count);] を置いていますが、print(count)の結果は0ではなく1002と表示されます
ですがif文の中にあるprint("TUUKATEST")は表示されません。
if文は通っていないのにcountにはiBarsで取得した値が入った状態でprintで表示されているので
そこが疑問です。
こういう時は何か凄く初歩的な間違いを犯している事が多い気がしますが…
ちなみに自分がやりたい事は、日足が新しく出来た時だけ計算しなおすという処理ですが
それよりも、なぜこうなるのかが分からずハマってしまっています><
計算処理の中にも決済処理の中にもcountは一つも存在しません。 一か所インデントがおかったので、ズレを訂正します。、連投になってしまい申し訳ありません int count = 0; int start() { print(count); if (count < iBars(NULL, PERIOD_D1)) { Print("TUUKATEST"); //(計算処理) count = iBars(NULL, PERIOD_D1); //これで日足が更新された最初だけifを通貨すると考えてた } /* 注文処理 */ retun(0); }
>>371 EAだと、startはtickごとに呼ばれるから、グローバル変数は前回のstartの値になるよ。
int count = 0;
int bars = 0;
とでもして、 iBars の値を bars に入れて、countはstartごとにインクリメントするようにして、
countとstartを両方Printするようにしてみたら動きがわかるんじゃないかな?
> int startのすぐ下に[print(count);] を置いていますが、print(count)の結果は0ではなく1002と表示されます
> ですがif文の中にあるprint("TUUKATEST")は表示されません。
同じ日足で2回目以降のstartならそれで正常だから。
>>372 int startCounter =0;
int start()
{
startCounter++;
Print("startCounter = ",startCounter);
Print(count);
//以下略
}
こんなコードを追加してみて、 start が何回呼ばれているか確認してみたら?
startCounterが1 の時に、 count がいくつなのか知りたい。
>>374 書いてくださった記述を追加してテストした結果
startCounter = 181858
から始まり1ずつ増えていきました。
>>373 今自分でもテストを繰り返した結果ある程度分かってきましたが、
int barsも追加して動きを見てみます。
レスありがとうございました。
一応自分のやりたかった事は計算だけなので、とりあえずはvolumeを使ってみようと思います。
それと連投してしまいすみませんでした。
>>375 >
>>374 > 書いてくださった記述を追加してテストした結果
> startCounter = 181858
> から始まり1ずつ増えていきました。
つまり、自分が1回めの実行と思っていたのは実は、181858回目の実行だったということだね。
興味深い。。
>>367 それ、メッセージに表示されてないだけよ。
ログファイルを直接見てみ、きっと出てるから。
>>377 ありがとうございます。
さっき帰ってきて確認したら、確かに全部出ていました。
自分は[操作履歴]タブしか見ていませんでした。
[操作履歴]ではほんの一部分しか表示されない事を知りませんでした。
startCounterがなぜか181858から始まっていたり
最初に書き込んだ質問も本当は正しく動作していたのに、自分の確認方法が間違っていただけという事でした。
お騒がせして本当にすみませんでした
マルチすんな、カス。
381 :
Trader@Live! :2014/02/04(火) 21:54:06.19 ID:1IZPtK5t
build600は人柱になった方がいいか?
update(→build600)したら、日本語表示の場合、画面の左上が ‘表示(V)’が‘ファイル(F)’になってしまい ‘ファイル(F)’が2つになるバグが出てしまった.。orz...
再起動したらbuild600になってインジの表示がおかしくなったんだが 自動アップデートなんてあったの?
>>382 ファイル(F)がふたつだね。
「ALt+F」を2回押せば、「表示」側のファイル(F)を選択できるよ。
紛らわしいから修正してほしいけど。
あと、MetaEditorの2バイト文字のカーソルずれも。
>>383 mqlの仕様を大幅に変えたみたいね。
一応、互換性を保てるようにしたけど、
DLLなどを使ってるようなのは正常に動作しない可能性があるから、
手を加える必要があるみたいだね。
>>383 メタトレーダー起動中にバックグラウンドで、
アップデートデータをダウンロードしてて、
次回起動時に自動アップデートされるみたい。
UACがONの場合は確認のダイアログが表示されるけども。
builld 6.00 フォルダ構成が全く変わってるし、 以前のインジケータをそれっぽいところに入れても動かない(フォルダ間違って入れてるかもしれないが) 誰かいれるフォルダを教えてくれ。
ダウンロードした記憶が無いけどアップデートされてるね
C:\Users\<ユーザー名>\AppData\Roaming\MetaQuotes\Terminal に変わってるね
>>386 MetaEditorを起動して左端のツリーからIndicatorsを右クリックしてPropertiesを選ぶと場所が分かるよ
これ、EAが動かなくなるとかある?
ある
こんにちは。超最初の質問ですみません。 以前デモ口座申請で、ちゃんと円でできてましたが、 何度円にしても、ドルなどほかの通貨でとなってしまいます。 誰か解決法を教えていただけませんか?
他の業者にしなさいな
インジ作ってコンパイル成功しても一覧に表示されない。 event handlers of the expert advisorってなんだ?
EAのイベントハンドラってことでしょ。 EAに必要な関数が無いとか・・?
build600はスピードも速くなってるて書いてあるけどどのくらい速く なったんだろか。
398 :
Trader@Live! :2014/02/06(木) 02:00:55.22 ID:6tdodW+X
C:\Users\xxx\AppData\Roaming\MetaQuotes\Terminal\Community\Market\Images\1 ここに画像ファイルがあるんだけど何すかこれ
399 :
タオパイパイ ◆ILoveSex.o :2014/02/06(木) 02:05:38.14 ID:oyhVWlXA
>>394 インジ作ったのか?
EA作ったのか?
インジ作ったのにEAになってないか?
メタエディタ新規作成の時最初にファイル形式見たいのを選ぶとき
エキスパンスアドバイザーで作ってないか?
インジならインジケーターにチェック入れないと出ないよ
400 :
Trader@Live! :2014/02/06(木) 02:32:43.80 ID:QWe0ECeP
Build600は、WindowsXPでは動かないね・・・ 起動時にエラーが出て、起動できない。
>>400 OSのせいじゃなくて、CPUのせいだと思う。PenIIIマシンだったりしない?
http://forum.mql4.com/60555 の
> Terminal: All client terminal components require support for SSE2 instruction set by PC's processor for efficient operation and high performance.
がPen4より古いCPUのマシンでBuild600が動かない理由。
>>399 new>>welcome to mq4 wizard>>custom indicator>>name入力(indicators\は消した)>>
あ。indicators\を消さないでやったら作れた。
404 :
Trader@Live! :2014/02/07(金) 03:43:14.76 ID:ae35lif1
>>402 >
>>400 > OSのせいじゃなくて、CPUのせいだと思う。PenIIIマシンだったりしない?
>
http://forum.mql4.com/60555 > の
> > Terminal: All client terminal components require support for SSE2 instruction set by PC's processor for efficient operation and high performance.
> がPen4より古いCPUのマシンでBuild600が動かない理由。
ビンゴ!
ありがとう。
405 :
Trader@Live! :2014/02/07(金) 11:06:59.48 ID:NE9QURbm
やっぱアップデートだったのか ウイルスにやられたのかと思ったわw 使えなくなってるインジあるね 困った・・・
406 :
Trader@Live! :2014/02/07(金) 19:07:01.28 ID:7jBKg6UJ
質問です。 MT4で定型チャートを保存できないのですが、 どうすればいいのでしょうか? 何度やっても定型チャートに保存しても表示されません。 ちなみにWindows8です。
いやー参った、注文とポジ管理のEasyOrderっての使ってたんだが、このうpデートで使えなくなってもーた 悲しいことにEx4ファイルを認識してくれないみたいなんだ・・ これが便利だから分割でポジって一気に決済とかできてたのに・・
>>406 定形チャートのファイルをテキストエディタで開くと
ちゃんとデータ書かれてる?
410 :
Trader@Live :2014/02/08(土) 09:00:58.77 ID:QYt4o4M3
>>409 多分、ないと思います。
てゆうか、どうやっていいやら。
普通に定型チャートを出したいだけなんですが。
以前はできてたのに。
imomentumの計算って当日値からx日前値を引いた数? MT4だと当日値/x日前値*100になってるらしいんだけど?
412 :
Trader@Live! :2014/02/08(土) 17:11:40.20 ID:zuK64y+J
インジ作ろうとしたら予測機能が落ちててやりづらい
414 :
タオパイパイ ◆ILoveSex2k :2014/02/08(土) 20:18:07.34 ID:H3ZEY2hP
EA作ろうと思ってメタエディタいじってたら 偶然ウィルス作ってしまって セキュリティソフトが反応して MT4が開けなくなったんですけど こんなことってあるんですか?
ない。
416 :
タオパイパイ ◆ILoveSex2k :2014/02/08(土) 21:00:56.64 ID:H3ZEY2hP
まぁ世界的な新発見は偶然の産物が多いらしいからな
417 :
Trader@Live! :2014/02/09(日) 15:33:53.25 ID:XXeEUSNm
アップデートしたらFileWriteできなくなったお。 嗚呼・・・
418 :
Trader@Live! :2014/02/09(日) 15:39:17.57 ID:XXeEUSNm
EAのエラーでlogsフォルダの中のlogが50GBくらいになった時があるお。
419 :
Trader@Live! :2014/02/09(日) 17:44:57.12 ID:XXeEUSNm
ダメらったれすお。 FileOpenしてcsvファイルにデータを保存することができなくなったので、 MetaTraderのフォルダごと復元しましたお。 当分このままでやりますお。
420 :
Trader@Live! :2014/02/09(日) 19:35:06.99 ID:42M4xeYJ
EAつくる君とか、EAクリエイターを使ってプログラムを書くのは、 このスレ的には失笑者ですか? 移動平均線を使ったEA位だったら、ソフト買う金で本を買って勉強した方がいいのかな…?
421 :
Trader@Live! :2014/02/09(日) 19:35:35.06 ID:42M4xeYJ
EAつくる君とか、EAクリエイターを使ってプログラムを書くのは、 このスレ的には失笑者ですか? 移動平均線を使ったEA位だったら、ソフト買う金で本を買って勉強した方がいいのかな…?
422 :
タオパイパイ ◆ILoveSex2k :2014/02/09(日) 20:08:05.36 ID:aAp0jeCt
そんな簡単なのならググったらいろんなサイトでわかりやすく説明されてる 俺はそれ読みながら作ってる
423 :
Trader@Live! :2014/02/09(日) 21:07:52.46 ID:XXeEUSNm
本を買えばそこにアドレスが載ってるから、そのアドレスにあるEAをそのまま使うかちょっと改変して使うだけでいいのでないですかお? ぽれなんかEquityがBalanceの80%になったらクローズする。とかくらいしか使ってないけどお。 おっとアジアぷらぷらの時間ですお。
たった60行のインジ見ても何が書いてあるのか意味わかんねwww
425 :
Trader@Live! :2014/02/09(日) 22:03:06.66 ID:RkXhECZA
build600になってい--な(らな)い--業者ってある? とりあえずそこで作業しようかと・・・
674 名前:タオパイパイ ◆aZPandora. [sage] 投稿日:2012/07/25(水) 23:37:30.66 ID:6GHz5USC [32/34]
>>672 今巷で話題のタオパインジ
692 名前:Trader@Live![sage] 投稿日:2012/07/25(水) 23:40:46.10 ID:PcGgzIh3 [26/27]
>>674 タオパインジ
ぐぐったらわろたw
ユロドルのすれしかないw
700 名前:Trader@Live![sage] 投稿日:2012/07/25(水) 23:42:49.12 ID:nxU7MGvc [14/14]
>>692 最初はタオパイEAつってて
みんなに「お前EAの意味わかってねーだろ」って突っ込まれて
タオパインジって名前変えたのはワロタ
427 :
タオパイパイ ◆ILoveSex2k :2014/02/09(日) 22:55:52.45 ID:aAp0jeCt
ダメな人間は何をやってもダメ 生活保護の金でトレードするようでは虫けら以下
タオパイ、古巣にもどれw
430 :
Trader@Live! :2014/02/09(日) 23:55:35.82 ID:RkXhECZA
>>427 おお、さんくす
業者比較した時の(その業者の)mt4が残ってたのでなんとかなりそう
旧ビルドのフォルダ、普通バックアップとるだろ
432 :
Trader@Live! :2014/02/10(月) 09:08:18.30 ID:izYo2TBE
もう一つのスレが荒れているから、こちらで訊くけど; 今朝、FXCM Japan のMT4立ち上げたらbuild604に更新された。 どこが変わったのかわかる人教えて?
>>432 MQLの文法とか、諸々の動作不良とか挙げればきりがないよ^^;
435 :
Trader@Live! :2014/02/10(月) 11:40:15.52 ID:izYo2TBE
>>434 これって、600と同じものではないの?
動作不良が直されたのかな。トレンドマイクロが誤認識しなくなるとか。
>>435 あ、 600 -> 604の変更点ってことね。509から60xへの変更点だと思っちゃった。
http://forum.mql4.com/60694 に603のは書いてるけど、あんまり参考にならないかな。。。
> 5. Fixed errors reported on the forum and in crash logs.
が手抜きすぎて。
Unicode 形式のソースファイル、UTF-16になったのほんと勘弁してほしい。 string の内部エンコードと合わせたかったんだろうけど。 バージョン管理ツールとかが通常バイナリと認識してしまって使いづらいわ。 設定でなんとかならないところもあるし。。。
metaのフォルダの下を直接管理してんの?MT4複数だと大変じゃね? ソースは一元管理で各MT4にコピーして使ってるので特に問題なし。
しかし、build600系が入ると面倒だな。 #ifdefがちゃんと使えればいいのに...
>>438 ううん、別のディレクトリで管理してる。
日本語含む場合、UTF-16じゃないとだめなんだろうなと勝手に思い込んでたんだけど、
Shift_JISでも、きちんとMT4内部でUTF-16の文字列に変換してくれるのね。
利便性を考えたらShift_JISで管理したほうがよいかー。。
Shift_JISをUTF-16に変換してくれるなら、なおさらソースファイルはUTF-8にしてほしかったと思うところ。。。
mt4更新したらしょっちゅうファン廻るようになってウゼェええええええ オレだけか?????
>>440 元々Shift JISだってちゃんとサポートされてるわけじゃないから
日本語はほとんど使ってないや。
日本語のせいでコンパイルできないとか、あまり質問が出ないのが不思議w
今まではチャート・インジと同時に足取得 今はチャート・インジを表示させてから足取得
AMD A4-3305M APU +メモリ4GB
447 :
Trader@Live! :2014/02/10(月) 21:13:08.44 ID:izYo2TBE
Windows 8もVistaもbuid600や604に更新されたが、Wndows7のみは509のまま だった。突如本日から7にも一斉の更新通知が来た。当面509のまま使うこと にするが、機種によって更新のアイミングが異なるの?
業者によるつってんだろ。
449 :
Trader@Live! :2014/02/10(月) 22:29:16.10 ID:izYo2TBE
>>448 違うよ。
同じFXCM Japanでも違うんだよ。
他の会社も全く同じなんで???なんだよ。
ヒストリカルデータ去年のから たった1年分入れようとしてもフリーズする。 旧バージョンも同じことが有り今built600入れたけど それも駄目。Windows7 64bitだけど解決法無いでしょうか?
>>449 そりゃ業者も複数サーバー運用してたら違うだろ。
>>450 build600からバイナリ互換ないでしょ。
csvのインポートは試してないけど。
>>449 あと、サーバーも回線も容量ってもんがあるから一気に全員を対象に
することもないだろう。その選択にOSが入っていても不思議はない。
453 :
450 :2014/02/11(火) 00:59:55.17 ID:6JJP54gd
>>451 Build 509で再インストしても駄目でした
fxddにあったのをインポートしてもダウンロードでも
一応管理者権限で実行してます
>>447 再起動したタイミングで結果が違うと思われますよ。
ゆとりスレからの引用
【MT4/5】MetaTrader初心者専用41【ゆとり隔離スレ】
http://hayabusa3.2ch.net/test/read.cgi/livemarket2/1386557357/727 >727 :Trader@Live! :2014/02/06(木) 00:25:28.46 ID:ptw7dUer
>MT4のデモ、8業社使っているんだが、
>午前中に起動させると、8社中6社が自動アップデートされた。
>
>夜、別のパソコンにある同じ8業者のMT4を起動させると
>8社中1社しか自動アップデートされなかった。
>
>Build600のあまりの酷い出来に、各業者アップデートを見合わせたみたいだなw
初心者の勘違いについて指摘しておく。 フォルダ構成が変わったが、 Build509から600になっても、基本、単体のEX4は正常に動く。 正常に動かないのは、DLLなど使っているタイプのやつ。 それから、 フォルダ構成が変わって、ファイルの質が変わっているのに、 旧expertsと新MQL4/Expertsにあるファイルをコピーしたり、 無知にいじくると、Build509に戻しても無駄になる。 そもそも、Build509に戻すなんて、 短期間にしか通用しない、その場しのぎの対応。 後で困るぞw
いちおう、ここにも報告しておきます。
StringToCharArray は string から char[] に変換する関数ですが、
おそらくバグと思われる挙動をしています。
Win32APIのWideCharMultiByteを使って変換した場合とは、異なる結果が得られます。
具体的には、変換後の文字列が、途中で欠けてしまいます。
forum にはレポっておきましたが(すでに誰かがレポってたかもしれないけど)、
とりあえず StringToCharArray は使わないことをお勧めします。
既存のDLL呼び出しを改修しようとしている人は要注意です。
http://forum.mql4.com/60694/page4#906986 にコードと結果を貼ってるので、興味のある人はご確認ください。
なお、試してみた範囲では、 CharArrayToStringはいたって問題なく動いてるようです。
最初の方、ArrayResize()してないがそれはいいのかい。
StringToCharArray()がresizeしてくれるのか。
uchar ansiString1[1000]; とかしても、結果がおかしいのは変わりありませんね。 uchar ansiString1[]; をそのまま渡して(変な)結果が入ってるので、 変換後の文字列長を計算(WideCharToMultiByteを引数NULLにして呼び出して普通はやる)して、 内部でArrayResize相当をしているはずです。
ん?うん
464 :
Trader@Live! :2014/02/11(火) 13:19:50.25 ID:jmrI/V3v
>>451 しったかぶりは言わないで。
セキュリティソフトのせいだと分かったよ。
ゆとりスレのdeinit()の挙動について カスタムインジケータを他のEAのバックテスト中に チャートでドラッグさせたときの挙動です。 カスタムインジケータのdeinit()にある関数を仕込んで 動作を確認しました。 deinit()が実行された。 インジケータをチャートから削除するとき チャートを(閉じるボタン)を使って削除するとき deinit()は実行されない。 バックテスト中に「ストップ」ボタンを押すとき バックテスト期間が終わり、終了したとき 上の様子から、画面上から対象のカスタムインジケータが削除された 場合に実行しているようです。 また、これはドラッグなどで挿入されたカスタムインジケータの話であって、 EAに組み込まれたカスタムインジケータでは、少々挙動が違うようです。 EAに組み込まれたカスタムインジケータでは バックテスト期間が終わり、終了したときでも deinit()が実行されているようです。 自分の検証では断定できませんので、興味のあるかた検証してみてください。
手動で設定できるシンプルなエリオット波動が引けるインジはないのでしょうか? できれば波ごとに番号を振ってくれるような
467 :
450=453 :2014/02/11(火) 16:54:33.02 ID:6JJP54gd
ヒストリカルデータのインポート問題ですが、
分足チャート1枚だけの表示中は問題無く出来ました。
build600です。でもいつも使ってる複数チャート構成の
画面に切り替えるとやっぱりフリーズ(分足〜週足まで7枚表示)。
こうなると強制終了してアンインストールする以外手立てなし。
C:\Users\◯◯\AppData\Roaming\MetaQuotes\
とかも消しても駄目でした。
>>454 それです。報告ありがとうございます。
>>462 そのサイトたぶん見てます。build400番台でもフリーズしてたので
バージョンは関係ないかもしれません。
>>465 え、そんな話だったの?
EA自信の話じゃないのか。
そりゃvisual testのチャートに落としたインジのdeinit()がチャートも
閉じないのに呼ばれることはないでしょ。普通にチャートに落としたのと
同じだと思うけど。
EAのdeinit()と同じreasonがくるのかは見てないけど、EAに組み込まれた
ものが呼ばれるのもあたりまえでしょ。
>>467 フリーズの原因はインジのどれかが時間がかかっている、あるいは無限ループ
これ以外に遭遇したことはないな。
>>467 > 画面に切り替えるとやっぱりフリーズ(分足〜週足まで7枚表示)
試しに7枚ぐらい表示して、昨日試した全く同じAUDCAD.hstをインポートしてみたところ、、、
VPSがクラッシュして再起動してしまったです。。。
何枚まで大丈夫なのか?はさすがに何度も再起動食らうのは嫌なのであれですが、
チャート非表示の状態でインポートするのが得策かもですね。
ちなみに、クラッシュしてOS再起動まで食らいましたが、
MT4自体はいたって普通に起動できてるので、
アンインストールしないとどうしようもなくなる、のはよくわかりませんね。
起動ができなくなるんですか?
VPSがクラッシュとか、それVPSに問題あるよw
うんまあ、そうかもしれない。 お名前VPSだから、Hypver-V型。なので、WebKeepersなどのParallels系のようなおかしなことはいまのとこ使っててないけどね。
473 :
Trader@Live! :2014/02/11(火) 23:09:00.76 ID:jmrI/V3v
build 600から604に更新した後、build 509に戻したんだが、若干困ることが ある。標準搭載されているインジのうちCustom IndicatorsはソースがNew MT4 で書かれているため、コンパイルするとエラーになる。やむなくまだ更新して いないMT4のインジをコピペして何とかなったが、もう少し賢い方法があれば 教えてほしい。
604重たいな 同じインジなのに、チャートの組表示(1画面6枚表示) を切り替えると、えらく時間がかかる 改悪じゃねーか ぎりぎりまで以前のバージョン使うわ
>>469-470 解決しました。
原因は出来高を表示するインジケータで(スケール固定時に使うため)
Volume_JMA_OptionZeroCheck1.mq4
を削除したらヒストリカルデータを入れてもフリーズしなくなりました。
Volume JMA Option2.mq4 ←これも同じ作者なのか同じくフリーズします。
代用で以下を試したら問題無く機能しました。
Volume with custom MA.mq4
volumeMA.mq4
Volumes.mq4
ご協力ありがとうございました。
確かに重くなったわ
600って改良点ってないの?
古いCPUを切り捨てて、新しい命令使用=高速化 のはずなのに、遅いらしいしなー
600以降のものに対応するために、MQLを修正すると、 それは以前のバージョンでは使用できない? という認識OK?
おk
>>480 ありがとう。
ちょっと、前から気になってんたんだけど。
このスレでお昼に書き込む人たちは、専業の方たちですかね。
うらやます。
自営業だよw
チャートの右端の空白にするボタンがありますが、この空白の幅を変更ってできますか?
チャート上の▽をドラッグ
>>484 ありがとうございます
帰ったら試してみます
486 :
Trader@Live! :2014/02/13(木) 16:00:50.29 ID:gSrdx46Y
最近のMT4ってカスタムインジを格納する場所が変わりました? だいぶ前にインストールしたMT4はexpertsフォルダがありましたが、今日インストール したMT4にはexpertsフォルダが見当たらず、MQL4フォルダにindicatorsフォルダが有り、 そこにインジを入れるとようやくMT4で表示されました。
>>486 場所も変わって、言語仕様も変わって大騒ぎしてるよ
488 :
Trader@Live! :2014/02/13(木) 19:16:44.25 ID:JdGtqRJM
Windows7を再インストールしてmt4をいれなおしました。 設定はそのままにしたかったので、プログラムファイルをUSBにバックアップして、インストールしたmt4に上書きしました。 すると以前まで軽かったのが急に重たくなりました。 もちろん、ニュースやアラート設定はオフですし、チャートのデータは2000にしています。 こういう事はあるのでしょうか?解決方法あればお願いします。
489 :
Trader@Live! :2014/02/13(木) 19:21:40.21 ID:IFlLghqj
アプリを起動すると ユーザーアカウント制御でプログラムのアクセス許可求めてくるのですが 遠隔操作みたいなことにはならないでしょうか?
>>491 MT4のデモ口座でIPアドレスがGCIなんです
1台のPCだけアクセス許可出るんですよね
>>492 他のPCはUACをオフに設定している可能性は・・?
>>493 すいません
詳しくないのでUACってなんでしょうか?
セキュリティの詳細とかでしょうか?
>>495 ありがとうございます
UACはユーザーアカウントのことだったんですね
8.1
499 :
Trader@Live! :2014/02/14(金) 11:52:31.17 ID:iuRCpOrY
>>497 返信ありがとうございます。
7を再インストールした理由は、もともとSSDだったのですが、容量に不安があったので大きめの容量のSSDに転送した為です。
OS自体は快調なんですが、特定のインジケータを表示させるとダメなんです。
スローストキャスティクスがクロスしたらメール送信するインジ探してます。ストキャスティクスのは有るのですが探したけど有りませんでした。またストキャスティクスの設定を変えてスローストキャスティクスと同じにする事は可能でしょうか? よろしくお願いします
501 :
Trader@Live! :2014/02/14(金) 16:34:11.83 ID:iuRCpOrY
>>488 自己解決しました。ありがとうございました。
感じたのですが、サーバーは関係なく業者によって重い場合ってあるのでしょうか?
MT4build604ですが、ChartXYToTimePrice()で timeはきちんと取得できるのですが、priceがでたらめな値です。 絶対におかしいと思うんですが・・・。 誰か試してみてください。そして対策をお願いします。
>>502 ちょうど俺も同じ問題にぶち当たってたわww
上下が逆になってるんだよな
上に行くほど price が安くなっていく・・・
でも対策をお願いするのはここじゃないと思うぞw
504 :
502 :2014/02/14(金) 18:33:23.60 ID:7rF7zWVF
>>503 そうなんですよ。逆になるんです。
でも何かの値だと思うんです。
うまく何かとプラスマイナスして欲しい値にならないものかなと。
505 :
Trader@Live! :2014/02/14(金) 18:34:09.49 ID:r0LVbwzb
>>502-503 The origin is in the upper left corner of the window/subwindow.
506 :
Trader@Live! :2014/02/14(金) 19:11:36.00 ID:r0LVbwzb
>>502-505 実際に動作させてみておっしゃっている意味が分かりました。
確かに、CharXXToTimePrice()の引数での戻り値(price値)が正しく取得出来ないですね。
507 :
Trader@Live! :2014/02/14(金) 21:10:45.54 ID:r0LVbwzb
OnChartEvent()でチャートウィンドウの一番下をクリックしたときに得られる Y座標値をChartXYToTimePrice()に渡してPrice値を確認する作業を繰り返すと 次のことが分かりました。 ≪測定条件≫ [チャート]-[プロパティ]で[スケールの固定]で、 [上限設定]=102、[下限設定]=100 にした状態確認。 ≪測定結果≫ (1) 最下部(100付近)をクリックするとPrice値がほぼ100付近で合っている。 (2) チャートの中間地点(101付近)をクリックすると、ほぼ99付近となりました。 (3) チャートの最上部(102付近)をクリックすると、ほぼ98付近となりました。 ≪バグを補正する計算式≫ ChartXYToTimePrice値(バグPrice値) ≒ チャート最下部 − (クリック場所のPrice − チャート下部Price) ↓ クリック場所のPrice ≒ チャート最下部Price値×2 − ChartXYToTimePrice値(バグPrice値)
508 :
Trader@Live! :2014/02/14(金) 21:22:42.42 ID:r0LVbwzb
build604以前の場合は、次のコードで良い? if(ChartXYToTimePrice(0,x,y,window,dt,price)) { price = WindowPriceMin(0) * 2 - price; // これを追加
509 :
502 :2014/02/14(金) 21:36:28.54 ID:7rF7zWVF
>>507 神様ありがとうございます。
バグが修正されるまでこの計算式を使います。
これからmeta traderを使ってFXを始める場合、4と5、どちらがおすすめですか?
MT5なんて誰も使ってねーだろw
>>502 ,503
一応ご連絡まで、build606 でも y が上がるほど price が小さくなる結果になりました。
mql5.com の Service Desk に投げてみます。
516 :
515 :2014/02/15(土) 00:25:57.73 ID:3ao8e3+N
Fixed. って Service Desk から返ってきたので、次のリリースビルドには直ってると思われます。 (1時間ぐらいで Fixed が返ってきたのでびっくりした)
517 :
502 :2014/02/15(土) 00:40:37.31 ID:zKO3wYIP
518 :
Trader@Live! :2014/02/15(土) 00:42:27.43 ID:bMWe80+l
>>511 今まではMT5に対応している業者がほぼ0だったのでMT4一択でした。
しかし、MT4 build 600 でMT5の文法が標準になり、どの業者でもMT5の文法
が使えるようになったので、今後はプラットフォームはMT4、コーディングは
MT5風の新文法というのが主流になると予測しています。
昨日、MT4 build 600 に付属しているATR.mq4をエディタで開いてみて、
MT5がなかなか広まらないのでMetaQuotes社が本気でMT5の文法を広めに来た
と感じました。
ただ、MT4のアップデートという形で、文法やディレクトリ構成などを変え
しかもバグだらけという状態は利用者としては非常に迷惑に感じています。
バグは2つか3つしか確認してないが、バグだらけって言うほどバグあるのか? リストあったら教えてくれ。 問題なのはバグより仕様に互換がないところだな。 これからどうなるんだろ。仕様自体もまだ変わるのかね。
自分でプログラム書けるようになりたいんだけど、構文変わるとか難易度高杉
追加されただけで別に今まで通りでいけるでしょ。
>>520 何事も始めてみないと始まらない。
始めたら、諦めない限り大抵の事はできるようになる。
それをしないのは、それ程の欲望ではないか必要性が足りないから。
俺も同じ。でも一応準備は進んでるかな。
誰かが発言した文そのままじゃないかw
>>523 520には悪いけど、その気になればそこそこ使えるもの稼働させるのに一ヶ月はかからないと思う。
MT4関連の本は2冊読んでるしアイデアもある。本職SEだし。
>>525 プログラミング自体は高校の勉強くらいの難易度だよ。
MQLはFXに特化した言語だから比較的簡単にできてる。
気が向いたら先入観持たずに手を出してみるといいと思うよ。
最初はちょっと苦労するだろうけど、そこを越えれば必要な部分て以外と少ないから。
527 :
Trader@Live! :2014/02/15(土) 05:33:28.07 ID:cQOdm0Br
隔離スレが見当たらないのでここでの質問です。 buildは509です。 int Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3,Bid+(stoploss*Point) ,0 , "Sell",MAGIC, 0, White); OrderSelect(Ticket,SELECT_BY_POS); datetime timeopen=OrderOpenTime(); とやって、売りのポジションを持った時の時刻を取得したいのですが、timeopenには0が入っていてopenの時刻を取得できません。 どこに誤りがあるのでしょうか?
>>527 そりゃ、 SELECT_BY_TICKET 使わなきゃダメだべぇ?
529 :
Trader@Live! :2014/02/15(土) 05:39:59.15 ID:cQOdm0Br
質問の補足です。 OrderSelect(Ticket,SELECT_BY_POS); を省略すると、timeopen=OrderOpenTime(); で得られるtimeopenには一つ前のOrderの時刻が入っています。
530 :
Trader@Live! :2014/02/15(土) 05:49:14.08 ID:cQOdm0Br
>>528 ありがとうございます。
SELECT_BY_TICKET
でopen時刻取得出来ました。
これで一日悩んでいました。
英語ができなくて今600以降のMQL勉強しようと思ったら、MT5の本を買うのがベスト? 日本語リファレンスってまだないよね?
532 :
Trader@Live! :2014/02/15(土) 09:07:37.61 ID:bMWe80+l
>>531 もしかして英語を習得できる大チャンスかも?
私は学校英語は最低ランクでしたが、プログラミング用の技術文書や
自分が興味を持っている分野の英文は意外と読めてしまった経験があります。
技術文書はちゃんと配慮されてて案外読めるから英語のまま読んだほうがいい。 翻訳を読むと「? これは英語では何て書かれていたのか?」と考えてしまう。
プログラマーがFXを始めたらMT4で自動取引をやってみようと思うのは当然の流れだな プログラマーとFXは赤い糸で結ばれていると言っても過言ではない
535 :
Trader@Live! :2014/02/15(土) 14:18:52.90 ID:0+vZb3HG
質問です MT4がバージョンアップされて(最新バージョンは610) 今までふつうに仕えていたインジがソースが原因で動作しなくなったり してるんですが みなさんはこういうときどうしてますか? 自分で手直しできる人はいいけどできない人は? 手直しできないひとのほうが多いでしょ 世の中に出回ってるほとんどが旧バージョンに対応だし どこか新バージョン対応のインジ置き場とかないんですかね? 情報求む
536 :
Trader@Live! :2014/02/15(土) 14:56:11.54 ID:NBkDdVgu
とりあえず古いバージョン(5XX系)に戻すのがてっとりばやいね 俺はそうした 戻し方(と自動アップデートを防ぐやり方)はぐぐればでてくる 古いバージョンは1週間ぐらい前だったらサイバーにあったけど今はどうだろう? 3ヶ月もすれば落ち着くでしょ
537 :
502 :2014/02/15(土) 15:26:11.32 ID:zKO3wYIP
MT4 build610にしました。 ChartXYToTimePrice()が直ってない。orz 短期の足でやってみたらうまくいってると思ったんですが、 日足レベルでやると全然ダメです。使えません。 次まで待つしかないですね・・・。
538 :
Trader@Live! :2014/02/15(土) 16:03:01.62 ID:6Fq7iOSj
build610がリリースされたけど、変更点は?
>>535 古いバージョンでコンパイルしたEX4を使う分には
多くの場合は従来通りに動くから、とりあえずそれでしのぐ。
それで動かないものは頑張って自分で直すか誰かにお願いする。
540 :
503 :2014/02/15(土) 17:40:09.63 ID:tpsIomUW
>>537 俺の意見だけど,これはバグでは無くて仕様なんだと思う
なぜなら公式ドキュメントに
>>505 って書いてあるから.
だから修正されるってことも無いのかも知れない.不便なので仕様変更して欲しいが…
そこで,仕様に沿った(?) 以下のコードを提案する
ObjectSetInteger(0, (string)0, OBJPROP_CORNER, CORNER_LEFT_LOWER); // 基準を左下に
ChartXYToTimePrice(chart_id, x, y, sub_window, time, price);
これで一応うまくいっているようです
541 :
503 :2014/02/15(土) 17:45:10.42 ID:tpsIomUW
ごめん,別にキャストなんて使う必要ないですね,すいません ObjectSetInteger(0, "0", OBJPROP_CORNER, CORNER_LEFT_LOWER); // 基準を左下に ChartXYToTimePrice(chart_id, x, y, sub_window, time, price);
542 :
515 :2014/02/15(土) 18:03:14.10 ID:3ao8e3+N
>>540 >>537 は、H1とかだとそれなりの精度で返ってくるのが、
D1 や W1 にすると、price が 0.1以上ずれてることを言っていると思います。
ついでに、 ChartTimePriceToXY で戻したらどうなるんだろう?と試してみたところ、
(x1, y1) -> ChartXYToTimePrice() -> (time, price) -> ChartTimePriceToXY() -> (x2, y2)
なぜか (x1, y1) と (x2, y2) が若干違いますね(1ぐらい)
それはともかく、 y1=0 となる位置で ChartXYToTimePrice すると time が原点の1970/1/1, price が 0 になったりしますし、
バグってるのは確かかと思います。
検証に使ったコード:
http://pastebin.com/tzaw7daJ
543 :
515 :2014/02/15(土) 18:18:17.02 ID:3ao8e3+N
ちなみに、
y 座標が上の方向に移動すると price が小さくなる現象は、
MetaQuotes がバグと認めて、それ自体は修正されている、という状況です。 (
>>515 ,516)
> The origin is in the upper left corner of the window/subwindow.
これはたぶん、ドキュメントバグじゃないかと思います。
引数 x, y のところにこの説明がついてるべきだと思います。
544 :
503 :2014/02/15(土) 18:33:50.82 ID:tpsIomUW
>>542 >y1=0 となる位置で ChartXYToTimePrice すると time が原点の1970/1/1, price が 0 になったりします
とありましたが,チャート領域の座標の最小値は (x, y) = (3, 3) です
ですから (x, y) = (0, 0) などと指定するとおかしな値か返ってくるのは至極当然なのです
>>543 そうでしたか,解りました
545 :
503 :2014/02/15(土) 19:05:51.18 ID:tpsIomUW
>>542 >>537 が一体 何と比較してズレているのか解らないので答えになっているか知りませんが
Horizontal Line と比較してズレているということでしたら,
>>542 で検討されているように
確かに 1px ズレていると思います
ChartXYToTimePrice(chart_id, x, y + 1, sub_window, time, price);
とすると,ピッタリ合いました
D1 や W1 にするとズレるという話は,縦軸の最大値から最小値までの値幅が大きくなるために
1px の変動が大きくなった,ということでしょう
別に全然ダメで使えない関数だとは,わたくしは感じませんでした
1px ズレてるのは事実ですが,実用上は問題無いと考えます (まぁピッタリ来てほしいですけど
546 :
503 :2014/02/15(土) 19:20:32.44 ID:tpsIomUW
547 :
Trader@Live! :2014/02/15(土) 19:48:53.18 ID:0+vZb3HG
インジのソースでwarningがでててわからないので教えてほしい if (c != CLR_INVALID) { が expression is always true とでてる if ((frame == CLR_INVALID) || (frame != c))が expression is always false と表示されてる if (frame != CLR_INVALID) {が expression is always trueと表示 for (cc = CLR_INVALID, y = 0; y < h; y++, cc = c) {が truncation of constant value とでてる if (c == CLR_INVALID) {が expression is always falseとでてる 教えてください
>>547 それはたぶん、 GetPaneHeights というライブラリではありませんか?
http://codebase.mql4.com/5984 ソース全体が分かったほうが明確な回答が付きやすいので、名前とかリンクとか載せたほうがいいですよ、公開されてるものであれば。
c != (int)CLR_INVALID とすると warning がなくなるのですが、
そもそも warning になる意味がちょっと自分にはわからないので、できたら他の方の回答を待ってください。
(long と int の比較でも always true にはならないよなあ、と > 意味がわからない)
549 :
537 :2014/02/15(土) 20:43:13.93 ID:zKO3wYIP
>>542 >>545 コードまで書いてくださりありがとうございます。
座標位置がint型であるがゆえに誤差が生じるといった感じでしょうか。
なるほど。勉強になりました。
550 :
515 :2014/02/15(土) 21:27:18.64 ID:3ao8e3+N
>>547 ご指摘ありがとうございます。
改めて線を引いてみると、priceの誤差は影響ないレベルですね。
int <-> double の変換で精度が落ちることを考えて落としていました。
>>549 >>545 のコードに、
・元の y を price に変換したライン(赤)
・元の y に +1 して price に変換したライン(黄)
を書くのを追加したのをあげておきます。参考にしてください。
http://pastebin.com/yqbtSZAD
551 :
457 :2014/02/15(土) 21:46:41.12 ID:3ao8e3+N
>>547 0xFFFFFFFFはintの範囲を超えてるのでunsigned intとして扱われる。
cはintなので0xFFFFFFFFになりえないので常にtrueになるということ。
truncationはunsigned intをintでは表現できないので削ったよと。
553 :
537 :2014/02/15(土) 23:03:57.72 ID:zKO3wYIP
>>550 またまたありがとうございます。
実はChartXYToTimePriceで得たpriceと
Crosshairで出た値を見て???ってなってました。
単純にカーソル下での価格を大きく表示するインジを
作成しようとしていたのですが、ちょっと?となる
インジとなりそうです。
XMのMT4にしたらインジ入れられなくなった。何やってもダメだ
555 :
548 :2014/02/15(土) 23:28:05.41 ID:3ao8e3+N
556 :
Trader@Live! :2014/02/16(日) 01:21:16.87 ID:VirRItMe
以前のMT4のインストーラーでインストールしたらどのバージョンインストールできる?509?それとも最新?
最新
稀に特定のバージョンが入るカスタムのインストーラもある
公式の最新のインストーラを使っても最新 build が入らないこともあるけどなw
DLLバンバン使っているし、Rも使っているし、sqlも勉強した。 ここになって、アップデートは大変そうだな。今年のうちに完成はしたいけど。
>>560 詳しくないから適当なこと言うけど
ほとんどを DLL みたいな MQL 外で実装してた方が,結果的には楽なんじゃないかとも思うw
"MQL 部分" および "MQL と DLL の接続部" だけ いじればいいわけじゃん?
562 :
Trader@Live! :2014/02/16(日) 08:34:56.92 ID:xQLge53h
土日のmt4が接続してないときに インジmq4をコンピューターに入れても mt4ファイルは生成されないですか? 表示されないんですけど。
564 :
Trader@Live! :2014/02/16(日) 09:26:03.59 ID:xQLge53h
>>563 つまり月曜ってことですね?
ありがとう。
ダウや日経の動きをみながら、ドル円の自動売買なんてできるの?
>>561 DLL側でmain関数みたいなものをおいて、DLLで自己完結できるようなものにしないとね。
MQLがしょっちゅう、DLLを呼び出しているような感じでつくってからorz。
Rに関してもmt4R.dllを使わないで、直接myDLLからRをいじれるようにしたいけど、
そこまでの技術がない。
>>566 dllを使う理由って、同じロジックの使い回しだと思うけど、発注部分などをdllで作り込んで、呼びにいってるの?
自作インジケータ使っているのだが build600系になって遅くなった原因が見えてきた 俺の場合、ibandsの要因が大きそう
発注のシグナルを決めるのはDLLだよ。 それをインジに渡して、EAに渡す。
ちがった icustomだ
icustomを排除しなきゃ めんどうくせええええ
サイバーでチョコチョコやってたんだけど、どうも会社自体が怪しいので 他の業者へ移ろうと思ってる。 MT4が使える業者でオススメはどこ?
時刻が日本なんでわかりやすいforex.com 指標時はたまに固まるがスプが狭めなalpari
574 :
Trader@Live! :2014/02/17(月) 01:26:08.99 ID:gE+MWenq
バージョン600 もしくは602 と 最新610? ってなにが違うの 復元で600にもどしたんだけどインジがつかえる 自分の勘違いとかじゃなきゃ610だとつかえない? 600のまま当分つかおうとおもうんだが支障あるかな? チャートでインジだけつかえればいいんだけど EAとかは使ってないから あぷで落ち着いて安定したら少し研究しないとな
こりゃ一気にMT5に切り替えたほうが近道だな 4&5の互換性を考えてもややっこしいだけだしそのうちどうせMT5に完全移行するのが目に見えているわけだから 早いうちにキッパリ路線変更をすべきだ
MT5は一応64ビット対応らしいけどむしろ重くなってメモリ食いなだけの ウンコプログラムらしいな そのくせFX業者にはいつでも生殺与奪できる政治力をもっている 死ねばいいのに
577 :
Trader@Live! :2014/02/17(月) 07:49:49.21 ID:TVed7iJu
>>574 build 600に戻しても意味ないだろう。
自分は旧版のbuild 509に戻したが、再度アップグレードされないようにしている
ので、今のところ満足だ。
ちょっと心配なのは、新しいFX業者のMT4をダウンロードしたくてもできないの
ではないかということ。その場合、DL先をC\ProgramFileではなく、C直接にすれば
いいのかな。詳しい人教えて。
MT4には、Build600になってもiTriX関数はないようですね。 じゃあ、どうすりゃいいのよ?
http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:trix Calculation
TRIX is the 1-period percentage rate-of-change for a triple smoothed exponential moving average (EMA), which is an EMA of an EMA of an EMA. Here is a breakdown of the steps involved for a 15 period TRIX.
1. Single-Smoothed EMA = 15-period EMA of the closing price
2. Double-Smoothed EMA = 15-period EMA of Single-Smoothed EMA
3. Triple-Smoothed EMA = 15-period EMA of Double-Smoothed EMA
4. TRIX = 1-period percent change in Triple-Smoothed EMA
だそーな。
580 :
562 :2014/02/17(月) 10:11:30.78 ID:mPBLnsUW
インジがコンパイルされてないわ。 バージョンアップの影響かな。 MT4は前のままなのに。
>>579 まあ、自作関数を作ればいいようなもんだけど、MQL4 Reference ChartXYToTimePriceの解説のところの
サンプルコードの中で,iTriX関数は使われているんよね。それに加えて、iMACDの引数の数が…
こりゃ、先が思い遣られるわ orz
あちゃー なぜか iTrix でしか検索してなかった私。 ダメですねー。
>>581 それ、MT5のサイトでなくてMT4のヘルプでも?
build600全部消しちゃったからわかんないや。
>>582 新しいMQL4に既に対応されているのが羨ましい。
>>583 参考になるわ。ありがとう。
>>585 build 610 のヘルプの Reference には載ってないですね。
コンパイルしようとしても iTriX - function not defined。
>>585 MetaEditor5.00 Build883
ヘルプ(H)->MQL4 Referenceを開いてます。
589 :
582 :2014/02/17(月) 11:52:30.20 ID:HrjyEZTa
案の定バグがボロボロでした。 こっそり更新してますけど、使わないでください m(_ _)m 失礼いたしました。
MT4に執着するのは逆張り MT5に切り替えることは順張り
今年1年は、おそらく、新MQL4系のMT4が続くんじゃないかな。
>>573 ありがとう。
MT4の視点で調べたことなかったので、アルパリは知らなかった。
指標は触らないし、スプ狭いのは魅力。
(FXCMも低スプレッドうたってるけど、更に低いしね。)
各社無料EA提供ってあるけど、あてにしない方がいいよね?w
もう少し調べてみる。
593 :
イベリコ :2014/02/17(月) 18:33:54.27 ID:ANs3jzuP
__ / 〉 __ \ `Y´  ̄ く_/ ~γ´ 〉. . .ヽ ! { ( l l ) | `、 ヽ ノ MT4、初心者です。 MT4で、AVのモザイクは消せますか? `し ⌒ し" 一‐し´
594 :
Trader@Live! :2014/02/17(月) 19:23:04.44 ID:+HoMSEaX
>>593 MT4で金を稼いで、モザイクの無いAVを買えばええんや。
>>505 ,579
mql5.com の Service Desk に報告したら、1営業日で
Support Team 2014.02.17 10:34
Thank you for your message. All errors have been fixed. Update will be available automatically.
って返ってきました。ご報告まで。
598 :
597 :2014/02/17(月) 19:42:37.88 ID:HrjyEZTa
ありり、アンカを間違えました。
>>505 .581
です。
iTriX()が増えたりMACDの引数が変わると!?
600 :
597 :2014/02/17(月) 20:04:17.65 ID:HrjyEZTa
>>599 ドキュメントバグとして報告してるので、ドキュメントが正しくなるだけだと思いますです。
DLL内で、mqlの関数を直接記入することは無理ですかね。 簡単な計算式なら、改めてDLL内で作り直しますが、iBarshift()とか、利用するならmqlで実行した方がいいかなと。 そうすると、他の関数との関係で、mql⇔DLLの間で、引数を渡す為に往復実行がこまめに発生してます。 なにか解決策ありますか?
602 :
イベリコ :2014/02/17(月) 21:02:19.76 ID:ANs3jzuP
__ / 〉 __ \ `Y´  ̄ く_/ ~γ´ 〉. . .ヽ ! { ( l l ) | `、 ヽ ノ mql5.com の Service Desk に報告したら、1営業日で `し ⌒ し" 一‐し´ Support Team 2014.02.17 10:34 Thank you for your message. All AV Mosaic Pixelization have been removed. Update will be available automatically. って返ってきました。ご報告まで。
AAでキャラ付文化は10数年前に通り過ぎた文化だぞ
604 :
Trader@Live! :2014/02/18(火) 03:40:40.57 ID:VV+izaE8
バージョンアップするとこれまでの mt4のインジは全て使えなくなりますか?
605 :
Trader@Live! :2014/02/18(火) 08:17:48.89 ID:C0ysLbpH
MQL4からMQL5にすればインジが使えるってことでしょ? なら書き換えうようなソフトがあればいいってこと? そういうソフトとかないの? やったことあるひといる? めたくおーつ社はそういうの提供する義務あるとおもうんねんけど どこかにそういうソフトない?
606 :
イベリコ :2014/02/18(火) 08:32:30.32 ID:/D94FIgE
607 :
Trader@Live! :2014/02/18(火) 10:17:12.51 ID:02hHrdPb
build 509に戻した後、新たに同じ会社のMT4をC直下に別のFolderを用意して そこへダウンロードしてみた。こちらはアップデート後のbuild 610だが すでにbuild509用のMetaEditor.exeやTerminal.exe等で固定しているせいか、 無効口座となって起動しなかった。同じパソコン内では新旧バージョンは 同居できないようだね。
妙な結論出すなよ。同居はできるわ。 無効口座になるのは別問題。
609 :
Trader@Live! :2014/02/18(火) 10:47:32.78 ID:02hHrdPb
>>608 それなら安心だが、どこがおかしかったのだろう。
もう一度やってみる。何かヒントくれる?
610 :
Trader@Live! :2014/02/18(火) 12:27:44.01 ID:02hHrdPb
>>608 何とかguid 509も600も入った。
ただ元のタミナルアイコンが消されてしまったな。
復活させたらMetaquotes社の標準的なものになった。
611 :
Trader@Live! :2014/02/18(火) 15:29:33.63 ID:C0ysLbpH
http://forum.mql4.com/60555/page40#910251 angevoyageur 2014.02.15 11:00
Moderator
The best approach in my opinion the following, I take example of an EA :
Use the old .ex4, compiled with 509 (maybe a good idea is to rename it using a suffix _509).
And run this one to trade. The backward compatibility with old .ex4 seems excellent, though not 100%.
Work on a copy of the original .mq4 source code if you need to change your code and then to compile it with new build 6xx. Run it only on a demo account.
This way you can compare and check that the new compiled code was running fine under build 6xx.
http://forum.mql4.com/60555/page41#910364 angevoyageur 2014.02.15 14:45
Moderator
> graziani:
> can you please specify what is not working?
Sorry I am not sure what you ask.
From my personal experience, I only see a .ex4 library which presents some problems (but I don't have the code so I can't be more precise).
All the rest is working, but it's only my limited experience.
>Sorry I am not sure what you ask. kusafukahi
mt4の最新バージョンをインストールしたらKairiというインジが動かないですが対処法ありませんか?
615 :
Trader@Live! :2014/02/19(水) 20:29:08.40 ID:X60PKqSw
>>614 訂正
zero divideエラーが出るのはデバッガで確認しましたが
修正点がわからないのでどなたか頼みます。
ゼロで割り算してるのを止めさせればいいとは思うのですが。
>>617 ありがとうございます^^
とりあえずエラーはでなくなりました。
ワーニングメッセージはターミナルのエキスパート欄に出るんですね。
iMAが一定以上になったら発注するようにしてるのですが、 EAオンのままMT4を閉じてある程度時間を経過させて再び起動すると、 前回閉じたときのレートから現在のレートの差分チャートを取得中の間、 そこが連結してるものと見なされてるようで、 iMAが瞬間的に増加、勝手に発注されてしまいます。 一定時間以上おいて起動してもチャート取得中iMAが誤作動しないようにするにはどうすればよいですか。
>>619 EAの再生ボタン止めてから終了。
起動してから再生ボタン押す癖をつける。
とりあえずこれが一番簡単で確実な方法
build 604でPeriod_Converter系インジは使えないのでしょうか? 新規チャートにドラッグしても表示中の罫線分析ツールの文字が 無効になってます。他のインジは普通に使えてます。 対処法ご存知の方いたら教えて下さい。
>>619 たとえば MA の期間が 13 なら、
Time[0] - Time[12] の差が PeriodSeconds() * 12 より大きかったらスキップ、
ってすると回避できるんじゃないかと思います。
623 :
Trader@Live! :2014/02/21(金) 11:28:33.83 ID:UqmnsiVr
今現在のMT4の最新バージョンっていくつ?
>>622 ありがとうございます
なぜかTime使うの忘れてました
ちとやってみます・・・
<<622 出来ました!ありがとうございました!
今までチャートを「ウィンドウの整列」で縦3?横2で6個きれいにまとめて見れてたのですが なぜかさっきから「ウィンドウの整列」をすると縦2?横3になってしまい前のように表示することができません 任意のチャートを一括で縦3?横2で表示する方法をご存知のかたはいらっしゃいますか? よろしくお願いします。
>>597 MQL4リファレンス、修正されましたね。
ありがとうデス。。
build600で、IchimokuのチンコウスパンがとうとうChikouに修正されていたw
それなのに1日ズレは修正されてない
631 :
Trader@Live! :2014/02/24(月) 18:24:08.59 ID:h+SS2dp3
>>353 フォレックス、MT4でメールアラート機能を使用してたんですけど
yahooメール経由で1月末頃より遅延がはじまり
今はまったくメールが送られなくなりました
yahooメールより直接iphoneにメールは遅れるので
スマホの受信設定は問題ないです。
同じく遅れなかった人いませんか?そして解決できた人いないでしょうか?
どうにもならないからgmailをためしてみます。
632 :
631 :2014/02/24(月) 18:25:38.47 ID:h+SS2dp3
ジャーナルには下記のようになってます 2014.02.24 18:24:38.512 Mail: login to smtp.mail.yahoo.co.jp:587 failed 2014.02.24 18:24:38.512 Mail: 535 authorization failed (#5.7.0)
>>631 仮想デスクトップ型じゃないVPSでしたら、ローカルにMTAたてるほうがいいですよ。
仮想デスクトップ型のVPSでも、もしかしたら適当な1024以上のポートだったらMTAたてられるかもしれません(利用規約でアウトかもしれませんが)。
>>632 authorization failed ということは、単純に認証が失敗してる可能性はありますね。
ただし、
> yahooメール経由で1月末頃より遅延がはじまり
> 今はまったくメールが送られなくなりました
ということなので、認証エラーなら最初から送れないのでは?と思います。
自分の MT4 build 610 で smtp.mail.yahoo.co.jp:587 を使ってみましたが、
特に問題なくテスト送信、 SendMail からの送信ができました。
「だんだんと送れなくなった」というのは、あまりに短時間に大量に送りすぎていて、
規制をしていることも考えられます。
gmail にして遅延がなくなれば、 Yahoo の送信規制かもしれないですね。
外部SMTPサーバを使うと、予期せず規制にひっかかる可能性はあります。
ローカルSMTPサーバを構築するのは
http://www.vector.co.jp/soft/win95/net/se240895.html をいれて、起動するだけ、が一番簡単だと思います。
MT4 のメール送信の設定は
SMTP server: localhost
SMTP login: 空
SMTP password: 空
From: よしなに設定
To: よしなに設定
とします。
VPSに適当なMXレコードが無い場合、 From: をどう設定しても、
通常SPFレコードチェックではじかれてしまうので、
携帯キャリアメールで受ける場合は From メールアドレスで許可設定をしましょう。
636 :
631 :2014/02/24(月) 21:51:24.92 ID:h+SS2dp3
mt4インストールしなおしたら メール機能は回復しました おさわがせしました 回答してくださったからありがとうございました
1万本前のCloseを取得するにはどうすればよいですか。 Close[10000]ではエラーになります。
>>637 それでいいけど、どんなエラーになる?
ヒストリーに足がないだけじゃないの。
639 :
Trader@Live! :2014/02/26(水) 00:46:56.90 ID:9Nplrttz
>>627 MT4の仕様変更のせい?
俺も8ウインドウを縦4、横2で配置していたけど
今やると縦2、横4になってしまう。
誰か助けて下され。。。
fai さんのウィンドウ配置スクリプトはもう動作しない?
すみません教えて下さい。 MT4にTHV V4をインストールしたのですが、サブで表示されるはずのtrixが表示されません… これはインストールが上手く出来てないせいなのでしょうか?! インストールを詳しく解説してるサイトを見ながらやったので、インストールが失敗してるとは考えにくいです。 どなたかわかる方よろしくお願いします。
644 :
641 :2014/02/26(水) 19:13:33.89 ID:5JQUdX/C
>>643 さん
導入サイトを何度も読み返したら方法がわかりました。
ヒントを教えて下さいましてありがとうございました!本当に助かりましたm(._.)m
645 :
Trader@Live! :2014/02/27(木) 21:13:04.49 ID:CZ/IGuSl
誰か教えて インジケーターで高値安値を自分で期間設定できたりするいいやつなんかない? なんこかあったらそれもおしえて
>>646 new MQL4 はたしかに MQL5 の大部分の機能を取り込みましたけど、
旧来の関数や定数が使えなくなったわけではないので、
MQL4 と MQL5 の差分を調べるのはちょっと違いますね。
DLL呼び出しているなら文字列まわりの仕様変更を知るべきですし、
ほかには if 文の短絡評価や演算子の優先順序変更、
ディレクトリ構造変化に伴うパスの変化などが動かなくなる要因として考えられます。
http://docs.mql4.com/mql4changes ここに目を通すべきでしょう。
648 :
646 :2014/02/28(金) 16:59:20.08 ID:GY8fpdkQ
お、鯖復活した。
>>647 ありがとうございます。よく読んでおきます。
移動平均線と現在値の一定の乖離で アラーム音が鳴るインジを探しています。 bild 604 で正常に動作するものは無いでしょうか? 宜しくお願いします。
651 :
649 :2014/03/01(土) 09:23:17.41 ID:prkjxTUh
自己解決できました。
652 :
Trader@Live! :2014/03/01(土) 09:25:40.59 ID:3d9iBzM2
ちょっとスレチかと思うんですが、ここの方が詳しそうなので 日経の株取引に使えるメタトレーダーみたいなツールってありませんか?
MT4のGCデモ口座Iが回線不通で動かなくなりました ログインしなおしても同じ症状なのですが・・・アップデートしなかったからかな?
期限切れじゃね?
>>654 そうなんですかね?
期限ってどれくらいで切れるんですか?
>>653 回線不通は土日ならよくある。
1ヶ月ぐらいログインしなかったら期限切れとなる。
MT4のメールをヤフーに送ってるんだが 夜の遅延が酷過ぎる 数分遅れはざら 自宅メールサーバーにすると改善するかな
自分で書いておいて さすがに自宅メールサーバーはハードル高いんで まずは夜の遅延が少ない無料メールのお勧め教えて
659 :
Trader@Live! :2014/03/01(土) 18:16:49.38 ID:0WTn9rWd
VPSを使ったメールも相当遅れるね。 これじゃ意味ない。Alertで音を出す方が確実。
>>658 おすすめの無料メールはわからないので答えられないけど、
簡単に自宅(VPS)をメールサーバにする方法は以前
>>635 に書きましたので、
試す気があったら試してみてください。
>>659 相当、というのがどれくらいを指すのかしら。
10数秒程度ならメールの性質上しょうがないといえばしょうがないです。
-----
メール全般について
-----
メールというものが、即時性が保障されていないシステムなので、
「絶対に遅延の無いメールサーバ」というのは存在しないと思っていいです。
潤沢なインフラを持ってる Gmail や Yahoo だって遅延するときは遅延します。
また、メールサーバはスパムの大量送信、受信と常に戦っているので、
頻繁にアラートメールを送っている場合も規制にひっかかって遅延することもあります。
一番遅延する可能性が少ないメール送信方法は、
MT4を動かしているサーバを(手軽にやるなら
>>635 の方法で、本腰入れるならもうちっとがんばる)
メールサーバにすることです。
サーバから直接メールを送る場合、DNSのMXレコード、TXTレコード、ついでに逆引きレコード
を考えないといけなかったりもしますが、
受信側(携帯キャリアなど)の設定で、Fromメールアドレスをホワイトリストに
入れることでなんとかなる場合もあります。
めんどくさいことは考えたくない、けど絶対遅延してほしくない、お金もかけたくない、
となれば
>>659 のように音を鳴らすのが一番いいでしょう・・・。
>>656 昨日の米国時間から切れたんですよ
月曜日またつながるかみてみます
>>663 できたら、最初は、 To: を gmail.com などのメールアドレスで試してください。
というのは、 From: を適当に設定(詐称)している場合、
なりすましになるので、 To: が携帯宛てだと捨てられる場合があります。
gmail 宛てなら、最悪迷惑メールフォルダで済むので、「届いていること」が確認できます。
MT4バージョンアップしたらデバック機能ついた? これはうれしい
俺もメール機能使ってるんだが、確かに急変で送られるメールの遅延も困っているし、 メールが届いても自分の状況次第で、即座に対応できないことがあるのも困っている。 そこでメールをPC上のテキストか何かにリアルタイムで出力させられないものか。 それをUWSCなどで定期的に監視させて即効で決済だけはさせたいので。 使っているインジはEX4ファイルで、サインの割り当てもバッファ(〜8)の中に無いので、 別な手段で読み出せないため、メールか警告のサインを出力させて何とかしたいのだが。
>>666 ex4 がやってる SendMail をどうにかハンドルしたい、ってことですよね?
Linux 環境だったらローカルユーザにメール送信して、 .forward とかでコマンドキックして
とか簡単な方法すぐに思いつくんですけど、Windows だとそういうのに対応してる(かつ導入が簡単な)メールサーバ
ってあるのかしら?という疑問。。。
基本的には、
・MT4 にローカルメールサーバを設定
・ローカルメールサーバで、メールを受信し、メール body をパース
・パース結果に従って、テキストを書き出すなどをする
・あわせて、通常ルートのメール送信もする
っていうことにはなると思います。
>>666 その ex4 は、メール以外にアラートは出せないのか?
アラートダイアログが出るとか、
画面に矢印オブジェクトが出るのなら、
それを監視したほうが楽かも?
>>667 通常ルートのメールは、それ用にもう一個MT4立ち上げればいいだけだけど、
それ以外はハードル高いな。さっきPapercut - Homeって見つけたんだけど使えるかな?
>>669 Papercut だと、とりあえず受信したメールがインストールフォルダに *.eml として保存されるので、
それの最新を何らかの方法で監視するようにすればいけないことはないですね。
hMailServer
http://www.hmailserver.com こいつが Free でかつ VBScript も実行できて、いい感じそうなんだけど、
うまく VBScript を実行できなくてなやみちうです。。。
>>635 これもやってみたが、全く送れない。
迷惑メールフォルダにも入っていない。
何で?
>>671 MT4を動かしている環境は、なんでしょうか?
・自宅マシン
・VPS(専用サーバ)
・仮想デスクトップサービス
OP25B とよばれる制限がかかってる可能性があります。
>>672 自宅マシンWIN7Ultimateなんだが
OP25B?管理者権限だけじゃ駄目なんだ?
>>673 いやーごめんなさい、OP25Bのことをすっかり考え落としていました。
多くのプロバイダで、スパム防止のため、25番ポートの外部接続を制限しています。
(なので、だいたい送信メールサーバは587番ポートが使われている)
hMailServer を使ってうまいことできる方法がわかったので、
いままとめてます。もう少しお待ちください。
(⌒-⌒) はいっ♪
ちょっとスレチかと思うんですが、ここの方が詳しそうなので 日経の株取引に使えるメタトレーダーみたいなツールってありませんか?
>>676 これは凄い、感激です。
さっそくやってみます。
>>678 ちなみに、メール送信があったら全決済したいのであれば、
・メール送信される
・
>>676 の仕組みでどこかにファイルが作られる
・MQLでファイルが存在するかどうかをチェックする(build 600以降なら OnTimer が便利)
・存在したら全決済する
・全決済したらファイルを削除する
ってなのが素直かなーと思います。
>>679 メール送信、ファイル書き込み共に無事成功しました。
こんなに早く実現できて感激です。ありがとうございました。
まだアップデートしていないのですが、Build509でコンパイルされた.ex4ファイルはBuild600以降でもそのまま動くという認識で合っていますか?
>>680 動いてよかったです。
>>681 一応 build 509 でコンパイルされた ex4 が一番互換性が高いです。
ただし、動くかどうかはモノによるので、こればっかりは動かしてみないとわかりません。
683 :
Trader@Live! :2014/03/03(月) 12:17:17.06 ID:9GSEPGYy
日経の株取引に使えるメタトレーダーみたいなツールってありませんか?
684 :
Trader@Live! :2014/03/03(月) 13:32:40.16 ID:MkuEQ9Cr
同じ物なんてねぇ〜よ だから世界がMT4使ってるんだろ
それに同じ物があったら乗り換えてるわw
>>685 600にしたのなら、その都度アップデートするほかなさそうな。
(あえて600を使用し続ける意味があるのだろうか?)
なので、509でアップデート阻止さえ分かればいいや。
MT4以外のチャートソフトって存在価値あるの?
newMT4だと、マルチスレッドに対応してる?
昔からマルチスレッドで動いているけど。
マルチスレッドというのじゃないのか? マルチコアのCPUに複数同時に処理させるっていうのは?
だから昔からマルチスレッドで動いているけど。 EAはそれぞれ別スレッドだし。
最新でフォルダ構造が元に戻されたってほんま?
>>682 今回は大変お世話になりました。
無事、ファイルの対象通貨を確認して、決済できるようになりました。
ただ、UWSCが短いサイクルで動きっぱなしで、余りにも忙し過ぎる気がしてきました。
hMailServerを使って、メールを送るタイミングで、
場所の例として(***¥***¥監視と決済.uws)を起動できないものでしょうか?
697 :
Trader@Live! :2014/03/04(火) 07:55:47.11 ID:in7REj0u
日経の株取引に使えるメタトレーダーみたいなツールってありませんか?
文脈を考えると、 質問者が期待するようなマルチスレッドには対応はしてない。 だろうね。
701 :
Trader@Live! :2014/03/04(火) 09:49:26.87 ID:in7REj0u
よかったな。もう2度と書き込むな。マルチもやめろよ。
>>698 マルチコア対応はOSがやってるだろ。
お前今時シングルコア使ってんのか?
>>703 せっかくリンクまで貼り付けてやってんだから文献をちゃんと読め。読んでもググっても理解できないんだったら黙っていろ
そんなゴミみたいなリンク貼る前に日本語を勉強しろ。
横から本末転倒な事を言うが、CPUが1コアだとしても8コアだとしても、MT4と複数EA程度の処理なら余裕 対応してるかどうかなんて論じるだけ無駄 メモリ増やしてストレージ高速化、それでオッケーでしょ
MT4は32bitアプリだからメモリ増やしても意味ないんだな。 ほとんどオンメモリで動くからSSDにしたところで起動が速くなる程度。
旧来のMT4ユーザの望みは、 ・バックテストの最適化の際に、全コア使いたい。 ・複数のリアルな注文処理を同時に処理したい。 この2点に尽きると思う。
全コアをフルに、だろ? 素人でもデフォルトなら全コア使ってるはタスクマネージャー見ればわかるだろ。
MT4は全てのインジがUIスレッド(メインのメッセージループを処理してるスレッド)で動いてる。 だから、256コア1024物理スレッド(ただし1物理スレッド当たりの性能はPenMの1/2レベル) とかいうCPUだと、どんだけコアや物理スレッドが余っててもMT4ごとクッソ重くなる。 WinRT(API)だと自然とマルチコアが活用されるらしいけど、C++/CXとか使ってる奴を見た ことがねーw C++/CLIをあっさり見限った態度とか見てると、C++/CXもどうせWin9が出たら見限るんだ ろ?って気がしてならない。ウミステイクナイ('A`)
頓 珍 漢
とにかく目盛りの文字の大きさが小さすぎるからなんとかしろ
虫眼鏡を買え
拡大鏡のアプリがあるやろ
716 :
Trader@Live! :2014/03/04(火) 18:54:40.02 ID:d25O6aOF
MT4が突然起動しなくなりました。 ソフトをアンインストールした後、再度インストールしなおしましたが、全くだめです。 ネットで色々徘徊して、色々な方法を試みましたが、結局起動せずお手上げ状態です。 windows8で購入して2ヶ月のパソコンです。 今日の昼までは、問題なくMT4を使えてました。 MT4以外は、ネットやメール、その他ソフト、その他FX業者ソフト問題なく使えます。 解決策わかる方いたら教えてください。 お願いします。
>>716 システム復元で使えたころの日にちに戻ってみたら?
profilesの内容を削除(またはコピーして退避)しとくと、デフォルトの状態に戻って起動するんじゃないかな。 無限ループするインジ作ってしまったとき、これやった。
719 :
Trader@Live! :2014/03/04(火) 20:29:35.79 ID:d25O6aOF
>>717 ありがとうございました!
とりあえずは、システム復元で使用可能になりました!
>>718 アドバイスありがとうございます。
かなり初心者なので、勉強になりました!
"VistaやWindows7ではProgram Filesにインストールすると、削除したファイルが元に戻る等の
不具合が発生するらしい"との書き込みを見たので、次回、MT4をインストールしなおす時は、C直下にインストールしようと思います。
レベルの低い質問で申し訳ありませんでした!助かりました!
>>715 hMailServer は
・GUIを表示しないアプリを
・SYSTEMユーザで起動
するので、無理です。
できるかなと思ってやってみましたが、起動すらできませんでした。
タスクマネージャで分かるんじゃね
旧MT4だけどタスクみたらね、確かに二つのコアで動いているように見えるんだわ。 「バックテストの高速化に、MT5を利用する」とかよくネタにあるけど それとは関係のない話かしらん。
MT4はマルチコア使っててもCPUコアフルじゃなく1コア分の性能を分散使用だから マルチコアフルで稼動する事はないんだよねー
二代目のノートパソコンを買いたいのですが、古いノートと新しいノートに同じ業者のMT4を一台ずつ入れても大丈夫でしょうか? 古い方のMT4をアンインストールしてから新しいノートにインストールした方がいいのでしょうか?
727 :
Trader@Live! :2014/03/05(水) 14:35:50.48 ID:2PU1GFok
メタトレーダーでみなさんが使用しているFX業者ってどこですか?
問題なし。 同時に起動して同じアカウントで同時にログインできるよ
この流れは!?C言語から始めろの流れではw
>>725 MT4がマルチスレッドアプリでもマルチコアフルで稼働するとは限らないってこと?
違いがよく分からんわ orz
>>731 全てのWINアプリは、必ずマルチスレッドで動く
往々にしてPCの理屈はオフィス業務に例えると分かり易い
貴方は、仕事Aと仕事Bを交互にできる
電話が鳴れば作業を中断して電話を取り、終われば作業に戻る
これがマルチスレッドで、仕事ではなく貴方自身の能力に大きく左右される
一方で、マルチコアに対応するという事は、
貴方と同僚が同時に同じ仕事を分担して行えるという事だ
この場合、仕事そのものを分担前提に組み直しておく必要がある
2人でレポートを書こう、俺は文章でお前はグラフを頼む
文章が決まらないとグラフが造れないような構造のレポートは、分担できない
>>732 何となくボンヤリとわかったような…w
確かに二人でやれれば仕事は短時間で済むよね!
だったらMT4がマルチスレッドで動いてるということと、マルチコア対応とは別物ということやね!
アリガトン!
わけのわからない喩えが役に立たない好例だな。 そもそもわからないやつにたとえ話で納得させてもわかったつもりになるだけの意味しかない。
735 :
Trader@Live! :2014/03/06(木) 06:39:49.14 ID:VLKskg4k
>>732 横からですが、わかりやすい例えでの説明ありがとうございます。
特に、
「文章が決まらないとグラフが造れないような構造のレポートは、分担できない 」
は納得です。MT5は分担に対応した構造で作られているということですね。
MT5習得へのモチベーションがあがりました。
ただ、国内のブローカーにライブでMT5が使えるところが見当たらないのが・・・(orz)
732のたとえでいいんじゃないかな。 >この場合、仕事そのものを分担前提に組み直しておく必要がある これは「「多数のコアにタスクを分担させて効率よく動くようにプログラムする必要がある」と言うことだろう。 OSのスケジューリング機構だけでは無理だからね。(そもそもプログラム側の話だから) 今、2コアCPUでちょっと時間のかかる計算をさせてタスクマネージャで見てるけど、terminal.exeの スレッド数は7でもCPU使用率は50%前後。 725の言う「1コア分の性能」で、マルチコア環境を効率よく使っていないのがわかる。 ま、「マルチスレッドだからマルチコアで効率よく動ける…(ハズ)」って勘違いを信じてる人は多いからね。
お前プログラム書いたことあんの? MT4でスレッドがどう使われてるかわかってる? その時間のかかる計算てのはまさかインジケーターでとかじゃないよね?
738 :
Trader@Live! :2014/03/06(木) 12:17:15.68 ID:X7GSbOun
どこの業者のMT4がレート変動速いのですか?
>>737 君は一昨日から人のレスにケチばかりつけているが
他人の意見が間違っていると主張したいなら
MT4がマルチコア環境ではタスクを割り振って、すべてのコアを使って効率よく処理していることを自分で説明して
その証拠か文献を示さないと反論にならないんだよ。それがわからないか。
740 :
Trader@Live! :2014/03/06(木) 13:16:56.20 ID:lB941ixd
MT5のソースを見たことも書いたこともないけど。 マルチコアに対応するプログラムを書こうとするならば、今までと異なる書き方になる? MT4だと、start()の中で、そのまま順に処理していく形だけど。 並立して処理をさせるには、並立しても問題ない関数を指定してあげないといけなかったり。 グローバル変数を多用していたなら、変数が変わったかチェックしたりするような、ものが欲しいよね。 結構、マルチコアに対応するプログラムって難しいんじゃない? 素人なのでわからんけど。
>>739 お前が何言ってるのかさっぱりわからんから無理。
>>740 MT5ではバックテストを複数コアやPCを使って同時に実行できるので
最適化が速くできるってだけだよ。
プログラムの構成に変わりがあるわけじゃない。
743 :
Trader@Live! :2014/03/06(木) 14:16:50.43 ID:lB941ixd
複数のEAを同時にバックテストしたときに、効率的に振り分けるならわかるのだけど。 1つのEAを2つのコアで処理して、効率化するのもできるのかな。 素人考えで、手順を踏んでプログラムを処理する限り一つのコアで処理するしかないように思える。 たとえそれを、二つのコアA・Bで分担するとしても、Aのコアで前の処理が終わるのを待機してから、 Bのコアで処理をするのじゃないのかな。 先のタスクマネージャで二つのコアがフルに処理できないのはその理由かしらん。 と思うと、二つのコアでフルに処理させるには、プログラム自体に仕掛けが必要だと思うんだが。
いや、その通りだよ。 ただ、一つのEAをライブで運用しているときに マルチコアで実行する必要なんか、普通ないだろ。 あるなら、DLL作って、そのなかで並列化すればいい話で、 MQLにそこまで望んでも仕方ない。
745 :
Trader@Live! :2014/03/06(木) 15:15:37.32 ID:lB941ixd
そうですね。一応バックテストの効率化ということで。 結局、MT4とMT5の違いって何なのでしょう。 スレをまとめてみると MT4 一応マルチスレッドで、マルチコアが利用できる。ただし、同時処理ではない。 MT5 マルチスレッドで、マルチコアが利用できる。同時処理が可能。つまりコアフル可能 のような感じかな。でもMQL4とMQL5でプログラムの構造に差がないとするなら、 MQL5のコンパイラで、同時処理が可能になるようにコンパイルしている。 と、推理するけど。間違ってたらどなたか訂正を。
746 :
Trader@Live! :2014/03/06(木) 16:57:55.98 ID:arHtMWax
今現在の MT4最新のバージョンっていくつ?
>>745 微妙な表現の怪しさはあるものの正解だよ
748 :
Trader@Live! :2014/03/06(木) 18:26:59.21 ID:AKG7gWr9
MQL5は、プログラムの構造(文法)そのものに、 マルチコアができるようになっている いわゆるオブジェクト指向ってやつ、クラスとか。 わかり辛い比喩を使うと、 MQL5では、オムレツを作るときに、 コンピューターが、玉子焼きとケチャップごはんを同時に作ることができる ところが、MQL4では、どこからどこまでの作業が 玉子焼き作りか、ケチャップごはん作りか分からなかった だから、順番に処理していくしかなかった
>>748 オムライスとオムレツの区別がつかずに許されるのは小学生までなんだからねっ///
MQL4低負荷時 コア1君「いやぁ余裕だな。俺1人でMT4しつつ裏でyoutubeも流せちゃうわw」 コア2君「あ、じゃあ電気もったいないから俺寝てるわ」 MQL4高付加時 コア1君「ちょっと今日のMT4やべえよ…youtubeまでは無理だよ><」 コア2君「じゃあ俺youtubeやるわ。」 MQL4超高付加時 コア1君「もう無理だって!いっぱいいっぱいだよ!誰か、はよ!」 コア2君「ごめんね、余裕があるけど助けられん。youtubeは任せとけってw」 MQL5超高付加時 コア1君「もう無理(ry」 コア2君「俺の仕事まだyoutubeだけだし、手伝ってやるよ」
理解してないくせにいい加減な比喩を並べてデタラメな説明するのはやめてくれ。
>>748 おいおい、うそつくなよ。
MQL5はオブジェクト指向だが並列処理のサポートはないだろ。
知ったかもいい加減にしろ。
>>744 1つのEAならどうだけど、複数のEAを同時に動かす場合は有効だな。
まぁEAは前から別スレッドなので今さらだけど、MQL4側の処理で
制限を受けるのでよっぽど重いEAじゃないとメリットなさそうだけどね。
>1つのEAならどうだけど <1つのEAならそうだけど
無知だったり理解が足りないのは別にどうってことないですけど、 それをあたかも本当のように力説するのはやめていただきたいですね。
オブジェクト指向言語だと(JavaやC#のように)クラスでスレッドを抽象化して並列処理をサポートするのが一般的かもしれないが MQL5だとC++レベルの並列処理とはなんの関係もないクラスだよな。たぶん。
757 :
Trader@Live! :2014/03/06(木) 23:23:08.04 ID:lB941ixd
うんんん。 つまるところ、MT5にしても、1つのEAを並立化させてバックテストを高速化させるようなことは できない。でよろしゅうございますか? そうだと、余計MT5にメリットを感じないですねえ。
俺らにとってはツールという意味しか持たないので、何ができてどう便利なのかが全て 原理は割りとどうでも良かったりする とはいえ原理を知ってこそ使い道が分かるってのも否定はしない ただ正確な比喩である事はそれほど必要な事ではない
760 :
Trader@Live! :2014/03/06(木) 23:56:11.52 ID:lB941ixd
わかった!かな。
>>758 はオプチテストですね。
オプチなら、各プロパティ毎にテストを行うわけだから。
MT5において各テストで並立化ができると、、。
hMailServerを紹介して下さった方、いらっしゃいますか? 実は、とても困った問題が昨日発生しました。 決済サインによって、メールが送信され、テキストに書かれた直後(ほぼ同時に)、 別な通貨の買いや売りのサインが発生して、メールが送られ、それが上書きされてしまい、 最初の決済サインのテキスト文が無かったことになる事例が発生しました。 これは、かなり稀なことなのかもしれません。 そこで、テキストに一行ずつ書き加えるように出力するのは難しいでしょうか? (何行あっても、UWSCで一行づつ確認して処理することは可能なので) 駄目ならば、監視サイクルを極力短くし、発生したら諦めるしかないですが。。。
>>761 ReceiveFromMT4 関数の中の CreateTextFile を、
OpenTextFile ファイル名, 8, True, 0
と置き換えるといいと思います。
その場合、延々とファイルが肥大化するので、そこだけ注意してください。
また、 WiteLine から Write にしたほうがいいかもです(改行の問題)
いずれも、試してません。
中身はUWSCのスクリプトとたいして変わりないVBSなので、探せば情報はかなりあります。
ご自分でお調べになったほうが早く解決できると思いますよ(^^)
>>764 前に書きましたけど、VBScript は hMailServer の管理画面で reload しないと変更が反映されないので注意してください
766 :
Trader@Live! :2014/03/07(金) 13:15:04.64 ID:AuP/Q1eg
俺、MT5になればくそ重いEAが並列処理されて、軽くなるのかと思ってたわ。
>>743 はひどいミスリードだな。
>>765 ↑の分かり易い完璧なマニュアルにしっかり書かれてあったので、
そのことも、すっかり頭に刻まれておりますので大丈夫です。
本当に細かいお気遣いをして頂き、ありがとうございます。
関数を作って、配列を参照渡しするようにしたのですが、Close、High等は constant variable cannot be passed as reference と表示されてうまく行きません 別に配列を作ってClose等をコピーするしか方法はないのでしょうか? 他にやり方があれば教えて下さい。
769 :
Trader@Live! :2014/03/08(土) 11:16:12.11 ID:3cFx1w7R
>>768 以下のサンプルコードのようにconstを付ければ解決すると思います。
constを付けないと関数内で配列の値を書き換えることが可能なため、
コンパイル時に配列値を変更してはならない配列変数を渡すコードを
見つけるとコンパイル段階でエラーにしているのだと思います。
void func(const double c[])
{
Print(DoubleToStr(c[0],Digits));
}
int start()
{
func(Close);
return(0);
}
>>769 解決しました!数時間ggって、最後の最後ここで質問して良かったです( ;∀;)
ありがとうございます! (ちなみにconst近辺には行き着いていましたが「なにこれOnCalculate()?MQL5?カンケーねーじゃんstart()の代わりじゃん」とスルーしたのは内緒です)
外出先でも使えるようにタブレットでも使えないのか
win8なら余裕じゃね
糞バージョンアップのせいで自作EA書き換えるの大変だったわ
時間や通貨限定で構わないので、 5時間以内で10pipsで良いので 確実に取れるインジケーターを教えて下さい
>>775 仮に、そんなものがあるとしたら、
世界の貧困問題は解決しているよ。
日本政府だって、消費税を上げる必要もなく
そのインジケータで稼げばいい。
えぇー、じゃあ俺たちは何をやっているんだ。。。
778 :
Trader@Live! :2014/03/09(日) 14:27:31.87 ID:MOaXCerR
政府・中央銀行がインジケータで稼ぎまくれていたらすげー
>>777 「確実に取れる」という点だけは諦めれば良い。
基本的に、少人数で少額で使っているだけなら
取れる可能性が高いインジケータなら存在する。
>>780 100万円で教えてあげよう(´・ω・`)
782 :
Trader@Live! :2014/03/09(日) 15:52:28.30 ID:dDKc9zH4
ワンクリック注文すると 約定通知メッセージ 出るんやけど 出さない設定どなたか知りませんか?
mt4のビルド600以前とビルド600以降は別物すぎてワロタ 互換性無視でバージョンアップしたら混乱するやろw mt4の進化版はmt5に任せとけば良かったんや ソース書き直しで数日潰してもうたわ(´・ω・`)
>>781 了解です。それで儲かったお金で支払います
遅れた分は消費税の年利8%で上乗せします
インジ まだーーー
>>785 これは本当にごく一部の人しか知らないインジなんだが、
Forex-TSD のエリートセクション・アドバンスドに nmaシリーズのスレがある。
そのレス内にあるひとつのインジが便利だよ。
インジ まだーーー
788 :
Trader@Live! :2014/03/10(月) 01:58:41.72 ID:2Tz+RPrD
>>775 オプションの売りをやったら。
99.9%勝てるよ。
ただし、ある程度儲かったら、止めてね。
そんなには勝てない
790 :
Trader@Live! :2014/03/10(月) 12:30:12.46 ID:2Tz+RPrD
オプションの売りはほぼ勝てるって。
勝ち負けの基準にもよるが、99.9%勝つってことは1000回に1回しか負けないってことだぞ
1万円の勝ちを999回重ねたところで、 1億の負けを1回喰らえば・・・・
1回の負けで999回の利益をすべて吐き出してさらに借金を作る それがオプションの売りでしょ だから788にはある程度で止めろと書いてある ナンピン+マーチンやトラリピと同じ図
ごめん。かぶった
でもそんな話しをしても無駄無駄。 賢い奴は、ふふ〜ん オプションで大負けする時は、 ファンダメンタルに異常が起きた時だけでしょ? 普段から政治経済情勢に注目していれば確実に避けられる話しだ。 と言って聞かないからな。
311の阿鼻叫喚を思い出すだけで寒気がする オレは相場脳にはなっていなかったんだな プットの買いすら思いつかなかった(w
FXですらメンテ明け急変でポジ0口座残高0の悪夢見るのに オプションの売りとかノイローゼになるレベルw
質問でないばかりかメタトレーダーにすら関係ないな
メタトレーダーのライバル()のトレードシグナルを使っていた、 ひまわり証券は、顧客がやらかした先物・オプションのおかげで、 いろいろ撤退する羽目になったという。
半透明の図形描けると最高なんだけど
世界情勢に注目してれば相場の急変に対応できるとか勘違いしてるアホほどほどにしろよw
質問スレとして機能しておりません
便所の落書き=2chなんてこんなもん Googleからも違法性あるサイトと認定w
って言われてもな〜
806 :
Trader@Live! :2014/03/14(金) 08:47:28.02 ID:5+/tSJgS
MT4のlogの保存先を変更する方法ないですか? ググるとログの自動削除とかは乗っているのですが・・・
>>806 フォルダ自体をハードリンクで別の場所にするみたいなのは?
>>806 フォルダのショートカットを作成するとかは?
809 :
Trader@Live! :2014/03/14(金) 15:59:06.56 ID:5+/tSJgS
>>807 ,808
レスありがとうございます
設定で保存フォルダは変更できないのですね
冗長目的ではないのですが、バックアップソフトでミラーリングすることにします
通貨ポイントのSYMBOL_POINTが0.00000だと0になるんだけどこれはなぜなんだ? 馬鹿だからわからねー 0.00001になるんじゃねーのかよ
811 :
810 :2014/03/16(日) 00:31:43.66 ID:3PYN0sFF
hMailServerを紹介して下さった方、いらっしゃいますか? 実は色々やっていて、混乱やブッキングが発生しました。 これはMT4を2台使えば、問題無くスッキリしそうです。 つまり、一台のwin7パソコンで、 MT4@のメール情報をmail-from-mt4@.txt MT4Aのメール情報をmail-from-mt4A.txt それぞれに出力することは可能なのでしょうか? これ以上に下手に続けると全てが滅茶苦茶になりそうなので、 度々ですいませんが、教えてください。
>>812 MT4@から送られるメールと、MT4Aから送られるメールに、
特定可能な特徴がないと難しいです。
件名や本文に、「これこれの文字列が含まれていたら@、A」と特定可能な
条件はありませんか?
もしくは、メールの送信先に gmail を使っていいなら
自分のアカウント
[email protected] 自分のアカウント
[email protected] のように、メール送信先を変えることで、 hMailServer で判定することも可能です。
現在キャリアメールを宛先にしているようなら、
Gmail からキャリアメールに転送するように設定する必要があります。
考えている@とAは違うインジのサインなので、 件名に特定できる文字列はあります。 もしかしてMT4が1台でも振り分け可能だったりします?
>>814 プロバイダのファミリーメールとヤフーメールなら、
この2つのアドレスに振り分けて送られても混乱しません。
理想は、一台のMT4で、 ある特定のインジの件名のものは、mail-from-mt4@.txtに、 (このインジだけは、ex4のため何も書き換えできないため) その他のインジ全ては、mail-from-mt4A.txtに出力されれば、混乱はなくなります。 不可能なら、2台のMT4で、送信先メールアドレスをそれぞれ変えることは可能です。
>>815 それならMT4、1つでできますね。
Events\EventHandlers.vbs に書いてる
ReceiveFromMT4 プロシージャを、以下のように書き換えるといけると思います。
すでに原型はないと思いますが、元の私のサンプルでいうと、以下のファイル名設定部分の変更です。
filename = objShell.ExpandEnvironmentStrings("%TEMP%") & "\mail-from-mt4.txt"
ここを、
If oMessage.Subject = "USDJPY" Then
filename = objShell.ExpandEnvironmentStrings("%TEMP%") & "\mail-from-mt4-01.txt"
ElseIf oMessage.Subject = "EURJPY" Then
filename = objShell.ExpandEnvironmentStrings("%TEMP%") & "\mail-from-mt4-02.txt"
Else
filename = objShell.ExpandEnvironmentStrings("%TEMP%") & "\mail-from-mt4-03.txt"
End If
というような感じに変更します。
見てお分かりのとおり、 oMessage.Subject に件名が入っています。
実際には、「件名がXXXで始まるとき」という判定にしないといけないかもしれません。
それ自体は一般的なVBScriptの書き方の範疇なので、自分で調べてみるといいです。
>>818 ありがとうございます。
やってみます。
水を差すようでアレだが・・・ そもそもインジでメールって何の意味が有る? メールは大なり小なり必ず遅延するし、メールを見てから何か動作を起こしてたら更なる遅延を招く。 せっかく頑張っても何の役にも立たないと思うぞ。
>>820 そうなんですよ。数分から10分以上のこともざらです。
だからテキスト監視で、大転換時に秒単位で即効自動処理させるためです。
そこから、この話は始まっています。
>>820 話のはじまりはどこだったかなーと探してみて
>>666 ,667
あたりでした。
ex4 しかないけど SendMail をどーにかしたい、っていう要件ですね。
>>822 そうですね。
エントリーサインは出た後の動き、押し戻しを見て慎重に入るもの。
もしそれが出来なかったり、分からないときは諦めればいいだけ。
でも、せっかく利が順調に伸びて、決済サインのメール遅れで、
ストップに引っかかってガッカリすることが多かった。
それが今は、最低限の利は確保できるようになりました。
何より、最近は安心して外出できるのは大きいです。
安心か?ホントにそうなのか?なんかメール来るたびにビクッとしそうだがw
ビクっとしそうなのは同意だけど、まぁ本人が納得しているのなら、それ以上はこのスレで言及すべき問題でもないw
安心は言い過ぎたかも。 一番嫌なのは行って来いの展開です。 最近多くて。。。雑談になっちゃってますね。 すいません。これで落ちます。
827 :
Trader@Live! :2014/03/17(月) 14:58:29.34 ID:HujdkhVD
持っているポジションを指値決済したい場合どのコマンドを使えば良いでしょうか 新規注文する際のOrderSendを使えば指定できると思うのですが、その段階ではまだ決済の指値が決まっていません OrderCloseを使用しpriceに定数を入れて色々いじってみましたが何の値を入れても成行で決済されてしまいます よろしくお願いします
829 :
Trader@Live! :2014/03/17(月) 15:36:18.43 ID:HujdkhVD
書き方が悪かったかもしれないので、↑に補足すると、 足が確定した時点で終値がラインを抜けていたら、 矢印サイン、アラート音、ポップアップサインを出してほしいってことです。
if (SoundON==true && shift==0 && !TurnedUp) if (SoundON==true && shift==0 && !TurnedDown) の2行のshift==0をshift==1にすればいいように思う。 現在足のARROWも表示させたくないなら、 UpTrendSignal[shift]=bsmin[shift]; DownTrendSignal[shift]=bsmax[shift]; の2行の前にif (shift!=0) を加えるかな。動作確認はよろしく。
>>832 そこだけで良かったんだ。
俺、基本的なことが分かってなくて、
そこに-1入れ、駄目でほかも弄り回して動かなくなっちまったんだ。
さっそくやってみるわ。サンキューw
>>832 dクス。上手くいったみたい。
実は、これのMAをEMAにしたいんだが、
全く分からん。これって容易じゃないのかな。
Bands.mq4の中身の >iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i); を >iMA(NULL,0,BandsPeriod,BandsShift,MODE_EMA,PRICE_CLOSE,i); に変えればおk それか別に自作でBansを作って iBansの部分をiCustumにするか
837 :
Trader@Live! :2014/03/22(土) 06:43:03.55 ID:IiA4YGMw
int cnt, CurrentPosition; こういう書き方をすると cntが変数 CurrentPositionこれも変数なんですか? もし変数なら int cnt; int CurrentPosition; この書き方ではだめなのですか?
そうです。 だめじゃないです。
>>837 int って二回書くのが面倒だから、一つにまとめてるだけ
840 :
Trader@Live! :2014/03/22(土) 07:30:28.32 ID:IiA4YGMw
特定のインジを時間指定して 止めるインジって存在しないですか?
有効にしたい時間でだけiCustomで呼ぶインジ作れば
ちょっと聞きたいんだけどmt4のビルド600以降ってmql5も動くようになったの?
も、というか4は捨てて5になったのか コンパイル済みの4は動くけどソースいじるには5にしなきゃならない?
きっぱりと5になったわけじゃないのか 4の古い構造を残しつつなんだな 相当ややこしいな
build600 で動くようになったのは MQL4 でも MQL5 でもなく newMQL4 っていう別の言語と思った方がいい あと,ソースをいじる場合でも MQL4 のままでいけることもあると 俺の少ない経験では感じた
d 古いmql4もコンパイルできたわ mql5は内部構造が全く違うから合わせられなかったか
条件発生時に、(ASK + 10 * Point)をKAKAKUに代入しています その後現在価格がKAKAKU以上になったらエントリーさせたいのですが if(条件発生) { KAKAKU = ( ASK + (10 * Point) ); } Print("KAKAKU=" + KAKAKU) //実際に動作させるとここでは意図したとおり通り正常に条件発生時プラス10ピプスの価格が入っている事を確認済みです if( Close[0] >= KAKAKU ) //ここで期待した動作をしてくれずエントリーしてくれません. { (エントリー) Print("TEST"); //動作させても"TEST"はプリントされません } "TEST"がプリントされないため (エントリー)部分の if を通過していない事は分かるのですが、なぜ通過しないのかが分かりません。 何か間違いを犯しているはずなのですが、どこで間違えているのかが分かりません。 ご指摘いただければありがたいです。
Close[0]がKAKAKU以上になってないから。 その変なコード通りならだけどな。
>>848 記されているソースを見る限りでは間違いはありません
超エスパーレスしてみる double KAKAKU; を static double KAKAKU; にしてみたらどうか
回答ありがとうございます。 やはりコード自体はあっているという事と、staticにしてもダメでしたので、他の部分で何か間違えているという事になりますね。 テスト実行時にclose0 >= KAKAKU も、もちろん満たしていますので他の部分の記述を確認してみます。 ありがとうございました
エスパーすると、Close[0]がKAKAKU以上になる前に条件が発生して更新されている。 せめてAskとかClose[0]とか書け。 それすら間違ってるようでは可能性は無限大。
>>851 その可能性のがあるか。
>>852 ローカル定義してるならグローバルに定義するかstaticをつける。
と、思ったらstaticでダメだったのかw 実際のコードを見たら一瞬だろうけどな。
>staticにしてもダメでした っていうかstaticにしなきゃならないんじゃないの? それともグローバルに定義してるのかな >if(条件発生) ここが怪しい if(Close[0]>MA) KAKAKU=Ask+10pips if(Close[0]>=KAKAKU) Print("TEST") とかやってるんじゃないの この場合はif(Close[1]>MA)にするべき
そんなわけのわからないコードを書いてするべきとか言われても...
何を言いたいか伝わらなかったかな 上のコードじゃ絶対に下の条件文に入らないってことなんだけども
そんなのそのMAだかに何が入ってるかによるだろ。
MAつうのは仮の値 イメージとしては移動平均 よく移動平均超えたらエントリーしたいんですけどーみたいな書き込みあるじゃん
Close[1]>MAだとしても同じようなもんだと思うが。
>>853 の意味以上のものがあるなら言ってくれ。
まあどうでもいいよ いろいろ想像したところで本人がいなきゃどうにもならん
そう言ってるのにごく僅かな例を出したのはお前。 お前の例で言っておくと、それを解決するには普通はクロスしたかどうかを判定する。
個人的に853を支持
865 :
Trader@Live! :2014/03/23(日) 03:45:22.29 ID:AFKj3Rr+
>>848 Close[0]=Bid=Ask-スプレッド
ですから、
Close[0]>=KAKAKU
の条件は
Ask-スプレッド>=KAKAKU=Ask+10*Point
つまり
スプレッド<=-10*Point
となります。
スプが-10pipsの業者はあり得ませんから、エントリー出来ないと思われます。
>>856 さんが示されているように、
if(Close[1]>=MA)
とされるのが吉です。
Close[0]にしたい気持ちはわかりますが、Close[1]等を用いてください。
Close[1]は確定した値ですが、Close[0]はBidと同じですから、刻々と変化していることにご注意ください。
Close[1]でもだめな場合は、他にも原因があるわけですが、それはわかりません orz
866 :
Trader@Live! :2014/03/23(日) 03:52:57.89 ID:AFKj3Rr+
>>865 で
☓ if(Close[1]>=MA)
○ if(Close[1]>=KAKAKU)
です。
念のため
867 :
Trader@Live! :2014/03/23(日) 05:54:12.05 ID:dQZ+WO2P
MT4で注文を出したらMT4を閉じても注文は有効ですか?
Pointはその通貨の最小単位だから10*Pointは10pipsじゃなく1pipsじゃね あとAskはスプレッド分含まれるから注意
AskもClose[0]とともに変化するのだから、Askより大きいKAKAKUを、BidであるClose[0]が上回る訳がない 条件文の手前でKAKAKUだけをプリントするような片手落ちをなぜするかねぇ Close[0]もプリントすれば上回っていないことは一目瞭然だろうに
条件発生とかいうのが適切ならそんなバカな話にはならない。
要は条件発生に問題があってKAKAKUが固定されていないってことだね
質問者のレスをちゃんと見てればそんなバカな話をするはずがない。
↑↑↑↑ここまで 価格.com のステマ↑↑↑↑
どなたかbuild600で使えるHi-lowバンド作ってくれませんか?
877 :
Trader@Live! :2014/03/24(月) 00:37:48.18 ID:c0q74xqA
MT4で注文を出したらMT4を閉じても注文は有効ですか?
国内業者でEA動かせる業者はどこが良いですか? EA使える国内業者って何社くらいあるんでしょうか?
>>877 もちろんです
宅配ピザを頼めば、電話を切っても届きますw
ウメーw
ピザだけにwww
>>876 ありがとうございます。
コンパイルできました!
883 :
Trader@Live! :2014/03/25(火) 07:04:34.60 ID:hEEZQ9XC
1つのEAで複数の通貨の取引をしたいと考えており、ティックの値の取得で困っています。 現在のティックの値をiClose(通貨)コマンドで逐一取得しているのですが、 このコマンドは指定の通貨のBidの値を取ってきていますが、Askの値を取得するにはどうすればよいでしょうか? 今開いているチャートの通過であれば単純に“Ask”コマンドで得られると思いますが、 他通貨の場合どのようにすれば取得できますか。
MarketInfo(symbol, MODE_ASK);
885 :
Trader@Live! :2014/03/25(火) 08:08:21.52 ID:hEEZQ9XC
886 :
Trader@Live! :2014/03/25(火) 08:28:42.45 ID:XlJhKgzO
下のMQL4コードについて質問です。 Build 600以前はWingdingsコード表通り『反転文字の@』の一文字がチャート右上に表示されていましたが、 Build 600以降だと『@』と『左を指差した手』の2文字が表示されてしまいます。 Build600以前の表示をさせたいのですが、どのようにしたら宜しいでしょうか? string obj_name = "xxx"; ObjectCreate(obj_name , OBJ_LABEL, 0, 0, 0); ObjectSet(obj_name , OBJPROP_CORNER, 1); ObjectSet(obj_name , OBJPROP_XDISTANCE, 1); ObjectSet(obj_name , OBJPROP_YDISTANCE, 1); ObjectSetText(obj_name , CharToStr(139+1), 18, "Wingdings", Red);
試してないけどこんな感じでいけるのでは。 uchar c[1] = 139+1; ObjectSetText(obj_name , CharArrayToString(c, 0, 1), 18, "Wingdings", Red);
と、思ったら同じようなことなのか。 それだとひょっとしてMT4のバグかもね。
と思ったけど、現象からみるにその場合はASCIIコードそのままを渡すように しないとダメなのか。
890 :
Trader@Live! :2014/03/25(火) 13:25:32.83 ID:XlJhKgzO
追加情報です。 build610で下記コードをコンパイルし0〜255全ての文字コードを確認すると 129〜159、224〜252の範囲が『@+左向きの手』で表示、他は正常表示されました。 ビルド509の下記コードのex4ファイルをbuild610上で動かすと全ての文字コード が正しく表示されました。 for (int y = 0; y < 16; y++) { for (int x = 0; x < 16; x++) { string obj_name = "LABEL_" + y + "_" + x; ObjectCreate(obj_name , OBJ_LABEL, 0, 0, 0); ObjectSet(obj_name , OBJPROP_CORNER, CORNER_LEFT_UPPER); ObjectSet(obj_name , OBJPROP_XDISTANCE, x * 30); ObjectSet(obj_name , OBJPROP_YDISTANCE, y * 30); ObjectSetText(obj_name , CharToStr(y*16+x), 15, "Wingdings", Red); } }
>>890 mql5.com の Service Desk に聞いてみたほうがいいかもです。
バグであればなんらかの返答をくれます。たぶん。
>>892 // Show signal if it is a fractal and matches last zigzag high value
と
// Show signal if it is a fractal and matches last zigzag low value
のコメントが付いている if 文ブロック内で、
SendMail すればいいですよ。
>>893 それでいいはずだよな。それで下記の2箇所に加筆したんだが、
MT4立ち上げ直後に大量メールが送られ、チャート上はLoSignだけが出ているのに、
一旦HiSignメールが送られたと同時くらいにLoSignメールが送られてしまう。
メールだけ見ていると、何がなんだか分からない状態なんだよ。何でだろう?
// Show signal if it is a fractal and matches last zigzag high value
if(fr_support_change == true && fr_support == zzlow)
{
// Show arrow on fractal and pricetag
ExtMapBuffer1[i+2] = fr_support - nShift*Point;
SendMail("ZigZag LoSign","LoSign"); //加筆部分1
} else
// Show signal if it is a fractal and matches last zigzag low value
if(fr_resistance_change == true && fr_resistance == zzhigh)
{
// Show arrow on fractal and pricetag
ExtMapBuffer2[i+2] = fr_resistance + nShift*Point;
SendMail("ZigZag HiSign","HiSign"); //加筆部分2
}
}
return(0);
>>894 ちょっと説明が不足していました。
if文ブロック内に追加するだけだと、
for(int i = limit; i >= start; i--)
この for ループ回数だけメールが送信されてしまいます。
なので、
if (i == limit) SendMail(...);
とするようにすると、大量にメールが送信されなくなるはずです。
すみません、大ほらをふきました。 i == limit で、High/Lowの条件を満たすとは限らないですね。 「一番最近のシグナルが出たらメール」 ということを望んでいると思いますので、 実はわりと面倒ですね。。 (1) 最後にアラートメールをした Bars (forの変数でいえば i)を保存するグローバル変数を作成 (たとえば int lastAlert = -1; と宣言) (2) 条件判定の if ブロック内で、以下のような処理を追加 if (lastAlert > i) { SendMail(...); lastAlert = i; } とすればいいと思います。 動作確認はしてないです。
if (lastAlert == -1 || lastAlert > i) { } ですわ。。
あーでもそーすると、インジケータ初回動作時は必ず大量メールがいってしまいますね。 「初回起動時はメールいらない」なら if (lastAlert > i) でいいです。 「初回起動時も、一番最後のシグナルはメールがほしい」っていうなら、 もう少し条件を工夫しないとだめです。 連投すみません。
あれあれ、分からなくなってしまった。
>>895 であえて1分でパラ数値小さくして
確認してて、大丈夫と思ったんだが、
それではまずいのか?
あれあれ、分からなくなってしまった。
>>895 であえて1分でパラ数値小さくして
確認してて、大丈夫と思ったんだが、
それではまずいのか?
>>901 相変わらず動作確認せずで申し訳ないですけど、
>>895 だと「大量にメール送信がされない」だけでなく、「期待するシグナルでのメール送信」もされないと思います。。。
>>902 今1分で20回近くサイン見てるが、
不思議にチャンとしたサインが
ジャストタイミングで送られてる。
これは、たまたま偶然ってこと?
>>903 お、私がさらに勘違いしている気がしてきました。
>>895 で、シグナルごとにメールが届いているなら、いいですね。
>>904 起動時の大量メールもなくなったし、
サインに正確にメールされてるみたいですよ。
このインジは2本遅れでサインが確定するんですが、
リペイントしない代わりにHiやLoのサインが何度か続くときもある。
それもジャストタイミングで出てるみたいですよ。
再度 dクス
ユーロ円で、トレンドとレンジを 明確に判断できるインジケータを教えてください。 できれば、パラメーター設定込みでお願いします。
ちなみに 1分や5分の短期トレードです。
そんな物はない
じゃあ、漠然としててもいいです。
>>906 トレンドとレンジを厳密に定義できるなら、作ってやれなくもないが
トレンドとレンジの定義を教えてください。
>>911 貴方が定めた時間範囲内において、貴方が定めたレート幅の上限と下限の付近を行ったり来たりするのがレンジ相場です
対して、貴方が定めた時間範囲において、貴方が定めた基点から見て、レートの上下変動に貴方が定めた基準において明確な方向性が見れるのがトレンド相場です
ID:uMBlWoWuからマジキチ臭を感じる…
春なんだよ(察しろ
盛大な釣り針だなあ。と思いつつ釣られてみる。
>>915 > じゃあ、
>>912 でいいのでください。
では、貴方(此の場合、
>>912 )が定めなければならないですね。
>
>>910 は作ってくれるんですよね。
「ただで/無償で/0円で」とは一言も言っていないので、普通に考えると有償でしょうね。
※ 私は
>>910 ではありません、念のため。
げ、私も盛大に間違えたので書き直し。。。
>>916 は無視してくださいな。
-----
>>916 書き直しここから-----
>>915 > じゃあ、
>>912 でいいのでください。
では、貴方(此の場合、
>>911 ,915)が定めなければならないですね。
>
>>910 は作ってくれるんですよね。
「ただで/無償で/0円で」とは一言も言っていないので、普通に考えると有償でしょうね。
※ 私は
>>910 ではありません、念のため。
-----
>>916 書き直しここまで-----
いやー、春だねー。 香ばしい輩が二人も。
919 :
swingpointview :2014/04/01(火) 14:33:19.12 ID:PwSL2fWw
どなたか詳しい方、お知恵を貸してください。 初心者専用板で、swingpointviewが600アップグレードでコンパイルできなくなった 問題へのアドバイスとして全ての_Pointを_Point1に変更するというのがあり、 試してみたところ、コンパイルのエラーはなくなったのですが、チャートに 表示されません。 何か考えられそうな原因はあるでしょうか?
誰か、SwingpointviewのMT5版、作ってないですか?
>>920 そのソースを見て、そこにある問題点を探るのも非常に億劫なのだ
プログラミング経験が無さそうだから言うが、他人のソースを読むというのは一種の暗号解読に近いんだ
そのロジックが分かっている場合でも、時間はそれなりにかかる
往々にして1から書き上げた方が楽とさえ思えてしまう程に、根気がいる作業なのだ
なので、作ってる人って募っても、あまりいないんじゃないかなぁと
貴方がその言語を勉強した方が多分時間的には早く、望むものが手に入る
というのがプログラミング関係のスレでは定番回答である
それとは別視点でアレだが
5系のMT4で自動アップデート停止処置をしたものを使うのではダメなのかい?
それならググれば方法も出てくるし、当面の問題解決には1番早いと思われる
>>919 _Point→_Point1と、
iHighest(0,0,・・・);→iHighest(NULL,0,・・・);
iLowest(0,0,・・・);→iLowest(NULL,0,・・・);
にしてみてください。
おまえらサイバーMT4のビルト509にどうやって戻すか知ってる?
チャートの最大バー数を10000にしてるのにrates_totalの値が10001以上になるのは何故ですか?
チャートの最大バー数はあくまで表示するバー数であって、 ヒストリのバー数とは別だから。っていう単純な話じゃないのか?
なるほどー
15分足の過去チャート(ユーロ円)をスクロールをしてて気付いたのですが 3月上旬ごろから突然1時間足に切り替わってます・・・ 気付かなかったら結構怖いですが こういうことが起きる原因て何が考えられるのでしょうか?直す方法ありますか
929 :
swingpointview :2014/04/04(金) 19:04:26.28 ID:dAETl5/i
>>922 ありがとうございました。
アドバイスいただい内容では表示しなかったので分からないなりに色々と
やってみたところ、120行目と123行目の
OBJ_TEXT,の後の,0,を,NULL,に置き換えることで表示するようになりました。
本当に助かりました。
930 :
Trader@Live! :2014/04/04(金) 22:41:38.88 ID:ZzIblURN
Meta4のbuild604を使ってるんだけど、604から更新が自動になったの? それもPOPもなしに勝手に裏で更新される? WIN7でユーザーアカウントを通知の設定にしてるんだけど、3月まではなにも表示されなかった 4月から起動毎にMETA4がPCへの変更を要求するようになった 変なのを盛ろうとしてるのか、挙動不審なんだが FOREX.com(フォレックス・ ドットコム)のでだが、他社のでは同じ症状出てますか?
俺も4月から同じ症状だわ OKを選択すると勝手に最新にアップデートされてしまうので毎回キャンセルして維持してる
933 :
Trader@Live! :2014/04/04(金) 23:29:44.80 ID:ZzIblURN
>>931 >>932 アップデートの事だったのか・・・
アップデートされると610か、不具合で騒動起きてるんですね
アップデートしなくても使えてるから、そのままで行くわ
今現在の最新のMT4のバージョンっていくつ?? 最新のだとインジとか前のが使えるってきいたけどほんと??
please fuck off
938 :
イベリコ :2014/04/05(土) 17:56:54.45 ID:VBdXooJq
__ / 〉 __ \ `Y´  ̄ く_/ ~γ´ 〉. . .ヽ ! { ( l l ) | `、 ヽ ノ コンパイルたくさんしたら、お金と髪の毛が増えるて、本当ですか? `し ⌒ し" 一‐し´
928ですが初心者スレで聞いてみます スレ汚し失礼しました
938ですが初心者スレで聞いてみます スレ汚し失礼しました
941 :
Trader@Live! :2014/04/06(日) 20:54:00.42 ID:LLctC2iT
すみません。一昨日MT4デビューした初心者です。 インジケーターに不具合が出て困ってるのですが 某インジケーター集のサイトで「kairi」と 「Period_Converter_Opt.mq4」を無事にインジケーターズのファイルに ダウンロードしたのですが、ローソク足が更新されても乖離のインジだけ 更新されず、おいてけぼりになります。他のインジはちゃんと進むのに。 あと3分足や2時間足を表示したいのでPeriod_Converter_Opt.mq4入れたの ですが、マニュアル通り一分足のチャートにカスタムの Period_Converter_Opt.mq4をドラッグ⇒ドロップが出来ません。 カーソルはドロップ状態で一分足チャートまで持っていけるのですが ボタン離しても音沙汰なしです。 上記の二つの不具合はどうしたら解決できますか? どなたか詳しい方おられましたら御教授のほど、お願い致します。
>>941 MT4 はBuild 600前後で
ヒストリカルデータのフォーマットが変わりました。
結果、オフラインチャートを使うインジは機能しません。
諦めるか、改造方法を調べて改造するかないかと。
ku-chartのオフラインチャートは表示できますけど、どうなんでしょうか?
droidMT4で取引してるんですけどMT4みたいにレポート出せないんですか? これがないと確定申告するときの年間取引報告書が作れないのですがどうしたらいいのでしょうか
バージョンアップでWin版ですら阿鼻叫喚なのか メインのWin機ではバージョンアップしても問題なかったけど macで使ってる方が完全に起動不可で終わってしまったわ 困ったもんだねー
947 :
941 :2014/04/07(月) 12:18:51.04 ID:gYk+lWTG
>>942 >>945 さん、御丁寧にありがとうございます。
当方英語が分からない者で、改変後のアドレスを紹介してくださったのは
理解できるのですが、具体的にそのあとどうすれば良いのかが判りません。
プログラム的な知識はゼロなので何をどのようにすればよいのか
チンプンカンプンです。出来れば改善された「kairi」の
インジケーターをダウンロード出来るところはないでしょうか?
3分足、2時間足の件は難し過ぎてお手上げです。諦めます。
重ね重ね申し訳ありませんが、せめて乖離率をちゃんと表示できるよう
御教授のほど宜しくお願い致します。
例えば、EUR/USD上で動かしているEA上で、変数AにEUR/JPYのBIDを入れたいときどのようにすればいいのでしょうか?
iClose() 関数を使う
950 :
Trader@Live! :2014/04/08(火) 12:49:25.05 ID:Qb9H2CcK
あああ、そうですね ありがとうございました
ちょいと質問 MT4っていろんな会社がツールとしてつかってるけど 仕組みは同じなわけでどこの会社のチャートみるのもできるわけ? たとえばペッパーのデモ口座使ってて FOREXやFXCMからインストールしたMT4でもペッパーのデモ口座でチャートみるってこと可能ってこと? てことはなんこかMT4いれてて一個がペッパーの600系バージョンで ほかのが508だとしたら ほかのでペッパーのデモ口座でみればいいってこと? MT4 インジいれてチャートしかみてないんだけど おしえてください
他社のサーバ定義ファイルをコピペしてくるか、IP直指定とかすれば、よそのサーバにもログインできるよ。
MT4は100年先もチャートソフトのスタンダードになり得るのか
逆指し値を、売り、買いに2ついれたんだけど、ターミナルの(逆指し値の)価格の色が緑色になっています。片方だけ緑なんだけど何でやねん?値段が動くと白になったり。。ヘルプとか説明載ってますかね?
生きてる間は使わせてくれ、じゃないと食っていけない
1つのインジを最初のチャートだけにセットして、 全チャートに適用するようなことってできませんよね?
>>956 default.tpl に保存すれば、
次から開いたチャートにはすべてそれが適用されるよ?
>>956 一つにセットしたら同時に他のチャートにも表示できるようなスクリプトがあるかって事でしょ?
それ出来ないよ。
>>956 のやり方しかできない
質問させてください。 int start() { USDCAD1=iClose("USDCAD",0,1); USDCAD3=iClose("USDCAD",0,3); double USDCADP=0; USDCADP=USDCAD1/USDCAD; こんな感じで複数の通貨ペアの変動率を比較させたいのですがFTでは動くの ですけれどもBTがゼロデバイドと指摘されてできません。 コメント関数では実数であることを確認できたのになんでゼロデバイドなんでしょうか?
960 :
959 :2014/04/11(金) 19:49:14.31 ID:KRmddVMW
USDCADP=USDCAD1/USDCAD;→ USDCADP=USDCAD1/USDCAD3;でした。
>>959 (1) Comment 関数で出している変数が、実は USDCAD3 じゃない
(2) USDCAD1/USDCAD3 の箇所ではないところで0除算が発生している
のどちらかですかね。
962 :
956 :2014/04/11(金) 20:22:34.02 ID:vjtsY3vG
963 :
959 :2014/04/12(土) 09:59:20.39 ID:aZdIC+eF
どうやら他通貨のヒストリカルデータを全部入れてなかったようです。 ヒストリカルデータが欠落して関数が0を返しているものという結論に至りました。 ご回答いただいた方、ありがとうございました。
>>957 詳しく教えてください
何をどこに保存すればいいの?
>1つのインジを最初のチャートだけにセットして、
全チャートに適用するようなことってできませんよね?
965 :
Trader@Live! :2014/04/12(土) 11:06:51.41 ID:o6prmQ3s
ひとつ聞きたいのですが、close[1]はopen[0]と同じ値ですか?
違います
close[1]とopen[0]が同じだったらチャートに窓が存在しないことになるな 月曜の窓明けも当然無い。 つまりそういう事だ
968 :
Trader@Live! :2014/04/12(土) 23:00:26.17 ID:Yq5bEKGC
600になってから、プログラムがおかしいです。 「iCustomで変幻自在のメタトレーダー」という本で、自作をしています。 600になってから、1分足でデモすると、何回も取引するようになってしまいました。 誰か、ご伝授ください。 ただの、Ask Bid はだめなようなので Ask_1 = MarketInfo(Symbol(),MODE_ASK); Bid_1 = MarketInfo(Symbol(),MODE_BID); を入れました。 下のプログラムは、はしょってますが //買いポジションの利益確定 TPは利益です if( OrderOpenPrice() + TP * _Point <= Bid_1 && ( Ticket_L != 0 && Ticket_L != -1 ) ) { Exit_L = OrderClose(Ticket_L,Lots,Bid_1,Slip,Red); if( Exit_L ==1 ) {Ticket_L = 0;} } //買いエントリー if( RSI_1 > RCI_20 && RSI_2 < RCI_20 && ( Ticket_L == 0 || Ticket_L == -1 ) && ( Ticket_S == 0 || Ticket_S == -1 )) { Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask_1,Slip,0,0,Comments,MAGIC,0,Red); if (Ticket_L >= 0) { よろしくおねがいします
質問したまま消える人
970 :
Trader@Live! :2014/04/15(火) 12:56:54.61 ID:OBgF5ybb
MT4 build 625 上で新規チャートに下記EA(PeriodChanger.mq4)のみセットし キー(j=下、k=上)を連打してチャートの周期(M1〜MN)を切り替え続けていると たまにMT4がハングアップします。 どこかプログラムに誤りありますでしょうか? === PeriodChanger.mq4 === int OnInit() { return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { return; } void OnTick() { return; } void OnChartEvent( const int id, // Event ID const long& lparam, // Parameter of type long event const double& dparam, // Parameter of type double event const string& sparam // Parameter of type string events ) { switch (id) { case CHARTEVENT_KEYDOWN: if (lparam == 'J' || lparam == 'j') { ENUM_TIMEFRAMES new_timeframe = PERIOD_CURRENT; switch (Period()) { case PERIOD_M1: new_timeframe = PERIOD_M1; break; case PERIOD_M5: new_timeframe = PERIOD_M1; break; case PERIOD_M15: new_timeframe = PERIOD_M5; break; case PERIOD_M30: new_timeframe = PERIOD_M15; break; case PERIOD_H1: new_timeframe = PERIOD_M30; break; case PERIOD_H4: new_timeframe = PERIOD_H1; break; case PERIOD_D1: new_timeframe = PERIOD_H4; break; case PERIOD_W1: new_timeframe = PERIOD_D1; break; case PERIOD_MN1: new_timeframe = PERIOD_W1; break; } ChartSetSymbolPeriod(0, NULL, new_timeframe); } else if (lparam == 'K' || lparam == 'k') { new_timeframe = PERIOD_CURRENT; switch (Period()) { case PERIOD_M1: new_timeframe = PERIOD_M5; break; case PERIOD_M5: new_timeframe = PERIOD_M15; break; case PERIOD_M15: new_timeframe = PERIOD_M30; break; case PERIOD_M30: new_timeframe = PERIOD_H1; break; case PERIOD_H1: new_timeframe = PERIOD_H4; break; case PERIOD_H4: new_timeframe = PERIOD_D1; break; case PERIOD_D1: new_timeframe = PERIOD_W1; break; case PERIOD_W1: new_timeframe = PERIOD_MN1; break; case PERIOD_MN1: new_timeframe = PERIOD_MN1; break; } ChartSetSymbolPeriod(0, NULL, new_timeframe); } break; } }
>>970 試してみたけど再現しない。
けど、どうもOnChartEventの呼び出されるタイミングが胡散臭い?
bool locked = true;
int OnInit() { EventSetMillisecondTimer(100); return INIT_SUCCEEDED; }
void OnTimer() { locked = false; }
void OnChartEvent(...) { if (locked) return; }
場当たり的だけど、↑とかしてOnInit()終了後、一定時間経つまでOnChartEvent
をスキップしてみたらどうか?
あと、ChartSetSymbolPeriodは現在と同じタイムフレームを設定してもチャートを
再描画(インジなども全てリロード)してしまう。
だから、↓時はChartSetSymbolPeriodを呼ばないようにした方がいい。
case PERIOD_M1: new_timeframe = PERIOD_M1; break;
case PERIOD_MN1: new_timeframe = PERIOD_MN1; break;
972 :
Trader@Live! :2014/04/16(水) 15:17:20.37 ID:wR95nKhM
>>971 なるほど!!
チャート切替毎に100ms空ける作戦ですね。
void OnDeinit(const int reason) { locked = true; return; }
を
>>971 さんのコードに追加したら周期の切替に100msかかりハングアップ
しにくくなりうまく行ったかと思ったのですが、最終的にはハングアップ
してしまいました…
なかなか難しそうです。
PERIOD_M1とPERIODMN1でチャートを切り替えないアイデアは
なるほどと思い早速導入させていただきました。
ありがとうございました。
974 :
Trader@Live! :2014/04/17(木) 12:59:16.32 ID:dBEepQ78
最近スプレッド縮小のせいで、以前はユロドル4桁サーバーだったのが ほとんど5桁サーバーばっかりになって、5桁だとローソクの長さが 見ずらくて、目が痛くなる。 4桁サーバー使っている方、どこのサーバーか教えて下さい。
>>974 中東の新興業者では昔のティックバリューのままってとこあるよ。
新興でないならForex Best、Millennium Penata Futures
Forex Bestは業者サイトが飛んじゃってるけどサーバーは生きてる。
Millennium Penata Futuresはインドネシアではわりとメジャーな業者
デモサーバーを選択するとこで検索してみると出てきますので検索してみて下さい。
976 :
Trader@Live! :2014/04/17(木) 20:21:37.86 ID:dBEepQ78
977 :
973 :2014/04/17(木) 20:56:32.85 ID:cWDXMRtI
閾値を超えた場合と切った場合に、 その足でメールでもいいのですが。。。
978 :
973 :2014/04/18(金) 13:32:57.14 ID:87ngdN/D
何とか自己解決 static int LastTime = 0; int NowTime = Minute(); if(email==true && NowTime!=LastTime)SendMail("BBWidth",Band_Width); LastTime = NowTime; で送れるようになりました。
979 :
973 :2014/04/18(金) 13:41:03.46 ID:87ngdN/D
↑は、実際には、足確定直後ではないですが、 この誤差は実用上問題ないので、これで使います。
今日は相場が動かないんで考えてるんだが出来ないんで質問を。
>>978 は、1分足で1分単位で送られるんだが、
これを20秒とか、30秒単位とかで送る方法ってあるのかな?
sleep()
昨日、MT4のbuildを、500番台から625に上げたのですが、 WindowFirstVisibleBar()が0しか返って来なくなってしまいました。 他の方はどうなんでしょうか? MT4のバグ?
>>980 Seconds()/20 を使えばいいです。
>>984 おぉ。。。これでいいのかな
extern int okurujikann = 20;
static int LastTime = 0;
int NowTime = Seconds()/okurujikann;
if(email==true && NowTime!=LastTime)SendMail("BBWidth",Band_Width);
LastTime = NowTime;
986 :
sage; :2014/04/20(日) 15:44:00.84 ID:yN7vcRF4
質問です。 Build 628になってから、 Period_Converter_Opt.mq4が使えなくなってしまいました。 メタエディターで見たところ { deinit(); init(); LastStartTime = Time[Bars-1]; LastEndTime = Time[0]; LastBarCount = Bars; } の部分にnot all control paths return a value と警告がでてました。 Period_Converter_Opt.mq4をまだ使いたいんですが。 どなたか対処方法わかる方、よろしくお願いします。
987 :
sage :
2014/04/20(日) 20:43:10.73 ID:yN7vcRF4 すでに解決済みの話題でしたね。 解決しました。