Всем привет. Целый день бьюсь над функцией о переносе лося в без убыток после достижения уровня в 20 п. зафиксировать его выше входа в сделку на 5 п. Но что то не хочет она работать. Подскажите что не так буду очень признателен.
Файлы:
d_2.mq4
3 kb
- Перенос в безубыток несколько позиций
- Нужен советник работающий по фракталам.
- Советник перестал открывать сделки
лося в Б/У не перенесу, а стоп-лосс - пожалуйста (последний горячий пост https://forum.mql4.com/ru/46268/page3)
dimarik0000:
Всем привет. Целый день бьюсь над функцией о переносе лося в без убыток после достижения уровня в 20 п. зафиксировать его выше входа в сделку на 5 п. Но что то не хочет она работать. Подскажите что не так буду очень признателен.
Всем привет. Целый день бьюсь над функцией о переносе лося в без убыток после достижения уровня в 20 п. зафиксировать его выше входа в сделку на 5 п. Но что то не хочет она работать. Подскажите что не так буду очень признателен.
Смотря на Ваш код, смею предположить, что Вы воопче не заморачиваетесь с пониманием значимости структуры кода - каждая строчка что-то ВЫПОЛНЯЕТ - ЗАЧЕМ лепить лишний код???
// функция учёта ордеров для модификации for (int i = OrdersTotal() - 1; i >= 0; i--) { if (!OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue; //------------------------------------------------------------------------------------------------------------------------------- if (OrderSymbol() != Symbol()) continue; if (Magic != -1) if (OrderMagicNumber() != Magic) continue; if (OrderType() > 1) continue; RefreshRates(); if (OrderType() == OP_BUY) {double Price = Bid; int li_cmd = 1;} else {li_cmd = -1; Price = Ask;} // функция модификации ордера в безубыток if (li_cmd * (Price - OrderOpenPrice()) >= Point * SignalProfit) { Tral = NormalizeDouble (OrderOpenPrice() + li_cmd * (Point * PreservedProfit), Digits); if (NormalizeDouble (OrderStopLoss() - Tral, Digits) != 0.0) { if (!OrderModify (OrderTicket(), OrderOpenPrice(), Tral, OrderTakeProfit(), 0, CLR_NONE)) {Print ("Ошибка модификации ордера ", OrderType(), " - ", GetLastError());} } } }
YOUNGA:
В этой оговорке есть глубокий смысл, даже несколько,, я не шучу.
dimarik0000:
Всем привет. Целый день бьюсь над функцией о переносе лося в без убыток после достижения уровня в 20 п. зафиксировать его выше входа в сделку на 5 п. Но что то не хочет она работать. Подскажите что не так буду очень признателен.
Всем привет. Целый день бьюсь над функцией о переносе лося в без убыток после достижения уровня в 20 п. зафиксировать его выше входа в сделку на 5 п. Но что то не хочет она работать. Подскажите что не так буду очень признателен.
//+------------------------------------------------------------------+ //| set_outloss() установка SL на уровень безубытка //+------------------------------------------------------------------+ void set_outloss() { string _Function = "set_outloss():"; //----------------- double _SL; int _Сommision_Pip, _Dist_OutLoss, _Profit_for_OutLoss; //----------------- if(!SET_OUTLOSS) return; for(int _i=OrdersTotal()-1; _i>=0; _i--) { OrderSelect(_i, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol() == Symbol() && check_magic(OrderMagicNumber(),_Function)){ //---- проверка корректности уровней outloss с учётом комиссии ------- _Dist_OutLoss = check_dist_outloss(OrderTicket()); _Profit_for_OutLoss = check_profit_for_outloss(_Dist_OutLoss); //-------------------------------------------------------------------- if(OrderType() == OP_BUY){ //---- проверка внешних сигналов управляющих OutLoss ----------------- if(GlobalVariableGet(GV_Ignore_Tral_SL_BUY) == YES)continue; //-------------------------------------------------------------------- if(OrderStopLoss() < OrderOpenPrice()){ // в том числе если OrderStopLoss == 0 if(Ask - OrderOpenPrice() >= _Profit_for_OutLoss*Point) { _SL = NormalizeDouble(OrderOpenPrice() + _Dist_OutLoss*Point,Digits); if(OrderModify(OrderTicket(),OrderOpenPrice(),_SL,OrderTakeProfit(),0,CLR_NONE)){ int _Dist = (Ask - OrderOpenPrice())/Point; output_mov_string("SL OP_BUY "+OrderTicket()+" в безубытке. Дист.установки= " + _Dist, Clr_Report); output_sound(Name_Sound_OutLoss); } } } } if(OrderType() == OP_SELL){ //---- проверка внешних сигналов управляющих OutLoss ----------------- if(GlobalVariableGet(GV_Ignore_Set_Outloss_SELL) == YES)continue; //-------------------------------------------------------------------- if(OrderStopLoss() > OrderOpenPrice() || OrderStopLoss() == 0) { if(OrderOpenPrice() - Bid >= _Profit_for_OutLoss*Point){ _SL = NormalizeDouble(OrderOpenPrice() - _Dist_OutLoss*Point,Digits); if(OrderModify(OrderTicket(),OrderOpenPrice(),_SL,OrderTakeProfit(),0,CLR_NONE)){ _Dist = (OrderOpenPrice() - Bid)/Point; output_mov_string("SL OP_SELL "+OrderTicket()+" в безубытке. Дист.установки= " + _Dist, Clr_Report); output_sound(Name_Sound_OutLoss); } } } } } } //----------------- return; } //+------------------------------------------------------------------+ //+-------
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь