помогите с пересчетом и тейкпрофитам

 

помогите с пересчетом и тейкпрофитам

проблема такая, не могу не как написать скрипт для советника, что бы он пересчитывал все ставки открытые и подгонял под последнюю открытую сделку все тейкпрофиты приведущих открытых сделок. в общем у меня получилось вот что, но это не работает.
if(oSell != 0){
for(int r = OrdersTotal(); r >=0; r--){
CenaPosStav = OrderOpenPrice();}
for(int ps = OrdersTotal(); ps >= 0 ; ps--){
if(OrderSelect(ps,SELECT_BY_POS,MODE_TRADES))
COPSmP = CenaPosStav - AllProfit*Point;//цена открытия последней сделки - профит
if(OrderTakeProfit()!= COPSmP){
while(!IsTradeAllowed()) Sleep(100);
OrderModify(OrdersTotal(), 0, 0, COPSmP, 0,CLR_NONE);
Alert("вроде работает2 "+COPSmP+" = "+OrderCena+" + "+AllProfit+" * "+Point+" ордер тикут =>"+OrdersTotal());}
}
}

if(oBuy != 0){
for(int e = OrdersTotal(); e >=0; e--){
CenaPosStav = OrderOpenPrice();}
for(int pb = OrdersTotal(); pb >= 0 ; pb--){
if(OrderSelect(pb,SELECT_BY_POS,MODE_TRADES))
COPSmP = CenaPosStav + AllProfit*Point;//цена открытия последней сделки + профит
if(OrderTakeProfit()!= COPSmP){
while(!IsTradeAllowed()) Sleep(100);
OrderModify(OrdersTotal(), 0, 0, COPSmP, 0,CLR_NONE);
Alert("вроде работает2 "+COPSmP+" = "+OrderCena+" + "+AllProfit+" * "+Point+" ордер тикут =>"+OrdersTotal());}
}
}
 
if(oSell != 0 || oBuy != 0)
{
for(int r = OrdersTotal(); r == 0; r--)
{
CenaPosStav = OrderOpenPrice();
}
for(int ps = OrdersTotal(); ps >= 0 ; ps--)
{
if(OrderSelect(ps,SELECT_BY_POS,MODE_TRADES))
{
if(oBuy != 0) COPSmP = CenaPosStav + AllProfit*Point;//цена открытия последней сделки сделки - профит
if(oSell != 0)COPSmP = CenaPosStav - AllProfit*Point;//цена открытия последней сделки сделки - профит
if(OrderTakeProfit()!= COPSmP)
{
while(!IsTradeAllowed()) Sleep(100);
OrderModify(OrdersTotal(), 0, 0, COPSmP, 0,CLR_NONE);
}
}
}
}
 

изменил код, он стал более понятный, но работать не стал подскажите по чему?

 

Выложи код, воспользовавшись кнопочкой, будет более удобоваримый)


 

все уже дапер в чем дело, вот кому надо держите

if(oSell != 0 || oBuy != 0)
{
for(int r = 0; r < OrdersTotal(); r++)
{
if(OrderSelect(r,SELECT_BY_POS,MODE_TRADES))
CenaPosStav = OrderOpenPrice();
}
for(int ps = OrdersTotal(); ps >= 0 ; ps--)
{
if(OrderSelect(ps,SELECT_BY_POS,MODE_TRADES))
{
if(oBuy != 0) COPSmP = CenaPosStav + AllProfit*Point; //цена открытия последней сделки сделки - профит
if(oSell != 0)COPSmP = CenaPosStav - AllProfit*Point; //цена открытия последней сделки сделки - профит
if(OrderTakeProfit()!= COPSmP)
{
while(!IsTradeAllowed()) Sleep(100);
OrderModify(OrderTicket(), 0, 0, COPSmP, 0,CLR_NONE);
}
}
}
}

 

Дак вроде оно Вам больше надо ? А чтобы получить объективный ответ, рекомендую код выкладывать с попощью "вставки кода", тогда при визуальном обзоре быстрее находятся косяки...


P.S. В таком виде как сейчас, сорри и смотреть не охото ...

 
Помогу
if(oSell != 0 || oBuy != 0)
{ 
for(int r = 0; r < OrdersTotal(); r++)
{
if(OrderSelect(r,SELECT_BY_POS,MODE_TRADES))
CenaPosStav = OrderOpenPrice();
}
for(int ps = OrdersTotal(); ps >= 0 ; ps--)
{
if(OrderSelect(ps,SELECT_BY_POS,MODE_TRADES))
{
if(oBuy != 0) COPSmP = CenaPosStav + AllProfit*Point; //цена открытия последней сделки сделки - профит
if(oSell != 0)COPSmP = CenaPosStav - AllProfit*Point; //цена открытия последней сделки сделки - профит 
if(OrderTakeProfit()!= COPSmP)
{
while(!IsTradeAllowed()) Sleep(100); 
OrderModify(OrderTicket(), 0, 0, COPSmP, 0,CLR_NONE);
}
}
}
}


Причина обращения: