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

 

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

мне нужны два индикатора, один - wpr(Williams' Percent Range) и его ma (wpr с ma), другой - cmo (chande momentum osc.)

и его ma (cmo с ma),

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

Спасибо

 
anonimm:
Привет,

мне нужны два индикатора, один - wpr(Williams' Percent Range) и его ma (wpr с ma), другой - cmo (chande momentum osc.)

и его ma (cmo с ma),

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

Спасибо

anonimm

Вот один WPR со средним значением (ma).

Файлы:
wpr_ma.mq4  2 kb
 
mladen:
anonimm Вот один WPR со средним значением (ma)

Спасибо, Младен,

Я пытаюсь использовать cmo's ma, но получаю ошибку (функция iCMO не определена)... вы можете помочь... cmo прилагается

//---- настройки индикатора

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Silver

#property indicator_color2 Red

#property indicator_width1 2

#property indicator_width2 2

//---- параметры индикатора

extern int CMO_Period=21;

extern int MA_Period=14;

extern string m = "-Типы скользящих средних--";

extern string m0 = " 0 = SMA";

extern string m1 = " 1 = EMA";

extern string m2 = " 2 = SMMA";

extern string m3 = " 3 = LWMA";

extern int MA_Type=1;

//---- индикаторные буферы

double CMO_Buffer[];

double MA_Buffer[];

double iCMO[];

int MA_Mode;

string strMAType;

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

//| Пользовательская функция инициализации индикатора |

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

int init()

{

//---- настройки рисования

SetIndexStyle(0,DRAW_LINE);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,CMO_Period);

IndicatorDigits(Digits+1);

//---- отображение буферов индикаторов

SetIndexBuffer(0,CMO_Buffer);

SetIndexBuffer(1,MA_Buffer);

//---- имя для DataWindow и метка подокна индикатора

switch (MA_Type)

{

case 1: strMAType="EMA"; MA_Mode=MODE_EMA; break;

case 2: strMAType="SMMA"; MA_Mode=MODE_SMMA; break;

case 3: strMAType="LWMA"; MA_Mode=MODE_LWMA; break;

default: strMAType="SMA"; MA_Mode=MODE_SMA; break;

}

IndicatorShortName( "CMO" + " (" + CMO_Period + ") " + " : " + strMAType+ " (" +MA_Period + ") ");

SetIndexLabel(0, "CMO" + " (" +CMO_Period + ") ");

SetIndexLabel(1,strMAType+ " (" + MA_Period + ") ");

//---- инициализация выполнена

return(0);

}

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

//| Конвергенция/дивергенция скользящих средних |

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

int start()

{

int limit;

int counted_bars=IndicatorCounted();

//---- последний подсчитанный бар будет пересчитан

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- CMO подсчитывается в 1-м буфере

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

CMO_Buffer=iCMO(NULL,0,CMO_Period,i);

//---- MA строка, подсчитанная во 2-м буфере

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

MA_Buffer=iMAOnArray(CMO_Buffer,Bars,MA_Period,0,MA_Mode,i);

//---- сделано

return(0);

}

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

Файлы:
cmo.mq4  6 kb
 

Младен, не могли бы вы помочь мне найти ошибки?

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color2 Red

//----

double UpperBuf[];

double UpperBuf1[];

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

//| |

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

void init()

{

SetIndexStyle(0, DRAW_NONE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(0, N);

//----

SetIndexBuffer(0, UpperBuf);

SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(1, N);

//----

SetIndexBuffer(1, UpperBuf1);

}

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

//| |

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

void deinit()

{

//----

}

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

//| |

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

void start()

{

int counted = IndicatorCounted();

//----

if(counted < 0)

return (-1);

//----

if(counted > 0)

counted--;

int limit = Bars - counted;

//----

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

{

UpperBuf= ((High/Close)-34)*Volume;

UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

}

}

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

 
anonimm:
Спасибо, Младен,

я пытаюсь использовать cmo's ma, но получаю ошибку (функция iCMO не определена)... вы можете помочь... cmo прилагается

//---- настройки индикатора

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Silver

#property indicator_color2 Red

#property indicator_width1 2

#property indicator_width2 2

//---- параметры индикатора

extern int CMO_Period=21;

extern int MA_Period=14;

extern string m = "-Типы скользящих средних--";

extern string m0 = " 0 = SMA";

extern string m1 = " 1 = EMA";

extern string m2 = " 2 = SMMA";

extern string m3 = " 3 = LWMA";

extern int MA_Type=1;

//---- индикаторные буферы

double CMO_Buffer[];

double MA_Buffer[];

double iCMO[];

int MA_Mode;

string strMAType;

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

//| Пользовательская функция инициализации индикатора |

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

int init()

{

//---- настройки рисования

SetIndexStyle(0,DRAW_LINE);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,CMO_Period);

IndicatorDigits(Digits+1);

//---- отображение буферов индикаторов

SetIndexBuffer(0,CMO_Buffer);

SetIndexBuffer(1,MA_Buffer);

//---- имя для DataWindow и метка подокна индикатора

switch (MA_Type)

{

case 1: strMAType="EMA"; MA_Mode=MODE_EMA; break;

case 2: strMAType="SMMA"; MA_Mode=MODE_SMMA; break;

case 3: strMAType="LWMA"; MA_Mode=MODE_LWMA; break;

default: strMAType="SMA"; MA_Mode=MODE_SMA; break;

}

IndicatorShortName( "CMO" + " (" + CMO_Period + ") " + " : " + strMAType+ " (" +MA_Period + ") ");

SetIndexLabel(0, "CMO" + " (" +CMO_Period + ") ");

SetIndexLabel(1,strMAType+ " (" + MA_Period + ") ");

//---- инициализация выполнена

return(0);

}

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

//| Конвергенция/дивергенция скользящих средних |

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

int start()

{

int limit;

int counted_bars=IndicatorCounted();

//---- последний подсчитанный бар будет пересчитан

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- CMO подсчитывается в 1-м буфере

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

CMO_Buffer=iCMO(NULL,0,CMO_Period,i);

//---- MA строка, подсчитанная во 2-м буфере

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

MA_Buffer=iMAOnArray(CMO_Buffer,Bars,MA_Period,0,MA_Mode,i);

//---- сделано

return(0);

}

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

Вот, пожалуйста PS : это автономная версия, нет необходимости в cmo.

Файлы:
cmo_ma.mq4  2 kb
 
k3rn3l:
Младен, не могли бы вы помочь мне найти ошибки?

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color2 Red

//----

double UpperBuf[];

double UpperBuf1[];

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

//| |

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

void init()

{

SetIndexStyle(0, DRAW_NONE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(0, N);

//----

SetIndexBuffer(0, UpperBuf);

SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(1, N);

//----

SetIndexBuffer(1, UpperBuf1);

}

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

//| |

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

void deinit()

{

//----

}

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

//| |

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

void start()

{

int counted = IndicatorCounted();

//----

if(counted < 0)

return (-1);

//----

if(counted > 0)

counted--;

int limit = Bars - counted;

//----

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

{

UpperBuf= ((High/Close)-34)*Volume;

UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

}

}

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

k3rn3l

Попробуйте вот так :

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Red

double UpperBuf[];

double UpperBuf1[];

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

//| |

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

void init()

{

IndicatorBuffers(2);

SetIndexBuffer(0, UpperBuf1);

SetIndexBuffer(1, UpperBuf);

}

void deinit() {}

void start()

{

int counted = IndicatorCounted();

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

if(counted > 0) counted--;

int limit = Bars - counted;

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

if (Close!=0)

UpperBuf= ((High/Close)-34)*Volume;

else UpperBuf= 0;

for( i = 0; i < limit; i++) UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

}
 

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

Еще раз спасибо за индики wpr ma и cmo ma. Предположим, что для первого индикатора я установил wpr per на a, ma per на b, а для второго индикатора cmo range на c и ma per на d. Я хотел бы покупать, когда wpr пересекает свой ma (при wpr>уровень x) и cmo пересекает свой ma (при cmo>уровень y) на ОДНОЙ МИНУТЕ/БАРЕ. (здесь важно, чтобы два условия возникли одновременно), и продавать при обратных условиях.

возможно ли это?

 
anonimm:
Уважаемый Младен;

Еще раз спасибо за индики wpr ma и cmo ma. Предположим, что для первого индикатора я установил wpr per на a, ma per на b, а для второго индикатора cmo range на c и ma per на d. Я хотел бы покупать, когда wpr пересекает свой ma (при wpr>уровень x) и cmo пересекает свой ma (при cmo>уровень y) на ОДНОЙ и той же минуте/баре. (здесь важно, чтобы два условия возникли одновременно), и продавать обратные условия.

возможно ли это?

Да

это возможно

Используйте iCustom() для проверки условий, которые вы ищете, и вы можете объединить условия от любого количества пользовательских индикаторов, которые вы используете, в один сигнал.

 

Может ли кто-нибудь помочь мне исправить этот индикатор для более чем 950 countbar?

Файлы:
 
YSCWL:
Кто-нибудь может помочь мне исправить этот индикатор для более чем 950 countbars?

Попробуйте

Файлы:
Причина обращения: