[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 198

 
SK. писал(а) >>

Посмотрите здесь .

Большое спасибо SK, Vinin!

прекрасный пример для workaraund.

наверное, стоило труда так изощриться. :-)

Похоже, в MQL4 знают как "хорошо" засадить время програмиста. :-)

 
SK. >>:

Посмотрите здесь .

Спасибо, очень полезная статья.

 
stera писал(а) >>

Большое спасибо SK, Vinin!

granit77 писал(а) >>

Спасибо, очень полезная статья.

Если Вас интересует эта тема, то посмотрите ещё эту статью http://www.forextrade.ru/mqlabs/sozdaniie-indikatora-kaghi

Там рассматривается масса подробностей для горизонт. линий, показано техн. решение (чередование).

Вертикальные тоже получились. Но некоторые правила их построения я так и не смог постичь. Например, достаточно поменять чётность инд. буферов, как изображение кочевряжится (блок 4-5, поменять номера буф с 6 и 7 на 5 и 6, а 5й сделать 7м).

 
Вопрос от новичка. Можно ли на mql4 написать советник, который предполагает автоматическую торговлю с открытием и закрытием в определенный час регулярно? Хочу протестить. В основном использовал руланг, но эти идеи видимо там неосущесвимы.
 

Каков порядок выполнения индикаторов и экспертов?

У меня на одном графике 2 индикатора.

Причем в совокупности время их выполнения иногда значительно превышает время между тиками.

Какой индикатор выполняется первым?

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

Что выполняется раньше индикатор или эксперт, если они на одном графике, и если они на разных графиках?

 

x[i]=(Open[i]-Close[i]);

MomBuffer[i]=x[i];

Не работает.:(


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

 
Feonix >>:

x[i]=(Open[i]-Close[i]);

MomBuffer[i]=x[i];

Не работает.:(

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

Что делать? Показать весь код!

 
OneDepo >>:

Что делать? Показать весь код!

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

//| Momentum.mq4 |

//| Copyright © 2004, MetaQuotes Software Corp. |

//| http://www.metaquotes.net/ |

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

#property copyright "Copyright © 2004, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net/"


#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

//---- input parameters

extern int MomPeriod=14;

int ret;

double x[];

//---- buffers

double MomBuffer[];

double ocfor[];

double octen[];

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

//| Custom indicator initialization function |

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

int init()

{

string short_name;

//---- indicator line

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,MomBuffer);

//---- name for DataWindow and indicator subwindow label

short_name="Mom("+MomPeriod+")";

IndicatorShortName(short_name);

SetIndexLabel(0,short_name);

//----

SetIndexDrawBegin(0,MomPeriod);

//----

return(0);

}

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

//| Momentum |

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

int start()

{

int i,counted_bars=IndicatorCounted();

//----

if(Bars<=MomPeriod) return(0);

//----

i=Bars;

while(i>=0)

{

x[i]=(Open[i]-Close[i]);

MomBuffer[i]=x[i];

i--;


}

return(0);

}

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



Если заменить Double x[]; на Double x; то всё рабоет но смысл имено в том что бы присвоить mombuffer[i]= x[i]

 
Feonix писал(а) >>

//+------------------------------------------------------------------+
//| Momentum.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"


#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue

//---- input parameters

extern int MomPeriod=14;

int ret;
double x[];

//---- buffers
double MomBuffer[];
double ocfor[];
double octen[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+

int init()
{
string short_name;
//---- indicator line
IndicatorBuffers( 2);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MomBuffer);
SetIndexBuffer(1,x);

//---- name for DataWindow and indicator subwindow label
short_name="Mom("+MomPeriod+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);

//----
SetIndexDrawBegin(0,MomPeriod);

//----
return(0);

}

//+------------------------------------------------------------------+
//| Momentum |
//+------------------------------------------------------------------+

int start()
{
int i,counted_bars=IndicatorCounted();

//----
if(Bars<=MomPeriod) return(0);
//----
i=Bars;

while(i>=0)
{
x[i]=(Open[i]-Close[i]);
MomBuffer[i]=x[i];
i--;
}

return(0);
}

//+------------------------------------------------------------------+
Можно так делать
 
Feonix >>:

.

.

int start()

{

int i,counted_bars=IndicatorCounted();

//----

if(Bars<=MomPeriod) return(0);

//----

i=Bars;


ArrayResize(x, i+1);


while(i>=0)

{

x[i]=(Open[i]-Close[i]);

MomBuffer[i]=x[i];

i--;

}

return(0);

}



Если заменить Double x[]; на Double x; то всё рабоет но смысл имено в том что бы присвоить mombuffer[i]= x[i]

Вы объявили массив, но не выделили память под него.

Vinin дал один вариант выделения памяти, Можете использовать второй, через фунцию ArrayResize()

Причина обращения: