Доработка ботов (советников, индикаторов) vol. 2

Помогите доработать сеточник :facepalm:
Нужно чтобы после того как уже куплено 5 ордеров программа анализировала 6 ордер и последующие ордера следующим образом:
например куплен 6 ордер и он уходит в плюс. Как только он уходит за цену 5-го ордера т.е. у 5-го ордера цена становится плюсовой то 6 ордер нужно чтобы закрывался. аналогично нужно чтобы все последующие ордера которые покупаются после 5-го ордера закрывались аналогичным образом. Также нужно чтобы тейкпрофит тоже смещался
Хотелось бы чтобы эта функция была параметром который можно включить указав нужное количество ордеров
 

Вложения

  • SETKA.mq4
    SETKA.mq4
    8,5 КБ · Просмотры: 52
Вечер добрый! Добавьте пожалуйста пункт - сколько учитывать истории по свечам ... не хватает жутко
 

Вложения

Помогите доработать сеточник :facepalm:
Нужно чтобы после того как уже куплено 5 ордеров программа анализировала 6 ордер и последующие ордера следующим образом:
например куплен 6 ордер и он уходит в плюс. Как только он уходит за цену 5-го ордера т.е. у 5-го ордера цена становится плюсовой то 6 ордер нужно чтобы закрывался. аналогично нужно чтобы все последующие ордера которые покупаются после 5-го ордера закрывались аналогичным образом. Также нужно чтобы тейкпрофит тоже смещался
Хотелось бы чтобы эта функция была параметром который можно включить указав нужное количество ордеров

Начал дописывать своими силами. Подскажите в коде пожалуйста
Как мне явно указать и проверить что пятый ордер по цене сталбольше нуля чтобы закрыть шестой ордер, или шестой ордер стал больше нуля по цене чтобы можно было закрыть седьмой ордер если он был открыт?

double opB=2000; double opS=0; double orderProfitbuy=0; double Sum_Profitbuy=0; double orderProfitsel; double Sum_Profitsel; int orderType;
double LotB=Lots_New;
double LotS=Lots_New;
int total=OrdersTotal();
int b=0,s=0,n=0;
for(int i=total-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS))
{
if(OrderSymbol()==Symbol() )
{
n++;
if(OrderType()==OP_BUY && OrderMagicNumber()==Magic)
{
b++;
LotB=OrderLots();
double ProfitB=OrderTakeProfit(); double openB=OrderOpenPrice();
if(openB<opB)
{opB=openB;}
}
//---------------------------------
if(OrderType()==OP_SELL && OrderMagicNumber()==Magic)
{
s++;
LotS=OrderLots();
double ProfitS=OrderTakeProfit(); double openS=OrderOpenPrice();
if(openS>opS)
{opS=openS;}
}
}
}
}
double max = NormalizeDouble(iHigh(Symbol(),1440,0),Digits);
double min = NormalizeDouble(iLow (Symbol(),1440,0),Digits);
double opp=NormalizeDouble(iOpen(Symbol(),1440,0),Digits);
double cl=NormalizeDouble(iClose(Symbol(),1440,0),Digits);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
double dis =NormalizeDouble(Distanciya*Point,Digits);
double spred =NormalizeDouble(MarketInfo(Symbol(),MODE_SPREAD)*Point,Digits);
double CORR=NormalizeDouble(Plus *Point,Digits)
;
 
Последнее редактирование:
Начал дописывать своими силами. Подскажите в коде пожалуйста
Как мне явно указать и проверить что пятый ордер по цене сталбольше нуля чтобы закрыть шестой ордер, или шестой ордер стал больше нуля по цене чтобы можно было закрыть седьмой ордер если он был открыт?

