X



【MT4/5】Meta Trader初心者専用55【EA素人】 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
0883名無しさん@お金いっぱい。
垢版 |
2018/02/19(月) 10:58:53.48ID:9U18Nhnq0
Ordersendのリファレンスの通り指定すれば良いが
何が分からないのかが読み取れない
mql ordersend でググってみ
0889名無しさん@お金いっぱい。
垢版 |
2018/02/19(月) 14:32:42.67ID:ijg35Tq50
>>885
>>886
>>887

指値買いの場合はAskの値を指定すると思います。

固定スプレッドなら+スプレッド値で良いですが、可変スプレッドだと何の値が正しいか私も興味があります。

指値売りならチャート通り指定何も考えずにOpen[1]で良さそうですが。
0890名無しさん@お金いっぱい。
垢版 |
2018/02/19(月) 14:38:16.09ID:9U18Nhnq0
>>889
>固定スプレッドなら+スプレッド値で良いですが、可変スプレッドだと何の値が正しいか私も興味があります。

BTのパフォーマンス自慢が信頼性がない事の一つがこれね
BTに正確性を求める努力をするのではなく0.1枚でいいから
リアル口座で動かしてみる事は重要
0891名無しさん@お金いっぱい。
垢版 |
2018/02/19(月) 15:58:32.33ID:DgEYZmmu0
すいません。変数の初期値って、数字じゃなければダメなんですか?計算式を初期値に設定しても大丈夫ですか?
0895名無しさん@お金いっぱい。
垢版 |
2018/02/19(月) 19:11:22.09ID:eg3xOPj40
>>889
未来のスプレッドを考慮したいのなら、指値注文出来ないので、自前で、その価格に来たときに成り行き注文するしか無いと思います。

勘違いならスルー下さい。
0896名無しさん@お金いっぱい。
垢版 |
2018/02/19(月) 20:21:27.59ID:ypWu0zNQ0
>>894

MT4では、チャートの値は基本的にBid値ですよね?

Open[1]とかもBid値。

買い注文はAskで指定するので、スプレッドを足す必要があると思うのです。
0898名無しさん@お金いっぱい。
垢版 |
2018/02/19(月) 20:35:11.92ID:aVgNS3R20
>>896
手動で注文する時もスプレッド足してるんですか?

未来のスプレッドはわからんでしょう。

ま、試してみれば?
0899名無しさん@お金いっぱい。
垢版 |
2018/02/19(月) 20:37:31.50ID:kW7LS0Fr0
ああ、そういうことね。
1本前のopen時のaskで指定したい、みたいな。
その時のスプレッドを保存しとかなきゃ無理じゃね?
つかaskを保存しときゃいい。
現在のスプレッド使うなら単純にopen[1]とかに足せばいいんじゃない。
0900名無しさん@お金いっぱい。
垢版 |
2018/02/20(火) 03:38:25.85ID:M+r9Urtv0
とても簡単なネットで稼げる情報とか
少しでも多くの方の役に立ちたいです
グーグル検索⇒『金持ちになりたい 鎌野介メソッド』

QGEOM
0902名無しさん@お金いっぱい。
垢版 |
2018/02/20(火) 21:32:54.62ID:m7x6zxpS0
ordersend error 130 が解決できない件。。。。


発注時にリミットとストップを置くことを今のmql4は否定しているんですか?

リミットとストップの値を大きくしても改善しないのですが。
0905名無しさん@お金いっぱい。
垢版 |
2018/02/20(火) 21:49:25.07ID:s65sgX570
MT4のEAって分割売買することってできないんだっけ?
1lot買っていい感じに儲けがでたらとりあえず0.5lot売って
残りの0.5lotはポジしたまま、とかいう運用はできないんだっけ?
0906名無しさん@お金いっぱい。
垢版 |
2018/02/20(火) 22:01:22.88ID:tLGIZ1LI0
>>902
業者によっては発注時のリミットとストップが通らないところがあったはず。
なので市販のEAは発注とリミットストップを分けてるのが多い
0907名無しさん@お金いっぱい。
垢版 |
2018/02/20(火) 23:11:50.92ID:bHW5aVvP0
>>902

>>906 さんのおっしゃる通りです。

出来ない業者だと、OrderSend()後にOrderModify()でリミットとストップを指定します。

私は、OrderSend()とOrderModify()の隙間でEAやPCや回線などが落ちると損失額のコントロールが出来なく怖いため、同時に指定できる業者しか使っていません。

