OrderSend ошибка 130 - страница 4

 
Gobsek:

Я еще ничего не умею, и здесь я совсем запутался. И так все по порядку.
Решил научиться программировать на MQL4. Первый перл, который решил сваять скрипт на покупку с фиксированными TP и SL. Казалось, что проще?.. Выдает Ошибку 130 (Неправильные стопы). 

Полазил, знатоки пишут есть брокеры (ДЦ), которые не дают ставить тейки и стопы одновременно с открытием ордера. Хорошо! Поставил нули. Ордер открылся, но соответственно без стопа и тейка.

 

В связи с этим вопрос №1. Когда открываю ордер вручную, я сразу назначаю и тейк и стоп, и ордер открывается. Значит брокер позволяет ставить тейки и стопы сразу. Почему в скрипте это не работает. Кстати брокер 5-значный.

И вопрос №2. Зачем проводить проверку 5-значный брокер или 4-значный, если В переменной Point хранится размер пункта текущего инструмента в валюте котировки. Насколько я понимаю  строчка 

вернет вполне корректное значение в независимости от брокера и торгового инструмента.

Если вопросы глупые не судите строго, но посмеяться можно)))

Вот код:

Смотрите в своём коде!

Смените Bid на Ask!  

Не double TP=Bid+TakeProfit*Point;

а double TP=Ask+TakeProfit*Point;  

 
Gobsek:

Я еще ничего не умею, и здесь я совсем запутался. И так все по порядку.
Решил научиться программировать на MQL4. Первый перл, который решил сваять скрипт на покупку с фиксированными TP и SL. Казалось, что проще?.. Выдает Ошибку 130 (Неправильные стопы). 

Полазил, знатоки пишут есть брокеры (ДЦ), которые не дают ставить тейки и стопы одновременно с открытием ордера. Хорошо! Поставил нули. Ордер открылся, но соответственно без стопа и тейка.

 

В связи с этим вопрос №1. Когда открываю ордер вручную, я сразу назначаю и тейк и стоп, и ордер открывается. Значит брокер позволяет ставить тейки и стопы сразу. Почему в скрипте это не работает. Кстати брокер 5-значный.

И вопрос №2. Зачем проводить проверку 5-значный брокер или 4-значный, если В переменной Point хранится размер пункта текущего инструмента в валюте котировки. Насколько я понимаю  строчка 

вернет вполне корректное значение в независимости от брокера и торгового инструмента.

Если вопросы глупые не судите строго, но посмеяться можно)))

Вот код:

1. Это совсем ничего не значит. Сервер брокера отличает команду советника или скрипта от ручной команды. Чуть выше вопроса, ты сам себе ответил на свой вопрос. Только не брокеры не дают, а тип счёта не позволяет.

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

 
AlexeyVik:

1. Это совсем ничего не значит. Сервер брокера отличает команду советника или скрипта от ручной команды. Чуть выше вопроса, ты сам себе ответил на свой вопрос. Только не брокеры не дают, а тип счёта не позволяет.

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

1.   Все таки различает! А я где то прочитал,что брокер не видит от кого пришел ордер (от робота или человека). Я так и подумал когда столкнулся с ошибкой 130. Но хотелось услышать подтверждения от знающих людей. Спасибо! А вот про тип счета я не совсем понял. Если не трудно, можно поподробнее, или ссылку полезную. Буду очень признателен. 

2.    Я знаю, что такое пункт. Я тут про другое. Переменная  Point для пары EURUSD у 5-значного брокера равна 0,00001, у 4-значного равна 0,0001. У USDJPY соответственно на 2 нуля меньше. И я не понимаю зачем проводить проверку какой брокер 5-значный или 4-значный. Или Вы имеете ввиду, что бы для конечного пользователя было понятно, чтоб он менял параметры в глобальных переменных. Так сейчас практически во всех программах имеется оговорки на эту тему

 

borilunad:

 Смените Bid на Ask!  

Согласен с Вами! Для покупки это будет корректнее.
 
Gobsek:

1.   Все таки различает! А я где то прочитал,что брокер не видит от кого пришел ордер (от робота или человека). Я так и подумал когда столкнулся с ошибкой 130. Но хотелось услышать подтверждения от знающих людей. Спасибо! А вот про тип счета я не совсем понял. Если не трудно, можно поподробнее, или ссылку полезную. Буду очень признателен. 

2.    Я знаю, что такое пункт. Я тут про другое. Переменная  Point для пары EURUSD у 5-значного брокера равна 0,00001, у 4-значного равна 0,0001. У USDJPY соответственно на 2 нуля меньше. И я не понимаю зачем проводить проверку какой брокер 5-значный или 4-значный. Или Вы имеете ввиду, что бы для конечного пользователя было понятно, чтоб он менял параметры в глобальных переменных. Так сейчас практически во всех программах имеется оговорки на эту тему

Тогда огласи список знающих. Или наоборот, огласи список кому не стоит совать свой нос в твои вопросы.
 
AlexeyVik:
Тогда огласи список знающих. Или наоборот, огласи список кому не стоит совать свой нос в твои вопросы.
Знающих - это я про Вас. И огромное СПАСИБО, что отвечаете и помогаете таким как я.
 
Gobsek:
Знающих - это я про Вас. И огромное СПАСИБО, что отвечаете и помогаете таким как я.

Аааа... То-есть я не правильно понял. Надо по этому вопросу собрать консилиум, так сказать...

Ну, что касается типов счетов, вся эта информация есть на сайтах ДЦ, я не буду переписывать оттуда.

Относительно значности котировок... Пятый знак это десятая доля пункта и чтобы не напрягаться и не менять в советниках размер ТП и  СЛ а писать одинаково для любых котировок и ставят такую проверку. Т.е. если я хочу поставить ТП на уровне 20п то мне не надо уточнять какие котировки у ДЦ и если 5-ти значные то менять 20 на 200 это за меня сделает советник при инициализации и в переменную глобального уровня занесёт значение Point()*10 которая будет использоваться дальше в коде. Ладно-бы если только в двух местах поменять, а ведь встречаются стратегии где достаточно много расчётов в пунктах.

 
AlexeyVik:

... а писать одинаково для любых котировок и ставят такую проверку. Т.е. если я хочу поставить ТП на уровне 20п то мне не надо уточнять какие котировки у ДЦ и если 5-ти значные то менять 20 на 200 ...

Все чЁтко встало у меня в мозгу! Если я вставлю проверку, то мне даже знать не надо сколько знаков после запятой у брокера. Программа сама все пересчитает. Удобно! Классно! Спасибо! 

А насчет консилиума - это Вы напрасно... Не наш размерчик... СЪЕЗД !!!! ))) 

 

Ну тогда вот так проверку делаю я

double   point;

/*******************Expert initialization function*******************/
int OnInit()
{
   point = Digits % 2 == 0  // Если остаток от деления Digits на 2 равен 0 т.е. после запятой 4 или 2 знака
    ? _Point                // переменная point будет равна _Point или Point()
     : _Point * 10;         // иначе ...
}/*******************************************************************/
 
AlexeyVik:

Ну тогда вот так проверку делаю я


Напрягли!!! В хорошем смысле этого слова. Весь вечер искал, что значит ?: Догадывался, что это условное выражение типа if - else, но никак не мог найти описание. Хотел уже взвыть о помощи. Но на утро на свежую голову все очень быстро нашлось. 

Если можно, еще маленькое объяснение, мне - дураку. Функция int OnInit() запускается при инициализации эксперта или индикатора. Значит для скрипта (как в моем случае) она не подходит? Я всю проверку ставлю в начале OnStart() и при расчетах TP и SL пользуюсь уже не  _Point, а point

Причина обращения: