ヘルプEAが取引を終了しない理由 - ページ 2

 
crossy:


ありがとうございます。

まず、小さな間違いがあると思います。

for(int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--)

緑色と太字の訂正を追加する必要があります。

しかし、次の行がどのように役立つのか理解できません?

#include "..\libraries ╱dlib.mq4" です。

Yさん、ありがとうございます。

カウントの件はその通りですが、私の書いたように書くと、OrderSelect()はfalseを返して、forループは次のカウントに進みます。

そのインクルードが、このコードのエラーを表示します。

Print("failed to close buy position ", ErrorDescription(GetLastError())  ); 

そうすれば、なぜあなたのEAが注文を決済しないのかがわかります :(.

また、このようなインクルードを書くこともできます。

#include <stdlib.mqh>

MetaEditorのスクリプトフォルダにtrade.mq4というサンプルがあります。


インクルードをどこに置けばいいかはご存知 ですよね?グローバル変数やtrade.mq4と同じように、EAのトップに置いてください。

stdlib.mq4は、MetaEditor > Navigator Window (Ctrl + D) > files tab > libraries folder > stdlib.mq4というところにあります。

というわけで、この辺のことは、もうご存知か どうかわかりませんが、気にしないでください。)

 
onewithzachy:

しかし、私の書いたように書くと、OrderSelect()はfalseを返し、forループは次のカウントに進みます。

そのインクルードは、このコードのエラーを表示します...

そうすれば、なぜあなたのEAが注文を決済しないのかがわかります :(.

また、このようなインクルードを書くこともできます。

MetaEditorのスクリプトフォルダにtrade.mq4というサンプルがあります。


インクルードをどこに置けばいいかはご存知 ですよね?グローバル変数やtrade.mq4と同じように、EAのトップに置いてください。

stdlib.mq4は、MetaEditor > Navigator Window (Ctrl + D) > files tab > libraries folder > stdlib.mq4というところにあります。

うわー、私はそこに詳細に行ったことを気にしないことを望む、私はあなたがすでに知っているか、または知らないかもしれないので :)


onewithzachyさん、ありがとうございます。

ご指摘の通りやってみましたので、正しい結果を待っています。また更新します。

 
crossy:


onewithzachyさん、ありがとうございます。

ご指摘の通り、正しいステイションを待ちます。私は更新します。

私はバックテストはあまり好きではないのですが、RaptorUKさんが他のスレッド(ここをクリック)で、バックテストを使ってコードをデバッグすることができると提案しています。
 
onewithzachy:
私はバックテストはあまり好きではないのですが、RaptorUKが他のスレッド(ここをクリック)で、バックテストを使ってコードをデバッグすることを提案しています。


このEAはマルチペアなので、バックテストは不可能なのです。

とにかく、関連する状況を素早く把握することができるんです。すでに結果が出ています。私は更新します。

ありがとうございます。

 
crossy:


EAはマルチペアなので、バックテストは不可能です。

バックテストではなく... デバッグ ... ポートフォリオベースのEAでもデバッグは可能な場合があります。
 

Raptorさん、ありがとうございます。

ORDERSELECTがbool変数で、時々MT4が成功しないことに気づきました。

することがあります。そのため、onewithzachyが行うことを推奨しています。

for(int cnt=0; cnt<OrdersTotal(); cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) == true && ...
オーダーシンボル()==ペア &&
オーダータイプ()==OP_BUY)
{
// 終了するコード

私の質問は、もしORDERSELECTがfalseの場合、どのように "cnt "LOOPをもう一度やればいいのでしょうか?

私はあなたが私を理解することを願っています。

Y.

 
crossy:

Raptorさん、ありがとうございます。

ORDERSELECTがbool変数で、時々MT4が成功しないことに気づきました。

することがあります。そのため、onewithzachyが行うことを推奨しています。

for(int cnt=0; cnt<OrdersTotal(); cnt++ )

私の質問は、もしORDERSELECTがfalseの場合、どのように "cnt "LOOPをもう一度やればいいのでしょうか?

私はあなたが私を理解することを願っています。

Y.

注文を閉じるときは、カウントダウンしなければならない... ... 上げてはいけません
 
RaptorUK:
もし、クロージングオーダーなら、カウントダウンをしなければなりません。上げてはいけません


Raptorさん、すみません、前の投稿からCopy_pasteしただけなのですが、コード内で変更しました。

とにかく、私の質問について何かおわかりになりますか?

 
crossy:


Raptorさん、すみません、前の投稿からCopy_pasteしただけなのですが、コード内で変更しました。

とにかく、私の前の質問について何かお分かりになりますか?

あなたのコードを見せていただければ、意見を述べます。
 
RaptorUK:
あなたのコードを表示し、私は意見を与えることができます。


ラップ、4016コードラインです......。

とにかく、私の質問は技術的なものなのです。私はかつてFORTRANを習いましたが、そこでは希望するコード行に数字がついていました。

"GO to 120 "とすると、コードはその行に再び移動します。

ここで、OrderselectがFALSEの場合、EAはどのようにコード行に戻ることができるのか:for(int cnt=OrdersTotal(); cnt > 0; cnt-- )

?・・・?