вопрос о советнике

 

Привет всем, пытаюсь написать простой советник (будучи новичком). Советник компилируется без ошибок. Но когда запускаю его на 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()
}
//--------------------------------------------------------------------

 

Если у вас задано Symb=Symbol(), то вовсе не обязательно

аск и бид запрашивать через MarketInfo()

Просто задавайте в OrderSend текущие значения Ask и Bid и Point :

ticket=OrderSend(Symbol(),OP_BUY,3,Ask,3,stoploss,takeprofit);

Кроме того. Возможно в вашем терминале 5-ти значные котировки и стоплевел там более установленного вами значения (50+10)

 
alexaluf:

Привет всем, пытаюсь написать простой советник (будучи новичком). Советник компилируется без ошибок. Но когда запускаю его на MT4 терминале (на демо-счете) возникает ошибка 130. буду благодарен если подскажите в чем же ошибка программирования (если такая есть). код советника прилагаю:


Возможно Ваш брокер запрещает в момент открытия позы выставлять стопы и тейки - пропишите там нули в ф-ии открытия и слипаж в 10 раз увеличьте:

ticket=OrderSend(Symb,OP_BUY,3,ask,30,0,0);

попробуйте...