ストップを指定していてもスイスフランショックのときに効かずに追証が請求される会社もあるようなので万全ではありませんが。
0908名無しさん@お金いっぱい。
垢版 |
2018/02/20(火) 23:16:39.21ID:XiK9nroB0
>>905
それも業者による
あと、可能な場合でも分割決済後はチケット番号が変わるんで
プログラム側もそれに対応する必要があって意外と面倒
0909名無しさん@お金いっぱい。
垢版 |
2018/02/20(火) 23:40:18.78ID:s65sgX570
>>908
> あと、可能な場合でも分割決済後はチケット番号が変わるんで
> プログラム側もそれに対応する必要があって意外と面倒

あ〜、それ面倒だわ・・・
0910902
垢版 |
2018/02/21(水) 06:30:01.05ID:umt9/2ZU0
ordersend error130の件

modify で一応クリアしました。ネット上にあったコピペですがw

次は永久にオーダーを取り続けるミスを解消してきます。


プログラミング、楽しいですね。自作EA、作れたらいいなぁ。

今後もよろしくお願いします。
0913名無しさん@お金いっぱい。
垢版 |
2018/02/22(木) 08:35:50.66ID:bpGJnhzd0
質問お願いします。
パソコンのMT4を立ち上げ用と思いダウンロード画面迄来て
ダウンロードのボタンを押したのですが 何も変わらずこのまま過ぎてしまいます。
ちなみにMT5も全く同じです。

よろしくお願いします。
0914名無しさん@お金いっぱい。
垢版 |
2018/02/22(木) 08:48:12.55ID:ovRTiF8s0
>>913
立ち上げでなくインストールしようとして?
だとすればどこのサイトから?
何も変わらずこのままの、このままとは?
状況が伝わって来なすぎて何とも言えない。
0917名無しさん@お金いっぱい。
垢版 |
2018/02/22(木) 09:16:51.64ID:nZTeaawO0
オーダーを出し続けるんですが、回避方法がわかりません。

if (条件1 && OrdersTotal ==0)
ordersend.......

だけでは駄目なのですか?
0920名無しさん@お金いっぱい。
垢版 |
2018/02/22(木) 11:23:07.36ID:nZTeaawO0
>>918
それでもポジションを取り続けるのですが。。。


1秒に数十ポジションみたいな感じで。。。。


どこが悪いのでしょうか?入り口でつまづいてます。
0921名無しさん@お金いっぱい。
垢版 |
2018/02/22(木) 11:44:37.54ID:ovRTiF8s0
>>920
オーダートータルがゼロなんでしょう
エントリーした後に、再取得してないかポジション閉じてるか、その他の理由か
0929名無しさん@お金いっぱい。
垢版 |
2018/02/23(金) 11:20:40.07ID:h/LOzeo/0
ポジション取り続けるんです。間違いをご指摘ください。

input int Magic = 56789; //マジックナンバー
input double Lots = 0.1; //取引ロット数

double Open1 = Open[1];//一つ前の初値

double Close1 = Close[1];//一つ前の終値
//double BB1 = );
double BB1 = (Open1 + Close1) / 2;//基準値

double Kijun0 = Open1 - Close1;

int ea_ticket_res; // チケッット番号
int Total = OrdersTotal();

int DP = Digits; //小数点位置

double Base = NormalizeDouble(BB1, Digits);
double Kijun1 = NormalizeDouble(Kijun0, Digits);

