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

 
arshadFX:
1, добавить флаг bool после срабатывания торговых критериев

2, проверьте флаг bool перед размещением заказа

3, после размещения заказа флаг bool должен быть сброшен

4, сбросить флаг в init() тоже

Спасибо.

 

Требуется руководство по MQL =^_^=

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 White

#property indicator_color2 White

extern int Fast.MA.Period = 5;

extern int Slow.MA.Period = 34;

extern int Signal.period = 5;

//---- буферы

double Buffer1[],

Buffer2[],

b2[],

b3[];

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

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

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

int init()

{

//---- индикаторы

// два дополнительных буфера, используемых для подсчета

IndicatorBuffers(4);

IndicatorShortName("MA3_54");

SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);

SetIndexArrow(0,242); // вниз 226 234 242

SetIndexBuffer(0,b2);

SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);

SetIndexArrow(1,241); //ВЕРХ 225 233 241

SetIndexBuffer(1,b3);

// Эти буферы не строятся, а просто используются для определения стрелок

SetIndexBuffer (2,Buffer1);

SetIndexBuffer (3,Buffer2);

//----

return(0);

}

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

//| Функция деинициализации индикатора Custor |

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

int deinit()

{

//----

return(0);

}

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

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

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

int start()

{

int i, counted_bars=IndicatorCounted();

double MA5,MA34;

int limit=Bars-counted_bars;

Print(" print limit = ", limit);

if(counted_bars>0) limit++;

// Главная строка

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

{

MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

Buffer1=MA5-MA34;

}

// Сигнальная линия

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

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);

}

// Стрелки

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

{

if(Buffer1 > Buffer2 && Buffer1 < Buffer2)

b2 = High+10*Point;

if(Buffer1 Buffer2)

b3 = Low-10*Point;

}

//----

return(0);

}

Можете ли вы научить меня, как создать советника на основе этого индиса? Когда стрелка появляется на экране, и это время, когда советник автоматически входит в позицию, можно ли это сделать? Пожалуйста, направьте меня, так как я заинтересован в обучении =^_^=

 

Хорошая ссылка

liew_stanley:
#property indicator_chart_window

#свойство indicator_buffers 2

............ помогите мне, так как я очень хочу научиться =^_^=

Посмотрите это руководство, действительно хороший материал по учебнику MQL4

 

Индис выглядит следующим образом

Вот вышеупомянутый сигнал стрелки, нужен кто-то, кто подскажет мне по кодированию советника.

Спасибо всем, кто в курсе =^_^=

Файлы:
untitled.jpg  80 kb
 

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

Привет, ребята, может ли кто-нибудь помочь мне закодировать этот индис в советник? Только простой советник, который входит в позицию, когда стрелки появляются на экране, очень признателен, если вы можете помочь мне на простой советник. =^_^= спасибо.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 White

#property indicator_color2 White

extern int Fast.MA.Period = 5;

extern int Slow.MA.Period = 34;

extern int Signal.period = 5;

//---- буферы

double Buffer1[],

Buffer2[],

b2[],

b3[];

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

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

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

int init()

{

//---- индикаторы

// два дополнительных буфера, используемых для подсчета

IndicatorBuffers(4);

IndicatorShortName("Волновой осциллятор Эллиотта");

SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);

SetIndexArrow(0,242); // вниз 226 234 242

SetIndexBuffer(0,b2);

SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);

SetIndexArrow(1,241); //ВЕРХ 225 233 241

SetIndexBuffer(1,b3);

//

SetIndexBuffer (2,Buffer1);

SetIndexBuffer (3,Buffer2);

//----

return(0);

}

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

//| Функция деинициализации индикатора Custor |

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

int deinit()

{

//

//----

return(0);

}

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

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

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

int start()

{

int i, counted_bars=IndicatorCounted();

double MA5,MA34;

int limit=Bars-counted_bars;

Print(" print limit = ", limit);

if(counted_bars>0) limit++;

// Главная строка

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

{

MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

Buffer1=MA5-MA34;

}

// Сигнальная линия

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

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);

}

// Стрелки

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

{

if(Buffer1 > Buffer2 && Buffer1 < Buffer2)

b2 = High+10*Point;

if(Buffer1 Buffer2)

b3 = Low-10*Point;

}

//----

return(0);

}

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

 

Код для торговли несколькими ордерами?

Есть ли у кого-нибудь хороший код для торговли несколькими ордерами при столкновении с барьером максимального лота?

IE Брокер разрешает только лоты по 5, а вы хотите торговать 10, поэтому функция будет торговать 2 х 5 лотовыми ордерами вместо этого.

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

 

Как убрать ошибку OrderModify 1

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

Я не могу избежать ошибки OrderModify error 1: всегда появляется, даже если пытаться контролировать, что данные перед модификацией другие! Я пробовал и doublelenormalize... не помогает...

Вот код:

if (Bid-OrderOpenPrice() >= VPoint*BreakEvenAtProfit)

{

if (OrderStopLoss() != OrderOpenPrice() + BreakEvenShift*VPoint)

{

Vresult = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ BreakEvenShift*VPoint,OrderTakeProfit(),0,Green);

Какие есть предложения?

Спасибо.

 
liew_stanley:
Привет, ребята, может ли кто-нибудь помочь мне закодировать этот советник в советник? Только простой советник, который входит в позицию //+------------+

Эти аэро показывают на 2 MovingAverage, пересекающихся, т.е. 5-34, вы можете найти много советников "MA's Cross EA" в поиске и, надеюсь, вы найдете один из них.

 

Как установить частоту оповещений?

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

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

int start()

{

string MACD1="";

цвет colt9;

double MACDM_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 0);

double MACDS_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,0);

double MACDM_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 1);

double MACDS_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,1);

if ((MACDM_S11 < MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="IN UPTREND"; colt9=LimeGreen; }

if ((MACDM_S11 > MACDS_S11 && MACDM_S10 > MACDS_S10)) { MACD1="IN DOWNTREND"; colt9=Red; }

if ((MACDM_S11 > MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="NEW UP CROSSING"; colt9=LimeGreen; }

if ((MACDM_S11 MACDS_S10)) { MACD1="NEW DOWN CROSSING"; colt9=Red; }

string MACD2="";

цвет colt14;

double MACDM_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 0);

double MACDS_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,0);

double MACDM_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 1);

double MACDS_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,1);

if ((MACDM_L11 < MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="IN UPTREND"; colt14=LimeGreen; }

if ((MACDM_L11 > MACDS_L11 && MACDM_L10 > MACDS_L10)) { MACD2="IN DOWNTREND"; colt14=Red; }

if ((MACDM_L11 > MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="NEW UP CROSSING"; colt14=LimeGreen; }

if ((MACDM_L11 MACDS_L10)) { MACD2="NEW DOWN CROSSING"; colt14=Red; }

if(MACD1=="NEW UP CROSSING"&&MACD2=="IN UPTREND")

Alert(Symbol()," - ", "H1:"," MACD MAIN UPTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS));

if(MACD1=="NEW DOWN CROSSING"&&MACD2=="IN DOWNTREND")

Alert(Symbol()," - ", "H1:"," MACD MAIN DOWNTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS));

if(MACD2=="NEW UP CROSSING"&&MACD1=="IN UPTREND")

Alert(Symbol()," - ", "H1:"," MACD, MAIN TREND CHANGE TO UPTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS));

if(MACD2=="NEW DOWN CROSSING"&&MACD1=="IN DOWNTREND")

Alert(Symbol()," - ", "H1:"," MACD, MAIN TREND CHANGE TO DOWNTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS));

return(0);

}

 

в каких парах?