Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vitaliy
65
Vitaliy  

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

проблема такая, не могу не как написать скрипт для советника, что бы он пересчитывал все ставки открытые и подгонял под последнюю открытую сделку все тейкпрофиты приведущих открытых сделок. в общем у меня получилось вот что, но это не работает.
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());}
}
}
Vitaliy
65
Vitaliy  
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);
}
}
}
}
Vitaliy
65
Vitaliy  

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

Vladimir
1592
Vladimir  

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


Vitaliy
65
Vitaliy  

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

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);
}
}
}
}

Vladimir
1592
Vladimir  

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


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

Alekseu Fedotov
991
Alekseu Fedotov  
Помогу
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);
}
}
}
}


Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий