Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нет времени торговать самому? Подпишись на сигнал!
Алексей
5
Алексей 2010.10.14 14:31 

Здравствуйте!

Помогите сделать простой трейлинг стоп, бъюсь 6 дней, по 8 часов в день!! Как головой об стену...

Пример трейлинга взят из хелпа! Но он Неработает:(((

вылетает либо ошибка 4108

2010.10.14 14:38:43 2003.06.04 08:07 MA_CCI_ATR EURUSD,Daily: unknown ticket 4 for OrderModify function
либо 4051

2010.10.14 16:08:50 2000.10.26 08:50 MA_CCI_ATR EURUSD,Daily: invalid ticket for OrderModify function,

Путем перестановки скобок и добавления лишнего return(0), можно добится теста без ошибок, но стоп все равно не переносится:(

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

Сервер Alpari, билд 226.

Код программы

// Пользовательские переменные
extern double Lots = 0.1;
extern int Period_CCI=12;
extern int Period_ATR=20;
extern int MA_Period=55;
extern int KoeSL = 5;
extern int KoeTP = 5;
extern int KoeTrStop = 2;
extern int Transactions = 1;


int start()
{
// Тип переменных
double CCI0, CCI1, ATR0, Ma1;
int ticket, total;

// Определение переменных
CCI0=iCCI(NULL,0,Period_CCI,PRICE_TYPICAL,0);
CCI1=iCCI(NULL,0,Period_CCI,PRICE_TYPICAL,1);
ATR0=iATR(NULL,0,Period_ATR,0);
Ma1=iMA(NULL,0,MA_Period,0,MODE_SMMA,PRICE_OPEN,1);

// Проверка количества открытых ордеров
total=OrdersTotal();
if(total<Transactions)
{

if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}

// Проверка условий на покупку
if(CCI0>(-100) && CCI1<(-100) && Close[0]>Ma1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,50,Ask-KoeSL*ATR0,Ask+KoeTP*ATR0,"MA_CCI_ATR",16384,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)) Print("open BUY: ",OrderOpenPrice(), " SL=",OrderStopLoss()," TP=",OrderTakeProfit( ));
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
}

// Trailing Stop
if(KoeSL>0)
{
OrderSelect(OrderTicket(),SELECT_BY_TICKET);
if(Bid-OrderOpenPrice()>KoeSL*ATR0)
{
if(OrderStopLoss()<Bid-KoeSL*ATR0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-KoeSL*ATR0,OrderTakeProfit(),0,Blue);
return(0);
}
}
}

return(0);
}
// the end.

RIV
347
RIV 2010.10.14 17:45  

Скачайте здесь движок эксперта, поддерживает и трейлинг стоп в т.ч., поможет точно.

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий