• Реклама: 💰 Пополни свой портфель с минимальной комиссией на Transfer24.pro
  • Добро пожаловать на инвестиционный форум!

    Во всем многообразии инвестиций трудно разобраться. MMGP станет вашим надежным помощником и путеводителем в мире инвестиций. Только самые последние тренды, передовые технологии и новые возможности. 400 тысяч пользователей уже выбрали нас. Самые актуальные новости, проверенные стратегии и способы заработка. Сюда люди приходят поделиться своим опытом, найти и обсудить новые перспективы. 16 миллионов сообщений, оставленных нашими пользователями, содержат их бесценный опыт и знания. Присоединяйтесь и вы!

    Впрочем, для начала надо зарегистрироваться!
  • 🐑 Моисей водил бесплатно. А мы платим, хотя тоже планируем работать 40 лет! Принимай участие в партнеской программе MMGP
  • 📝 Знаешь буквы и умеешь их компоновать? Платим. Дорого. Бессрочная акция от MMGP: "ОПЛАТА ЗА СООБЩЕНИЯ"

Как скрыть работу советника /эксперта в МТ4 - Страница 2

wmalliance

Верифицирован
Регистрация
20.04.2010
Сообщения
595
Реакции
63
Поинты
0.000
на стороне ДЦ все определяется очень просто и быстро, на такие советники и палки не нужно вставлять, слив будет рано или поздно засчитан :)

поидее после принятия нового закона вообще не будет возможности МТ4 использовать "в рамках закона" только МТ5... а там все подобные советники просто не смогут делать то что им иногда удается
 

wiseOne

Интересующийся
Регистрация
14.11.2012
Сообщения
79
Реакции
7
Поинты
0.000
после принятия нового закона вообще не будет возможности МТ4 использовать "в рамках закона" только МТ5... а там все подобные советники просто не смогут делать то что им иногда удается
Можно отсюда поподробнее, что за закон? И разве илан нельзя поставить на МТ5?
 
Последнее редактирование:

PRAETORIAN

Любитель
Должник!!!
Регистрация
20.03.2013
Сообщения
265
Реакции
46
Поинты
0.000

Sergey Kovalyov

Любитель
Регистрация
23.03.2013
Сообщения
320
Реакции
176
Поинты
0.000
Журнал советника ДЦ не видит. Но определить кем открыта сделка может (в MT5 появилась функция в API для этого, якобы для удобства разбора претензий, сов это был, руки или сигнальчик; про MT4 нет данных, но можно предположить =) ). Плюс, если сов пишет комменты или использует magic, то тоже все ясно.
 

Sergey Kovalyov

Любитель
Регистрация
23.03.2013
Сообщения
320
Реакции
176
Поинты
0.000
Re: Можно ли на сервере МТ4 определить торговлю советником?

работайте с банками, здесь косяков не будет.

Будут https://mmgp.com/showthread.php?p=4666455#post4666455

Банки -- кухни круче чем ДЦ.
 
Последнее редактирование:
Регистрация
10.04.2011
Сообщения
2,217
Реакции
1,182
Поинты
0.000

Гарэгин Диноян

