требуется скрипт

ХЫШНИК

МАСТЕР
Регистрация
18.05.2007
Сообщения
1,642
Реакции
22
Поинты
0.000
нужна помощь...мне нужен скрипт такой..или помошник..вобщем моя ТС предпологает выставление 2х отложенных ордеров в разные стороны(бай стоп и сел стоп) так вот нужно чтобы при исполнении одно из ордеров второй удалялся автоматически..подскажите как это реализовать..
 

Demark

Интересующийся
Регистрация
02.08.2007
Сообщения
165
Реакции
5
Поинты
0.000

Aisller

Главный модератор
Команда форума
Администратор
Главный модератор
Регистрация
07.12.2007
Сообщения
23,432
Реакции
5,448
Поинты
0.184
нужна помощь...мне нужен скрипт такой..или помошник..вобщем моя ТС предпологает выставление 2х отложенных ордеров в разные стороны(бай стоп и сел стоп) так вот нужно чтобы при исполнении одно из ордеров второй удалялся автоматически..подскажите как это реализовать..

Проверь, сейчас быстренько набросал, а проверить негде, выходные, но должно все правильно работать:

Код:
#property copyright "Graf"
#property link      "http://www.pro-fx.biz"


int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }


//Кол-во отложенных на Бай
int ordercountBUY()
{
string To,Tn;
int cnt,col;
col=0;
for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
   OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   To = OrderSymbol();
   if ((To==Symbol())  && (OrderType()==OP_BUYSTOP))  col=col+1;
   }
return(col);
}

//Кол-во отложенных на Селл
int ordercountSELL()
{
string To,Tn;
int cnt, col;
col=0;
for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
   OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   To = OrderSymbol();
   if ((To==Symbol())  && (OrderType()==OP_SELLSTOP))  col=col+1;
   }
return(col);
}

// -------------------------------  Кол-во открытых на бай
int countBUY()
{
string To;
int cnt,col;
col=0;
for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
   OrderSelect(cnt,SELECT_BY_POS,0);
   To = OrderSymbol();
   if ((To==Symbol())  && (OrderType()==OP_BUY))  col=col+1;
   }
return(col);
}

// -----------------------------   Кол-во открытых на Селл
int countSELL()
{
string To,Tn;
int cnt, col;
col=0;
for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
   OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   To = OrderSymbol();
   if ((To==Symbol())  && (OrderType()==OP_SELL))  col=col+1;
   }
return(col);
}



//Отмена отложенных
int CloseAll()
{
int cnt;
bool n3,n4,rez;
rez=true;
for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
   OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   if  ((OrderSymbol()==Symbol())  && (OrderType()==OP_BUYSTOP))  n3=OrderDelete( OrderTicket(), 0);
   if  ((OrderSymbol()==Symbol())  && (OrderType()==OP_SELLSTOP)) n4=OrderDelete( OrderTicket(), 0);
   }
return(rez);
}



int start()
  {
   return(0);
   if ((countSELL()==1) && (ordercountBUY()==1)) CloseAll();
   if ((ordercountSELL()==1) && (countBUY()==1)) CloseAll();
   
  }
//+------------------------------------------------------------------+
 

ХЫШНИК

МАСТЕР
Регистрация
18.05.2007
Сообщения
1,642
Реакции
22
Поинты
0.000
первый код немножко не работает...

вот рабочая версия..спасибо Graf..
PHP:
#property copyright "Graf"
#property link      "http://www.pro-fx.biz"


int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }


//Кол-во отложенных на Бай
int ordercountBUY()
{
string To,Tn;
int cnt,col;
col=0;
for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
   OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   To = OrderSymbol();
   if ((To==Symbol())  && ((OrderType()==OP_BUYSTOP) || (OrderType()==OP_BUYLIMIT)))  col=col+1;
   }
return(col);
}

//Кол-во отложенных на Селл
int ordercountSELL()
{
string To,Tn;
int cnt, col;
col=0;
for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
   OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   To = OrderSymbol();
   if ((To==Symbol())  && ((OrderType()==OP_SELLSTOP) || (OrderType()==OP_SELLLIMIT)))  col=col+1;
   }
return(col);
}

