[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 627 1...620621622623624625626627628629630631632633634...1145 新しいコメント 削除済み 2010.06.18 19:34 #6261 chief2000: return(0)」を「return」に置き換えたが、「問題」は解決しなかった。最適化後も同じ0-zeroの結果を見ることができる。最適化時にゼロを出力しない解決策はありますか? ありがとうございます。 しているかどうかはわかりませんが、念のためお伝えしておきますと、「無駄な結果を無視する」にチェックを入れてください。 バランスによる)マイナスの結果は解消されます。ゼロについてはよくわかりませんが、試してみてください。 Artyom Trishkin 2010.06.18 20:36 #6262 新しいティックごとに、例えば15±7以内の「乱数」を、与えられた範囲内でランダムに発生させるにはどうしたらいいのだろう. 削除済み 2010.06.18 21:07 #6263 こんな感じ。 int random(){ MathSrand(TimeLocal()); while(true){ int x = MathRand(); if(x >= 8 && x <= 22)return(x); } } :) Artyom Trishkin 2010.06.18 22:35 #6264 ToLik_SRGV: こんな感じ。 :) ありがとうございます!!!;) Oleg 2010.06.19 00:25 #6265 ToLik_SRGV: ご存じかどうかわかりませんが、念のため、「無駄な結果をスキップする」にチェックを入れてください。 バランスによる)ネガティブな結果はフィルタリングされます。nullのものはよくわかりませんが、試してみてください。 最適化の初期段階では、NULL結果の中から最適なものを選択することがよくあります(後期では、NULL結果に目を通して比較することが有効です)。ゼロは、まさに結果が意味をなさないし、多すぎて保存ファイルのサイズが大きくなり、結果を見るのに視覚的に支障をきたすので邪魔になる。とにかくありがとうございました。 Oleg 2010.06.19 00:41 #6266 granit77: 外部変数 MA_Fast_Period と MA_Slow_Period のことであれば、解決策があります。 Expert Advisor で変数が計算されている場合は、何もする必要がありません。 もう遅いし、頭も働かないし...でも、とても良いアイデアだと思います!ありがとうございました。 Igor Makanu 2010.06.19 05:15 #6267 artmedia70: 新しいティックごとに、例えば15±7以内の「乱数」を、与えられた範囲内でランダムに発生させるにはどうしたらいいのだろう. http://prolang.ru/index.php/cpp/cpptheory/3-clang-random.html 区間[a,b]に一様分布する乱数実数を得るには、以下の式を使用する。 x = rand()*(b-a)/RAND_MAX + a; mqlの場合、MathRand()関数の説明で、0から32767の範囲の擬似乱数整数を返すとある。 例:mqlの場合 RAND_MAX = 32767 Alexey Zhuravlev 2010.06.19 06:16 #6268 mq4を学び始めて、すぐに曖昧な場面に遭遇しました。 いわば、手を動かしてみたのです。マに簡単なExpert Advisorを書きました。しかし、それは歴史の上でも取引しようとはしない。エラーは表示されません。 どこで失敗したのか、教えてください。 int start() { //---проверим возможность входа в позицию bool flagchange = false; int Slippage = 3; int i = 0; double lt = getLots() ; // минимальный лот RefreshRates(); int total = OrdersTotal(); int ticket = -1; for (;;) { int flag= GetEma(); if (flagchange != flag) // проверим, сигнал ема изменился? если да, то можно открыть или закрыть поз. flagchange = true; // изменился! else flagchange = false; if (flagchange == True) { int Total=OrdersTotal(); //проверим есть открытые позиции? if(Total>0) { for(i=Total-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true) // если а то закрываем { if(OrderType()==OP_BUY || OrderType()==OP_SELL) // Только Buy и Sell { if(OrderType()==OP_BUY) bool Result=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,CLR_NONE); else Result=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,CLR_NONE); if(Result!=true) { Print("LastError = ",GetLastError()); } } } else // если открытых нет, то окрываем. if (flag ==1) OrderSend(Symbol(),OP_BUY,lt,Ask,Slippage,Bid - sl * Point,0,"Buy",888,0,Blue); else OrderSend(Symbol(),OP_SELL,lt,Bid,Slippage,Ask + sl * Point,0,"Seel",888,0,Red); { } } } } } //---- return(0); } ////////////////////////////////////////////////////// int GetEma() { //----Получим значение EMA1 int ma1= iMA(Symbol(),PERIOD_H1,ema1,0,1,6,0); //----Получим значение EMA2 int ma2= iMA("",PERIOD_H1,ema2,0,1,6,0); if (ma1>ma2) return (1); else return (0);} ///////////////////////////////////////////////////// // посчитаем разтер лота double getLots() { double minlot = MarketInfo(Symbol(), MODE_MINLOT); int round = MathAbs(MathLog(minlot) / MathLog(10.0)) + 0.5; double lot = minlot; //---- select lot size lot = NormalizeDouble(AccountFreeMargin() * Risk / 1000.0, round); if (AccountFreeMargin() < lot * MarketInfo(Symbol(), MODE_MARGINREQUIRED)) { lot = NormalizeDouble(AccountFreeMargin() / MarketInfo(Symbol(), MODE_MARGINREQUIRED), round); } if(lot < minlot) lot = minlot; double maxlot = MarketInfo(Symbol(), MODE_MAXLOT); if(lot > maxlot) lot = maxlot; //---- return lot size return(lot); } Igor Makanu 2010.06.19 06:26 #6269 bool flagchange = false; int Slippage = 3; int i = 0; double lt = getLots() ; // 最小ロット RefreshRates(); int total = OrdersTotal(); int ticket = -1; for (;;) { int flag= GetEma(); if (flagchange != flag) は、パラメータなしのfor文ですか?- 永遠のループはそのように書かれていませんし、第二に、EA用のグローバル変数があります - ターミナル用ではありません、それらは、あなたが書いたように、すべての関数とstart()関数を含む前にコードの一番最初に記述されています - あなたがstart()関数を呼び出すすべてのティックで、 フラグチェンジ= false; そして、あなたは以前の状態と比較してみて、そのフラグの状態は常に偽であろうとします。 もし、あなたが自分の力を試してみたいなら、Kodobaseの既製のExpert Advisorを使い、市場に参入 する条件を自分のものに変えてみると、より早く参入できるはずです。 どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - [WARNING CLOSED!] Any newbie 戦略的予見システム Victor Nikolaev 2010.06.19 06:27 #6270 MarkTrade: mq4を学び始めて、すぐに曖昧な場面に遭遇しました。 いわば、手を動かしてみたのです。マに簡単なExpert Advisorを書きました。しかし、それは歴史の上でも取引しようとはしない。エラーは表示されません。 どこで失敗したのか、教えてください。 EAをループさせる目的は何ですか? for (;;) { } 1...620621622623624625626627628629630631632633634...1145 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
return(0)」を「return」に置き換えたが、「問題」は解決しなかった。最適化後も同じ0-zeroの結果を見ることができる。最適化時にゼロを出力しない解決策はありますか?
ありがとうございます。
しているかどうかはわかりませんが、念のためお伝えしておきますと、「無駄な結果を無視する」にチェックを入れてください。
バランスによる)マイナスの結果は解消されます。ゼロについてはよくわかりませんが、試してみてください。
こんな感じ。
:)
こんな感じ。
:)
ご存じかどうかわかりませんが、念のため、「無駄な結果をスキップする」にチェックを入れてください。
バランスによる)ネガティブな結果はフィルタリングされます。nullのものはよくわかりませんが、試してみてください。
最適化の初期段階では、NULL結果の中から最適なものを選択することがよくあります(後期では、NULL結果に目を通して比較することが有効です)。ゼロは、まさに結果が意味をなさないし、多すぎて保存ファイルのサイズが大きくなり、結果を見るのに視覚的に支障をきたすので邪魔になる。とにかくありがとうございました。
外部変数 MA_Fast_Period と MA_Slow_Period のことであれば、解決策があります。 Expert Advisor で変数が計算されている場合は、何もする必要がありません。
もう遅いし、頭も働かないし...でも、とても良いアイデアだと思います!ありがとうございました。
新しいティックごとに、例えば15±7以内の「乱数」を、与えられた範囲内でランダムに発生させるにはどうしたらいいのだろう.
区間[a,b]に一様分布する乱数実数を得るには、以下の式を使用する。
x = rand()*(b-a)/RAND_MAX + a;
mqlの場合、MathRand()関数の説明で、0から32767の範囲の擬似乱数整数を返すとある。
例:mqlの場合 RAND_MAX = 32767
mq4を学び始めて、すぐに曖昧な場面に遭遇しました。
いわば、手を動かしてみたのです。マに簡単なExpert Advisorを書きました。しかし、それは歴史の上でも取引しようとはしない。エラーは表示されません。
どこで失敗したのか、教えてください。
bool flagchange = false;
int Slippage = 3; int i = 0; double lt = getLots() ; // 最小ロット RefreshRates(); int total = OrdersTotal(); int ticket = -1;
for (;;)
{ int flag= GetEma();
if (flagchange != flag)
は、パラメータなしのfor文ですか?- 永遠のループはそのように書かれていませんし、第二に、EA用のグローバル変数があります - ターミナル用ではありません、それらは、あなたが書いたように、すべての関数とstart()関数を含む前にコードの一番最初に記述されています - あなたがstart()関数を呼び出すすべてのティックで、 フラグチェンジ= false; そして、あなたは以前の状態と比較してみて、そのフラグの状態は常に偽であろうとします。
もし、あなたが自分の力を試してみたいなら、Kodobaseの既製のExpert Advisorを使い、市場に参入 する条件を自分のものに変えてみると、より早く参入できるはずです。
mq4を学び始めて、すぐに曖昧な場面に遭遇しました。
いわば、手を動かしてみたのです。マに簡単なExpert Advisorを書きました。しかし、それは歴史の上でも取引しようとはしない。エラーは表示されません。
どこで失敗したのか、教えてください。
EAをループさせる目的は何ですか?
for (;;) { }