Интересующийся
Регистрация
15.11.2013
Сообщения
15
Реакции
0
Поинты
0.000
а где коменты в коде? например вот код:
//+------------------------------------------------------------------+
//| TrailingStopLight.mq4 |
//| Copyright © 2012, Khlystov Vladimir |
//| http://cmillion.narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, [email protected]"
#property link "http://cmillion.narod.ru"
#property show_inputs
//--------------------------------------------------------------------
extern int TimeModify = 30; //кол-во секунд раньше которого запрещено изменять ордер
extern int Step = 10; //расстояние от цены
extern double Lot = 0.1;
extern int Stoploss = 10, //стоплосс, если 0 то не изменяется
Takeprofit = 50; //тейкпрофит, если 0 то не изменяется
extern int TrailingStop = 5; //длинна тралла, если 0 то нет тралла
extern int TrailingStart = 10; //когда включать тралл, например после достижения 40 п прибыл
extern int StepTrall = 2; //шаг тралла - перемещать стоплосс не ближе чем StepTrall
extern int NoLoss = 0, //перевод в безубыток при заданном кол-ве пунктов прибыли, если 0 то нет перевода в безубыток
MinProfitNoLoss = 0; //минимальная прибыль при переводе вбезубыток
extern int TimeStart = 0 , //ограничение времени работы советника
TimeEnd = 24; //не открываем ордера и закрываем отложки если время не между TimeStart и TimeEnd
extern int slippage = 30; //Максимально допустимое отклонение цены для рыночных ордеров (ордеров на покупку или продажу).
extern int Magic = 77; //магик
//extern int Key = 0;
//--------------------------------------------------------------------
int STOPLEVEL,TimeBarB,TimeBarS,AN;
//--------------------------------------------------------------------
int init()
{
AN = AccountNumber();
}
//--------------------------------------------------------------------
int deinit()
{
remove_objects("info");
}
//--------------------------------------------------------------------
int start()
{
if (!IsDemo() && !IsTesting() && 32395!=AN) {info();return;}
if (!IsTradeAllowed())
{
Comment("Торговля запрещена IsTradeAllowed");
return;
}
//---
int TekHour = Hour();
bool Trade;
if ( TimeStart < TimeEnd && TekHour >= TimeStart && TekHour < TimeEnd ) Trade=true;
else
{
if ( TimeStart > TimeEnd && (TekHour >= TimeStart || TekHour < TimeEnd)) Trade=true; //торговля ночью
else Trade=false;
}
if (!Trade)
{
Comment("Торговля запрещена по времени ");
}
//---
STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
double OSL,StLo,PriceB,PriceS,OOP,SL,TP;
int b,s,TicketB,TicketS,OT;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
{
OT = OrderType();
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
SL=OSL;
if (OT==OP_BUY)
{
b++;
if (OSL<OOP && NoLoss!=0)
{
StLo = NormalizeDouble(OOP+MinProfitNoLoss*Point,Digits);
if (StLo > OSL && StLo <= NormalizeDouble(Bid - STOPLEVEL * Point,Digits)) SL = StLo;
}

if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (Bid - OOP)/Point >= TrailingStart)
{
StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits);
if (StLo>=OOP && StLo > OSL+StepTrall*Point) SL = StLo;
}

if (SL > OSL)
{
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error ",GetLastError()," Order Modify Buy SL ",OSL,"->",SL);
else Print("Order Buy Modify SL ",OSL,"->",SL);
}
}
if (OT==OP_SELL)
{
s++;
if ((OSL>OOP || OSL==0) && NoLoss!=0)
{
StLo = NormalizeDouble(OOP-MinProfitNoLoss*Point,Digits);
if (StLo < OSL || OSL==0 && StLo >= NormalizeDouble(Ask + STOPLEVEL * Point,Digits)) SL = StLo;
}

if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (OOP - Ask)/Point >= TrailingStart)
{
StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits);
if (StLo<=OOP && (StLo < OSL-StepTrall*Point || OSL==0)) SL = StLo;
}

