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

 

Неправильная установка переменной Дема

У меня не получается правильно задать раздел DEMA Variables, его синтаксис. Коды DEMA1, DEMA2, DEMA3 правильные.

Помогите пожалуйста исправить раздел DEMA Variable.

if (TradeOrAlert) {

if (DEMA1)>(DEMA2) {CLOSESHORT(Symbol()) ;}

if (DEMA1)<(DEMA2) {CLOSELONG(Symbol()) ;}

if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {BUY(Symbol(), B_Symbol_LS_0, B_Symbol_TP_0, B_Symbol_SL_0, B_Symbol_TS_0, "if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))";}

if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {SELL(Symbol(), S_Symbol_LS_0, S_Symbol_TP_0, S_Symbol_SL_0, S_Symbol_TS_0, "if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))";}

CheckTrailingStop(Symbol(), 0, MagicNumberLong, B_Symbol_TS_0);

CheckTrailingStop(Symbol(), 1, MagicNumberShort, S_Symbol_TS_0);

} else {

if (DEMA1)>(DEMA2) { MyAlert("if (DEMA1)>(DEMA2)", "CLOSESHORT(Symbol(),0.1,100,15,17)", Symbol());}

если (DEMA1)<(DEMA2) {MyAlert("если (DEMA1)<(DEMA2)", "CLOSELONG(Symbol(),0.1,100,15,17)", Symbol());}

if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {MyAlert("if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))", "BUY(Symbol(),0.1,100,15,17)", Symbol());}

if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {MyAlert("if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))", "SELL(Symbol(),0.1,100,15,17)", Symbol());}

}

g_bars_276 = Bars;

return (0);

}

//----DEMA VARIABLES---- Неправильная установка, нужна помощь-----

int init() {

double DEMA1 = (iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,4,0,MODE_EMA,iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0),0));

return(DEMA1);

}

int start() {

double DEMA2 = (iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,6,0,MODE_EMA,iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0),0));

return(DEMA2);

}

int start() {

double DEMA3 = (iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,12,0,MODE_EMA,iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0),0));

return(DEMA3);

}

//

 

Неправильная установка переменной Dema

Я столкнулся с проблемой правильного задания синтаксиса в разделе "DEMA VARIABLES" приведенного ниже кода.

Также подскажите, что нужно включить после раздела "#include" в отношении Dema-переменных.

Я получаю ошибки

'DEMA1' - переменная не определена.

'DEMA2' - переменная не определена.

'DEMA3' - переменная не определена.

Пожалуйста, помогите.

if (TradeOrAlert) {

if (DEMA1)>(DEMA2) {CLOSESHORT(Symbol()) ;}

if (DEMA1)<(DEMA2) {CLOSELONG(Symbol()) ;}

if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {BUY(Symbol(), B_Symbol_LS_0, B_Symbol_TP_0, B_Symbol_SL_0, B_Symbol_TS_0, "if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))";}

if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {SELL(Symbol(), S_Symbol_LS_0, S_Symbol_TP_0, S_Symbol_SL_0, S_Symbol_TS_0, "if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))";}

CheckTrailingStop(Symbol(), 0, MagicNumberLong, B_Symbol_TS_0);

CheckTrailingStop(Symbol(), 1, MagicNumberShort, S_Symbol_TS_0);

} else {

if (DEMA1)>(DEMA2) { MyAlert("if (DEMA1)>(DEMA2)", "CLOSESHORT(Symbol(),0.1,100,15,17)", Symbol());}

если (DEMA1)<(DEMA2) {MyAlert("если (DEMA1)<(DEMA2)", "CLOSELONG(Symbol(),0.1,100,15,17)", Symbol());}

if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {MyAlert("if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))", "BUY(Symbol(),0.1,100,15,17)", Symbol());}

if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {MyAlert("if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))", "SELL(Symbol(),0.1,100,15,17)", Symbol());}

}

g_bars_276 = Bars;

return (0);

}

//----DEMA VARIABLES---- Неправильная установка, нужна помощь-----

int start() {

double DEMA1 = (iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,4,0,MODE_EMA,iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0),0));

return(DEMA1);

}

