Как кодировать? - страница 320

 

Привет всем, я хотел бы узнать, есть ли способ отслеживать текущую цену?

Например, когда цена пересекает заданную точку, это немедленно вызывает сделку. Те, что я нашел в интернете, в основном ссылаются на закрытие, максимум, минимум и т.д. бара. Кто-нибудь, пожалуйста, помогите мне. Спасибо.

С уважением,

Терранс

 

Если я правильно вас понял, вы должны использовать Ask и Bid. Ask для нового ордера на покупку и bid для нового ордера на продажу.

tkuan77:
Привет всем, я хотел бы узнать, есть ли способ отслеживать текущую цену?

Например, когда цена пересекает заданную точку, это немедленно вызывает сделку. Те, что я нашел в Интернете, в основном ссылаются на закрытие, максимум, минимум и т.д. бара. Кто-нибудь может мне помочь. Спасибо.

С уважением,

Терранс
 

Да, Младен, это то, что я использую сейчас. Возможно, мой вопрос не совсем понятен. Я пытаюсь добиться следующего: я задаю точку, например, закрытие предыдущей свечи D1 плюс и минус 20 пунктов, и если текущая цена достигает заданной точки (D1 + 20 пунктов) или (D1 - 20 пунктов), это вызовет покупку или продажу, независимо от того, закрыта ли текущая свеча или нет.

Итак, я пытаюсь понять, как сделать так, чтобы моя система запускала сделку, когда цена достигает так называемого (D1 + 20pips) или (D1 - 20pips). Заранее спасибо за совет.

С уважением,

Терранс

mladen:
Если я правильно вас понял, вы должны использовать Ask и Bid. Ask для нового ордера на покупку и bid для нового ордера на продажу.
 

Теперь я не уверен, что понимаю, но попробую. Ty что-то вроде этого (это не реальный код, а просто пример, как проверить - в большинстве случаев close и bid одинаковы).

if (close[1](D1+20pips)) trigger up action

if (close[1]>(D1-20pips) && close[0]<(D1-20pips)) trigger down action

tkuan77:
Да, Младен, это то, что я сейчас использую. Возможно, мой вопрос не совсем ясно объяснен. Что я пытаюсь достичь, скажем, я задаю точку, например, предыдущее закрытие свечи D1 плюс и минус 20 пунктов, и если текущая цена попадает в заданную точку либо (D1 + 20 пунктов), либо (D1 - 20 пунктов), это вызовет покупку или продажу, независимо от того, закрыта ли текущая свеча или сейчас.

Итак, что я пытаюсь достичь сейчас, это как сделать так, чтобы моя система запускала сделку, когда цена достигает так называемого (D1 + 20 пунктов) или (D1 - 20 пунктов). Заранее спасибо за совет.

С уважением,

Терранс
 

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

Да, мне удалось решить довольно много ошибок, с которыми я столкнулся, однако одна все еще беспокоит меня. Как мне вызвать:

1) Длинная сделка, когда FastMA1 пересекает SlowMA1 на 10 пунктов вверх

2) Короткая сделка, когда FastMA1 пересекает SlowMA1 на 10 пунктов вниз.

Я не знаю, как добавить МА, чтобы реагировать на 10 пунктов в коде.

/*--------------------------------------------------------------------------------*/

FastMA1 = iMA(NULL,PERIOD_M30,10,0,MODE_SMA,PRICE_CLOSE,0);

SlowMA1 = iMA(NULL,PERIOD_M30,20,0,MODE_SMA,PRICE_CLOSE,1);

if(FastMA1 > SlowMA1)

{Long}

if(FastMA1 < SlowMA1)

{Short}

/*--------------------------------------------------------------------------------*/

Спасибо и благодарю за помощь.

С уважением,

Терранс

mladen:
Теперь я действительно не уверен, что понимаю, но попробую. Ty что-то вроде этого (это не реальный код, а просто пример, как проверить - в большинстве случаев close и bid одинаковы)
if (close[1](D1+20pips)) trigger up action

if (close[1]>(D1-20pips) && close[0]<(D1-20pips)) trigger down action

 

Попробуйте сделать что-то вроде этого:

double pipMultiplier=1; if (Digits==3 || Digits==5) pipMultiplier=10;

double diff = 10*Point*pipMultiplier;

if(FastMA1 > SlowMA1+diff)

{Long}

if(FastMA1 < SlowMA1-diff)

{Short}

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

Да, мне удалось решить довольно много ошибок, с которыми я столкнулся, однако одна все еще не дает мне покоя. Как мне вызвать:

1) Длинная сделка, когда FastMA1 пересекает SlowMA1 на 10 пунктов вверх

2) Короткая сделка, когда FastMA1 пересекает SlowMA1 на 10 пунктов вниз.

Я не знаю, как добавить МА, чтобы реагировать на 10 пунктов в коде.

/*--------------------------------------------------------------------------------*/

FastMA1 = iMA(NULL,PERIOD_M30,10,0,MODE_SMA,PRICE_CLOSE,0);

SlowMA1 = iMA(NULL,PERIOD_M30,20,0,MODE_SMA,PRICE_CLOSE,1);

if(FastMA1 > SlowMA1)

{Long}

if(FastMA1 < SlowMA1)

{Short}

/*--------------------------------------------------------------------------------*/

Спасибо и благодарю за помощь.

С уважением,

Терранс
 

Malden Я пытаюсь закодировать индикатор, как вы ответили относительно предыдущего дня свечи h1. Но у меня не получилось.

У меня есть пример.

У меня есть индикатор с одним буфером в отдельных окнах. Он рисует линию, как rsi, atr и т.д. и т.п.

Теперь мне нужно добавить линию (горизонтальную) в том же отдельном окне, которая вычисляется из среднего значения индикатора за последние 24 дня (это только за 1 час, поэтому я сказал 24). Как я могу это сделать? Можно ли нарисовать эту линию для каждого дня в прошлом?

Я знаю, что я должен добавить еще один буфер.

Как я могу дать в этом буфере то, что мне нужно?

Спасибо

 

...

dasio

То, что вы описываете, похоже на комбинацию обычного индикатора (rsi, atr, ...) и мультитаймфреймового среднего того же индикатора. Вы пробовали так?

dasio:
Malden Я пытался закодировать индикатор, как вы ответили относительно предыдущего дня свечи h1. Но у меня не получилось.

У меня есть пример.

У меня есть индикатор с одним буфером в отдельных окнах. Он рисует линию, как rsi, atr и т.д. и т.п.

Теперь мне нужно добавить линию (горизонтальную) в том же отдельном окне, которая вычисляется из среднего значения индикатора за последние 24 дня (это только за 1 час, поэтому я сказал 24). Как я могу это сделать? Можно ли нарисовать эту линию для каждого дня в прошлом?

Я знаю, что я должен добавить еще один буфер.

Как я могу дать в этом буфере то, что мне нужно?

Спасибо.
 
mladen:
dasio То, что вы описываете, похоже на комбинацию обычного индикатора (rsi, atr, ...) и мультитаймфреймового среднего того же индикатора. Пробовали ли вы это сделать таким образом?

Здравствуйте, спасибо за ваш ответ,

Возможно, я плохо объяснил.

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

Теперь мне нужно добавить линию в индикатор, где значение этой линии равно удлинению последнего 24 значения, рассчитанного в последний день, и мне нужно нарисовать эту линию в предыдущий день. Я приложил изображение. Однако эта линия должна быть рассчитана в конце дня, потому что она должна быть рассчитана для значения la 24 индикатора за тот же день, где я ее рассчитываю.

На данный момент этот индикатор должен использоваться только на 1 часовом таймфрейме, так что это не MTF индикатор.

Спасибо.

ps. Белые линии рассчитаны для того же 24 значения 1 дневного периода, где они печатаются.

Файлы:
example_1.gif  7 kb
 

...

dasio

Попробуйте что-то вроде этого:

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 OrangeRed

#property indicator_color2 Silver

#property indicator_width1 2

extern int RsiPeriod = 50;

extern int RsiPrice = PRICE_CLOSE;

double work[];

double avg[];

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

//

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

//

//

//

//

//

int init()

{

SetIndexBuffer(0,work);

SetIndexBuffer(1,avg);

return(0);

}

int start()

{

int i,countedBars = IndicatorCounted();

if (countedBars<0) return(-1);

if (countedBars>0) countedBars--;

int limit = MathMin(Bars-countedBars,Bars-1);

for(i=limit; i>=0; i--)

{

work = iRSI(NULL,0,RsiPeriod,RsiPrice,i);

int y = iBarShift(NULL,PERIOD_D1,Time);

int x = iBarShift(NULL,PERIOD_D1,Time);

if (x!=y)

{

int k = iBarShift(NULL,0,iTime(NULL,PERIOD_D1,y));

double average = work[k];

int c = 1;

for (int j=k-1; j>=i; j--,c++) average += work[j]; average /= c;

for ( j=k ; j>=i; j--) avg[j] = average;

}

}

return(0);

}

dasio:
Здравствуйте, спасибо за ваш ответ,

Возможно, я плохо объяснил.

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

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

На данный момент этот индикатор должен использоваться только на 1 часовом таймфрейме, так что это не MTF индикатор.

Спасибо.

ps. Белые линии рассчитываются для того же 24 значения 1-дневного периода, где они печатаются.

Файлы:
test.gif  34 kb
Причина обращения: