今だけ人気マンガ100円レンタル特集♪

MT4でインジケーターにSendmail()関数の記述方法を教えてください。
下記のインジケータにどう書けばよいでしょうか?一度試したのですが大量の送信してしまい困っています。
具体的にsendmail関数を挿入して頂けると助かります。

int start() {
int limit, i, counter;
double fasterEMAnow, slowerEMAnow, fasterEMAprevious, slowerEMAprevious, fasterEMAafter,

slowerEMAafter;
double Range, AvgRange;
int counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

for(i = 0; i <= limit; i++) {

counter=i;
Range=0;
AvgRange=0;
for (counter=i ;counter<=i+9;counter++)
{
AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
}
Range=AvgRange/10;

fasterEMAnow = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i);
fasterEMAprevious = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);
fasterEMAafter = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);

slowerEMAnow = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i);
slowerEMAprevious = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);
slowerEMAafter = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);

if ((fasterEMAnow > slowerEMAnow) && (fasterEMAprevious < slowerEMAprevious) && (fasterEMAafter >

slowerEMAafter)) {
CrossUp[i] = Low[i] - Range*0.5;
}
else if ((fasterEMAnow < slowerEMAnow) && (fasterEMAprevious > slowerEMAprevious) && (fasterEMAafter

< slowerEMAafter)) {
CrossDown[i] = High[i] + Range*0.5;
}
}
return(0);
}

このQ&Aに関連する最新のQ&A

MT4」に関するQ&A: FX 証券会社選びとMT4

A 回答 (1件)

SendMail()関数は、カスタムインジケーターではなく、エキスパートアドバイザー(EA)の方へ記述するのが普通だと思います。



その際、

if(売買条件)
{ OrderSend();
SendMail();
}

みたいに、売買条件が成立して、オーダー発注時にメールを送信してもらうわけです。

私自身は、カスタムインジケーターでSendMail()関数を使用したことがないので、わかりませんが、不用意に、カスタムインジケーターでSendMail()関数を記述すれば、過去のチャート上の全配列でメールが送信されてしまい、膨大なメールが届くのだと推察します。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMT4のEX4ファイルをMQ4ファイルに変換する無料ソフトを教えて下さ

MT4のEX4ファイルをMQ4ファイルに変換する無料ソフトを教えて下さい。

先日まではhttp://www.ex4tomq4.net/を使っていたのですが、変換しようとページを訪れるとUnder Constructionで、暫くこの状態が続いています。

で、他のソフトを探してみてhttp://www.greattradingsystems.com/2009/08/free-mt4-decompiler-ex4-to-mq4/でDecompiler EX4-TO-MQ4 4.0.215.6やMetaTrader 4 Ex4 Decompilerを試してみたのですが、どちらも使えませんでした。(前者はダウンロード後インストールしようとするとエラーになりインストール出来ない。後者はダウンロード後EX4ファイルをダブルクリックするとMQ4ファイルに変換するものですが、ダブルクリックしても何の変化もなく、読み取れないEX4ファイルが開くだけです。)

という訳で、ディコンパイラーならこれがお勧め、という無料ソフトがあったら教えて下さい。

宜しくお願いします。

MT4のEX4ファイルをMQ4ファイルに変換する無料ソフトを教えて下さい。

先日まではhttp://www.ex4tomq4.net/を使っていたのですが、変換しようとページを訪れるとUnder Constructionで、暫くこの状態が続いています。

で、他のソフトを探してみてhttp://www.greattradingsystems.com/2009/08/free-mt4-decompiler-ex4-to-mq4/でDecompiler EX4-TO-MQ4 4.0.215.6やMetaTrader 4 Ex4 Decompilerを試してみたのですが、どちらも使えませんでした。(前者はダウンロード後インストールしようとするとエラーになりイン...続きを読む

Aベストアンサー

基本的にはコンパイルされたex4ファイルのみで配布されているものは
mq4を見せたくないという公開者の意志がそこにありますので
それをデコンパイルするという行為は倫理的にグレーゾーンになりますし
公開者自身がそれを禁ずる旨の声明を出している場合は権利の侵害行為となります。
お探しのデコンパイラですが、上記のような理由でアンダーグラウンド的なツールであり
こういった公の場では質問する性質のものではないかもしれません。
感覚的には「デジタル映像のコピーガードをキャンセルする」というような行為と同様ということですね。

QFX:指定した時間の高値・安値を返すプログラムを教えてください。(MT4)

指定した時間の高値・安値を返すプログラムを教えてください。

具体的に言うと、、21時から23時の間の高値・安値です。

少し調べたところ、iHighest,iLowestやiBarSHiftの関数で値を出せると思ったのですが、
この関数では、指定の期間が、”現在から何本前の足から何本分の期間”といったように時刻で指定できないみたいで困っております。

※MT4を使用しております。

Aベストアンサー

ちょっと自信ありませんが、とりあえず作ってみました。
今、手元に、MT4がないので、コンパイルその他の実験をしておりません。エラー等ありましたら、どうかご容赦を。

double H=0; // 最高値を変数として宣言
double L=0; // 最安値を変数として宣言
int T = TimeHour(CurTime()); // 現在の時刻を変数として宣言

if(T!=23) // もしも現在が23時台でなければ、
{
H= High[iHighest(NULL,PERIOD_H1,MODE_HIGH,2,T+2)];
L= Low[iLowest(NULL,PERIOD_H1,MODE_LOW,2,T+2)];
}
else // もしも現在が23時台であれば、
{
H=High[iHighest(NULL,PERIOD_H1,MODE_HIGH,2,1)];
L=Low[iLowest(NULL,PERIOD_H1,MODE_LOW,2,1)];
}

ちなみに、TimeHour()関数については、以下のサイトで詳しく解説されておりました。

http://jidoubaibai.com/index.html

また、私は、ごく最近MT4の勉強をはじめたばかりで、質問者の方と同様、いろいろ苦労しております。

ちょっと自信ありませんが、とりあえず作ってみました。
今、手元に、MT4がないので、コンパイルその他の実験をしておりません。エラー等ありましたら、どうかご容赦を。

double H=0; // 最高値を変数として宣言
double L=0; // 最安値を変数として宣言
int T = TimeHour(CurTime()); // 現在の時刻を変数として宣言

if(T!=23) // もしも現在が23時台でなければ、
{
H= High[iHighest(NULL,PERIOD_H1,MODE_HIGH,2,T+2)];
L= Low[iLowest(NULL,PERIOD_H1,MODE_LOW,2,T+2)];
}
else // もしも現在...続きを読む

QMT4で時間を指定するにはどのようにすれば良いでしょうか。

MT4で時間を指定するにはどのようにすれば良いでしょうか。

例えば、取引を日本時間で午前9時から午後3時の間に指定して、午後3時の時点で建て玉があった場合は手仕舞いできるようにしたいのです。

MT4付属EAの、MACD Sampleで時間指定する場合は、どのようなプログラムをどの位置に書けば良いのでしょうか。

時間指定をいろいろ変えてバックテストを行ってみたいと思っています。

プログラムは、トレードスタジアムで少しやった程度ですので、MT4のプログラムは初心者のレベルです。よろしくお願いします。

Aベストアンサー

回答が大変遅くなってごめんなさい。

実は、私も悩んでいました。

MACDのサンプルプログラムを下の方までよく読んでみると、マジックナンバーが16384となっているので、これに統一しなければ決済されません。

よって、私が書いた最初の部分で、

# define MAGIC 0001

という部分を、

# define MAGIC 16384

としていただければ、うまくいくかと思います。

一時やってみてください。

QMT4のOrderSendでエラーになります…

以下のように、OrderSendで新規注文を行うプログラムを作成してみましたが、GetLastError()でエラー(4055)になってしまいます。
4055は、「カスタムインジケータエラー」とのことですが、どのように修正すればよいのか分かりません。
どうか、ご教示頂きたくよろしくお願い致します。
ちなみに、FXDD(デモ口座)のEURJPY(5分足)でテストしています。

bool EFlg=true;
int start()
{
if(EFlg)
{
EAticket = OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order #2",16384,0,Green);
if(EAticket < 0 )
Alert("Order Failed #",GetLastError());
else
Alert("OK!!");

EFlg = false;
}

return(0);
}

以下のように、OrderSendで新規注文を行うプログラムを作成してみましたが、GetLastError()でエラー(4055)になってしまいます。
4055は、「カスタムインジケータエラー」とのことですが、どのように修正すればよいのか分かりません。
どうか、ご教示頂きたくよろしくお願い致します。
ちなみに、FXDD(デモ口座)のEURJPY(5分足)でテストしています。

bool EFlg=true;
int start()
{
if(EFlg)
{
EAticket = OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order #2",16384,0,...続きを読む

Aベストアンサー

ANo.2 okw201114です

カスタムインジケータから使われたのでしょうか? お気づきになられて良かったです。

私も、ウェブ上にマニュアルの様なものを見つけ..
エラーコードには「トレード サーバーから返されるエラーコード」と「ランタイムエラー」があると知り..
関数ごとのエラーコード表で OrderSend は 4055 ~ 4111と「トレード サーバーから返されるエラーコード」があると知り..
エラーコードが 4055 のみの比較的仕様の小さいSleep()関数をみると..
「Sleep() 関数は、カスタム インディケータから呼び出すことはできません~」とありましたので^^;;
やっぱり英語は苦手です;;

http://www.metasys-seeker.net/MQL4_Reference_ver1/02-19_ErrorCodes.html <-- エラーコード【Error codes】
http://www.metasys-seeker.net/MQL4_Reference_ver1/04-03_RuntimeErrors.html <-- ランタイムエラー【Runtime errors】
http://www.metasys-seeker.net/MQL4_Reference_ver1/09-10_Sleep.html <-- 実行待機【Sleep】


PC関係だと長年のナントカがありますからw
そんな私でもネットなど下調べしてたり、参考もなしで実装はしません。
ぜひそうしてください。

業者によっては デモは 1 ロット指定とか、Modify でしか T/P, S/L 設定できない所もあるらしいのですが..



自作インジケータを持っているなんてすごいです。私は自作EAのトレードに呆然としてますまだまだですw


あとわからないとのことで参考になるかですが

ネット検索すると MT4 紹介や、EA/カスタムインジケータの作り方を紹介されているブロブなどがヒットします。

国内の http://jp.forex.com/jp/learn/mt4_expertadvisor.shtml やあたりのリンクを読み倒す。というか国内業者はその辺強いかと。

カスタムインジケータ作成経験がおありならば、その場所の親フォルダの "experts" に MA や MACD を使ったサンプルEAがあるので、
テンプレートに使ったり、Tester したりデモで確認したりする。

MT4エディターで公開されているカスタムインジケータや EA を見つけられる。

カスタムインジケータを EA から使用する場合は iCustom 関数を使います。Tester で遅いらしい.. 


などなど、ただ鵜呑みようなことは危険だと思います。ハイリスクですよね

楽しかったですw

ANo.2 okw201114です

カスタムインジケータから使われたのでしょうか? お気づきになられて良かったです。

私も、ウェブ上にマニュアルの様なものを見つけ..
エラーコードには「トレード サーバーから返されるエラーコード」と「ランタイムエラー」があると知り..
関数ごとのエラーコード表で OrderSend は 4055 ~ 4111と「トレード サーバーから返されるエラーコード」があると知り..
エラーコードが 4055 のみの比較的仕様の小さいSleep()関数をみると..
「Sleep() 関数は、カスタム インディケータから呼び出...続きを読む

Qエラーの意味は? Lvalue required

今プログラミングと格闘中です。タイトルにもあるように「Lvalue required」とはどういう意味か教えてください。

Aベストアンサー

補足を拝見しました。
まず、if文ですが
if(day%7=5)
では無く
if(day%7==5)
とイコールを2つ書きましょう。
それからprint文ですが
printf("%d月%d日は、土曜日です。");
%dに対する表示したい値が入っていません。

ほかにも、コンパイルエラーに掛かる場所は有りますが、簡単に直せるとこでしょうから、あえて記述致しません。

Q拡張子がrar?の圧縮?ファイルを開くには?

ダウンロードした圧縮?ファイルが拡張子がrarとかで見れません。
どうすれば見れるのでしょうか?
見ても危険はないですよね?
rarとはzipとかLzhとかと同じ圧縮形式ですよね??

アドバイスよろしくお願いします。

Aベストアンサー

http://www10.plala.or.jp/palm84/eicar_check.html
ウイルスバスターは初期設定のままでは、圧縮ファイルの
ウイルススキャンはしないようです。
設定変更をすると検出するようですので、設定をご確認く
ださい。
※RARファイルのウイルススキャンの結果、ウイルスが検出
されなかったとしても、ウイルスバスターが対応していない
ウイルスが入っている可能性もありますので、完全に安全と
は言い切れません。(出所不明なファイルは開かないほうが
良いです。)

解凍ソフトは「Lhaz」がお奨めです。
http://www.chitora.jp/
※RARファイルの中も閲覧できますので、「Lhaz」をインス
トール後に中を確認したい圧縮ファイルを右クリックして、
「送る」→「Lhaz」を選びます。
表示されたメニューから「閲覧」を選んでファイルの中に入
っているファイルを確認してください。(※圧縮ファイルの
中のファイルは実行しないようにしたほうが良いです。)

QMT4インジで平均線と価格のクロスでアラート

MT4インジで平均線(LWMA)を価格がクロスしたら
知らせてくれる物はないでしょうか。

ご存知の方がいましたらよろしくお願いします。

Aベストアンサー

できました。

ですが・・・
分かってはいたことですが、SMA,LWMAのライン上にいるときは
アラームが頻繁になります。
お気をつけください^^;

下記URLにUPLoadしておきましたので^^

使い方ですが、Indicator表示させるときの
関数の説明の欄で十分分かっていただけると思います。

何か不明な点があればどぞ!

参考URL:http://kirin1182.seesaa.net/article/141254231.html

Q1枚とは?1ロットとは?

1枚とは?1ロットとは?

1枚 = 10,000 通貨らしいことは分かるのですが、1ロットとは何通貨なのでしょうか?
取引会社によって、あるいは同じFX取引会社でもコースによって異なるようで
1ロット=1,000通貨のときも、10,000通貨のときも、100,000通貨の場合もあるようで
いささか混乱しています。

ここで1ロット = 最低取引単位という認識でよいのでしょうか?すなわち
1000通貨単位で取引できるコースでは、1ロット=1000通貨
10000通貨単位から取引するコースでは、1ロット=10000通貨(=1枚)
ということでしょうか?

現在DMMFXでは取引ロット数に応じたキャッシュバックを行っているようですが
http://fx.dmm.com/campaign/new/
新規取引200ロット以上とは最低取引単位で200単位以上、
1ロット=10000通貨なら、200ロット=200枚以上ということでしょうか?

素人質問ですみませんがよろしくお願いいたします

Aベストアンサー

あなたの見解で正しいです。1枚=1ロット=最低取引単位 でOK。
基本的に一円動けば一万円の損益になる一万通貨単位の取引コースがほとんどです。稀に初心者やリスクを極力避けたい人のために1000通貨単位の取引ができるコースを用意している業者もあります。
200枚取引するならは1億は口座に入金しないとヤバイですが、すぐ退場することになるでしょう。


人気Q&Aランキング