int start() {

double DEMA2 = (iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,6,0,MODE_EMA,iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0),0));

return(DEMA2);

}

int start() {

double DEMA3 = (iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,12,0,MODE_EMA,iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0),0));

return(DEMA3);

}

//

 

MA+Stoch Alert...пожалуйста

помогите пожалуйста построить индикатор: MA+stoch с алертом.

stoch(5,3,3);MA(8);MA(15);MA(30)....

алерт, когда MA(8)>MA(15)>MA(30) и %K пересекается выше %D, но меньше уровня 50

оповещение, когда MA(8)<MA(15)<MA(30) и %D пересекается выше %K, но больше уровня 50

большое спасибо

мой английский - иностранный язык

с пониманием!

 
lequoctrieu:
можете ли вы помочь мне построить индикатор : MA+stoch с алертом

stoch(5,3,3);MA(8);MA(15);MA(30)....

предупреждение, когда MA(8)>MA(15)>MA(30) и %K пересекается выше %D, но меньше уровня 50

оповещение, когда MA(8)<MA(15)<MA(30) и %D пересекается выше %K, но больше уровня 50

большое спасибо

мой английский - иностранный язык

с пониманием!

Привет,

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

extern bool AlertON=false;

extern bool EmailON=true;

extern bool SoundON=false;

extern bool VoiceON=false;

extern bool SMSON=false;

extern string ExtSoundFileName = "";//необходимы внешние звуковые файлы, чем удалять

FastMA = fastMAnow;

SlowMA = slowMAnow;

if ((fastMAnow >= slowMAnow) && (fastMAprevious < slowMAprevious))

{

if (i == 1 && flagval1==0)

{

flagval1=1;

flagval2=0;

if (AlertON==true) Alert("Сигнал BUY на Ask=",Ask,"\n Bid=",Bid,"\n Time=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON==true) SendMail("2754 BUY-ALP EUR", "Сигнал BUY при Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());

if (SMSON==true) SendMail("2754 BUY-ALP EUR", "Сигнал BUY при Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());

if (SoundON==true) PlaySound(ExtSoundFileName);//peep etc

if (VoiceON==true) PlaySound(ExtSoundFileName);//собственная речь wav

}

CrossUp = Low - Range*0.5;

}

else if ((fastMAnow slowMAprevious))

{

if (i == 1 && flagval2==0)

{

flagval2=1;

flagval1=0;

if (AlertON==true) Alert("SELL сигнал на Ask=",Ask,"\n Bid=",Bid,"\n Date=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON==true) SendMail("2754 SELL-ALP EUR", "Сигнал SELL на Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());

if (SMSON==true) SendMail("2754 SELL-ALP EUR", "Сигнал SELL на Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());

if (SoundON==true) PlaySound(ExtSoundFileName);//звуки и т.д.

if (VoiceON==true) PlaySound(ExtSoundFileName);//собственная речь wav

}

CrossDown = High + Range*0.5;

}

}

return(0);

}

 

MA+Stoch Alert... пожалуйста

ixbone:
Привет,

фрагмент кода из одного из моих инди, вы должны адаптировать его под свои нужды:

extern bool AlertON=false;

extern bool EmailON=true;

extern bool SoundON=false;

extern bool VoiceON=false;

extern bool SMSON=false;

extern string ExtSoundFileName = "";//внешние звуковые файлы необходимы, чем удалять

FastMA = fastMAnow;

SlowMA = slowMAnow;

if ((fastMAnow >= slowMAnow) && (fastMAprevious < slowMAprevious))

