[英]How to have multiple stop losses / profit takers in pinescript (pyramiding)
[英]How to modify the multiple target profit by excluding the last order?
我創建了這個 Modify Take Profit 函數,但這將計算所有的總訂單。 如何刪除最后一個訂單? 希望它計算沒有最后一個訂單的平均價格
void ModifyTakeProfit()
{
double point=MarketInfo(OrderSymbol(),MODE_POINT);
double tp1,tp2,bbep,bsize; tp1=0;tp2=0;bbep=0;bsize=0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==OrderMagicNumber())
{
if(OrderType()==OP_BUY)
{
tp1=OrderTakeProfit();
bbep += OrderOpenPrice()*OrderLots();
bsize+= OrderLots();
}
}
}
if (bbep>0)
{
bbep/=bsize;
tp1=bbep + TakeProfit*point;
if(TakeProfit!=0)
tp1=NormalizeDouble(tp1,(int)MarketInfo(OrderSymbol(),MODE_DIGITS));
else
tp1=0;
}
for (int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==OrderMagicNumber())
{
if(OrderType()==OP_BUY)
{
tp2=OrderTakeProfit();
if(tp1!=tp2)
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tp1,0,Blue))
Print ("Error: ", GetLastError());
}
}
}
}
}
您的最后一個訂單將位於第一個位置 (FIFO) - 因此只需調整您的 for 循環以循環到 1 而不是 0 的下限。
void ModifyTakeProfit()
{
double point=MarketInfo(OrderSymbol(),MODE_POINT);
double tp1,tp2,bbep,bsize; tp1=0;tp2=0;bbep=0;bsize=0;
for (int i=OrdersTotal()-1; i>=1; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==OrderMagicNumber())
{
if(OrderType()==OP_BUY)
{
tp1=OrderTakeProfit();
bbep += OrderOpenPrice()*OrderLots();
bsize+= OrderLots();
}
}
}
if (bbep>0)
{
bbep/=bsize;
tp1=bbep + TakeProfit*point;
if(TakeProfit!=0)
tp1=NormalizeDouble(tp1,(int)MarketInfo(OrderSymbol(),MODE_DIGITS));
else
tp1=0;
}
for (int i=OrdersTotal()-1; i>=1; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==OrderMagicNumber())
{
if(OrderType()==OP_BUY)
{
tp2=OrderTakeProfit();
if(tp1!=tp2)
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tp1,0,Blue))
Print ("Error: ", GetLastError());
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.