int OnInit()
{
//---

//---
return(INIT_SUCCEEDED);
}
0930名無しさん@お金いっぱい。
垢版 |
2018/02/23(金) 11:21:26.69ID:h/LOzeo/0
void OnDeinit(const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()


{

if ( -0.02 <= Kijun0 <=0.02 && Total == 0) {

ea_ticket_res = OrderSend( // 新規エントリー注文
Symbol(), // 通貨ペア
OP_BUYSTOP, // オーダータイプ
Lots, // ロット[0.01単位]
Base + 110 * Point, // オーダープライスレート
20, // スリップ上限
0, // ストップレート
0, // リミットレート
"ぬるぽ", // オーダーコメント
Magic, // マジックナンバー(識別用)
0, // オーダーリミット時間
clrRed // オーダーアイコンカラー
);

// エントリー中ポジションの注文変更
LimitStop_Set(ea_ticket_res);
}
//---

}
//+------------------------------------------------------------------+

// エントリー中のポジションのリミット・ストップを変更
void LimitStop_Set( int in_ticket_no ) {

double limit_rate,stop_rate;
int modify_resend_num; // 変更試行回数
bool modify_ret; // 変更判定
int errorcode;
bool selbool;
0931名無しさん@お金いっぱい。
垢版 |
2018/02/23(金) 11:21:58.68ID:h/LOzeo/0
selbool = OrderSelect(in_ticket_no, SELECT_BY_TICKET); // オーダー中のチケット選択(チケットNo指定)

limit_rate = OrderOpenPrice() + ( 10 * Point() * 10); // リミット価格 = 約定価格 + 10.0pips
stop_rate = OrderOpenPrice() - ( 7 * Point() * 10); // ストップロス価格 = 約定価格 - 10.0pips

limit_rate = NormalizeDouble(limit_rate,Digits); // リミット価格 を正規化
stop_rate = NormalizeDouble(stop_rate ,Digits); // ストップロス価格を正規化


for( modify_resend_num = 0; modify_resend_num < 20; modify_resend_num++ ) { // 試行回数上限:20
modify_ret = OrderModify(
OrderTicket(), // チケットNo
OrderOpenPrice(), // 注文価格
stop_rate, // ストップロス価格
limit_rate, // リミット価格
0, // 有効期限
clrRed // 色

);

if ( modify_ret == false ) { // 注文変更拒否
Sleep(300); // 300msec待ち
errorcode = GetLastError(); // エラーコード取得
// printf( "%d回目:注文変更拒否。エラーコード:%d , 詳細:%s ",
// modify_resend_num+1, errorcode , ErrorDescription(errorcode));
} else { // 決済注文約定
Print("注文変更完了。 チケットNo=",in_ticket_no);
break;
}


}
0936名無しさん@お金いっぱい。
垢版 |
2018/02/23(金) 12:25:26.99ID:+m7LsCPj0
他にあるか知らんけどTotal使う直前に
Total = OrdersTotal();
を書けば終わり

単純ミスでないなら、あらかじめある関数の動くタイミングを見直した方がよかです
0940名無しさん@お金いっぱい。
垢版 |
2018/02/24(土) 18:41:24.87ID:4BIcpPNB0
ドル円のチャートで縦軸は0.1毎に、時間軸は1時間毎にグリッドが表示されるように
したいのですが、どうしたらいいですか?
0941名無しさん@お金いっぱい。
垢版 |
2018/02/24(土) 23:02:06.83ID:L3GhnrHV0
バックテスト、デフォルトだと横軸は試行回数になってるけど
これ年月日に変更する事って出来ないかな?
そうすれば「このストラテジーだとリーマンショックで手ひどくやられるね」とか
「スイスフランショックはなんとか乗り切れそうだ」とか判別がつくんだが
0943名無しさん@お金いっぱい。
垢版 |
2018/02/24(土) 23:20:30.15ID:iQOfPonq0
831です。この前メールでやり取りしてくれた方へ、

またメールを送ったので、確認お願いします。
0944名無しさん@お金いっぱい。
垢版 |
2018/02/24(土) 23:21:55.43ID:iQOfPonq0
941さんへ

QuantAnalyzerというソフトを使えばできますよ。使い方は調べてみてください。 
分からなかったらまた言ってくださいねー
0946名無しさん@お金いっぱい。
垢版 |
2018/02/25(日) 14:20:34.80ID:ANw1k8VB0
みんな、国内業者使ってんの?
エックスイーマーケッツとか海外?
レバ10でも国内とどまる?
0947名無しさん@お金いっぱい。
垢版 |
2018/02/25(日) 15:06:18.31ID:XLuLGHMo0
口座維持率をXとした場合、ロットは幾らほど立てるのが最適なの?
0949名無しさん@お金いっぱい。
垢版 |
2018/02/25(日) 15:49:48.05ID:/wjoe3Qp0
質問お願いいたします。
--条件--
条件1a: +2σにローソク足か実態の片方もしくは両方 がタッチ(5分足かつ15分足)
条件1b: ー2σローソク足か実態の片方もしくは両方 がタッチ(5分足かつ15分足)

条件2:ATR14日間設定 数値0.1以下

条件1a + 条件2の時に↓矢印表示
条件2a + 条件2の時に↑矢印表示

以上の条件を実装したくて、±2σ線タッチした時に矢印表示はできたのですが
条件2(ATR)が0.1以上の時でも矢印が表示されてしまいます。
エラーは全て潰したのでバグではなく実装が間違っていると思うのですがどこが間違っているかわかりません
どこが違うのかご指摘いただけたらと思い質問させていただきました。

該当箇所と思われるコードが以下となります。
ご回答の程よろしくお願いいたします。

ATR_1 = iATR(NULL, 15, 1512, i);
double ATR_Level = 0.1;

if (High[i]>=band1 && ATR_1 <= ATR_Level) {
sellbuf[i]= High[i] + markerdist*Point;
if (i < 2 ) {
UD="m Down";
DoAlert(UD);
}}
if (Low[i]<=band2 && ATR_1 <= ATR_Level) {
buybuf[i]= Low[i] - markerdist*Point;
if (i < 2 ) {
UD="m Up.";
DoAlert(UD);
} }
0951sage
垢版 |
2018/02/25(日) 19:58:38.73ID:/wjoe3Qp0
>>950

条件2:ATR14日間設定 数値0.1以下
ATR_1 = iATR(NULL, 15, 1512, i);

15分足で14日間の値を取得したかったので1512なのかなと思ったのですが違うのでしょうか?
0953名無しさん@お金いっぱい。
垢版 |
2018/02/25(日) 20:20:53.52ID:/wjoe3Qp0
>>952
σの矢印表示はできていて、それにATRの条件を追加し他時に0.1以上でも矢印が表示されてしまいます。
ATR0.1以下では 表示させたくないのです。

//---- main loop
for(int i= lastbar; i>=offset; i--){
sellbuf[i]= 0;
buybuf[i]=0;
sellbuf2[i]= 0;
buybuf2[i]=0;
ATR_1buf[i]=0;

band1= iBands(NULL,0, period, deviation, 0, PRICE_CLOSE, MODE_UPPER, i);
band2= iBands(NULL,0, period, deviation, 0, PRICE_CLOSE, MODE_LOWER, i);

ATR_1 = iATR(NULL, 15, 1512, i);
double ATR_Level = 0.1;
band1buf[i]= band1;
band2buf[i]= band2;
ATR_1buf[i]= ATR_1;

if (High[i]>=band1 && ATR_1 <= ATR_Level) {
sellbuf[i]= High[i] + markerdist*Point;
if (i < 2 )
{
UD="m Down";
DoAlert(UD);
}}
if (Low[i]<=band2 && ATR_1 <= ATR_Level) {
buybuf[i]= Low[i] - markerdist*Point;
if (i < 2 )
{
UD="m Up.";
DoAlert(UD);
}}
0954名無しさん@お金いっぱい。
垢版 |
2018/02/25(日) 20:23:44.67ID:/wjoe3Qp0
>>953
>>ATR0.1以下では 表示させたくないのです。
missです。
x ATR0.1以下では 表示させたくないのです。
o ATR0.1以上では 表示させたくないのです。
0955名無しさん@お金いっぱい。
垢版 |
2018/02/25(日) 22:55:37.06ID:DKlmY9FE0
>>951
1512はどのように導き出したのかわかりませんが、14日間ではなくて、15分足14本分のATRを求めたいのでしたら、単純にperiodは14でいいと思うのですが。。
0957名無しさん@お金いっぱい。
垢版 |
2018/02/26(月) 00:02:16.80ID:Lf513kJV0
たまに外人が作ったインジのソースコードに UniqueID って変数が入ってるのが
あるんですけど なんの意味があるんでしょうか?
0960名無しさん@お金いっぱい。
垢版 |
2018/02/26(月) 09:50:00.12ID:DbVDza050
>>956

変数iは開いているチャート(例えば一分足)のバーの位置(最新バーが0で、古い方向に1ずつ増える)を指していますよね?

ATR_1 = iATR(NULL, 15, 14, i);
で第4引数は15分足チャートのバーの位置を指定しますから、第4引数にiを指定すると、
例えば1分足でiが3だった場合は、15分足チャートでは0または1を指定するのが正しいはずなのに3が指定され意図しない動作となります。

現在チャート(例えば1分足)のバーのiの位置に対応する15分足チャートのバーの位置は

iBarShift(NULL, PERIOD_M15, Time[i], false)

などと指定すれば求められますので、iの位置に上の値を入れるが良いと思うのです。
0963名無しさん@お金いっぱい。
垢版 |
2018/02/26(月) 22:52:33.58ID:clSa3MCn0
MT4でもクラスを使ったオブジェクト指向プログラミングが出来るようになったと聞いて
ちょっと興味があるんだけど何か参考になるサイトって無い?

オブジェクト指向自体はC++やC#を通してさわりは把握してるけど
MT4独特のクラスの癖みたいなものを勉強できるサイトがあったら知りたい
0965名無しさん@お金いっぱい。
垢版 |
2018/02/28(水) 22:42:29.80ID:0oe4F5nm0
>>964
ふむふむ
というわけでちょっと調べてクラス作ってみた
持ってるポジションをエグジットする簡単なクラスだけど
コンパイルしてみたら次の様なWarningが出てきた

possible loss of data due to type conversion

Warningだから無視してもいいんだけどなんか気になる・・・

class Position
{
private:
double m_lots;
double m_exitPrice;
double m_slipPage;
int m_ticketNumber;
color m_arrowColor;

public:
// コンストラクタ
void Position()
{}

// 決済する
void Exit()
{
OrderClose(m_ticketNumber, m_lots, m_exitPrice, m_slipPage, m_arrowColor);
}
};
0966名無しさん@お金いっぱい。
垢版 |
2018/02/28(水) 23:35:57.26ID:+H3Gyv450
>>965
スリッページは多分int型だから、double型がint型へ暗黙の型変換される
っで、暗黙の型変換でデータが失われるかもよ?ってワーニング

どうでもいいけど、暗黙の型変換、英語ではインプリシットコンバージョン
とかいうらしい。
scala弄ってた時に初めて見て何それ超カッケーと思ったw
0968名無しさん@お金いっぱい。
垢版 |
2018/03/03(土) 19:10:56.41ID:JRwu9ONl0
クラスオブジェクトを動的配列で作成してみようと思って次の様なプログラム書いたんだけどエラーになる

int N = 5;

MyClass obj[];
ArrayResize(obj, N);
for(int i=0; i<N; i++)
{
*obj[i] = new MyClass(Symbol(), 0);
}

-illigal operation use
'obj' - object pointer expected
'=' - illegal operation use
'=' - l-value required

静的なクラスオブジェクトの配列は作れるんだけど
動的なクラスオブジェクトの配列はどうやったら作れるんだろう?
0970名無しさん@お金いっぱい。
垢版 |
2018/03/03(土) 20:56:00.13ID:JRwu9ONl0
>>969
MT4で以下の文をコンパイルすると

NewClass[] dim = new NewClass[3];

'[' - name expected

というエラーが返されてしまうみたい
うーむ・・・

ちなみに静的クラスオブジェクトだったら以下の文でコンパイルが通った

MyClass *obj[3];
for(int i=0; i<3; i++)
{
obj[i] = new MyClass(Symbol(), 0);
}

問題は上記の"3"の部分を一般変数のNに変えて動的にしようとすると
コンパイルが通らなくなることで・・・
0971すん ◆gtqmrk9NFQ
垢版 |
2018/03/05(月) 14:32:51.82ID:eHTwQyEu0
これでできたような気がするんですんが、そもそも、こういう事ではなかったらもうしわけないですん…。
int N = 5;
MyClass objcts[];

for(int i=0; i < N; i++)
{
MyClass obj = new MyClass(Symbol(), 0);
ArrayResize(objects, i+1);
objects[i] = obj;
}
0972名無しさん@お金いっぱい。
垢版 |
2018/03/05(月) 18:04:38.76ID:uXZX+ZCS0
USDJPYの1分足スキャルピング型EA(自動売買ツール)とサインツールを開発・公開しております。
興味がありましたら見てみてください。
http://awsedrftgyh12345.blogto.jp/archives/cat_163697.html
0973名無しさん@お金いっぱい。
垢版 |
2018/03/05(月) 20:29:04.69ID:wsEUpVen0
MT5って両建てできるようになってたのな
0976名無しさん@お金いっぱい。
垢版 |
2018/03/06(火) 21:14:33.89ID:VhUpbW8s0
>>971
> MyClass obj = new MyClass(Symbol(), 0);

この行でエラーになっちゃうみたい。

ちなみに以下の様に変更することでコンパイルエラーはでなくなった。
ちょっと強引なやり方なのでこれがふさわしいのかは分からないけど・・・

int N = 5;

MyClass *obj[];
ArrayResize(obj, N);
for(int i=0; i<N; i++)
{
 obj[i] = new MyClass(Symbol(), 0);
}

MQL4って微妙にC++と流儀が違うのね・・・
CとC++を微妙に混ぜたような・・・
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況