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

STARGAZER

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

Вложения

  • SETKA.mq4
    8,5 КБ · Просмотры: 48

lavandos

Элитный участник
коллеги, может кто нибудь сделать из него МТФ? :please:
 

Вложения

  • Visual MACD-2.mq4
    3,7 КБ · Просмотры: 40

mrwaytt

Интересующийся
Вечер добрый! Добавьте пожалуйста пункт - сколько учитывать истории по свечам ... не хватает жутко
 

Вложения

  • candle_body_size.mq4
    1,2 КБ · Просмотры: 40

STARGAZER

Новичок форума
Помогите доработать сеточник :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)
;
 
Последнее редактирование:

Picasso

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

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(). Дальше мне и самому разбираться надо. Но может поможет.
И вероятно через массив, заполняем и сравниваем.
 

STARGAZER

Новичок форума
Наверное, надо сначала понять где 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 ордера более цены открытия предыдущего ордера то закрывать ордер
 
Последнее редактирование:

Mamsya

Элитный участник
Кто может сделать из него МТФ? :)
 

Вложения

  • Adaptive TMA ATR Bands Alerts (1).mq4
    6,6 КБ · Просмотры: 47

Mamsya

Элитный участник
Если не мтф, то помогите доработать инди...нужно чтобы показывал как на первом скрине, а то получается как на втором....сначала показывает после смены настроек сглаженные линии, но почему то потом начинает считать и получаются ломаные(((
 

Вложения

  • 2016-11-15_21-38-00.jpg
    2016-11-15_21-38-00.jpg
    294,3 КБ · Просмотры: 129
  • 2016-11-15_21-56-01.jpg
    2016-11-15_21-56-01.jpg
    439,1 КБ · Просмотры: 105

po77itiff

Активный участник
Уважаемые программисты. Просьба к индюку добавить еще одну горизонтальную линию с возможностью выбора времени и цвета.Наподобие индюка дейли опен. Должно получиться что-то вроде индикатора торговых сессий (хай сессии, лоу сессии и открытие).
П.С.: либо просто написать простенький индюк открытия торговых сессий. (Именно в виде горизонтальных линий на графике нужен) Спасибо.
 

Вложения

  • XALIF.mq4
    5,2 КБ · Просмотры: 59
  • 16.11.png
    16.11.png
    39,1 КБ · Просмотры: 246
Последнее редактирование:

Mamsya

Элитный участник
Тут есть программисты, где все? Помощь ведь нужна!))
 

Софи

Местный житель
Уважаемые программисты! Можете ли вы добавить к индикатору звуковой сигнал и текстовое сообщение при:
1. пересечении уровня 0,75 сверху вниз - селл, какая пара
2. пересечении уровня -0,75 снизу вверх - бай, какая пара
 

Вложения

  • Fro SSRC Color 1.0.mq4
    6,8 КБ · Просмотры: 68

kwatuhit

Почетный гражданин
привет

Посмотри что в этом есть
а то у меня абру кадабру пишет
 

Вложения

  • 2016-11-16_18-25-08.png
    2016-11-16_18-25-08.png
    35,7 КБ · Просмотры: 303
  • Fro SSRCmtf-alert-color 1.0.mq4
    9,9 КБ · Просмотры: 68
Верх