Помогите новичку [как сделать чтобы он локировал с определённого уровня(например когда ордер достигнет -30 или -40)]!

 

Здравствуйте, я не давно начал изучать mql4 может кто то из опытных программистов поможет. Есть скрипт он локирует ордера как только они уходят в минус, как сделать чтобы он локировал с определённого уровня(например когда ордер достигнет -30 или -40) который можно будет прописывать в свойствах.

 void start()
{
    double Lots=0;
    for(int i=0;i<OrdersTotal();i++)
    {
        if(!OrderSelect(i,SELECT_BY_POS))
            continue;
        if(OrderSymbol()!=Symbol())
            continue;
        if(OrderType()==OP_BUY)
            Lots+=OrderLots();
        if(OrderType()==OP_SELL)
            Lots-=OrderLots();
    }
    if(Lots>0)
        OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,NULL,Red);
    if(Lots<0)
        OrderSend(Symbol(),OP_BUY,-(Lots),Ask,3,0,0,NULL,Blue);
}

 
qwert2:

Здравствуйте, я не давно начал изучать mql4 может кто то из опытных программистов поможет. Есть скрипт он локирует ордера как только они уходят в минус, как сделать чтобы он локировал с определённого уровня(например когда ордер достигнет -30 или -40) который можно будет прописывать в свойствах.

 void start()
{
    double Lots=0;
    for(int i=0;i<OrdersTotal();i++)
    {
        if(!OrderSelect(i,SELECT_BY_POS))
            continue;
        if(OrderSymbol()!=Symbol())
            continue;
        if(OrderType()==OP_BUY)
            Lots+=OrderLots();
        if(OrderType()==OP_SELL)
            Lots-=OrderLots();
    }
    if(Lots>0)
        OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,NULL,Red);
    if(Lots<0)
        OrderSend(Symbol(),OP_BUY,-(Lots),Ask,3,0,0,NULL,Blue);
}


Да просто ставьте стоп на требуемом уровне.
 
qwert2, постарайтесь делать название темы конкретным, ОК? Ну примерно как я подправил.
 
VladislavVG:

Да просто ставьте стоп на требуемом уровне.

Мне не нужно ставить стоп, мне нужно что бы локировало с определённого минусового значения. 

 
qwert2:

Мне не нужно ставить стоп, мне нужно что бы локировало с определённого минусового значения. 


Думаете, есть разница?
 
alsu:

Думаете, есть разница?

Что во фразе "Мне не нужно ставить стоп, мне нужно что бы локировало с определённого минусового значения" вам не понятно? 

И разница есть она в том что ставить стоп  это ставить стоп, а открывать локирующий ордер это открывать локирующий ордер. Они хоть и приследуют одну цель, но это разные вещи и мне нужен конкретно локирующий ордер! 

 

Ну хоть кто-нибудь помогите.

 

В результате (в смысле, для состояния счета) лок или стоп разницы нет.

Если более конкретно по Вашему вопросу: что именно не получается ? Или просто не можете составить алгоритм ?

 
VladislavVG:

В результате (в смысле, для состояния счета) лок или стоп разницы нет.

Если более конкретно по Вашему вопросу: что именно не получается ? Или просто не можете составить алгоритм ?

Я не понимаю что и где нужно прописать или объявить что бы локировало.
 
qwert2:
Я не понимаю что и где нужно прописать или объявить что бы локировало.

Просто объявить не получится, а прописать ))))))) - нужно написать программу, которая пересчитает открытые позиции, сравнит и проверит наличие встречных, проверит на наличие нужного расстояния.  И все это - плата за самообман ;).

Напишите сначала функцию, которая посчитает размер открытых встречных позиций. 

 
qwert2:

Здравствуйте, я не давно начал изучать mql4 может кто то из опытных программистов поможет. Есть скрипт он локирует ордера как только они уходят в минус, как сделать чтобы он локировал с определённого уровня(например когда ордер достигнет -30 или -40) который можно будет прописывать в свойствах.

 void start()
{
    double Lots=0;
    for(int i=0;i<OrdersTotal();i++)
    {
        if(!OrderSelect(i,SELECT_BY_POS))
            continue;
        if(OrderSymbol()!=Symbol())
            continue;
        if(OrderType()==OP_BUY)
            Lots+=OrderLots();
        if(OrderType()==OP_SELL)
            Lots-=OrderLots();
    }
    if(Lots>0)
        OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,NULL,Red);
    if(Lots<0)
        OrderSend(Symbol(),OP_BUY,-(Lots),Ask,3,0,0,NULL,Blue);
}


На самом деле этот скрипт локирует ВСЕ неперекрытые ордера, какие найдет, независимо от результата по прибыли/убытку.
Причина обращения: