[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 779

 
ToLik_SRGV:

В функцию OrderSend переданы неправильные цены открытия/установки. При такой ошибке правильно выставлять ордера невозможно, значит советник по какой-то причине хочет поставить еще, и не может из за этой ошибки. Проверьте нормализованы ли цены установки отложенников, и точно ли все ордера на месте.

если не тежело глянь проф глазом там кроме этого более не чего нет

Файлы:
test_21_3.mq4  16 kb
 
FoxUA:

если не тежело глянь проф глазом там кроме этого более не чего нет

Распринтовка показала что ошибка возникает в блоке установки отложенных ордеров, вы пытаетесь поставить их по отрицательной цене.

 
ToLik_SRGV:

Распринтовка показала что ошибка возникает в блоке установки отложенных ордеров, вы пытаетесь поставить их по отрицательной цене.


гм а как это лечится, ну кроме ударов гоовой о стену ;) де я шо на плутал

 
ToLik_SRGV:

По идеи нет. Вот отрывок из учебника:

P.S.
Про Петьку, сто лет в обед, а до сих пор смешно :)))


"... а также заявленных цен стоп-приказов рыночных ордеров, которые находятся в зоне заморозки ..."

Так получается-то, что однако сиё влияет... и необходимо это учитывать - мне как раз требуется удалить заявленный уровень стоп-приказа на открытой позе... А если уже вошел в зону заморозки, то остаётся только ждать закрытия... либо отката...

Спасибо, дружище!!!

ЗЫ. А про Петьку - тут ситуация один в один... - я, говорит, ставлю 1.6 - работает, ставлю 1.8 - не работает... и даже 1.9 не помогает!!! Капец просто какой-то!!! Ужас... У-у-у!!!
А чё за цифры то??? Литры что-ль...

 
FoxUA:

гм а как это лечится, ну кроме ударов гоовой о стену ;) де я шо на плутал

Узнаю принты от Кимовских функций... Зайдите в его ветку - у него после каждой функции есть скрипт для её проверки. Нагляднее не будет...
 
artmedia70:
Узнаю принты от Кимовских функций... Зайдите в его ветку - у него после каждой функции есть скрипт для её проверки. Нагляднее не будет...


да это с его библиотеки которую мне тут дали, так вот это и есть те самые скрипты которые влажует поле постов . и ксате добаил вот так ноль реакции

{SetOrder(sy, OP_BUYLIMIT, Lot*3, NormalizeDouble(PrAskLim, Digits), PrAskLim-StopLoss*po, PrAskLim+TakeProfit*po,mn);
    SetOrder(sy, OP_BUYSTOP,  Lot,   NormalizeDouble(PrAskSt, Digits),  PrAskSt-StopLoss*po,  PrAskSt+TakeProfit*po,mn);
    SetOrder(sy, OP_SELLLIMIT,Lot*3, NormalizeDouble(PrBidLim, Digits), PrBidLim+StopLoss*po, PrBidLim-TakeProfit*po,mn);
    SetOrder(sy, OP_SELLSTOP, Lot,   NormalizeDouble(PrBidSt, Digits),  PrBidSt+StopLoss*po,  PrBidSt-TakeProfit*po,mn);
     } 
 
FoxUA:

гм а как это лечится, ну кроме ударов гоовой о стену ;) де я шо на плутал

Идем дальше.
Отрицательные числа, попадают в переменные из функций StopLossLastPos() и TakeProfitLastPos(). Там они появляются из за неудачного выполнения своей работы, то есть -1 это знак того что получить последнее значение стоплосса и тейкпрофита не удалось. У вас проверки успешности получение последних значений не производится поэтому -1 попадает в работу, как цена, далее от нее вы считаете значения для установки отложенников … и т. д.

В итоге снежный ком и море ошибок. Сейчас в тестере по наблюдаю еще за работой, отпишусь...


 
ToLik_SRGV:

Идем дальше.
Отрицательные числа, попадают в переменные из функций StopLossLastPos() и TakeProfitLastPos(). Там они появляются из за неудачного выполнения своей работы, то есть -1 это знак того что получить последнее значение стоплосса и тейкпрофита не удалось. У вас проверки успешности получение последних значений не производится поэтому -1 попадает в работу, как цена, далее от нее вы считаете значения для установки отложенников … и т. д.

В итоге снежный ком и море ошибок. Сейчас в тестере по наблюдаю еще за работой, отпишусь...




да аже интерено как это оно так

 
FoxUA:

да аже интерено как это оно так

Отписываюсь.
Ошибка в логике. Она у вас строится вокруг двух рыночных ордеров. Только вот нюанс, функция OrdersTotal() возвращает не общее количество открытых рыночных ордеров, а вообще всех которые в рынке, вместе с отложенниками которые установлены.
В итоге во время торгов, случается момент когда рыночных ордеров не остаются, в то время как отложенники продолжают висеть, то есть OrdersTotal()  возвращает больше 0, соответственно вашему блоку открытия рыночных ордеров if(total_order==0), они открыться не могут, а вот новые отложенники могут (в момент когда OrdersTotal() вернет 2), только так как рыночных ордеров нет то функции StopLossLastPos() и TakeProfitLastPos() возвращают -1, а условие открытия отложенников есть if(total_order==2), вот они и подхватывают -1 и используют его как цену.

 
ToLik_SRGV:

Отписываюсь.
Ошибка в логике. Она у вас строится вокруг двух рыночных ордеров. Только вот нюанс, функция OrdersTotal() возвращает не общее количество открытых рыночных ордеров, а вообще всех которые в рынке, вместе с отложенниками которые установлены.
В итоге во время торгов, случается момент когда рыночных ордеров не остаются, в то время как отложенники продолжают висеть, то есть OrdersTotal() возвращает больше 0, соответственно вашему блоку открытия рыночных ордеров if(total_order==0), они открыться не могут, а вот новые отложенники могут (в момент когда OrdersTotal() вернет 2), только так как рыночных ордеров нет то функции StopLossLastPos() и TakeProfitLastPos() возвращают -1, а условие открытия отложенников есть if(total_order==2), вот они и подхватывают -1 и используют его как цену.


все понял щя буду изменть спс большое
Причина обращения: