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

Статус
Закрыто для дальнейших ответов.

alexshell

Элитный участник
Уважаемые программисты, подправьте пожалуйста эксперт.
Проблема в том, что он почему то иногда сразу после открытия ордеров другим роботом, закрывает их, не достигнув заданного профита!
И не могу понять, почему на магик 1 и 5 - торговля остановлена?
По идеи должно быть как на магик 2.
Заранее благодарю!

eurgbp-h1-gkfx.png


p.s. после нажатия ОК в окне внешних параметров - все стало отображаться как на магик 2

Это в коментах по тех заданию же расписано.
6. Номер магика по которому сделки закрыл советник заносятся в базу и при дальнейших попытках открытия ордеров с этим магиком советник их сразу закрывает.
Поэтому он и пишет что торговля остановлена.
7. База обнуляется при перезапуске советника.
 

Novikov

Гуру форума
Это в коментах по тех заданию же расписано.
6. Номер магика по которому сделки закрыл советник заносятся в базу и при дальнейших попытках открытия ордеров с этим магиком советник их сразу закрывает.
Поэтому он и пишет что торговля остановлена.
7. База обнуляется при перезапуске советника.

Не догадался глянуть код! :facepalm:
А можно эту базу отключить, что бы не приходилось его перезагружать.
Закрыл ордера и следит дальше за магиком с самого начала! :please:
 

alexshell

Элитный участник
Не догадался глянуть код! :facepalm:
А можно эту базу отключить, что бы не приходилось его перезагружать.
Закрыл ордера и следит дальше за магиком с самого начала! :please:

-------------------------------------------------
 

Вложения

ksardas

Гуру форума
Всем Всем Всем
Нужна помощь!
Есть такая сетка усреднитель VR---SETKA=3=M, хорошо подходит для опытов)), но...
при построении усреднения журнал забивает ошибкой OrderModify error 1
В этом блоке, не могу понять:not-good:
PHP:
for(int uui=total-1; uui>=0; uui--)
  {
   if(OrderSelect(uui,SELECT_BY_POS))
     {
      if(OrderSymbol()==Symbol())
        {
         if(b>=2 && OrderType()==OP_BUY && OrderMagicNumber()==Magic)
           {
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),factb+CORR,0,CLR_NONE);
           }
         if(s>=2 && OrderType()==OP_SELL && OrderMagicNumber()==Magic)
           {
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),facts-CORR,0,CLR_NONE);
           }
        }
     }
  }
наверно неоднократно пытается модифицировать одно и тоже???
или как-то можно отметить уже модифицир ордер??
 

Вложения

Последнее редактирование:

Lexxodessa

Гуру форума
Парни кто может прикрутить звук и на какой паре был сигнал при появлении нового луча - очень надо , заранее спс
 

Вложения

zhserg

Местный знаток
Всем Всем Всем
Нужна помощь!
Есть такая сетка усреднитель VR---SETKA=3=M, хорошо подходит для опытов)), но...
при построении усреднения журнал забивает ошибкой OrderModify error 1
В этом блоке, не могу понять:not-good:
PHP:
for(int uui=total-1; uui>=0; uui--)
  {
   if(OrderSelect(uui,SELECT_BY_POS))
     {
      if(OrderSymbol()==Symbol())
        {
         if(b>=2 && OrderType()==OP_BUY && OrderMagicNumber()==Magic)
           {
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),factb+CORR,0,CLR_NONE);
           }
         if(s>=2 && OrderType()==OP_SELL && OrderMagicNumber()==Magic)
           {
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),facts-CORR,0,CLR_NONE);
           }
        }
     }
  }
наверно неоднократно пытается модифицировать одно и тоже???
или как-то можно отметить уже модифицир ордер??

Перед модификацией сделай проверку TP -
PHP:
if (OrderTakeProfit()!=NormalizeDouble(factb+CORR, Digits))
для первого случая. И
PHP:
if (OrderTakeProfit()!=NormalizeDouble(factb-CORR, Digits))
для второго.
 

ksardas

Гуру форума
Перед модификацией сделай проверку TP -
PHP:
if (OrderTakeProfit()!=NormalizeDouble(factb+CORR, Digits))
для первого случая. И
PHP:
if (OrderTakeProfit()!=NormalizeDouble(factb-CORR, Digits))
для второго.
Спасибо за условие проверки!
Но не помогло, гад выдает туже ошибку((( 200 раз за секунду((
PHP:
for(int uui=total-1; uui>=0; uui--)
  {
   if(OrderSelect(uui,SELECT_BY_POS))
     {
      if(OrderSymbol()==Symbol())
        {
         if(b>=2 && OrderType()==OP_BUY && OrderMagicNumber()==Magic)
         {
           if(OrderTakeProfit()!=NormalizeDouble(factb+CORR, Digits))
           {
             OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),factb+CORR,0,CLR_NONE);
           }
          }
         if(s>=2 && OrderType()==OP_SELL && OrderMagicNumber()==Magic)
         {
           if(OrderTakeProfit()!=NormalizeDouble(factb-CORR, Digits))
            {
           OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),facts-CORR,0,CLR_NONE);
             }
           }
        }
     }
  }
 

Bochkoff

Интересующийся
здравствуйте. Очень прошу помогите добавить в индикатор доп настройку, ОЧЕНЬ, ОЧЕНЬ надо.
Индюк показывает эквити по нескольким валютным парам.
Нужно добавить чтобы можно было изменять лотность валютных пар, для каждой отдельно
Допустим EUR/USD 1.1 USD/CHF 0.8 .....


_http://yadi.sk/d/GTobU_hoM944a - индюк тут
ну или код индюка:

//+------------------------------------------------------------------+
//| Equity_virtual1.mq4 |
//| Copyright © 2009, Xupypr |
//| _http://www.mql4.com/ru/users/Xupypr |
//| Версия от 01.04.2009 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Xupypr"
#property link _http://www.mql4.com/ru/users/Xupypr

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 Aqua
#property indicator_color3 Yellow
#property indicator_width1 2
#property indicator_width2 1
#property indicator_width3 1
#property indicator_level1 0

extern datetime Time_Open=D'2009.08.01 00:00'; // Время одновременного открытия позиций
extern datetime Time_Close=D'2019.02.02 00:00'; // Время одновременного закрытия позиций
extern bool General_Line=false; // Использовать граф.объекты - линии для установки времени открытия/закрытия
extern double Default_Lot=0.1; // Размер лота по умолчанию, если он не указан дополнительно в перечне символов
//--- Перечни символов, которые условно открываются в buy или в sell
//--- "На хвост" символу может дописываться размер лота
//--- Если размер лота не дописан, применяется лот по умолчанию
//--- Количество символов в пакете произвольное
extern string Buy_Symbols="GBPUSD EURUSD USDCAD USDCHF";
extern string Sell_Symbols="";
extern bool Show_Total=true; // Отображать суммарное эквити
extern bool Show_Buy=false; // Отображать эквити позиций buy
extern bool Show_Sell=false; // Отображать эквити позиций sell

int Total;
bool First;
double TotalEquity[],BuyEquity[],SellEquity[];
string ShortName;

int OpenBar; // номер бара открытия
int CloseBar; // Номер бара закрытия
int Type[]; // тип операции
string Instrument[]; // инструмент
double Lots[]; // количество лотов
double OpenPrice[]; // цена открытия

//+----------------------------------------------------------------------------+
//| Custom indicator initialization function |
//+----------------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,TotalEquity);
SetIndexLabel(0,"Total");
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(1,BuyEquity);
SetIndexLabel(1,"Buy "+Buy_Symbols);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(2,SellEquity);
SetIndexLabel(2,"Sell "+Sell_Symbols);
SetIndexStyle(2,DRAW_LINE);
ShortName="Equity";
if (Show_Total) ShortName=StringConcatenate(ShortName," Total");
if (Show_Buy) ShortName=StringConcatenate(ShortName," Buy");
if (Show_Sell) ShortName=StringConcatenate(ShortName," Sell");
IndicatorShortName(ShortName);
IndicatorDigits(2);
First=true;
return(0);
}
//+----------------------------------------------------------------------------+
//| Custom indicator iteration function |
//+----------------------------------------------------------------------------+
int start()
{
static string minfosymbols="";
double buyprofitloss,sellprofitloss,spread,lotsize;
int bar,i,j;
/*
if (!IsConnected())
{
Print("Связь с сервером отсутствует или прервана");
return(0);
}
*/
if (General_Line)
{
if (ObjectFind("openall")==-1) ObjectCreate("openall",OBJ_VLINE,0,Time_Open,0);
if (ObjectFind("closeall")==-1) ObjectCreate("closeall",OBJ_VLINE,0,Time_Close,0);
if (ObjectGet("openall",OBJPROP_TIME1)!=Time_Open || ObjectGet("closeall",OBJPROP_TIME1)!=Time_Close)
{
First=true;
Time_Open=ObjectGet("openall",OBJPROP_TIME1);
Time_Close=ObjectGet("closeall",OBJPROP_TIME1);
ArrayInitialize(TotalEquity,EMPTY_VALUE);
ArrayInitialize(BuyEquity,EMPTY_VALUE);
ArrayInitialize(SellEquity,EMPTY_VALUE);
}
}
OpenBar=iBarShift(NULL,0,Time_Open);
CloseBar=iBarShift(NULL,0,Time_Close,true);
if (First)
{
First=false;
Total=0;
SetOrder(Buy_Symbols,OP_BUY);
SetOrder(Sell_Symbols,OP_SELL);
if (Total==0)
{
Alert("Ни одного символа не задано!");
return(0);
}
}
else
{
if (Total==0) return(0);
if (CloseBar>=0) return(0);
else
{
OpenBar=1;
CloseBar=0;
}
}
for (i=OpenBar;i>=CloseBar;i--)
{
buyprofitloss=0.0;
sellprofitloss=0.0;
for (j=0;j<Total;j++)
{
if (MarketInfo(Instrument[j],MODE_POINT)==0)
{
if (StringFind(minfosymbols,Instrument[j])==-1)
{
Alert("В обзоре рынка не хватает "+Instrument[j]);
minfosymbols=StringConcatenate(minfosymbols," ",Instrument[j]);
}
continue;
}
bar=iBarShift(Instrument[j],0,Time);
lotsize=LotSize(Instrument[j],Time);
if (Type[j]==OP_BUY) buyprofitloss+=(iClose(Instrument[j],0,bar)-OpenPrice[j])*Lots[j]*lotsize;
else
{
spread=MarketInfo(Instrument[j],MODE_POINT)*MarketInfo(Instrument[j],MODE_SPREAD);
//sellprofitloss+=(OpenPrice[j]-iClose(Instrument[j],0,bar)-spread)*Lots[j]*lotsize;
sellprofitloss+=(OpenPrice[j]-iClose(Instrument[j],0,bar))*Lots[j]*lotsize;
}
}
if (Show_Total) TotalEquity=NormalizeDouble(buyprofitloss+sellprofitloss,2);
if (Show_Buy) BuyEquity=NormalizeDouble(buyprofitloss,2);
if (Show_Sell) SellEquity=NormalizeDouble(sellprofitloss,2);
}
return(0);
}
//+----------------------------------------------------------------------------+
//| Определение размера контракта |
//+----------------------------------------------------------------------------+
double LotSize(string symbol, datetime tbar)
{
double size;
string BQ,currency=AccountCurrency();
int raczet = MarketInfo(symbol,MODE_PROFITCALCMODE);
switch (raczet)
{
case 0:
{
int sbar=iBarShift(symbol,0,tbar);
size=MarketInfo(symbol,MODE_LOTSIZE);
if (StringSubstr(symbol,3,3)=="USD") break;
if (StringSubstr(symbol,0,3)=="USD") size=size/iClose(symbol,0,sbar);
else
{
BQ=StringSubstr(symbol,0,3)+"USD";
if (iClose(BQ,0,0)==0) BQ="USD"+StringSubstr(symbol,0,3);
if (iClose(BQ,0,0)==0) break;
int BQbar=iBarShift(BQ,0,tbar);
if (StringSubstr(BQ,0,3)=="USD") size=size/iClose(BQ,0,BQbar)/iClose(symbol,0,sbar);
else size=size*iClose(BQ,0,BQbar)/iClose(symbol,0,sbar);
}
} break;
case 1: size=MarketInfo(symbol,MODE_LOTSIZE); break;
case 2: size=MarketInfo(symbol,MODE_TICKVALUE)/MarketInfo(symbol,MODE_TICKSIZE);
}
if (currency!="USD")
{
BQ=currency+"USD";
if (iClose(BQ,0,0)==0)
{
BQ="USD"+currency;
size*=iClose(BQ,0,iBarShift(BQ,0,tbar));
}
else size/=iClose(BQ,0,iBarShift(BQ,0,tbar));
}
return(size);
}
//+----------------------------------------------------------------------------+
//| Установка параметров ордера |
//+----------------------------------------------------------------------------+
void SetOrder(string name, int cmd)
{
int length,pos,end;

length=StringLen(name);
pos=0;
while (pos<length)
{
Total++;
ArrayResize(Type,Total);
ArrayResize(Instrument,Total);
ArrayResize(Lots,Total);
ArrayResize(OpenPrice,Total);
Type[Total-1]=cmd;
Instrument[Total-1]=StringSubstr(name,pos,6);
pos+=6;
if (StringGetChar(name,pos)==32 || (length-1)<pos) Lots[Total-1]=Default_Lot;
else
{
end=0;
while(StringGetChar(name,pos+end)!=32)
{
if ((length-1)<pos+end) break;
end++;
}
Lots[Total-1]=StrToDouble(StringSubstr(name,pos,pos+end));
pos+=end;
}
pos++;
OpenPrice[Total-1]=iOpen(Instrument[Total-1],0,iBarShift(Instrument[Total-1],0,Time_Open));
//if (cmd==OP_BUY) OpenPrice[Total-1]+=MarketInfo(Instrument[Total-1],MODE_POINT)*MarketInfo(Instrument[Total-1],MODE_SPREAD);
}
}
//+----------------------------------------------------------------------------+
 
Последнее редактирование модератором:

gek

Элитный участник
люди добрые помогите кто может, чет я подсел на индикатор Envelopes:D сделайте чтоб сова по обратному сигналу открывала сделку а прежнею закрывала ото там она сработает если словит стоп первая сделка, а я кочу чтоб без стопа а по обратному сигналу:please:, че написал ужас, надеюсь меня поймете:facepalm:

Тестирую на демо,вроде делает плюсы.
Разобрался с этой совой?
 

Dendjo

Местный житель
Тестирую на демо,вроде делает плюсы.
Разобрался с этой совой?

чтоб с ней разбираться надо чтоб ее доработали, но мою просьбу так и не хотят осуществить или некогда нашим умельцам и волшебникам заняться:disappointed: а так сов хороший бы получился, если его до ума довести, попрошу еще раз:D ну помогите, там еще есть что дорабатывать в виде фильтров но сделайте хоть то что я просил:please: http://forexsystemsru.com/823147-post9528.html
 
Последнее редактирование:

Egorushka1974

Местный житель
Мэтры, помогите, делал один человек мне индикатор по нумерации баров, сделал на Н1 и бросил, а хотелосьбы чтобы работал на остальных ТФ. Правда индюк в екзе формате, может кто возьмется. Спасибо большое.
 

Вложения

Последнее редактирование модератором:

Попов Денис

Активный участник
Помоги пожалуйста!!! Надо привязать к советнику этот индикатор. принцип работы: По данным индикатора на тайме м1 (даже тайм может быть любой) после смены показаний индикатора он открывает сделку в том направлении в котором говорит индикатор, а старую закрывает, и т.д. также если возможно добавь стоп лосс и торговлю по времени. Очень надо! ПОМОГИ!:please::please::please::please: сам пытался ничего не получается.o_o
 

Вложения

Последнее редактирование:

Gruler

Новичок форума
Помогите чуток доработать бот, пожалуйста!!!
Можно сделать, что бы бот ставил отложки не только по одному разу, а все время. Тоесть, когда закрываются первые ордера по лосу или профиту, бот не переставал работать, а выставлял отложки заново по заданным там параметрам?
 

Вложения

Статус
Закрыто для дальнейших ответов.

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

Верх