double opB=2000; double opS=0; double orderProfitbuy=0; double Sum_Profitbuy=0; double orderProfitsel; double Sum_Profitsel; int orderType;
double LotB=Lots_New;
double LotS=Lots_New;
int total=OrdersTotal();
int b=0,s=0,n=0;
for(int i=total-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS))
{
if(OrderSymbol()==Symbol() )
{
n++;
if(OrderType()==OP_BUY && OrderMagicNumber()==Magic)
{
b++;
LotB=OrderLots();
double ProfitB=OrderTakeProfit(); double openB=OrderOpenPrice();
if(openB<opB)
{opB=openB;}
}
//---------------------------------
if(OrderType()==OP_SELL && OrderMagicNumber()==Magic)
{
s++;
LotS=OrderLots();
double ProfitS=OrderTakeProfit(); double openS=OrderOpenPrice();
if(openS>opS)
{opS=openS;}
}
}
}
}
double max = NormalizeDouble(iHigh(Symbol(),1440,0),Digits);
double min = NormalizeDouble(iLow (Symbol(),1440,0),Digits);
double opp=NormalizeDouble(iOpen(Symbol(),1440,0),Digits);
double cl=NormalizeDouble(iClose(Symbol(),1440,0),Digits);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
double dis =NormalizeDouble(Distanciya*Point,Digits);
double spred =NormalizeDouble(MarketInfo(Symbol(),MODE_SPREAD)*Point,Digits);
double CORR=NormalizeDouble(Plus *Point,Digits)
;

Наверное, надо сначала понять где 1,2,3,4,5,6 и тд ордер. скорее всего по времени открытия. т.е OrderOpenTime(). Дальше мне и самому разбираться надо. Но может поможет.
И вероятно через массив, заполняем и сравниваем.
 
Наверное, надо сначала понять где 1,2,3,4,5,6 и тд ордер. скорее всего по времени открытия. т.е OrderOpenTime(). Дальше мне и самому разбираться надо. Но может поможет.
И вероятно через массив, заполняем и сравниваем.



//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
double opB=2000; double opS=0; double orderProfitbuy=0; double Sum_Profitbuy=0; double orderProfitsel; double Sum_Profitsel; int orderType;
double LotB=Lots_New;
double LotS=Lots_New;
int total=OrdersTotal();
int totalOrders = OrdersTotal();//все ордера
int b=0,s=0,n=0;

//проверим превышение максимального количества ордера
//пропишем цикл как именно вычислить закрытие ордера который по количеству больше чем MaximumOrders
//и по цене больше чем цена предыдущего открытого ордера

for(int sss=total-1; sss>=0; sss--)
{
if(MaximumOrders<totalOrders+1 && totalOrders>sss+1)
{

Alert(sss);
Alert(OrderSymbol());
}
}


я получил количество ордеров и хотел в цикле сравнить превышает ли количество открытых ордеров количество MaximumOrders и после вычислить цену , по принципу если цена более текущего превышающего значение MaximumOrders ордера более цены открытия предыдущего ордера то закрывать ордер
 
Последнее редактирование:
Если не мтф, то помогите доработать инди...нужно чтобы показывал как на первом скрине, а то получается как на втором....сначала показывает после смены настроек сглаженные линии, но почему то потом начинает считать и получаются ломаные(((
 

Вложения

  • 2016-11-15_21-38-00.jpg
    2016-11-15_21-38-00.jpg
    294,3 КБ · Просмотры: 133
  • 2016-11-15_21-56-01.jpg
    2016-11-15_21-56-01.jpg
    439,1 КБ · Просмотры: 109
Уважаемые программисты. Просьба к индюку добавить еще одну горизонтальную линию с возможностью выбора времени и цвета.Наподобие индюка дейли опен. Должно получиться что-то вроде индикатора торговых сессий (хай сессии, лоу сессии и открытие).
П.С.: либо просто написать простенький индюк открытия торговых сессий. (Именно в виде горизонтальных линий на графике нужен) Спасибо.
 

Вложения

  • XALIF.mq4
    XALIF.mq4
    5,2 КБ · Просмотры: 66
  • 16.11.png
    16.11.png
    39,1 КБ · Просмотры: 254
Последнее редактирование:
Тут есть программисты, где все? Помощь ведь нужна!))
 
Уважаемые программисты! Можете ли вы добавить к индикатору звуковой сигнал и текстовое сообщение при:
1. пересечении уровня 0,75 сверху вниз - селл, какая пара
2. пересечении уровня -0,75 снизу вверх - бай, какая пара
 

Вложения

Посмотрели (2217) Посмотреть

Отслеживают (1864) Посмотреть

Назад
Верх