【MT4/5】Meta Trader初心者専用59【EA素人】
■ このスレッドは過去ログ倉庫に格納されています
うまく行かないというのはエラーじゃなくて結果が1.000とか0.000になるとか?
3/5は整数同士だから0を返すはず、3.0/5にしてみたら0.600になると思う
で、Close2つの値が近すぎて割り算の結果が0.9999912とかになってて文字列に変換するときに1.000になってるのでは
試しに桁数を8桁くらいにしてみれば 返信ありがとうございます
うまくいかないというのは、そもそも数字が描画されない状態です
足し算や掛け算では普通に数字が描画されます
桁数を変えてみても同じでした 動くものを上げろよ... 問題が再現できる最小限にしてな
一部だけでごちゃごちゃ言っても時間の無駄でしかない。 なんだろなやってみたけど普通に表示できる
考えたんだけど、オブジェクト名に使ってるPattenTextって配列の中身にもDoubleToText(bar_range,3)とか使ってないだろか
それなら割り算だと名前被りまくりでほとんどは表示されないし足し算掛け算ならほぼ違う値になるからだいたい表示される int init()
{
//---- indicators
// IndicatorBuffers(1);
SetIndexStyle(0, DRAW_ARROW, 0, 1);
SetIndexArrow(0, 172);
SetIndexBuffer(0,BufferRange);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectsDeleteAll();
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
if (counted_bars < 0) {
return(-1);
}
if (counted_bars > 0) {
counted_bars--;
}
int pos = Bars-counted_bars;
string PatternText[5000];
for(int j = 0; j < Bars; j++)
{
PatternText[j] = "pattern-" + j;
}
while (pos>=0) {
double bar_range = (High[pos] - Low[pos]);
ObjectCreate(PatternText[pos], OBJ_TEXT, 0, Time[pos], Low[pos]);
ObjectSet(PatternText[pos], OBJPROP_YDISTANCE, 200);
ObjectSetText(PatternText[pos], DoubleToStr(bar_range, Digits), 10, "Verdana", White);
BufferRange[pos] = bar_range;
pos--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
コレが元です
連投失礼 問題は割り算じゃねぇーだろ。
表示の問題だろ?printして見ろよ。 >>526
コレですじゃねーんだよ。
コンパイルできるかくらい確認してから貼れ お付き合い頂き感謝します
>>526にあげたのはフリーの拾い物です
これを改造して、前回の足からの変動比率を表示させたいと考えています
そこで
double bar_range = (High[pos] - Low[pos]);
を
double bar_range = ((Close[pos] / Close[pos+1] - 1) * 100 );
に変えたところ文字が表示されなくなってしまいました それ引き算割り算の問題じゃなしにBarカウント数以上の終値計算しようとしてエラーなってるだけちゃうん strictでなければBarオーバーでも落ちないが、0割りで落ちてるだけだな 確実性の高いヒントを頂いた気がしますが私には難しい話です
MQLについてのサイトはいくつか知っていますが、どの項を参照すればいいでしょうか 結局、Double型も割り算も全く問題なかったのか。 >>534
バーが全部で1000個だとして1001個目のCloseを計算しようとしてるぽい、更に改造で(pos+1)1002個目のCloseで割ろうとしてるからエラー
だからint posのとこで-2しとけばよくね
てことだよね? 解答してくれた人たちありがとう
>>536で解決しました 通貨ペアごとにレバレッジが個別に設定されてますが、開いてるチャートのペアのレバレッジの値を取得できますか? 口座じゃなくて通貨ペアごと?そんな設定できる業者あるの? そういう業者は普通にある。以下XMのサイトから
全ての口座タイプを対象に、MT4およびMT5プラットフォームにおけるEURDKK、EURHKD、GBPDKK、USDDKK、USDHKD、USDCNH、EURRUBおよびUSDRUBのレバレッジは、最大1:50とし、USDTRYおよびEURTRYは最大1:100とします。 そうだったんだ知らんかった
MT4から確認する方法はないぽい? >>541
AccountLeverage()じゃ取得出来ないのかな? >>543
うーんややこしいな
Symbol固有のレバか SymbolInfoDouble(Symbol(), SYMBOL_MARGIN_INITIAL)
あたりで計算できるんじゃないかな、知らんけど MarketInfo(_Symbol, MODE_MARGINREQUIRED)
これかな >>546は必要証拠金だったわ
double Lev=(double)AccountInfoInteger(ACCOUNT_LEVERAGE);
double Lot=MarketInfo(_Symbol,MODE_LOTSIZE);
double x1=Ask*Lot/Lev;
double x2=MarketInfo(_Symbol,MODE_MARGINREQUIRED);
x1とx2が同じになる ポジション持つとチャートに水平線が引かれて、それをクリックしながら上下に動かすと何pipsで何円の利益って表示されるけど
あれをポジション持たずにやる方法あるかい >>548
十字カーソルにしてドラッグかな
足数/ピップス/レートが表示されるが MT5 Strategy Tester
これをインストールして小銭稼いでたんだけど
3月末を境になぜかすべてのPCで無効化されてしまった
年度超えられないんだっけ? すごい単純に前日比を表示させたいんだけど、
前日比の値を取得する関数ってあったりしますか?
それとも、なんか計算しないとダメなんですかね?
前日の終値とか取得できたりしますか? iClose(Symbol(),PERIOD_D1,1) >>552
ありがとうございます。
もうひとつ聞きたいのですが、
MT5でインジケータ作成しているのですが、
OnCalculate内の処理が何故か動かないケースがあり、
調べていくとポジションを持ってるチャートはティック事に処理され、ポジションを持ってないチャートだと、
init時のみ実行されてる事が分かりました。
これって何かinitになにか記載してないと処理されないのでしょうか。
ttps://www.mql5.com/ja/docs/event_handlers/oncalculate >>553
> ポジションを持ってないチャートだと〜
そんな事はどこにも書いてないだろ。 ありがとうございます。
もっと追ってみたら
Oncalcate 自体の処理はされてましたが、
CChartObjectLabelで定義したラベルを
Oncalcateで例えば以下のように内容を変更しようとした時に、何故かロット持ってるチャートだけしか反映されないだけでした。
オブジェクト名.Description(”test”);
https://www.mql5.com/ja/docs/standardlibrary/chart_object_classes/obj_controls/cchartobjectlabel
前日比をチャート上にリアルタイムで表示するためにラベル使おうとしてたんですが、 思い込みが激しいようだから取り合えずコードを貼ってくれよ。 >>556
すみません。
デバックしてたら、恐らくnullをラベルに入力するケースがあり、原因はそれでした…。
エラーも出ずほかのラベルも巻き添いに無効化されていたので気づきませんでした。 iPhoneで使ってるmt4の
フィナボッチの色の変え方教えて欲しいです
色を変えると範囲を指定するためのラインの色が変わります
変えたいのは水平ラインの色と数字の色です。
よろしくお願いします >>558
Androidだけど、レベルの編集の一番下 >>559
はい。写真で言うと色が変わるのが場所を支持する赤い線だけなんです。
いまフィボの水平線と数字が青で見づらくて。 教えてください。ブローカーからのMT4宛にくるメールの通知を止める方法ないですか?
incoming mailってなってタブも勝手に切り替わって煩わしい事この上ない。。 ごめん全然届かないからさっぱりだ
今メールタブみたらずーっと前にMT4インストールしたときのようこそがトップのままやったw スマホのアプリではログインできてるのにタブレットの方はログアウトされててログインするにも認証出来ないって出る 20210503.log
0 23:00:01.627 01901_USDJPY_1h USDJPY,H1: error code=129
0 23:00:03.879 01901_USDJPY_1h USDJPY,H1: error code=129
0 23:00:06.168 01901_USDJPY_1h USDJPY,H1: error code=129
0 23:00:08.376 01901_USDJPY_1h USDJPY,H1: error code=129
0 23:00:10.615 01901_USDJPY_1h USDJPY,H1: error code=129
0 23:00:12.818 01901_USDJPY_1h USDJPY,H1: error code=129
0 23:00:15.036 01901_USDJPY_1h USDJPY,H1: error code=129
0 23:00:17.244 01901_USDJPY_1h USDJPY,H1: error code=129
(略)
0 23:35:59.479 01901_USDJPY_1h USDJPY,H1: error code=129
0 23:36:01.658 01901_USDJPY_1h USDJPY,H1: error code=129
0 23:36:03.854 01901_USDJPY_1h USDJPY,H1: error code=129
0 23:36:06.036 01901_USDJPY_1h USDJPY,H1: error code=129
0 23:36:08.212 01901_USDJPY_1h USDJPY,H1: error code=129
2 23:36:10.541 01901_USDJPY_1h USDJPY,H1: close #47341890 buy 0.01 USDJPY at 109.290 at price 108.915
某R店で自動売買始める
OrderClose()==falseの場合 Sleep(2000); Refreshrates(); OrderClose(); を繰り返すコード
36分後にやっと約定
36分ってなあ、スキャなんて無理じゃん //決済関数 成行
bool newOrderClose_OP(int ticket,double lots,int slippage,color arrow_color)
{
if(IsTradeAllowed()==false)
for(int i=0; i<100; i++)
{Sleep(1000);
if(IsTradeAllowed()==true) break;}
bool ret_close=false;
if(OrderSelect(ticket,SELECT_BY_TICKET))
{RefreshRates();
double N_price=NormalizeDouble(OrderClosePrice(),_Digits);
ret_close=OrderClose(ticket,lots,N_price,slippage,arrow_color);}
if(ret_close==false)
for(int i=1; i<1000; i++)
{
int error=GetLastError();
Print("error code=",error);
if(error==4108) {break;}//何らかの理由で玉がない場合
Sleep(2000);
RefreshRates();
double N_price=NormalizeDouble(OrderClosePrice(),_Digits);
ret_close=OrderClose(ticket,lots,N_price,slippage,arrow_color);
if(ret_close==true) break;
}
if(ret_close==true) return(true);
else return(false);
} 上が自作の決済関数
mt4 129 エラーで検索したところ、129エラーは、RefreshRates(); NormalizeDouble();を使えば出なくなると書いてある
実際には、使っているにもかかわらず出まくる
関数に問題あり?業者側の問題? 129は価格設定が間違ってる時に出るやつだ。
注文出したときの価格と注文した価格、スリッページ、その時のスプレッド、このあたりを確認しろ。 プログラムに問題あるな。
引数で指定した価格でループしてるから価格が大きく動くと決済されないぞ。
何が何でもその価格で決済したいなら指値入れるか、決済用のルーチンをOnTickで回したほうがいい。 input int Slippage=3;
狭すぎ?
そもそも成行決済でスリッページは関係あるの
RefreshRates();した直後に、OrderClosePrice()を取得して決済注文出してるのに
サーバーに注文が届く前に、レートがOrderClosePrice()からスリッページを超えて変化しているということか >>572
そういうことかもしれんって話。一度ずれると戻ってくるまで決済されないからずっとエラーはいてるんやろ。 >>571
OrderClose()のdouble price に108.457といった固定値を入れた場合
レートが108.457から外れれば、OrderClose()を連打しても約定しないと言うのはわかる
OrderClosePrice()でもだめ?
一回ごとに、OrderClosePrice()を取得し直してると思ったんだけど、ひょっとして同じ値が入り続けてる? >>576
取り直してるならいいんじゃないのか。上のは取り直してないときの話な。
プリント注文したときの価格とその時の注文価格を確認してみることだな。 操作履歴見たら、OrderClosePrice()に同じ値が入り続けてるわ
Ask BidはRefreshRates()で更新されるけれども、OrderClosePrice()は更新されない
OrderSelect()でオーダーを選んだ後、最初に取得したOrderClosePrice()の値が、以後入り続ける?
if(ret_close==false)
for(int i=1; i<1000; i++)
{
}
この中で、もう一度OrderSelect()を使った後、OrderClosePrice()を取れば、上手くいくような……
もしくは、OrderType()で、売り玉 買い玉を判定し、Ask Bidで決済するか 重要指標発表直前から新規エントリー止めるための
アラート吐ける関数知りませんか? MT5です。 無いなら自作するか。まだ構造体と全然かわかんないけど
構造体MqlCalendarValue配列を定義して
国名、当日を指定して取り込んでそっからイベント名の文字列探して該当する
イベントが見つかればその時刻を引っ張ればいいのかな。 自作するしかないんじゃない?
MqlCalendarEventって便利な構造体があるじゃん double x = 11 / 2;
printf("x = %f", x);
結果: 5
これはふざけるなと言いたい(´・ω・`) CFDにと特化したEA(ソース)のサンプルってありませんか? 指値注文やワンクリック注文時に確認画面が出てくるのですが
出ないようにするにはどうしたらいいですか? >>589
ツール オプション 取引 ワンクリック取引 同意 通知機能で、プッシュ通知とトレード通知をオンにしてると
トレーリングストップでストップ位置移動するたびにピコンピコンなってうるさい
決済では鳴るけどトレーリングでは鳴らない、ってのはできない? >>591
標準で実現できない場合は、インジかEAで音出すようにすればいい stops.wavをリネームか削除すれば良いのでは error音が鳴るからだめだった
無音のwavファイルに置き換えるのがいいかも >>592
それしかないかー頑張ってみる
>>594
スマホのプッシュ通知の音なのでちょっと違うかなと まず読んでみたらどうよ
サンプルコードもついてるしMT4付属のインジも大半は中身が見れる 初心者はMT4付属のサンプルコードとリファレンス読めばええやろ。
マイナーな分野なんで参考書なんてろくな物がないし、プログラミングがわからないなら、C++やCを勉強した方がいい。 MetaQuotes-demoのデモアカウント削除したらすかさずカウンターで新規作成するんだけど止める方法ってある? EAつくちゃおとかいうサイトがいいと思う
ここいつも参考にしてるわ >>604
逆に羨ましい
最近なぜかオアンダ以外どの業者のデモサーバーに申請しても
パスワードが返ってこない >>606
ただ乗りする奴が増えすぎたんじゃない?
アカウント作って最低入金額入れとけばいいかと >>606
業者のウェブサイトからならいけるやで。
あと、TitanはMTからでもいけた気がする 質問です。
EA終了時に所持してるポジションをClose処理を入れてます。
EAのマジックナンバーに該当するポジションがあったらMessagebox出して決済させるといった感じです。
ところが、OnDeinitでその処理入れるとどこかで遅延が出るらしく、場合によっては2.5秒のタイムアウトで強制終了になってしまいます。
(ウィンドウのカーソルがクルクル回る
ちなみに、OnInitにも同じ処理入れてるんですが、特に問題なく動きます。
決済手数料処理自体もEA中の処理そのまま使っているのでこちらも問題なしです。
OnDeinitに書くと駄目といったところ。
ログからもちょっと原因判明しませんでした。
何かわかりませんでしょうか。 >>598
これがダメならどのサイトがイイの?
細かいリファレンスとか、一般的なプログラミングとか、儲かるロジックじゃなくて
EA作りの概要と勘どころわかるやつ まず作ってみること
いくら本を探しても読んでも
一回EAを作った方が知識が増える もう一個のキチガイスレにも書いたが、2年ぐらい前までやったんだ
勘を取り戻すのとやる気出すためにざっと読む >>614
豊島の昔の。なんとかってリファレンスサイトが便利だったんだが見当たらんね
MT4古いのからやってたが、新しいの適当に対応しただけだからさ >>615
豊島本やったんなら、リファレンスサイトは、上でも出てる、「EAつくちゃお」サイトでいいんじゃないかな >>616
チュートリアルみたいのがいいんだよな
一通りわからんことはないけど、足のはじめだけ処理するにこう
ポジ二重にとらないためにはこうとかあるじゃん
まあ昔のいじってくだけなんだけども >>617
そういう、定番処理なら、ググればすぐ出てくる >>618
そういうことじゃなくて作業のイメージ作り
何が必須項目かとかあるじゃん。数時間で一気に読んで勢いをつける
というか、なんでこのスレのテンプレにそういう情報ないかね ■ このスレッドは過去ログ倉庫に格納されています