koliane555:
Добрый день, написал простейший скрипт открытия отложенного ордера на бай. Скрипт успешно работает на ДЕМО счете, а на реальном счете выдает ошибку: 133, что означает торговля запрещена. Подскажите, в чем проблема? Из-за чего может выскакивать эта ошибка?
Означает что ты сам ответил на свой вопрос. Выясни в тех.поддержке ДЦ что со счётом.
AlexeyVik:
Означает что ты сам ответил на свой вопрос. Выясни в тех.поддержке ДЦ что со счётом.
Означает что ты сам ответил на свой вопрос. Выясни в тех.поддержке ДЦ что со счётом.
Торговать вручную на реальном счете можно, впринципе скрипт выполняет те же действия, как если бы я это делал вручную(выставляет отоложенный ордер на покупку). В ДЦ не знают в чем проблема. Говорят торгуй без скриптов.
koliane555:
Торговать вручную на реальном счете можно, впринципе скрипт выполняет те же действия, как если бы я это делал вручную(выставляет отоложенный ордер на покупку). В ДЦ не знают в чем проблема. Говорят торгуй без скриптов.
Торговать вручную на реальном счете можно, впринципе скрипт выполняет те же действия, как если бы я это делал вручную(выставляет отоложенный ордер на покупку). В ДЦ не знают в чем проблема. Говорят торгуй без скриптов.
Вам же ответили! Так зачем же спрашивать по всем веткам?
NormalizeDouble для всех параметров с типом double в функции OrderSend.
вообще, я бы переписал так:
extern int orderSize = 50; extern int SL = 20; extern int TP = 20; int start() { /* double correctPoint = 0.0001; */ double priceOpen = iOpen (Symbol(), PERIOD_M5, 0); //записываем в переменную priceOpen цену открытия текущего пятиминутного бара double priceBuy = priceOpen + orderSize * Point; /*correctPoint;*/ //цена, на которую ставиться отложенный ордер double priceTP = priceBuy + TP * Point; double priceSL = priceBuy - SL * Point; if (!IsTradeAllowed()) return (0); int codeError = OrderSend (Symbol(), OP_BUYSTOP, 1.50, NormalizeDouble (priceBuy, Digits), 100, NormalizeDouble (priceSL, Digits), NormalizeDouble (priceTP, Digits)); if (codeError == -1) Alert ("Ошибка BuyStop: ", GetLastError()); return(0); }Потому что double correctPoint = 0.0001 не годится, например, для йеновых пар.
Значения
extern int SL = 20;
extern int TP = 20;
соответственно увеличил бы, т.к. 20 пунктов для 5-знака - легко может оказаться меньше спреда или значения MODE_STOPLEVEL.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день, написал простейший скрипт открытия отложенного ордера на бай. Скрипт успешно работает на ДЕМО счете, а на реальном счете выдает ошибку: 133, что означает торговля запрещена. Подскажите, в чем проблема? Из-за чего может выскакивать эта ошибка?
extern int orderSize = 50;
int start()extern int SL = 20;
extern int TP = 20;
{
double correctPoint = 0.0001;
double priceOpen = iOpen( Symbol(), PERIOD_M5, 0 ); //записываем в переменную priceOpen цену открытия текущего пятиминутного бара
double priceBuy = priceOpen + (double)orderSize * correctPoint; //цена, на которую ставиться отложенный ордер
double priceTP = priceBuy + (double)TP * correctPoint;
double priceSL = priceBuy - (double)SL * correctPoint;
while( !IsTradeAllowed() )
Sleep( 100 );
int codeError = OrderSend( Symbol(), OP_BUYSTOP, 1.5, priceBuy, 100, priceSL, priceTP );
if( codeError == -1 )
Alert ( "Ошибка BuyStop: ", GetLastError() );
return(0);
}//±