Помощь в кодировании - страница 485

 
NWFstudent:
Допустим, вы торгуете на часовом графике и используете индикатор mtf, отображающий 4-часовой график, тогда я хочу, чтобы в настройках использовался следующий таймфрейм.

т.е. я торгую на часовом графике, а индикатор использует данные за 4 часа, когда я меняю таймфрейм на 4 часа, я хочу, чтобы индикатор переключился на таймфрейм выше 4 часов, так что теперь он будет использовать дневные данные.

Я нашел эту тему, но поскольку я не кодер, я не уверен, куда вставить код и нужно ли его модифицировать для реального индикатора.

Следующий таймфрейм - Форум MQL4

Индикатор, к которому я хочу добавить это, - "Traders Dynamic_Cb_ssa norm Index_alerts+arrows new 1.01" с элитных форумов.

NWFstudent

Здесь показано, как это можно сделать простым способом: https: //www.mql5.com/en/forum/181187/page24 (включая автоматический выбор 3-го старшего таймфрейма).

 

Привет, Младен.

Последний раз за некоторое время.... Обещаю.

Как вы уже знаете, я большой поклонник индикатора ADX.

Я использую его в различных целях и никогда не вхожу в сделку против него.

Мне также нравится принцип работы индикатора "три утки".

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

Я попробую еще раз, а потом попробую что-нибудь другое:

В прилагаемом индикаторе, насколько я могу судить, есть только область, где упоминается индикатор - линии 54,57,60.

Все остальное, похоже, связано с таймфреймом.

Я пытался удалить все упоминания о 'sma & SMA' - и вместо них adx & ADX, но безуспешно.

Возможно ли это, и если да (не отнимая у вас много времени), дайте мне знать, как это сделать.

Всего хорошего.

Файлы:
 
Jeeves:
Привет, Младен.

Последний раз на некоторое время.... Обещаю.

Как вы уже знаете, я большой поклонник индикатора ADX.

Я использую его в различных целях и никогда не вхожу в сделку против него.

Мне также нравится принцип работы индикатора "три утки".

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

Я попробую еще раз, а потом попробую что-нибудь другое:

В прилагаемом индикаторе, насколько я могу судить, есть только область, где упоминается индикатор - линии 54,57,60.

Все остальное, похоже, связано с таймфреймом.

Я пытался удалить все упоминания о 'sma & SMA' - и вместо них adx & ADX, но безуспешно.

Возможно ли это, и если да (не отнимая у вас слишком много времени), дайте мне знать, как это сделать.

Хороших выходных.

Дживс

Вы не можете использовать adx вместо sma в этом индикаторе. Значения Adx находятся в совершенно другом диапазоне значений и не могут сравниваться с Bid, как это делает индикатор в коде.

 
mladen:
NWFstudent Вы можете увидеть в этом, как вы можете сделать это простым способом: https: //www.mql5.com/en/forum/181187/page24 (включая вплоть до автоматического выбора 3-го более высокого таймфрейма).

Спасибо, это было простое копирование-вставка

 

Дорогой,

может ли кто-нибудь помочь мне.

что случилось с этим "недействительным тикетом для функции OrderModify".

Но в других можно торговать.

extern double lots = 0.1;

extern double stopsize = 200;

extern double profsize = 100;

extern double Risk =0.01;

int err;

int ticket;

двойной стоп;

double prof;

int init() { return(0); }

int deinit() { return(0); }

int start()

{

int TotalOrders = 0;

for (int i=0; i <= OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

ticket=OrderSend(Symbol(), OP_SELL, getLots(Risk), Bid, 3, 0, 0, NULL,LimeGreen);

stop=(Bid+stopsize*Point);

prof=(Bid-profsize*Point);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

Comment(" ");

}

 
hock87:
Уважаемые,

кто-нибудь может мне помочь.

что случилось с этим "недействительным тикетом для функции OrderModify".

Но в других случаях можно торговать.

Это означает, что ваш заказ не был принят / выполнен и что функция OrderSend() вернула -1 в результате. Всегда проверяйте, если номер тикета > -1, прежде чем пытаться изменить только что созданный заказ.

 

Есть примеры использования простых файлов (не файлов истории)?

 
mladen:
xtractalpha Придется протестировать, чтобы понять, что происходит. Если я найду, в чем проблема, я опубликую это здесь.

Уважаемый Младен,

Есть ли у Вас какие-либо новости по поводу моего запроса?

Приятных выходных

Заранее спасибо,

Тьерри

 
xtractalpha:
Уважаемый Младен,

Есть ли у вас какие-либо новости по поводу моего запроса?

Приятных выходных

Заранее спасибо,

Тьерри

Тьерри

Удалите строки 74 и 137 вашего кода (вы вызываете функцию LotsizeCalc() из обеих строк и таким образом искусственно увеличиваете размер лота на каждом тике).

После удаления этих строк все должно работать нормально

 
mladen:
Тьерри

Удалите строки 74 и 137 вашего кода (вы вызываете функцию LotsizeCalc() из обеих строк и таким образом искусственно увеличиваете размер лота на каждом тике).

После удаления этих строк все должно работать нормально

Спасибо за быстрый ответ!

Я удалил эти строки, но советник по-прежнему открывает сделки с неправильным размером лота.

Очень странно, почему советник игнорирует мой код Мартингейла. Потому что советник открывает сделки только с размером лота 0.10 или 0.20..... (см. рисунок).

Скриншот от Lightshot

Я думаю, что проблема в моей функции lotsizecalc. Я хочу, чтобы функция умножала мой размер лота на сумму мартингейла, когда я проигрываю сделку.

Мой мартингейл равен 1,5, а размер лота - 0,10. Это означает, что когда я проиграю 5 сделок подряд, размер лота будет: 0.1, 0.15, 0.22, 0.34, 0.51.

double LotsizeCalc() { if(lastOrderProfit()<0 && tradeNumber <=MaximumTrades) { tradeNumber++; malot=OrderLots()*MartingaleAmount; } else { malot = LotSize; tradeNumber=1; } return(malot); }

Может ли кто-нибудь проверить этот код?

Заранее спасибо,

Тьерри