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

 

Требуется помощь

Привет всем кодерам,

Подскажите пожалуйста код как я могу проверить цену по свечам. То есть, как я могу проверить, касается ли текущая свеча линии MA или нет? И как я могу проверить, что текущая свеча имеет открытие, максимум, минимум и закрытие ниже линии MA. Вы будете очень признательны за помощь.

С наилучшими пожеланиями.......!

 
arsenic786:
Привет всем кодерам,

Пожалуйста, подскажите код, как я могу проверить цену по свечам. То есть, как я могу проверить, касается ли текущая свеча линии MA или нет? И как я могу проверить, что текущая свеча имеет открытие, максимум, минимум и закрытие ниже линии MA. Буду очень признателен за помощь.

Best Regards.......!

Чтобы проверить пересечение, нужно сравнить цену предыдущего закрытия, текущее закрытие и значение скользящей средней (iMa, Close[1] и Close[0]).

Но чтобы проверить, находится ли свеча ниже или ниже скользящей средней, нужно сравнить цены LOW и HIGH и значение iMa.

 

Индикатор времени между тиками

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

Спасибо

 

Сканирование по парам/таймфрейму

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

Я хотел бы просканировать некоторые пары и некоторые таймфреймы пар, чтобы определить текущую обстановку (тренд, границы диапазона и т.д.) с помощью таких индикаторов, как ADX. Это поможет мне выбрать лучшую пару/таймфрейм для торговли на основе моего набора критериев.

Паршивый выход - прикрепить советника, определяющего окружение, ко всем графикам, заставить его записывать результаты в файл, а затем провести собственное сравнение по этому файлу. Однако это будет слишком утомительно и вручную!

Можно ли прикрепить моего эксперта только к 1 графику, чтобы он получал данные со всех пар и таймфреймов, используя функции временных рядов, такие как iClose, iOpen и т.д., а затем подавал цену в мои индикаторы?

Предвидит ли кто-нибудь проблемы со вторым методом? Слишком много процессорной обработки? Время, необходимое для выполнения проверки, будет слишком большим и т.д.? Мне не нужен таймфрейм мельче 5 минут.

Я новичок в советниках и поэтому не знаю их производительности. Любая помощь будет высоко оценена. Будьте здоровы!!!

 

Программное прикрепление советника к графику

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

можно ли программно прикрепить советника к графику? Скажем, я сейчас запускаю советник EA1 и хочу, чтобы при выполнении определенных критериев он прикреплял советник EA2 к другому графику. Возможно ли это?

 
meokoken:
Привет,

Я хотел бы просканировать некоторые пары и некоторые таймфреймы пар, чтобы определить текущую обстановку (тренд, границы диапазона и т.д.) с помощью таких индикаторов, как ADX. Это поможет мне выбрать лучшую пару/таймфрейм для торговли на основе моего набора критериев.

Паршивый выход - прикрепить советника, определяющего окружение, ко всем графикам, заставить его записывать результаты в файл, а затем провести собственное сравнение по этому файлу. Однако это будет слишком утомительно и вручную!

Можно ли прикрепить моего эксперта только к 1 графику, чтобы он получал данные со всех пар и таймфреймов, используя функции временных рядов, такие как iClose, iOpen и т.д., а затем подавал цену в мои индикаторы?

Предвидит ли кто-нибудь проблемы со вторым методом? Слишком много процессорной обработки? Время, необходимое для выполнения проверки, будет слишком большим и т.д.? Мне не нужен таймфрейм мельче 5 минут.

Я новичок в EA и поэтому не знаю, как он работает. Любая помощь будет высоко оценена. Будьте здоровы!!!

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

double eurudMa = iMa("EURUSD", blablabla,PERIOD_X,0);

double eurusdClose = iClose("EURUSD",PERIOD_X);

и сравните эти значения, если хотите.

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

С уважением,

Kale

 

OsMA с сигнальной линией

Кодеры, мне нужна ваша помощь. Может ли кто-нибудь добавить сигнальную линию к прикрепленному индикатору OsMA? Большое спасибо!

Файлы:
osma.mq4  3 kb
 

Как создать цифровую версию?

Привет, ребята,

Я здесь новичок.

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

Но теперь,

Я думаю создать цифровую версию этого, похожую на индикатор DIGISTOCH.

Я хочу знать следующее:

- Как "очистить" или "промыть" буферы? Кажется, я не могу "стереть" ссылку буферов и создать новые.

- Как изменить это, чтобы НЕ включать буферы? Я думаю, это сэкономит немного памяти, верно? Я пытался стереть SetIndexBuffer, но при загрузке в MT4 он выдает ошибку"zero divide" в окне экспертного терминала.

- Оба ярлыка внизу отображают только 1 значение, значение H1. Он должен отображать число из H1 и H4. Так что это не работает.

- Я в основном хочу, чтобы он отображал число Ratio с разных таймфреймов (от M1 до MN1) на одном экране, как индикатор DIGIStoch.

Любая помощь будет принята с благодарностью.

С уважением,

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

//| 2MA_RSI.mq4 |

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

#property copyright "Wolfe"

#property link "xxxxwolfe@gmail.com"

#property indicator_separate_window

#property indicator_level1 100

#property indicator_level2 80

#property indicator_level3 50

#property indicator_level4 20

#property indicator_buffers 4

#property indicator_color1 Black //RSI

#property indicator_color2 Blue //MA1

#property indicator_color3 Red //MA2

#property indicator_color4 Green //Ratio

int RSI_Timeframe=0;//0=current chart,1=m1,5=m5,15=m15,30=m30,60=h1,240=h4,etc...

int RSI_Period = 10;

int RSI_Applied_Price = 0;//0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4

int MA1_Period = 10;

int MA1_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA

int MA2_Period = 30;

int MA2_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA

double RSI[],MA1_Array[],MA2_Array[],MR_Ratio[];

double _RSI[],_MA1_Array[],_MA2_Array[],_MR_Ratio[];

string ShortName="MoR";

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators setting

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); //RSI

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1); //EMA10

SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1); //EMA30

SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2); //Ratio

SetIndexBuffer(0,RSI);

SetIndexLabel(0,"RSI");

SetIndexBuffer(1,MA1_Array);

SetIndexLabel(1,"MA1");

SetIndexBuffer(2,MA2_Array);

SetIndexLabel(2,"MA2");

SetIndexBuffer(3,MR_Ratio);

SetIndexLabel(3,"Ratio");

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

IndicatorShortName(ShortName);

return(0);

}

int start()

{

int i,limit = Bars - IndicatorCounted() - 1;

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

RSI= iRSI(NULL,60,RSI_Period,RSI_Applied_Price,i);

}

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

MA1_Array = iMAOnArray(RSI,0,MA1_Period,0,MA1_Method,i);

MA2_Array = iMAOnArray(RSI,0,MA2_Period,0,MA2_Method,i);

}

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

MR_Ratio = MA1_Array / MA2_Array * 100;

}

double tmp1=MR_Ratio[0];

SetText("Label1",DoubleToStr(tmp1,1),Black,55,20);

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

//| Trying to set new buffers |

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

IndicatorBuffers(4);

SetIndexBuffer(0,_RSI);

SetIndexBuffer(1,_MA1_Array);

SetIndexBuffer(2,_MA2_Array);

SetIndexBuffer(3,_MR_Ratio);

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

_RSI= iRSI(NULL,240,RSI_Period,RSI_Applied_Price,i);

}

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

_MA1_Array = iMAOnArray(_RSI,0,MA1_Period,0,MA1_Method,i);

_MA2_Array = iMAOnArray(_RSI,0,MA2_Period,0,MA2_Method,i);

}

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

_MR_Ratio = _MA1_Array / _MA2_Array * 100;

}

double tmp2=_MR_Ratio[0];

SetText("Label2",DoubleToStr(tmp2,1),Black,95,20);

//----

return(0);

}

void SetText(string ObjName,string ObjText,color clr,int xpos,int ypos){

ObjectCreate(ObjName,OBJ_LABEL,WindowFind(ShortName),0,0);

ObjectSetText(ObjName,ObjText,9,"Arial Bold",clr);

ObjectSet(ObjName,OBJPROP_CORNER,0);

ObjectSet(ObjName,OBJPROP_XDISTANCE,xpos);

ObjectSet(ObjName,OBJPROP_YDISTANCE,ypos);

}

 
SolomonZhang:
Привет, ребята,

Я здесь новичок.

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

Но теперь,

Я думаю создать цифровую версию этого, похожую на индикатор DIGISTOCH.

Я хочу знать следующее:

- Как "очистить" или "промыть" буферы? Кажется, я не могу "стереть" связь буферов и создать новые.

- Как изменить это, чтобы НЕ включать буферы? Я думаю, это сэкономит немного памяти, верно? Я пытался стереть SetIndexBuffer, но при загрузке в MT4 он выдает ошибку "zero divide" в окне экспертного терминала.

- Оба ярлыка внизу отображают только 1 значение, значение H1. Он должен отображать число из H1 и H4. Так что это не работает.

- Я в основном хочу, чтобы он отображал число Ratio с разных таймфреймов (от M1 до MN1) на одном экране, как индикатор DIGIStoch.

Любая помощь будет принята с благодарностью.

С уважением,

Просто определите пустое значение для буферов после init для каждого цикла.

Насчет нулевого деления просто создайте какое-нибудь условие "если" перед вычислением.

 

Код многовременного сигнала

Привет программисты

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

Идея состоит в том, чтобы в основном искать сигнал на более высоком ТФ и ждать отката на более низком ТФ, а затем исполнять ордер, например:

если 4 HR генерирует сигнал на следующем:

if(MacdCurrentSignalCurrent)MacdPrevious<SignalPrevious)=LongSignalActivated

как удержать сигнал выше и дождаться коррекции на 1 HR (или любом другом таймфрейме) следующим образом

if (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious) Order=SignalBuy

ИЛИ

Любая другая стратегия.

У меня уже есть все индикаторы, определенные в переменных для разных таймфреймов...

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

Благодарю за любую помощь

Мо Сайед

e-mail: moi.syed@gmail.com

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