Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
в советнике?
if ((Close[3] > Open[3]) && ((Close[3] - Open[3]) > iCustom(NULL,0,"EKC", Length,1,0))первое условие явно лишнее , т.к. повторяется во втором ведь значение индюка у тебя всегда положительное, потом я так понял в индикаторе ты хочешь видеть значения в пунктах, тогда нужно заменить "*10000" на "/Point", затем когда ты сравниваешь в эксперте ты опять берешь 1 буфер, у тебя его нет в индикаторе он равен "0" (поэтому условие срабатывает), если возьмешь исправишь на нулевой буфер не забудь перевести обратно в "*Point" иначе в левой части 0,0150, а в правой 140 пунктов и условие никогда не сработает
на D1
:Ъ
ну тогда вот твой эксперт
//+------------------------------------------------------------------+ //| EKC.mq4 | //| Copyright © 2005, Profi_R | //| rvm_fam@fromru.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Profi_R" #property link "rvm_fam@fromru.com" //---- input parameters extern int Length=2; extern double NBars=5; extern int TakeProfit=200; //extern int TrailingStop=20; //extern int StopLoss=30; double Lots=1.0; double Slippage=0.0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- TODO: Add your code here. //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- TODO: Add your code here. //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- TODO: Add your code here. datetime prevtime; //double Tail=2.0, AverageCur=0.0, AveragePre=0.0, Total=0.0; int cnt=0; double SLSell=0.0,SLBuy=0.0; if ((Bars<200) || (TakeProfit<10)) return(0); // на графике менее 200 баров - выходим // неверные параметры тейкпрофита //if (OrdersTotal()==1) return(0); // нет ни одного открытого ордера if (AccountFreeMargin()<1000) return(0); // денег нет - выходим if (prevtime==Time[0]) return(0); SLSell=High[Highest(NULL,0,MODE_HIGH,NBars,0)]; SLBuy=Low[Lowest(NULL,0,MODE_LOW,NBars,0)]; if (//(Close[3] > Open[3]) && ((Close[3] - Open[3]) > iCustom(NULL,0,"EKC", Length,0,0)*Point) && (MathMin(Close[2],Open[2])>=Close[3]) && (Close[1] < Open[1]) &&//предыдущая свеча медвежья (High[3]<High[2]) &&//High[3] ниже High[2] (MathAbs(Open[3]-Close[3])>MathAbs(Open[2]-Close[2])) &&//тело [3] больше тела [2] (Close[1] < Close[3]))//предыдущий клоуз ниже клоуза[3] { OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SLSell,Bid-TakeProfit*Point,"Вечерняя звезда",003,0,Green); SetIndexArrow(0,226); return(0); } if ((Close[3] < Open[3]) && //&& ((Open[3] - Close[3]) > 0.0010) (MathAbs(Open[3]-Close[3])>iCustom(NULL,0,"EKC", Length,0,4)*Point) && (MathMax(Close[2],Open[2]) <= Close[3]) && (Close[1] > Open[1]) && (Low[3]>Low[2])&& //&& (MathAbs(Open[3]-Close[3])>MathAbs(Open[2]-Close[2])) (Close[1] > Close[3])) { OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SLBuy,Ask+TakeProfit*Point,"Утренняя звезда",006,0,Purple); SetIndexArrow(0,225); return(0); } for(cnt=1;cnt<=OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if (OrderType()<=OP_SELL && // это открытая позиция? OP_BUY или OP_SELL OrderSymbol()==Symbol()) // инструмент совпадает? { if (OrderType()==OP_BUY) // открыта длинная позиция { if (Open[1]<Close[1]) { OrderModify(OrderTicket(),Ask,Low[1],OrderTakeProfit(),0,Blue); return(0); } } else { if (Open[1]>Close[1]) { OrderModify(OrderTicket(),Bid,High[1],OrderTakeProfit(),0,Blue); return(0); } } } } prevtime = Time[0]; //---- return(0); }а это индикатор , я их обоих обозвал "EKC"
//+------------------------------------------------------------------+ //| EKC.mq4 | //| Copyright © 2005, Profi_R | //| rvm_fam@fromru.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Profi_R" #property link "rvm_fam@fromru.com" #property indicator_separate_window #property indicator_minimum 0.0000 #property indicator_maximum 50 extern int Range=8; #property indicator_color1 Plum double Buffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,Buffer); SetIndexDrawBegin(0,Range); SetIndexShift(0,0); SetIndexEmptyValue(0,0.0); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int CountedBars=IndicatorCounted(); double sum=0; int i,cb=Bars-CountedBars-1; //---- initial accumulation if(cb<Range) cb=Range; for(i=1;i<Range;i++,cb--) sum+=MathAbs(Open[cb]-Close[cb]); //складываем предыдущие тела - 7 штук от {1...7} while(cb>=0) //два раза { sum+=MathAbs(Open[cb]-Close[cb]); //прибавляем тело [1], во втором цикле [0] Buffer[cb]=(sum/Range)*10000; // предыдущее значение индюка равно=сумма тел {1...7}+[1] деленная на range и умноженная на 10000 // на втором цикле значение индюка на последнем баре равно=сумма тел {1...7}+[1]+[0] // минус тело [8] деленная на range и умноженная на 10000 sum-=MathAbs(Open[cb+Range-1]-Close[cb+Range-1]);//вычитаем тело [8] Comment(Buffer[cb]); cb--; } //---- return(0); }