Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 540

 
Моя торговая система основывается на анализе исторических данных. Встроил функцию для расчета сигнала непосредственно в советник. Однако, как я понял, при тестировании советник использует лишь те данные, которые находятся в окне visual (а там баров гораздо меньше чем в обычных окнах с подруженной из архива историей). А мне для расчета сигнала нужно как минимум несколько десятков тысяч исторических баров. Есть ли какой-нибудь способ решить эту проблему: т.е. чтобы тестируемый советник мог привлекать для расчета всю подгруженную историю, даже если тестируется меньший период? Использую MT4 и соотв. MQL4
 
sannin:

помогите если нежалко

научить советник торговать по индикатору

BS_Living Now ver #1.mq4 https://www.mql5.com/ru/code/11014#50910

UP= iCustom(Symbol(),NULL,"Now",BQuant,0,0);

DOW= iCustom(Symbol(),NULL,"Now",BQuant,1,0);


if(DOW){OrderSend(Symbol(), OP_SELL, Lot, Bid, Slip, 0, 0, "Forex-Robots.ru SELL", Magic, 0,Red);}


if(UP ){OrderSend(Symbol(), OP_BUY, Lot, Ask, Slip, 0, 0, "Forex-Robots.ru BUY", Magic, 0,Blue);}


Comment

(

"\n Профит: ", UP,

"\n Профит: ", DOW

);

пробовал через комент выудить значения но они всегда статичны подскажите как в этом индикаторе выводятся данные

Имя индикатора должно быть "BS_Living Now ver #1"
 

да у меня индикатор под именем Now находистя в папке

я через комент вывел значения уп дов чтоб посмотретькак цифры меняются а они статичны что в тестере что на живую и они никак не ноль

 
sannin:

да у меня индикатор под именем Now находистя в папке

я через комент вывел значения уп дов чтоб посмотретькак цифры меняются а они статичны что в тестере что на живую и они никак не ноль


Если он похож по принципу работы на фракталы, то его значение имеет смысл искать дальше в истории, но никак не на нулевом баре.

З.Ы.: так и есть, он расчёты с бара №1 начинает, искать что-то на нулевом не имеет смысла...

 

Кто может подсказать как добавить в советник функцию закрытия обсолютно всех ордеров если расстояние между рыночной ценой и ценой самого дальнего ордера превысило к примеру 1000 пунктов

 
evillive:

Если он похож по принципу работы на фракталы, то его значение имеет смысл искать дальше в истории, но никак не на нулевом баре.

З.Ы.: так и есть, он расчёты с бара №1 начинает, искать что-то на нулевом не имеет смысла...

С бара №2 по коду, Extrim_Detect(s+1);
 
AlexeyVik:

И соответственно условие

Спасибо Алексей. Всё сделала как Вы рекомендовали

extern int    Min_iMA_OpenDistance   = 60;
extern int    Max_iMA_OpenDistance   = 85; 

измененное условие входа

int GetSignal()
{
  int Signal = 0;

  double iMA_Signal = iMA(Symbol(), 0, iMA_Period, 0, MODE_SMMA, PRICE_CLOSE, 0);
  
  int Ma_Bid_Diff = MathAbs(iMA_Signal - Bid)/vPoint;
  
  if(Ma_Bid_Diff > Min_iMA_OpenDistance && Ma_Bid_Diff < Max_iMA_OpenDistance && Bid > iMA_Signal) Signal = -1;
  if(Ma_Bid_Diff > Min_iMA_OpenDistance && Ma_Bid_Diff < Max_iMA_OpenDistance && Bid < iMA_Signal) Signal = 1;
  
  return(Signal);
}

Однако после внесения изменений компилятор "ругается" на следующую строку

iMA_OpenDistance  *= DcD; 

iMA_OpenDistance' - undeclared identifier - не объявленный идентификатор. Проштудировала учебник и справку по идентификаторам но ничего не получается. Подскажите где ступила, как исправить?

 
tatianati:

Спасибо Алексей. Всё сделала как Вы рекомендовали

измененное условие входа

Однако после внесения изменений компилятор "ругается" на следующую строку

iMA_OpenDistance' - undeclared identifier - не объявленный идентификатор. Проштудировала учебник и справку по идентификаторам но ничего не получается. Подскажите где ступила, как исправить?

Видимо придётся проявлять способности телепатии.

Сначала было только iMA_OpenDistance потом разделили на 2 переменные Min_iMA_OpenDistance и Max_iMA_OpenDistance вот и осталась переменная iMA_OpenDistance не объявленной.

Не надо внешним переменным изменять значения. Лучше объявить дополнительную и с ней делать всё что угодно.

Как я понял переменная vPoint это Point*10. Соответственно Ma_Bid_Diff это расстояние от Bid до МА в 4-х значных пунктах. А DcD это что? Моих способностей телепатии не хватает. Но тем-не-менее мне кажется что iMA_OpenDistance *= DcD; будет лишним. Или это перевод в 5-ти значные пункты? А зачем?

 
AlexeyVik:

Видимо придётся проявлять способности телепатии.

Сначала было только iMA_OpenDistance потом разделили на 2 переменные Min_iMA_OpenDistance и Max_iMA_OpenDistance вот и осталась переменная iMA_OpenDistance не объявленной.

Не надо внешним переменным изменять значения. Лучше объявить дополнительную и с ней делать всё что угодно.

Как я понял переменная vPoint это Point*10. Соответственно Ma_Bid_Diff это расстояние от Bid до МА в 4-х значных пунктах. А DcD это что? Моих способностей телепатии не хватает. Но тем-не-менее мне кажется что iMA_OpenDistance *= DcD; будет лишним. Или это перевод в 5-ти значные пункты? А зачем?



Алексей Вы и в прям телепат это действительно перевод в 5-ти знак. За разъяснения СПАСИБО и как я сама не смекнула Min_iMA и Max_iMa вместо iMa. Еще раз благодарю.

P.S. Будете открывать курсы телепатов, я первая запишусь:-)

 

Может у кого нибудь есть такой советник.

1. открывает одновременно два разных ордера бай и сел

2. когда один закроется по профиту . опять открывает два разных ордера бай и сел и т.д

3. с минусовыми ордерами ничего не надо делать! вроде всё просто . может кто то сможет написать? буду очень благодарна!