static int m=0;
xrust:
ok Спасибо!
сейчас попробую ....
xrust:
Спасибо! Работает! Сам бы я вряд ли догадался...
просто подумайте - почитайте справку внимательно, о том как функционируют советники и прочее - на каждом тике ваша переменная обнуляется если она обьявлена внутри "старта", поэтому либо ее обьявлять в глобальной области. либо статической.
спасибо! ваш совет очень мне помог.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я написал простой советник, в котором позиции открываются и закрываются при пересечении 24EMA. Потом планировал модифицировать ордер спустя час(спустя 1 период) после пересечения 24EMA. При этом модифицировать только ОДИН раз. Написал так:
if (m==0 && BuyTicket > 0 && Close[2]>My_24EMA2 && Close[3]<My_24EMA2)
{
OrderSelect(BuyTicket,SELECT_BY_TICKET);
BuyStopLoss = OrderStopLoss()+10*Point;
BuyTakeProfit = OrderTakeProfit();
OrderModify(BuyTicket,OrderOpenPrice(),BuyStopLoss,BuyTakeProfit,0,Blue);
m=1;
}
Переменной m присваивается значение 0 при открытии позиции, а после модификации m равна 1. Вначале всё идёт по плану - после открытия ордера 1 период ничего не происходит. А потом - со второго периода - модификация ордера ПОСТОЯННО повторятся, хотя m уже не равно нулю. Вот теперь ломаю голову.
Если кто-нибудь видит ошибку, пожалуйста, подскажите.