while( try !=0){// определение условий для открытыия позиции//..// открытие позициц
res =OrderSend(...);if( res >0){PlaySound("alert.wav");
try =0;Comment("Ордер открыт !");Sleep(2000);
ret =true;}else{/* блок определения ошибок и возврат
err - уровень критичности ошибки (0,1,2,3)
msg - описание ошибки (если showErrors = true)
уровни определяются по номеру ошибки
0-нет ошибки, 1-надо ждать и обновлять,
2-сделка бракуется,3-фатальная ошибка*/
ErrorBlock( showErrors, err, msg);if( err >1) try =0;// в данном случае 2 и 3 критичныComment("Ошибка - ", msg);Sleep(2000);}}
注文をクローズするOrderClose()関数は、最初のパラメータとして注文番号を受け取り、注文番号は既存の注文に対してOrderSelect()を呼び出すことによってのみ取得できるため、一般のケースではクローズは次のようになります...ということです。
OrdersTotal() = 0の場合、つまり未決済注文がない場合は、直ちにforループを終了します。
回答ありがとうございます!OrderSend関数の冒頭を書けますか? 最後の括弧のすぐ後にあるはずです?
回答ありがとうございます!OrderSend関数の冒頭を書けますか? 最後の括弧のすぐ後にあるはずです?
さて、ここで一例をご紹介しましょう。
「取引」タブに表示される、未決済注文のマージンレベルの値(%)を返す関数を教えてください。
Helpでは、列挙したどの関数もこの値を返しません。
AccountMargin
AccountFreeMargin
AccountFreeMarginCheck
AccountFreeMarginMode
Damiani_Voltインジケータを使用することができます。
興味深い内容です、ありがとうございました。
それ来た
ありがとうございました。
なぜ私が怒っていると思うのですか?
ということを説明するのが私のやり方です。
不等号をとって実行することで
>> テスターでは、ポジティブを得ることができます。
を、どのレベルであっても構いません。
ポジティブまたはネガティブとの質問には
を取るか、マイナスを取らないか。
残念ながら、明確な区別はありません。
間違えてしまったかもしれない......。
問題は、初心者が「知らない」ことを聞いていることです。このサンプルコードは、EAの構造(正しい構造)を理解するためのものです。
そして、このコードに組み込まれているのは、クラシカルな取引の原則に基づいて構築されているものです。Expert Advisor自体もコードサンプルも、原理を勉強するためのもので、誰かをつついたり、何かで釣ったりするためのものではないのですが......。 私が聞いていることは、それが明確ではないということです。結局のところ、何をどのように理論的に理解しなければならないのです。そして、創造、彫刻、発明......。
1.これはエラーです...resはintで宣言され、もう一つbool型の変数を追加して、注文を開くことに成功したか失敗したかの値を返す ようにしなければなりません...。
2.IgorのOpenPosition()関数の実装の1つを以前使用していましたが、その後、エラーをキャッチして報告しやすくするために関数を変更しました...。
その結果、次のような構造になります。