В принципе это можно сделать в любом скрипте... добавив туда:
extern int MGiK=12345; // ... ticket=OrderSend(Sim,OP,Lots,cena,slipp,loss,profit,txt,MGiK,0,CLR_NONE);
Это не то. Это собственное имя файла, т.е. будет имя скрипта.
Поскольку решительного прорыва в автоторговле не достиг, приходится поправлять советника ручками. Для выставления вручную дополнительных ордеров хотелось бы использовать скрипт, который сам впишет в ордер магик советника, чтобы советник эти ордера подхватил. А для этого он должен узнать название советника, работающего на этом чарте, дальше дело техники. Усложнять советник глобальными переменными не хочется.
Вопрос: как скрипт может узнать имя советника, работающего на чарте?
Никак. Пусть эксперт создает надпись (LABEL) со своими именем (WindowExpertName( )) или сразу с магиком, а скрипт найдет эту надпись и получит имя эксперта или магик.
Если советник на символе один, и есть уже открытые или закрытые им ордера, то достаточно проверить их магики
Гы.., я с этого начал и был очень разочарован. Функция из новых, а возможности ее невелики.
Так и делаю, но ищу, как попроще передать в скрипт магик советника.
Вариант.
xrust_ писал(а) >> Если советник на символе один, и есть уже открытые или закрытые им ордера, то достаточно проверить их магики
Вариант. Но не соображу, нужен ли будет на символе еще советник. Пока не нужен. а там, кто его знает..
И еще, вдруг потребуется войти, когда нет открытых позиций, например, советник пропустил сделку?
vasilyt _писал(а) >> А непроще в советнике, в функции init() задать GlobalVariableSet = MAGIC. И потом скритом этот GV читать?
Ох, чую я, что этим все закончится... Хотелось красиво м универсально, а получится как всегда - коряво, но работает.
Большое спасибо всем за дельные советы!
А непроще в советнике, в функции init() задать GlobalVariableSet = MAGIC. И потом скритом этот GV читать?
Можно и так. Но с надписью наглядней - видно, что эксперт поддерживает совместную работу со скриптом для доливки, всего-т не упомнишь, создает какой-то советник глобальную переменную с магиком или нет.
...с надписью наглядней - видно, что эксперт поддерживает совместную работу со скриптом для доливки, всего-т не упомнишь, создает какой-то советник глобальную переменную с магиком или нет.
Убедил. Пробовал по всякому, но с графическим объектом нагляднее и безопасней. Кроме уже отмеченного, объект доступен только с конкретного графика, на котором стоит эксперт.
В советник вставляется несколько строк для создания объекта.
string _comment; string LabelPrefix ="ExpertLabel";//префикс имени графического объекта init() { _comment=WindowExpertName(); ExpertLabel(LabelPrefix+_comment,DoubleToStr(Magic,0),"Tahoma", 14, Red,1000,30); return(0); } deinit() { int obj_total=ObjectsTotal(); for(int i=obj_total+1;i>-1;i--){ string name=ObjectName(i); if(StringFind( name,LabelPrefix,0)>-1) ObjectDelete(name); } return(0); } int start() { ......... } //+----------------------------------------------------------------------------------------+ //| Void ExpertLabel вызов :ExpertLabel("Expert_21","Моя метка","Tahoma", 14, Gold,50,50); | //+----------------------------------------------------------------------------------------+ void ExpertLabel(string LabelName, string LabelText,string Font, int FontSize, color FontColor,int Xdist, int Ydist) { int err; int obj_total=ObjectsTotal(); string name; for(int i=obj_total+1;i>-1;i--){ name=ObjectName(i); if(StringFind( name,LabelPrefix,0)>-1) ObjectDelete(name); } if(!ObjectCreate(LabelName,OBJ_LABEL,0,0,0,0,0)) { err=GetLastError(); Print("error: can't create Label! code #",err); return; } else { ObjectSet(LabelName,OBJPROP_XDISTANCE,Xdist); ObjectSet(LabelName,OBJPROP_YDISTANCE,Ydist); ObjectSetText(LabelName,LabelText,FontSize,Font,FontColor); WindowRedraw(); } }
Сам скрипт сделан из скрипта Itso VisualOpenOrderWithMM. Удобная штука, я ей пользовался.
Код в прицепе. Все желающие могут безнаказанно попинать как код, так и автора. :))
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Поскольку решительного прорыва в автоторговле не достиг, приходится поправлять советника ручками. Для выставления вручную дополнительных ордеров хотелось бы использовать скрипт, который сам впишет в ордер магик советника, чтобы советник эти ордера подхватил. А для этого он должен узнать название советника, работающего на этом чарте, дальше дело техники. Усложнять советник глобальными переменными не хочется.
Вопрос: как скрипт может узнать имя советника, работающего на чарте?