MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 176 1...169170171172173174175176177178179180181182183...1953 新しいコメント Artyom Trishkin 2017.04.05 21:26 #1751 mila.com: 読むが、ループの前にファイルを 開くとは思いもよらなかった ) よく読んでないかもしれませんが ) ファイルを一行ずつ最初から最後まで読む例も...。 RichLux 2017.04.05 22:03 #1752 Expert Advisorがあり、取引時にピンバーでガイドされる。このロボットは通貨では正しく機能しますが、CFDでは全く予想がつきません。どうすればこのようなことが起こるのか、教えてください。 Artyom Trishkin 2017.04.05 22:05 #1753 RichLux:私は、取引時にPinbarをベースにしたロボットを書きました。このロボットは通貨では正しく機能しますが、CFDでは全く予測不可能です。どうすればこのようなことが起こるのか、教えてください。ここに、 あなたのケースのすべてがあります。 RichLux 2017.04.06 09:18 #1754 以下は、Pinbar定義関数です。int Pin() { double Close1 = iClose (_Symbol,_Period,1); double Open1 = iOpen (_Symbol,_Period,1); double Low1 = iLow(_Symbol,_Period,1); double High1 = iHigh (_Symbol,_Period,1); double Close2 = iClose (_Symbol,_Period,2); double Open2 = iOpen (_Symbol,_Period,2); double Low2 = iLow(_Symbol,_Period,2); double High2 = iHigh (_Symbol,_Period,2); if (MathAbs(Close1-Open1)/(High1-Low1)<= BodyPercent) { if(Close1>High1 - BodyLocaut*(High1-Low1)&&Open1>High1-BodyLocaut*(High1-Low1)&&Low1<Low2-nose*_Point && High2>High1) return (1); if(Close1<Low1 + BodyLocaut*(High1-Low1)&&Open1<Low1+BodyLocaut*(High1-Low1)&&High1>High2+nose*_Point && Low2<Low1) return (-1); } return(0); }Expert Advisor に挿入すると、通貨ペアで正常に機能する(Expert Advisor が関数の条件に対応するバーの次のバーでディールを設定する)。しかし、CFDの取引はどこでも開かれています。この機能の場合、CFDと通貨ペアはどう違うのですか? Artyom Trishkin 2017.04.06 12:21 #1755 RichLux:以下は、Pinbar定義関数です。Expert Advisor に挿入すると、通貨ペアで正常に機能する(Expert Advisor が関数の条件に対応するバーの次のバーでディールを設定する)。しかし、CFDの取引はどこでも開かれています。この機能の場合、CFDと通貨ペアはどう違うのですか? まず、すべての&&を{}に置き換えて、各条件がそれぞれのブロックに入るようにします。そして、それぞれのブロックのテスト結果をアンプリントして、ログにどんな値が出るか見てみましょう。 RichLux 2017.04.06 14:16 #1756 Artyom Trishkin: まず、すべての&&を{}に置き換えて、各条件がそれぞれ独立したブロックになるようにし、各ブロックでテスト結果を巻き戻して、どんな値が得られるかをログで確認します。ありがとうございます。アドバイスに従って、自分がどこを間違えていたのか理解できました。というのも、私のEAは5桁で動いていて、CFDは2桁しかなく、最低50pipsのEAに反応すると思っていたら、5pipsから反応があったのです。失敗しちゃった。この点、よろしくお願いします。コードの中にそのような部分があります。MathAbs(Close1-Open1)/(High1-Low1)High1=Low1となることもあります。すると、テスターは「ゼロで割り切れない」というクリティカルエラーを 発生させる。どのように回避するのか? Artyom Trishkin 2017.04.06 14:35 #1757 RichLux: ありがとうございます。アドバイスに従って、自分がどこを間違えていたのか理解できました。というのも、私のEAは5桁で動いていて、CFDは2桁しかなく、最低50pipsのEAに反応すると思っていたら、5pipsから反応があったのです。失敗しちゃった。この点、よろしくお願いします。コードの中にそのような部分があります。High1=Low1となることもあります。すると、テスターは「ゼロで割り切れない」というクリティカルエラーを 発生させる。どのように回避するのか?何も考えずにできる。MathAbs((Close1-Open1)/(High1-Low1>0?High1-Low1:0.00001)) 削除済み 2017.04.09 17:29 #1758 こんにちは、コンパイル中に問題が発生しました。void OnTick(){double minprice=-999999、mp、maxprice=-999999。for(int i=0; i<10; i++){mp = iLow(Simbol(), PERIOD_CURRENT, i);if (mp < minprice)minprice = mp;}for(int i=0; i<10; i++){mp = iHigh(Simbol(), PERIOD_CURRENT, i);if (mp > maxprice)maxprice = mp;}Comment("最低価格: " + DoubleToString(minprice, 5) + "\n" + "最低価格")"最大価格: " + DoubleToString(maxprice, 5))}ソースコードは、コンパイラがiLowとiHighと変数Simbol()でそこに文字列モードで誓う関数が含まれていますが、それは例で別の問題を解決します。上のコードのどこを直せばいいのでしょうか。ル ープを確認するためのコンパイルができず、行き詰っています。教科書より現在の不完全なバーに対応する値を取得したい場合、次のようになります。の場合、start_pos=0、count=1を指定して、最初の呼び出し形式を使用することができます。例#property copyright "2009, MetaQuotes Software Corp."#プロパティリンク "https://www.mql5.com"#property version "1.00"#property description "High[i]とLow[i]の値の出力例"#property description "ランダムに選ばれたバー用"double High[],Low[];//+------------------------------------------------------------------+//| 指定されたバー番号の安値を取得します。//+------------------------------------------------------------------+double iLow(文字列シンボル,ENUM_TIMEFRAMESタイムフレーム,intインデックス){double low=0;ArraySetAsSeries(low,true)です。int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),Low);if(copied>0 && index<copied) low=Low[index];return(low)です。}//+------------------------------------------------------------------+//| 与えられたバー番号の高値を取得します。//+------------------------------------------------------------------+double iHigh(文字列シンボル,ENUM_TIMEFRAMESタイムフレーム,intインデックス){double high=0;ArraySetAsSeries(high,true)です。int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High);if(copied>0 && index<copied) high=High[index];return(high)です。}//+------------------------------------------------------------------+ Автоматический трейдинг и тестирование торговых стратегий www.mql5.com MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций Any questions from newcomers 初心者の方からの質問 MQL5 MT5 MetaTrader Questions from Beginners MQL5 Sergey Gritsay 2017.04.09 17:35 #1759 geratdc:こんにちは、コンパイル中に問題が発生しました。void OnTick(){double minprice=-999999、mp、maxprice=-999999。for(int i=0; i<10; i++){mp = iLow(Simbol(), PERIOD_CURRENT, i);if (mp < minprice)minprice = mp;}for(int i=0; i<10; i++){mp = iHigh(Simbol(), PERIOD_CURRENT, i);if (mp > maxprice)maxprice = mp;}Comment("最低価格: " + DoubleToString(minprice, 5) + "\n" + "最低価格")"Maxprice: " + DoubleToString(maxprice, 5));}ソースコードは、コンパイラがiLowとiHigh b変数Simbol()がそこに文字列モードであることを誓う関数が含まれていますが、それは例の中で別の問題を解決しています。上のコードのどこを直せばいいのでしょうか。ル ープを確認するためのコンパイルができず、行き詰っています。教科書より現在の不完全なバーに対応する値を取得したい場合、次のようになります。の場合、start_pos=0、count=1を指定して、最初の呼び出し形式を使用することができます。例#property copyright "2009, MetaQuotes Software Corp."#プロパティリンク "https://www.mql5.com"#property version "1.00"#property description "High[i]とLow[i]の値の出力例"#property description "ランダムに選ばれたバー用"double High[],Low[];//+------------------------------------------------------------------+//| 指定されたバー番号の安値を取得します。//+------------------------------------------------------------------+double iLow(文字列シンボル,ENUM_TIMEFRAMESタイムフレーム,intインデックス){double low=0;ArraySetAsSeries(low,true)です。int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),Low);if(copied>0 && index<copied) low=Low[index];return(low)です。}//+------------------------------------------------------------------+//| 与えられたバー番号の高値を取得します。//+------------------------------------------------------------------+double iHigh(文字列シンボル,ENUM_TIMEFRAMESタイムフレーム,intインデックス){double high=0;ArraySetAsSeries(high,true)です。int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High);if(copied>0 && index<copied) high=High[index];return(high)です。}//+------------------------------------------------------------------+Simbol() は Symbol() または_Symbolと書くべきところ、間違っています。 削除済み 2017.04.09 17:53 #1760 Sergey Gritsay: Simbol() - Symbol() または _Symbol と記述する必要があります。ありがとうございます。シンボルのスペルを正しく表記することで、シンボルの誤りを修正しました。iLowと iHighの関数が おかしいのですが。MQL4とMQL5の類似度(%)は? ファイル: 1.png 64 kb 1...169170171172173174175176177178179180181182183...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
読むが、ループの前にファイルを 開くとは思いもよらなかった )
よく読んでないかもしれませんが )Expert Advisorがあり、取引時にピンバーでガイドされる。このロボットは通貨では正しく機能しますが、CFDでは全く予想がつきません。
どうすればこのようなことが起こるのか、教えてください。
私は、取引時にPinbarをベースにしたロボットを書きました。このロボットは通貨では正しく機能しますが、CFDでは全く予測不可能です。
どうすればこのようなことが起こるのか、教えてください。
以下は、Pinbar定義関数です。
Expert Advisor に挿入すると、通貨ペアで正常に機能する(Expert Advisor が関数の条件に対応するバーの次のバーでディールを設定する)。しかし、CFDの取引はどこでも開かれています。
この機能の場合、CFDと通貨ペアはどう違うのですか?
以下は、Pinbar定義関数です。
Expert Advisor に挿入すると、通貨ペアで正常に機能する(Expert Advisor が関数の条件に対応するバーの次のバーでディールを設定する)。しかし、CFDの取引はどこでも開かれています。
この機能の場合、CFDと通貨ペアはどう違うのですか?
まず、すべての&&を{}に置き換えて、各条件がそれぞれ独立したブロックになるようにし、各ブロックでテスト結果を巻き戻して、どんな値が得られるかをログで確認します。
ありがとうございます。アドバイスに従って、自分がどこを間違えていたのか理解できました。というのも、私のEAは5桁で動いていて、CFDは2桁しかなく、最低50pipsのEAに反応すると思っていたら、5pipsから反応があったのです。失敗しちゃった。
この点、よろしくお願いします。
コードの中にそのような部分があります。
MathAbs(Close1-Open1)/(High1-Low1)High1=Low1となることもあります。すると、テスターは「ゼロで割り切れない」というクリティカルエラーを 発生させる。
どのように回避するのか?
ありがとうございます。アドバイスに従って、自分がどこを間違えていたのか理解できました。というのも、私のEAは5桁で動いていて、CFDは2桁しかなく、最低50pipsのEAに反応すると思っていたら、5pipsから反応があったのです。失敗しちゃった。
この点、よろしくお願いします。
コードの中にそのような部分があります。
High1=Low1となることもあります。すると、テスターは「ゼロで割り切れない」というクリティカルエラーを 発生させる。
どのように回避するのか?
何も考えずにできる。
こんにちは、コンパイル中に問題が発生しました。
void OnTick()
{
double minprice=-999999、mp、maxprice=-999999。
for(int i=0; i<10; i++)
{
mp = iLow(Simbol(), PERIOD_CURRENT, i);
if (mp < minprice)
minprice = mp;
}
for(int i=0; i<10; i++)
{
mp = iHigh(Simbol(), PERIOD_CURRENT, i);
if (mp > maxprice)
maxprice = mp;
}
Comment("最低価格: " + DoubleToString(minprice, 5) + "\n" + "最低価格")
"最大価格: " + DoubleToString(maxprice, 5))
}
ソースコードは、コンパイラがiLowとiHighと変数Simbol()でそこに文字列モードで誓う関数が含まれていますが、それは例で別の問題を解決します。上のコードのどこを直せばいいのでしょうか。ル ープを確認するためのコンパイルができず、行き詰っています。
教科書より
現在の不完全なバーに対応する値を取得したい場合、次のようになります。
の場合、start_pos=0、count=1を指定して、最初の呼び出し形式を使用することができます。
例
#property copyright "2009, MetaQuotes Software Corp."
#プロパティリンク "https://www.mql5.com"
#property version "1.00"
#property description "High[i]とLow[i]の値の出力例"
#property description "ランダムに選ばれたバー用"
double High[],Low[];
//+------------------------------------------------------------------+
//| 指定されたバー番号の安値を取得します。
//+------------------------------------------------------------------+
double iLow(文字列シンボル,ENUM_TIMEFRAMESタイムフレーム,intインデックス)
{
double low=0;
ArraySetAsSeries(low,true)です。
int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),Low);
if(copied>0 && index<copied) low=Low[index];
return(low)です。
}
//+------------------------------------------------------------------+
//| 与えられたバー番号の高値を取得します。
//+------------------------------------------------------------------+
double iHigh(文字列シンボル,ENUM_TIMEFRAMESタイムフレーム,intインデックス)
{
double high=0;
ArraySetAsSeries(high,true)です。
int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High);
if(copied>0 && index<copied) high=High[index];
return(high)です。
}
//+------------------------------------------------------------------+
こんにちは、コンパイル中に問題が発生しました。
void OnTick()
{
double minprice=-999999、mp、maxprice=-999999。
for(int i=0; i<10; i++)
{
mp = iLow(Simbol(), PERIOD_CURRENT, i);
if (mp < minprice)
minprice = mp;
}
for(int i=0; i<10; i++)
{
mp = iHigh(Simbol(), PERIOD_CURRENT, i);
if (mp > maxprice)
maxprice = mp;
}
Comment("最低価格: " + DoubleToString(minprice, 5) + "\n" + "最低価格")
"Maxprice: " + DoubleToString(maxprice, 5));
}
ソースコードは、コンパイラがiLowとiHigh b変数Simbol()がそこに文字列モードであることを誓う関数が含まれていますが、それは例の中で別の問題を解決しています。上のコードのどこを直せばいいのでしょうか。ル ープを確認するためのコンパイルができず、行き詰っています。
教科書より
現在の不完全なバーに対応する値を取得したい場合、次のようになります。
の場合、start_pos=0、count=1を指定して、最初の呼び出し形式を使用することができます。
例
#property copyright "2009, MetaQuotes Software Corp."
#プロパティリンク "https://www.mql5.com"
#property version "1.00"
#property description "High[i]とLow[i]の値の出力例"
#property description "ランダムに選ばれたバー用"
double High[],Low[];
//+------------------------------------------------------------------+
//| 指定されたバー番号の安値を取得します。
//+------------------------------------------------------------------+
double iLow(文字列シンボル,ENUM_TIMEFRAMESタイムフレーム,intインデックス)
{
double low=0;
ArraySetAsSeries(low,true)です。
int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),Low);
if(copied>0 && index<copied) low=Low[index];
return(low)です。
}
//+------------------------------------------------------------------+
//| 与えられたバー番号の高値を取得します。
//+------------------------------------------------------------------+
double iHigh(文字列シンボル,ENUM_TIMEFRAMESタイムフレーム,intインデックス)
{
double high=0;
ArraySetAsSeries(high,true)です。
int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High);
if(copied>0 && index<copied) high=High[index];
return(high)です。
}
//+------------------------------------------------------------------+
Simbol() は Symbol() または_Symbolと書くべきところ、間違っています。
Simbol() - Symbol() または _Symbol と記述する必要があります。
ありがとうございます。シンボルのスペルを正しく表記することで、シンボルの誤りを修正しました。iLowと iHighの関数が おかしいのですが。
MQL4とMQL5の類似度(%)は?