Автоматизация торговли на финансовых рынках Автоматизация торговли на финансовых рынках

 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Помогите разобраться с Локированием позиций

 
Начать новую тему   Ответить на тему    Список форумов Автоматизация торговли на финансовых рынках -> Программирование в MQL4
Предыдущая тема :: Следующая тема  
Автор Сообщение
Mr.Red



Зарегистрирован: 08.04.2009
Сообщения: 1

СообщениеДобавлено: Ср Апр 08, 2009 8:39 pm    Заголовок сообщения: Помогите разобраться с Локированием позиций Ответить с цитатой

Здравствуйте,

Пожалуйста помогите разобраться с Локированием позиций

Набранный мною код позиций не Локирует

Ошибку найти не могу - не хватает опыта


Для упрощения рассм. только Локирование BUY позиций

Рассмотрите, пожалйста, возможность упрощения кода



Что хотел сделать: Открывается позиция BUY одновременно с отложенным ордером SELL

Если отложенный ордер SELL срабатывает - Удаляем из BUY TakeProfit

Если BUY получил Profit - удаляем отложенный SELL, который шел к нему в паре--

Если при этом существовует Локированная пара BUY-SELL - то закрываем эту пару


Каждой паре присваивается MagicNumber, равный номеру предыдущей пары +1



Благодарю за оказанную помощь.

Код:
#property copyright "Mr.Red"
#property link ""

extern double TakeProfit = 20,
Lock=50;

extern double Lots = 0.1;
//extern double StopLoss =40;
bool New_Bar=false;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
int M=1;// меджик намбер
if(OrderSelect(0,SELECT_BY_POS, MODE_TRADES)==true)
{
M++;
}
//+------------------------------------------------------------------+
for(int i=0;i< OrdersHistoryTotal();i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY )==true)// поиск и проверка позиции БАЙ
{
if (OrderSymbol()==Symbol()&& OrderType() == OP_BUY&&
OrderMagicNumber()==M && OrderProfit()>0) // если БАЙ получил текущий ПРОФИТ то
{
for(int a=0; a<OrdersTotal(); a++)
{
OrderSelect(a, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType() == OP_SELLSTOP&& OrderMagicNumber()==M) // то находим отложенный СЕЛЛ
{
OrderDelete(OrderTicket(),Red); // и закрываем его
}
}


for(int s=0; s<OrdersTotal(); s++)
{
if(OrderSelect(s, SELECT_BY_POS, MODE_TRADES)==true)
{
if(OrderSymbol()==Symbol()&&OrderType() == OP_SELL&& OrderMagicNumber()==M-1) // ищем пару СЕЛЛ БАЙ что бы закрыть замок (если он есть)
{
for(int w=0; w<OrdersTotal(); w++)
{
OrderSelect(w, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType() == OP_BUY&& OrderMagicNumber()==M-1) // находим пару
{
OrderClose(OrderTicket(),Lots,Bid,3, Yellow); // и закрываем сначала БАЙ

for(int y=0; y<OrdersTotal(); y++)
{
OrderSelect(y, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType() == OP_SELL&& OrderMagicNumber()==M-1) // ищем СЕЛЛ
{
OrderClose(OrderTicket(),Lots,Ask,3, Yellow); //закрываем СЕЛЛ
}
}
}
}
}
}
}
}
}
}
for(int n=0; n<OrdersTotal(); n++)
{
if(OrderSelect(n, SELECT_BY_POS, MODE_TRADES)==true)
{
if(OrderSymbol()==Symbol()&&OrderType() == OP_SELL&&
OrderMagicNumber()==M) //если открылся ЛОК то
{
for(int q=0; q<OrdersTotal(); q++)//ищем бай
{
OrderSelect(q, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType() == OP_BUY&& OrderMagicNumber()==M) //
{
OrderModify (OrderTicket(), OrderOpenPrice(), 0, 0, 0, Blue); // удаляем ТЕЙК ПРОФИТ из БАЯ
}
}
}
}
}
//--------------------------------------------------------------------
Fun_New_Bar();
if (New_Bar==false)
return;
int ticket;


if(.... ..)// Условие входа в сделку, если наступил новый бар
{

ticket=OrderSend(Symbol(),OP_BUY,Lots, Ask,3,
0,Ask+TakeProfit*Point, 0,M,0,
Red);
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Lock*Point,0,
0,0, 0,M,0,
Red);
Alert (GetLastError());

return;
}

}


//--------------------------------------------------------------------
void Fun_New_Bar() // Ф-ия обнаружения ..
{ // .. нового бара
static datetime New_Time=0; // Время текущего бара
New_Bar=false; // Нового бара нет
if(New_Time!=Time[0]) // Сравниваем время
{New_Time=Time[0]; // Теперь время такое
New_Bar=true; // Поймался новый бар
}
}
//--------------------------------------------------------------------


_________________
Двигаю рынок даже с ДЕМО счета..
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Автоматизация торговли на финансовых рынках -> Программирование в MQL4 Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять вложения в этом форуме
Вы не можете просматривать вложения в этом форуме
Рейтинг@Mail.ru


Powered by phpBB © 2001, 2005 phpBB Group