// -------------------------------  Кол-во открытых на бай
int countBUY()
{
string To;
int cnt,col;
col=0;
for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
   OrderSelect(cnt,SELECT_BY_POS,0);
   To = OrderSymbol();
   if ((To==Symbol())  && (OrderType()==OP_BUY))  col=col+1;
   }
return(col);
}

// -----------------------------   Кол-во открытых на Селл
int countSELL()
{
string To,Tn;
int cnt, col;
col=0;
for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
   OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   To = OrderSymbol();
   if ((To==Symbol())  && (OrderType()==OP_SELL))  col=col+1;
   }
return(col);
}



//Отмена отложенных
int CloseAll()
{
int cnt;
bool n3,n4,rez;
rez=true;
for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
   OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   if  ((OrderSymbol()==Symbol())  && (OrderType()==OP_BUYSTOP))   OrderDelete( OrderTicket(), 0);
   if  ((OrderSymbol()==Symbol())  && (OrderType()==OP_SELLSTOP))  OrderDelete( OrderTicket(), 0);
   if  ((OrderSymbol()==Symbol())  && (OrderType()==OP_BUYLIMIT))  OrderDelete( OrderTicket(), 0);
   if  ((OrderSymbol()==Symbol())  && (OrderType()==OP_SELLLIMIT)) OrderDelete( OrderTicket(), 0);
   }
return(rez);
}

//Возвращает общий профит
double AllProfit()
{
string To;
int cnt;
double prof=0; 
for (cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
   OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   To = OrderSymbol();
   if ( (To==Symbol())  && (OrderType()==OP_SELL) )  prof=prof+OrderProfit()+OrderSwap();
   if ( (To==Symbol())  && (OrderType()==OP_BUY)  )  prof=prof+OrderProfit()+OrderSwap();
   }
return(prof);
}


int start()
  {
   
   if ( (countSELL()==1) && (ordercountBUY()==1) ) CloseAll();
   if ( (ordercountSELL()==1) && (countBUY()==1) ) CloseAll();
   
   
   Comment("BUY  = "+countBUY()+"n"+"SELL = "+countSELL()+"n"+
           "BUY LIMIT  = "+ordercountBUY()+"n"+"SELL LIMIT = "+ordercountSELL()+"n"+Symbol()+" = "+AllProfit());
   return(0);
  }
//+------------------------------------------------------------------+
 

ХЫШНИК

МАСТЕР
Регистрация
18.05.2007
Сообщения
1,642
Реакции
22
Поинты
0.000
если кто вдруг не знает как этот код приатачить к терминалу обьясняю..

1 открываем MetaEditor..(в терминале вверху под справкой жёлтый ромб с воскл. знаком)
2 файл-> создать-> советник
3 очистить появившийся шаблон и скопировать туда код...
4 нажать "Компилировать" (тоже вверху..недалеко от справки)
5 перезагрузить терминал..в окне "навигатор" по вкладке советник найти советник и перетащить на граик
6 в появившихся опциях поставить галку в "разрешить советнику торговать"...жмакнуть "ок"..
7 чтобы всё работало должно быть так..см. рисунок..
 

Aisller

Главный модератор
Команда форума
Администратор
Главный модератор
Регистрация
07.12.2007
Сообщения
23,432
Реакции
5,448
Поинты
0.184

ХЫШНИК

МАСТЕР
Регистрация
18.05.2007
Сообщения
1,642
Реакции
22
Поинты
0.000
на сколько я помню зигзаг настраивается ...тоесть пик формируется через определённое количество баров...не плохо было бы эту настройку указать..если я всё правильно понял..
 

dunaef

Интересующийся
Регистрация
18.10.2007
Сообщения
119
Реакции
0
Поинты
0.000
Предполагаеться использовать базовый zigzag МТ4 с типовыми настройками. Важно попробовать, а в дальнейшем уже подогнать в зависимости от результатов тестирования.
 

dunaef

Интересующийся
Регистрация
18.10.2007
Сообщения
119
Реакции
0
Поинты
0.000
Для трейдера данная стратегия не являеться оптимальной по многим причинам, а для мтс для выполнения жесткого алгоритма думаю может приносить прибыль. Вопрос возмется кто нибудь написать советника или нет, может пора искать в другом месте. Да второй индикатор трендовый здесь.
 

Вложения

  • Stop_reversal.zip
    1.1 KB · Просмотры: 41
Сверху Снизу