Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ведешь свой блог? Размести в нем ссылку на MQL5.community и заработай!
qwert2
23
qwert2 2013.03.31 14:26 

Здравствуйте, я не давно начал изучать 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);
}

Vladyslav Goshkov
1960
Vladyslav Goshkov 2013.03.31 14:31  
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);
}


Да просто ставьте стоп на требуемом уровне.
Sceptic Philozoff
Модератор
17849
Sceptic Philozoff 2013.03.31 14:33  
qwert2, постарайтесь делать название темы конкретным, ОК? Ну примерно как я подправил.
qwert2
23
qwert2 2013.04.01 04:46  
VladislavVG:

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

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

Alexey Subbotin
4999
Alexey Subbotin 2013.04.01 08:33  
qwert2:

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


Думаете, есть разница?
qwert2
23
qwert2 2013.04.01 09:15  
alsu:

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

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

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

qwert2
23
qwert2 2013.04.01 11:19  

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

Vladyslav Goshkov
1960
Vladyslav Goshkov 2013.04.01 15:33  

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

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

qwert2
23
qwert2 2013.04.01 17:31  
VladislavVG:

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

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

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

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

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

Alexey Subbotin
4999
Alexey Subbotin 2013.04.01 17:56  
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);
}


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