Уважаемые програмисты! Прошу Вас помочь написать индикатор, хочу проверить свою систему.
Идея такая:
1. Исходные данные для работы берутся из 2-х МА (Moving Average), значения у них одинаковые, только одна применяется к High, другая к Low.
2. Далее, когда появляется новый бар происходит сравнение (производится разность по модулю) значение текучего показания МА1.1 и показание, которое было n-баров назад, МА1.2. Также сравнивается МА2.1 с МА2.2
3. последнее, полученные значения сравниваются друг с другом (уже не по модулю) и в зависимости от полученого знака значения ± на текущем баре рисуется стрелка вверх(+) или вниз(-), при условии что полученная разность больше заданного порога значения! (задается в настройках).
Благодарю за помощь!
Комментарии (28)
35 AM2 Сообщений: 16665 - Андрей
35 AM2 Сообщений: 16665 - Андрей
16 deenyy Автор Сообщений: 127 - deenyy
Да вот эту строчку закоментарить:
==>
35 AM2 Сообщений: 16665 - Андрей
16 deenyy Автор Сообщений: 127 - deenyy
35 AM2 Сообщений: 16665 - Андрей
16 deenyy Автор Сообщений: 127 - deenyy
35 AM2 Сообщений: 16665 - Андрей
Если не секрет — для какой стратегии Вы используете данный индикатор?
3 shembel Сообщений: 32 - Юрий
16 deenyy Автор Сообщений: 127 - deenyy
Я имел ввиду — есть ли у Вас описание Вашей стратегии? :-)
Про автоматизацию — тоже понял.
P.S.
Есть такая штука — Extrem TMA System. Вероятно «тамашний» индюк Вам поможет на данном этапе! ;-)
3 shembel Сообщений: 32 - Юрий
А так пока думаю что чем меньше индикаторов, тем лучше.
16 deenyy Автор Сообщений: 127 - deenyy
И там вааааааще все красиво!!! :-)
Сейчас робота по ней пишу. :-)
3 shembel Сообщений: 32 - Юрий
16 deenyy Автор Сообщений: 127 - deenyy
4 seronn Сообщений: 26
3 shembel Сообщений: 32 - Юрий
4 seronn Сообщений: 26
16 deenyy Автор Сообщений: 127 - deenyy
19 vic123 Сообщений: 98
Дело в том, что по этому индикатору значения не взять. Но алгоритм можно встроить в советник.
19 vic123 Сообщений: 98
16 deenyy Автор Сообщений: 127 - deenyy
19 vic123 Сообщений: 98
4 seronn Сообщений: 26
4 seronn Сообщений: 26
19 vic123 Сообщений: 98
4 seronn Сообщений: 26
19 vic123 Сообщений: 98
<code>//--- ВХОДНЫЕ ПЕРЕМЕННЫЕ input int MAPeriod = 54; input int MAMethod = 3; input int Shift = 10; input int Delta = 23; extern double Lots = 0.01; // лот extern double KLot = 2; // умножение лота extern double MaxLot = 10; // максимальный лот extern int StopLoss = 9000; // Стоп лосс extern int TakeProfit = 3000; // профит extern int Profit = 5; // профит в валюте extern int Slip = 30; // Проскальзывание цены extern int Reverce = 0; // 1-реверс extern int Magic = 123456; // магик extern string IndName="Diablo_EUR_USD"; datetime t=0; //| Expert initialization function int OnInit() { //-------------------------------------------------------- if(!IsTradeAllowed()) Alert("Для нормальной работы советника необходимо\n"+ "Разрешить советнику торговать"); if(!IsExpertEnabled()) Alert("Отжата кнопка \"Разрешить запуск советников\""); Comment(""); //--- return(INIT_SUCCEEDED); } // Expert deinitialization function void OnDeinit(const int reason) { Comment(""); } //------------------------------------------------------------------------- void PutOrder(int type,double price) { int r=0; color clr=Green; double sl=0,tp=0; if(type==1 || type==3 || type==5) { clr=Red; if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits); if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits); } if(type==0 || type==2 || type==4) { clr=Blue; if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits); if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits); } r=OrderSend(NULL,type,Lot(type),NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr); return; } //-------------------------------------------------------------------------- int CountTrades(int type) { int count=0; for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==type) count++; } } } return(count); } //--------------------------------------------------------------------------- void ClosePos(int ot=-1) { bool cl; for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==0 && (ot==0 || ot==-1)) { RefreshRates(); cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White); } if(OrderType()==1 && (ot==1 || ot==-1)) { RefreshRates(); cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White); } } } } } //+------------------------------------------------------------------+ double Lot(int type) { double lot=Lots; if(CountTrades(0)>0) lot=NormalizeDouble(Lots*MathPow(KLot,CountTrades(0)),2)-(0.01*CountTrades(0)); if(CountTrades(1)>0) lot=NormalizeDouble(Lots*MathPow(KLot,CountTrades(1)),2)-(0.01*CountTrades(1)); if(lot>MaxLot)lot=NormalizeDouble(Lots*MathPow(KLot,CountTrades(1)),2); return(lot); } //-------------------------------------------------------------------------- double AllProfit(int type=-1) { double profit=0; for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==type) profit+=OrderProfit()+OrderCommission()+OrderSwap(); if(type==-1) { if(OrderType()<2) profit+=OrderProfit()+OrderCommission()+OrderSwap(); } } } } return (profit); } //------------------------------------------------------------------ void OpenPos() { double ma11=iMA(NULL,0,MAPeriod,0,MAMethod,3,1); double ma12=iMA(NULL,0,MAPeriod,0,MAMethod,3,1+Shift); double ma21=iMA(NULL,0,MAPeriod,0,MAMethod,2,1); double ma22=iMA(NULL,0,MAPeriod,0,MAMethod,2,1+Shift); double dma=NormalizeDouble(MathAbs(ma22-ma21)/Point-MathAbs(ma12-ma11)/Point,0); if(dma>0 && MathAbs(dma)>Delta) { PutOrder(0,Ask); } if(dma<0 && MathAbs(dma)>Delta) { PutOrder(1,Bid); } } //------------------------------------------------------------------ void OnTick() { if(t!=Time[0]) { if(Reverce<1) OpenPos(); t=Time[0]; } if(AllProfit()>Profit && Profit>0) ClosePos(); } </code>19 vic123 Сообщений: 98
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий