_SERG_
Активный участник
Здравствуйте ув. форумчане. Помогите разобраться.
вот простой код для открытия ордера и его модифицирования в последущем. т.е как только цена уходит от стоплосса более чем на 120 пунктов , стоп перемещается на 100 пунктов вниз.PHP:void OnTick() {//--- double Pr=Bid; if (OrdersTotal()<1) { double TP=Bid-TPr*Point; double SL=Bid+SLr*Point; int ticc=OrderSend(Symbol(),OP_SELL,0.01,Pr,3,SL,TP,"",0,0,CLR_NONE); if(ticc<0) Print("Ошибка открытия ордера: ",GetLastError()); } bool o=OrderSelect(ticc,SELECT_BY_TICKET); if ((OrderStopLoss()-Bid)>120*Point && OrdersTotal() ) { double TP1=Bid-TPr*Point; double SL1=Bid+100*Point; bool res=OrderModify(OrderTicket(),OrderOpenPrice(),SL1,TP1,0,Blue); if(!res) Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); else Print("Цена Stop Loss ордера успешно модифицирована."); } }
все это только начал писать, да по сути..почти с каждым тиком будет перемещать стоп, да и вообще это так..только начало...но это все потом доделаю. сейчас вопрос вот в чем...
выдает ошибку 'ticc' - undeclared identifier;
Но ведь она объявлена!!
Пробовал объявить переменную ticc в самом начале void OnTick(). ошибка исчезает.НО. программа срабатывает один раз! выставляет ордер , тут же его меняет и все...при следующем тике ticc уже равна 0 и бполее ордер не модифицируется. Почему так? Почему ticc превращается в 0!?
Попробуй так: static int ticc...., тогда на следующей котировке ticc будет иметь значение с предыдущего цикла расчёта, и про очистку ticc позаботься.