Ответить
27.02.2010, 13:53
Аватар для strannik200
strannik200 strannik200 вне форума Интересующийся
Регистрация: 27.02.2010 / Сообщений: 2
Поблагодарили 0 раз(а) / Репутация: 1

По умолчанию Доработать советник - трал и ММ

Доброго времени суток. Может кто поможет. Торгую ручками. Но вот наткнулся в бесплатниках на советника который частично удовлетворяет мою стратегию ведения торговли. Если это не сложно, то помогите привинтить к нему трал и ММ. Трал первостепенин. Зарание спасибо.
//+------------------------------------------------------------------+
//| GBP-USDversion01.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| Доработка советника Breakout11 |
//+------------------------------------------------------------------+

//---- input parameters
extern double Lots=0.10;
extern int Begin=10;
extern int Length=4;
extern int EOD=24;
extern int Pips=5;
extern int StopLoss=50;
extern int BreakEven=30;
extern int TakeProfit=80;

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int i,Ticket,LastOrderTime,StartTime,EODTime,Bought=0, Sold=0;
double EntryLong,EntryShort,SLLong,SLShort,TPLong,TPShort ;

//Settings
if (!IsTesting()){
if (Symbol()=="GBPUSD"){
Begin=10;
Length=4;
EOD=24;
Pips=5;
StopLoss=70;
BreakEven=40;
TakeProfit=120;
}
}


//Count time
if(Hour()>=Begin-1){
StartTime= StrToTime(Begin+":00");
if(DayOfWeek()==5) EODTime = MathMin(StrToTime("22:55"),StrToTime(EOD+":00"));
else EODTime = StartTime+(EOD-Begin)*3600-60;
}

//Set orders
if(CurTime()>= StartTime && CurTime()<StartTime+300){
//Determine range
EntryLong =High[Highest(NULL,0,MODE_HIGH,Length*60/Period(),0)]+(Pips+MarketInfo(Symbol(),MODE_SPREAD))*Point;
EntryShort =Low [Lowest (NULL,0,MODE_LOW, Length*60/Period(),0)]-Pips*Point;
SLLong =MathMax(EntryLong-StopLoss*Point,EntryShort);
SLShort =MathMin(EntryShort+StopLoss*Point,EntryLong);
TPLong =EntryLong+TakeProfit*Point;
TPShort =EntryShort-TakeProfit*Point;

//Check Orders
for (i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_BUY)) Bought++;
if(Bought>1){ //more than 1 buy order
if(CurTime()<=GlobalVariableGet("LastOrderTime")+1 0) Sleep(10000);
if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket());
}

if(OrderSymbol()==Symbol() && (OrderType()==OP_SELLSTOP || OrderType()==OP_SELL)) Sold++;
if(Sold>1){ //more than 1 sell order
if(CurTime()<=GlobalVariableGet("LastOrderTime")+1 0) Sleep(10000);
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket());
}
}

if(Bought==0){ //no buy order
if(CurTime()<=GlobalVariableGet("LastOrderTime")+1 0) Sleep(10000);
Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,EntryLon g,3,SLLong,TPLong,NULL,0,0,Green);
if(Ticket<0 && GetLastError()==130)
Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SLLong ,TPLong,NULL,0,0,Green);
GlobalVariableSet("LastOrderTime",OrderOpenTime()) ;
}
if(Sold==0){ //no sell order
if(CurTime()<=GlobalVariableGet("LastOrderTime")+1 0) Sleep(10000);
Ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,EntrySh ort,3,SLShort,TPShort,NULL,0,0,Green);
if(Ticket<0 && GetLastError()==130)
Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SLSho rt,TPShort,NULL,0,0,Green);
GlobalVariableSet("LastOrderTime",OrderOpenTime()) ;
}
}

//Manage opened orders
for (i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(CurTime()<=GlobalVariableGet("LastOrderTime")+1 0) Sleep(10000);
//uzavшenн otevшenэch pozic na konci dne
if(CurTime()>=EODTime){
if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket());
if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket());
GlobalVariableSet("LastOrderTime",CurTime());
}
//move at BE if profit>BE
else {
if(OrderSymbol()==Symbol() && OrderType()==OP_BUY){
if(High[0]-OrderOpenPrice()>=BreakEven*Point && OrderStopLoss()!=OrderOpenPrice()){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOp enPrice(),OrderTakeProfit(),0,Green);
GlobalVariableSet("LastOrderTime",CurTime());
}
}
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL){
if(OrderOpenPrice()-Low[0]>=BreakEven*Point && OrderStopLoss()!=OrderOpenPrice()){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOp enPrice(),OrderTakeProfit(),0,Green);
GlobalVariableSet("LastOrderTime",CurTime());
}
}
}
}

//Reset global variables at EOD
if(CurTime()>=EODTime) GlobalVariablesDeleteAll();

return(0);
}
//+------------------------------------------------------------------+
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Существует ли форекс скрипт, который выставляет трейлинг стоп? Матсул Скрипты 23 15.06.2016 16:45
Помогите доработать советник. Evgenij_V Ручные торговые стратегии - кандидаты в эксперты 0 13.01.2010 07:02


Текущее время: 18:07. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO