[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 502

 
edit削除 スリッページを考慮した、130-134エラーなしの発注機能を探すのを手伝ってください。
 
nuan:
edit削除 スリッページを考慮し、130-134エラーなしで注文する機能を探すヘルプ。

バリアントを見せてください。
 
NumderOrder=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-SL*Point,Ask+TP*Point, "BUY",0,0,Red);

Print(GetLastError())を実行します。

134を出すSLとTPのどの値でも、全く注文を出さないことが多いのです。

条件付きで開く if(NumberOfOrders(NULL)==0)


テスターでは、1つの注文ではなく、常にたくさんの注文を出します。つまり、このペアで他に未決済の注文がないのに、なぜ注文を出すのか理解できないのです。

 
申し訳ありませんが、なぜ複数の注文があるのでしょうか
 
nuan:
NumderOrder=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-SL*Point,Ask+TP*Point, "BUY",0,0,Red).を送信します。

Print(GetLastError())を実行します。

134を出すSLとTPのどの値でも、全く注文を出さないことが多いのです。

条件付きで開く if(NumberOfOrders(NULL)==0)


テスターでは、1つの注文ではなく、常にたくさんの注文を出します。つまり、このペアで他に未決済の注文がないのに、なぜ注文を出すのか理解できないのです。


ERR_NOT_ENOUGH_MONEY 134 取引を完了させるための資金が不足している
 

ごきげんよう。ある条件(比喩的に言えば、価格が上昇したときと下降したとき)で2つの注文を開くEAを作っています。価格が上がると2つ開き、価格が下がるとその2つを閉じ、新たに2つ開くのです。1つの注文はテイクプロフィット なしで、2つ目の注文はテイクプロフィットありで行く。2つ目には問題があります。その死期が迫っている時に、選択されていない、命令を解除するためのコードを紹介します。

for (int a = 0; a < OrdersTotal()-1; a++)
    if (OrderSelect(a, SELECT_BY_POS, MODE_TRADES))
        if (OrderComment() == "MyOrd" && OrderType() == OP_SELL)
            OrderClose(OrderTicket(), NormalizeDouble(OrderLots(), Digits), NormalizeDouble(Ask, Digits), 0);

OP_BUYも同様です。手動や他のEAではなく、私のEAによって開かれた注文であることを確認するために、コメントを比較しているのです。OrderSelectの問題点は、テイクプロフィットのある注文を選択しようとしないところです。その番号まで取得すると、OrderSelectはfalseを返す。テスターログにはエラーはなく、GetLastErrorもすべて問題なし(0を返す)となっています。なぜ選択されないのでしょうか?選択できないのになぜエラーにならないのか?皆さん、ありがとうございました。

 
フォローアップの質問です。テスターで、期間を月+にすると、結果に5桁の数字 が表示されるのはなぜですか?価格が設定されている場所には、NormalizeDouble(SomeValue, Digits)を入れています。また、丸め関数を知らなかったときは悪態をついていたのに、結果だけは悪態をつきません。
 

じょう

a < OrdersTotal()-1

は各反復でチェックされる。

最初の反復の後、aが 何に相当し、OrdersTotal()-1が 何に相当するかを考えてみましょう。

 
Solree:

OrderClose(OrderTicket(), NormalizeDouble(OrderLots(), Digits), NormalizeDouble(Ask, Digits), 0)となります。

ロットと価格が異なるDigitが あります。
 

Solree:

NormalizeDouble(OrderLots()、Digits)


あとは......ロットを正規化するのもなかなか難しいですね。
ロット変更の許容ステップを考慮する必要があります。
例えば、ステップが0.01であれば、2で正規化する
で、ステップが0.1なら、正規化は1