|
|
Для комфортной работы на Форексе предлагаю использовать моих помощников:
1.
Скрипт на покупку 0,1 лота с
обновременной установкой
стоп-лосса (15 п.) и тейк-профита (30 п.)
//+------------------------------------------------------------------+
//|
BIY01.mq4 |
//|
Druzhin V.F. |
//|
http://neuro-forex.narod.ru/ |
//+------------------------------------------------------------------+
#property copyright "Druzhin V.F."
#property link
"http://neuro-forex.narod.ru/"
//+------------------------------------------------------------------+
//| script program start
function
|
//+------------------------------------------------------------------+
int start()
{
ObjectCreate("Work",OBJ_TEXT,0,iTime(NULL,0,10),High[10]); //
Создание текстового объекта
ObjectSetText("Work", "ЖДИ!",
60,"",Red);
OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-15*Point,Bid+30*Point);
// Открытие BUY
Alert
(GetLastError());
// Сообщение об ошибке
ObjectDelete("Work");
// Удаление текстового объекта
return(0);
}
//+------------------------------------------------------------------+ |
2.
Скрипт на продажу 0,1 лота с
обновременной установкой
стоп-лосса (15 п.) и тейк-профита (30 п.)
//+------------------------------------------------------------------+
//|
SELL01.mq4 |
//|
Druzhin V.F. |
//|
http://neuro-forex.narod.ru/ |
//+------------------------------------------------------------------+
#property copyright "Druzhin V.F."
#property link
"http://neuro-forex.narod.ru/"
//+------------------------------------------------------------------+
//| script program start
function
|
//+------------------------------------------------------------------+
int start()
{
ObjectCreate("Work",OBJ_TEXT,0,iTime(NULL,0,10),High[10]);
// Создание текстового объекта
ObjectSetText("Work", "ЖДИ!",
60,"",Red);
OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+15*Point,Ask-30*Point);
// Открытие SELL
Alert
(GetLastError());
// Сообщение об ошибке
ObjectDelete("Work");
// Удаление текстового объекта
return(0);
}
//+------------------------------------------------------------------+ |
Скрипт на покупку 0,01 лота с обновременной установкой
стоп-лосса (10 п.) и тейк-профита (30 п.)
//+------------------------------------------------------------------+
//|
BIY_001.mq4 |
//|
Druzhin V.F. |
//|
http://neuro-forex.narod.ru/ |
//+------------------------------------------------------------------+
#property copyright
"Druzhin V.F."
#property link
"http://neuro-forex.narod.ru/"
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
int Dist_SL =10; // Заданный SL (pt)
int Dist_TP =30; // Заданный TP (pt)
double Lot=0.01;
ObjectCreate("Work",OBJ_TEXT,0,iTime(NULL,0,10),High[10]); //
Создание текстового объекта
ObjectSetText("Work", "ЖДИ!", 60,"",Red);
OrderSend(Symbol(),OP_BUY,Lot,Ask,1,Bid-Dist_SL*Point,Bid+Dist_TP*Point);
// Открытие BUY
Alert (GetLastError()); // Сообщение об ошибке
ObjectDelete("Work"); // Удаление текстового объекта
return; // Выход из start()
}
//+------------------------------------------------------------------+ |
Отложенный buystop ордер на 0,01 лота с обновременной установкой
стоп-лосса (10 п.) и тейк-профита (30 п.) Цена задается мышкой.
//+------------------------------------------------------------------+
//|
op_buystop_0.01L.mq4 |
//|
Druzhin V.F. |
//|
http://neuro-forex.narod.ru/ |
//+------------------------------------------------------------------+
#property copyright "Druzhin V.F."
#property link " http://neuro-forex.narod.ru/"
//------------------------------------------------------------------
int start()
{
int Dist_SL =10; // Заданный SL (pt)
int Dist_TP =30; // Заданный TP (pt)
double Lot=0.01; //Лоты
string Symb=Symbol(); // Финанс. инструмент
double Win_Price=WindowPriceOnDropped(); // Здесь брошен скрипт
Alert("Мышкой задана цена Price = ",Win_Price);// Задано мышей
//---------------------------------------------------------------
2 --
while(true) // Цикл открытия орд.
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Мин. дистанция
//--------------------------------------------------------- 3 --
double Price=Win_Price; // Цена задана мышей
if (NormalizeDouble(Price,Digits)< // Если меньше допуст.
NormalizeDouble(Ask+Min_Dist*Point,Digits))
{ // Только для BuyStop!
Price=Ask+Min_Dist*Point; // Ближе нельзя
Alert("Изменена заявленная цена: Price = ",Price);
}
//--------------------------------------------------------- 4 --
double SL=Price - Dist_SL*Point; // Заявленная цена SL
if (Dist_SL<Min_Dist) // Если меньше допуст.
{
SL=Price - Min_Dist*Point; // Заявленная цена SL
Alert(" Увеличена дистанция SL = ",Min_Dist," pt");
}
//--------------------------------------------------------- 5 --
double TP=Price + Dist_TP*Point; // Заявленная цена ТР
if (Dist_TP<Min_Dist) // Если меньше допуст.
{
TP=Price + Min_Dist*Point; // Заявленная цена TP
Alert(" Увеличена дистанция TP = ",Min_Dist," pt");
}
//--------------------------------------------------------- 6 --
Alert("Торговый приказ отправлен на сервер. Ожидание ответа..");
int ticket=OrderSend(Symb, OP_BUYSTOP, Lot, Price, 0, SL, TP);
//--------------------------------------------------------- 7 --
if (ticket>0) // Получилось :)
{
Alert ("Установлен ордер BuyStop ",ticket);
break; // Выход из цикла
}
//--------------------------------------------------------- 8 --
int Error=GetLastError(); // Не получилось :(
switch(Error) // Преодолимые ошибки
{
case 129:Alert("Неправильная цена. Пробуем ещё раз..");
RefreshRates(); // Обновим данные
continue; // На след. итерацию
case 135:Alert("Цена изменилась. Пробуем ещё раз..");
RefreshRates(); // Обновим данные
continue; // На след. итерацию
case 146:Alert("Подсистема торговли занята. Пробуем ещё..");
Sleep(500); // Простое решение
RefreshRates(); // Обновим данные
continue; // На след. итерацию
}
switch(Error) // Критические ошибки
{
case 2 : Alert("Общая ошибка.");
break; // Выход из switch
case 5 : Alert("Старая версия клиентского терминала.");
break; // Выход из switch
case 6:Alert("Нет связи с торговым сервером.");
break; // Выход из switch
case 64: Alert("Счет заблокирован.");
break; // Выход из switch
case 133:Alert("Торговля запрещена");
break; // Выход из switch
default: Alert("Возникла ошибка ",Error);// Другие варианты
}
break; // Выход из цикла
}
//---------------------------------------------------------------
9 --
Alert ("Скрипт закончил работу -----------------------------");
return; // Выход из start()
}
//--------------------------------------------------------------
10 -- |
Отложенный selllimit ордер на 0,01 лота с обновременной установкой
стоп-лосса (10 п.) и тейк-профита (30 п.) Цена задается мышкой.
//+------------------------------------------------------------------+
//| op_selllimit_001L.mq4 |
//| Druzhin V.F. |
//| http://neuro-forex.narod.ru/ |
//+------------------------------------------------------------------+
#property copyright "Druzhin V.F."
#property link "http://neuro-forex.narod.ru/"
//------------------------------------------------------------------
int start()
{
int Dist_SL =10; // Заданный SL (pt)
int Dist_TP =30; // Заданный TP (pt)
double Lot=0.01; //Лоты
string Symb=Symbol(); // Финанс. инструмент
double Win_Price=WindowPriceOnDropped(); // Здесь брошен скрипт
Alert("Мышкой задана цена Price = ",Win_Price);// Задано мышей
//---------------------------------------------------------------
2 --
while(true) // Цикл открытия орд.
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Мин. дистанция
//--------------------------------------------------------- 3 --
double Price=Win_Price; // Цена задана мышей
if (NormalizeDouble(Price,Digits)< // Если меньше допуст.
NormalizeDouble(Bid-Min_Dist*Point,Digits))
{ // Только для SellStop!
Price=Bid-Min_Dist*Point; // Ближе нельзя
Alert("Изменена заявленная цена: Price = ",Price);
}
//--------------------------------------------------------- 4 --
double SL=Price + Dist_SL*Point; // Заявленная цена SL
if (Dist_SL<Min_Dist) // Если меньше допуст.
{
SL=Price + Min_Dist*Point; // Заявленная цена SL
Alert(" Увеличена дистанция SL = ",Min_Dist," pt");
}
//--------------------------------------------------------- 5 --
double TP=Price - Dist_TP*Point; // Заявленная цена ТР
if (Dist_TP<Min_Dist) // Если меньше допуст.
{
TP=Price - Min_Dist*Point; // Заявленная цена TP
Alert(" Увеличена дистанция TP = ",Min_Dist," pt");
}
//--------------------------------------------------------- 6 --
Alert("Торговый приказ отправлен на сервер. Ожидание ответа..");
int ticket=OrderSend(Symb, OP_SELLLIMIT, Lot, Price, 0, SL, TP);
//--------------------------------------------------------- 7 --
if (ticket>0) // Получилось :)
{
Alert ("Установлен ордер SellLimit ",ticket);
break; // Выход из цикла
}
//--------------------------------------------------------- 8 --
int Error=GetLastError(); // Не получилось :(
switch(Error) // Преодолимые ошибки
{
case 129:Alert("Неправильная цена. Пробуем ещё раз..");
RefreshRates(); // Обновим данные
continue; // На след. итерацию
case 135:Alert("Цена изменилась. Пробуем ещё раз..");
RefreshRates(); // Обновим данные
continue; // На след. итерацию
case 146:Alert("Подсистема торговли занята. Пробуем ещё..");
Sleep(500); // Простое решение
RefreshRates(); // Обновим данные
continue; // На след. итерацию
}
switch(Error) // Критические ошибки
{
case 2 : Alert("Общая ошибка.");
break; // Выход из switch
case 5 : Alert("Старая версия клиентского терминала.");
break; // Выход из switch
case 6:Alert("Нет связи с торговым сервером.");
break; // Выход из switch
case 64: Alert("Счет заблокирован.");
break; // Выход из switch
case 133:Alert("Торговля запрещена");
break; // Выход из switch
default: Alert("Возникла ошибка ",Error);// Другие варианты
}
break; // Выход из цикла
}
//---------------------------------------------------------------
9 --
Alert ("Скрипт закончил работу -----------------------------");
return; // Выход из start()
}
//--------------------------------------------------------------
10 -- |
Рассмотрев внимательно структуру скриптов Вы сумеете на их основе
создать свои скрипты с нужными Вам данными. |
|