ヘルプEAが取引を終了しない理由 - ページ 3 1234567 新しいコメント Simon Gniadkowski 2012.05.21 20:51 #21 crossy: ここでOrderselectがFALSEの場合、EAはどのようにコードラインに戻ることができます:for(int cnt=OrdersTotal(); cnt > 0; cnt-- ) ?・・・? ループ内の次の値に移動するには、continue を使用します。.またはbreakで ループから抜け出すことができます ... それぞれの説明はリンクをクリックしてください。 Simon Gniadkowski 2012.05.21 20:54 #22 crossy: ここで、OrderselectがFALSEの場合、EAはどのようにコードラインに戻ることができます:for(int cnt=OrdersTotal(); cnt > 0; cnt-- ) ??? そのコードは間違っています ... ... cntはOrdersTotal() - 1で始まり、cnt >= 0までデクリメントされる必要があります ... ... 最初のエントリは1ではなく0です これが、私がコードを見るように頼んだ理由です。そして、あなたは問題を特定するのに十分なものを示しました ... ... たぶん。) Yochanan Gerbi 2012.05.21 21:17 #23 RaptorUK: そのコードは間違っています ... ... cnt は OrdersTotal() - 1 で開始し、cnt >= 0 までデクリメントする必要があります ... ... 最初のエントリは 1 ではなく 0 です。 これが、私がコードを見るように頼んだ理由です。そして、あなたは問題を特定するのに十分なものを示しました ... ... たぶん。) とても正しいです。ウィズマンさん、ありがとうございました。 Yochanan Gerbi 2012.05.21 21:23 #24 crossy: 大正解です。Wizemanさん、ありがとうございます。 そして、もう一つのアイデア。 条件がたくさんある場合は、次のように書いてもよい。 If( X>b && B>S && NB<F......)と書くこともできます。 { BBB= 5; }f.e. この場合、EAは括弧内のすべての条件を計算しなければならない。 しかし、効率性(4,000行)を重視するならば、次のようにするのがよいでしょう。 もし( X>b ) { while (B>S) { While (NB<F...) { BBB=5; } ブレーク } break } 2つのバリエーションは同じものですか? Y. Help: Why The EA The ratio of MetaTrader Features of the mql5 onewithzachy 2012.05.21 22:08 #25 クロッシー、コードを書くときは、SRCボタンを使ってください。 ということで、このように表示されます。 //--- first code If(X>b && B>S && NB<F......) { BBB=5; } // --- second code If(X>b) { while(B>S) { while(NB<F..) { BBB=5; } break; } break; } mql4のif, while, forループの説明はこちらhttps://book.mql4.com/operators/assign 2番目のコードでは、breakを使用しているので問題ありませんが、BBB = 5を得るために長い道のりがあります。 Simon Gniadkowski 2012.05.21 22:25 #26 crossy: そして、もう一つのアイデア。 条件がたくさんある場合は、次のように書いてもよい。 If( X>b && B>S && NB<F......)と書くこともできます。 { BBB= 5; }f.e. この場合、EAは括弧内のすべての条件を計算しなければならない。 しかし、もしあなたが効率(4,000行のコード...)を求めるのであれば、私はその方が良いと思います。 whileを使うと、無限ループに陥る可能性があります。 Yochanan Gerbi 2012.05.22 05:17 #27 お二人ともありがとうございます!。 Yochanan Gerbi 2012.05.23 08:24 #28 onewithzachy: 読みやすくするために、SRCボタンを使ってコードを表示させてください :) OrderSelect() のコードが間違っています。あなたのコードをこれと比較してみてください。 そして、まだ問題があるかどうかを書き込んでください :) onewithzachyに特別感謝します。 私はORDERSELECTがキャッチできないことを知らなかったので、あなたは未知のエラーを持っているかもしれません。 4016行だった私のコードは、ほぼ4500行になりました - しかし、エラーなしで。 皆さん、ありがとうございます。 Y. Yochanan Gerbi 2012.05.25 13:20 #29 こんにちは、友人たち。 長い間、私のEAを使用してきましたが、もう一つ問題があります。 次のコードラインを持っています。 CLOSE_Single_P(Pair1, "LONG",OrderT,OrderL); とします。 Pair1 はシンボルです。 「LONG"はロングトレードのサインです。 OrderTは 注文チケット 番号です。 OrderLは 注文ロットサイズです。 関数は以下の通りです。 void CLOSE_Single_P(string SYMB, string TREN, int TICKET, double LOTT){ double PRC; bool Check = false; for ( int cntt=0; cntt<20000; cntt++ ){ if ( Check ){ Check_Ini(). return;} for ( int vvv = OrdersTotal()-1; vvv >= 0; vvv-- ){ if ( OrderSelect(vvv, SELECT_BY_POS, MODE_TRADES) ){ Check = false; if ( TREN == "LONG" ) PRC = MarketInfo(SYMB,MODE_BID); else if ( TREN == "SHORT" ) PRC = MarketInfo(SYMB,MODE_ASK); Check = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow); if ( Check ) break;} }. } } return;} 私の問題点はEAがうまく取引を終了させることもありますが、EAが取引を終了させても、すでに終了しているにもかかわらず、終了させるためのチケットを探し続けていることもあります。 (エラー: "Unknown ticket number..." が出ます。 ロジックを間違えてしまったようです。 よろしくお願いします。 Y Help: Why The EA MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 コーディングのヘルプ Simon Gniadkowski 2012.05.25 13:21 #30 お願い ... ... ... ... ... ... 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ここでOrderselectがFALSEの場合、EAはどのようにコードラインに戻ることができます:for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
?・・・?
ここで、OrderselectがFALSEの場合、EAはどのようにコードラインに戻ることができます:for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???
そのコードは間違っています ... ...
cntはOrdersTotal() - 1で始まり、cnt >= 0までデクリメントされる必要があります ... ... 最初のエントリは1ではなく0です
これが、私がコードを見るように頼んだ理由です。そして、あなたは問題を特定するのに十分なものを示しました ... ... たぶん。)
そのコードは間違っています ... ...
cnt は OrdersTotal() - 1 で開始し、cnt >= 0 までデクリメントする必要があります ... ... 最初のエントリは 1 ではなく 0 です。
これが、私がコードを見るように頼んだ理由です。そして、あなたは問題を特定するのに十分なものを示しました ... ... たぶん。)
とても正しいです。ウィズマンさん、ありがとうございました。
大正解です。Wizemanさん、ありがとうございます。
そして、もう一つのアイデア。
条件がたくさんある場合は、次のように書いてもよい。
If( X>b && B>S && NB<F......)と書くこともできます。
{
BBB= 5;
}f.e.
この場合、EAは括弧内のすべての条件を計算しなければならない。
しかし、効率性(4,000行)を重視するならば、次のようにするのがよいでしょう。
もし( X>b )
{
while (B>S)
{
While (NB<F...)
{
BBB=5;
}
ブレーク
}
break
}
2つのバリエーションは同じものですか?
Y.
クロッシー、コードを書くときは、SRCボタンを使ってください。
ということで、このように表示されます。
mql4のif, while, forループの説明はこちらhttps://book.mql4.com/operators/assign
2番目のコードでは、breakを使用しているので問題ありませんが、BBB = 5を得るために長い道のりがあります。
そして、もう一つのアイデア。
条件がたくさんある場合は、次のように書いてもよい。
If( X>b && B>S && NB<F......)と書くこともできます。
{
BBB= 5;
}f.e.
この場合、EAは括弧内のすべての条件を計算しなければならない。
しかし、もしあなたが効率(4,000行のコード...)を求めるのであれば、私はその方が良いと思います。
読みやすくするために、SRCボタンを使ってコードを表示させてください :)
OrderSelect() のコードが間違っています。あなたのコードをこれと比較してみてください。 そして、まだ問題があるかどうかを書き込んでください :)
onewithzachyに特別感謝します。
私はORDERSELECTがキャッチできないことを知らなかったので、あなたは未知のエラーを持っているかもしれません。
4016行だった私のコードは、ほぼ4500行になりました - しかし、エラーなしで。
皆さん、ありがとうございます。
Y.
こんにちは、友人たち。
長い間、私のEAを使用してきましたが、もう一つ問題があります。
次のコードラインを持っています。
CLOSE_Single_P(Pair1, "LONG",OrderT,OrderL);
とします。
Pair1 はシンボルです。
「LONG"はロングトレードのサインです。
OrderTは 注文チケット 番号です。
OrderLは 注文ロットサイズです。
関数は以下の通りです。
void CLOSE_Single_P(string SYMB, string TREN, int TICKET, double LOTT)
{
double PRC;
bool Check = false;
for ( int cntt=0; cntt<20000; cntt++ )
{
if ( Check )
{
Check_Ini().
return;
}
for ( int vvv = OrdersTotal()-1; vvv >= 0; vvv-- )
{
if ( OrderSelect(vvv, SELECT_BY_POS, MODE_TRADES) )
{
Check = false;
if ( TREN == "LONG" )
PRC = MarketInfo(SYMB,MODE_BID);
else
if ( TREN == "SHORT" )
PRC = MarketInfo(SYMB,MODE_ASK);
Check = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow);
if ( Check )
break;
} }.
}
}
return;
}
私の問題点はEAがうまく取引を終了させることもありますが、EAが取引を終了させても、すでに終了しているにもかかわらず、終了させるためのチケットを探し続けていることもあります。
(エラー: "Unknown ticket number..." が出ます。
ロジックを間違えてしまったようです。
よろしくお願いします。
Y
お願い ... ... ... ... ... ...