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

 
thefxpros:
Привет,

я тут развлекаюсь тем, что делаю индикатор в MTF с помощью icustom. Индикатор работает, но не отображает цвет и стрелки должным образом, почему?

Где ошибка, пожалуйста?

wilders_trailing_stop_mtf.mq4

wilders_trailing_stop.mq4

//------------------------------------------------------------------

#property copyright "thefxpros"

#property link "thefxpros@katamail.com"

//------------------------------------------------------------------

#property indicator_chart_window

//#property indicator_color1 Orange

//#property indicator_color2 LimeGreen

//#property indicator_color3 LimeGreen

//#property indicator_color4 Orange

//#property indicator_width3 1

//#property indicator_width4 1

//

//

//

extern int TimeFrame = 0;

extern int Length = 2;

extern double Coeff = 1.75;

extern int LineWidth = 1;

extern int ArrowWidth = 1;

extern color UpLineClr = LimeGreen;

extern color DnLineClr = Orange;

extern color UpArrowClr = LimeGreen;

extern color DnArrowClr = Orange;

//

double WTS[];

double WTSDn[];

double arrUp[];

double arrDn[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int init()

{

IndicatorBuffers(4);

SetIndexBuffer(0,WTS); SetIndexStyle(0,DRAW_LINE, EMPTY, LineWidth, DnLineClr);

SetIndexBuffer(1,WTSDn); SetIndexStyle(1,DRAW_LINE, EMPTY, LineWidth, UpLineClr);

SetIndexBuffer(2,arrUp); SetIndexStyle(2,DRAW_ARROW, EMPTY, ArrowWidth, UpArrowClr); SetIndexArrow(2,SYMBOL_ARROWUP);

SetIndexBuffer(3,arrDn); SetIndexStyle(3,DRAW_ARROW, EMPTY, ArrowWidth, DnArrowClr); SetIndexArrow(3,SYMBOL_ARROWDOWN);

IndicatorShortName("Wilders trailing stop MTF ("+Length+","+Coeff+")");

Length = MathMax(Length,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("Wilders trailing stop MTF ("+TimeFrameStr+")");

return(0);

}

//----

//+------------------------------------------------------------------+

//| MTF function |

//+------------------------------------------------------------------+

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Plot defined time frame on to current time frame

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);

for(i=0,y=0;i<limit;i++)

{

if (Time<TimeArray[y]) y++;

/*********************************************************************************************************

Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.

Rule 1: Add extern inputs above for all neccesary values

Rule 2: Use 'TimeFrame' for the indicator time frame

Rule 3: Use 'y' for your indicator's shift value

********************************************************************************************************/

WTS=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,0,y);

WTSDn=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,1,y);

arrUp=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,2,y);

arrDn=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,3,y);

}

return(0);

}

//+------------------------------------------------------------------+[/PHP]

thefxpros

Вы закомментировали часть, где нужно объявить буферы рисования.

Эта часть :

[PHP]#property indicator_chart_window

//#property indicator_buffers 4

//#property indicator_color1 Orange

//#property indicator_color2 LimeGreen

//#property indicator_color3 LimeGreen

//#property indicator_color4 Orange

//#property indicator_width3 1

//#property indicator_width4 1

Удалите комментарии из этих строк, и все будет работать

 
mladen:
thefxpros

Вы закомментировали часть, где нужно объявить буферы рисования.

Эта часть :

#property indicator_chart_window

//#property indicator_buffers 4

//#property indicator_color1 Orange

//#property indicator_color2 LimeGreen

//#property indicator_color3 LimeGreen

//#property indicator_color4 Orange

//#property indicator_width3 1

//#property indicator_width4 1
Уберите комментарии из этих строк и все заработает

да, я знаю, но я указал позже, этого недостаточно? Должен ли я всегда указывать в начале?

Я помню, что часто так делал, в предыдущей сборке метаэдитора и насколько я помню, это работало, может я не правильно помню?

 
thefxpros:
Да, я знаю, но я указал позже, разве этого недостаточно? Нужно ли всегда указывать в начале? Я помню часто так делал, в предыдущей сборке метаэдитора и насколько я помню это работало, может я не правильно помню?

thefxpros

В начале вы указываете буферы рисования. Позже вы можете указать буферы вычислений. Если вы не укажете #property indicator_buffers numberOfDrawningBuffer, то на графике ничего не будет нарисовано.

 

показать всю историю Спирда . Пожалуйста, помогите мне

 

Кто-нибудь, пожалуйста, помогите мне проверить этот советник на наличие функции CloseInMA.

Я торчу здесь уже много дней и не могу найти решение .

Спасибо .

Файлы:
testing1.5.mq4  38 kb
 
stevenpun:
Кто-нибудь, пожалуйста, помогите мне проверить этот советник на наличие функции CloseInMA.

Я торчу здесь уже много дней и не могу найти решение .

Спасибо .

stevenpun

Попробуйте сделать так, как написано сейчас

Файлы:
 

Здравствуйте гуру с добрым сердцем, я прошу, пожалуйста, чтобы кто-нибудь помог закодировать это, а затем создать версию робота (советника):

ИНДИКАТОР- Автоматически рисует горизонтальные линии (желательно ломаные) на ценах, заканчивающихся на 5, 15, 31, 67 соответственно. Пример на UJ 103.05, 102.67, 103.15 e.t.c. Длина линии должна быть 1 дюйм математической линейки с этими числами внизу, чтобы у меня был приличный график из-за пары линий, которые у меня уже есть.

PS- 4-х и 5-ти значный брокер совместим

 

Правила для советника

ПОКУПАТЬ

Размещайте отложенный ордер buy stop в любое время, когда цена движется на 3 пункта до магического числа, указанного НИЖЕ. Пример для магического числа 5, цена в данный момент находится на уровне UJ 103.02, разместите отложенный ордер на покупку @103.05.

ПРОДАВАТЬ

Размещайте отложенный ордер sell stop в любое время, когда цена приближается к магическому числу на 3 пункта сверху. Пример, цена в данный момент @103.08, размещаем стоп на продажу @103.05.

SL и TP 25/50 пунктов каждый.

Когда торговля достигнет +3 пунктов в прибыли, переместите STOP LOSS в замок +1 прибыль, переместите 5 замок 4, переместите 8 замок 7, переместите 12 замок 10.

Максимальная открытая позиция или плавающая сделка или отложенный ордер =1 только до тех пор, пока не будет остановлена новая сделка.

Максимальная дневная просадка 3%, при достижении которой советник должен прекратить торговлю.

Размер лота по умолчанию 0.1 (10,000)

круглосуточная торговля

P.S: Советник должен иметь возможность скрывать магические числа, трейлинг стоп, тейк профит/стоп лосс от моего брокера и должен быть совместим с 4/5 цифрами. Пара по умолчанию UJ.

Буду очень признателен за скорейшее кодирование.

 
mladen:
stevenpun Попробуйте сделать так, как написано сейчас.

Здравствуйте, mladen,

Я пробовал это раньше, но это не работает.

Поэтому я очень запутался.

Надеюсь, вы поможете мне понять, в чем проблема.

Спасибо.

 
stevenpun:
Здравствуйте mladen ,

Я пробовал это раньше, но это не работает.

Поэтому я очень запутался.

Надеюсь, вы поможете мне понять, в чем проблема.

Спасибо

В версии, которую вы выложили, вы сравнивали константы (Fastma, Dn_slowma и Up_slowma - периоды, которые используются для скользящих средних, а не значения скользящих средних).

Теперь это изменено на сравнение значений скользящих средних. Если это не то, что вы имеете в виду, тогда вы должны изменить его, но вы не можете сравнивать постоянные значения и ожидать, что они будут меняться от бара к бару.

Проверьте, точно ли это те условия скользящих средних (в функции GetSignalClose()), которые вы представляли себе как условия выхода, но продолжайте сравнивать значения скользящих средних, а не параметры этих скользящих средних.