Spezifikation
Добавить в существующий советник несколько параметров:
- Время начала работы
- Время окончания работы
- Через какой интервал времени запускать новую сетку отложеных ордеров
- Take profit
=== Параметры безубытка ===
true/false; // Включение использования уровня безубытка
extern int _StopLoss0_From = 0; // Отступ от уровеня безубытка (в пунктах)
extern int _StopLoss0Level = 15; // Уровень безубытка
= Параметры трейлинг стопа ===";
extern bool _IsTrailingStop = true; // Включение трейлинг стопа
extern bool _IsTrailingStopProfit = true; // Включение трейлинг стопа с позиции безубытка
extern int _TrailingStopProfit_From = 50; // Отступ от уровня безубытка (в пунктах)
extern int _TrailingStopLevel = 15; // Уровень трейлинг стопа
extern int _TrailingStopStep = 10; // Шаг перемещения трейлинг стопа
-Коеф. увеличения лота
- Количество рук - сколько раз удваивать
- Увеличения лотов по стратегии : 1-я сетка ордеров 1*на коеф умнож
2-я сетка ордеров 1*на коеф умнож
3-я сетка ордеров 1*на коеф умнож и тд и тп
Основная стратегия заключается в бесконечном проставлении сеток ордеров по експирации без стопа лоса а только трала или профита... цена колебается и возвращается... не возвращается - отоварюем другими ордерами.
что имеем:
//+------------------------------------------------------------------+ //| Copyright © 2011, Konstantin http://www.fxaktiv.com | //| panelektrik@yandex.ru skype pan--elektrik | //| ISQ 561090193 Моб.+380 50 7115118 | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, Konstantin" #property link "http://www.fxaktiv.com panelektrik@yandex.ru skype pan--elektrik ISQ 561090193 Моб.+380 50 7115118" //+------------------------------------------------------------------+ extern string _="общие настройки"; extern double Lot = 0.1; //1. Количество лотов extern int Otstup = 10; //2. Отступ в пунктах Buy Stop и Sell Stop от цены extern int ShagOtstup = 10; //2. Отступ в пунктах между отложками extern int Klons = 10; //2.Количество клонов в каждую сторону extern int EkspirStart = 10000; //4. Експирация начальная- интервал времени в секундах за которое цена должна достигнуть отложника, иначе удаляется extern int Magic = 54345; //10.Магик extern int Slippage = 10; //11.Проскальзывание extern int SL = 20; //12.Стоп лосс extern int Trall = 30; //13.Уровень трейлинг стопа extern int Shag = 2; //14.Уровень шаг double kof; int trade; //+------------------------------------------------------------------+ int init(){kof=1;if(Digits==5||Digits==3)kof=10;} //+------------------------------------------------------------------+ void Send_buystop(double cena,string comm,int exp){if(cena-Ask>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point) OrderSend(Symbol(),OP_BUYSTOP,NormLot(Lot),NormalizeDouble(cena,Digits),Slippage,0,0,comm,Magic,exp,Blue);} //+------------------------------------------------------------------+ void Send_sellstop(double cena,string comm,int exp){if(Bid-cena>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point) OrderSend(Symbol(),OP_SELLSTOP,NormLot(Lot),NormalizeDouble(cena,Digits),Slippage,0,0,comm,Magic,exp,Red);} //+------------------------------------------------------------------+ double NormLot(double a){int ModeShagLot; double maxlot=MarketInfo(Symbol(),MODE_MAXLOT); double minlot=MarketInfo(Symbol(),MODE_MINLOT); double lotstep=MarketInfo(Symbol(),MODE_LOTSTEP); if(lotstep<=0.009)ModeShagLot=3; else{if(lotstep<=0.09) ModeShagLot = 2; else{if(lotstep<=0.9) ModeShagLot = 1; else ModeShagLot=0;}} if(a<minlot)return(minlot); if(a>maxlot)return(maxlot); return(NormalizeDouble(a,ModeShagLot));} //+------------------------------------------------------------------+ void CloseOtl(string comm){ RefreshRates();for(int i=OrdersTotal();i+1>=0;i--){ if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderMagicNumber()==Magic)&&(OrderComment()==comm)&&(OrderSymbol()==Symbol())&& (OrderType()==OP_BUYSTOP||OrderType()==OP_SELLSTOP||OrderType()==OP_BUYLIMIT||OrderType()==OP_SELLLIMIT)) OrderDelete(OrderTicket());}} //+------------------------------------------------------------------+ void modify(){ for(int i=0;i<OrdersTotal();i++){ if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderMagicNumber()==Magic)&&(OrderSymbol()==Symbol())) { if((OrderType()==OP_BUY)&&(OrderStopLoss()==0)){OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-SL*kof*Point,Digits),OrderTakeProfit(),0);} if((OrderType()==OP_SELL)&&(OrderStopLoss()==0)){OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+SL*kof*Point,Digits),OrderTakeProfit(),0);} //+----- if((OrderType()==OP_BUY)&&(OrderStopLoss()>0)&&(Bid-OrderStopLoss()>Trall*kof*Point)){OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderStopLoss()+Shag*kof*Point,Digits),OrderTakeProfit(),0);} if((OrderType()==OP_SELL)&&(OrderStopLoss()>0)&&(OrderStopLoss()-Ask>Trall*kof*Point)){OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderStopLoss()-Shag*kof*Point,Digits),OrderTakeProfit(),0);} }}} //+------------------------------------------------------------------+ int ALLorders(){ int j=0;for(int i=0;i<OrdersTotal();i++){if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) if((OrderMagicNumber()==Magic)&&(OrderSymbol()==Symbol()))j++;}return(j);} //+------------------------------------------------------------------+ int Otlorders(){ int j=0;for(int i=0;i<OrdersTotal();i++){if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) if((OrderType()==OP_BUYSTOP||OrderType()==OP_SELLSTOP)&&(OrderMagicNumber()==Magic)&&(OrderSymbol()==Symbol()))j++;}return(j);} //+------------------------------------------------------------------+ int orders(string comm,int type){ int j=0;for(int i=0;i<OrdersTotal();i++){if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) if((OrderComment()==comm)&&(OrderType()==type)&&(OrderMagicNumber()==Magic)&&(OrderSymbol()==Symbol()))j++;}return(j);} //+------------------------------------------------------------------+ int ordersBUYSELL(string comm){int j=0;for(int i=0;i<OrdersTotal();i++){if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) if((OrderComment()==comm)&&(OrderType()==OP_BUY||OrderType()==OP_SELL)&&(OrderMagicNumber()==Magic)&&(OrderSymbol()==Symbol()))j++;}return(j);} //+------------------------------------------------------------------+ int start() { if(ALLorders()==0)trade=1; if(trade==1&&ALLorders()>=Klons*2)trade=2; if(trade==2&&Otlorders()==0)trade=3; if(trade==1)for(int i=1;i<=Klons;i++) { if(orders(""+i,OP_BUYSTOP)==0&&ordersBUYSELL(""+i)==0)Send_buystop(Ask+(Otstup+ShagOtstup*(i-1))*kof*Point,""+i,TimeCurrent()+EkspirStart); if(orders(""+i,OP_SELLSTOP)==0&&ordersBUYSELL(""+i)==0)Send_sellstop(Bid-(Otstup+ShagOtstup*(i-1))*kof*Point,""+i,TimeCurrent()+EkspirStart); } if(trade==2)for(i=1;i<=Klons;i++) if(ordersBUYSELL(""+i)>0)CloseOtl(""+i); //+-------- modify(); } //+------------------------------------------------------------------+