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

 
gisip:

Вы уверены что надо так:

?

В справке указано иначе: https://book.mql4.com/ru/trading/ordersend

...

slippage - обычно это значение указывают в размере от 0 до 3 пунктов. Укажем значение 2;

...

Правда поставили 3, но не это главное. Нет такого чтобы было 3*Point.

Может в хелпе ошибка?


В хелпе ошибки нет.
 
Roman.:

В хелпе ошибки нет.

Вы точно торговали в 5 знаковой системе в демо режиме (не тестер) и у Вас работала функция OrderSend с установленными значениями SL и TP ?

 
gisip:

Вы уверены что надо так:

?

В справке указано иначе: https://book.mql4.com/ru/trading/ordersend

...

slippage - обычно это значение указывают в размере от 0 до 3 пунктов. Укажем значение 2;

...

Правда поставили 3, но не это главное. Нет такого чтобы было 3*Point.

Может в хелпе ошибка?

да-да, на автомате скопировал то что ниже и вставил без разбора.
 
gisip:

Вы точно торговали в 5 знаковой системе в демо режиме (не тестер) и у Вас работала функция OrderSend с установленными значениями SL и TP ?



ну, конечно, на а.....ях.
 
Roman.:

ну, конечно, на а.....ях.

Ладно, тогда сдаюсь.:(

 
gisip:

Ладно, тогда сдаюсь.:(


:))) Дык а че: здаюсь, не здаюсь. Возьми сам, да проверь. Все работает. :-)))

П.С. "Устроили тут ромашка, понимаешь - любит, не любит..." :-)))

 

Привет умным головам! Подскажите,при компиляции выдает ошибку "return value of 'OrderSend' should be checked" указывает вот на эту строку:

OrderSend(Symbol(), OP_BUY, lots, l_price_12, g_slippage_376, l_price_28, l_price_20, "2ss", MagicNumber, 0, Lime);

Полностью кусок кода вот:

li_36 = OrderExists(OP_BUY);

if (li_36 < MaxTrades && OrderSymbol() == Symbol()) {

if (li_36 == -1) {

Print("Сигнал на покупку, открываем ордер BUY #" + li_36 + "");

OrderSend(Symbol(), OP_BUY, lots, l_price_12, g_slippage_376, l_price_28, l_price_20, "2ss", MagicNumber, 0, Lime);

PrintError(343);

if (li_36 > MaxTrades && OrderSymbol() == Symbol()) return (-1);

}

}

Что делать светлые вы наши головушки?

 
nepekyn:

Привет умным головам! Подскажите,при компиляции выдает ошибку "return value of 'OrderSend' should be checked" указывает вот на эту строку:

OrderSend(Symbol(), OP_BUY, lots, l_price_12, g_slippage_376, l_price_28, l_price_20, "2ss", MagicNumber, 0, Lime);

Полностью кусок кода вот:

li_36 = OrderExists(OP_BUY);

if (li_36 < MaxTrades && OrderSymbol() == Symbol()) {

if (li_36 == -1) {

Print("Сигнал на покупку, открываем ордер BUY #" + li_36 + "");

OrderSend(Symbol(), OP_BUY, lots, l_price_12, g_slippage_376, l_price_28, l_price_20, "2ss", MagicNumber, 0, Lime);

PrintError(343);

if (li_36 > MaxTrades && OrderSymbol() == Symbol()) return (-1);

}

}

Что делать светлые вы наши головушки?

А воспользоваться переводчиком не позволяет религия???


И научись писать вопрос в одной теме.
 

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

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

 

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

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

TP=Bid+TakeProfit*Point;
вернет вполне корректное значение в независимости от брокера и торгового инструмента.

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

Вот код:

//+------------------------------------------------------------------+
//|                                                      Покупка.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
extern int TakeProfit=300;
extern int StopLoss=300;
double TP=Bid+TakeProfit*Point;

void OnStart()
   {int a; 
    Alert("Цена",Ask, ", ТР ", TP);                                  
         // Открытие BUY
    a = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, TP, "Покупка", 0, 0, clrGreen);
      
      if(a < 0)Print("Ошибка при открытии ордера по символу ",Symbol(),"   err = ",GetLastError());
   return;                                   // Выход из start()
  }
//+------------------------------------------------------------------+

 

 
Roman.:

В хелпе ошибки нет.

Выдержка из Доки:

   int      slippage,            // проскальзывание
   double   stoploss           // stop loss
   double   takeprofit,          // take profit
   string   comment=NULL       // комментарий
   int      magic=0            // идентификатор
   datetime expiration=0       // срок истечения ордера
   color    arrow_color=clrNONE  // цвет
   );

Параметры

symbol

[in]  Наименование финансового инструмента, с которым проводится торговая операция.

cmd

[in]  Торговая операция. Может быть любым из значений торговых операций.

volume

[in]  Количество лотов.

price

[in]  Цена открытия.

slippage

[in]  Максимально допустимое отклонение цены для рыночных ордеров (ордеров на покупку или продажу).

Надо в пунктах, и если в 5-знаке 30 не меньше и без Point'а!
Причина обращения: