Если стоп - новый стоп (в б.у.) не равен ноль... то модифицируем... Если нет, то не модифицируем. Поэтому мне и не понятно как так происходит. Ведь я понимаю, что нужна проверка на равенство прошлого и нового стопа и я её сделал.
Вот смотрите, как я проверяю сверху и снизу при тралении без ошибок для бая:
borilunad: Я бы Вам посоветовал не по барам, по столько-то пипс. Если необходимо, то для этого и служат ресурсы. А ошибка "не ошибка" выскакивает, когда повторяется цена для модификации, которая уже есть. Поэтому нужно сделать пошагово, как уже Вам посоветовал вначале.
Б.У. есс-но по пипсам тянется. Я имел ввиду вообще вызов функции Б.У. осуществлять на каждом тике или на открытии бара например... Но это уже глупо. Т.к. за бар цена может проскачить много. Значит вызов будет как и был поулчается потиковый, так? Просто я думал, может условие какое добавить, чтоб не вызывался на каждом тике. Думаю сравнивать нужно СТОП теперешний и тот что планируется поставить, типа того...
В общем-то. Странно получается.
В start я добавил условие, вышло так:
if (priceBU != OrderStopLoss())
{
MovingStopLossToBU();
}
Теперь ошибок нет.
Но вот непонятно то, что в самой функции MovingStopLossToBU() модификация происходит только в случает если стоп не равен стопу по Б.У. Вот тут видно:
Б.У. есс-но по пипсам тянется. Я имел ввиду вообще вызов функции Б.У. осуществлять на каждом тике или на открытии бара например... Но это уже глупо. Т.к. за бар цена может проскачить много. Значит вызов будет как и был поулчается потиковый, так? Просто я думал, может условие какое добавить, чтоб не вызывался на каждом тике. Думаю сравнивать нужно СТОП теперешний и тот что планируется поставить, типа того...
В общем-то. Странно получается.
В start я добавил условие, вышло так:
Теперь ошибок нет.
Но вот непонятно то, что в самой функции MovingStopLossToBU() модификация происходит только в случает если стоп не равен стопу по Б.У. Вот тут видно:
Как это понять тогда?
В Вашем примере, когда стоп равен нулю, знвчит только что открыта позиция без стопа. А я Вам дал случай, когда уже в безубытке.
Смотрите выше, я же дал вам свой трал безошибочный! И могу функцию дать.
В Вашем примере, когда стоп равен нулю, знвчит только что открыта позиция без стопа. А я Вам дал случай, когда уже в безубытке.
Смотрите выше, я же дал вам свой трал безошибочный! И могу функцию дать.
Да нет, не без стопа. Я ж кусок выложил только. Вот функцию безубытка моя:
//+-------------------------------------------------------------------------------------+//| Перевод в б.у. рыночных ордеров |//+-------------------------------------------------------------------------------------+void MovingStopLossToBU()
{
double priceBU;
int type = OrderType();
for (int i=OrdersTotal() - 1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS)) continue;
if (i_magic != -1) if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderType() > 1) continue;
RefreshRates();
if (type == 0)
{
double price = Ask;
int li_cmd = 1;
}
else
{
price = Bid;
li_cmd = -1;
}
if (li_cmd * (price - OrderOpenPrice()) >= i_triggerForBU * pt)
{
priceBU = ND(OrderOpenPrice() + li_cmd * (i_preservedProfit * pt));
if (ND(OrderStopLoss() - priceBU * pt) != 0.0)
{
if (!OrderModify(OrderTicket(), OrderOpenPrice(), priceBU, OrderTakeProfit(), 0, CLR_NONE ))
{
Print ("Ошибка модификации ордера ", OrderType(), " - ", GetLastError());
}
Comment ("Ордер успешно переведён в безубыток");
Print ("Ордер успешно переведён в безубыток");
}
}
}
}
В строке ясно видно, что если стоп рассчитаный равен тому, который есть уже, то модификации не будет! Верно же? Значит проверка то изначально и была? Но пока в старте не вбил очередное условие перед функцией модификации ошибка 1 выскакивала постоянно:
if (priceBU != OrderStopLoss())
{
MovingStopLossToBU();
}
Вот почему.... это я и хочу понять. Вроде я всё описал досканально.
hoz: Тогда ты пришёл не по адресу, если не понимаешь. Изучай, что не понимаешь, спросишь.. А если ничего не понимаешь, то и не нужно тебе оно.
Ну тогда подскажи как отредактировать код что б не походил на взломанный ели ты всё понимаешь . я пришел на ветку для новичков. И в первый раз на форуме . а мне тут такой красивый ответ .
Ну тогда подскажи как отредактировать код что б не походил на взломанный ели ты всё понимаешь . я пришел на ветку для новичков. И в первый раз на форуме . а мне тут такой красивый ответ .
Если стоп - новый стоп (в б.у.) не равен ноль... то модифицируем... Если нет, то не модифицируем. Поэтому мне и не понятно как так происходит. Ведь я понимаю, что нужна проверка на равенство прошлого и нового стопа и я её сделал.Так у меня ж есть проверка на этот случай:
Вот смотрите, как я проверяю сверху и снизу при тралении без ошибок для бая:
Могу дать функцию ModifyOrder(), годится для всех модификаций ордеров и позиций.
Отредактируйте этот код, что бы не походил на взломанный
Как его Отредактировать ? как понимать ?
Я бы Вам посоветовал не по барам, по столько-то пипс. Если необходимо, то для этого и служат ресурсы. А ошибка "не ошибка" выскакивает, когда повторяется цена для модификации, которая уже есть. Поэтому нужно сделать пошагово, как уже Вам посоветовал вначале.
Б.У. есс-но по пипсам тянется. Я имел ввиду вообще вызов функции Б.У. осуществлять на каждом тике или на открытии бара например... Но это уже глупо. Т.к. за бар цена может проскачить много. Значит вызов будет как и был поулчается потиковый, так? Просто я думал, может условие какое добавить, чтоб не вызывался на каждом тике. Думаю сравнивать нужно СТОП теперешний и тот что планируется поставить, типа того...
В общем-то. Странно получается.
В start я добавил условие, вышло так:
if (priceBU != OrderStopLoss()) { MovingStopLossToBU(); }Теперь ошибок нет.
Но вот непонятно то, что в самой функции MovingStopLossToBU() модификация происходит только в случает если стоп не равен стопу по Б.У. Вот тут видно:
Как это понять тогда?Б.У. есс-но по пипсам тянется. Я имел ввиду вообще вызов функции Б.У. осуществлять на каждом тике или на открытии бара например... Но это уже глупо. Т.к. за бар цена может проскачить много. Значит вызов будет как и был поулчается потиковый, так? Просто я думал, может условие какое добавить, чтоб не вызывался на каждом тике. Думаю сравнивать нужно СТОП теперешний и тот что планируется поставить, типа того...
В общем-то. Странно получается.
В start я добавил условие, вышло так:
Теперь ошибок нет.
Но вот непонятно то, что в самой функции MovingStopLossToBU() модификация происходит только в случает если стоп не равен стопу по Б.У. Вот тут видно:
Как это понять тогда?В Вашем примере, когда стоп равен нулю, знвчит только что открыта позиция без стопа. А я Вам дал случай, когда уже в безубытке.
Смотрите выше, я же дал вам свой трал безошибочный! И могу функцию дать.
Я не понимаю
Как его Отредактировать ? как понимать ?
Смотрите выше, я же дал вам свой трал безошибочный! И могу функцию дать.
Я ж когда писал, не видел Вашего ответа. Щяс буду смотреть.
А в целом, буду рад увидеть Вашу функцию модификации, авось что-н. нового для себя почерпну.
В Вашем примере, когда стоп равен нулю, знвчит только что открыта позиция без стопа. А я Вам дал случай, когда уже в безубытке.
Смотрите выше, я же дал вам свой трал безошибочный! И могу функцию дать.
Да нет, не без стопа. Я ж кусок выложил только. Вот функцию безубытка моя:
В строке ясно видно, что если стоп рассчитаный равен тому, который есть уже, то модификации не будет! Верно же? Значит проверка то изначально и была? Но пока в старте не вбил очередное условие перед функцией модификации ошибка 1 выскакивала постоянно:
if (priceBU != OrderStopLoss()) { MovingStopLossToBU(); }Вот почему.... это я и хочу понять. Вроде я всё описал досканально.Тогда ты пришёл не по адресу, если не понимаешь. Изучай, что не понимаешь, спросишь.. А если ничего не понимаешь, то и не нужно тебе оно.
Ну тогда подскажи как отредактировать код что б не походил на взломанный ели ты всё понимаешь . я пришел на ветку для новичков. И в первый раз на форуме . а мне тут такой красивый ответ .
"У гениальных людей гениальный ответ "
Ну тогда подскажи как отредактировать код что б не походил на взломанный ели ты всё понимаешь . я пришел на ветку для новичков. И в первый раз на форуме . а мне тут такой красивый ответ .
"У гениальных людей гениальный ответ "
Для новичков в первую очередь: