//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 25.04.2008 |//| Описание : Закрытие тех позиций, у которых убыток в валюте депозита |//| превысил некоторое значение |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| pr - профит/убыток |//+----------------------------------------------------------------------------+voidClosePosBySizeLossInCurrency(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()<-MathAbs(pr))ClosePosBySelect();
}}}}}}
しかし、ツールバーの「Expert Advisors」ボタンを押すことで、Expert Advisorを停止させることができます。
EAから離脱するためのパラメータはそれほど多くないので、難しくはないでしょう。
ClosePosBySizeProfitInCurrency()関数の使用例です。
特にClosePosBySizeProfitInCurrency()関数のデモを行うために、Expert Advisorを書きました。
e-CloseByProfitPosInCurrency は、預入通貨での利益がある指定値を超えたポジションのみを決済するものです。Expert Advisorは、1つのチャートにのみインストールすることも、複数のチャートにインストールすることも可能です。Expert Advisor の外部パラメータを使用して、クローズするポジションのリストを指定することができます。
皆さん、こんにちは。
イゴールさんは、ClosePosBySizeProfitInCurrency()と同じように、指定した損切りになったら損切りのポジションをクローズする関数はありますか?(または、おそらく、利益と損失の決算を指定することができる複合的なもの)。
私の理解では、OrderProfit() のパラメータprに マイナス 記号を設定するだけで、求めているものが得られると思います。
入金通貨ではなく、ポイントで基準値を設定することは可能ですか?もしそうなら、どのように?(TakeProfitとStopLossは提案されていません)
イゴールさんは、ClosePosBySizeProfitInCurrency()と同じように、指定した損切りになったら損切りのポジションをクローズする関数はありますか?(あるいは、利益時と損失時の決算を指定できる、複合的なもの)。
いいえ、まだそのような機能はありません。ただし、ClosePosBySizeProfitInCurrency()はやり直せます。
プラス(損失)とマイナス(マイナス記号付きの利益)の数値で渡せるようにしました。
私の理解では、OrderProfit() のパラメータprに マイナス 記号を設定するだけで、求めているものが得られると思います。
入金通貨ではなく、ポイントで基準値を設定することは可能ですか?もしそうなら、どのように?(テイクプロフィット、ストップロスはオプションではありません。)
e-CloseByProfitの コードを見てください。
ClosePositions()関数です。
パラメータが指定した値を満たすポジションをクローズする機能です。
ClosePosFirstProfit()関数です。
この機能は、収益性の高いポジションを先に、それ以外のポジションを順にクローズします。閉じるべきポジションをより正確に選択するために、外部パラメータで定義します。
ClosePosWithMaxProfitInCurrency()関数を使用します。
この機能は、入金した通貨で最大限のプラスの利益を得たポジションを1つ決済します。つまり、それぞれ-34、15、73、-90、41の利益を持つ5つのポジションのうち、預金通貨で73単位の利益を持つポジションが決済されることになるのです。閉じるべき位置をより正確に選択するために、外部パラメータを使用して指定します。
CCIの値が100を超えたら、-100以下になるまで買いポジションを建て、-100以下になったら、100を超えるまで売りポジションを建てます。
デミには、こんな機能を提案します。
この関数は、買い時には1を、売り時には-1を返します。売買条件は思いのままです。あとは、刻み目ごとに次のことをするだけです。
1.GetTradeSignal()の値を取得します。
2.受信値=0 の場合は何もしない。
受信値 >0 ならば、すべての販売を終了し、購入する。
4.得られた値が<0であれば、すべての買い付けを終了し、売り物をする。