Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 914

 
Top2n:

Спасибо большое. Все работает. Буду разбираться, что вы написали..
 
Top2n:

Есть еще предложения?

Подключаю к оффлайн графику скрипт, терминал виснет. Может можно монтировать код в робота, тогда что делать с #import "user32.dll"

Скрипт был как пример, никто и не говорил, что надо его на оффлайн график кидать. Его обычно запускают на обычном графике и указывают ТФ оффлайн графика в строке

 int whdl=WindowHandle (Symbol(), period_renko);  

И #import "user32.dll" не нужен, он вызывается в WinUser32.mqh

И вообще, есть  индикатор "6MTH_Renko_Chart_Builder_Indi_Ver_02.mq4", который умеет эмулировать тики на создаваемом графике Ренко. Он так и работает, индикатор запускают на обычном графике, потом открывают график Ренко, который обновляется в реальном времени.


 
evillive:

Скрипт был как пример, никто и не говорил, что надо его на оффлайн график кидать. Его обычно запускают на обычном графике и указывают ТФ оффлайн графика в строке

И #import "user32.dll" не нужен, он вызывается в WinUser32.mqh

И вообще, есть  индикатор "6MTH_Renko_Chart_Builder_Indi_Ver_02.mq4", который умеет эмулировать тики на создаваемом графике Ренко. Он так и работает, индикатор запускают на обычном графике, потом открывают график Ренко, который обновляется в реальном времени.


Благодарю Вас!)
 

Здравствуйте, подскажите как тут сделать?

Есть такой фрагмент кода, он работает. Это сигналы при подходе к торговым уровням. buy1_line - это уровень на графике, buy1 - расстояние цены в пунктах от соответствующего уровня. Дело в том что в коде есть возможность отключать не нужные уровни. В этом случае Значение уровня buy1_line (0.00000) а расстояние - отображается 6-ти значным числом, которое в принципе не имеет смысла. (уровень выключен, знать расстояние не нужно) Вопрос! Как обнулить расстояние до уровня - buy1, если соответствующий уровень выключен? (или в место этой цифры написать OFF ?)

string buy1_line=DoubleToStr(Price_Line,Digits);
string buy2_line=DoubleToStr(Price_Line2,Digits);
string buy1=     DoubleToStr((Price_Line-Bid)/Point,0);
string buy2=     DoubleToStr((Price_Line2-Bid)/Point,0);       

message=
 "buy_1 ("+buy1_line+"):"+(buy1>"0"?"+":"")+buy1+"   \n"+
 "buy_2 ("+buy2_line+"):"+(buy2>"0"?"+":"")+buy2+"   \n";

SendNotification(message);
 

Здравствуйте, подскажите пожалуйста, можно ли как-то получить тикет только что отосланного ордера? я отсылаю ордер 

ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0);

потом проверяю чтоб если ticket < 1, а теперь хотелось бы получить номер OrderTicket(), при этом не проходя вновь все открытые ордера, так как их может оказаться много, и ожидаю проблему если два почти одинаковых ордера с разными стопами высылать сразу. 

спасибо! 

 
danik:

Здравствуйте, подскажите пожалуйста, можно ли как-то получить тикет только что отосланного ордера? я отсылаю ордер 

ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0);

потом проверяю чтоб если ticket < 1, а теперь хотелось бы получить номер OrderTicket(), при этом не проходя вновь все открытые ордера, так как их может оказаться много, и ожидаю проблему если два почти одинаковых ордера с разными стопами высылать сразу. 

спасибо! 

А и не надо OrderSend(), чтобы узнать тикет уже открытого ордера, его надо выбрать с помощью OrderSelect().

В цикле шерстите все рыночные ордера, выбираете каждый и если совпадает тип, символ и магик, пишете тикет в массив.

Массив потом сортируете по возрастанию. Самое большое значение тикета - самый свежий ордер.

 
да, наверное так и придется. думал может есть какой-то прием или метод чтоб получить тикет только что посланного ордера. ну раз нету, придется по старинке, а жаль. спасибо!
 
danik:
да, наверное так и придется. думал может есть какой-то прием или метод чтоб получить тикет только что посланного ордера. ну раз нету, придется по старинке, а жаль. спасибо!

Только что открытый будет как вы и написали - ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0);

Но это при условии, что заявка была исполнена без ошибок, да и затирается такой тикет быстро. 

 
danik:

Здравствуйте, подскажите пожалуйста, можно ли как-то получить тикет только что отосланного ордера? я отсылаю ордер 

ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0);

потом проверяю чтоб если ticket < 1, а теперь хотелось бы получить номер OrderTicket(), при этом не проходя вновь все открытые ордера, так как их может оказаться много, и ожидаю проблему если два почти одинаковых ордера с разными стопами высылать сразу. 

спасибо! 

А чем тебе не нравится объявить ticket на уровне глобальных переменных?
 

проблема что тикетов этих больше одного. может 4, точно не знаю еще. поэтому создал класс, где будет номер тикета и другая информация, которую не хранит ордерселект. поэтому хотелось иметь доступ по тикету. но пока что в голову приходит только создавать обьекты класса и накидать в CarrayObj а потом доставать по индексу, сравнивать тикет и дальше анализировать.  а проблема почему спрашивал - что терялся из-за обработки ошибок. но с тем разобрался, спасибо, сам виноват в другом месте. Господа evillive AlexeyVik - спасибо за оперативные ответы!

  

 
Причина обращения: