Что значит «заменить первую часть кода»?
Где ее увидеть?
Как ее отличить от второй, третье и т.д.?
<code>//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void BU()
{
bool cl=1,m=1;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY)
{
if(Bid>b2 && OrderLots()==Lots)
{
m=OrderModify(OrderTicket(),OrderOpenPrice(),b1,OrderTakeProfit(),0,clrAquamarine);
cl=OrderClose(OrderTicket(),OrderLots()/2,Bid,Slip,clrAquamarine);
}
}
if(OrderType()==OP_SELL)
{
if(Ask<s2 && OrderLots()==Lots)
{
m=OrderModify(OrderTicket(),OrderOpenPrice(),s1,OrderTakeProfit(),0,clrAquamarine);
cl=OrderClose(OrderTicket(),OrderLots()/2,Ask,Slip,clrAquamarine);
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Trailing()
{
bool mod;
double sl=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY)
{
if(Bid-OrderOpenPrice()>TrailingStop*_Point)
{
sl=NormalizeDouble(Bid-TrailingStop*_Point,_Digits);
if(OrderStopLoss()<sl)
{
Print("SL: ",sl, " TP: ",OrderTakeProfit());
mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
return;
}
}
}
if(OrderType()==OP_SELL)
{
if(OrderOpenPrice()-Ask>TrailingStop*_Point)
{
sl=NormalizeDouble(Ask+TrailingStop*_Point,_Digits);
if(OrderStopLoss()>sl || (OrderStopLoss()==0))
{
Print("SL: ",sl, " TP: ",OrderTakeProfit());
mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
return;
}
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
{
int r=0;
color clr=Green;
double sl=0,tp=0;
if(type==1 || type==3 || type==5)
{
clr=Red;
sl=NormalizeDouble(b1,_Digits);
tp=NormalizeDouble(s3,_Digits);
}
if(type==0 || type==2 || type==4)
{
clr=Blue;
sl=NormalizeDouble(s1,_Digits);
tp=NormalizeDouble(b3,_Digits);
}
r=OrderSend(NULL,type,Lots,NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()<2)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
b1=ObjectGetDouble(0,"B1",OBJPROP_PRICE1);
b2=ObjectGetDouble(0,"B2",OBJPROP_PRICE1);
b3=ObjectGetDouble(0,"B3",OBJPROP_PRICE1);
s1=ObjectGetDouble(0,"S1",OBJPROP_PRICE1);
s2=ObjectGetDouble(0,"S2",OBJPROP_PRICE1);
s3=ObjectGetDouble(0,"S3",OBJPROP_PRICE1);
BU();
if(TrailingStop>0) Trailing();
if(CountTrades()<1)
{
if(ObjectGetInteger(0,"B",OBJPROP_STATE)==1)
{
if(Ask>b1)
PutOrder(0,Ask);
ObjectSetInteger(0,"B",OBJPROP_STATE,false); //--- отжать кнопку
}
if(ObjectGetInteger(0,"S",OBJPROP_STATE)==1)
{
if(Bid<s1)
PutOrder(1,Bid);
ObjectSetInteger(0,"S",OBJPROP_STATE,false); //--- отжать кнопку
}
}
if(OrdersTotal()>0 && ObjectGetInteger(0,"C",OBJPROP_STATE)==1)
{
CloseAll();
ObjectSetInteger(0,"C",OBJPROP_STATE,false);
}
Comment("\n B1: ",b1,
"\n B2: ",b2,
"\n B3: ",b3,
"\n S1: ",s1,
"\n S2: ",s2,
"\n S3: ",s3);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
</code>
Вместо того, чтобы просто по человечески сбросить готовый файл?
Или в этом есть некий «кайф»?
Не понимаю…
apologetest