Помощь в создании системы (реализация трейлинг стопа и ещё кое что) - страница 2

 
Исправил.. Но трейлинг всё равно не работает (Советник стоит на 2х валютах: USDCAD, CADJPY. Открыта 1 позиция SELL на CADJPY):

"2008.01.04 22:39:47 Lukyanov_ATv01 CADJPY,H1: Ошибка открытия ордера: 133
2008.01.04 22:39:47 Lukyanov_ATv01 CADJPY,H1: #18716160 2008.01.04 16:39 sell 1. 00 CADJPY 108.35 108.91 107.85 108.37 0.00 0.00 -18.47 Lukyanov AutoTrader SELL 0
2008.01.04 22:39:45 Lukyanov_ATv01 USDCAD,M15: Alert: Неправильные стопы. Пробуем ещё раз.
2008.01.04 22:39:45 Lukyanov_ATv01 USDCAD,M15: Alert: Модификация Sell 18716160. Ждём ответ. .
2008.01.04 22:39:39 Lukyanov_ATv01 CADJPY,H1: Ошибка открытия ордера: 133
2008.01.04 22:39:39 Lukyanov_ATv01 CADJPY,H1: #18716160 2008.01.04 16:39 sell 1. 00 CADJPY 108.35 108.91 107.85 108.35 0.00 0.00 0.00 Lukyanov AutoTrader SELL 0
2008.01.04 22:39:37 Lukyanov_ATv01 USDCAD,M15: Alert: Неправильные стопы. Пробуем ещё раз.
2008.01.04 22:39:37 Lukyanov_ATv01 USDCAD,M15: Alert: Модификация Sell 18716160. Ждём ответ. .
2008.01.04 22:39:37 Lukyanov_ATv01 CADJPY,H1: Ошибка открытия ордера: 133
2008.01.04 22:39:37 Lukyanov_ATv01 CADJPY,H1: #18716160 2008.01.04 16:39 sell 1. 00 CADJPY 108.35 108.91 107.85 108.38 0.00 0.00 -27.70 Lukyanov AutoTrader SELL 0
2008.01.04 22:39:36 Lukyanov_ATv01 USDCAD,M15: Alert: Неправильные стопы. Пробуем ещё раз.
2008.01.04 22:39:36 Lukyanov_ATv01 USDCAD,M15: Alert: Модификация Sell 18716160. Ждём ответ. .
"

Почему он береться модифицировать USDCAD, когда такого ордера вообще нет?
 
Lukyanov:
Исправил.. Но трейлинг всё равно не работает (Советник стоит на 2х валютах: USDCAD, CADJPY. Открыта 1 позиция SELL на CADJPY):
Почему он береться модифицировать USDCAD, когда такого ордера вообще нет?

Чудес не бывает.. Значит, в коде есть и другие ошибки.

Всё же, прежде чем вот прям сразу на форуме задавать вопросы, разберитесь в своём коде, поработайте. Если уж совсем невмоготу, то выкладывайте.

 
В том то и дело, что уже целый день сижу над ним и не могу понять, почему он лезет модифицировать ордер, который вообще не открыт. . Код трейлинг стопа взял из учебника..
 

Ну, а Вы разберитесь.

Целый день - это не срок:) Речь может идти о неделях или месяцах.

А вообще нужно выработать метод проверки. Например, хорошо работает поблочный метод. Делается это так. Нужно закомментировать весь код ниже какого-то блока, в работоспособности которого Вы уверены. В конце этого блока вписать функции Alert(), Print() или Comment(), а в качестве параметров указать в них переменные, значения которых могут влиять на дальнейшие вычисления. Убедиться в том, что всё "идёт как по маслу".

Потом освободить от комментариев следующий ближайший нижний блок и проделать то же с переменными, которые в нём вычисляются. И так последовательно можно дойти до того места, где вычисляется нечто странное. И тогда - повнимательней присмотреться к коду. Так Вы и найдёте ошибочку. Если привыкнуть так делать всегда, то дело продвигается значительно быстрее, чем если просто многократно исследовать код неутомимым взором.

И добрый совет: пишите код аккуратно, со строгим сдвигов блоков операторов, заключённых в {}, и в каждой строке справа - комментарий (а то через месяц Вы не сможете разобраться в собственном коде, это много раз проверено другими программистами).

 
щас подскажу чем могу.
1 Выбираем ордер.
2 Смотрим его стоп.
для buy
if(Bid-OrderOpenPrice()>трайлингстопа*Point) //ну понятно
     {
      if(Bid-OrderStopLoss()>трайлингстопа*Point) //
          {
           OrderModify(OrderTicket(),OrderOpenPrice(),Bid-трайлингстопа*Point,OrderTakeProfit)
ну для sella сам подумай
 
Bez:
щас подскажу чем могу.
1 Выбираем ордер.
2 Смотрим его стоп.
для buy
if(Bid-OrderOpenPrice()>трайлингстопа*Point) //ну понятно
     {
      if(Bid-OrderStopLoss()>трайлингстопа*Point) //
          {
           OrderModify(OrderTicket(),OrderOpenPrice(),Bid-трайлингстопа*Point,OrderTakeProfit)
ну для sella сам подумай



Но при таком раскладе врят ли те ДЦ даст работать - это так для тестера.
Чтобы на ДЦ нормально работал к примеру раз в один день ставил трейлинг если используешь период_D1, то тут немного осталось доделать. Есть много способов ставить трейлинг стопа.
 
Спасибо за советы! Реально очень помогли! Ушел копать код.   Ещё раз извиняюсь за столь глупые вопросы.
 
Bez:
Bez:
щас подскажу чем могу.
1 Выбираем ордер.
2 Смотрим его стоп.
для buy
if(Bid-OrderOpenPrice()>трайлингстопа*Point) //ну понятно
     {
      if(Bid-OrderStopLoss()>трайлингстопа*Point) //
          {
           OrderModify(OrderTicket(),OrderOpenPrice(),Bid-трайлингстопа*Point,OrderTakeProfit)
ну для sella сам подумай



Но при таком раскладе врят ли те ДЦ даст работать - это так для тестера.
Чтобы на ДЦ нормально работал к примеру раз в один день ставил трейлинг если используешь период_D1, то тут немного осталось доделать. Есть много способов ставить трейлинг стопа.

В смысле что ДЦ не поддерживает трейлинг стопы?
 
Lukyanov:
Bez:
Bez:
щас подскажу чем могу.
1 Выбираем ордер.
2 Смотрим его стоп.
для buy
if(Bid-OrderOpenPrice()>трайлингстопа*Point) //ну понятно
     {
      if(Bid-OrderStopLoss()>трайлингстопа*Point) //
          {
           OrderModify(OrderTicket(),OrderOpenPrice(),Bid-трайлингстопа*Point,OrderTakeProfit)
ну для sella сам подумай



Но при таком раскладе врят ли те ДЦ даст работать - это так для тестера.
Чтобы на ДЦ нормально работал к примеру раз в один день ставил трейлинг если используешь период_D1, то тут немного осталось доделать. Есть много способов ставить трейлинг стопа.

В смысле что ДЦ не поддерживает трейлинг стопы? 


Просто если данный код поставить, то при каждом увеличении цены на 1 pips будет изменяться трейлинг стоп на +1. Захламим сервер.
 
А если сделать так, то стоп будет меняться только через +3 пп. Я прав?
if(Bid-OrderOpenPrice()+3>трайлингстопа*Point)
Причина обращения: