Подскажите как сделать, чтобы индикатор выводил не текущее,а максимальное значение последних 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 в тестере.! Тогда поймёте, в чём дело! Там спросил, и молчок! Потому перенёс сюда, тут откликаются, за что вам и другим спасибо!
Блин, Борис. Я ж уже писал недавно. Ну сделай имитацию плавающего спреда прямо в советнике. Что мешает к биду прибавлять случайное число в диапазоне плавающего спреда и открываться отложками стоповыми. И закрывай по значению, а не по стоп-приказам. Сложнее, чем просто задать статичный спред побольше, но если сильно нужно - можно изобразить. При этом в тестере спред минимальный поставь.
Блин, Борис. Я ж уже писал недавно. Ну сделай имитацию плавающего спреда прямо в советнике. Что мешает к биду прибавлять случайное число в диапазоне плавающего спреда и открываться отложками стоповыми. И закрывай по значению, а не по стоп-приказам. Сложнее, чем просто задать статичный спред побольше, но если сильно нужно - можно изобразить. При этом в тестере спред минимальный поставь.
Это так... направление мысли.
Спасибо, Артём! Это мудрее в хорошем смысле слова! Так и сделаю!
Помогите с проблемой,пожалуйста)Я написал советник,работающий по пересечению машек,но когда пытаюсь протестить его,то терминал издает звук гудка и ничего не тестит(Компилятору код нравится.Как сделать так чтобы он хоть что то показывал?
Помогите с проблемой,пожалуйста)Я написал советник,работающий по пересечению машек,но когда пытаюсь протестить его,то терминал издает звук гудка и ничего не тестит(Компилятору код нравится.Как сделать так чтобы он хоть что то показывал?
Вы когда-нибудь смотрите то, что написали?!
Что-то мне подсказывает, что "здесь собака порылась":
Помогите с проблемой,пожалуйста)Я написал советник,работающий по пересечению машек,но когда пытаюсь протестить его,то терминал издает звук гудка и ничего не тестит(Компилятору код нравится.Как сделать так чтобы он хоть что то показывал?
//считаю ордера чтобы советник не трогал в ручную выставленные ордера
А хде он их трогать будет-та??? Да и достаточно магик проверять, ручные без магика.
Ну и, как выше уже написали, машки не пересекаются...
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Подскажите как сделать, чтобы индикатор выводил не текущее,а максимальное значение последних 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 в тестере.! Тогда поймёте, в чём дело! Там спросил, и молчок! Потому перенёс сюда, тут откликаются, за что вам и другим спасибо!
Блин, Борис. Я ж уже писал недавно. Ну сделай имитацию плавающего спреда прямо в советнике. Что мешает к биду прибавлять случайное число в диапазоне плавающего спреда и открываться отложками стоповыми. И закрывай по значению, а не по стоп-приказам. Сложнее, чем просто задать статичный спред побольше, но если сильно нужно - можно изобразить. При этом в тестере спред минимальный поставь.
Это так... направление мысли.
Блин, Борис. Я ж уже писал недавно. Ну сделай имитацию плавающего спреда прямо в советнике. Что мешает к биду прибавлять случайное число в диапазоне плавающего спреда и открываться отложками стоповыми. И закрывай по значению, а не по стоп-приказам. Сложнее, чем просто задать статичный спред побольше, но если сильно нужно - можно изобразить. При этом в тестере спред минимальный поставь.
Это так... направление мысли.
Помогите с проблемой,пожалуйста)Я написал советник,работающий по пересечению машек,но когда пытаюсь протестить его,то терминал издает звук гудка и ничего не тестит(Компилятору код нравится.Как сделать так чтобы он хоть что то показывал?
Помогите с проблемой,пожалуйста)Я написал советник,работающий по пересечению машек,но когда пытаюсь протестить его,то терминал издает звук гудка и ничего не тестит(Компилятору код нравится.Как сделать так чтобы он хоть что то показывал?
Что-то мне подсказывает, что "здесь собака порылась":
Помогите с проблемой,пожалуйста)Я написал советник,работающий по пересечению машек,но когда пытаюсь протестить его,то терминал издает звук гудка и ничего не тестит(Компилятору код нравится.Как сделать так чтобы он хоть что то показывал?
//считаю ордера чтобы советник не трогал в ручную выставленные ордераА хде он их трогать будет-та??? Да и достаточно магик проверять, ручные без магика.
Ну и, как выше уже написали, машки не пересекаются...