Всем привет, пишу как бы виртуальный трейлинг, но возникла проблема.. Всё работает на покупку, а вот на продажу не хочет. Не пойму в чем дело((
на покупку все работает, а вот на продажу значение Tralls при равно 0
Хотя тут TrallSS равно цене к примеру 1.14555
Если (TrallS = 1.14600 > TrallSS = 1.14555) то TrallS = TrallSS значит TrallS уже равен 1.14555
Условия для покупки работает без проблем.. с продажей я где-то допустил ошибку) помогите исправить) Спасибо!!!
с уважением.
P.S. если работает на бай, можно сделать очень просто.копируем то что работает, зеркалим(меняем все переменные на переменные для селл ордеров, меняем все проверки и условия на проверки соответствующие селл ордерам) код для селл ордеров, смотрим как работает.
почему вы решили что не работает? потому что линия не там на графике стоит?
с уважением.
P.S. если работает на бай, можно сделать очень просто.копируем то что работает, зеркалим(меняем все переменные на переменные для селл ордеров, меняем все проверки и условия на проверки соответствующие селл ордерам) код для селл ордеров, смотрим как работает.
я поменял все переменные, зеркально, линия появляется на значении 0) хотя нужно на 1,14555
я поменял все переменные, зеркально, линия появляется на значении 0) хотя нужно на 1,14555
с уважением.
P.S. меня не интересует что вы делали раньше, так как у вас ошибка и вы ее скинули сюда.
сейчас поменяйте, и сделайте как я сказал, выложите код что у вас получился.
с уважением.
P.S. меня не интересует что вы делали раньше, так как у вас ошибка и вы ее скинули сюда.
//+-----------------------TrailingStop---------------------------------+ for( int l = OrdersTotal()-1; l >=0 ; l-- ) //перебор всех открытых торговых позиций { if (OrderSelect(l, SELECT_BY_POS ) == true) {if(OrderSymbol()==Symbol() && (MagicS!=0 && OrderMagicNumber()==MagicS) && OrderType()==1) {if(OrderType()==OP_SELL) TrallB =NormalizeDouble(OrderOpenPrice() + VSL*Point,Digits); if (TrallB>TrallBS) TrallB=TrallBS; DrawHline("SLs Sell",TrallBS,clrBlue,1); if (Ask>=TrallBS) bool cls = OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),slippage,clrRed); if((Bid+Point*(TrailingStop+VSL) < TrallB)) {double ordsl = NormalizeDouble(TrallB - (TrailingStep*Point),Digits); if (ordsl!=TrallBS) TrallBS = ordsl; Print ("TrailingStop for BUY"," - ",OrderOpenPrice(),"-->" ,ordsl);}}}} //+-----------------------TrailingStop---------------------------------+ for( int l = OrdersTotal()-1; l >=0 ; l-- ) //перебор всех открытых торговых позиций { if (OrderSelect(l, SELECT_BY_POS ) == true) {if(OrderSymbol()==Symbol() && (MagicB!=0 && OrderMagicNumber()==MagicB) && OrderType()==0) {if(OrderType()==OP_BUY) TrallS =NormalizeDouble(OrderOpenPrice() - VSL*Point,Digits); if (TrallS<TrallSS) TrallS=TrallSS; DrawHline("SLs Sell",TrallSS,clrRed,1); if((Ask-Point*(TrailingStop+VSL) > TrallS)) { double ordsl = NormalizeDouble(TrallS + (TrailingStep*Point),Digits); if (ordsl!=TrallSS) TrallSS=ordsl; Print ("TrailingStop for SELL"," - ",OrderOpenPrice(),"-->" ,ordsl);}}}}
Менял 1000 раз, что-то не то! Я когда убираю условие if (TrallB>TrallBS) TrallB=TrallBS; линия появляеться.. но уже по цене 1,14600
Менял 1000 раз, что-то не то! Я когда убираю условие if (TrallB>TrallBS) TrallB=TrallBS; линия появляеться.. но уже по цене 1,14600
с уважением.
проверьте этот код в работе.
с уважением.
...Не пойму в чем дело((
Не мудрено. Отформатируйте код, под for и под if пишите с фигурными скобками, даже если одна строка кода. Все вложенные if пишите с отступом. Тогlа будет и видно и думаться будет.
Проверил, тут TrallSS =0 почему-то... Хотя в покупку TrallBS не равен 0, а цене заданной ordsl
например внести такую строчку кода
TrallB =NormalizeDouble(OrderOpenPrice() + VSL*Point,Digits); //вносим сюда if (TrallBS==0)TrallBS=TrallB; //----------------- if (TrallB>TrallBS) TrallB=TrallBS; DrawHline("SLs Sell",TrallBS,clrBlue,1);
с уважением.
потому что изначально вы не задаете это значение в коде, для селл необходимо его задавать так как вы проверяете движение вниз а не вверх. для бай движение трала идет вверх и он считает стоп выше 0 потому и работает.
например внести такую строчку кода
с уважением.
Спасибо БОЛЬШОЕ!!!
с Ув.Айбек
Спасибо БОЛЬШОЕ!!!
с Ув.Айбек
с уважением.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет, пишу как бы виртуальный трейлинг, но возникла проблема.. Всё работает на покупку, а вот на продажу не хочет. Не пойму в чем дело((
на покупку все работает, а вот на продажу значение Tralls при равно 0
if (TrallS>TrallSS) TrallS=TrallSS;
Хотя тут TrallSS равно цене к примеру 1.14555
Если (TrallS = 1.14600 > TrallSS = 1.14555) то TrallS = TrallSS значит TrallS уже равен 1.14555
Условия для покупки работает без проблем.. с продажей я где-то допустил ошибку) помогите исправить) Спасибо!!!