-
作成者スレッド
-
2022年12月17日 09:26 #5390
bovovossiParticipantお世話になります。
ナンピンした際に思い通りの方向にいった際にトレールで全決済する方法はございますでしょうか。
ご教授いただければ幸いです。
よろしくお願いいたします。
-
作成者スレッド
-
通常のナンピンロジックにプラスしてトレーリングストップを設定すれば可能です。
トレーリングストップには個別のポジションごとに計算を行う「個別トレーリングストップ」と保有ポジション全体に対して計算を行う「全体トレーリングストップ」があります。
一般的なのは「個別トレーリングストップ」ですが、トレーリングストップの計算を行う際に一度保有ポジションの損益pipsを合計値を出し、その値に対して計算を行うことで「全体トレーリングストップ」を実装することが可能です。
-
-
ordermodifyは必ずしも行う必要はありませんが、決済処理を行う前に損益pipsの合計値を計算するコードを追加するというのはお間違いありません。
その損益にpipsに対してトレーリングストップを行い、条件を満たせば全ポジションを一気に決済することで実装可能です。
-
-
ありがとうございます。
なんとなくわかったような気がします。
実践してみてわからないときはまた教えていただければと思います。
よろしくお願いいたします。
-
お世話になります。
試してみましたが、一部だけ決済され最初の方のナンピンがいくつか残ったりしてしまします・・・
何か間違っているのでしょうか?
ご教授いただければ幸いです。
よろしくお願いいたします。
void TrailingStop(int MAGIC)
{
double stopLoss = 0;
double profit_buy = 0;
double profit_sell = 0;
for(int i = OrdersTotal() – 1; i >= 0; i–)
{
//このEAで、エントリーしたポジションなら継続。
if(!(OrderSelect(i, SELECT_BY_POS) == true && OrderMagicNumber() == MAGIC && OrderSymbol() == Symbol()))
continue;
if(OrderType() == OP_BUY)
{
profit_buy = profit_buy + OrderProfit() + OrderSwap() + OrderCommission();
}
if(OrderType() == OP_SELL)
{
profit_sell = profit_sell + OrderProfit() + OrderSwap() + OrderCommission();
}
}
for(int i = OrdersTotal() – 1; i >= 0; i–)
{
if(!(OrderSelect(i, SELECT_BY_POS) == true && OrderMagicNumber() == MAGIC && OrderSymbol() == Symbol()))
continue;
if(OrderType() == OP_BUY)
{
if(profit_buy > 0)
{
stopLoss = Bid – TrailWidth * dPoint;
stopLoss = NormalizeDouble(stopLoss, Digits);
if(stopLoss >= OrderOpenPrice() && (stopLoss > OrderStopLoss() || OrderStopLoss() == 0))
{
bool res = OrderModify(OrderTicket(), OrderOpenPrice(), stopLoss, OrderTakeProfit(), 0);
}
}
}
else
if(OrderType() == OP_SELL)
{
if(profit_sell > 0)
{
stopLoss = Ask + TrailWidth * dPoint;
stopLoss = NormalizeDouble(stopLoss, Digits);
if(stopLoss <= OrderOpenPrice() && (stopLoss < OrderStopLoss() || OrderStopLoss() == 0))
{
bool res = OrderModify(OrderTicket(), OrderOpenPrice(), stopLoss, OrderTakeProfit(), 0);
}
}
}
}
}
-
添付いただきありがとうございます!
恐れ入りますが、mql4ファイルを添付いただくか、下記メールアドレスを送付していただくことは可能でしょうか?
よろしくお願いいたします。
返信にはログインが必要です。