Подскажите как сделать, чтобы индикатор выводил не текущее,а максимальное значение последних Per баров, сделал на примере осмы, но он показывает ток в тестере кода график движется, а когда просто кидаешь на график то ничего:
//---- indicator settings#property indicator_separate_window#property indicator_buffers1#property indicator_color1 Silver
#property indicator_width1 2//---- indicator parametersexternint Per=12;
externint FastEMA=12;
externint SlowEMA=26;
externint SignalSMA=9;
//---- indicator buffersdouble OsmaBuffer1[];
double OsmaBuffer[];
double MacdBuffer[];
double SignalBuffer[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- 2 additional buffers are used for counting.
IndicatorBuffers(4);
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(Digits+2);
//---- 3 indicator buffers mappingSetIndexBuffer(0,OsmaBuffer1);
SetIndexBuffer(1,OsmaBuffer);
SetIndexBuffer(2,MacdBuffer);
SetIndexBuffer(3,SignalBuffer);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//---- initialization donereturn(0);
}
//+------------------------------------------------------------------+//| Moving Average of Oscillator |//+------------------------------------------------------------------+int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recountedif(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st additional bufferfor(int i=0; i<limit; i++)
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd additional bufferfor(i=0; i<limit; i++)
SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- main loopfor(i=0; i<limit; i++)
OsmaBuffer[i]=MacdBuffer[i]-SignalBuffer[i];
//---- donefor(i=0; i<limit; i++)
{
for(int b=0; b<Per; b++)
{
OsmaBuffer1[i] =OsmaBuffer[ ArrayMaximum(OsmaBuffer,Per,b)];
}
}
return(0);
}
Всё разобрался, перемудрил просто))), достаточно этого:
borilunad: Это я понимаю! Но как запрограммировать эту переменную("заданный спрэд")?! Конечно, я могу сделать переменную Spread и каждый раз менять её, когда меняю в тестере спрэд. Скажем, Spread(TestGenerator) или есть какая-то функция, или можно как-то сделать такую функцию, не может быть, что нельзя! А?
Есть заданный спрэд, при тестирование,
но у большинства ДЦ он переменный. Есть желание, в тестере учтите это как нибудь. А вообще тестируйте советники на максимально неблагоприятных условиях. Т.е с максимальным спрэдом, с возможными задержками открытия ордеров и т.д.
но у большинства ДЦ он переменный. Есть желание, в тестере учтите это как нибудь. А вообще тестируйте советники на максимально неблагоприятных условиях. Т.е с максимальным спрэдом, с возможными задержками открытия ордеров и т.д.
Да я понимаю и делаю всё! Только хотел, чтобы в проге отразить устанавливаемый мною спрэд, поскольку в тестере Аск часто искажён, то находить его через Bid+spread! Смотрите ветку Не работает MarketInfo в тестере.! Тогда поймёте, в чём дело! Там спросил, и молчок! Потому перенёс сюда, тут откликаются, за что вам и другим спасибо!
borilunad: Да я понимаю и делаю всё! Только хотел, чтобы в проге отразить устанавливаемый мною спрэд, поскольку в тестере Аск часто искажён, то находить его через Bid+spread! Смотрите ветку Не работает MarketInfo в тестере.! Тогда поймёте, в чём дело! Там спросил, и молчок! Потому перенёс сюда, тут откликаются, за что вам и другим спасибо!
Блин, Борис. Я ж уже писал недавно. Ну сделай имитацию плавающего спреда прямо в советнике. Что мешает к биду прибавлять случайное число в диапазоне плавающего спреда и открываться отложками стоповыми. И закрывай по значению, а не по стоп-приказам. Сложнее, чем просто задать статичный спред побольше, но если сильно нужно - можно изобразить. При этом в тестере спред минимальный поставь.
Блин, Борис. Я ж уже писал недавно. Ну сделай имитацию плавающего спреда прямо в советнике. Что мешает к биду прибавлять случайное число в диапазоне плавающего спреда и открываться отложками стоповыми. И закрывай по значению, а не по стоп-приказам. Сложнее, чем просто задать статичный спред побольше, но если сильно нужно - можно изобразить. При этом в тестере спред минимальный поставь.
Это так... направление мысли.
Спасибо, Артём! Это мудрее в хорошем смысле слова! Так и сделаю!
Помогите с проблемой,пожалуйста)Я написал советник,работающий по пересечению машек,но когда пытаюсь протестить его,то терминал издает звук гудка и ничего не тестит(Компилятору код нравится.Как сделать так чтобы он хоть что то показывал?
Помогите с проблемой,пожалуйста)Я написал советник,работающий по пересечению машек,но когда пытаюсь протестить его,то терминал издает звук гудка и ничего не тестит(Компилятору код нравится.Как сделать так чтобы он хоть что то показывал?
Вы когда-нибудь смотрите то, что написали?!
Что-то мне подсказывает, что "здесь собака порылась":
Помогите с проблемой,пожалуйста)Я написал советник,работающий по пересечению машек,но когда пытаюсь протестить его,то терминал издает звук гудка и ничего не тестит(Компилятору код нравится.Как сделать так чтобы он хоть что то показывал?
//считаю ордера чтобы советник не трогал в ручную выставленные ордера
А хде он их трогать будет-та??? Да и достаточно магик проверять, ручные без магика.
Ну и, как выше уже написали, машки не пересекаются...
Подскажите как сделать, чтобы индикатор выводил не текущее,а максимальное значение последних Per баров, сделал на примере осмы, но он показывает ток в тестере кода график движется, а когда просто кидаешь на график то ничего:
Это я понимаю! Но как запрограммировать эту переменную("заданный спрэд")?! Конечно, я могу сделать переменную Spread и каждый раз менять её, когда меняю в тестере спрэд. Скажем, Spread(TestGenerator) или есть какая-то функция, или можно как-то сделать такую функцию, не может быть, что нельзя! А?
Есть заданный спрэд, при тестирование,
но у большинства ДЦ он переменный. Есть желание, в тестере учтите это как нибудь. А вообще тестируйте советники на максимально неблагоприятных условиях. Т.е с максимальным спрэдом, с возможными задержками открытия ордеров и т.д.
Есть заданный спрэд, при тестирование,
но у большинства ДЦ он переменный. Есть желание, в тестере учтите это как нибудь. А вообще тестируйте советники на максимально неблагоприятных условиях. Т.е с максимальным спрэдом, с возможными задержками открытия ордеров и т.д.
Вот функция
bool isFlagHistoryPos(int mn=-1) {
datetime t;
int gd = MarketInfo(Symbol(),MODE_DIGITS);
int i, j=-1, k=OrdersHistoryTotal();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==Symbol()) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
if(OrderSelect(j, SELECT_BY_POS,MODE_HISTORY)) {
double ocp=NormalizeDouble(OrderClosePrice(),gd);
double otp=NormalizeDouble(OrderTakeProfit(),gd);
if(MathAbs(ocp-otp)/Point<=TPpoint) return(true);
}
return(false);
Сам советник во вложении
/* Декомпил удален Vinin */
Да я понимаю и делаю всё! Только хотел, чтобы в проге отразить устанавливаемый мною спрэд, поскольку в тестере Аск часто искажён, то находить его через Bid+spread! Смотрите ветку Не работает MarketInfo в тестере.! Тогда поймёте, в чём дело! Там спросил, и молчок! Потому перенёс сюда, тут откликаются, за что вам и другим спасибо!
Блин, Борис. Я ж уже писал недавно. Ну сделай имитацию плавающего спреда прямо в советнике. Что мешает к биду прибавлять случайное число в диапазоне плавающего спреда и открываться отложками стоповыми. И закрывай по значению, а не по стоп-приказам. Сложнее, чем просто задать статичный спред побольше, но если сильно нужно - можно изобразить. При этом в тестере спред минимальный поставь.
Это так... направление мысли.
Блин, Борис. Я ж уже писал недавно. Ну сделай имитацию плавающего спреда прямо в советнике. Что мешает к биду прибавлять случайное число в диапазоне плавающего спреда и открываться отложками стоповыми. И закрывай по значению, а не по стоп-приказам. Сложнее, чем просто задать статичный спред побольше, но если сильно нужно - можно изобразить. При этом в тестере спред минимальный поставь.
Это так... направление мысли.
Помогите с проблемой,пожалуйста)Я написал советник,работающий по пересечению машек,но когда пытаюсь протестить его,то терминал издает звук гудка и ничего не тестит(Компилятору код нравится.Как сделать так чтобы он хоть что то показывал?
Помогите с проблемой,пожалуйста)Я написал советник,работающий по пересечению машек,но когда пытаюсь протестить его,то терминал издает звук гудка и ничего не тестит(Компилятору код нравится.Как сделать так чтобы он хоть что то показывал?
Что-то мне подсказывает, что "здесь собака порылась":
Помогите с проблемой,пожалуйста)Я написал советник,работающий по пересечению машек,но когда пытаюсь протестить его,то терминал издает звук гудка и ничего не тестит(Компилятору код нравится.Как сделать так чтобы он хоть что то показывал?
//считаю ордера чтобы советник не трогал в ручную выставленные ордераА хде он их трогать будет-та??? Да и достаточно магик проверять, ручные без магика.
Ну и, как выше уже написали, машки не пересекаются...