Если у вас задано Symb=Symbol(), то вовсе не обязательно
аск и бид запрашивать через MarketInfo()
Просто задавайте в OrderSend текущие значения Ask и Bid и Point :
ticket=OrderSend(Symbol(),OP_BUY,3,Ask,3,stoploss,takeprofit);
Кроме того. Возможно в вашем терминале 5-ти значные котировки и стоплевел там более установленного вами значения (50+10)
Привет всем, пытаюсь написать простой советник (будучи новичком). Советник компилируется без ошибок. Но когда запускаю его на MT4 терминале (на демо-счете) возникает ошибка 130. буду благодарен если подскажите в чем же ошибка программирования (если такая есть). код советника прилагаю:
Возможно Ваш брокер запрещает в момент открытия позы выставлять стопы и тейки - пропишите там нули в ф-ии открытия и слипаж в 10 раз увеличьте:
ticket=OrderSend(Symb,OP_BUY,3,ask,30,0,0);
попробуйте...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет всем, пытаюсь написать простой советник (будучи новичком). Советник компилируется без ошибок. Но когда запускаю его на MT4 терминале (на демо-счете) возникает ошибка 130. буду благодарен если подскажите в чем же ошибка программирования (если такая есть). код советника прилагаю:
#property copyright "J.J."
#property link "http://www.company.com"
int Count=0;
string Symb; // Глобальная перемен.
//--------------------------------------------------------------------
int init() // Спец. ф-ия init()
{
Alert ("Сработала ф-ия init() при запуске"); // Сообщение
return; // Выход из init()
}
//--------------------------------------------------------------------
int start() // Спец. ф-ия start()
{
int ticket,n1;
Symb=Symbol();
double bid =MarketInfo(Symb,MODE_BID); // Запрос значения Bid
double ask =MarketInfo(Symb,MODE_ASK); // Запрос значения Ask
double point =MarketInfo(Symb,MODE_POINT);//Запрос Point
int Min_Dist2=MarketInfo(Symb,MODE_STOPLEVEL);
bool ans;
n1=50;
if(n1<Min_Dist2)
{ n1=Min_Dist2+10; }
double stoploss=bid-n1*point;
double takeprofit=ask+n1*point;
ticket=OrderSend(Symb,OP_BUY,3,ask,3,stoploss,takeprofit);
Alert (GetLastError()); // Сообщение об ошибке
return;
}
//--------------------------------------------------------------------
int deinit() // Спец. ф-ия deinit()
{
Alert ("Сработала ф-ия deinit() при выгрузке"); // Сообщение
return; // Выход из deinit()
}
//--------------------------------------------------------------------