[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 480

 

Помогите разобраться с советником

в основе индикатор alligator
сигнал на покупку при пересечений зеленой линей синей и красной снизу вверх открывает позицию на Buy
сигнал на продажу при пересечений зеленой линей красной и синей сверху в низ открываем позицию на Sell
позиций закрываются придостижний StopLoss и TakeProfit


при компиляций ошибок нет но при тестировании в тестере стратегий есть ошибки
первая ошибка ожидание string ордера не открывал удалил код содержащий строку string от компилировал ошибок нет запустил в тестере стратегий
работает но открывает только позиций на Sell на Buy не хочет
Не могли бы посмотреть и отписаться что не так в коде

Файлы:
all_2.mq4  2 kb
 
novicek:

Помогите разобраться с советником

в основе индикатор alligator
сигнал на покупку при пересечений зеленой линей синей и красной снизу вверх открывает позицию на Buy
сигнал на продажу при пересечений зеленой линей красной и синей сверху в низ открываем позицию на Sell
позиций закрываются придостижний StopLoss и TakeProfit


при компиляций ошибок нет но при тестировании в тестере стратегий есть ошибки
первая ошибка ожидание string ордера не открывал удалил код содержащий строку string от компилировал ошибок нет запустил в тестере стратегий
работает но открывает только позиций на Sell на Buy не хочет
Не могли бы посмотреть и отписаться что не так в коде


смотрим строчки открытия:

OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,magic,Ask , StopLoss * Point, Ask , TakeProfit * Point);
            
OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,magic,Bid , StopLoss * Point, Bid , TakeProfit * Point);

а теперь смотрим спецификацию самой функции OrderSend (описание здесь https://docs.mql4.com/ru/trading/OrderSend):

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) 

и проверяем, на месте ли стоят параметры

 
novicek:

Пускай этот факт не вызывает сомнения о моей грамотности (образований)
Не ставить знаки препинания это мой бзик и только


Когда будете реализовывать ваш бзик "не ставить знаки препинания", не удивляйтесь, что ваши вопрошающие посты будут частенько игнорироваться.

У народа тоже есть бзик частенько уважать себя.
А также есть бзик уважительно относиться к своему родному языку.

 
спасибо, но решения там не нашел, мне нужно наложить боллинджера на рси, руками это сделать можно, а вот как сделать это программно?
 
ZZZEROXXX:
спасибо, но решения там не нашел, мне нужно наложить боллинджера на рси, руками это сделать можно, а вот как сделать это программно?

Болинджер - это МА отодвинутая вверх и вниз на StdDev. Вы можете сделать это двумя путями.

1. Если целочисленное изменение отклонения Deviat вас устраивает, то можете воспользоваться функцией iBandsOnArray

2. Если же надо считать также и десятичные доли Deviat, то прийдется использовать функции iMAOnArray и iStdOnArray

В коде это выглядит так:

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_minimum 0
#property indicator_maximum 100

#property indicator_color1 SkyBlue
#property indicator_color2 LimeGreen
#property indicator_color3 LimeGreen
#property indicator_color4 LimeGreen
#property indicator_style2 STYLE_DOT

extern int rsiPeriod=14;
extern int rsiPrice=PRICE_CLOSE;
extern int bbPeriod=20;
extern int bbShift=0;
int bbMethod=MODE_SMA;
extern double bbDeviat=2;

double rsi[], ma[], up[], dn[], stdev[];
//------------------------------------------------------------------    init
int init()
{
  int i=0;
  SetIndexBuffer(i, rsi); SetIndexStyle(i, DRAW_LINE); SetIndexLabel(i, "RSI"); i++;
  SetIndexBuffer(i, ma); SetIndexStyle(i, DRAW_LINE); SetIndexLabel(i, "MA"); i++;
  SetIndexBuffer(i, up); SetIndexStyle(i, DRAW_LINE); SetIndexLabel(i, "UP"); i++;
  SetIndexBuffer(i, dn); SetIndexStyle(i, DRAW_LINE); SetIndexLabel(i, "DN"); i++;
  IndicatorBuffers(5);
  SetIndexBuffer(i, stdev); SetIndexStyle(i, DRAW_NONE); // добавочный буфер расчета
  return(0);
}
//------------------------------------------------------------------    start
int start()
{
  int count=IndicatorCounted(); if (count<0) return; // если ошибка расчета
  int lim=Bars-count; if (lim>1) lim=Bars-1; // если нерасчитано более 1 бара, то полный пересчет
  // 1. получаем массив RSI
  for (int i=lim; i>=0; i--) rsi[i]=iRSI(Symbol(), Period(), rsiPeriod, rsiPrice, i);
  // 2. строим на основе RSI - МА (средняя линия болинджера), StdDev и Верхнюю и Нижнюю границу Боллинджера
  for (i=lim; i>=0; i--) 
  {
    ma[i]=iMAOnArray(rsi, 0, bbPeriod, bbShift, bbMethod, i); // средняя линия
    stdev[i]=iStdDevOnArray(rsi, 0, bbPeriod, bbShift, bbMethod, i); // отклонение
    up[i]=ma[i]+bbDeviat*stdev[i]; // верхняя граница
    dn[i]=ma[i]-bbDeviat*stdev[i]; // нижняя граница
  }
  return(0);
}
Файлы:
_bbonrsi.mq4  3 kb
 
abolk:

Когда будете реализовывать ваш бзик "не ставить знаки препинания", не удивляйтесь, что ваши вопрошающие посты будут частенько игнорироваться.
У народа тоже есть бзик частенько уважать себя.
А также есть бзик уважительно относиться к своему родному языку.

Правильно подмечено. Глаз режет и хочется отвернуться.
Да и сомнения все равно возникают - "о моей грамотности (образований)"
 
sergeev:

В коде это выглядит так:

Благодарю! То что нужно.
 
abolk:


Когда будете реализовывать ваш бзик "не ставить знаки препинания", не удивляйтесь, что ваши вопрошающие посты будут частенько игнорироваться.

У народа тоже есть бзик частенько уважать себя.
А также есть бзик уважительно относиться к своему родному языку.

я на пример до сих пор не знаю куда их вставлять, знаю только что в конце точка должна быть, - это я точно знаю. Русский язык самый сложный. Но у него есть плюс можно выразится так что любой другой язык позавидует особенно матерный, коротко и всем понятно я его иногда применяю когда до кого то туго доходит вы матерился и все сразу все поняли и в течении дня к тебе с глупыми вопросами никто не подходит.
 
Уважаемые, подскажите как вызвать в советник информацию Open[1] и Close[1] с нескольких ТФ?
 
Бзик и четверка по русскому разные вещи. У меня твердая четверка, мне хватает.
Причина обращения: