Нужна помощь чтобы запрограмировать эксперта

 

Решил изучить програмированние под метатредер для начала решил реализовать простую задачку. Как мне сделать так чтобы при ценавом скачке допустим в пипсов 5-10 эксперт мой выдавал мне звуковой сигнал. Что то сидел сидел так и не смог разобраться. Уверен что это просто но вот что то ума не хватает. Может быть кто нибудь из профи сможет уделить пару минут и накидать мне такой код в эксперта, чтобы я его разобрал и понял как эти программы строяться. Спасибо.

 

[code]

extern int GapValue=5;//величина скачка в пунктах

int start(){

static int LastPrice;

if(NormalizeDouble(MathAbs(Bid-LastPrice),Digits)>=NormalizeDouble(Point*GapValue, Digits)){

PlaySound("Alert.wav")

}

LastPrice=Bid;

}

[/code]

Код не проверял, могут быть ошибки

 

Нэ понял!!!! А что с тегами code?

 

Привет.

Что то се равно не получаеться. Уменьшил GapValue=5 до 1 чтобы протестить. В MetaEditore прокомпилировал.Там надо было добавить точку с запятой после PlaySound("Alert.wav"). Потом в папке советники появилась прога перетаскиваю ее на график жду цена меняеть прога не сигналит. В чем причина не пойму. Хотя без ошибок все компилируеться. Я ее скомпишировал как советник пробовал как скрипт тоже что то не получаеться.

 

Оказываеться у меня в опциях были отключены советники. Вобщем включил Только что то прога на каждый скачок независимо от пройденого количество пипсов выдает сигнал. Мот там что подправить надо. Может ты мог бы у себя ее вставить протестить что там не так.

 

Кажеться прога заработала. Вот посмотри кое чего придумал. Правда наверное очень сложно это все на что я способен :-) По любому спасибо за помощь.

extern

double bid1, bid2;
string value;
int var1;

int start()
{

bid1=Bid;
value=DoubleToStr(MathAbs(Bid-bid2)*10000, 0);
var1=StrToInteger(value);
if (var1 >= 3)
{
PlaySound("alert.wav");
}
bid2=bid1;
}

 

Не следует использовать DoubleToStr, там где можно использовать NormalizeDouble

Следующий код проверил - работает.

Если кому-то не понравится, что я не использую специальные средсва для вставки MQL4 кода, то заранее отвечу - Я как любитель истинной свободы пользуюсь GPRS, и поэтому мне не фонтан заргружать всю эту дребедень только для того, чтобы вставить код, который можно и так прочитать.

//+------------------------------------------------------------------+
//| 1.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
extern int GapValue=1;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----

static double LastPrice;

if(NormalizeDouble(MathAbs(Bid-LastPrice),Digits)>=NormalizeDouble(Point*GapValue, Digits)){

PlaySound("Alert.wav");
Alert(NormalizeDouble(MathAbs(Bid-LastPrice),Digits)," ",NormalizeDouble(Point*GapValue, Digits)," ",GapValue);
}

LastPrice=Bid;




//----
return(0);
}
//+------------------------------------------------------------------+

 
>> не фонтан заргружать всю эту дребедень только для того, чтобы вставить код, который можно и так прочитать

Дело в том, что все скрипты редактора кешируются не требуют постоянной подгрузки. То есть, никаких накладных расходов на вызов окна вставки кода не будет (кроме первого раза). А вот все остальные пользователи оценят ваш хороший отформатированный и расцвеченный код.
 

>>Не следует использовать DoubleToStr, там где можно использовать NormalizeDouble

Возможно ты и прав. Щас попробую разобраться в этой проге тоже, чтобы более освоить методику программирования.

Спасибо за помощь, без тебя я бы наверное не смог написать такого эксперта, при этом я более детально стал понимать струкруту программы и как они работают. Буду щас усложнять задачу и пытаться реализовать. Если не получиться если ты не против снова обращусь к тебе. Спасибо еще раз за помощь.

 

Вот у меня по ходу дела возникла еще такая идея можно ли к имеющемуся коду, дописать код, чтобы при открытии ордера например в ручную эксперт расчитывал цену при которой открылась и автоматом выставлял сразу же ордер на SL + 20 пипсов от цены открытия. Чтобы не приходилось его руками открывать. То есть получаеться, что как только я совершаю сделку эксперт сразу же автоматом проставляет стоплос и я вижу эту красную линию стоплоса оновременно с линией входа в рынок?

 
Roby , как там в анекдоте про писсуар "НЕ обманывай себя - подойди поближе" :)
(все можно, только не сразу)