{

if (i == 1 && flagval1==0)

{

flagval1=1;

flagval2=0;

if (AlertON==true) Alert("Сигнал BUY на Ask=",Ask,"\n Bid=",Bid,"\n Time=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON==true) SendMail("2754 BUY-ALP EUR", "Сигнал BUY при Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());

if (SMSON==true) SendMail("2754 BUY-ALP EUR", "Сигнал BUY при Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());

if (SoundON==true) PlaySound(ExtSoundFileName);//peep etc

if (VoiceON==true) PlaySound(ExtSoundFileName);//собственная речь wav

}

CrossUp = Low - Range*0.5;

}

else if ((fastMAnow slowMAprevious))

{

if (i == 1 && flagval2==0)

{

flagval2=1;

flagval1=0;

if (AlertON==true) Alert("SELL сигнал на Ask=",Ask,"\n Bid=",Bid,"\n Date=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON==true) SendMail("2754 SELL-ALP EUR", "Сигнал SELL на Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());

if (SMSON==true) SendMail("2754 SELL-ALP EUR", "Сигнал SELL на Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());

if (SoundON==true) PlaySound(ExtSoundFileName);//звуки и т.д.

if (VoiceON==true) PlaySound(ExtSoundFileName);//собственная речь wav

}

CrossDown = High + Range*0.5;

}

}

return(0);

}

Спасибо большое...ixbone

Я пишу код очень плохо... Поэтому я не могу понять ваш код.... вы можете помочь мне создать индикатор(.mq4) для того, чтобы использовать.

если да, я очень благодарен вам

желаю вам хорошего рабочего дня!

 

Как проверить, что максимум текущего бара на 2 пункта больше максимума предыдущего бара?

Извините, что не в том месте задал этот вопрос.

Пожалуйста, удалите этот вопрос.

Спасибо!

 

Частичное закрытие заказа

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

Я пытаюсь создать советника, который будет фиксировать прибыль на двух уровнях. Для этого я хочу разделить исходный ордер так, чтобы "x" лотов снимались на первой цели прибыли, а оставшиеся лоты снимались на второй цели прибыли. Для этого я использую две функции OrderClose().

Первая функция OrderClose() работает отлично, но она также закрывает существующий ордер и генерирует новый тикет для оставшихся лотов.

Не мог бы кто-нибудь подсказать мне, как обработать этот "новый" тикет/ордер, чтобы он мог быть обработан второй функцией CloseOrder()?

Спасибо

Джим

 
jimdee:
Привет,

Я пытаюсь создать советника, который будет фиксировать прибыль на двух уровнях. Для этого я хочу разделить исходный ордер таким образом, чтобы "x" лотов снимались на первой цели прибыли, а оставшиеся лоты снимались на второй цели прибыли. Для этого я использую две функции OrderClose().

Первая функция OrderClose() работает отлично, но она также закрывает существующий ордер и генерирует новый тикет для оставшихся лотов.

Не мог бы кто-нибудь подсказать мне, как обработать этот "новый" тикет/ордер, чтобы он мог быть обработан второй функцией CloseOrder()?

Спасибо

Джим

Просто идея. Вы можете попробовать использовать две сделки вместо одной, если частичное закрытие с прибылью сложнее достичь. И управлять этими сделками по времени открытия.

 
jimdee:
Привет,

Я пытаюсь создать советника, который будет фиксировать прибыль на двух уровнях. Для этого я хочу разделить исходный ордер таким образом, чтобы "x" лотов снимались на первой цели прибыли, а оставшиеся лоты снимались на второй цели прибыли. Для этого я использую две функции OrderClose().

Первая функция OrderClose() работает отлично, но она также закрывает существующий ордер и генерирует новый тикет для оставшихся лотов.

Не мог бы кто-нибудь подсказать мне, как обработать этот "новый" тикет/ордер, чтобы он мог быть обработан второй функцией CloseOrder()?

Спасибо

Джим

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

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

Частичное закрытие немного сложно обработать полностью корректно, если имеет место следующая ситуация:

1. Ваши ордера могут иметь разный размер лота из-за ММ.

2. Одновременно существует несколько ордеров с разным размером лота.

Если ваш советник имеет вышеуказанные ситуации и если у вас нет опыта в кодировании, я думаю, вы можете использовать подход с несколькими ордерами.

 

Быстрое решение для простой проблемы. Спасибо : )

Я хотел бы вернуть следующие переменные :

1. Цена открытия первого бара последнего зарегистрированного понедельника (часовой бар).

2. Цена закрытия последнего бара последней записанной среды (часовой бар).

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

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

if (currentday == 1 && currenttime == 0)

{

MondayOpenPrice = iOpen(Symbol(),PERIOD_H1,0);

}

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

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

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

Большое спасибо за ваше время.

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