if ((SL < OSL || OSL==0) && SL!=0)
{
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error ",GetLastError()," Order Modify Sell SL ",OSL,"->",SL);
else Print("Order Sell Modify SL ",OSL,"->",SL);
}
}
if (OT==OP_BUYSTOP) {PriceB=OOP; TicketB=OrderTicket();}
if (OT==OP_SELLSTOP) {PriceS=OOP; TicketS=OrderTicket();}
}
}
}
if (TicketS==0 && TicketB>0) {OrderDelete(TicketB);return;}
if (TicketB==0 && TicketS>0) {OrderDelete(TicketS);return;}
if (!Trade)
{
if (b+s==0)
{
if (TicketS+TicketB>0) DeleteAll(-1);
return;
}
}
if (b+TicketB==0 && s==0)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Bid - Stoploss * Point,Digits); else SL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Point,Digits); else TP=0;
if (OrderSend(Symbol(),OP_BUYSTOP,Lot,NormalizeDouble(Ask+Step * Point,Digits),slippage,SL,TP,"news",Magic,0,CLR_NONE)!=-1) TimeBarB=TimeCurrent();
}
if (s+TicketS==0 && b==0)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Ask + Stoploss * Point,Digits); else SL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Bid - Takeprofit * Point,Digits); else TP=0;
if (OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - Step * Point,Digits),slippage,SL,TP,"news",Magic,0,CLR_NONE)!=-1) TimeBarS=TimeCurrent();
}
if (TicketB!=0)
{
if (TimeBarB<TimeCurrent()-TimeModify && MathAbs(NormalizeDouble(Ask + Step * Point,Digits)-PriceB)/Point>StepTrall)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Bid - Stoploss * Point,Digits); else SL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Point,Digits); else TP=0;
if (OrderModify(TicketB,NormalizeDouble(Ask + Step * Point,Digits),SL,TP,0,CLR_NONE)) TimeBarB=TimeCurrent();
}
}
if (TicketS!=0)
{
if (TimeBarS<TimeCurrent()-TimeModify && MathAbs(NormalizeDouble(Bid - Step * Point,Digits)-PriceS)/Point>StepTrall)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Ask + Stoploss * Point,Digits); else SL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Bid - Takeprofit * Point,Digits); else TP=0;
if (OrderModify(TicketS,NormalizeDouble(Bid - Step * Point,Digits),SL,TP,0,CLR_NONE)) TimeBarS=TimeCurrent();
}
}
}
//--------------------------------------------------------------------
bool DeleteAll(int tip)
{
bool error=true;
int err,nn,OT,OMN;
while(true)
{
for (int j = OrdersTotal()-1; j >= 0; j--)
{
if (OrderSelect(j, SELECT_BY_POS))
{
OMN = OrderMagicNumber();
if (OrderSymbol() == Symbol() && Magic==OrderMagicNumber())
{
OT = OrderType();
if (OT>1 && (OT==tip || tip==-1)) OrderDelete(OrderTicket());
}
}
}
break;
}
return(1);
}
//-------------------------------------------------------------------
bool info()
{
DrawLABELinfo("infofon01",0,100,100,200,"Webdings",White,"g");
DrawLABELinfo("infofon02",0,100,280,200,"Webdings",White,"g");
DrawLABELinfo("infofon03",0,323,100,200,"Webdings",White,"g");
DrawLABELinfo("infofon04",0,323,280,200,"Webdings",White,"g");
int Y=110;
DrawLABELinfo("infos"+Y, 0,110,Y,16,"Arial",Red,"Демо версия советника!");Y+=30;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Black,"Возможна работа на демо счете или в тестере");Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Black,"Для работы на реале нужно ввести ключ (числовой код в поле Key)");Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Black,"Ключ привязан к определенному номеру торгового счета.");Y+=30;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Red,"Для получения бесплатного ключа Вы можете открыть счет в");Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Red,"дц InstaForex и зарегистрировать счет на rebate по ссылке:");Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Blue,"http://www.getforexrebate.com/ru/register.php?id=3021023");Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Red,"При этом Вы будете получать 1,5 $ с каждого лота себе на счет!,");Y+=30;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Red,"Или открыть счет в InstaForex с партнерским кодом BWAO");Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Red,"ссылка для открытия счета:");
DrawLABELinfo("infos1"+Y, 0,313,Y,11,"Arial",Blue,"http://instaforex.com/ru/?x=openaccaunt");Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Red,"При этом Вы сможете бесплатно получить ключи ко всем");Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Red,"советникам из ссылки:");
DrawLABELinfo("infos1"+Y, 0,270,Y,11,"Arial",Blue,"http://cmillion.ru/ru/_setki.php");Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Red,"Если у Вас другой брокер, то оплатите 50$ (1500руб)");
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Red,"Способы оплаты:");
DrawLABELinfo("infos1"+Y, 0,235,Y,11,"Arial",Blue,"http://cmillion.narod.ru/info5.html");Y+=30;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Black,"После этого отправьте номер Вашего торгового счета");
DrawLABELinfo("infos1"+Y, 0,482,Y,11,"Arial",Blue,AccountNumber());Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Black,"на почтовый ящик [email protected]");Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Black,"В письме укажите реквизиты оплаты или способ регистрации счета.");Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Black,"В ответном письме Вы получите ключ который Вы должны ввести");Y+=20;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Black,"в параметрах советника в поле KEY");Y+=30;
DrawLABELinfo("infos"+Y, 0,110,Y,11,"Arial",Red,"Открыть демо счет:");
DrawLABELinfo("infos1"+Y, 0,250,Y,11,"Arial",Blue,"http://instaforex.com/ru/?x=openaccaunt");
}
//--------------------------------------------------------------------
void DrawLABELinfo(string name, int CORNER, int X, int Y, int font_size, string font_name, color clr, string Name)
{
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_CORNER, CORNER);
ObjectSet(Name, OBJPROP_COLOR, clr);
ObjectSet(Name, OBJPROP_BACK, false);
ObjectSet(name, OBJPROP_XDISTANCE, X);
ObjectSet(name, OBJPROP_YDISTANCE, Y);
ObjectSetText(name,Name,font_size,font_name,clr);
}
//+------------------------------------------------------------------+
int remove_objects(string PreName)
{
for(int k=ObjectsTotal()-1; k>=0; k--)
{
string Obj_Name=ObjectName(k);
string Head=StringSubstr(Obj_Name,0,StringLen(PreName));

if (Head==PreName)
{
ObjectDelete(Obj_Name);
}
}
Comment("");
return(0);
}
//--------------------------------------------------------------------+
 

bvn

Новичок
Регистрация
17.06.2008
Сообщения
7,351
Реакции
2,723
Поинты
0.000
Гарэгин Диноян, отвечу на Ваш вопрос цитатой из сайта документации docs.mql4.com:

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
...
Параметры:
symbol - Наименование финансового инструмента, с которым проводится торговая операция.
cmd - Торговая операция. Может быть любым из значений торговых операций.
volume - Количество лотов.
price - Цена открытия.
slippage - Максимально допустимое отклонение цены для рыночных ордеров (ордеров на покупку или продажу).
stoploss - Цена закрытия позиции при достижении уровня убыточности (0 в случае отсутствия уровня убыточности).
takeprofit - Цена закрытия позиции при достижении уровня прибыльности (0 в случае отсутствия уровня прибыльности).
comment - Текст комментария ордера. Последняя часть комментария может быть изменена торговым сервером.
magic - Магическое число ордера. Может использоваться как определяемый пользователем идентификатор.
expiration - Срок истечения отложенного ордера.
arrow_color - Цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике.

В документации все есть и все достаточно доступно изложено, главное не лениться туда заглянуть.
 

Alex235

Профессионал
Регистрация
28.10.2011
Сообщения
1,075
Реакции
810
Поинты
0.000
Просто их убрать из кода совы, если он (код) открытый.
Бесполезно, если их убрать сов в коментах просто будет ставить своё название.
а где коменты в коде? например вот код:
Сторочки:
if (OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDoubl e(Bid - Step * Point,Digits),slippage,SL,TP,"news",Magic,0,CLR_NO NE)!=-1) TimeBarS=TimeCurrent();

и

if (OrderSend(Symbol(),OP_BUYSTOP,Lot,NormalizeDouble (Ask+Step * Point,Digits),slippage,SL,TP,"news",Magic,0,CLR_NO NE)!=-1) TimeBarB=TimeCurrent();

комментарий "news", если его совсем вырезать - сов не скомпелится, если оставить пустые кавычки "" - сов в коменты будет ставить своё название.

А какой смысл скрывать коменты? Если с целью, чтоб ДЦ не знал, что ордер открыт советником - то это бесполезно, достоверно известно, что в настройках торгового сервера есть чекбокс разрешать/запрещать торговлю советниками, т.е. он знает, открыта сделка руками или советником.

И в свете этого название темы звучит примерно как "Как стать бессмертным?"
 

bvn

Новичок
Регистрация
17.06.2008
Сообщения
7,351
Реакции
2,723
Поинты
0.000
Бесполезно, если их убрать сов в коментах просто будет ставить своё название.
Что за ерунду Вы пишете? Извиняюсь, что резко, но Вы вроде бы неплохо разбираетесь в этих вопросах, а пишете такое... странно.


комментарий "news", если его совсем вырезать - сов не скомпелится, если оставить пустые кавычки "" - сов в коменты будет ставить своё название.
Нет. Это не правда. Будет пустая строка. Правда, кавычки не пробовал, надо ставить NULL.
А какой смысл скрывать коменты? Если с целью, чтоб ДЦ не знал, что ордер открыт советником - то это бесполезно, достоверно известно, что в настройках торгового сервера есть чекбокс разрешать/запрещать торговлю советниками, т.е. он знает, открыта сделка руками или советником.
А вот с этим согласен. Очень сомнительно, чтобы эта информация была скрыта на сервере.
 

Alex235

Профессионал
Регистрация
28.10.2011
Сообщения
1,075
Реакции
810
Поинты
0.000
Что за ерунду Вы пишете? Извиняюсь, что резко, но Вы вроде бы неплохо разбираетесь в этих вопросах, а пишете такое... странно.
Ага, ерунду, как выяснилось. Сейчас попробовал на обычном илане - свои коменты не пишет. А ерунду я выдал не просто так - как то мучил по этому поводу одну сову с dll, в открытом коде у неё:
string expert="";
order.OrderSendNDD(n,MagicNumber,OP_BUY,lot,-1,StopLoss,TakeProfit,expert,0,CLR_NONE);
и она действительно в неуказанный комент ставит своё название, как её не обзавёшь. Ну я и грешным делом подумал что все совы так делают. Сейчас попробовал, ничего с последними билдами не изменилось, то же самое делает.
 

Вложения

  • Снимок.PNG
    Снимок.PNG
    29.2 KB · Просмотры: 205
  • Like
Реакции: bvn

bvn

Новичок
Регистрация
17.06.2008
Сообщения
7,351
Реакции
2,723
Поинты
0.000
Это, наверное, вообще МТ5, судя по написанию через точку... вызов метода? Я как-то до сих пор не вникал в MQL5 с его объектами, с тех пор как они изменили ситуацию с одерами/позициями я посчитал эту версию терминала мне не интересной :)

Хотя ООП-подход очень ждал, но одной ложкой дегтя... вобщем, это уже лирика и оффтоп...
 
Регистрация
10.04.2011
Сообщения
2,217
Реакции
1,182
Поинты
0.000
А какой смысл скрывать коменты? Если с целью, чтоб ДЦ не знал, что ордер открыт советником - то это бесполезно, достоверно известно, что в настройках торгового сервера есть чекбокс разрешать/запрещать торговлю советниками, т.е. он знает, открыта сделка руками или советником.
Чекбокс тут не причем. Он всего лишь разрешает/запрещает работу советника не более того. Это внутренняя настройка терминала. Советник можно заставить имитировать работу руками. Во-первых, для этого установить magic в ноль. Во-вторых, реже теребить торговый сервер командами.
 

bvn

Новичок
Регистрация
17.06.2008
Сообщения
7,351
Реакции
2,723
Поинты
0.000
Чекбокс тут не причем. Он всего лишь разрешает/запрещает работу советника не более того. Это внутренняя настройка терминала. Советник можно заставить имитировать работу руками. Во-первых, для этого установить magic в ноль. Во-вторых, реже теребить торговый сервер командами.

Вы считаете, что сервер удаленно управляет "скрытыми" настройками терминала, запрещая торговые функции? Или все же он их запрещает исполнять на своей стороне?

Я думаю, что второе. А если так, то значит он как-то должен различать ручные команды терминала от автоматических. Думаю, что именно это хотел сказать Alex235.
 
Регистрация
10.04.2011
Сообщения
2,217
Реакции
1,182
Поинты
0.000
Вы считаете, что сервер удаленно управляет "скрытыми" настройками терминала, запрещая торговые функции? Или все же он их запрещает исполнять на своей стороне?
Очевидно, Вы совсем меня не так поняли.
У нас есть торговый терминал, посредством которого мы передаем команды торговому серверу и получаем от него ответы. Подавать команды можно вручную, путем активации тех же кнопок в терминале и заполнения данных или автоматически путем выполнения определенной программы. И в том, и в другом случае терминал генерирует для торгового сервера аналогичную последовательность команд. Торговому серверу без разницы каким методом мы отдаем распоряжения. Он видит лишь саму команду и ее параметры. Так вот, если в OrderSend параметру magic присвоить ноль, то торговый сервер "будет думать", что мы открываемся вручную, потому что при открытии ордеров вручную мы не можем менять magic и он по умолчанию всегда 0. Если при этом мы не будем проявлять повышенную активность (обращение с командами к торговому серверу с интервалами, с которыми человек физически не может оперировать - повышенная активность на торговом счете), то сервер "точно" будет думать, что мы работаем вручную.
Вышеназванный чекбокс всего лишь запрещает передавать торговые функции от программы советника к терминалу. Это такие функции, как: OrderSend(), OrderClose, OrderCloseBy, OrderDelete и OrderModify.
Обратимся, к официальному хелпу:
Торговые функции могут быть вызваны только в том случае, если в свойствах соответствующего эксперта или скрипта включена галочка "Разрешить советнику торговать"
 
