//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Закрытие тех позиций, у которых профит в валюте депозита |//| превысил некоторое значение |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| pr - профит |//+----------------------------------------------------------------------------+voidClosePosBySizeProfitInCurrency(stringsy="", intop=-1, intmn=-1, doublepr=0){inti, k=OrdersTotal();
if(sy=="0")sy=Symbol();
for(i=k-1; i>=0; i--){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)){if(OrderType()==OP_BUY || OrderType()==OP_SELL){if(mn<0 || OrderMagicNumber()==mn){if(OrderProfit()+OrderSwap()>pr)ClosePosBySelect();
}}}}}}
Igorさん、「INIファイルを扱うための関数ライブラリ」で質問したのですが、返事がありません :(
ありがとうございます...という答えが...
ClosePosBySelect()関数です。
あらかじめ選択した1ポジションを閉じる。この関数は、他のいくつかの関数から呼び出されるため、むしろ補助的なものであり、ある条件によって閉じるべき位置を選択するのに役立つ。
ありがとうございます...という答えが...
そこにもまた疑問(というか発言)が :)
ClosePosBySelect()関数です。
あらかじめ選択した1ポジションを閉じる。この関数は、他のいくつかの関数から呼び出され、ある条件に従って閉じるべき位置を選択するのに役立つので、むしろ補助的なものである。
こんにちは。
失礼します。
1)行の意味がわからないfor (it=1; it<=NumberOfTry; it++)
これはどのようなループなのでしょうか?
2) if (!testing() ......) break という条件もよくわかりません。
3) そして最後に、これはどのような機能ですか? ErrorDescription(err)," ,
差し支えなければ、説明してください。
1.これは、トレードの試行錯誤のサイクルである。もし取引サーバーがエラーを返した場合、この関数は結局ポジションを閉じるために何度も 試行錯誤を行うことになります。私は通常NumberOfTry=5と します。
2. この条件は、オンラインで動作しているExpert Advisorが停止 したときに、試行のサイクルを正しく終了させる機能を実装しています。この条件がないと、例えばEAのプロパティを呼び出すには、EAがすべてのトレードを試みるまで待つか、EAをチャートから削除する必要がありました。
3.Look in file ..\experts⇄libraries⇄stdlib.mq4
EAを無限ループで動作させる方法をお聞きしたいのですが、パラメータの設定にアクセスすることは可能でしょうか?
こんな感じでスタートで書きました。
しかし、この場合、Expert Advisorはハングアップしてしまい、チャートから削除する以外、何もできません。
ヴァレラ、そうしてくれ。
ClosePosBySizeProfitInCurrency()関数を使用します。
預入通貨での利益が一定額を超えたポジションのみを決済する機能です。どのポジションをクローズしなければならないかは、関数パラメータで指定することができます。
ヴァレラ、そうしてくれ。
しかし、これはekspertをブロードキャストしてしまうので、チャートから削除するまでそのパラメータにアクセスすることができません。
残念なことに、これはEAをブロードキャストしてしまうので、チャートから削除するまでそのパラメータにアクセスすることができません。
ただし、ツールバーの「EAs」ボタンを押すと、EAを停止 することができます。