Последнее редактирование:

Alex235

Профессионал
Регистрация
28.10.2011
Сообщения
1,075
Реакции
810
Поинты
0.000
Так вот, если в OrderSend параметру magic присвоить ноль, то торговый сервер "будет думать", что мы открываемся вручную, потому что при открытии ордеров вручную мы не можем менять magic и он по умолчанию всегда 0.
Попробуйте открыть единственную сделку совой/скриптом с мейджиком 0 на счёте, на котором запрещена торговля советниками (бывают такие конкурсы) - Вам не удастся. Вывод - торговля совой определяется отнюдь не по мейджику.
Вышеназванный чекбокс всего лишь запрещает передавать торговые функции от программы советника к терминалу. Это такие функции, как: OrderSend(), OrderClose, OrderCloseBy, OrderDelete и OrderModify.
Обратимся, к официальному хелпу:
Мы говорим о разных чекбоксах: Вы о том, что в насторойках терминала, я о том, что в панеле управления торговым сервером.
 
  • Like
Реакции: bvn
Регистрация
10.04.2011
Сообщения
2,217
Реакции
1,182
Поинты
0.000
Попробуйте открыть единственную сделку совой/скриптом с мейджиком 0 на счёте, на котором запрещена торговля советниками (бывают такие конкурсы) - Вам не удастся. Вывод - торговля совой определяется отнюдь не по мейджику.
Ну, что же. Пришлось переговорить с представителем одного из сговорчивых брокеров.
В данном случае торговля советниками запрещается на уровне торгового сервера для определенного набора торговых счетов.
Как именно это происходит технически, информация не раскрывается разработчиками MT.
В простейшем случае, как мне пояснили, в админке МТ4 увидеть, что торгует советник можно, действительно, по параметру magic, если он отличен от 0.
Думаю, можно проанализировать логи по счету, которые пишутся в базу админки.
Однако и из логов этого не увидишь:
Я
..., забыл уточнить. А логи админки по счету отличаются от клиентских логов в терминале?
Или они равнозначны? За тем лишь исключением, что у вас пишутся в базу?

Б
да, но тут просто больше информации и немного по другому написаны. По сути это логи вашего терминала + служебная информация. Правда есть небольшой нюанс. Если у вас возникнут какие либо проблемы со связью то на сервере сделка уже может исполниться и лог этого будет. а до вашего терминала может не дойти ответ и соответственно в логе еще ничего не будет. Так же в логе сервера пишется все что происходит на счете. а в логе терминала пишется то что происходит на терминале. И если сработают стопы когда терминал будет выключен то у вас не будет этого лога

Б
а, еще точнее, срабатывание стопов вообще не отображается в терминале. а на сервере отображается, тоже самое и со стоп аутами

Я
а для конкретного счета у вас там есть вкладка "эксперты"? в смысле в логах...

Б
нет, такого нет. на сервере один лог - лог сервера. А то что отображается на вкладке эксперты это логи эксперта - и соответственно потому что эксперт работает на клиентском терминале, а не на сервере, самого его нет у нас и поэтому нет и его логов.

Я
т.е. по логам счета вы не можете определить, что работает эксперт?

Б
нет, не можем.

Я
Но тогда вопрос, как определяют другие брокеры? если magic 0

Б
для большего понимания могу пояснить немного. В логе сервера пишутся запросы с вашего терминала. Советник - это тоже самое, что если бы вы торговали вручную, только так называемый автомат. Единственно что можно понять, точнее "предположить" из логов что торгует советник это если запросы приходят очень часто. Например не один "нормальный" живой человек просто физически не сможет модифицировать или выставлять подряд ордера с интервалом в 1-2 секунды или даже меньше

Я
спасибо. я так и понял, что определяют по активности на счете.
Т.е. моя теория о мейджике и активности на счете, вроде, работает.
 
Последнее редактирование:
Сверху Снизу